o
    ©D®fÑ  ã                   @   sj   d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	m
Z
 dZG dd	„ d	eƒZd
d„ Zddd„ZdS )zRegistry of available tasks.é    N)Úimport_module)Úget_current_app)Úadd_autoretry_behaviour)ÚInvalidTaskErrorÚNotRegistered)ÚTaskRegistryc                   @   sD   e Zd ZdZeZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Z	dd„ Z
dS )r   zMap of registered tasks.c                 C   s
   |   |¡‚©N)r   )ÚselfÚkey© r   úL/home/ubuntu/webapp/venv/lib/python3.10/site-packages/celery/app/registry.pyÚ__missing__   ó   
zTaskRegistry.__missing__c                 C   sH   |j du rtd t|ƒj¡ƒ‚t |¡r|ƒ p|}t|ƒ || |j < dS )z¶Register a task in the task registry.

        The task will be automatically instantiated if not already an
        instance. Name must be configured prior to registration.
        Nz,Task class {!r} must specify .name attribute)Únamer   ÚformatÚtypeÚ__name__ÚinspectÚisclassr   )r	   Útaskr   r   r   Úregister   s   
ÿÿzTaskRegistry.registerc                 C   s2   z|   t|d|ƒ¡ W dS  ty   |  |¡‚w )a  Unregister task by name.

        Arguments:
            name (str): name of the task to unregister, or a
                :class:`celery.app.task.Task` with a valid `name` attribute.

        Raises:
            celery.exceptions.NotRegistered: if the task is not registered.
        r   N)ÚpopÚgetattrÚKeyErrorr   )r	   r   r   r   r   Ú
unregister"   s
   

ÿzTaskRegistry.unregisterc                 C   ó
   |   d¡S )NÚregular©Úfilter_types©r	   r   r   r   r   2   r   zTaskRegistry.regularc                 C   r   )NÚperiodicr   r   r   r   r   r    5   r   zTaskRegistry.periodicc                    s   ‡ fdd„|   ¡ D ƒS )Nc                    s&   i | ]\}}t |d dƒˆ kr||“qS )r   r   )r   )Ú.0r   r   ©r   r   r   Ú
<dictcomp>9   s    ÿz-TaskRegistry.filter_types.<locals>.<dictcomp>)Úitems)r	   r   r   r"   r   r   8   s   zTaskRegistry.filter_typesN)r   Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r    r   r   r   r   r   r      s    r   c                 C   s   t ƒ j|  S r   )r   Útasks)r   r   r   r   Ú_unpickle_task=   s   r)   c                 C   s   |rt |ƒ tƒ j|  S r   )r   r   r(   )r   Úmoduler   r   r   Ú_unpickle_task_v2A   s   r+   r   )r'   r   Ú	importlibr   Úcelery._stater   Úcelery.app.autoretryr   Úcelery.exceptionsr   r   Ú__all__Údictr   r)   r+   r   r   r   r   Ú<module>   s    1