o
    h                     @   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   U/var/www/html/optinet_system/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 )zRegister 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