
    "d t                     	   U 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 d d	lmZ d d
lmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+ d dl,Z,d dl-Z.d dl/m0Z0m1Z1m2Z2 d dl3m4Z5 d dl6m7Z7 ddl8m9Z9m:Z:m;Z;m<Z< ddl=m>Z>m?Z?m@Z@ ddlAmBZB ddlCmDZDmEZEmFZFmGZG ddlCmHZI ddlJmKZK ddlLmMZN ddlLmOZP ddlLmQZQ ddlRmSZT ddl<mUZUmVZV erd dlWmXZX 	 d dl.mYZZ d dl[m\Z\m]Z] n# e^$ r d dl.m_ZZ d dl`m\Z\m]Z] Y nw xY w	 eZja        Zbn# ec$ r	 d dl.maZb Y nw xY w e)d          Zd e)d eeeU          Zfe.jg        Zge.jY        jh        Zie.jY        jj        Zje.jk        Zk G d! d"eT          ZSe.jl        Zme.jY        jn        Zne.jY        jo        Zoe.jY        jp        Zpe.jq        Zqe.jr        Zr G d# d$eIe.js                  ZH G d% d&e<jt                  Ztd'dd(d)ed*edf         d+eud,evd-e$e.jM                 d.edf
d/Zwd0ed*eed         f         d+ed.edfd1Zxd0ed*edf         d+ed.edfd2Zy G d3 d4e<jz                  Zz ed'5           G d6 d7e<j{                              Z| ed'5           G d8 d9e<j}                              Z~ ed'5           G d: d;e<j                              Zddd'd<d=e*eeee%e*eeef                  f         d>evd?e*eee         df         d@e*eee         df         dAe*eee         df         dBe*eeeedf         dCe$e"eeeef                  dDevd.efdEZa G dF dGe.j<        j                  Z ejdH          ZejedH<   dIe&e         d.dfdJZdIe&e         d.dfdKZ G dL dMeef                   Z G dN dOee<j                  Z G dP dQee<j                  Z G dR dSee<j                  Z G dT dUee<j                  Z G dV dWeeU         e<j                  Z G dX dYeeU         e<j                  Z	 dvdZeed[ed\e$eU         d.efd]Zd^eed.efd_Zd`ej        d\e$eU         dae$eU         dbevd.e*eef         f
dcZe.j        j        Ze.j        j        Zddej        d.dfdeZddej        d.dfdfZ G dg dheP          ZO G di djeN          ZM ejdk          Zejedk<   d.eMfdlZ G dm dne>e@                   Zdoed.efdpZd.e;fdqZd.e!e;         fdrZd.ed         fdsZ G dt due<j                  ZdS )w    N)Future)copy_context)	dataclass)partial)IOBase)PathLike)Signals)TracebackType)IOTYPE_CHECKINGAnyAsyncGenerator	AwaitableCallable
CollectionContextManager	CoroutineDequeDictGenericIterableListMappingNoReturnOptionalSequenceSetTupleTypeTypeVarUnioncast)ErrorOutcomeValue)
SocketType)run_sync   )CapacityLimiterStatisticsEventStatisticsTaskInfoabc)DeprecatedAsyncContextManagerDeprecatedAwaitableTclaim_worker_thread)BrokenResourceErrorBusyResourceErrorClosedResourceErrorEndOfStream)ExceptionGroup)convert_ipv6_sockaddr)CapacityLimiter)Event)ResourceGuard)CancelScope)IPSockAddrTypeUDPPacketType)
TaskStatus)lowlevel)wait_readablewait_writable)hazmat)open_processT_Retval
T_SockAddrc            	       z   e Zd Z	 ddeej                 dedd fdZ	 ddeej                 deddfdZ	ddZ
deee                  d	ee         d
ee         dee         fdZdefdZedefd            Zej        deddfd            Zedefd            Zedefd            Zej        deddfd            ZdS )r;   Noriginalkwargsreturnc                 6    t                               |           S Nobject__new__)clsrG   rH   s      9D:\api_v1\venv\Lib\site-packages\anyio/_backends/_trio.pyrN   zCancelScope.__new__h   s     ~~c"""    c                 6    |pt          j        di || _        d S )N )trior;   _CancelScope__original)selfrG   rH   s      rP   __init__zCancelScope.__init__m   s%     #@d&6&@&@&@&@rQ   c                 8    | j                                          | S rK   )rU   	__enter__rV   s    rP   rY   zCancelScope.__enter__r   s    !!###rQ   exc_typeexc_valexc_tbc                 :    | j                             |||          S rK   )rU   __exit__rV   r[   r\   r]   s       rP   r_   zCancelScope.__exit__v   s     '''6BBBrQ   c                 \    | j                                          t          | j                  S rK   )rU   cancelr.   rZ   s    rP   rb   zCancelScope.cancel~   s&       "4;///rQ   c                     | j         j        S rK   rU   deadlinerZ   s    rP   re   zCancelScope.deadline   s    ''rQ   valuec                     || j         _        d S rK   rd   rV   rf   s     rP   re   zCancelScope.deadline   s    #(   rQ   c                     | j         j        S rK   )rU   cancel_calledrZ   s    rP   rj   zCancelScope.cancel_called   s    ,,rQ   c                     | j         j        S rK   rU   shieldrZ   s    rP   rm   zCancelScope.shield   s    %%rQ   c                     || j         _        d S rK   rl   rh   s     rP   rm   zCancelScope.shield   s    !&rQ   rK   )rI   r;   )__name__
__module____qualname__r   rT   r;   rM   rN   r   rW   rY   r   BaseExceptionr
   boolr_   r.   rb   propertyfloatre   setterrj   rm   rS   rQ   rP   r;   r;   g   s       48# # 01#DJ#	# # # # 6:A A !12AEHA	A A A A
   C4./C -(C '	C
 
$C C C C0+ 0 0 0 0 (% ( ( ( X( _)e ) ) ) ) _) -t - - - X- & & & & X& ]'D 'T ' ' ' ]' ' 'rQ   r;   c                       e Zd ZdS )r6   N)ro   rp   rq   rS   rQ   rP   r6   r6      s        DrQ   r6   c            	           e Zd ZddZddZdeee                  dee         dee         dee	         fdZ
dd	d
edededdfdZdd	d
edef         dededefdZdS )	TaskGrouprI   Nc                 R    d| _         t          j                    | _        d | _        d S NF)_activerT   open_nursery_nursery_managercancel_scoperZ   s    rP   rW   zTaskGroup.__init__   s(     $ 1 3 3 rQ   c                    K   d| _         | j                                         d {V | _        t	          | j        j                  | _        | S NT)r|   r~   
__aenter___nurseryr;   r   rZ   s    rP   r   zTaskGroup.__aenter__   sO      "3>>@@@@@@@@'(BCCrQ   r[   r\   r]   c                    K   	 | j                             |||           d {V 	 d| _        S # t          j        $ r}t          |j                  d d }~ww xY w# d| _        w xY wr{   )r~   	__aexit__r|   rT   
MultiErrorr6   
exceptions)rV   r[   r\   r]   excs        rP   r   zTaskGroup.__aexit__   s      	!.887FSSSSSSSSS !DLL  	; 	; 	; 00d:	; !DL    s    !. AAAA 	A#namefuncargsr   c                ^    | j         st          d           | j        j        |g|R d|i d S Nz;This task group is not active; no new tasks can be started.r   )r|   RuntimeErrorr   
start_soonrV   r   r   r   s       rP   r   zTaskGroup.start_soon   sN    | 	M   	! 8888488888rQ   .c                j   K   | j         st          d           | j        j        |g|R d|i d {V S r   )r|   r   r   startr   s       rP   r   zTaskGroup.start   s`       | 	M   )T](@@@@4@@@@@@@@@rQ   rI   N)rI   ry   )ro   rp   rq   rW   r   r   r   rr   r
   rs   r   r   rM   r   r   r   rS   rQ   rP   ry   ry      s*       ! ! ! !
   !4./! -(! '	!
 
$! ! ! ! HL 9 9 9x 9 9f 9PT 9 9 9 9 MQA A AS)^,A5;ACIA	A A A A A ArQ   ry   Fcancellablelimiterr   .r   r   r   rI   c                    K   dt           f fd}t                      }|                    t          j        j        d            t          |j        |||           d {V S )NrI   c                  `    t          d          5     cd d d            S # 1 swxY w Y   d S )NrT   r0   )r   r   s   rP   wrapperz*run_sync_in_worker_thread.<locals>.wrapper   s~     (( 	 	4;	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   #''r   )rD   r   runsniffiocurrent_async_library_cvarsetr'   )r   r   r   r   r   contexts   `  `  rP   run_sync_in_worker_threadr      s      X       
 nnGKK26===W+w         rQ   fnc                      dt           f fd}t                                          t          j        j        d           t          j                            |          S )NrI   c                     K   dfd} t          j                    4 d {V }                    |j        |            d d d           d {V  n# 1 d {V swxY w Y   d}S )NrI   c                  &   K   d}    d {V d S r   rS   )__tracebackhide__r   r   retvals    rP   innerz5run_async_from_thread.<locals>.wrapper.<locals>.inner   s(       $2t9______FFFrQ   Tr   )rT   r}   r   r   )r   nr   r   r   r   r   s      @rP   r   z&run_async_from_thread.<locals>.wrapper   s     	% 	% 	% 	% 	% 	% 	% 	%
 $&& 	- 	- 	- 	- 	- 	- 	-!KKe,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- !s   A
A!ArT   )rD   r   r   r   r   r   rT   from_thread)r   r   r   r   s   `` @rP   run_async_from_threadr      sp    8         nnGKK26???(((rQ   c                 ~    t          j        j        t                      j        | g|R  }t          t          |          S rK   )rT   r   r'   r   r   r"   rD   )r   r   r   s      rP   run_sync_from_threadr     s6    &|~~'92EEEEF&!!!rQ   c                   X     e Zd ZddZd fdZdededeee	f         de
d	eddfd
Z xZS )BlockingPortalrI   c                 6    t                               |           S rK   rL   rO   s    rP   rN   zBlockingPortal.__new__	      ~~c"""rQ   Nc                     t                                                       t          j                                        | _        d S rK   )superrW   rT   r?   current_trio_token_tokenrV   	__class__s    rP   rW   zBlockingPortal.__init__  s2    m6688rQ   r   r   rH   r   futurec           
      
   t                      }|                    t          j        j        d           t
          j                            |j        t          | j	        j
        |          | j        ||||| j                   d S )NrT   r   )
