
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,aƒ„  ã                   @   sr  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dAd
d„ZdBdd„ZdCdd„Zdd„ ZG dd„ dejƒZeZzddlZW n ek
rô   Y nX 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)dDd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dœd4d5„Z0d6d7„ Z1e	 2¡ Z3i Z4d8d9„ Z5d:d;„ Z6d<d=„ Z7d>d?„ Z8e5Z9e8Z:e6Z;e7Z<z$dd@lm5Z5m8Z8m6Z6m7Z7m3Z3m4Z4 W n ek
�r\   Y nX e5Z=e8Z>e6Z?e7Z@dS )E)Ú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 krt  ¡ } t | ¡S ©N)r   Úget_running_loopÚ_current_tasksÚget©Úloop© r"   ú2/opt/alt/python38/lib64/python3.8/asyncio/tasks.pyr   "   s    r   c                    s^   ˆ d krt  ¡ ‰ d}zttƒ}W qL tk
rF   |d7 }|dkrB‚ Y qX qLq‡ fdd„|D ƒS )Nr   r   éè  c                    s&   h | ]}t  |¡ˆ k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 krt  ¡ ‰ d}zttƒ}W qL tk
rF   |d7 }|dkrB‚ Y qX qLq‡ fdd„|D ƒS )Nr   r   r$   c                    s   h | ]}t  |¡ˆ kr|’qS r"   )r   r%   r'   r    r"   r#   r*   U   s      z$_all_tasks_compat.<locals>.<setcomp>)r   Úget_event_loopr+   r,   r-   r.   r"   r    r#   Ú_all_tasks_compat@   s    r1   c                 C   s4   |d k	r0z
| j }W n tk
r&   Y n
X ||ƒ d S r   )Úset_nameÚAttributeError)ÚtaskÚnamer2   r"   r"   r#   Ú_set_task_nameX   s    
r6   c                       s¼   e Zd ZdZed$dd„ƒZed%d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œdd„Zdddœdd„Zdd„ Zd&‡ fd d!„	Zd"d#„ Z‡  ZS )'r   TNc                 C   s(   t jdtdd� |d kr t ¡ }t|ƒS )NzVTask.current_task() is deprecated since Python 3.7, use asyncio.current_task() insteadé   ©Ú
stacklevel)ÚwarningsÚwarnÚDeprecationWarningr   r0   r   ©Úclsr!   r"   r"   r#   r   t   s    ýzTask.current_taskc                 C   s   t jdtdd� t|ƒS )NzPTask.all_tasks() is deprecated since Python 3.7, use asyncio.all_tasks() insteadr7   r8   )r:   r;   r<   r1   r=   r"   r"   r#   r   „   s
    ýzTask.all_tasks)r!   r5   c                   s˜   t ƒ j|d� | jr| jd= t |¡s:d| _td|›�ƒ‚|d k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!   r5   ©Ú	__class__r"   r#   rC   �   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!)r4   ÚmessageZsource_traceback)	Z_stater   Z_PENDINGrF   rD   rP   Zcall_exception_handlerrB   Ú__del__)rS   rA   rU   r"   r#   rX   §   s    þ
zTask.__del__c                 C   s
   t  | ¡S r   )r   Z_task_repr_info©rS   r"   r"   r#   Ú
_repr_info²   s    zTask._repr_infoc                 C   s   | j S r   )rM   rY   r"   r"   r#   Úget_coroµ   s    zTask.get_coroc                 C   s   | j S r   )rI   rY   r"   r"   r#   Úget_name¸   s    zTask.get_namec                 C   s   t |ƒ| _d S r   )rJ   rI   )rS   Úvaluer"   r"   r#   r2   »   s    zTask.set_namec                 C   s   t dƒ‚d S )Nz*Task does not support set_result operation©r-   )rS   Úresultr"   r"   r#   Ú
set_result¾   s    zTask.set_resultc                 C   s   t dƒ‚d S )Nz-Task does not support set_exception operationr^   )rS   Ú	exceptionr"   r"   r#   Úset_exceptionÁ   s    zTask.set_exception)Úlimitc                C   s   t  | |¡S r   )r   Z_task_get_stack)rS   rc   r"   r"   r#   Ú	get_stackÄ   s    zTask.get_stack)rc   Úfilec                C   s   t  | ||¡S r   )r   Z_task_print_stack)rS   rc   re   r"   r"   r#   Úprint_stackÛ   s    	zTask.print_stackc                 C   s4   d| _ |  ¡ rdS | jd k	r*| j ¡ r*dS d| _dS ©NFT)Z_log_tracebackr&   rL   ÚcancelrK   rY   r"   r"   r#   rh   æ   s    

