a
    	3j,                     @   s~  d Z ddlZddlZddlZ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 ddl
mZ ddl
mZ ddl
mZ dd	lmZ edjZdCd
dZdDddZdEddZdd ZG dd dejZeZzddlZW n ey   Y n0 ej ZZddddZejjZejj Z ejj!Z!dde!dddZ"dd Z#ddddZ$dd  Z%d!d" Z&ddd#d$d%Z'ej(d&d' Z)dFddd(d)Z*ddd*d+Z+ej(d,d- Z,ee,_G d.d/ d/ej-Z.dd0d1d2d3Z/dd0d1d4d5Z0ddd6d7Z1d8d9 Z2e	3 Z4i Z5d:d; Z6d<d= Z7d>d? Z8d@dA Z9e6Z:e9Z;e7Z<e8Z=z$ddBlm6Z6m9Z9m7Z7m8Z8m4Z4m5Z5 W n eyh   Y n0 e6Z>e9Z?e7Z@e8ZAdS )G)Taskcreate_taskFIRST_COMPLETEDFIRST_EXCEPTIONALL_COMPLETEDwaitwait_foras_completedsleepgathershieldensure_futurerun_coroutine_threadsafecurrent_task	all_tasks_register_task_unregister_task_enter_task_leave_task    N   )
base_tasks)
coroutines)events)
exceptions)futures)_is_coroutinec                 C   s   | d u rt  } t| S N)r   get_running_loop_current_tasksgetloop r"   I/www/server/python_manager/versions/3.9.10/lib/python3.9/asyncio/tasks.pyr   "   s    r   c                    s\    d u rt   d}ztt}W qJ tyD   |d7 }|dkr@ Y q0 qJq fdd|D S )Nr   r     c                    s&   h | ]}t | u r| s|qS r"   )r   	_get_loopdone.0tr    r"   r#   	<setcomp><   s   zall_tasks.<locals>.<setcomp>)r   r   list
_all_tasksRuntimeErrorr!   iZtasksr"   r    r#   r   )   s    r   c                    s\    d u rt   d}ztt}W qJ tyD   |d7 }|dkr@ Y q0 qJq fdd|D S )Nr   r   r$   c                    s   h | ]}t | u r|qS r"   )r   r%   r'   r    r"   r#   r*   U       z$_all_tasks_compat.<locals>.<setcomp>)r   get_event_loopr+   r,   r-   r.   r"   r    r#   _all_tasks_compat@   s    r2   c                 C   s2   |d ur.z
| j }W n ty$   Y n
0 || d S r   )set_nameAttributeError)tasknamer3   r"   r"   r#   _set_task_nameX   s    
r7   c                       s   e Zd ZdZddd fdd
Z fddZdd	 Zd
d Zdd Zdd Z	dd Z
dd Zdd ZddddZdddddZd"ddZd# fdd	Zd d! Z  ZS )$r   TN)r!   r6   c                   s   t  j|d | jr| jd= t|s:d| _td||d u rRdt  | _n
t	|| _d| _
d | _|| _t | _| jj| j| jd t|  d S )Nr    Fza coroutine was expected, got zTask-context)super__init___source_tracebackr   iscoroutine_log_destroy_pending	TypeError_task_name_counter_namestr_must_cancel_fut_waiter_corocontextvarsZcopy_context_context_loop	call_soon_Task__stepr   )selfcoror!   r6   	__class__r"   r#   r<   t   s    


zTask.__init__c                    sF   | j tjkr8| jr8| dd}| jr,| j|d< | j| t   d S )Nz%Task was destroyed but it is pending!)r5   messageZsource_traceback)	_stater   Z_PENDINGr?   r=   rI   Zcall_exception_handlerr;   __del__)rL   r:   rN   r"   r#   rR      s    
zTask.__del__c                 C   s   | S r   r"   )clstyper"   r"   r#   __class_getitem__   s    zTask.__class_getitem__c                 C   s
   t | S r   )r   Z_task_repr_inforL   r"   r"   r#   