trio_token)r   r   r   r   r   rT   r   r'   r   _task_groupr   
_call_funcr   )rV   r   r   rH   r   r   r   s          rP   _spawn_task_from_threadz&BlockingPortal._spawn_task_from_thread  s     ..G6:FCCC!!KD$/d;;;O{ 	" 		
 		
 		
 		
 		
rQ   )rI   r   r   )ro   rp   rq   rN   rW   r   tupler   strr   rM   r   r   __classcell__r   s   @rP   r   r     s        # # # #9 9 9 9 9 9

 
 S#X	

 
 
 

 
 
 
 
 
 
 
rQ   r   )eqc                   T    e Zd ZU ej        j        ed<   ddee         de	fdZ
ddZdS )	ReceiveStreamWrapper_streamN	max_bytesrI   c                    K   	 | j                             |           d {V }nC# t          j        $ r}t          |j        d }~wt          j        $ r}t
          |j        d }~ww xY w|r|S t          rK   )r   receive_somerT   r4   	__cause__r2   r5   rV   r   datar   s       rP   receivezReceiveStreamWrapper.receive/  s      	9229========DD' 	9 	9 	9%3=8' 	9 	9 	9%3=8	9  	Ks     % A%AA%A  A%c                 H   K   | j                                          d {V  d S rK   r   acloserZ   s    rP   r   zReceiveStreamWrapper.aclose<  2      l!!###########rQ   rK   r   )ro   rp   rq   rT   r,   ReceiveStream__annotations__r   intbytesr   r   rS   rQ   rP   r   r   +  sf         X#### x}     $ $ $ $ $ $rQ   r   c                   F    e Zd ZU ej        j        ed<   deddfdZddZ	dS )SendStreamWrapperr   itemrI   Nc                    K   	 | j                             |           d {V  d S # t          j        $ r}t          |j        d }~wt          j        $ r}t
          |j        d }~ww xY wrK   )r   send_allrT   r4   r   r2   rV   r   r   s      rP   sendzSendStreamWrapper.sendD  s      	9,''-----------' 	9 	9 	9%3=8' 	9 	9 	9%3=8	9s     & A&AA&A!!A&c                 H   K   | j                                          d {V  d S rK   r   rZ   s    rP   r   zSendStreamWrapper.acloseL  r   rQ   r   )