zTask.cancelc              
      sÖ  |   ¡ rt d| ›d|›�¡‚| jr>t|tjƒs8t ¡ }d| _| j}d | _t| j	| ƒ �zfz"|d krp| d ¡}n
| |¡}W nÐ tk
rÆ } z*| jr¦d| _tƒ  ¡  ntƒ  |j¡ W 5 d }~X Y �nö tjk
ræ   tƒ  ¡  Y �nÖ ttfk
�r } ztƒ  |¡ ‚ W 5 d }~X Y �n  tk
�rL } ztƒ  |¡ W 5 d }~X Y �npX t|dd ƒ}|d k	�r@t |¡| j	k	�r¤td| ›d|›d�ƒ}| j	j| j|| jd� nš|�r|| k�rÚtd	| ›�ƒ}| j	j| j|| jd� n8d|_|j| j| jd� || _| j�r>| j ¡ �r>d| _n*td
| ›d|›�ƒ}| j	j| j|| jd� n||d k�r`| j	j| j| jd� n\t  !|¡�r˜td| ›d|›�ƒ}| j	j| j|| jd� n$td|›�ƒ}| j	j| j|| jd� W 5 t
| j	| ƒ d } X d S )Nz_step(): already done: z, FÚ_asyncio_future_blockingzTask z got Future z attached to a different loopr@   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   ZInvalidStateErrorrK   Ú
isinstanceÚCancelledErrorrM   rL   r   rP   r   ÚsendÚthrowÚStopIterationrB   rh   r`   r]   ÚKeyboardInterruptÚ
SystemExitrb   ÚBaseExceptionÚgetattrr   r%   r-   rQ   rR   rO   ri   Úadd_done_callbackÚ_Task__wakeupÚinspectZisgenerator)rS   ÚexcrT   r_   ZblockingÚnew_excrU   r"   r#   Z__step  s¨    ÿ  
ÿ  ÿ
ÿ  ÿ ÿÿ  ÿ
ÿ  ÿ  ÿ
zTask.__stepc              
   C   sJ   z|  ¡  W n, tk
r8 } z|  |¡ W 5 d }~X Y n
X |  ¡  d } d S r   )r_   rq   rR   )rS   Úfuturerv   r"   r"   r#   Z__wakeup[  s    zTask.__wakeup)N)N)N)Ú__name__Ú
__module__Ú__qualname__rF   Úclassmethodr   r   rC   rX   rZ   r[   r\   r2   r`   rb   rd   rf   rh   rR   rt   Ú__classcell__r"   r"   rU   r#   r   b   s$   !Tr   )r5   c                C   s    t  ¡ }| | ¡}t||ƒ |S r   )r   r   r   r6   )rT   r5   r!   r4   r"   r"   r#   r   x  s    

r   )r!   ÚtimeoutÚreturn_whenc                ƒ   sœ   t  | ¡st | ¡r(tdt| ƒj› �ƒ‚| s4tdƒ‚|tt	t
fkrPtd|› �ƒ‚ˆ d krbt ¡ ‰ ntjdtdd� ‡ fdd„t| ƒ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.r7   r8   c                    s   h | ]}t |ˆ d �’qS ©r    ©r   ©r(   Úfr    r"   r#   r*   ¨  s     zwait.<locals>.<setcomp>)r   Úisfuturer   rE   rG   Útypery   Ú
ValueErrorr   r   r   r   r   r:   r;   r<   ÚsetÚ_wait)Úfsr!   r~   r   r"   r    r#   r   Š  s    
 þr   c                 G   s   |   ¡ s|  d ¡ d S r   )r&   r`   )ÚwaiterÚargsr"   r"   r#   Ú_release_waiter­  s    r�   r    c             
   Ã   s”  |d krt  ¡ }ntjdtdd� |d kr4| I d H S |dkr®t| |d�} |  ¡ rX|  ¡ S t| |d�I d H  z|  ¡  W n. t	j
