
    Qi                       U d dl m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
mZmZmZmZmZmZ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 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' d dl(Z)d dl*Z)d dl+m,Z,m-Z-m.Z. d dl*m/Z/m0Z0m1Z1m2Z2m3Z3 d dl4m5Z6 d dl7m8Z8 ddl9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@ ddlAmBZB ddlCmDZDmEZEmFZFmGZG ddlHmIZI ddlJmKZK ddlLmMZN ddlLmOZP ddlLmQZR ddlLmSZSmTZT ddlLmUZV ddlWmXZY ddl@mZZZm[Z[m\Z\ ddl]m^Z^m_Z_ ddl`maZa e rd dlbmcZc ej                  d k\  r	d d!lmeZemfZf nd d"lgmhZh d d!limeZemfZf  e%d#      Zj e%d$      Zk e%d%eleZ      Zm eed&      Zn e$d'      Zoe)j                  j                  Zq G d( d)eY      ZX G d* d+e@j                        Zr ed,-       G d. d/e@j                               Zt ed,-       G d0 d1e@j                               Zv ed,-       G d2 d3e@j                               Zw G d4 d5e)j                  j                        Zy eqd6      Zzd7e{d6<   d\d8Z| G d9 d:e"em         Z} G d; d<e}e@j                        Z~ G d= d>e~e@j                        Z G d? d@e}e@j                         Z G dA dBe}e@j                         Z G dC dDe}eZ   e@j                        Z G dE dFe}eZ   e@j                        Z G dG dHe}el   e@j
                        Z G dI dJe}el   e@j                        Z G dK dLeP      ZO G dM dNeR      ZQ G dO dPeV      ZU G dQ dReN      ZM eqdS      Zd7e{dS<    G dT dU      Z G dV dWe@j                        Z G dX dYe>      Z G dZ d[e^      ZeZy)]    )annotationsN)AsyncGeneratorAsyncIterator	AwaitableCallable
Collection	CoroutineIterableSequence)AbstractContextManager)	dataclass)IOBase)PathLike)Signals)AddressFamily
SocketKind)TracebackType)	IOTYPE_CHECKINGAnyGenericNoReturn	ParamSpecTypeVarcastoverload)ErrorOutcomeValue)current_root_taskcurrent_tasknotify_closingwait_readablewait_writable)
SocketType)run_sync   )CapacityLimiterStatisticsEventStatisticsLockStatisticsRunFinishedErrorTaskInfo
WouldBlockabc)claim_worker_thread)BrokenResourceErrorBusyResourceErrorClosedResourceErrorEndOfStream)convert_ipv6_sockaddr)create_memory_object_streamCapacityLimiterEventLock)ResourceGuardSemaphoreStatistics	SemaphoreCancelScope)IPSockAddrTypeUDPPacketTypeUNIXDatagramPacketType)AsyncBackendStrOrBytesPath)MemoryObjectSendStream)FileDescriptorLike)      )TypeVarTupleUnpack)BaseExceptionGroupTT_Retval
T_SockAddrPosArgsTPc                      e Zd Z	 d	 	 	 	 	 ddZdddZddZ	 	 	 	 	 	 	 	 ddZdddZedd       Z	e	j                  dd       Z	edd	       Zedd
       Zedd       Zej                  dd       Zy)rA   Nc                ,    t         j                  |       S Nobject__new__)clsoriginalkwargss      @/app/.venv/lib/python3.12/site-packages/anyio/_backends/_trio.pyrX   zCancelScope.__new__r   s     ~~c""    c                @    |xs t        j                  di || _        y N )triorA   _CancelScope__original)selfrZ   r[   s      r\   __init__zCancelScope.__init__w   s    "@d&6&6&@&@r]   c                :    | j                   j                          | S rU   )rb   	__enter__rc   s    r\   rf   zCancelScope.__enter__z   s    !!#r]   c                <    | j                   j                  |||      S rU   )rb   __exit__rc   exc_typeexc_valexc_tbs       r\   ri   zCancelScope.__exit__~   s     '''6BBr]   c                :    | j                   j                  |       y rU   )rb   cancel)rc   reasons     r\   ro   zCancelScope.cancel   s    v&r]   c                .    | j                   j                  S rU   rb   deadlinerg   s    r\   rs   zCancelScope.deadline   s    '''r]   c                &    || j                   _        y rU   rr   rc   values     r\   rs   zCancelScope.deadline   s    #( r]   c                .    | j                   j                  S rU   )rb   cancel_calledrg   s    r\   rx   zCancelScope.cancel_called   s    ,,,r]   c                .    | j                   j                  S rU   )rb   cancelled_caughtrg   s    r\   rz   zCancelScope.cancelled_caught       ///r]   c                .    | j                   j                  S rU   rb   shieldrg   s    r\   r~   zCancelScope.shield   s    %%%r]   c                &    || j                   _        y rU   r}   ru   s     r\   r~   zCancelScope.shield   s    !&r]   rU   )rZ   trio.CancelScope | Noner[   rW   returnrA   )rZ   r   r[   r   r   None)r   rA   rk   type[BaseException] | Nonerl   BaseException | Nonerm   TracebackType | Noner   bool)rp   z
str | Noner   r   r   floatrv   r   r   r   r   r   )rv   r   r   r   )__name__
__module____qualname__rX   rd   rf   ri   ro   propertyrs   setterrx   rz   r~   r`   r]   r\   rA   rA   q   s    15#.#AG#	#
AC,C &C %	C
 
C' ( ( __) ) - - 0 0 & & ]]' 'r]   rA   c                  l    e Zd ZddZd	dZ	 	 	 	 	 	 	 	 d
dZdd	 	 	 	 	 	 	 ddZdd	 	 	 	 	 	 	 ddZy)	TaskGroupc                V    d| _         t        j                  d      | _        d | _        y )NFT)strict_exception_groups)_activera   open_nursery_nursery_managercancel_scoperg   s    r\   rd   zTaskGroup.__init__   s$     $ 1 1$ O r]   c                   K   d| _         | j                  j                          d {   | _        t	        | j                  j
                        | _        | S 7 /w)NT)r   r   
__aenter___nurseryrA   r   rg   s    r\   r   zTaskGroup.__aenter__   sH     "33>>@@'(B(BC As   %AA0Ac                .  K   	 | j                   j                  |||       d {   ~~d| _        S 7 # t        $ rG}|j	                  t
        j                        d   st
        j                  j                         | d }~ww xY w# ~~d| _        w xY ww)NF   )r   	__aexit__r   rM   splitra   	Cancelled_create)rc   rk   rl   rm   excs        r\   r   zTaskGroup.__aexit__   s     
	!..887FSS  DL T! 	99T^^,Q/nn,,.C7		  DLs=   B 4 24 
B4 	BAA??BB BBN)namec               r    | j                   st        d       | j                  j                  |g|d|i y Nz;This task group is not active; no new tasks can be started.r   )r   RuntimeErrorr   
start_soonrc   funcr   argss       r\   r   zTaskGroup.start_soon   s;     ||M  	!  8848r]   c                  K   | j                   st        d       | j                  j                  |g|d|i d {   S 7 wr   )r   r   r   startr   s       r\   r   zTaskGroup.start   sH      ||M  )T]]((@@4@@@@s   ;AAAr   r   )r   r   r   )r   z,Callable[[Unpack[PosArgsT]], Awaitable[Any]]r   zUnpack[PosArgsT]r   rW   r   r   )r   zCallable[..., Awaitable[Any]]r   rW   r   rW   r   r   )r   r   r   rd   r   r   r   r   r`   r]   r\   r   r      s    !
!,! &! %	!
 