ro   rp   rq   rT   r,   
SendStreamr   r   r   r   rS   rQ   rP   r   r   @  s]         X    9u 9 9 9 9 9$ $ $ $ $ $rQ   r   c                      e Zd ZU ej        ed<   eej                 ed<   eej	                 ed<   eej	                 ed<   ddZ
defdZdd	Zdd
ZdeddfdZedefd            Zedee         fd            Zedeej                 fd            Zedeej	                 fd            Zedeej	                 fd            ZdS )Process_process_stdin_stdout_stderrrI   Nc                 "  K   | j         r| j                                          d {V  | j        r| j                                         d {V  | j        r| j                                         d {V  |                                  d {V  d S rK   )r   r   r   r   waitrZ   s    rP   r   zProcess.acloseW  s      ; 	'+$$&&&&&&&&&< 	(,%%'''''''''< 	(,%%'''''''''iikkrQ   c                 D   K   | j                                          d {V S rK   )r   r   rZ   s    rP   r   zProcess.waita  s,      ]'')))))))))rQ   c                 8    | j                                          d S rK   )r   	terminaterZ   s    rP   r   zProcess.terminated  s    !!!!!rQ   c                 8    | j                                          d S rK   )r   killrZ   s    rP   r   zProcess.killg  s    rQ   signalc                 :    | j                             |           d S rK   )r   send_signal)rV   r   s     rP   r   zProcess.send_signalj  s    !!&)))))rQ   c                     | j         j        S rK   )r   pidrZ   s    rP   r   zProcess.pidm  s    }  rQ   c                     | j         j        S rK   )r   
returncoderZ   s    rP   r   zProcess.returncodeq  s    }''rQ   c                     | j         S rK   )r   rZ   s    rP   stdinzProcess.stdinu  s
    {rQ   c                     | j         S rK   )r   rZ   s    rP   stdoutzProcess.stdouty  
    |rQ   c                     | j         S rK   )r   rZ   s    rP   stderrzProcess.stderr}  r   rQ   r   )ro   rp   rq   rT   r   r   r   r,   ByteSendStreamByteReceiveStreamr   r   r   r   r   r	   r   rt   r   r   r   r   r   rS   rQ   rP   r   r   P  s        lS'((((c+,,,,c+,,,,   *C * * * *" " " "   *' *d * * * * !S ! ! ! X! (HSM ( ( ( X( x 23    X !67    X !67    X  rQ   r   )cwdenvstart_new_sessioncommandshellr   r   r   r   r   r   c          
        K   t          | |||||||           d {V }|j        rt          |j                  nd }	|j        rt	          |j                  nd }
|j        rt	          |j                  nd }t          ||	|
|          S )N)r   r   r   r   r   r   r   )trio_open_processr   r   r   r   r   r   )r   r   r   r   r   r   r   r   processstdin_streamstdout_streamstderr_streams               rP   rC   rC     s       &+	 	 	 	 	 	 	 	 	G 8?}N$W]333$L<CNT(888PTM<CNT(888PTM7L-GGGrQ   c                         e Zd Zd fdZ xZS )_ProcessPoolShutdownInstrumentrI   Nc                 H    t                                                       d S rK   )r   	after_runr   s    rP   r	  z(_ProcessPoolShutdownInstrument.after_run  s    rQ   r   )ro   rp   rq   r	  r   r   s   @rP   r  r    s=                 rQ   r  &current_default_worker_process_limiterworkersc                 J  K   	 t          t          j                   d {V  d S # t          j        $ rn | D ]}|j        |                                 t          d          5  | D ]}|                                 d {V  	 d d d            Y d S # 1 swxY w Y   Y d S w xY w)NT)rm   )	sleepmathinfrT   	Cancelledr   r   r;   r   )r  r  s     rP   _shutdown_process_poolr    s,     	'DHoo> ' ' ' 	 	G!)%%% 	' 	'" ' 'nn&&&&&&&&&&'	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	''s3   % ?B"$ BB"B	B"B	B"!B"c                 P    t           j                            t          |            d S rK   )rT   r?   spawn_system_taskr  )r  s    rP   #setup_process_pool_exit_at_shutdownr    s!    M##$:GDDDDDrQ   c                   d    e Zd ZdeddfdZddZedej        fd            ZddZ	de
dd	fd
ZdS )_TrioSocketMixintrio_socketrI   Nc                 "    || _         d| _        d S r{   )_trio_socket_closed)rV   r  s     rP   rW   z_TrioSocketMixin.__init__  s    'rQ   c                 j    | j         rt          | j                                        dk     rt          d S Nr   )r  r4   r  filenor2   rZ   s    rP   _check_closedz_TrioSocketMixin._check_closed  s:    < 	&%%##%%))%% *)rQ   c                     | j         j        S rK   )r  _sockrZ   s    rP   _raw_socketz_TrioSocketMixin._raw_socket  s     &&rQ   c                    K   | j                                         dk    r"d| _        | j                                          d S d S )Nr   T)r  r  r  closerZ   s    rP   r   z_TrioSocketMixin.aclose  sJ      ##%%**DL##%%%%% +*rQ   r   r   c                     t          |t          j                  rt          || j                                        dk     r| j        rt          d t          |t                    rt          ||r  )
isinstancerT   r4   r  r  r  OSErrorr2   rV   r   s     rP   _convert_socket_errorz&_TrioSocketMixin._convert_socket_error  sg    c4344 	%3.%%''!+++%4/W%% 	%3.IrQ   r   )ro   rp   rq   TrioSocketTyperW   r  rt   socketr!  r   rr   r(  rS   rQ   rP   r  r    s        N t    & & & & 'V] ' ' ' X'& & & &
 :      rQ   r  c                   R     e Zd Zdeddf fdZddedefdZdeddfd	Zdd
Z	 xZ
S )SocketStreamr  rI   Nc                     t                                          |           t          d          | _        t          d          | _        d S Nreading from
writing tor   rW   r:   _receive_guard_send_guardrV   r  r   s     rP   rW   zSocketStream.__init__  A    %%%+N;;(66rQ      r   c                    K   | j         5  	 | j                            |           d {V }n,# t          $ r}|                     |           Y d }~nd }~ww xY w|r|cd d d            S t
          # 1 swxY w Y   d S rK   )r2  r  recvrr   r(  r5   r   s       rP   r   zSocketStream.receive  s        		" 		"0!.33I>>>>>>>>  0 0 0**3////////0  "		" 		" 		" 		" 		" 		" 		" 		" "!		" 		" 		" 		" 		" 		" 		" 		" 		" 		"s<   A0 -A0
AAA0AA0)A00A47A4r   c                    K   | j         5  t          |          }|rZ	 | j                            |           d {V }n,# t          $ r}|                     |           Y d }~nd }~ww xY w||d          }|Zd d d            d S # 1 swxY w Y   d S rK   )r3  
memoryviewr  r   rr   r(  )rV   r   view
bytes_sentr   s        rP   r   zSocketStream.send  s      	) 	)d##D )4'+'8'='=d'C'C!C!C!C!C!C!CJJ$ 4 4 4..s333333334 JKK(  )	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s7   B >B
A'A"B"A''BB
Bc                 R   K   | j                             t          j                   d S rK   )r  shutdownr*  SHUT_WRrZ   s    rP   send_eofzSocketStream.send_eof  s%      ""6>22222rQ   )r6  r   )ro   rp   rq   r)  rW   r   r   r   r   r@  r   r   s   @rP   r,  r,    s        7N 7t 7 7 7 7 7 7