k
r¤ } zt	 ¡ |‚W 5 d }~X Y n
X t	 ¡ ‚| ¡ }| |t|¡}t t|¡}t| |d�} |  |¡ zžz|I d H  W nP t	j
k
�rF   |  ¡ �r$|  ¡  Y W ¢dS |  |¡ t| |d�I d H  ‚ Y nX |  ¡ �r^|  ¡ W ¢*S |  |¡ t| |d�I d H  t	 ¡ ‚W 5 | ¡  X d S )Nr€   r7   r8   r   r    )r   r   r:   r;   r<   r   r&   r_   Ú_cancel_and_waitr   rk   ÚTimeoutErrorÚcreate_futureÚ
call_laterr�   Ú	functoolsÚpartialrs   rh   Úremove_done_callback)Úfutr~   r!   rv   r‹   Útimeout_handleÚcbr"   r"   r#   r   ²  sL    
 þ





r   c              
   ƒ   sÄ   |  ¡ ‰d ‰|d k	r"| |tˆ¡‰t| ƒ‰ ‡ ‡‡‡fdd„}| D ]}| |¡ q@zˆI d H  W 5 ˆd k	rpˆ ¡  | D ]}| |¡ qtX tƒ tƒ  }}| D ]"}| ¡ r°| 	|¡ q˜| 	|¡ q˜||fS )Nc                    sZ   ˆ d8 ‰ ˆ dks4ˆt ks4ˆtkrV|  ¡ sV|  ¡ d k	rVˆd k	rDˆ ¡  ˆ ¡ sVˆ d ¡ d S )Nr   r   )r   r   Ú	cancelledra   rh   r&   r`   ©r„   ©Zcounterr   r–   r‹   r"   r#   Ú_on_completion  s    ÿþþ
ýz_wait.<locals>._on_completion)
r�   r‘   r�   Úlenrs   rh   r”   rˆ   r&   Úadd)rŠ   r~   r   r!   r›   r„   r&   Zpendingr"   rš   r#   r‰   ú  s(    r‰   c              	   Ã   sF   |  ¡ }t t|¡}|  |¡ z|  ¡  |I d H  W 5 |  |¡ X d S r   )r�   r’   r“   r�   rs   r”   rh   )r•   r!   r‹   r—   r"   r"   r#   rŽ   &  s    
rŽ   )r!   r~   c                #   sð   t  | ¡st | ¡r(tdt| ƒj› �ƒ‚ddlm} |ˆd�‰ˆd krPt	 
¡ ‰ntjdtdd� ‡fdd	„t| ƒD ƒ‰d ‰‡ ‡‡fd
d„}‡‡‡fdd„‰ ‡fdd„}ˆD ]}| ˆ ¡ qªˆrÒ|d k	rÒˆ ||¡‰ttˆƒƒD ]}|ƒ V  qÞd S )Nz#expect an iterable of futures, not r   )ÚQueuer    r€   r7   r8   c                    s   h | ]}t |ˆ d �’qS r�   r‚   rƒ   r    r"   r#   r*   U  s     zas_completed.<locals>.<setcomp>c                     s*   ˆD ]} |   ˆ ¡ ˆ d ¡ qˆ ¡  d S r   )r”   Ú
put_nowaitÚclearr™   )r›   r&   Útodor"   r#   Ú_on_timeoutX  s    
z!as_completed.<locals>._on_timeoutc                    s4   ˆsd S ˆ  | ¡ ˆ  | ¡ ˆs0ˆd k	r0ˆ ¡  d S r   )ÚremoverŸ   rh   r™   )r&   r–   r¡   r"   r#   r›   ^  s    

z$as_completed.<locals>._on_completionc                  “   s$   ˆ   ¡ I d H } | d krtj‚|  ¡ S r   )r   r   r�   r_   r™   )r&   r"   r#   Ú_wait_for_onef  s    z#as_completed.<locals>._wait_for_one)r   r…   r   rE   rG   r†   ry   Zqueuesrž   r   r0   r:   r;   r<   rˆ   rs   r‘   Úrangerœ   )rŠ   r!   r~   rž   r¢   r¤   r„   Ú_r"   )r›   r&   r!   r–   r¡   r#   r   7  s*    

 þr   c                   c   s
   d V  d S r   r"   r"   r"   r"   r#   Ú__sleep0u  s    	r§   c                Ã   sr   | dkrt ƒ I d H  |S |d kr*t ¡ }ntjdtdd� | ¡ }| | tj	||¡}z|I d H W ¢S | 
¡  X d S )Nr   r€   r7   r8   )r§   r   r   r:   r;   r<   r�   r‘   r   Z_set_result_unless_cancelledrh   )Zdelayr_   r!   rx   Úhr"   r"   r#   r	   �  s$    
 þ þr	   c                C   sˆ   t  | ¡r6|d krt ¡ }| | ¡}|jr2|jd= |S t | ¡rb|d k	r^|t | ¡k	r^t	dƒ‚| S t
 | ¡r|tt| ƒ|d�S tdƒ‚d S )Nr?   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   rE   r   r0   r   rD   r   r…   r%   r‡   ru   Zisawaitabler   Ú_wrap_awaitablerG   )Zcoro_or_futurer!   r4   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„ Z‡  ZS )Ú_GatheringFutureNr    c                   s   t ƒ j|d� || _d| _d S )Nr    F)rB   rC   Ú	_childrenÚ_cancel_requested)rS   Úchildrenr!   rU   r"   r#   rC   Ä  s    z_GatheringFuture.__init__c                 C   s6   |   ¡ rdS d}| jD ]}| ¡ rd}q|r2d| _|S rg   )r&   r¬   rh   r­   )rS   ZretZchildr"   r"   r#   rh   É  s    
z_GatheringFuture.cancel)ry   rz   r{   rC   rh   r}   r"   r"   rU   r#   r«   ¼  s   r«   F)r!   Úreturn_exceptionsc                    sÜ   |s<| d krt  ¡ } ntjdtdd� |  ¡ ‰ˆ g ¡ ˆS ‡ ‡‡‡‡fdd„}i }g ‰ d‰d‰|D ]f}||kr¸t|| d�}| d krŽt 	|¡} ||k	rœd|_
ˆd	7 ‰|||< | |¡ n|| }ˆ  |¡ qdtˆ | d�‰ˆS )
Nr€   r7   r8   c                    sÒ   ˆd7 ‰ˆ  ¡ r$|  ¡ s |  ¡  d S ˆsd|  ¡ rFt ¡ }ˆ |¡ d S |  ¡ }|d k	rdˆ |¡ d S ˆˆkrÎg }ˆ D ]8} |  ¡ rŠt ¡ }n|  ¡ }|d kr¢|  ¡ }| |¡ qtˆjrÄˆ t ¡ ¡ n
ˆ 	|¡ d S )Nr   )
r&   r˜   ra   r   rk   rb   r_   Úappendr­   r`   )r•   rv   ZresultsÚres©r®   Z	nfinishedZnfutsÚouterr¯   r"   r#   Ú_done_callback  s4    


