File: //usr/local/lib/python3.9/site-packages/kombu/utils/__pycache__/imports.cpython-39.pyc
a
X>h) � @ s: d Z ddlmZ ddlZddlZddlmZ ddd�ZdS ) zImport related utilities.� )�annotationsN)�reraise�.c
K s |si n|}|du rt j}t| t�s(| S |�| �p4| } d| v rBdn|}| �|�\}}} |sld|rd|n| } }zvz||fd|i|��}
W nH ty� } z0tttd| �d|� ��t� � d � W Y d}~n
d}~0 0 | r�t
|
| �n|
W S ttf�y |du �r� Y n0 |S )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�:�packagezCouldn't import z: � )
� importlib�
import_module�
isinstance�str�get�
rpartition�
ValueErrorr �sys�exc_info�getattr�ImportError�AttributeError)�name�aliases�impr �sep�default�kwargs�module_name�_�cls_name�module�exc� r �=/usr/local/lib/python3.9/site-packages/kombu/utils/imports.py�symbol_by_name s. "
�
r! )NNNr N)�__doc__�
__future__r r r Zkombu.exceptionsr r! r r r r �<module> s �