" 
"s 
"u 
" 
" 
" 
"	)u 	) 	) 	) 	) 	)3 3 3 3 3 3 3 3rQ   r,  c            	       n    e Zd Zdededeeee         f         fdZdedee	ee
f                  ddfdZdS )	UNIXSocketStreammsglenmaxfdsrI   c           	      \  K   t          |t                    r|dk     rt          d          t          |t                    r|dk     rt          d          t          j        d          }t	                       d {V  | j        5  	 	 | j                            |t          j	        ||j
        z                       d {V \  }}}}|s	|st          n-# t          $ r}|                     |           Y d }~nd }~ww xY wz	 d d d            n# 1 swxY w Y   |D ]\  }	}
}|	t          j        k    s|
t          j        k    rt!          d|d|	 d	|
           |                    |d t%          |          t%          |          |j
        z  z
                      |t'          |          fS )
Nr   z%msglen must be a non-negative integer   z!maxfds must be a positive integeriTz.Received unexpected ancillary data; message = z, cmsg_level = z, cmsg_type = )r%  r   
ValueErrorarray
checkpointr2  r  recvmsgr*  CMSG_LENitemsizer5   rr   r(  
SOL_SOCKET
SCM_RIGHTSr   	frombyteslenlist)rV   rC  rD  fdsmessageancdataflagsaddrr   
cmsg_level	cmsg_type	cmsg_datas               rP   receive_fdszUNIXSocketStream.receive_fds  sn     &#&& 	F&1**DEEE&#&& 	B&1**@AAAk#ll  	 	
:>:K:S:S0E F F; ; 5 5 5 5 5 51GWeT # *7 *)) % 4 4 4..s333333334 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 18 	Y 	Y,J	9V...)v?P2P2P"JW J J$.J J>GJ J  
 MM)$Vc)nnI8U&V$VWXXXXS		!!s=   D	A C	D
