
    2\h                        	 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 dd
lmZ  ej        d          j        Zd,dZd,dZd Z G d dej                  ZeZ	 ddlZej        xZZn# e$ r Y nw xY wddddZej        j        Zej        j         Z ej        j!        Z!de!ddZ"d Z#d Z$d Z%d Z&dddZ'ej(        d             Z)d,dZ*dddZ+dddZ,ej(        d             Z-ee-_         G d  d!ej.                  Z/d"d#d$Z0d% Z1d& Z2 e	j3                    Z4i Z5d' Z6d( Z7d) Z8d* Z9e6Z:e9Z;e7Z<e8Z=	 dd+lm6Z6m9Z9m7Z7m8Z8m4Z4m5Z5 e6Z>e9Z?e7Z@e8ZAdS # e$ r Y dS w xY w)-)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)GenericAlias   )
base_tasks)
coroutines)events)
exceptions)futures)_is_coroutinec                 V    	 | t          j                    } t          j        |           S N)r   get_running_loop_current_tasksgetloops    7/opt/python-3.11.14/usr/lib/python3.11/asyncio/tasks.pyr   r   #   s)    +|&((d###    c                      	  t          j                     d}	 	 t          t                    }n# t          $ r |dz  }|dk    r Y nw xY w3 fd|D             S )Nr   Tr   i  c                 h    h | ].}t          j        |          u |                                ,|/S  )r   	_get_loopdone).0tr$   s     r%   	<setcomp>zall_tasks.<locals>.<setcomp>=   sE     > > >! ##t++AFFHH+ +++r&   )r   r    list
_all_tasksRuntimeError)r$   itaskss   `  r%   r   r   *   s    1|&(( 	
A	$$E   	 	 	FADyy y	> > > >u > > > >s   1 A
	A
c                     |B	 | j         } ||           d S # t          $ r  t          j        dt          d           Y d S w xY wd S )Nz~Task.set_name() was added in Python 3.8, the method support will be mandatory for third-party task implementations since 3.13.   
stacklevel)set_nameAttributeErrorwarningswarnDeprecationWarning)tasknamer8   s      r%   _set_task_namer?   A   s    	}H HTNNNNN  	8 	8 	8M 9 )Q8 8 8 8 8 8 8	8 s    &AAc                        e Zd Z	 dZdddd fd
Z fdZ ee          Zd Z	d Z
d Zd	 Zd
 Zd ZdddZddddZddZd Zd Zd fd	Zd Z xZS )r   TN)r$   r>   contextc                   t                                          |           | j        r| j        d= t          j        |          sd| _        t          d|          |dt                       | _        nt          |          | _        d| _
        d| _        d | _        || _        |t          j                    | _        n|| _        | j                            | j        | j                   t)          |            d S )Nr#   Fza coroutine was expected, got zTask-r   rA   )super__init___source_tracebackr   iscoroutine_log_destroy_pending	TypeError_task_name_counter_namestr_num_cancels_requested_must_cancel_fut_waiter_corocontextvarscopy_context_context_loop	call_soon_Task__stepr   )selfcoror$   r>   rA   	__class__s        r%   rF   zTask.__init__j   s   d###! 	+&r*%d++ 	G ).D%ETEEFFF<7!3!5!577DJJTDJ&'#!
?'466DMM#DM
T[$-@@@tr&   c                     | j         t          j        k    r7| j        r0| dd}| j        r
| j        |d<   | j                            |           t                                                       d S )Nz%Task was destroyed but it is pending!)r=   messagesource_traceback)	_stater   _PENDINGrI   rG   rU   call_exception_handlerrE   __del__)rX   rA   rZ   s     r%   ra   zTask.__del__   sy    ;'***t/H*B G % E.2.D*+J--g666r&   c                 *    t          j        |           S r   )r   
_task_reprrX   s    r%   __repr__zTask.__repr__   s    $T***r&   c                     | j         S r   )rQ   rd   s    r%   get_corozTask.get_coro   
    zr&   c                     | j         S r   )rL   rd   s    r%   get_namezTask.get_name   rh   r&   c                 .    t          |          | _        d S r   )rM   rL   )rX   values     r%   r8   zTask.set_name   s    ZZ


r&   c                      t          d          )Nz*Task does not support set_result operationr1   )rX   results     r%   
set_resultzTask.set_result   s    GHHHr&   c                      t          d          )Nz-Task does not support set_exception operationrn   )rX   	exceptions     r%   set_exceptionzTask.set_exception   s    JKKKr&   )limitc                .    	 t          j        | |          S r   )r   _task_get_stack)rX   rt   s     r%   	get_stackzTask.get_stack   s    	( )$666r&   )rt   filec                0    	 t          j        | ||          S r   )r   _task_print_stack)rX   rt   rx   s      r%   print_stackzTask.print_stack   s    	 +D%>>>r&   c                     	 d| _         |                                 rdS | xj        dz  c_        | j        | j                            |          rdS d| _        || _        dS )NFr   msgT)_log_tracebackr+   rN   rP   cancelrO   _cancel_message)rX   r~   s     r%   r   zTask.cancel   s}    	* $99;; 	5##q(## '&&3&//  t "tr&   c                     	 | j         S r   rN   rd   s    r%   
cancellingzTask.cancelling   s    	
 **r&   c                 H    	 | j         dk    r| xj         dz  c_         | j         S )Nr   r   r   rd   s    r%   uncancelzTask.uncancel   s4    	 &**''1,''**r&   c                    |                                  rt          j        d| d|          | j        r5t	          |t          j                  s|                                 }d| _        | j        }d | _        t          | j
        |            	 ||                    d           }n|                    |          }t          |dd           }|8t          j        |          | j
        ur?t!          d| d|d          }| j
                            | j        || j                   n|r|| u r;t!          d	|           }| j
                            | j        || j                   nnd|_        |                    | j        | j                   || _        | j        r'| j                            | j        
          rd| _        nt!          d| d|          }| j
                            | j        || j                   n|(| j
                            | j        | j                   nt3          j        |          r>t!          d| d|          }| j
                            | j        || j                   nUt!          d|          }| j
                            | j        || j                   n# t6          $ rf}| j        r/d| _        t9                                          | j        
           n&t9                                          |j                   Y d }~nd }~wt          j        $ r1}|| _        t9                                                       Y d }~nqd }~wt@          tB          f$ r'}t9                      "                    |            d }~wtF          $ r+}t9                      "                    |           Y d }~nd }~ww xY wtI          | j
        |            d } d S # tI          | j
        |            d } w xY w)Nz_step(): already done: z, F_asyncio_future_blockingzTask z got Future z attached to a different looprD   zTask cannot await on itself: r}   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   InvalidStateErrorrO   
isinstanceCancelledError_make_cancelled_errorrQ   rP   r   rU   sendthrowgetattrr   r*   r1   rV   rW   rT   r   add_done_callback_Task__wakeupr   r   inspectisgeneratorStopIterationrE   rp   rl   _cancelled_excKeyboardInterrupt
SystemExitrs   BaseExceptionr   )rX   excrY   ro   blockingnew_excrZ   s         r%   __stepzTask.__step  s   99;; 	=.;$;;C;;= = = 	&c:#<== 30022 %DzDJ%%%H	{ 4C$ v'A4HHH#$V,,DJ>>*C C C!C C CD DG J((Wdm ) E E E E E~~".DDDD#F #F
,, K$- - I I I I ;@700 M4= 1 B B B+1(, :#/66(,(<  7  >  > :49 1*<#'< <17< <= =G J((Wdm ) E E E E 
$$T[$-$HHHH$V,, A&B)-B B7=B BC C 
$$K$- % A A A A ''Hf'H'HII
$$K$- % A A A A{  	. 	. 	.  .$)!4#78888""39---( 	 	 	"%DGGNN!:. 	 	 	GG!!#&&& 	' 	' 	'GG!!#&&&&&&&&	'd 
D)))DDD 
D)))DKKKKsb   -K  =HO3  
O
AL+&O3 +O='M)$O3 )O="NO,!OO3 OO3 3Pc                     	 |                                  |                                  n,# t          $ r}|                     |           Y d }~nd }~ww xY wd } d S r   )ro   rW   r   )rX   futurer   s      r%   __wakeupzTask.__wakeup[  sr    	MMOOO KKMMMM  	 	 	KK	 s   + 
AAAr   )__name__
__module____qualname__rI   rF   ra   classmethodr   __class_getitem__re   rg   rj   r8   rp   rs   rw   r{   r   r   r   rW   r   __classcell__rZ   s   @r%   r   r   N   s        +.  %)d       6	 	 	 	 	 $L11+ + +         I I IL L L "& 7 7 7 7 7. $(d 	? 	? 	? 	? 	?( ( ( (T+ + +
+ 
+ 
+U U U U U Un      r&   r   )r>   rA   c                    	 t          j                    }||                    |           }n|                    | |          }t          ||           |S )NrD   )r   r    r   r?   )rY   r>   rA   r$   r=   s        r%   r   r   x  s^     "$$D%%g664Kr&   )timeoutreturn_whenc                  K   	 t          j        |           st          j        |           r$t	          dt          |           j                   | st          d          |t          t          t          fvrt          d|           t          |           } t          d | D                       rt	          d          t          j                    }t          | |||           d {V S )Nzexpect a list of futures, not zSet of Tasks/Futures is empty.zInvalid return_when value: c              3   >   K   | ]}t          j        |          V  d S r   )r   rH   )r,   fs     r%   	<genexpr>zwait.<locals>.<genexpr>  s-      
1
1:!!$$
1
1
1
1
1
1r&   z6Passing coroutines is forbidden, use tasks explicitly.)r   isfuturer   rH   rJ   typer   
ValueErrorr   r   r   setanyr   r    _wait)fsr   r   r$   s       r%   r   r     s       Nz5b99 NLb9JLLMMM ;9:::?O]KKKD{DDEEE	RB

1
1b
1
1
111 RPQQQ"$$Dr7K666666666r&   c                 \    |                                  s|                     d            d S d S r   )r+   rp   )waiterargss     r%   _release_waiterr     s6    ;;==  $   r&   c                 
  K   	 t          j                    }||  d {V S |dk    rt          | |          } |                                 r|                                 S t          | |           d {V  	 |                                 S # t          j        $ r}t          j                    |d }~ww xY w|	                                }|
                    |t          |          }t          j        t          |          }t          | |          } |                     |           	 	 | d {V  n~# t          j        $ rl |                                 r*|                                 cY |                                 S |                     |           t          | |           d {V   w xY w|                                 r(|                                 |                                 S |                     |           t          | |           d {V  	 |                                 |                                 S # t          j        $ r}t          j                    |d }~ww xY w# |                                 w xY w)Nr   r#   )r   r    r   r+   ro   _cancel_and_waitr   r   TimeoutErrorcreate_future
call_laterr   	functoolspartialr   r   remove_done_callback)futr   r$   r   r   timeout_handlecbs          r%   r   r     s      "$$Dyyyyyy!||Cd+++88:: 	 ::<<s..........	5::<<( 	5 	5 	5)++4	5 !!F__WovFFN		?F	3	3B
$
'
'
'C" 	LLLLLLLL( 		 		 		xxzz zz||##2 	/ ((,,, 's6666666666		 88:: 	9::<< 	 $$R((( #3T22222222229zz|| 	 , 9 9 9 -//S89 	sf   8B B4B//B4)D2 1I, 27F-)I, ?.F--*I, ,,I, I I)I$$I))I, ,Jc                   	
K   	 |                                 
d 	||                    |t          
          	t          |           	
fd}| D ]}|                    |           	 
 d {V  		                                 | D ]}|                    |           n5# 		                                 | D ]}|                    |           w xY wt                      t                      }}| D ]A}|                                r|	                    |           ,|	                    |           B||fS )Nc                 (   dz  dk    s>t           k    s3t          k    ri|                                 sW|                                 E                                                                 s                    d            d S d S d S d S d S )Nr   r   )r   r   	cancelledrr   r   r+   rp   )r   counterr   r   r   s    r%   _on_completionz_wait.<locals>._on_completion  s    1qLL?**?**AKKMM*010I)%%''';;== (!!$''''' +***0I0I( (r&   )
r   r   r   lenr   r   r   r   r+   add)r   r   r   r$   r   r   r+   pendingr   r   r   s     `     @@@r%   r   r     s     
 !!FN/6JJ"ggG