_repr_info   s    zTask._repr_infoc                 C   s   | j S r   )rF   rV   r"   r"   r#   get_coro   s    zTask.get_coroc                 C   s   | j S r   )rB   rV   r"   r"   r#   get_name   s    zTask.get_namec                 C   s   t || _d S r   )rC   rB   )rL   valuer"   r"   r#   r3      s    zTask.set_namec                 C   s   t dd S )Nz*Task does not support set_result operationr-   )rL   resultr"   r"   r#   
set_result   s    zTask.set_resultc                 C   s   t dd S )Nz-Task does not support set_exception operationr[   )rL   	exceptionr"   r"   r#   set_exception   s    zTask.set_exception)limitc                C   s   t | |S r   )r   Z_task_get_stack)rL   r`   r"   r"   r#   	get_stack   s    zTask.get_stack)r`   filec                C   s   t | ||S r   )r   Z_task_print_stack)rL   r`   rb   r"   r"   r#   print_stack   s    	zTask.print_stackc                 C   s>   d| _ |  rdS | jd ur.| jj|dr.dS d| _|| _dS NFmsgT)Z_log_tracebackr&   rE   cancelrD   _cancel_message)rL   rf   r"   r"   r#   rg      s    
zTask.cancelc              
      s  |   rtd| d|| jr>t|tjs8|  }d| _| j}d | _t	| j
|  zz"|d u rp|d }n
||}W n ty } z:| jrd| _t j| jd nt |j W Y d }~n d }~0  tjy } z|| _t   W Y d }~nd }~0  ttfy> } zt |  W Y d }~nd }~0  typ } zt | W Y d }~n~d }~0 0 t|dd }|d urjt|| j
urtd| d|d}| j
j| j|| jd	 n|r>|| u rtd
| }| j
j| j|| jd	 n>d|_|j | j!| jd	 || _| jrh| jj| jdrhd| _n*td| d|}| j
j| j|| jd	 n||d u r| j
j| j| jd	 n\t"#|rtd| d|}| j
j| j|| jd	 n$td|}| j
j| j|| jd	 W t$| j
|  d } nt$| j
|  d } 0 d S )Nz_step(): already done: z, Fre   _asyncio_future_blockingzTask z got Future z attached to a different loopr9   zTask cannot await on itself: z-yield was used instead of yield from in task z with z;yield was used instead of yield from for generator in task zTask got bad yield: )%r&   r   InvalidStateErrorrD   
isinstanceCancelledError_make_cancelled_errorrF   rE   r   rI   sendthrowStopIterationr;   rg   rh   r]   rZ   Z_cancelled_excKeyboardInterrupt
SystemExitr_   BaseExceptiongetattrr   r%   r-   rJ   rK   rH   ri   add_done_callback_Task__wakeupinspectZisgeneratorr   )rL   excrM   r\   blockingnew_excrN   r"   r#   Z__step   s    $ $







zTask.__stepc              
   C   sL   z|   W n. ty: } z| | W Y d }~nd }~0 0 |   d } d S r   )r\   rs   rK   )rL   futurerx   r"   r"   r#   Z__wakeupF  s     zTask.__wakeup)N)N)__name__
__module____qualname__r?   r<   rR   rU   rW   rX   rY   r3   r]   r_   ra   rc   rg   rK   rv   __classcell__r"   r"   rN   r#   r   b   s   
"Wr   )r6   c                C   s    t  }|| }t|| |S r   )r   r   r   r7   )rM   r6   r!   r5   r"   r"   r#   r   c  s    

r   )r!   timeoutreturn_whenc                   s   t | st| r(tdt| j | s4td|tt	t
fvrPtd|  d u rbt  ntjdtdd t| } tdd | D rtjd	tdd  fd
d| D } t| || I d H S )Nzexpect a list of futures, not z#Set of coroutines/Futures is empty.zInvalid return_when value: [The loop argument is deprecated since Python 3.8, and scheduled for removal in Python 3.10.   
stacklevelc                 s   s   | ]}t |V  qd S r   )r   r>   r(   fr"   r"   r#   	<genexpr>  r0   zwait.<locals>.<genexpr>zThe explicit passing of coroutine objects to asyncio.wait() is deprecated since Python 3.8, and scheduled for removal in Python 3.11.c                    s   h | ]}t | d qS r    r   r   r    r"   r#   r*     r0   zwait.<locals>.<setcomp>)r   isfuturer   r>   r@   rT   r|   
ValueErrorr   r   r   r   r   warningswarnDeprecationWarningsetany_wait)fsr!   r   r   r"   r    r#   r   u  s$    
r   c                 G   s   |   s| d  d S r   )r&   r]   )waiterargsr"   r"   r#   _release_waiter  s    r   r    c             
      s  |d u rt  }ntjdtdd |d u r4| I d H S |dkrt| |d} |  rX|  S t| |dI d H  z