C>C94D9C>>DDDrT  rS  Nc                   K   |st          d          |st          d          g }|D ]i}t          |t                    r|                    |           -t          |t                    r'|                    |                                           jt          j        d|          }t                       d {V  | j        5  	 	 | j	        
                    |gt          j        t          j        |fg           d {V  n-# t          $ r}|                     |           Y d }~nd }~ww xY wi	 d d d            d S # 1 swxY w Y   d S )Nzmessage must not be emptyzfds must not be emptyrG  )rH  r%  r   appendr   r  rI  rJ  r3  r  sendmsgr*  rN  rO  rr   r(  )rV   rT  rS  filenosfdfdarrayr   s          rP   send_fdszUNIXSocketStream.send_fds   s       	:8999 	64555 	, 	,B"c"" ,r""""B'' ,ryy{{++++c7++ll 	4 	444+33 	 !' 1 & 1 '	 	 	 	 	 	 	 	 	 $ 4 4 4..s3333333344 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s<   D<:D D<
D*D% D<%D**D<<E E )ro   rp   rq   r   r   r   r   r[  r   r!   r   rb  rS   rQ   rP   rB  rB    s        " "S "U5$s)CS=T " " " "B 4 4#-eCK.@#A 4	 4  4  4  4  4  4rQ   rB  c                   :     e Zd Zdej        f fdZdefdZ xZS )TCPSocketListener
raw_socketc                     t                                          t          j                            |                     t          d          | _        d S Nzaccepting connections fromr   rW   rT   r*  from_stdlib_socketr:   _accept_guardrV   re  r   s     rP   rW   zTCPSocketListener.__init__D  B    77
CCDDD*+GHHrQ   rI   c                 X  K   | j         5  	 | j                                         d {V \  }}n,# t          $ r}|                     |           Y d }~nd }~ww xY wd d d            n# 1 swxY w Y   |                    t          j        t          j        d           t          |          S )NrF  )
rj  r  acceptrr   r(  
setsockoptr*  IPPROTO_TCPTCP_NODELAYr,  rV   r  _addrr   s       rP   rn  zTCPSocketListener.acceptH  s      	0 	00+/+<+C+C+E+E%E%E%E%E%E%E"UU  0 0 0**3////////0	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	v163EqIIIK(((6   A'"/A'
AAA'AA''A+.A+)ro   rp   rq   r*  rW   r,  rn  r   r   s   @rP   rd  rd  C  sh        I6= I I I I I I)l ) ) ) ) ) ) ) )rQ   rd  c                   :     e Zd Zdej        f fdZdefdZ xZS )UNIXSocketListenerre  c                     t                                          t          j                            |                     t          d          | _        d S rg  rh  rk  s     rP   rW   zUNIXSocketListener.__init__T  rl  rQ   rI   c                   K   | j         5  	 | j                                         d {V \  }}n,# t          $ r}|                     |           Y d }~nd }~ww xY wd d d            n# 1 swxY w Y   t          |          S rK   )rj  r  rn  rr   r(  rB  rr  s       rP   rn  zUNIXSocketListener.acceptX  s       	0 	00+/+<+C+C+E+E%E%E%E%E%E%E"UU  0 0 0**3////////0	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0  ,,,rt  )ro   rp   rq   r*  rW   rB  rn  r   r   s   @rP   rv  rv  S  si        I6= I I I I I I-. - - - - - - - -rQ   rv  c                   T     e Zd Zdeddf fdZdeeef         fdZde	ddfdZ
 xZS )	UDPSocketr  rI   Nc                     t                                          |           t          d          | _        t          d          | _        d S r.  r1  r4  s     rP   rW   zUDPSocket.__init__c  r5  rQ   c                 &  K   | j         5  	 | j                            d           d {V \  }}|t          |          fcd d d            S # t          $ r}|                     |           Y d }~nd }~ww xY w	 d d d            d S # 1 swxY w Y   d S Nr6  )r2  r  recvfromr7   rr   r(  )rV   r   rW  r   s       rP   r   zUDPSocket.receiveh  s$       	0 	00#'#4#=#=e#D#DDDDDDD
d24888	0 	0 	0 	0 	0 	0 	0 	0 ! 0 0 0**3////////0/	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s4   B3A
A5A0+B0A55BB
B
r   c                    K   | j         5  	  | j        j        |  d {V  n,# t          $ r}|                     |           Y d }~nd }~ww xY wd d d            d S # 1 swxY w Y   d S rK   )r3  r  sendtorr   r(  r   s      rP   r   zUDPSocket.sendp  s       	0 	00.d'.555555555  0 0 0**3////////0	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s6   A"A
AAAAAA"A)ro   rp   rq   r)  rW   r   r   r<   r   r=   r   r   r   s   @rP   rz  rz  b  s        7N 7t 7 7 7 7 7 7
0uUN%:; 0 0 0 00} 0 0 0 0 0 0 0 0 0rQ   rz  c                   D     e Zd Zdeddf fdZdefdZdeddfdZ xZS )ConnectedUDPSocketr  rI   Nc                     t                                          |           t          d          | _        t          d          | _        d S r.  r1  r4  s     rP   rW   zConnectedUDPSocket.__init__y  r5  rQ   c                    K   | j         5  	 | j                            d           d {V 	 cd d d            S # t          $ r}|                     |           Y d }~nd }~ww xY w	 d d d            d S # 1 swxY w Y   d S r}  )r2  r  r8  rr   r(  r'  s     rP   r   zConnectedUDPSocket.receive~  s       	0 	00!.33E:::::::::	0 	0 	0 	0 	0 	0 	0 	0 ! 0 0 0**3////////0/		0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s2   A39
A"AA3A""A33A7:A7r   c                    K   | j         5  	 | j                            |           d {V  n,# t          $ r}|                     |           Y d }~nd }~ww xY wd d d            d S # 1 swxY w Y   d S rK   )r3  r  r   rr   r(  r   s      rP   r   zConnectedUDPSocket.send  s       	0 	00',,T2222222222  0 0 0**3////////0	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s6   A& -A&
AAA&AA&&A*-A*)	ro   rp   rq   r)  rW   r   r   r   r   r   s   @rP   r  r  x  s        7N 7t 7 7 7 7 7 7
0u 0 0 0 00u 0 0 0 0 0 0 0 0 0rQ   r  hostportlocal_addressc                   K   d| v rt           j        nt           j        }t          j                              |          }|                    t           j        t           j        d           |r|                    |           d {V  	 |                    | |f           d {V  n## t          $ r |
                                  w xY wt          |          S )N:rF  )r*  AF_INET6AF_INETrT   ro  rp  rq  bindconnectrr   r#  r,  )r  r  r  familyr  s        rP   connect_tcpr    s       !$tV__F+$$V,,K6-v/A1EEE .}---------!!4,//////////    $$$s   B% % Cpathc                    K   t           j                            t          j                  }	 |                    |            d {V  n## t          $ r |                                  w xY wt          |          S rK   )rT   r*  AF_UNIXr  rr   r#  rB  )r  r  s     rP   connect_unixr    s      +$$V^44K!!$''''''''''    K(((s   A	 	 A)r  remote_address
