
    Ji                    8    d dl mZ d dlmZ d dlmZ ddZddZy)	    )annotations)import_module)Anyc                    	 | j                   dz   | j                  j                  z   S # t        $ r}t        d|  d|       d}~ww xY w)a!  
    Get the qualified name of a value.

    Args:
        value (Any): The value to get the qualified name for.

    Returns:
        str: The qualified name in the format 'module.class'.

    Raises:
        AttributeError: If value does not have __module__ or __class__ attributes

    .zObject z$ does not have required attributes: N)
__module__	__class____name__AttributeError)valuees     i/var/www/html/BankruptcyAI-uat/bankruptcy-ai/venv/lib/python3.12/site-packages/workflows/context/utils.pyget_qualified_namer      sU    W#%(@(@@@ Wwug-QRSQTUVVWs   %( 	AAAc           	        | rd| vrt        d      | j                  dd      }	 t        |d         }t        ||d         S # t        $ r}t	        d|d    d|       d}~wt
        $ r}t        d|d    d	|d    d|       d}~ww xY w)
a}  
    Import a module from a qualified name.

    Args:
        qualified_name (str): The fully qualified name of the module to import.

    Returns:
        Any: The imported module object.

    Raises:
        ValueError: If qualified_name is empty or malformed
        ImportError: If module cannot be imported
        AttributeError: If attribute cannot be found in module

    r   z3Qualified name must be in format 'module.attribute'   r   zFailed to import module z: Nz
Attribute z not found in module )
ValueErrorrsplitr   getattrImportErrorr   )qualified_namemodule_pathmoduler   s       r   !import_module_from_qualified_namer       s      S6NOO ''Q/K
{1~.v{1~.. L4[^4DBqcJKK 
Q((=k!n=MRPQsS
 	

s#   A 	B
AB
+BB
N)r   r   returnstr)r   r   r   r   )
__future__r   	importlibr   typingr   r   r        r   <module>r!      s    # #
W(
r    