|  W S  t	j
y } zt	 |W Y d }~n
d }~0 0 | }||t|}tt|}t| |d} | | zz|I d H  W nT t	j
yB   |  r |   Y W |  S | | t| |dI d H   Y n0 |  r`|  W |  S | | t| |dI d H  z|  W W |  S  t	j
y } zt	 |W Y d }~n
d }~0 0 W |  n
|  0 d S )Nr   r   r   r   r    )r   r   r   r   r   r   r&   r\   _cancel_and_waitr   rl   TimeoutErrorcreate_future
call_laterr   	functoolspartialru   rg   remove_done_callback)futr   r!   rx   r   timeout_handlecbr"   r"   r#   r     sZ    


 





"r   c              
      s   |  d |d ur"||tt|   fdd}| D ]}|| q@z2I d H  W d urn  | D ]}|| qrn&d ur  | D ]}|| q0 t t  }}| D ]"}| r|	| q|	| q||fS )Nc                    sZ    d8   dks4t ks4tkrV|  sV|  d urVd urD   sVd  d S )Nr   r   )r   r   	cancelledr^   rg   r&   r]   r   Zcounterr   r   r   r"   r#   _on_completion  s    
z_wait.<locals>._on_completion)
r   r   r   lenru   rg   r   r   r&   add)r   r   r   r!   r   r   r&   pendingr"   r   r#   r     s0    r   c              	      sP   |  }tt|}| | z |   |I d H  W | | n| | 0 d S r   )r   r   r   r   ru   rg   r   )r   r!   r   r   r"   r"   r#   r     s    
r   )r!   r   c                #   s   t | st| r(tdt| j d ur@tjdt	dd ddl
m} |dd u rft fdd	t| D d  fd
d}fdd fdd}D ]}|  qr|d ur؈||ttD ]}| V  qd S )Nz#expect an iterable of futures, not r   r   r   r   )Queuer    c                    s   h | ]}t | d qS r   r   r   r    r"   r#   r*   M  r0   zas_completed.<locals>.<setcomp>c                     s*   D ]} |    d  q  d S r   )r   
put_nowaitclearr   )r   r&   todor"   r#   _on_timeoutP  s    
z!as_completed.<locals>._on_timeoutc                    s4   sd S  |   |  s0d ur0  d S r   )remover   rg   r   )r&   r   r   r"   r#   r   V  s    

z$as_completed.<locals>._on_completionc                     s$      I d H } | d u rtj|  S r   )r   r   r   r\   r   )r&   r"   r#   _wait_for_one^  s    z#as_completed.<locals>._wait_for_one)r   r   r   r>   r@   rT   r|   r   r   r   queuesr   r   r1   r   ru   r   ranger   )r   r!   r   r   r   r   r   _r"   )r   r&   r!   r   r   r#   r   .  s*    
r   c                   c   s
   d V  d S r   r"   r"   r"   r"   r#   __sleep0m  s    	r   c                   s~   |d urt jdtdd | dkr0t I d H  |S |d u r@t }| }|| tj	||}z|I d H W |
  S |
  0 d S )Nr   r   r   r   )r   r   r   r   r   r   r   r   r   Z_set_result_unless_cancelledrg   )delayr\   r!   r{   hr"   r"   r#   r	   y  s&    
r	   c                C   s   t | r6|d u rt }|| }|jr2|jd= |S t| rb|d ur^|t| ur^t	d| S t
| r|tt| |dS tdd S )Nr8   zRThe future belongs to a different loop than the one specified as the loop argumentr    z:An asyncio.Future, a coroutine or an awaitable is required)r   r>   r   r1   r   r=   r   r   r%   r   rw   Zisawaitabler   _wrap_awaitabler@   )Zcoro_or_futurer!   r5   r"   r"   r#   r     s    



r   c                 c   s   |   E d H S r   )	__await__)Z	awaitabler"   r"   r#   r     s    r   c                       s,   e Zd Zdd fdd
ZdddZ  ZS )_GatheringFutureNr    c                   s   t  j|d || _d| _d S )Nr    F)r;   r<   	_children_cancel_requested)rL   childrenr!   rN   r"   r#   r<     s    z_GatheringFuture.__init__c                 C   s:   |   rdS d}| jD ]}|j|drd}q|r6d| _|S rd   )r&   r   rg   r   )rL   rf   retchildr"   r"   r#   rg     s    
z_GatheringFuture.cancel)N)r|   r}   r~   r<   rg   r   r"   r"   rN   r#   r     s   r   Fr!   return_exceptionsc                 G   s(   | d urt jdtdd t|| |dS )Nr   r   r   r   )r   r   r   _gather)r!   r   coros_or_futuresr"   r"   r#   r
     s
    r
   c                    s   |s*| d u rt  } |  g  S  fdd}i }g  dd|D ]f}||vrt|| d}| d u r|t|} ||urd|_d7 |||< || n|| } 	| qRt
 | dS )Nc                    s   d7   r$|  s |   d S sd|  rF|  }| d S |  }|d urd| d S krg } D ]J} |  rt| jd u rdn| j}n|  }|d u r|  }|	| qtj
r|  }| n
| d S )Nr    )r&   r   r^   rm   r_   r   rl   rh   r\   appendr   r]   )r   rx   resultsresr   Z	nfinishedZnfutsouterr   r"   r#   _done_callback  s<    

z_gather.<locals>._done_callbackr   r    Fr   )r   r1   r   r]   r   r   r%   r?   ru   r   r   )r!   r   r   r   Z
arg_to_futargr   r"   r   r#   r     s2    
7
r   c                   st   |d urt jdtdd t| |d r0S t}| fdd  fdd}  | S )	Nr   r   r   r    c                    s\      r|   s|   d S |   r.   n*|  }|d urJ | n |   d S r   )r   r^   rg   r_   r]   r\   )innerrx   r   r"   r#   _inner_done_callbacky  s    
z$shield.<locals>._inner_done_callbackc                    s     s  d S r   )r&   r   r   )r   r   r"   r#   _outer_done_callback  s    z$shield.<locals>._outer_done_callback)	r   r   r   r   r&   r   r%   r   ru   )r   r!   r   r"   )r   r   r   r#   r   T  s    


r   c                    s:   t  stdtj  fdd}| S )NzA coroutine object is requiredc               
      sl   zt t d W nN ttfy0    Y n8 tyf }  z  rP|   W Y d } ~ n
d } ~ 0 0 d S )Nr    )r   Z_chain_futurer   rr   rq   rs   set_running_or_notify_cancelr_   )rx   rM   r{   r!   r"   r#   callback  s    
z*run_coroutine_threadsafe.<locals>.callback)r   r>   r@   
concurrentr   FutureZcall_soon_threadsafe)rM   r!   r   r"   r   r#   r     s    



r   c                 C   s   t |  d S r   )r,   r   r5   r"   r"   r#   r     s    r   c                 C   s4   t | }|d ur(td|d|d|t | < d S )NzCannot enter into task z while another task z is being executed.r   r   r-   r!   r5   r   r"   r"   r#   r     s    


r   c                 C   s2   t | }||ur(td|d|dt | = d S )NzLeaving task z! does not match the current task .r   r   r"   r"   r#   r     s    


r   c                 C   s   t |  d S r   )r,   discardr   r"   r"   r#   r     s    r   )r   r   r   r   r,   r   )N)N)N)N)B__all__concurrent.futuresr   rG   r   rw   	itertoolstypesr   weakrefr   r   r   r   r   r   r   count__next__rA   r   r   r2   r7   Z	_PyFuturer   Z_PyTaskZ_asyncioImportErrorZ_CTaskr   r   r   r   r   r   r   r   r   r   	coroutiner   r	   r   r   r   r   r
   r   r   r   WeakSetr,   r   r   r   r   r   Z_py_register_taskZ_py_unregister_taskZ_py_enter_taskZ_py_leave_taskZ_c_register_taskZ_c_unregister_taskZ_c_enter_taskZ_c_leave_taskr"   r"   r"   r#   <module>   s   	



 v
+L,?

&]?$