reuse_portc                 f  K   t           j                            | t          j                  }|r+|                    t          j        t          j        d           |r|                    |           d {V  |r*|                    |           d {V  t          |          S t          |          S )N)r  typerF  )
rT   r*  
SOCK_DGRAMro  rN  SO_REUSEPORTr  r  r  rz  )r  r  r  r  r  s        rP   create_udp_socketr    s       +$$F9J$KKK Jv0&2EqIII .}--------- &!!.111111111!+...%%%rQ   sockc                    K   	 t          |            d {V  d S # t          j        $ r,}t                                          |j                  d d }~wt          j        $ r t          d          d w xY w)Nr/  )r@   rT   r4   with_traceback__traceback__r3   r  r   s     rP   wait_socket_readabler    s      :D!!!!!!!!!!!# P P P!##2233DEE4O! : : ://T9:    A4'A#A4c                    K   	 t          |            d {V  d S # t          j        $ r,}t                                          |j                  d d }~wt          j        $ r t          d          d w xY w)Nr0  )rA   rT   r4   r  r  r3   r  s     rP   wait_socket_writabler    s      8D!!!!!!!!!!!# P P P!##2233DEE4O! 8 8 8--478r  c                   J    e Zd Zd	dZd
dZdefdZd
dZdefdZ	de
fdZdS )r9   rI   c                 6    t                               |           S rK   rL   r   s    rP   rN   zEvent.__new__  r   rQ   Nc                 6    t          j                    | _        d S rK   )rT   r9   _Event__originalrZ   s    rP   rW   zEvent.__init__  s    *,,rQ   c                 4    | j                                         S rK   )r  is_setrZ   s    rP   r  zEvent.is_set  s    %%'''rQ   c                 D   K   | j                                          d {V S rK   )r  r   rZ   s    rP   r   z
Event.wait  s,      _))+++++++++rQ   c                 ^    | j                                         }t          |j                  S )N)tasks_waiting)r  
statisticsr*   r  )rV   orig_statisticss     rP   r  zEvent.statistics  s)    /4466_-JKKKKrQ   c                 \    | j                                          t          | j                  S rK   )r  r   r.   rZ   s    rP   r   z	Event.set  s&    "48,,,rQ   )rI   r9   r   )ro   rp   rq   rN   rW   rs   r  r   r*   r  r.   r   rS   rQ   rP   r9   r9     s        # # # #' ' ' '( ( ( ( (, , , ,LO L L L L-( - - - - - -rQ   r9   c            	          e Zd Zdededd fdZdddedeej                 ddfdZ	dd	Z
d
eee                  dee         dee         dee         fdZedefd            Zej        deddfd            Zedefd            Zedefd            ZdefdZdedefdZddZdeddfdZddZdeddfdZdefdZdS )r8   r   rH   rI   c                 6    t                               |           S rK   rL   )rO   r   rH   s      rP   rN   zCapacityLimiter.__new__  r   rQ   NrG   rG   c                0    |pt          j        | | _        d S rK   )rT   r8   _CapacityLimiter__original)rV   rG   r   s      rP   rW   zCapacityLimiter.__init__  s     #Ad&:D&ArQ   c                 D   K   | j                                          d {V S rK   )r  r   rZ   s    rP   r   zCapacityLimiter.__aenter__  s,      _//111111111rQ   r[   r\   r]   c                 J   K   | j                             |||           d {V S rK   )r  r   r`   s       rP   r   zCapacityLimiter.__aexit__  s4       _..x&IIIIIIIIIrQ   c                     | j         j        S rK   r  total_tokensrZ   s    rP   r  zCapacityLimiter.total_tokens  s    ++rQ   rf   c                     || j         _        d S rK   r  rh   s     rP   r  zCapacityLimiter.total_tokens  s    ',$$$rQ   c                     | j         j        S rK   )r  borrowed_tokensrZ   s    rP   r  zCapacityLimiter.borrowed_tokens  s    ..rQ   c                     | j         j        S rK   )r  available_tokensrZ   s    rP   r  z CapacityLimiter.available_tokens  s    //rQ   c                 \    | j                                          t          | j                  S rK   )r  acquire_nowaitr.   rZ   s    rP   r  zCapacityLimiter.acquire_nowait  s'    &&((("4#6777rQ   borrowerc                 ^    | j                             |           t          | j                  S rK   )r  acquire_on_behalf_of_nowaitr.   rV   r  s     rP   r  z+CapacityLimiter.acquire_on_behalf_of_nowait  s)    33H==="4#CDDDrQ   c                 H   K   | j                                          d {V  d S rK   )r  acquirerZ   s    rP   r  zCapacityLimiter.acquire  s2      o%%'''''''''''rQ   c                 J   K   | j                             |           d {V  d S rK   )r  acquire_on_behalf_ofr  s     rP   r  z$CapacityLimiter.acquire_on_behalf_of  s4      o228<<<<<<<<<<<rQ   c                 4    | j                                         S rK   )r  releaserZ   s    rP   r  zCapacityLimiter.release"  s    &&(((rQ   c                 6    | j                             |          S rK   )r  release_on_behalf_ofr  s     rP   r  z$CapacityLimiter.release_on_behalf_of%  s    33H===rQ   c                     | j                                         }t          |j        |j        |j        |j                  S )N)r  r  	borrowersr  )r  r  r)   r  r  r  r  )rV   origs     rP   r  zCapacityLimiter.statistics(  sC    ))++( 0*n,	
 
 
 	
