o
    ^i^                     @   s  d dl Z d dlZd dlZd dlZd dlZd dlmZ ddlmZ	m
Z d dlmZmZ e jdkr8d dlmZmZ nd dlmZmZ e ZG dd	 d	Zejd
d ZedddZeddddZeddddZedddZedddZG dd deeeef eeeef Zejdd ZdS )    N)cast   )task_factoryTask)SelfTypeVar)   	   )	Generator	Coroutinec                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )WaitTaskRescheduledTc                 C      || _ || _d S N)_add_done_callback_abort_func)selfadd_done_callback
abort_func r   V/var/www/html/stock_analysis/be/venv/lib/python3.10/site-packages/taskgroup/install.py__init__   s   
zWaitTaskRescheduled.__init__c                 O   s   | j |i |S r   )r   )r   argskwargsr   r   r   cancel      zWaitTaskRescheduled.cancelc                 C   s   t  S r   )asyncioget_running_loopr   r   r   r   get_loop   s   zWaitTaskRescheduled.get_loopc                C   s(   | j }| ` |d u rtd||| d S )Nz.only one task can listen to a Future at a time)r   AssertionError)r   fncontextvr   r   r   r   "   s
   z%WaitTaskRescheduled.add_done_callbackN)__name__
__module____qualname___asyncio_future_blockingr   r   r   r   r   r   r   r   r      s    r   c                 c   s    | V S r   r   )r"   r   r   r   _async_yield,   s   r'   
_YieldT_coT)	covariant_SendT_contra)contravariantdefault_ReturnT_co)r)   r,   _SendT_contra_nd)r+   _ReturnT_co_ndc                       s   e Zd Zdeeeef dejfddZ	de
fddZde
fdd	Zdefd
dZdefddZdedefddZd fddZ  ZS )WrapCorocoror!   c                 C   r   r   )_coro_context)r   r1   r!   r   r   r   r   <   s   
zWrapCoro.__init__returnc                 C      | S r   r   r   r   r   r   	__await__D      zWrapCoro.__await__c                 C   r5   r   r   r   r   r   r   __iter__G   r7   zWrapCoro.__iter__c                 C   s   |  ttd S r   )sendr   r.   r   r   r   r   __next__J   r   zWrapCoro.__next__c                 G   s(   | j j| jjg|R  }|tu rt|S r   )r3   runr2   throwUNCANCEL_DONEStopIteration)r   exc_inforesultr   r   r   r<   M   s   zWrapCoro.throwr"   c                 C   s"   | j | jj|}|tu rt|S r   )r3   r;   r2   r9   r=   r>   )r   r"   r@   r   r   r   r9   S   s   zWrapCoro.sendNc                    s   t    d S r   )supercloser   	__class__r   r   rB   Y   s   zWrapCoro.close)r4   N)r#   r$   r%   r   r(   r.   r/   contextvarsContextr   r   r6   r8   r:   r<   r9   rB   __classcell__r   r   rC   r   r0   8   s    
r0   c                    s   t t trd V  d S d  t d usJ  fdd}  }t||   fdd}tt|jdI d H  zd V  W tt	I d H  d S tt	I d H  w )Nc                      s   t   dI d H S N)r!   )r0   get_coror   )r!   taskr   r   asyncio_maini   s   z&install_uncancel.<locals>.asyncio_mainc                    s   | j | |d d S rH   )r   )callbackcontext_)r!   new_taskr   r   r   o   s   z+install_uncancel.<locals>.add_done_callback)r   r   )

isinstancer   current_task_Taskr   _task_factoryr'   r   r   r=   )rK   loopr   r   )r!   rN   rJ   r   install_uncancel]   s(   
"rT   ) sysrE   r   
contextlibtypestypingr   tasksr   rR   r   rQ   typing_extensionsr   r   version_infocollections.abcr
   r   objectr=   r   	coroutiner'   r(   r*   r-   r.   r/   r0   asynccontextmanagerrT   r   r   r   r   <module>   s4    


%