zgather.<locals>._done_callbackr   r    Fr   )r   r0   r:   r;   r<   r�   r`   r   r   r%   rF   rs   r°   r«   )r!   r¯   Zcoros_or_futuresr´   Z
arg_to_futÚargr•   r"   r²   r#   r
   Ø  s:    
 þ
1
r
   c                   st   |d k	rt jdtdd� t| |d�‰ˆ ¡ r0ˆS t ˆ¡}| ¡ ‰‡fdd„‰ ‡ ‡fdd„}ˆ ˆ ¡ ˆ |¡ ˆS )	Nr€   r7   r8   r    c                    s\   ˆ   ¡ r|   ¡ s|  ¡  d S |   ¡ r.ˆ  ¡  n*|  ¡ }|d k	rJˆ  |¡ nˆ  |  ¡ ¡ d S r   )r˜   ra   rh   rb   r`   r_   )Úinnerrv   ©r³   r"   r#   Ú_inner_done_callbacku  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�   rs   )rµ   r!   r¹   r"   )r¸   r¶   r³   r#   r   P  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k
r2   ‚ Y n6 tk
rf }  zˆ ¡ rTˆ | ¡ ‚ W 5 d } ~ X Y nX d S )Nr    )r   Z_chain_futurer   rp   ro   rq   Zset_running_or_notify_cancelrb   )rv   ©rT   rx   r!   r"   r#   Úcallback˜  s    
z*run_coroutine_threadsafe.<locals>.callback)r   rE   rG   Ú
concurrentr   ÚFutureZcall_soon_threadsafe)rT   r!   r»   r"   rº   r#   r   �  s    



r   c                 C   s   t  | ¡ d S r   )r,   r�   ©r4   r"   r"   r#   r   ®  s    r   c                 C   s4   t  | ¡}|d k	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!   r4   r   r"   r"   r#   r   ³  s    
r   c                 C   s2   t  | ¡}||k	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)AÚ__all__Zconcurrent.futuresr¼   rN   r’   ru   Ú	itertoolsÚtypesr:   ÚweakrefÚ r   r   r   r   r   r   ÚcountÚ__next__rH   r   r   r1   r6   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   Z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†   	



  
#H,>

x?$