!, 	9:9  9 	9
 
9 RVA1A:@AHNA	Ar]   r   F)eqc                  *    e Zd ZU ded<   dddZddZy)	ReceiveStreamWrapperztrio.abc.ReceiveStream_streamNc                "  K   	 | j                   j                  |       d {   }|rt        |      S t        7 # t        j                  $ r}t        |j                  d }~wt        j
                  $ r}t
        |j                  d }~ww xY wwrU   )r   receive_somera   r2   	__cause__r0   bytesr3   rc   	max_bytesdatar   s       r\   receivezReceiveStreamWrapper.receive   sx     	9229==D ; >'' 	9%3==8'' 	9%3==8	9s=   B< :< B< BA  B6BBBc                T   K   | j                   j                          d {    y 7 wrU   r   acloserg   s    r\   r   zReceiveStreamWrapper.aclose        ll!!###   (&(rU   )r   
int | Noner   r   r   )r   r   r   __annotations__r   r   r`   r]   r\   r   r      s    ##$r]   r   c                  (    e Zd ZU ded<   ddZddZy)SendStreamWrapperztrio.abc.SendStreamr   c                   K   	 | j                   j                  |       d {    y 7 # t        j                  $ r}t        |j                  d }~wt        j
                  $ r}t
        |j                  d }~ww xY wwrU   )r   send_allra   r2   r   r0   rc   itemr   s      r\   sendzSendStreamWrapper.send   s_     	9,,''---'' 	9%3==8'' 	9%3==8	9s<   A=* (* A=* A:AA:$A55A::A=c                T   K   | j                   j                          d {    y 7 wrU   r   rg   s    r\   r   zSendStreamWrapper.aclose  r   r   Nr   r   r   r   r   )r   r   r   r   r   r   r`   r]   r\   r   r      s      9$r]   r   c                      e Zd ZU ded<   ded<   ded<   ded<   ddZdd	Zdd