rQ   r   ) ro   rp   rq   rM   rN   r   r   rT   r8   rW   r   r   rr   r
   rs   r   rt   ru   r  rv   r   r  r  r.   r  r  r  r  r  r  r)   r  rS   rQ   rP   r8   r8     sn       #F #f #9J # # # # FJB B BB$,T-A$BB	B B B B
2 2 2 2J4./J -(J '	J
 
$J J J J ,e , , , X, -% -D - - - - / / / / X/ 0% 0 0 0 X08 3 8 8 8 8EF E?R E E E E( ( ( (=6 =d = = = =) ) ) )>V > > > > >
5 
 
 
 
 
 
rQ   r8   _capacity_limiter_wrapperc                      	 t                                           S # t          $ rK t          t          j                                                  } t                               |            | cY S w xY w)Nr  )r  getLookupErrorr8   rT   	to_threadcurrent_default_thread_limiterr   )r   s    rP   r  r  5  sx    (,,...   !^BBDD
 
 
 	"%%g...s    AA0/A0c            	           e Zd Zdee         fdZdefdZdeee	                  dee	         dee
         dee         fdZd	S )
_SignalReceivercmc                     || _         d S rK   )_cm)rV   r  s     rP   rW   z_SignalReceiver.__init__F  s    rQ   rI   c                 4    | j                                         S rK   )r  rY   rZ   s    rP   rY   z_SignalReceiver.__enter__I  s    x!!###rQ   r[   r\   r]   c                 :    | j                             |||          S rK   )r  r_   r`   s       rP   r_   z_SignalReceiver.__exit__L  s     x  7F;;;rQ   N)ro   rp   rq   r   r/   rW   rY   r   r   rr   r
   rs   r_   rS   rQ   rP   r  r  E  s        >!,    $1 $ $ $ $<4./< -(< '	<
 
$< < < < < <rQ   r  signalsc                  <    t          j        |  }t          |          S rK   )rT   open_signal_receiverr  )r  r  s     rP   r  r  U  s    		"G	,B2rQ   c                      t          j                    } d }| j        r%| j        j        rt	          | j        j                  }t          t	          |           || j        | j                  S rK   )trio_lowlevelcurrent_taskparent_nurseryparent_taskidr+   r   coro)task	parent_ids     rP   get_current_taskr  _  s^    %''DI 8t2> 8t*677	BtHHiDI>>>rQ   c            
         t          j                    } t          t          |           d | j        | j                  g}| j        }|r}g }|D ]t}|j        D ]j}|                    t          t          |          t          |j	                  |j        |j                             |
                    |j                   ku|}|}|S rK   )r  current_root_taskr+   r  r   r  child_nurserieschild_tasksr]  r  extend)	root_task
task_infos	nurseriesnew_nurseriesnurseryr  s         rP   get_running_tasksr  i  s    /11I2i==$		OOPJ)I
 	",.  	; 	;G+ ; ;!!RXXr'*='>'>	49UU   $$T%9::::	; "	  	" rQ   c                  <    dd l } | j                                        S r  )trio.testingtestingwait_all_tasks_blocked)rT   s    rP   r  r  {  s"    <..000rQ   c                      e Zd ZdeddfdZddZdedee         f         de	d	e
ddfd
ZdeddfdZdej        fdZdedee         f         ded	edefdZddZdedeeef         f         d	eeef         dee         fdZdedeeeef         f         d	eeef         defdZdedeeeef         f         d	eeef         ddfdZdS )
TestRunneroptionsrI   Nc                     ddl m} ddlm}  |            | _         |            | _        d | _        d | _        || _        d S )Nr   )deque)Queue)	collectionsr  queuer  _call_queue_result_queue_stop_eventr   _options)rV   r  r  r  s       rP   rW   zTestRunner.__init__  s\    %%%%%%;@577-2UWW1504rQ   c                    K   t          j                    | _        t          j                    4 d {V | _        | j                                         d {V  d d d           d {V  d S # 1 d {V swxY w Y   d S rK   )rT   r9   r  r}   r   r   rZ   s    rP   
_trio_mainzTestRunner._trio_main  s     :<<$&& 	* 	* 	* 	* 	* 	* 	*$-"'')))))))))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   %A,,
A69A6r   .r   rH   c                    K   	  ||i | d {V }| j                             t          |                     d S # t          $ r2}| j                             t	          |                     Y d }~d S d }~ww xY wrK   )r  r]  r%   rr   r#   )rV   r   r   rH   r   r   s         rP   r   zTestRunner._call_func  s      	54000000000F %%eFmm44444  	2 	2 	2%%eCjj111111111	2s   ; 
A7'A22A7outcomec                     d | _         d S rK   )r   )rV   r	  s     rP   _main_task_finishedzTestRunner._main_task_finished  s    rQ   c                     | j         bt          j        j        | j        f| j        j        | j        d| j         | j         ( | j        	                                             | j         (| j         S )N)run_sync_soon_threadsafedone_callback)
r   rT   r?   start_guest_runr  r  putr  r  r  rZ   s    rP   _get_nurseryzTestRunner._get_nursery  s    = M))-)9)="6  -	   -'& $$&&((( -' }rQ   c                    |                                                      | j        |||           | j        s( | j                                                     | j        (| j                                        }|                                S rK   )r  r   r   r  r  r  popunwrap)rV   r   r   rH   r	  s        rP   _callzTestRunner._call  s     	&&tdFKKK$ 	%"D  ""$$$ $ 	% $((**~~rQ   c                     | j         rJ| j                                          | j        , | j                                                     | j        (d S d S d S rK   )r  r   r   r  r  rZ   s    rP   r#  zTestRunner.close  sg     	)  """-+& $$&&((( -+++	) 	)++rQ   fixture_funcc              #       K   dfdt          j                                          fd          }|V                                   d S )Ntask_statusr>   rI   c                 X  K    di }|                     d            d {V }|                     |                                            d {V  	 |                     d            d {V  |                                 d {V  t	          d          # t
          $ r Y d S w xY w)Nz$Async generator fixture did not stoprS   )asendstartedr   r   r   StopAsyncIteration)r  agenr   r  rH   teardown_events      rP   fixture_runnerz7TestRunner.run_asyncgen_fixture.<locals>.fixture_runner  s      <))&))D::d++++++++F''' %%'''''''''Kjj&&&&&&&&& kkmm#######"#IJJJ	 &   s   B 
