o
    wvXjG  ã                   @   sF   d Z ddlmZmZ ddlZddlZddlmZmZ 		ddd„Z	dS )	zImport related utilities.é    )Úabsolute_importÚunicode_literalsN)ÚreraiseÚstring_tÚ.c              
   K   s  |si n|}|du rt j}t| tƒs| S | | ¡p| } d| v r!dn|}|  |¡\}}}	|s6d|r2|n|	}	}z:z||fd|i|¤Ž}
W n" tye } ztttd | |¡ƒt	 
¡ d ƒ W Y d}~nd}~ww |	rnt|
|	ƒW S |
W S  ttfy�   |du r~‚ Y |S w )a¶  Get symbol by qualified name.

    The name should be the full dot-separated path to the class::

        modulename.ClassName

    Example::

        celery.concurrency.processes.TaskPool
                                    ^- class name

    or using ':' to separate module and symbol::

        celery.concurrency.processes:TaskPool

    If `aliases` is provided, a dict containing short name/long name
    mappings, the name is looked up in the aliases first.

    Examples:
        >>> symbol_by_name('celery.concurrency.processes.TaskPool')
        <class 'celery.concurrency.processes.TaskPool'>

        >>> symbol_by_name('default', {
        ...     'default': 'celery.concurrency.processes.TaskPool'})
        <class 'celery.concurrency.processes.TaskPool'>

        # Does not try to look up non-string names.
        >>> from celery.concurrency.processes import TaskPool
        >>> symbol_by_name(TaskPool) is TaskPool
        True
    Nú:ÚpackagezCouldn't import {0!r}: {1}é   )Ú	importlibÚimport_moduleÚ
isinstancer   ÚgetÚ
rpartitionÚ
ValueErrorr   ÚformatÚsysÚexc_infoÚgetattrÚImportErrorÚAttributeError)ÚnameÚaliasesÚimpr   ÚsepÚdefaultÚkwargsÚmodule_nameÚ_Úcls_nameÚmoduleÚexc© r!   úP/var/www/html/myproject/venv/lib/python3.10/site-packages/kombu/utils/imports.pyÚsymbol_by_name
   s6   !

þ€ÿÿýr#   )NNNr   N)
Ú__doc__Ú
__future__r   r   r
   r   Ú
kombu.fiver   r   r#   r!   r!   r!   r"   Ú<module>   s    ÿ