( 
( 
( 
( 
( 
( 
( 
(  , ,	N++++3%!!### 	3 	3A"">2222	3 %!!### 	3 	3A"">2222	3 EE355'D  6688 	HHQKKKKKKNNNN=s   .B' '2Cc                 *  K   	 |                                 }t          j        t          |          }|                     |           	 |                                  | d {V  |                     |           d S # |                     |           w xY wr   )r   r   r   r   r   r   r   )r   r$   r   r   s       r%   r   r   '  s      F!!F		?F	3	3B"%

   $$$$$  $$$$s   A; ;B)r   c             #     	
K   	 t          j        |           st          j        |           r$t	          dt          |           j                   ddlm}  |            t          j
                    		fdt          |           D             d 
fd}
fdfd}D ]}|                               r|	                    ||          
t          t                              D ]} |            V  d S )Nz#expect an iterable of futures, not r   )Queuec                 2    h | ]}t          |           S )r#   )r   )r,   r   r$   s     r%   r.   zas_completed.<locals>.<setcomp>Q  s&    999AM!$'''999r&   c                      D ],} |                                                     d            -                                 d S r   )r   
put_nowaitclear)r   r   r+   todos    r%   _on_timeoutz!as_completed.<locals>._on_timeoutT  sL     	" 	"A"">222OOD!!!!

