
    ؾhT                         d Z ddlZddlmZ dgZ G d deej
                        Zej                   G d d             Zy)	zAbstract classes.    N)CallableThenablec                       e Zd ZdZdZej                  d	d       Zej                  d
d       Zej                  d        Z	e
d        Ze
d        Zy)r   z!Object that supports ``.then()``. Nc                     t               NNotImplementedErrorself
on_successon_errors      I/var/www/Befach/backend/env/lib/python3.12/site-packages/vine/abstract.pythenzThenable.then       !##    c                     t               r   r	   r   exctb	propagates       r   throwzThenable.throw   r   r   c                     t               r   r	   r   s    r   cancelzThenable.cancel   r   r   c                 X    | t         u rt        d |j                  D              ryt        S )Nc              3   8   K   | ]  }d |j                   v   yw)r   N)__dict__).0Bs     r   	<genexpr>z,Thenable.__subclasshook__.<locals>.<genexpr>   s     ;A6QZZ';s   T)r   any__mro__NotImplemented)clsCs     r   __subclasshook__zThenable.__subclasshook__   s$    (?;;;r   c                 <    t        |       j                  | |       |S r   )typeregister)r%   others     r   r*   zThenable.register    s     	S	3&r   r   NNT)__name__
__module____qualname____doc__	__slots__abcabstractmethodr   r   r   classmethodr'   r*   r   r   r   r   r      s~    +I$ $ 	$ $ 	$ $    r   )	metaclassc                   d    e Zd ZdZd ZddZd ZddZddZe	d        Z
e	d	        Ze	d
        Zy)ThenableProxyz*Proxy to object that supports ``.then()``.c                     || _         y r   )_p)r   ps     r   _set_promise_targetz!ThenableProxy._set_promise_target+   s	    r   Nc                 :    | j                   j                  ||      S r   )r9   r   r   s      r   r   zThenableProxy.then.   s    ww||J11r   c                 6    | j                   j                         S r   )r9   r   r   s    r   r   zThenableProxy.cancel1   s    ww~~r   c                 8    | j                   j                  |      S r   )r9   throw1)r   r   s     r   r?   zThenableProxy.throw14   s    ww~~c""r   c                 >    | j                   j                  |||      S )N)r   r   )r9   r   r   s       r   r   zThenableProxy.throw7   s    ww}}SR9}==r   c                 .    | j                   j                  S r   )r9   	cancelledr   s    r   rB   zThenableProxy.cancelled:   s    ww   r   c                 .    | j                   j                  S r   )r9   readyr   s    r   rD   zThenableProxy.ready>   s    ww}}r   c                 .    | j                   j                  S r   )r9   failedr   s    r   rF   zThenableProxy.failedB   s    ww~~r   r   r,   )r-   r.   r/   r0   r;   r   r   r?   r   propertyrB   rD   rF   r   r   r   r7   r7   '   sZ    42 #> ! !    r   r7   )	r0   r2   collections.abcr   __all__ABCMetar   r*   r7   r   r   r   <module>rK      sF     
 $,x3;; > 
  r   