a
    xdT                     @   sL   d Z ddlZddlmZ dgZG dd deejdZejG dd dZdS )	zAbstract classes.    N)CallableThenablec                   @   sZ   e Zd ZdZdZejdddZejdddZejd	d
 Z	e
dd Ze
dd ZdS )r   z!Object that supports ``.then()``. Nc                 C   s
   t  d S NNotImplementedErrorselfZ
on_successZon_errorr   r   E/var/www/html/Ranjet/env/lib/python3.9/site-packages/vine/abstract.pythen   s    zThenable.thenTc                 C   s
   t  d S r   r   r	   exctb	propagater   r   r
   throw   s    zThenable.throwc                 C   s
   t  d S r   r   r	   r   r   r
   cancel   s    zThenable.cancelc                 C   s$   | t u r tdd |jD r dS tS )Nc                 s   s   | ]}d |j v V  qdS )r   N)__dict__).0Br   r   r
   	<genexpr>       z,Thenable.__subclasshook__.<locals>.<genexpr>T)r   any__mro__NotImplemented)clsCr   r   r
   __subclasshook__   s    zThenable.__subclasshook__c                 C   s   t | | | |S r   )typeregister)r   otherr   r   r
   r       s    zThenable.register)N)NNT)__name__
__module____qualname____doc__	__slots__abcabstractmethodr   r   r   classmethodr   r   r   r   r   r
   r      s   

)	metaclassc                   @   sb   e Zd ZdZdd ZdddZdd Zdd	d
ZdddZe	dd Z
e	dd Ze	dd ZdS )ThenableProxyz*Proxy to object that supports ``.then()``.c                 C   s
   || _ d S r   )_p)r	   pr   r   r
   _set_promise_target+   s    z!ThenableProxy._set_promise_targetNc                 C   s   | j ||S r   )r+   r   r   r   r   r
   r   .   s    zThenableProxy.thenc                 C   s
   | j  S r   )r+   r   r   r   r   r
   r   1   s    zThenableProxy.cancelc                 C   s   | j |S r   )r+   throw1)r	   r   r   r   r
   r.   4   s    zThenableProxy.throw1Tc                 C   s   | j j|||dS )N)r   r   )r+   r   r   r   r   r
   r   7   s    zThenableProxy.throwc                 C   s   | j jS r   )r+   	cancelledr   r   r   r
   r/   :   s    zThenableProxy.cancelledc                 C   s   | j jS r   )r+   readyr   r   r   r
   r0   >   s    zThenableProxy.readyc                 C   s   | j jS r   )r+   failedr   r   r   r
   r1   B   s    zThenableProxy.failed)N)N)NNT)r!   r"   r#   r$   r-   r   r   r.   r   propertyr/   r0   r1   r   r   r   r
   r*   '   s   




r*   )	r$   r&   collections.abcr   __all__ABCMetar   r   r*   r   r   r   r
   <module>   s   