B)(B)c                  R                                                                    S rK   )r  r   )r   rV   s   rP   <lambda>z1TestRunner.run_asyncgen_fixture.<locals>.<lambda>  s!    4+<+<+>+>+D+D^+T+T rQ   )r  r>   rI   N)rT   r9   r  r   )rV   r  rH   fixture_valuer   r  s   ``` @@rP   run_asyncgen_fixturezTestRunner.run_asyncgen_fixture  s      
	K 	K 	K 	K 	K 	K 	K 	K 

#T#T#T#T#TUUrQ   c                      | j         |fi |S rK   r  )rV   r  rH   s      rP   run_fixturezTestRunner.run_fixture  s    
 tz,11&111rQ   	test_funcc                 "     | j         |fi | d S rK   r&  )rV   r(  rH   s      rP   run_testzTestRunner.run_test  s$     	
9'''''''rQ   r   )ro   rp   rq   r   rW   r  r   r   rM   r   dictr   r  rT   Nurseryr  rD   r  r#  r   r   r   r   r$  r   r'  r*  rS   rQ   rP   r  r    s        #  $        * * * *
5S)F"3345<A5KO5	5 5 5 56 d    dl     S)H"556 ?E QW 	       ) ) ) )sN8S=$AAB S#X 
(		   .2sIc3.@$AAB2 S#X2 
	2 2 2 2(!#yc3'?"?@(JNsTWx.(	( ( ( ( ( (rQ   r  rK   )rI  r  r*  concurrent.futuresr   contextvarsr   dataclassesr   	functoolsr   ior   osr   r   r	   typesr
   typingr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r   trio.from_threadrT   r	  r#   r$   r%   trio.socketr&   r)  trio.to_threadr'    r)   r*   r+   r,   _core._compatr-   r.   r/   _core._eventloopr1   _core._exceptionsr2   r3   r4   r5   r6   BaseExceptionGroup_core._socketsr7   _core._synchronizationr8   BaseCapacityLimiterr9   	BaseEventr:   _core._tasksr;   BaseCancelScoper<   r=   trio_typingr>   r?   r  trio.lowlevelr@   rA   ImportErrorrB   trio.hazmatrC   r  AttributeErrorrD   r   rE   r   r   current_tokenRunVarr  r  CancelledErrorrJ  checkpoint_if_cancelledcancel_shielded_checkpointcurrent_effective_deadlinecurrent_timer   ry   rM   rs   r   r   r   r   r   r   r   r   r   r   r   
Instrumentr  r
  r   r  r  r  r,  rB  SocketListenerrd  rv  rz  r  r  r  AddressFamilyr  getaddrinfogetnameinfor  r  r  r  r  r  r  r  r  r  rS   rQ   rP   <module>rT     s      % % % % % % $ $ $ $ $ $ ! ! ! ! ! !                                                                                 6      ) ) ) ) ) ) ) ) ) ) 4 4 4 4 4 4 # # # # # # H H H H H H H H H H H H Q Q Q Q Q Q Q Q Q Q 2 2 2 2 2 2            E D D D D D 2 2 2 2 2 2 K K K K K K 7 7 7 7 7 7 2 2 2 2 2 2 9 9 9 9 9 9 / / / / / / / / '&&&&&&;......
 ;::::::::	  9 9 9,,,,,,888888888897%2 7 7 7666666667 7:W\377
 h0		 	
-' -' -' -' -'/ -' -' -'` ]%
-? !]E !<  	 	 	 	 	' 	 	 	)A )A )A )A )A )A )A )Ah .2	  
3=
!  d*+	
    &)i))*)36)) ) ) ),"Xc8m4 "S "X " " " "
 
 
 
 
S' 
 
 
F e$ $ $ $ $30 $ $ $( e$ $ $ $ $* $ $ $ e. . . . .ck . . .p .2'+#H H H3xc5j(9::;H H bgt#$	H
 #r#w$%H #r#w$%H 
sE8T)	*H 
'#s(#	$H H H H H H6    TX%8   
 28,2 2 &   
'#g, '4 ' ' ' 'EW E$ E E E E    wz*   >3 3 3 3 3#S%5 3 3 3BB4 B4 B4 B4 B4|S%9 B4 B4 B4J) ) ) ) )(#*< ) ) ) - - - - -)3+= - - -0 0 0 0 0 0#- 0 0 0,0 0 0 0 0).93;Q 0 0 0, EI% %
%%)1.)A%% % % %$)S )%5 ) ) ) )& &N+& ^,& 	&
 9(()& & & &* k%k%:V] :t : : : :8V] 8t 8 8 8 8- - - - -I - - -,?
 ?
 ?
 ?
 ?
) ?
 ?
 ?
D %+F+F$G$G 6 G G G     < < < < <3A6 < < < 7     ?( ? ? ? ?4>    $1	$ 1 1 1 1[( [( [( [( [( [( [( [( [( [(s$   -C< <DDD D,+D,