r&   c                     sd S                      |                                |            s                                 d S d S d S r   )remover   r   )r   r+   r   r   s    r%   r   z$as_completed.<locals>._on_completionZ  sf     	FA 	$2!!#####	$ 	$22r&   c                     K                                     d {V } | t          j        |                                 S r   )r"   r   r   ro   )r   r+   s    r%   _wait_for_onez#as_completed.<locals>._wait_for_oneb  sB      ((**9))xxzzr&   )r   r   r   rH   rJ   r   r   queuesr   r   _get_event_loopr   r   r   ranger   )r   r   r   r   r   r   _r   r+   r$   r   r   s          @@@@@r%   r	   r	   8  s     "  Sz5b99 SQd2hh>OQQRRR577D!##D9999R999DN      $ $ $ $ $ $ $      , ,	N++++ ?#+>>3t99  moo r&   c               #      K   	 d V  d S r   r)   r)   r&   r%   __sleep0r   q  s       
EEEEEr&   c                 @  K   	 | dk    rt                       d {V  |S t          j                    }|                                }|                    | t
          j        ||          }	 | d {V 	 |                                 S # |                                 w xY w)Nr   )r   r   r    r   r   r   _set_result_unless_cancelledr   )delayro   r$   r   hs        r%   r
   r
   }  s      Czzjj"$$D!!F<	( 	(A||||||	







