U
    d:                     @   sd   d Z ddlmZmZ ddlmZ dZdd ZG dd ded	ZG d
d deeZ	G dd de	Z
dS )zAbstract classes.    )ABCMetaabstractmethod)Callable)CallableTaskCallableSignaturec                    s   t  fdd| jD S )Nc                 3   s   | ]} |j kV  qd S N)__dict__).0Battr 9/tmp/pip-unpacked-wheel-mu1yl971/celery/utils/abstract.py	<genexpr>	   s     z_hasattr.<locals>.<genexpr>)any__mro__)Cr   r   r   r   _hasattr   s    r   c                   @   s*   e Zd Ze Zedd Zedd ZdS )_AbstractClassc                    s$   | |kr t  fdd| jD p"tS )Nc                 3   s   | ]}t  |V  qd S r   )r   )r	   r   r   r   r   r      s     z5_AbstractClass._subclasshook_using.<locals>.<genexpr>)all__required_attributes__NotImplemented)clsparentr   r   r   r   _subclasshook_using   s
    z"_AbstractClass._subclasshook_usingc                 C   s   t | | | |S r   )typeregister)r   otherr   r   r   r      s    z_AbstractClass.registerN)__name__
__module____qualname__	frozensetr   classmethodr   r   r   r   r   r   r      s
   
r   )	metaclassc                   @   sN   e Zd ZdZedddhZedd Zedd Zed	d
 Z	e
dd ZdS )r   zTask interface.delayapply_asyncapplyc                 O   s   d S r   r   selfargskwargsr   r   r   r%   $   s    zCallableTask.delayc                 O   s   d S r   r   r(   r   r   r   r&   (   s    zCallableTask.apply_asyncc                 O   s   d S r   r   r(   r   r   r   r'   ,   s    zCallableTask.applyc                 C   s   |  t|S r   )r   r   r   r   r   r   r   __subclasshook__0   s    zCallableTask.__subclasshook__N)r   r    r!   __doc__r"   r   r   r%   r&   r'   r#   r-   r   r   r   r   r      s     


r   c                   @   s:  e Zd ZdZeddddddhZeedd	 Zeed
d Z	eedd Z
eedd Zeedd Zeedd Zeedd Zeedd Zeedd Zeedd Zeedd Zed/dd Zed0d!d"Zed1d#d$Zed%d& Zed'd( Zed)d* Zed+d, Zed-d. ZdS )2r   zCelery Signature interface.clonefreezesetlink
link_error__or__c                 C   s   d S r   r   r)   r   r   r   name<   s    zCallableSignature.namec                 C   s   d S r   r   r5   r   r   r   r   A   s    zCallableSignature.typec                 C   s   d S r   r   r5   r   r   r   appF   s    zCallableSignature.appc                 C   s   d S r   r   r5   r   r   r   idK   s    zCallableSignature.idc                 C   s   d S r   r   r5   r   r   r   taskP   s    zCallableSignature.taskc                 C   s   d S r   r   r5   r   r   r   r*   U   s    zCallableSignature.argsc                 C   s   d S r   r   r5   r   r   r   r+   Z   s    zCallableSignature.kwargsc                 C   s   d S r   r   r5   r   r   r   options_   s    zCallableSignature.optionsc                 C   s   d S r   r   r5   r   r   r   subtask_typed   s    zCallableSignature.subtask_typec                 C   s   d S r   r   r5   r   r   r   
chord_sizei   s    zCallableSignature.chord_sizec                 C   s   d S r   r   r5   r   r   r   	immutablen   s    zCallableSignature.immutableNc                 C   s   d S r   r   r(   r   r   r   r/   s   s    zCallableSignature.clonec                 C   s   d S r   r   )r)   r8   Zgroup_idZchordZroot_idZgroup_indexr   r   r   r0   w   s    zCallableSignature.freezec                 K   s   d S r   r   )r)   r=   r:   r   r   r   r1   |   s    zCallableSignature.setc                 C   s   d S r   r   )r)   callbackr   r   r   r2      s    zCallableSignature.linkc                 C   s   d S r   r   )r)   Zerrbackr   r   r   r3      s    zCallableSignature.link_errorc                 C   s   d S r   r   )r)   r   r   r   r   r4      s    zCallableSignature.__or__c                 C   s   d S r   r   r5   r   r   r   
__invert__   s    zCallableSignature.__invert__c                 C   s   |  t|S r   )r   r   r,   r   r   r   r-      s    z"CallableSignature.__subclasshook__)NN)NNNNN)N)r   r    r!   r.   r"   r   propertyr   r6   r   r7   r8   r9   r*   r+   r:   r;   r<   r=   r/   r0   r1   r2   r3   r4   r?   r#   r-   r   r   r   r   r   5   sx          



r   N)r.   abcr   r   collections.abcr   __all__r   r   r   r   r   r   r   r   <module>   s   