U
    ½){f+  ã                   @   sF   d dl Z d dlZejjjG dd„ dƒƒZG dd„ de jƒZdd„ ZdS )é    Nc                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
Ú_Interceptorc                 C   s   || _ || _d S ©N)Ú_Interceptor__coroÚ_Interceptor__context)ÚselfÚcoroÚcontext© r	   úN/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/taskgroup/tasks.pyÚ__init__   s    z_Interceptor.__init__c                 C   s   | j  | jj|¡S r   )r   Úrunr   Úsend)r   Úvr	   r	   r
   r      s    z_Interceptor.sendc                 C   s   | j  | jj|¡S r   )r   r   r   Úthrow)r   Úer	   r	   r
   r      s    z_Interceptor.throwc                 C   s   t | j|ƒS r   )Úgetattrr   )r   Únamer	   r	   r
   Ú__getattr__   s    z_Interceptor.__getattr__N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r	   r	   r	   r
   r      s   r   c                       sJ   e Zd Zddœ‡ fdd„
Z‡ fdd„Zdd„ Zd	d
„ Z‡ fdd„Z‡  ZS )ÚTaskN)r   c                   s0   d| _ |d k	rt||ƒ}tƒ j|f|ž|Ž d S )Nr   )Ú_num_cancels_requestedr   Úsuperr   )r   r   r   ÚargsÚkwargs©Ú	__class__r	   r
   r      s    
zTask.__init__c                    s$   |   ¡ s|  jd7  _tƒ j||ŽS )Né   )Údoner   r   Úcancel)r   r   r   r   r	   r
   r       s    zTask.cancelc                 C   s   | j S r   ©r   ©r   r	   r	   r
   Ú
cancelling!   s    zTask.cancellingc                 C   s   | j dkr|  j d8  _ | j S )Nr   r   r!   r"   r	   r	   r
   Úuncancel$   s    
zTask.uncancelc                    s   t ƒ  ¡ }t|tƒr|jS |S r   )r   Úget_coroÚ
isinstancer   r   )r   r   r   r	   r
   r%   )   s    

zTask.get_coro)	r   r   r   r   r    r#   r$   r%   Ú__classcell__r	   r	   r   r
   r      s
   r   c                 K   s   t |fd| i|—ŽS )NÚloop)r   )r(   r   r   r	   r	   r
   Útask_factory/   s    r)   )	ÚasyncioÚcollections.abcÚcollectionsÚabcÚ	CoroutineÚregisterr   r   r)   r	   r	   r	   r
   Ú<module>   s
   