s   *B Br#   c                &    	 t          | |          S Nr#   )_ensure_future)coro_or_futurer$   s     r%   r   r     s     .t4444r&   c                   t          j        |           r)|%|t          j        |           urt          d          | S d}t	          j        |           s5t          j        |           rt          |           } d}nt          d          |t          j        d          }	 |                    |           S # t          $ r |s|                                   w xY w)NzRThe future belongs to a different loop than the one specified as the loop argumentFTz:An asyncio.Future, a coroutine or an awaitable is required   r6   )r   r   r*   r   r   rH   r   isawaitable_wrap_awaitablerJ   r   r   r   r1   close)r   r$   called_wrap_awaitables      r%   r   r     s   '' G,=n,M,M M M E F F F!!.11 +~.. 	+,^<<N$(!! * + + + |%333///   $ 	#  """s   !B6 6"Cc              #   <   K   	 |                                  E d {V S r   )	__await__)	awaitables    r%   r   r     s1      
 !**,,,,,,,,-r&   c                   (     e Zd Z	  fdZddZ xZS )_GatheringFuturec                h    t                                          |           || _        d| _        d S )Nr#   F)rE   rF   	_children_cancel_requested)rX   childrenr$   rZ   s      r%   rF   z_GatheringFuture.__init__  s3    d###!!&r&   Nc                     |                                  rdS d}| j        D ]}|                    |          rd}|rd| _        |S )NFr}   T)r+   r   r   r   )rX   r~   retchilds       r%   r   z_GatheringFuture.cancel  s`    99;; 	5^ 	 	E|||$$  	* &*D"
r&   r   )r   r   r   rF   r   r   r   s   @r%   r   r     sQ        ' ' ' ' '       r&   r   F)return_exceptionsc                    	
 	 |s>t          j                    }|                                

                    g            
S 	
 fd}i }g d	dd }d 
|D ]u}||vrRt	          ||          }|t          j        |          }||urd|_        	dz  	|||<   |                    |           n||         }	                    |           vt          |          