ZddZddZe	dd       Z
e	dd       Ze	dd       Ze	dd       Ze	dd       Zy)Processztrio.Process_processabc.ByteSendStream | None_stdinabc.ByteReceiveStream | None_stdout_stderrc                T  K   t        d      5  | j                  r"| j                  j                          d {    | j                  r"| j                  j                          d {    | j                  r"| j                  j                          d {    d d d        	 | j                          d {    y 7 7 V7 *# 1 sw Y   )xY w7 # t        $ rL | j                          t        d      5  | j                          d {  7   d d d         # 1 sw Y    xY ww xY wwNT)r~   )rA   r   r   r   r   waitBaseExceptionkillrg   s    r\   r   zProcess.aclose  s     %{{kk((***||ll))+++||ll))+++ &	))+ +++ &%  	IIKD)iik!! * *		s   D(*CB<-C'B>(-CC CD(#C 6C7C ;D(<C>C CCD(C %D%5D	D
D	D%D!	D%%D(c                R   K   | j                   j                          d {   S 7 wrU   )r   r   rg   s    r\   r   zProcess.wait  s     ]]''))))   '%'c                8    | j                   j                          y rU   )r   	terminaterg   s    r\   r   zProcess.terminate"  s    !r]   c                8    | j                   j                          y rU   )r   r   rg   s    r\   r   zProcess.kill%  s    r]   c                :    | j                   j                  |       y rU   )r   send_signal)rc   signals     r\   r   zProcess.send_signal(  s    !!&)r]   c                .    | j                   j                  S rU   )r   pidrg   s    r\   r   zProcess.pid+  s    }}   r]   c                .    | j                   j                  S rU   )r   
returncoderg   s    r\   r   zProcess.returncode/  s    }}'''r]   c                    | j                   S rU   )r   rg   s    r\   stdinzProcess.stdin3  s    {{r]   c                    | j                   S rU   )r   rg   s    r\   stdoutzProcess.stdout7      ||r]   c                    | j                   S rU   )r   rg   s    r\   stderrzProcess.stderr;  r   r]   Nr   r   int)r   r   r   r   r   r   )r   r   )r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r`   r]   r\   r   r     s    %%))))"*"* ! ! ( (      r]   r   c                        e Zd Zd fdZ xZS )_ProcessPoolShutdownInstrumentc                "    t         |           y rU   )super	after_run)rc   	__class__s    r\   r   z(_ProcessPoolShutdownInstrument.after_runA  s    r]   r   )r   r   r   r   __classcell__r   s   @r\   r   r   @  s     r]   r   &current_default_worker_process_limiterztrio.lowlevel.RunVarc                h  K   	 t        j                  t        j                         d {    y 7 # t         j                  $ rj | D ]  }|j
                  |j                          ! t        d      5  | D ]  }|j                          d {  7    	 d d d        Y y # 1 sw Y   Y y xY ww xY wwr   )	ra   sleepmathinfr   r   r   rA   r   )workersprocesss     r\   _shutdown_process_poolr   J  s     	'jj""">> 'G!!)  %"nn&&& # &%%'sa   B2&2 02 B22 $B/B/5B!B
B!B/B2!B+	&B/)B2+B//B2c                  >    e Zd ZddZddZed	d       ZddZd
dZy)_TrioSocketMixinc                     || _         d| _        y NF)_trio_socket_closed)rc   trio_sockets     r\   rd   z_TrioSocketMixin.__init__]  s    'r]   c                n    | j                   rt        | j                  j                         dk  rt        y Nr   )r  r2   r  filenor0   rg   s    r\   _check_closedz_TrioSocketMixin._check_closeda  s1    <<%%##%)%% *r]   c                .    | j                   j                  S rU   )r  _sockrg   s    r\   _raw_socketz_TrioSocketMixin._raw_socketg  s      &&&r]   c                   K   | j                   j                         dk\  r"d| _        | j                   j                          y y w)Nr   T)r  r  r  closerg   s    r\   r   z_TrioSocketMixin.aclosek  s;     ##%*DL##% +s   AAc                    t        |t        j                        rt        || j                  j	                         dk  r| j
                  rt        d t        |t              rt        ||r  )
isinstancera   r2   r  r  r  OSErrorr0   rc   r   s     r\   _convert_socket_errorz&_TrioSocketMixin._convert_socket_errorp  sV    c4334%3.%%'!+%4/W%%3.Ir]   Nr  TrioSocketTyper   r   r   )r   socket.socket)r   r   r   r   )	r   r   r   rd   r  r   r
  r   r  r`   r]   r\   r   r   \  s*    & ' '&
r]   r   c                  :     e Zd Zd fdZdddZddZd	dZ xZS )
SocketStreamc                d    t         |   |       t        d      | _        t        d      | _        y Nreading from
writing tor   rd   r<   _receive_guard_send_guardrc   r  r   s     r\   rd   zSocketStream.__init__|  *    %+N;(6r]   c                   K   | j                   5  	 | j                  j                  |       d {   }r|cd d d        S t
        7 # t        $ r}| j	                  |       Y d }~4d }~ww xY w# 1 sw Y   y xY wwrU   )r  r  recvr   r  r3   r   s       r\   r   zSocketStream.receive  ss       0!..33I>>  !  "! ?  0**3//0 ! sY   A<A0A	AA	A0
A<A0A			A-A(#A0(A--A00A95A<c                  K   | j                   5  t        |      }|r,	 | j                  j                  |       d {   }|d  }|r,d d d        y 7 # t        $ r}| j                  |       Y d }~2d }~ww xY w# 1 sw Y   y xY wwrU   )r  
memoryviewr  r   r   r  )rc   r   view
bytes_sentr   s        r\   r   zSocketStream.send  s     d#D4'+'8'8'='=d'C!CJ JK(   "D$ 4..s334 sU   BA;AAAA;		BA	A8A3.A;3A88A;;B Bc                ^   K   | j                   j                  t        j                         y wrU   )r  shutdownsocketSHUT_WRrg   s    r\   send_eofzSocketStream.send_eof  s     ""6>>2   +-r  )   )r   r   r   r   r   r   )r   r   r   rd   r   r   r*  r   r   s   @r\   r  r  {  s    7

"	)3r]   r  c                      e Zd ZddZddZy)UNIXSocketStreamc           	     X  K   t        |t              r|dk  rt        d      t        |t              r|dk  rt        d      t        j                  d      }t        j
                  j                          d {    | j                  5  	 	 | j                  j                  |t        j                  ||j                  z               d {   \  }}}}|s|st        	 d d d        D ]v  \  }	}
}|	t        j                   k7  s|
t        j"                  k7  rt%        dd|	 d|
       |j'                  |d t)        |      t)        |      |j                  z  z
          x t+        |      fS 7 7 # t        $ r}| j                  |       Y d }~nd }~ww xY w# 1 sw Y   xY ww)	Nr   z%msglen must be a non-negative integerr   z!maxfds must be a positive integeriz.Received unexpected ancillary data; message = z, cmsg_level = z, cmsg_type = )r  r   
ValueErrorarrayra   lowlevel
checkpointr  r  recvmsgr(  CMSG_LENitemsizer3   r   r  
SOL_SOCKET
SCM_RIGHTSr   	frombyteslenlist)rc   msglenmaxfdsfdsmessageancdataflagsaddrr   
cmsg_level	cmsg_type	cmsg_datas               r\   receive_fdszUNIXSocketStream.receive_fds  s    &#&&1*DEE&#&&1*@AAkk#mm&&(((  
:>:K:K:S:S0E F; 51GWeT #7)) ! 18,J	9V...)v?P?P2P"DWK P$$.<~i[J 
 MM)$Vc)nI8U&VWX 18 S	!!1 	)5 % 4..s334  ! sg   A7F*9E1:F*
F?E5E3	E5
F!BF*3E55	F>FFFFF'#F*c                  K   |st        d      |st        d      g }|D ]T  }t        |t              r|j                  |       %t        |t              s6|j                  |j                                V t        j                  d|      }t        j                  j                          d {    | j                  5  	 	 | j                  j                  |gt        j                  t        j                  |fg       d {    	 d d d        y 7 b7 # t         $ r}| j#                  |       Y d }~nd }~ww xY w|# 1 sw Y   y xY ww)Nzmessage must not be emptyzfds must not be emptyr0  )r1  r  r   appendr   r  r2  ra   r3  r4  r  r  sendmsgr(  r8  r9  r   r  )rc   r@  r?  filenosfdfdarrayr   s          r\   send_fdszUNIXSocketStream.send_fds  s*    899455B"c"r"B'ryy{+	  ++c7+mm&&(((4++33 	 !' 1 1 & 1 1 '	 	 	   	)	 % 4..s334  sh   AE
AE
/D0E
 D>A DDD	
E
D	D:D50D>5D::D>>EE
N)r=  r   r>  r   r   ztuple[bytes, list[int]])r@  r   r?  zCollection[int | IOBase]r   r   )r   r   r   rG  rN  r`   r]   r\   r.  r.    s    "B4r]   r.  c                  (     e Zd Zd fdZddZ xZS )TCPSocketListenerc                ~    t         |   t        j                  j	                  |             t        d      | _        y Nzaccepting connections fromr   rd   ra   r(  from_stdlib_socketr<   _accept_guardrc   
raw_socketr   s     r\   rd   zTCPSocketListener.__init__  -    77
CD*+GHr]   c                ^  K   | j                   5  	 | j                  j                          d {   \  }}d d d        j                  t        j                  t        j                  d       t        |      S 7 I# t        $ r}| j	                  |       Y d }~cd }~ww xY w# 1 sw Y   lxY wwNr   )
rU  r  acceptr   r  
setsockoptr(  IPPROTO_TCPTCP_NODELAYr  rc   r  _addrr   s       r\   r[  zTCPSocketListener.accept  s     0+/+<+<+C+C+E%E"U   	v1163E3EqIK(( &F  0**3//0  sO   B-B!A:A8A:AB-8A::	BBB!BB!!B*&B-rW  r  )r   r  r   r   r   rd   r[  r   r   s   @r\   rP  rP    s    I)r]   rP  c                  (     e Zd Zd fdZddZ xZS )UNIXSocketListenerc                ~    t         |   t        j                  j	                  |             t        d      | _        y rR  rS  rV  s     r\   rd   zUNIXSocketListener.__init__  rX  r]   c                  K   | j                   5  	 | j                  j                          d {   \  }}d d d        t              S 7 # t        $ r}| j	                  |       Y d }~4d }~ww xY w# 1 sw Y   t              S xY wwrU   )rU  r  r[  r   r  r.  r_  s       r\   r[  zUNIXSocketListener.accept  s{     0+/+<+<+C+C+E%E"U    ,,	 &F  0**3//0    ,,sN   BA2AA	AB	A	A/A*%A2*A//A22B7Bra  )r   r.  rb  r   s   @r\   rd  rd    s    I-r]   rd  c                  0     e Zd Zd fdZddZddZ xZS )	UDPSocketc                d    t         |   |       t        d      | _        t        d      | _        y r  r  r  s     r\   rd   zUDPSocket.__init__  r  r]   c                  K   | j                   5  	 | j                  j                  d       d {   \  }}|t        |      fcd d d        S 7 # t        $ r}| j                  |       Y d }~nd }~ww xY w	 d d d        y # 1 sw Y   y xY wwNr,  )r  r  recvfromr4   r   r  rc   r   rC  r   s       r\   r   zUDPSocket.receive  sy       0#'#4#4#=#=e#DD
d2488 ! D  0**3//0/ !  sU   BB AAA
BA	A3A.)B .A33B 7	B B	Bc                   K   | j                   5  	  | j                  j                  |  d {    d d d        y 7 # t        $ r}| j	                  |       Y d }~*d }~ww xY w# 1 sw Y   y xY wwrU   r  r  sendtor   r  r   s      r\   r   zUDPSocket.send  d     0.d''..555 5  0**3//0 H   A0A$=;=	A0=	A!AA$A!!A$$A-)A0r  )r   ztuple[bytes, IPSockAddrType])r   rC   r   r   r   r   r   rd   r   r   r   r   s   @r\   rh  rh        7
00r]   rh  c                  0     e Zd Zd fdZddZddZ xZS )ConnectedUDPSocketc                d    t         |   |       t        d      | _        t        d      | _        y r  r  r  s     r\   rd   zConnectedUDPSocket.__init__  r  r]   c                   K   | j                   5  	 | j                  j                  d       d {   cd d d        S 7 # t        $ r}| j	                  |       Y d }~nd }~ww xY w	 d d d        y # 1 sw Y   y xY wwrk  r  r  r!  r   r  r  s     r\   r   zConnectedUDPSocket.receive  e       0!..33E:: ! :  0**3//0/	 !  N   A<A0?=?
A<?	A#AA0A##A0'	A<0A95A<c                   K   | j                   5  	 | j                  j                  |       d {    d d d        y 7 # t        $ r}| j	                  |       Y d }~*d }~ww xY w# 1 sw Y   y xY wwrU   r  r  r   r   r  r   s      r\   r   zConnectedUDPSocket.send!  b     0'',,T222 2  0**3//0 H   A2A&?=?	A2?	A#AA&A##A&&A/+A2r  r   r   r   rs  r   s   @r\   rv  rv    s    7
00r]   rv  c                  0     e Zd Zd fdZddZddZ xZS )UNIXDatagramSocketc                d    t         |   |       t        d      | _        t        d      | _        y r  r  r  s     r\   rd   zUNIXDatagramSocket.__init__*  r  r]   c                
  K   | j                   5  	 | j                  j                  d       d {   \  }}||fcd d d        S 7 # t        $ r}| j	                  |       Y d }~nd }~ww xY w	 d d d        y # 1 sw Y   y xY wwrk  )r  r  rl  r   r  rm  s       r\   r   zUNIXDatagramSocket.receive/  sr       0#'#4#4#=#=e#DD
dTz ! D  0**3//0/ !  sT   BA7AA
A
BA	A*A% A7%A**A7.	B7B <Bc                   K   | j                   5  	  | j                  j                  |  d {    d d d        y 7 # t        $ r}| j	                  |       Y d }~*d }~ww xY w# 1 sw Y   y xY wwrU   ro  r   s      r\   r   zUNIXDatagramSocket.send7  rq  rr  r  )r   rD   )r   rD   r   r   rs  r   s   @r\   r  r  )  rt  r]   r  c                  0     e Zd Zd fdZddZddZ xZS )ConnectedUNIXDatagramSocketc                d    t         |   |       t        d      | _        t        d      | _        y r  r  r  s     r\   rd   z$ConnectedUNIXDatagramSocket.__init__B  r  r]   c                   K   | j                   5  	 | j                  j                  d       d {   cd d d        S 7 # t        $ r}| j	                  |       Y d }~nd }~ww xY w	 d d d        y # 1 sw Y   y xY wwrk  ry  r  s     r\   r   z#ConnectedUNIXDatagramSocket.receiveG  rz  r{  c                   K   | j                   5  	 | j                  j                  |       d {    d d d        y 7 # t        $ r}| j	                  |       Y d }~*d }~ww xY w# 1 sw Y   y xY wwrU   r}  r   s      r\   r   z ConnectedUNIXDatagramSocket.sendN  r~  r  r  r  r   rs  r   s   @r\   r  r  ?  s    7
00r]   r  c                  <    e Zd ZddZd	dZd
dZd	dZddZd	dZy)r9   c                ,    t         j                  |       S rU   rV   rY   s    r\   rX   zEvent.__new__\      ~~c""r]   c                6    t        j                         | _        y rU   )ra   r9   _Event__originalrg   s    r\   rd   zEvent.__init___  s    **,r]   c                6    | j                   j                         S rU   )r  is_setrg   s    r\   r  zEvent.is_setb      %%''r]   c                R   K   | j                   j                          d {   S 7 wrU   )r  r   rg   s    r\   r   z
Event.waite  s     __))++++r   c                b    | j                   j                         }t        |j                        S )N)tasks_waiting)r  
statisticsr)   r  rc   orig_statisticss     r\   r  zEvent.statisticsh  s%    //446_-J-JKKr]   c                8    | j                   j                          y rU   )r  setrg   s    r\   r  z	Event.setl  s    r]   N)r   r9   r   r   )r   r)   )	r   r   r   rX   rd   r  r   r  r  r`   r]   r\   r9   r9   [  s!    #'(,Lr]   r9   c                  b    e Zd ZddddZddddZedd       ZddZddZddZ	dd	Z
dd
Zy)r;   Ffast_acquirec               ,    t         j                  |       S rU   rV   rY   r  s     r\   rX   zLock.__new__q  r  r]   c               D    || _         t        j                         | _        y rU   )_fast_acquirera   r;   _Lock__original)rc   r  s     r\   rd   zLock.__init__t  s    )))+r]   c                2    | j                   dk(  rd| _         y y )N)z*attempt to re-acquire an already held Lock)z)Attempted to acquire an already held Lock)r   )r   s    r\   _convert_runtime_error_msgzLock._convert_runtime_error_msgx  s    88FFECH Gr]   c                  K   | j                   s$	 | j                  j                          d {    y t
        j                  j                          d {    	 | j                  j                          y 7 G# t        $ r}| j	                  |        d }~ww xY w7 E# t
        j                  $ r0 | j                  j                  j                          d {  7   Y y t        $ r}| j	                  |        d }~ww xY wwrU   )r  r  acquirer   r  ra   r3  checkpoint_if_cancelledacquire_nowaitr-   _lotparkr  s     r\   r  zLock.acquire}  s     !!oo--///
  mm33555	OO**, 0 //4 	6  	.//&&++--- 	++C0	s   D A7 A5A7 "D BD B 4D 5A7 7	B BBD :C=CC=D C=&C88C==D c                    	 | j                   j                          y # t        j                  $ r t        d t        $ r}| j                  |        d }~ww xY wrU   )r  r  ra   r-   r   r  r  s     r\   r  zLock.acquire_nowait  sL    	OO**, 	'$& 	++C0	s    "AAAc                6    | j                   j                         S rU   )r  lockedrg   s    r\   r  zLock.locked  r  r]   c                8    | j                   j                          y rU   )r  releaserg   s    r\   r  zLock.release      !r]   c                    | j                   j                         }|j                  rt        |j                        nd }t	        |j
                  ||j                        S rU   )r  r  ownerTrioTaskInfor*   r  r  )rc   r  r  s      r\   r  zLock.statistics  sO    //4467F7L7L_223RV""E?+H+H
 	
r]   Nr  r   r   r;   )r  r   r   r   )r   r   r   r   r   r   )r   r*   )r   r   r   rX   rd   staticmethodr  r  r  r  r  r  r`   r]   r\   r;   r;   p  sC    -2 # 05 & F F(("
r]   r;   c                       e Zd Zddd	 	 	 	 	 	 	 ddZddd	 	 	 	 	 	 	 d fdZddZddZedd       Zedd	       Z	dd
Z
ddZ xZS )r?   NF	max_valuer  c               ,    t         j                  |       S rU   rV   rY   initial_valuer  r  s       r\   rX   zSemaphore.__new__  s     ~~c""r]   c               b    t         |   |||       t        j                  ||      | _        y )Nr  )r  )r   rd   ra   r?   _Semaphore__original)rc   r  r  r  r   s       r\   rd   zSemaphore.__init__  s+     	),W..)Lr]   c                  K   | j                   s#| j                  j                          d {    y t        j                  j                          d {    	 | j                  j                          y 7 G7 "# t        j                  $ r0 | j                  j                  j                          d {  7   Y y w xY wwrU   )
r  r  r  ra   r3  r  r  r-   r  r  rg   s    r\   r  zSemaphore.acquire  s     !!//))+++ mm33555	.OO**, , 	6  	.//&&++---	.sQ   *B>A4&B>A6B>A8 3B>6B>8:B;2B53B;8B>:B;;B>c                v    	 | j                   j                          y # t        j                  $ r t        d w xY wrU   )r  r  ra   r-   rg   s    r\   r  zSemaphore.acquire_nowait  s2    	'OO**, 	'$&	's    8c                .    | j                   j                  S rU   )r  r  rg   s    r\   r  zSemaphore.max_value  s    (((r]   c                .    | j                   j                  S rU   )r  rv   rg   s    r\   rv   zSemaphore.value  s    $$$r]   c                8    | j                   j                          y rU   )r  r  rg   s    r\   r  zSemaphore.release  r  r]   c                `    | j                   j                         }t        |j                        S rU   )r  r  r=   r  r  s     r\   r  zSemaphore.statistics  s%    //446"?#@#@AAr]   )r  r   r  r   r  r   r   r?   )r  r   r  r   r  r   r   r   r   r   r   )r   r=   )r   r   r   rX   rd   r  r  r   r  rv   r  r  r   r   s   @r\   r?   r?     s    
 !%"## 	#
 # 
# !%"MM 	M
 M 
M
.' ) ) % %"Br]   r?   c                      e Zd Z	 ddd	 	 	 	 	 ddZ	 ddd	 	 	 	 	 ddZddZ	 	 	 	 	 	 	 	 ddZedd       Zej                  dd       Zedd	       Z
edd
       ZddZddZddZddZddZddZddZy)r7   NrZ   c               ,    t         j                  |       S rU   rV   )rY   total_tokensrZ   s      r\   rX   zCapacityLimiter.__new__  s     ~~c""r]   c               T    ||| _         y |J t        j                  |      | _         y rU   )_CapacityLimiter__originalra   r7   )rc   r  rZ   s      r\   rd   zCapacityLimiter.__init__  s/     &DO+++"22<@DOr]   c                R   K   | j                   j                          d {   S 7 wrU   )r  r   rg   s    r\   r   zCapacityLimiter.__aenter__  s     __//1111r   c                Z   K   | j                   j                  |||       d {    y 7 wrU   )r  r   rj   s       r\   r   zCapacityLimiter.__aexit__  s$      oo'''6BBBs   !+)+c                .    | j                   j                  S rU   r  r  rg   s    r\   r  zCapacityLimiter.total_tokens  s    +++r]   c                &    || j                   _        y rU   r  ru   s     r\   r  zCapacityLimiter.total_tokens  s    ',$r]   c                .    | j                   j                  S rU   )r  borrowed_tokensrg   s    r\   r  zCapacityLimiter.borrowed_tokens  s    ...r]   c                .    | j                   j                  S rU   )r  available_tokensrg   s    r\   r  z CapacityLimiter.available_tokens
  r{   r]   c                8    | j                   j                          y rU   )r  r  rg   s    r\   r  zCapacityLimiter.acquire_nowait  s    &&(r]   c                :    | j                   j                  |       y rU   )r  acquire_on_behalf_of_nowaitrc   borrowers     r\   r  z+CapacityLimiter.acquire_on_behalf_of_nowait  s    33H=r]   c                T   K   | j                   j                          d {    y 7 wrU   )r  r  rg   s    r\   r  zCapacityLimiter.acquire  s     oo%%'''r   c                V   K   | j                   j                  |       d {    y 7 wrU   )r  acquire_on_behalf_ofr  s     r\   r  z$CapacityLimiter.acquire_on_behalf_of  s     oo228<<<s   )')c                6    | j                   j                         S rU   )r  r  rg   s    r\   r  zCapacityLimiter.release  s    &&((r]   c                8    | j                   j                  |      S rU   )r  release_on_behalf_ofr  s     r\   r  z$CapacityLimiter.release_on_behalf_of  s    33H==r]   c                    | j                   j                         }t        |j                  |j                  t        |j                        |j                        S )N)r  r  	borrowersr  )r  r  r(   r  r  tupler  r  )rc   origs     r\   r  zCapacityLimiter.statistics   sH    ))+( 00**DNN+,,	
 	
r]   rU   )r  float | NonerZ   trio.CapacityLimiter | Noner   r7   )r  r  rZ   r  r   r   r   )rk   r   rl   r   rm   r   r   r   r   r   r   )r  rW   r   r   )r   r(   )r   r   r   rX   rd   r   r   r   r  r   r  r  r  r  r  r  r  r  r  r`   r]   r\   r7   r7     s    &*# 15	#"# .	#
 
# &*
A 15	
A"
A .	
A
 

A2C,C &C %	C
 
C , , - - / / 0 0)>(=)>
r]   r7   _capacity_limiter_wrapperc                  P    e Zd ZU ded<   d	dZd
dZ	 	 	 	 	 	 	 	 ddZd
dZddZy)_SignalReceiverzAsyncIterator[int]	_iteratorc                    || _         y rU   )_signals)rc   signalss     r\   rd   z_SignalReceiver.__init__5  s	    r]   c                    t        j                  | j                   | _        | j                  j	                         | _        | S rU   )ra   open_signal_receiverr  _cmrf   r  rg   s    r\   rf   z_SignalReceiver.__enter__8  s1    ,,dmm<++-r]   c                <    | j                   j                  |||      S rU   )r  ri   rj   s       r\   ri   z_SignalReceiver.__exit__=  s     xx  7F;;r]   c                    | S rU   r`   rg   s    r\   	__aiter__z_SignalReceiver.__aiter__E  s    r]   c                h   K   | j                   j                          d {   }t        |      S 7 wrU   )r  	__anext__r   )rc   signums     r\   r  z_SignalReceiver.__anext__H  s*     ~~//11v 2s   202N)r  ztuple[Signals, ...])r   r  )rk   r   rl   r   rm   r   r   zbool | None)r   r   )	r   r   r   r   rd   rf   ri   r  r  r`   r]   r\   r  r  2  sG    !! 
<,< &< %	<
 
<r]   r  c                      e Zd Zd
dZ	 	 	 	 	 	 	 	 ddZddZddZ	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 ddZ	 	 	 	 	 	 ddZ		 	 	 	 	 	 ddZ
y	)
TestRunnerc                D    ddl m}  |       | _        d | _        || _        y )Nr   )Queue)queuer  _call_queue_send_stream_options)rc   optionsr  s      r\   rd   zTestRunner.__init__S  s    8=;?r]   c                    | j                   rT| j                   j                          | j                   - | j                  j                                 | j                   ,y y y rU   )r  r  r  getrj   s       r\   ri   zTestRunner.__exit__Z  sU     ##%##/&  $$&( ##/ r]   c                4  K   t        d      \  | _        }|5  |2 3 d {   \  }}	 | d {   }|j                  t        |             27 -7 !# t        $ r$}|j                  t        |             Y d }~^d }~ww xY w6 	 d d d        y # 1 sw Y   y xY wwrZ  )r5   r  rI  r   r   r   )rc   receive_streamcorooutcome_holderretvalr   s         r\   _run_tests_and_fixturesz"TestRunner._run_tests_and_fixturese  s     ,G,J)>.< 9*dN9#'ZF #))%-89'$ 6"))%*556 /= ^^sn   BBBABBAAABBA	A>A94B9A>>B	BBBc                    d | _         y rU   )r  )rc   outcomes     r\   _main_task_finishedzTestRunner._main_task_finishedp  s
     r]   c                  | j                   t        j                  j                  | j                  f| j
                  j                  | j                  d| j                   | j                   , | j
                  j                                 | j                   ,g }| j                   j                   ||i ||f       |s" | j
                  j                                 |s"|d   j                         S )N)run_sync_soon_threadsafedone_callbackr   )r  ra   r3  start_guest_runr  r  putr  r  r  send_nowaitunwrap)rc   r   r   r[   r  s        r\   _call_in_runner_taskzTestRunner._call_in_runner_tasks  s     $MM)),,)-)9)9)=)="66 --	 ##+&  $$&( ##+ )+%%tT'<V'<n&MN "D  "$ ! a ''))r]   c              #     K    |di |}| j                  |j                  d       }| 	 | j                  |j                  d        | j                  |j                         t        d      # t        $ r Y y w xY ww)Nz$Async generator fixture did not stopr`   )r  asendr   r   StopAsyncIteration)rc   fixture_funcr[   asyncgenfixturevalues        r\   run_asyncgen_fixturezTestRunner.run_asyncgen_fixture  s~     
  )&)!%!:!:8>>4!P	G%%hnnd; %%hoo6EFF	 " 		s(   )A=A. &A=.	A:7A=9A::A=c                (     | j                   |fi |S rU   r  )rc   r  r[   s      r\   run_fixturezTestRunner.run_fixture  s    
 )t((@@@r]   c                *     | j                   |fi | y rU   r  )rc   	test_funcr[   s      r\   run_testzTestRunner.run_test  s     	"!!)6v6r]   N)r  r   r   r   )rk   r   rl   r   rm   ztypes.TracebackType | Noner   r   r   )r  rW   r   r   )r   z Callable[P, Awaitable[T_Retval]]r   zP.argsr[   zP.kwargsr   rO   )r  z,Callable[..., AsyncGenerator[T_Retval, Any]]r[   dict[str, Any]r   zIterable[T_Retval])r  z,Callable[..., Coroutine[Any, Any, T_Retval]]r[   r  r   rO   )r  z'Callable[..., Coroutine[Any, Any, Any]]r[   r  r   r   )r   r   r   rd   ri   r  r  r  r  r  r  r`   r]   r\   r  r  R  s     	),	) &	) +		)
 
	)	9!*.* 	*
 * 
*0GBG G 
	G$ABA A 
	A7@7JX7	7r]   r  c                  (     e Zd Zd fdZddZ xZS )r  c                   d }|j                   r5|j                   j                  rt        |j                   j                        }t        |   t        |      ||j
                  |j                         t        j                  |      | _	        y rU   )
parent_nurseryparent_taskidr   rd   r   r  weakrefproxy_task)rc   task	parent_idr   s      r\   rd   zTrioTaskInfo.__init__  sd    	4#6#6#B#B4..::;ID9diiC]]4(
r]   c                b    	 | j                   j                  j                  S # t        $ r Y yw xY wr   )r&  _cancel_statuseffectively_cancelledReferenceErrorrg   s    r\   has_pending_cancellationz%TrioTaskInfo.has_pending_cancellation  s1    	::,,BBB 	 	s   " 	..)r'  ztrio.lowlevel.Taskr   )r   r   r   rd   r-  r   r   s   @r\   r  r    s    )r]   r  c                     e Zd Ze	 	 	 	 	 	 	 	 	 	 d6d       Zed7d       Zed8d       Zed9d       Zed:d       Zed:d       Z	ed:d       Z
ed;d       Zeej                  d	d
	 	 	 	 	 d<d       Zed8d       Zed=d       Zed>d       Zed?d       Zedd	d	 	 	 	 	 	 	 d@d       ZedAd       Ze	 	 dB	 	 	 	 	 	 	 	 	 dCd       Zed:d       Ze	 	 	 	 	 	 	 	 dDd       Ze	 	 	 	 	 	 	 	 dEd       Ze	 	 	 	 	 	 	 	 	 	 	 	 dFd       ZedGd       Ze	 dH	 	 	 	 	 	 	 dId       ZedJd       ZedKd       ZedKd       Ze	 	 	 	 	 	 	 	 	 	 dLd       Zee 	 	 	 	 	 	 dMd              Z!ee 	 	 	 	 	 	 dNd               Z!e	 	 	 	 	 	 dOd!       Z!ed"d"d"d"d#	 	 	 	 	 	 	 	 	 	 	 	 	 dPd$       Z"e	 dQ	 	 	 	 	 dRd%       Z#edSd&       Z$edSd'       Z%edSd(       Z&edKd)       Z'edTd*       Z(edUd+       Z)edVd,       Z*edWd-       Z+edXd.       Z,e	 	 	 	 dYd/       Z-edZd0       Z.e	 	 	 	 d[d1       Z/ed\d2       Z0ed]d3       Z1ed:d4       Z2ed^d5       Z3y)_TrioBackendc                .    t        j                  |g| S rU   )ra   run)rY   r   r   r[   r  s        r\   r1  zTrioBackend.run  s     xx$t$$r]   c                >    t         j                  j                         S rU   )ra   r3  current_trio_tokenr  s    r\   current_tokenzTrioBackend.current_token  s    }}//11r]   c                *    t        j                         S rU   )ra   current_timer  s    r\   r6  zTrioBackend.current_time  s      ""r]   c                "    t         j                  S rU   )ra   r   r  s    r\   cancelled_exception_classz%TrioBackend.cancelled_exception_class  s    ~~r]   c                \   K   t         j                  j                          d {    y 7 wrU   )ra   r3  r4  r  s    r\   r4  zTrioBackend.checkpoint  s     mm&&(((   ",*,c                \   K   t         j                  j                          d {    y 7 wrU   )ra   r3  r  r  s    r\   r  z#TrioBackend.checkpoint_if_cancelled  s     mm33555r:  c                \   K   t         j                  j                          d {    y 7 wrU   )ra   r3  cancel_shielded_checkpointr  s    r\   r=  z&TrioBackend.cancel_shielded_checkpoint  s     mm66888r:  c                J   K   t        j                  |       d {    y 7 wrU   )ra   r   )rY   delays     r\   r   zTrioBackend.sleep  s     jjs   #!#Frs   r~   c                   t        ||      S )Nr@  r@   )rY   rs   r~   s      r\   create_cancel_scopezTrioBackend.create_cancel_scope  s     HV<<r]   c                *    t        j                         S rU   )ra   current_effective_deadliner  s    r\   rD  z&TrioBackend.current_effective_deadline  s    ..00r]   c                    t               S rU   )r   r  s    r\   create_task_groupzTrioBackend.create_task_group  s
    {r]   c                    t               S rU   r8   r  s    r\   create_eventzTrioBackend.create_event  s	    wr]   c                   t        |      S )Nr  r:   r  s     r\   create_lockzTrioBackend.create_lock  s    ..r]   Nr  c                   t        |||      S )Nr  r>   r  s       r\   create_semaphorezTrioBackend.create_semaphore  s     ),WWr]   c                    t        |      S rU   r6   )rY   r  s     r\   create_capacity_limiterz#TrioBackend.create_capacity_limiter  s    |,,r]   c                   K   dfd}t         j                         t        ||t        t        j
                  |             d {   S 7 w)Nc                 Z    t        t              5     cd d d        S # 1 sw Y   y xY wrU   )r/   r/  )r   r   tokens   r\   wrapperz6TrioBackend.run_sync_in_worker_thread.<locals>.wrapper  s     $[%8T{ 988s   !*)abandon_on_cancellimiter)r   rO   )r/  r4  r&   r   ra   r7   )rY   r   r   rS  rT  rR  rQ  s    ``   @r\   run_sync_in_worker_threadz%TrioBackend.run_sync_in_worker_thread  sI     	# ))+/--w7
 
 	
 
s   AAAAc                @    t         j                  j                          y rU   )ra   from_threadcheck_cancelledr  s    r\   rX  zTrioBackend.check_cancelled  s    ((*r]   c                    t        d|      }	 t        j                  j                  |g|d|iS # t        j                  $ r t        d w xY wNztrio.lowlevel.TrioToken | None
trio_token)r   ra   rW  r1  r+   rY   r   r   rQ  r[  s        r\   run_async_from_threadz!TrioBackend.run_async_from_thread  sT     :EB
	-##''KtK
KK$$ 	-",	-	   "1 Ac                    t        d|      }	 t        j                  j                  |g|d|iS # t        j                  $ r t        d w xY wrZ  )r   ra   rW  r&   r+   r\  s        r\   run_sync_from_threadz TrioBackend.run_sync_from_thread+  sT     :EB
	-##,,TPDPZPP$$ 	-",	-r^  c               2  K   dd}t        |t        t        t        f      r4t	        j
                  j                   ||      f|||dd| d {   }nAt	        j
                  j                  |D cg c]
  } ||       c}f|||dd| d {   }|j                  rt        |j                        nd }	|j                  rt        |j                        nd }
|j                  rt        |j                        nd }t        ||	|
|      S 7 c c}w 7 w)Nc                z    t        j                  |       }t        |t              r|S t        j                  |      S rU   )osfspathr  strfsdecode)r   str_or_bytess     r\   convert_itemz.TrioBackend.open_process.<locals>.convert_itemB  s.    99T?L,,##{{<00r]   T)r   r   r   shellF)r   rF   r   re  )r  re  r   r   ra   r3  open_processr   r   r   r   r   r   )rY   commandr   r   r   r[   rh  r   r   stdin_streamstdout_streamstderr_streams               r\   rj  zTrioBackend.open_process8  s    	1 gUH56 MM66W%  G !MM66078d#8  G <C==(7d@G,W^^<TX@G,W^^<TXwm]KK+ 9s1   ADD"D3DDDA<DDc                L    t         j                  j                  t        |       y rU   )ra   r3  spawn_system_taskr   )rY   r   s     r\   #setup_process_pool_exit_at_shutdownz/TrioBackend.setup_process_pool_exit_at_shutdowna  s    ''(>Hr]   c                  K   d|v rt         j                  nt         j                  }t        j                   j                  |      }|j	                  t         j
                  t         j                  d       |r|j                  |       d {    	 |j                  ||f       d {    t        |      S 7 +7 # t        $ r |j                           w xY ww)N:r   )r(  AF_INET6AF_INETra   r\  r]  r^  bindconnectr   r  r  )rY   hostportlocal_addressfamilyr  s         r\   connect_tcpzTrioBackend.connect_tcpe  s      %(4KV^^kk((0v1163E3EqI""=111	%%tTl333
 K(( 2 4 		s<   B	CB7CB; 'B9(B; ,C9B; ;CCc                   K   t         j                  j                  t        j                        }	 |j                  |       d {    t        |      S 7 # t        $ r |j                           w xY wwrU   )ra   r(  AF_UNIXrw  r   r  r.  )rY   pathr  s      r\   connect_unixzTrioBackend.connect_unixw  sf     kk((8	%%d+++
  ,, , 		s.   .A5A AA 
A5A A22A5c                    t        |      S rU   rP  rY   socks     r\   create_tcp_listenerzTrioBackend.create_tcp_listener  s     &&r]   c                    t        |      S rU   )rd  r  s     r\   create_unix_listenerz TrioBackend.create_unix_listener  s    !$''r]   c                j  K   t         j                  j                  |t        j                        }|r/|j                  t        j                  t        j
                  d       |r|j                  |       d {    |r$|j                  |       d {    t        |      S t        |      S 7 57 w)N)r{  typer   )
ra   r(  
SOCK_DGRAMr\  r8  SO_REUSEPORTrv  rw  rv  rh  )rY   r{  rz  remote_address
reuse_portr  s         r\   create_udp_socketzTrioBackend.create_udp_socket  s      kk((V=N=N(O""6#4#4f6I6I1M""=111%%n555%k22[)) 2 6s$   A7B39B/:B3B1B31B3c                   K   y wrU   r`   rY   rW  remote_paths      r\   create_unix_datagram_socketz'TrioBackend.create_unix_datagram_socket  s      "%   c                   K   y wrU   r`   r  s      r\   r  z'TrioBackend.create_unix_datagram_socket  s      +.r  c                   K   t         j                  j                  |      }|r$|j                  |       d {    t	        |      S t        |      S 7 wrU   )ra   r(  rT  rw  r  r  )rY   rW  r  r  s       r\   r  z'TrioBackend.create_unix_datagram_socket  sN      kk44Z@%%k222.{;;%k22 3s   6AAAr   )r{  r  protorB  c               f   K   t         j                  j                  ||||||       d {   S 7 wrU   )ra   r(  getaddrinfo)rY   rx  ry  r{  r  r  rB  s          r\   r  zTrioBackend.getaddrinfo  s-     & [[,,T4ueTTTTs   (1/1c                ^   K   t         j                  j                  ||       d {   S 7 wrU   )ra   r(  getnameinfo)rY   sockaddrrB  s      r\   r  zTrioBackend.getnameinfo  s%      [[,,Xu====s   $-+-c                   K   	 t        |       d {    y 7 # t        j                  $ r)}t               j                  |j                        d d }~wt        j
                  $ r t        d      d w xY ww)Nr  )r#   ra   r2   with_traceback__traceback__r1   rY   objr   s      r\   r#   zTrioBackend.wait_readable  sf     	>$$$'' 	T%'66s7H7HItS%% 	>#N3=	>0   A7  A7 A4$A#A44A7c                   K   	 t        |       d {    y 7 # t        j                  $ r)}t               j                  |j                        d d }~wt        j
                  $ r t        d      d w xY ww)Nr  )r$   ra   r2   r  r  r1   r  s      r\   r$   zTrioBackend.wait_writable  sf     	<$$$'' 	T%'66s7H7HItS%% 	<#L1t;	<r  c                    t        |       y rU   )r"   )rY   r  s     r\   r"   zTrioBackend.notify_closing  s
    sr]   c                    K   t        |      S wrU   r  r  s     r\   wrap_listener_socketz TrioBackend.wrap_listener_socket  s      &&s   c                ^   K   t         j                  j                  |      }t        |      S wrU   )ra   r(  rT  r  rY   r  	trio_socks      r\   wrap_stream_socketzTrioBackend.wrap_stream_socket  s%     KK2248	I&&r+  c                ^   K   t         j                  j                  |      }t        |      S wrU   )ra   r(  rT  r.  r  s      r\   wrap_unix_stream_socketz#TrioBackend.wrap_unix_stream_socket  s%     KK2248		**r+  c                ^   K   t         j                  j                  |      }t        |      S wrU   )ra   r(  rT  rh  r  s      r\   wrap_udp_socketzTrioBackend.wrap_udp_socket  s%     KK2248	##r+  c                ^   K   t         j                  j                  |      }t        |      S wrU   )ra   r(  rT  rv  r  s      r\   wrap_connected_udp_socketz%TrioBackend.wrap_connected_udp_socket  %     KK2248	!),,r+  c                ^   K   t         j                  j                  |      }t        |      S wrU   )ra   r(  rT  r  r  s      r\   wrap_unix_datagram_socketz%TrioBackend.wrap_unix_datagram_socket  r  r+  c                ^   K   t         j                  j                  |      }t        |      S wrU   )ra   r(  rT  r  r  s      r\   #wrap_connected_unix_datagram_socketz/TrioBackend.wrap_connected_unix_datagram_socket  s'      KK2248	*955r+  c                    	 t         j                         S # t        $ rB t        t        j
                  j                               }t         j                  |       |cY S w xY w)Nr  )r  r  LookupErrorr7   ra   	to_threadcurrent_default_thread_limiterr  )rY   rT  s     r\   r  z*TrioBackend.current_default_thread_limiter  sT    	,0022 	%FFHG &))'2N	s    AA! A!c                    t        |      S rU   )r  )rY   r  s     r\   r  z TrioBackend.open_signal_receiver  s     w''r]   c                ,    t               }t        |      S rU   )r!   r  )rY   r'  s     r\   get_current_taskzTrioBackend.get_current_task  s    ~D!!r]   c                    t               }|sJ t        |      g}|j                  }|rTg }|D ]H  }|j                  D ]7  }|j	                  t        |             |j                  |j                         9 J |}|rT|S rU   )r    r  child_nurserieschild_tasksrI  extend)rY   	root_task
task_infos	nurseriesnew_nurseriesnurseryr'  s          r\   get_running_taskszTrioBackend.get_running_tasks#  s    %'	y"9-.
--	02M$#//D%%l4&89!(()=)=> 0 %
 &I  r]   c                :   K   ddl m}  |        d {    y 7 w)Nr   )wait_all_tasks_blocked)trio.testingr  )rY   r  s     r\   r  z"TrioBackend.wait_all_tasks_blocked4  s     7$&&&s   c                    t        di |S r_   )r  )rY   r  s     r\   create_test_runnerzTrioBackend.create_test_runner:  s    $G$$r]   )
r   1Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]]r   tuple[Unpack[PosArgsT]]r[   r  r  r  r   rO   )r   rW   r   )r   ztype[BaseException]r   )r?  r   r   r   )rs   r   r~   r   r   zabc.CancelScope)r   zabc.TaskGroup)r   z	abc.Eventr  )r  r   r  r   r  r   r   zabc.Semaphore)r  r   r   r7   )FN)
r   &Callable[[Unpack[PosArgsT]], T_Retval]r   r  rS  r   rT  zabc.CapacityLimiter | Noner   rO   )r   r  r   r  rQ  rW   r   rO   )r   r  r   r  rQ  rW   r   rO   )rk  z)StrOrBytesPath | Sequence[StrOrBytesPath]r   int | IO[Any] | Noner   r  r   r  r[   r   r   r   r   zset[abc.Process]r   r   rU   )rx  re  ry  r   rz  IPSockAddrType | Noner   r  )r  str | bytesr   zabc.UNIXSocketStream)r  r  r   zabc.SocketListener)
r{  zsocket.AddressFamilyrz  r  r  r  r  r   r   zUDPSocket | ConnectedUDPSocket)rW  r  r  r   r   zabc.UNIXDatagramSocket)rW  r  r  r  r   zabc.ConnectedUNIXDatagramSocket)rW  r  r  zstr | bytes | Noner   z8abc.UNIXDatagramSocket | abc.ConnectedUNIXDatagramSocket)rx  zbytes | str | Nonery  zstr | int | Noner{  zint | AddressFamilyr  zint | SocketKindr  r   rB  r   r   zuSequence[tuple[AddressFamily, SocketKind, int, str, tuple[str, int] | tuple[str, int, int, int] | tuple[int, bytes]]])r   )r  rB   rB  r   r   ztuple[str, str])r  rH   r   r   )r  r  r   r  )r  r  r   r.  )r  r  r   rh  )r  r  r   rv  )r  r  r   r  )r  r  r   r  )r   r7   )r  r   r   z.AbstractContextManager[AsyncIterator[Signals]])r   r,   )r   zSequence[TaskInfo])r  r  r   r  )4r   r   r   classmethodr1  r4  r6  r8  r4  r  r=  r   r   r   rB  rD  rF  rH  rJ  rL  rN  rU  rX  r]  r`  rj  rq  r|  r  r  r  r  r   r  r  r  r#   r$   r"   r  r  r  r  r  r  r  r  r  r  r  r  r  r`   r]   r\   r/  r/    s;   %?% &% 	%
  % 
% % 2 2 # #   ) ) 6 6 9 9     "&((5==48=	= =
 1 1     / / 
 !%"XX 	X
 X 
X X - - 
 #(.2
4
 &
  	

 ,
 

 
$ + + 
-?
- &
- 	
-
 

- 
- 
-4
- &
- 	
-
 

- 
- &L:&L $	&L
 %&L %&L &L 
&L &LP I I JN))!)2G)	) )" - - ' ' ( ( *$* -* .	*
 * 
(* ** %&%59%	%  % .&.5@.	(.  . 	3&	35G	3	A	3 	3  '(!"U U U
 $U U U U
U U( 45>%>.1>	> >
 > > < <   ' ' ' ' + + $ $ - - - - 6 6	$6 6   ((	7( (
 " "    ' '
 % %r]   r/  r  )
__future__r   r2  r   rc  r(  systypesr$  collections.abcr   r   r   r   r   r	   r
   r   
contextlibr   dataclassesr   ior   r   r   r   r   r   r   typingr   r   r   r   r   r   r   r   r   trio.from_threadra   trio.lowlevelr  r   r   r   r    r!   r"   r#   r$   trio.socketr%   r  trio.to_threadr&    r(   r)   r*   r+   r,   r-   r.   _core._eventloopr/   _core._exceptionsr0   r1   r2   r3   _core._socketsr4   _core._streamsr5   _core._synchronizationr7   BaseCapacityLimiterr9   	BaseEventr;   BaseLockr<   r=   r?   BaseSemaphore_core._tasksrA   BaseCancelScoperB   rC   rD   abc._eventlooprE   rF   streams.memoryrG   	_typeshedrH   version_inforK   rL   exceptiongrouprM   typing_extensionsrN   rO   re  rP   rQ   rR   r3  RunVarr   ByteReceiveStreamr   ByteSendStreamr   r   
Instrumentr   r   r   r   r   r  r.  SocketListenerrP  rd  rh  rv  r  r  r  r  r  r  r/  backend_classr`   r]   r\   <module>r     sE   "   	  
  	 	 	 . !    , 
 
 
   ) )  5 #   3  3 8 8 5 @ 9 G G 9 3,w++16CL:\37

#cN 
		.'/ .'l3A 3Av e$300 $ $( e$** $ $ e5ckk 5 5pTXX%8%8 
 @F,@ &(< 

'$wz* >3#S%5%5 3B@4|S%9%9 @4F)(#*<*< ) -)3+=+= -0 0#-- 0,0).93;Q;Q 0*0)#.0F0F 0,0S3::08I *5
8 5
p3B 3BlI
) I
X 399T2U / U @U7 U7p8 $@%, @%F r]   