S )Nc                    dz                                   r*|                                 s|                                  d S sl|                                 r+|                                 }                    |           d S |                                 }|                    |           d S k    rg }D ]x} |                                 r#t          j        | j        dn| j                  }n*|                                 }||                                 }|	                    |           yj
        r+|                                 }                    |           d S                     |           d S d S )Nr    )r+   r   rr   r   rs   r   r   r   ro   appendr   rp   )	r   r   resultsresr   	nfinishednfutsouterr   s	       r%   _done_callbackzgather.<locals>._done_callback  s   Q	=EJJLL===??  F  	}}  //11##C(((mmoo?'',,,F G $ $==?? + %3!19+- -CC --//C{!jjlls####& * //11##C(((((  ))))); r&   r   r#   Fr   )r   r   r   rp   r   r   r*   rI   r   r   r   )r   coros_or_futuresr$   r  
arg_to_futargr   r   r   r  r  s   `      @@@@r%   r   r     sP   :  %''""$$5* 5* 5* 5* 5* 5* 5* 5* 5*n JHEIDE  j   4000C|(--#~~
 ,1(QJE!JsO!!.1111 S/CXD111ELr&   c                    	 t          |                                           rS t          j                  }|                                fdfd}                                                   |           S )Nc                                                     r*|                                  s|                                  d S |                                  r                                 d S |                                 }|                    |           d S                     |                                            d S r   )r   rr   r   rs   rp   ro   )innerr   r  s     r%   _inner_done_callbackz$shield.<locals>._inner_done_callback{  s    ?? 	??$$ "!!!F?? 	1LLNNNNN//##C##C(((((  00000r&   c                 ^                                     s                               d S d S r   )r+   r   )r  r
  r	  s    r%   _outer_done_callbackz$shield.<locals>._outer_done_callback  s8    zz|| 	=&&';<<<<<	= 	=r&   )r   r+   r   r*   r   r   )r  r$   r  r
  r	  r  s      @@@r%   r   r   S  s    @ 3Ezz|| U##D  E1 1 1 1 1"= = = = = = 
0111	0111Lr&   c                      	 t          j                   st          d          t          j                                         fd}                    |           S )NzA coroutine object is requiredc                      	 t          j        t                               d S # t          t          f$ r  t
          $ r/}                                 r                    |             d } ~ ww xY wr   )r   _chain_futurer   r   r   r   set_running_or_notify_cancelrs   )r   rY   r   r$   s    r%   callbackz*run_coroutine_threadsafe.<locals>.callback  s    	!-4"@"@"@&IIIII-. 	 	 	 	 	 	2244 *$$S)))	s   $) A3*A..A3)r   rH   rJ   
concurrentr   Futurecall_soon_threadsafe)rY   r$   r  r   s   `` @r%   r   r     s     !$'' :8999&&((F       	h'''Mr&   c                 0    	 t          j        |            d S r   )r0   r   r=   s    r%   r   r     s    =N4r&   c                 r    t          j        |           }|t          d|d|d          |t           | <   d S )NzCannot enter into task z while another task z is being executed.r!   r"   r1   r$   r=   r   s      r%   r   r     sf    !%d++L GT G G#/G G G H H 	HN4r&   c                 r    t          j        |           }||urt          d|d|d          t           | = d S )NzLeaving task z! does not match the current task .r  r  s      r%   r   r     si    !%d++L4 A4 A A/;A A A B B 	Btr&   c                 0    	 t          j        |            d S r   )r0   discardr  s    r%   r   r     s    tr&   )r   r   r   r   r0   r!   r   )B__all__concurrent.futuresr  rR   r   r   	itertoolstypesr:   weakrefr   r   r   r   r   r   r   r   count__next__rK   r   r   r?   	_PyFuturer   _PyTask_asyncio_CTaskImportErrorr   r   r   r   r   r   r   r   r   r	   	coroutiner   r
   r   r   r   r  r   r   r   r   WeakSetr0   r!   r   r   r   r   _py_register_task_py_unregister_task_py_enter_task_py_leave_task_c_register_task_c_unregister_task_c_enter_task_c_leave_taskr)   r&   r%   <module>r4     sv   6                                                         % % % % % %
 %Y_Q''0 $ $ $ $> > > >.
 
 
[ [ [ [ [7 [ [ [| "OOO
 M!D66	  	 	 	D	 #D     $ $4$4"0 # 7 7 7 7 7@     
D  D  D N) ) )X% % %" !% 6 6 6 6 6r 
 
 
   " +/ 5 5 5 5 5 ,0     2 . . . !.     w~   : 16 x x x x xv? ? ?D  0 W_
   
         
 # & 
 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 &)MMMM  	 	 	DD	s$   B BBE7 7F ?F 