
    Oj                       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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,m-Z- d dl.Z/d dl0Z/d dl1m2Z2m3Z3m4Z4 d dl0m5Z5m6Z6m7Z7m8Z8m9Z9 d dl:m;Z< d dl=m>Z> ddl?m@Z@mAZAmBZBmCZCmDZDmEZEmFZF ddlGmHZH ddlImJZJmKZKmLZLmMZM ddlNmOZO ddlPmQZQ ddlRmSZT ddlRmUZV ddlRmWZX ddlRmYZYmZZZ ddlRm[Z\ ddl]m^Z_ ddl]m`Z` ddlFmaZambZbmcZc dd ldmeZemfZf dd!lgmhZhmiZimjZjmkZk e%rd d"llmmZm dd#lnmoZo ej                  d$k  rd d%lqmrZr ej                  d&k\  rd d'l#msZsmtZtmuZu nd d(lvmwZw d d'lqmsZsmtZtmuZu  e+d)      Zx e+d*      Zy e+d+d,-      Zz e+d.e{ea      Z| etd/      Z} e*d0      Z~	 	 	 	 did1Ze/j                   j                  Z G d2 d3e_      Z^ erd4      Z G d5 d6eFj                  eh   e'eh         Z G d7 d8eFj
                        Z ed9:       G d; d<eFj                               Z ed9:       G d= d>eFj                               Z ed9:       G d? d@eFj                               Z G dA dBe/j                  j                        Z edC      ZdDedC<   djdEZ G dF dGe'e|         Z G dH dIeeFj"                        Z G dJ dKeeFj$                        Z G dL dMeeFj&                        Z G dN dOeeFj&                        Z G dP dQeea   eFj,                        Z G dR dSeea   eFj.                        Z G dT dUee{   eFj0                        Z G dV dWee{   eFj2                        Z G dX dYeV      ZU G dZ d[eX      ZW G d\ d]e\      Z[ G d^ d_eT      ZS ed`      ZdDed`<    G da db      Z G dc ddeFj8                        Z G de dfeD      Z G dg dhee      ZeZy)k    )annotationsN)AsyncGeneratorAsyncIterator	AwaitableCallable
Collection	CoroutineIterableSequence)AbstractContextManager)Context)	dataclass)partialwraps)IOBase)PathLike)Signals)AddressFamily
SocketKind)TracebackType)
IOTYPE_CHECKINGAnyGenericLiteral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)
TaskHandle)IPSockAddrTypeUDPPacketTypeUNIXDatagramPacketType)AsyncBackendStrOrBytesPath)T_contracall_for_coroutineget_callable_nameget_coro_name)FileDescriptorLike)MemoryObjectSendStream)      )sentinel)rR      )SelfTypeVarTupleUnpack)BaseExceptionGroupTT_RetvalT_coT)	covariant
T_SockAddrPosArgsTPc                0     t               d fd       }|S )Nc                      | i |t        t              rS t        t              sS t              dfd       } |       S )Nc                 $   K     d {   S 7 wN )	awaitables   l/var/www/origus_pro_usr/data/www/origus.pro/core/.venv/lib/python3.12/site-packages/anyio/_backends/_trio.pyinner_wrapperz;ensure_returns_coro.<locals>.wrapper.<locals>.inner_wrapper~   s     &&s   returnr[   )
isinstancer	   r   r   )argskwargsrh   rf   funcs      @rg   wrapperz$ensure_returns_coro.<locals>.wrapperr   sV    $)&)	i+Iy1  4[' ' !?"    )rl   P.argsrm   P.kwargsrj   zCoroutine[Any, Any, T_Retval])r   )rn   ro   s   ` rg   ensure_returns_corors   o   s"     4[# #" Nrp   c                      e Zd 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)rE   
__originalNc                ,    t         j                  |       S rd   object__new__)clsoriginalrm   s      rg   rz   zCancelScope.__new__   s     ~~c""rp   c                @    |xs t        j                  di || _        y Nre   )triorE   _CancelScope__original)selfr|   rm   s      rg   __init__zCancelScope.__init__   s    "@d&6&6&@&@rp   c                :    | j                   j                          | S rd   )r   	__enter__r   s    rg   r   zCancelScope.__enter__   s    !!#rp   c                <    | j                   j                  |||      S rd   )r   __exit__r   exc_typeexc_valexc_tbs       rg   r   zCancelScope.__exit__   s     '''6BBrp   c                :    | j                   j                  |       y rd   )r   cancel)r   reasons     rg   r   zCancelScope.cancel   s    v&rp   c                .    | j                   j                  S rd   r   deadliner   s    rg   r   zCancelScope.deadline   s    '''rp   c                &    || j                   _        y rd   r   r   values     rg   r   zCancelScope.deadline   s    #( rp   c                .    | j                   j                  S rd   )r   cancel_calledr   s    rg   r   zCancelScope.cancel_called   s    ,,,rp   c                .    | j                   j                  S rd   )r   cancelled_caughtr   s    rg   r   zCancelScope.cancelled_caught       ///rp   c                .    | j                   j                  S rd   r   shieldr   s    rg   r   zCancelScope.shield   s    %%%rp   c                &    || j                   _        y rd   r   r   s     rg   r   zCancelScope.shield   s    !&rp   rd   )r|   trio.CancelScope | Nonerm   ry   rj   rV   )r|   r   rm   r   rj   Nonerj   rV   r   type[BaseException] | Noner   BaseException | Noner   TracebackType | Nonerj   bool)r   z
str | Nonerj   r   rj   floatr   r   rj   r   rj   r   )r   r   rj   r   )__name__
__module____qualname__	__slots__rz   r   r   r   r   propertyr   setterr   r   r   re   rp   rg   rE   rE      s    I 26#.#AG#	#
AC,C &C %	C
 
C' ( ( __) ) - - 0 0 & & ]]' 'rp   rE   empty_start_valuec                  4    e Zd ZU eZded<   dZded<   dddZy)	_TrioTaskStatuszT_contra | objectearly_start_valueNz'trio.TaskStatus[T_contra | None] | Nonereal_task_statusc                    | j                   %| j                  t        urt        d      || _        y | j                   j	                  |       y )Nz.called 'started' twice on the same task status)r   r   r   RuntimeErrorstartedr   s     rg   r   z_TrioTaskStatus.started   sE      (%%->>"#STT%*D"!!))%0rp   rd   )r   zT_contra | Nonerj   r   )r   r   r   r   r   __annotations__r   r   re   rp   rg   r   r      s    +<(<@D=D1rp   r   c                  ~    e Zd ZddZddZ	 	 	 	 	 	 	 	 ddZdddZddd	 	 	 	 	 	 	 ddZddd		 	 	 	 	 	 	 	 	 dd
Zy)	TaskGroupc                d    d| _         d| _        t        j                  d      | _        d | _        y )NFT)strict_exception_groups)_entered_activer   open_nursery_nursery_managercancel_scoper   s    rg   r   zTaskGroup.__init__   s+     $ 1 1$ O rp   c                   K   | j                   rt        d      d| _         d| _        | j                  j	                          d {   | _        t        | j
                  j                        | _        | S 7 /w)Nz*TaskGroup cannot be entered more than onceT)r   r   r   r   
__aenter___nurseryrE   r   r   s    rg   r   zTaskGroup.__aenter__   sb     ==KLL"33>>@@'(B(BC As   AA7A50A7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   rY   splitr   	Cancelled_create)r   r   r   r   excs        rg   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Nc                V    | j                   s||j                          t        d      y )Nz;This task group is not active; no new tasks can be started.)r   closer   )r   coros     rg   _check_activezTaskGroup._check_active   s-    ||

M 	 rp   )namecontextc                  t        |t              s"t        d|j                  j                         | j                  |       t        ||      }t        ||      }|G|j                  t        | j                  j                  |j                  |j                               |S | j                  j                  |j                  |j                         |S )Nzexpected a coroutine, got r   )rk   r	   	TypeError	__class__r   r   rO   rF   runr   r   
start_soon	_run_coror   )r   r   r   r   
final_namehandles         rg   create_taskzTaskGroup.create_task  s     $	*89T9T8UVWW4 "4.
D*-KK00&2B2BU  MM$$V%5%5FKK$Hrp   F)r   return_handlec                  K   	 	 	 	 dfd}| j                          t        |      | j                  j                  |       d {   }|r	|_        S |S 7 w)Nc                   K   t               }t        |      }|j                  t        ur| j	                  |j                         n| |_        t        |      j                          d {    y 7 w)N)task_status)r   rM   r   r   r   r   rF   r   )r   wrapper_task_statusr   rl   r   rn   r   s      rg   run_coro_with_task_statusz2TaskGroup.start.<locals>.run_coro_with_task_status&  sl      #2"3%dD>QRD"44<MM##$7$I$IJ7B#4j1F""$$$s   A-A80A61A8r   )r   ztrio.TaskStatus[Any]rj   r   )r   rN   r   start_start_value)	r   rn   r   r   rl   r   start_valuer   r   s	    `  `  @@rg   r   zTaskGroup.start  s{     	%0	%	% 	% 	&tT2
 MM//%J 0 
 
 "-FM
s   A
A$A"A$rj   r   r   r   rd   )r   zCoroutine | Nonerj   r   )r   zCoroutine[Any, Any, T_co]r   ry   r   zContext | Nonerj   zTaskHandle[T_co])
rn   7Callable[[Unpack[PosArgsT]], Coroutine[Any, Any, T_co]]rl   zUnpack[PosArgsT]r   ry   r   zLiteral[False, True]rj   r   )	r   r   r   r   r   r   r   r   r   re   rp   rg   r   r      s    !!,! &! %	!
 
!$ "&' 	
   
4 .3 E     	 
 ,  
 rp   r   F)eqc                  *    e Zd ZU ded<   dddZddZy)	ReceiveStreamWrapperztrio.abc.ReceiveStream_streamNc                F  K   ||dk  rt        d      	 | 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Nr   z$max_bytes must be a positive integer)	
ValueErrorr   receive_somer   r6   	__cause__r4   bytesr7   r   	max_bytesdatar   s       rg   receivezReceiveStreamWrapper.receiveI  s      Y]CDD	9229==D ; >'' 	9%3==8'' 	9%3==8	9sC   B!A AA B!A B!A22BBBB!c                T   K   | j                   j                          d {    y 7 wrd   r   acloser   s    rg   r   zReceiveStreamWrapper.acloseY       ll!!###   (&(rd   )r   
int | Nonerj   r   r   )r   r   r   r   r   r   re   rp   rg   r   r   E  s    ## $rp   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rd   )r   send_allr   r6   r   r4   r   itemr   s      rg   sendzSendStreamWrapper.senda  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rd   r   r   s    rg   r   zSendStreamWrapper.aclosei  r   r   Nr   r   rj   r   r   )r   r   r   r   r  r   re   rp   rg   r   r   ]  s      9$rp   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   )rE   r  r   r
  r  waitBaseExceptionkillr   s    rg   r   zProcess.acloset  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rd   )r  r  r   s    rg   r  zProcess.wait  s     ]]''))))   '%'c                8    | j                   j                          y rd   )r  	terminater   s    rg   r  zProcess.terminate  s    !rp   c                8    | j                   j                          y rd   )r  r  r   s    rg   r  zProcess.kill  s    rp   c                :    | j                   j                  |       y rd   )r  send_signal)r   signals     rg   r  zProcess.send_signal  s    !!&)rp   c                .    | j                   j                  S rd   )r  pidr   s    rg   r  zProcess.pid  s    }}   rp   c                .    | j                   j                  S rd   )r  
returncoder   s    rg   r  zProcess.returncode  s    }}'''rp   c                    | j                   S rd   )r  r   s    rg   stdinzProcess.stdin  s    {{rp   c                    | j                   S rd   )r
  r   s    rg   stdoutzProcess.stdout      ||rp   c                    | j                   S rd   )r  r   s    rg   stderrzProcess.stderr  r!  rp   Nr   rj   int)r  r   rj   r   rj   r   )rj   r  )rj   r	  )r   r   r   r   r   r  r  r  r  r   r  r  r  r   r#  re   rp   rg   r  r  m  s    %%))))"*"* ! ! ( (      rp   r  c                        e Zd Zd fdZ xZS )_ProcessPoolShutdownInstrumentc                "    t         |           y rd   )super	after_run)r   r   s    rg   r+  z(_ProcessPoolShutdownInstrument.after_run  s    rp   r   )r   r   r   r+  __classcell__r   s   @rg   r(  r(    s     rp   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  )	r   sleepmathinfr   r  r  rE   r   )workersprocesss     rg   _shutdown_process_poolr5    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)r   trio_sockets     rg   r   z_TrioSocketMixin.__init__  s    'rp   c                n    | j                   rt        | j                  j                         dk  rt        y Nr   )r;  r6   r:  filenor4   r   s    rg   _check_closedz_TrioSocketMixin._check_closed  s1    <<%%##%)%% *rp   c                .    | j                   j                  S rd   )r:  _sockr   s    rg   _raw_socketz_TrioSocketMixin._raw_socket  s      &&&rp   c                   K   | j                   j                         dk\  r"d| _        | j                   j                          y y w)Nr   T)r:  r?  r;  r   r   s    rg   r   z_TrioSocketMixin.aclose  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>  )rk   r   r6   r:  r?  r;  OSErrorr4   r   r   s     rg   _convert_socket_errorz&_TrioSocketMixin._convert_socket_error  sV    c4334%3.%%'!+%4/W%%3.Irp   Nr<  TrioSocketTyperj   r   r   )rj   socket.socket)r   r  rj   r   )	r   r   r   r   r@  r   rC  r   rH  re   rp   rg   r7  r7    s*    & ' '&
rp   r7  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*  r   r@   _receive_guard_send_guardr   r<  r   s     rg   r   zSocketStream.__init__  *    %+N;(6rp   c                  K   |dk  rt        d      | 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r   )r   rS  r:  recvr  rH  r7   r   s       rg   r   zSocketStream.receive  s     q=CDD   		"0!..33I>> 		" 		" "! ?  0**3//0		" 		"s\   BB AA AB 
BB A	A="A83B 8A==B  B	B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rd   )rT  
memoryviewr:  r  r  rH  )r   r   view
bytes_sentr   s        rg   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rd   )r:  shutdownsocketSHUT_WRr   s    rg   send_eofzSocketStream.send_eof  s     ""6>>2   +-rI  )   )r   r%  rj   r   r  r   )r   r   r   r   r   r  ra  r,  r-  s   @rg   rM  rM    s    7
"	)3rp   rM  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 = )rk   r%  r   arrayr   lowlevel
checkpointrS  r:  recvmsgr_  CMSG_LENitemsizer7   r  rH  
SOL_SOCKET
SCM_RIGHTSr   	frombyteslenlist)r   msglenmaxfdsfdsmessageancdata_flags_addrr   
cmsg_level	cmsg_type	cmsg_datas               rg   receive_fdszUNIXSocketStream.receive_fds  s    &#&&1*DEE&#&&1*@AAkk#mm&&(((   	
<@<M<M<U<U0E F= 73GWfe #7))	 18 	Y,J	9V...)v?P?P2P"DWK P$$.<~i[J 
 MM)$Vc)nI8U&VWX	Y S	!!1 	)7 % 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 emptyrg  )r   rk   r%  appendr   r?  rh  r   ri  rj  rT  r:  sendmsgr_  rn  ro  r  rH  )r   rv  ru  filenosfdfdarrayr   s          rg   send_fdszUNIXSocketStream.send_fds'  s8    899455 	,B"c"r"B'ryy{+		, ++c7+mm&&((( 	44++33 	 !' 1 1 & 1 1 '	 	 	 	4 	4 	)	 % 4..s334 	4 	4sh   AE
AE
/D0E
 D>A DDD	
E
D	D:D50D>5D::D>>EE
N)rs  r%  rt  r%  rj   ztuple[bytes, list[int]])rv  r   ru  zCollection[int | IOBase]rj   r   )r   r   r   r}  r  re   rp   rg   re  re    s    "B4rp   re  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*  r   r   r_  from_stdlib_socketr@   _accept_guardr   
raw_socketr   s     rg   r   zTCPSocketListener.__init__I  -    77
CD*+GHrp   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   )
r  r:  acceptr  rH  
setsockoptr_  IPPROTO_TCPTCP_NODELAYrM  r   r<  ry  r   s       rg   r  zTCPSocketListener.acceptM  s      	00+/+<+<+C+C+E%E"U	0 	v1163E3EqIK(( &F  0**3//0	0 	0sO   B-B!A:A8A:AB-8A::	BBB!BB!!B*&B-r  rK  )rj   rM  r   r   r   r   r  r,  r-  s   @rg   r  r  H  s    I)rp   r  c                  (     e Zd Zd fdZddZ xZS )UNIXSocketListenerc                ~    t         |   t        j                  j	                  |             t        d      | _        y r  r  r  s     rg   r   zUNIXSocketListener.__init__Y  r  rp   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rd   )r  r:  r  r  rH  re  r  s       rg   r  zUNIXSocketListener.accept]  s      	00+/+<+<+C+C+E%E"U	0  ,,	 &F  0**3//0	0  ,,sN   BA2AA	AB	A	A/A*%A2*A//A22B7Br  )rj   re  r  r-  s   @rg   r  r  X  s    I-rp   r  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 rO  rR  rU  s     rg   r   zUDPSocket.__init__h  rV  rp   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Nrc  )rS  r:  recvfromr8   r  rH  r   r   addrr   s       rg   r   zUDPSocket.receivem  s        	00#'#4#4#=#=e#DD
d2488	0 	0D  0**3//0/	0 	0 	0sU   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rd   rT  r:  sendtor  rH  r   s      rg   r  zUDPSocket.sendu  m      	00.d''..555	0 	05  0**3//0	0 	0H   A0A$=;=	A0=	A!AA$A!!A$$A-)A0rI  )rj   ztuple[bytes, IPSockAddrType])r   rH   rj   r   r   r   r   r   r   r  r,  r-  s   @rg   r  r  g      7
00rp   r  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 rO  rR  rU  s     rg   r   zConnectedUDPSocket.__init__~  rV  rp   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r  rS  r:  rX  r  rH  rG  s     rg   r   zConnectedUDPSocket.receive  p        	00!..33E::	0 	0:  0**3//0/		0 	0 	0N   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rd   rT  r:  r  r  rH  r   s      rg   r  zConnectedUDPSocket.send  k      	00'',,T222	0 	02  0**3//0	0 	0H   A2A&?=?	A2?	A#AA&A##A&&A/+A2rI  rj   r   r  r  r-  s   @rg   r  r  }  s    7
00rp   r  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 rO  rR  rU  s     rg   r   zUNIXDatagramSocket.__init__  rV  rp   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r  )rS  r:  r  r  rH  r  s       rg   r   zUNIXDatagramSocket.receive  s}        	00#'#4#4#=#=e#DD
dTz	0 	0D  0**3//0/	0 	0 	0sT   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rd   r  r   s      rg   r  zUNIXDatagramSocket.send  r  r  rI  )rj   rI   )r   rI   rj   r   r  r-  s   @rg   r  r    r  rp   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 rO  rR  rU  s     rg   r   z$ConnectedUNIXDatagramSocket.__init__  rV  rp   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r  r  rG  s     rg   r   z#ConnectedUNIXDatagramSocket.receive  r  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rd   r  r   s      rg   r  z ConnectedUNIXDatagramSocket.send  r  r  rI  r  r  r  r-  s   @rg   r  r    s    7
00rp   r  c                  @    e Zd ZdZd	dZd
dZddZd
dZddZd
dZ	y)r=   ru   c                ,    t         j                  |       S rd   rx   r{   s    rg   rz   zEvent.__new__      ~~c""rp   c                6    t        j                         | _        y rd   )r   r=   _Event__originalr   s    rg   r   zEvent.__init__  s    **,rp   c                6    | j                   j                         S rd   )r  is_setr   s    rg   r  zEvent.is_set      %%''rp   c                R   K   | j                   j                          d {   S 7 wrd   )r  r  r   s    rg   r  z
Event.wait  s     __))++++r  c                b    | j                   j                         }t        |j                        S )N)tasks_waiting)r  
statisticsr-   r  r   orig_statisticss     rg   r  zEvent.statistics  s%    //446_-J-JKKrp   c                8    | j                   j                          y rd   )r  setr   s    rg   r  z	Event.set  s    rp   Nr   r   r   )rj   r-   )
r   r   r   r   rz   r   r  r  r  r  re   rp   rg   r=   r=     s&    I#'(,Lrp   r=   c                  f    e Zd 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?   )rv   _fast_acquireFfast_acquirec               ,    t         j                  |       S rd   rx   r{   r  s     rg   rz   zLock.__new__  r  rp   c               D    || _         t        j                         | _        y rd   )r  r   r?   _Lock__original)r   r  s     rg   r   zLock.__init__  s    )))+rp   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)rl   )r   s    rg   _convert_runtime_error_msgzLock._convert_runtime_error_msg  s    88FFECH Grp   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rd   )r  r  acquirer   r  r   ri  checkpoint_if_cancelledacquire_nowaitr1   _lotparkrG  s     rg   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rd   )r  r  r   r1   r   r  rG  s     rg   r  zLock.acquire_nowait  sL    	OO**, 	'$& 	++C0	s    "AAAc                6    | j                   j                         S rd   )r  lockedr   s    rg   r  zLock.locked  r  rp   c                8    | j                   j                          y rd   )r  releaser   s    rg   r  zLock.release
      !rp   c                    | j                   j                         }|j                  rt        |j                        nd }t	        |j
                  ||j                        S rd   )r  r  ownerTrioTaskInfor.   r  r  )r   r  r  s      rg   r  zLock.statistics  sO    //4467F7L7L_223RV""E?+H+H
 	
rp   N)r  r   rj   rV   )r  r   rj   r   )r   r   rj   r   r   r   )rj   r.   )r   r   r   r   rz   r   staticmethodr  r  r  r  r  r  re   rp   rg   r?   r?     sH    -I-2 # 05 & F F(("
rp   r?   c                       e Zd 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 )rC   ru   NF	max_valuer  c               ,    t         j                  |       S rd   rx   r{   initial_valuer  r  s       rg   rz   zSemaphore.__new__  s     ~~c""rp   c               b    t         |   |||       t        j                  ||      | _        y )Nr  )r  )r*  r   r   rC   _Semaphore__original)r   r  r  r  r   s       rg   r   zSemaphore.__init__!  s+     	),W..)Lrp   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rd   )
r  r  r  r   ri  r  r  r1   r  r  r   s    rg   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rd   )r  r  r   r1   r   s    rg   r  zSemaphore.acquire_nowait7  2    	'OO**, 	'$&	'    8c                .    | j                   j                  S rd   )r  r  r   s    rg   r  zSemaphore.max_value=  s    (((rp   c                .    | j                   j                  S rd   )r  r   r   s    rg   r   zSemaphore.valueA  s    $$$rp   c                8    | j                   j                          y rd   )r  r  r   s    rg   r  zSemaphore.releaseE  r  rp   c                `    | j                   j                         }t        |j                        S rd   )r  r  rA   r  r  s     rg   r  zSemaphore.statisticsH  s%    //446"?#@#@AArp   )r  r%  r  r   r  r   rj   rV   )r  r%  r  r   r  r   rj   r   r   r&  r$  )rj   rA   )r   r   r   r   rz   r   r  r  r   r  r   r  r  r,  r-  s   @rg   rC   rC     s    I !%"## 	#
 # 
# !%"MM 	M
 M 
M
.' ) ) % %"Brp   rC   c                      e Zd 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)r;   ru   Nr|   c               ,    t         j                  |       S rd   rx   )r{   total_tokensr|   s      rg   rz   zCapacityLimiter.__new__P  s     ~~c""rp   c               T    ||| _         y |J t        j                  |      | _         y rd   )_CapacityLimiter__originalr   r;   )r   r  r|   s      rg   r   zCapacityLimiter.__init__X  s/     &DO+++"22<@DOrp   c                R   K   | j                   j                          d {   S 7 wrd   )r  r   r   s    rg   r   zCapacityLimiter.__aenter__d  s     __//1111r  c                Z   K   | j                   j                  |||       d {    y 7 wrd   )r  r   r   s       rg   r   zCapacityLimiter.__aexit__g  s$      oo'''6BBBs   !+)+c                .    | j                   j                  S rd   r  r  r   s    rg   r  zCapacityLimiter.total_tokenso  s    +++rp   c                &    || j                   _        y rd   r  r   s     rg   r  zCapacityLimiter.total_tokenss  s    ',$rp   c                .    | j                   j                  S rd   )r  borrowed_tokensr   s    rg   r  zCapacityLimiter.borrowed_tokensw  s    ...rp   c                .    | j                   j                  S rd   )r  available_tokensr   s    rg   r
  z CapacityLimiter.available_tokens{  r   rp   c                v    	 | j                   j                          y # t        j                  $ r t        d w xY wrd   )r  r  r   r1   r   s    rg   r  zCapacityLimiter.acquire_nowait  r  r  c                x    	 | j                   j                  |       y # t        j                  $ r t        d w xY wrd   )r  acquire_on_behalf_of_nowaitr   r1   r   borrowers     rg   r  z+CapacityLimiter.acquire_on_behalf_of_nowait  s4    	'OO77A 	'$&	's    9c                T   K   | j                   j                          d {    y 7 wrd   )r  r  r   s    rg   r  zCapacityLimiter.acquire  s     oo%%'''r   c                V   K   | j                   j                  |       d {    y 7 wrd   )r  acquire_on_behalf_ofr  s     rg   r  z$CapacityLimiter.acquire_on_behalf_of  s     oo228<<<s   )')c                6    | j                   j                         S rd   )r  r  r   s    rg   r  zCapacityLimiter.release  s    &&((rp   c                8    | j                   j                  |      S rd   )r  release_on_behalf_ofr  s     rg   r  z$CapacityLimiter.release_on_behalf_of  s    33H==rp   c                    | j                   j                         }t        |j                  |j                  t        |j                        |j                        S )N)r  r  	borrowersr  )r  r  r,   r  r  tupler  r  )r   origs     rg   r  zCapacityLimiter.statistics  sH    ))+( 00**DNN+,,	
 	
rp   rd   )r  float | Noner|   trio.CapacityLimiter | Nonerj   rV   )r  r  r|   r  rj   r   r   )r   r   r   r   r   r   rj   r   r   r   r$  )r  ry   rj   r   )rj   r,   )r   r   r   r   rz   r   r   r   r   r  r   r  r
  r  r  r  r  r  r  r  re   rp   rg   r;   r;   M  s   I &*# 15	#"# .	#
 
# &*
A 15	
A"
A .	
A
 

A2C,C &C %	C
 
C , , - - / / 0 0''(=)>
rp   r;   _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 rd   )_signals)r   signalss     rg   r   z_SignalReceiver.__init__  s	    rp   c                    t        j                  | j                   | _        | j                  j	                         | _        | S rd   )r   open_signal_receiverr!  _cmr   r  r   s    rg   r   z_SignalReceiver.__enter__  s1    ,,dmm<++-rp   c                <    | j                   j                  |||      S rd   )r%  r   r   s       rg   r   z_SignalReceiver.__exit__  s     xx  7F;;rp   c                    | S rd   re   r   s    rg   	__aiter__z_SignalReceiver.__aiter__  s    rp   c                h   K   | j                   j                          d {   }t        |      S 7 wrd   )r  	__anext__r   )r   signums     rg   r*  z_SignalReceiver.__anext__  s*     ~~//11v 2s   202N)r"  ztuple[Signals, ...]r   )r   r   r   r   r   r   rj   zbool | None)rj   r  )rj   r   )	r   r   r   r   r   r   r   r(  r*  re   rp   rg   r  r    sG    !! 
<,< &< %	<
 
<rp   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
	 	 	 	 	 	 dd	Zy
)
TestRunnerc                D    ddl m}  |       | _        d | _        || _        y )Nr   )Queue)queuer/  _call_queue_send_stream_options)r   optionsr/  s      rg   r   zTestRunner.__init__  s%    8=  	  rp   c                    | j                   rT| j                   j                          | j                   - | j                  j                                 | j                   ,y y y rd   )r2  r   r1  getr   s       rg   r   zTestRunner.__exit__  sU     ##%##/&  $$&( ##/ rp   c                >    t         j                  j                         S rd   )r   ri  in_trio_taskr   s    rg   
is_runningzTestRunner.is_running  s    }}))++rp   c                x  K   t        t        t        t           t        t
           f      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r  )r9   r  r   r   rr  r"   r2  r  r#   r  r!   )r   receive_streamrf   outcome_holderretvalr   s         rg   _run_tests_and_fixturesz"TestRunner._run_tests_and_fixtures  s     ,G)C.$w-/0-

-)>  	93A 9 9/i9#,_F #))%-89,$ 6"))%*556 4B	9 	9 	9su   8B:B.B#A/B#B.
A3A1A3B./B#1A33	B <BB.B  B.%	B:.B73B:c                    d | _         y rd   )r2  )r   outcomes     rg   _main_task_finishedzTestRunner._main_task_finished  s
     rp   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   )r2  r   ri  start_guest_runr>  r1  putrA  r3  r6  send_nowaitunwrap)r   rn   rl   rm   r<  s        rg   _call_in_runner_taskzTestRunner._call_in_runner_task  s     $MM)),,)-)9)9)=)="66 --	 ##+&  $$&( ##+ )+%%tT'<V'<n&MN "D  "$ ! a ''))rp   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 stopre   )rI  asendr   r   StopAsyncIteration)r   fixture_funcrm   asyncgenfixturevalues        rg   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 rd   rI  )r   rM  rm   s      rg   run_fixturezTestRunner.run_fixture  s    
 )t((@@@rp   c                *     | j                   |fi | y rd   rR  )r   	test_funcrm   s      rg   run_testzTestRunner.run_test"  s     	"!!)6v6rp   N)r4  r   rj   r   )r   r   r   r   r   ztypes.TracebackType | Nonerj   r   r   r   )r@  ry   rj   r   )rn    Callable[P, Awaitable[T_Retval]]rl   rq   rm   rr   rj   r[   )rM  z,Callable[..., AsyncGenerator[T_Retval, Any]]rm   dict[str, Any]rj   zIterable[T_Retval])rM  z,Callable[..., Coroutine[Any, Any, T_Retval]]rm   rX  rj   r[   )rU  z'Callable[..., Coroutine[Any, Any, Any]]rm   rX  rj   r   )r   r   r   r   r   r9  r>  rA  rI  rP  rS  rV  re   rp   rg   r-  r-    s     	),	) &	) +		)
 
	),9!*.* 	*
 * 
*0GBG G 
	G$ABA A 
	A7@7JX7	7rp   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 rd   )
parent_nurseryparent_taskidr*  r   r   r   weakrefproxy_task)r   task	parent_idr   s      rg   r   zTrioTaskInfo.__init__)  sd    	4#6#6#B#B4..::;ID9diiC]]4(
rp   c                b    	 | j                   j                  j                  S # t        $ r Y yw xY wr9  )r`  _cancel_statuseffectively_cancelledReferenceErrorr   s    rg   has_pending_cancellationz%TrioTaskInfo.has_pending_cancellation1  s1    	::,,BBB 	 	s   " 	..)ra  ztrio.lowlevel.Taskr   )r   r   r   r   rg  r,  r-  s   @rg   r  r  (  s    )rp   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                X    |rJ d       t        j                  t        |      g|i |S )Nz&unreachable, and not supported by Trio)r   r   rs   )r{   rn   rl   rm   r4  s        rg   r   zTrioBackend.run;  s1     CCCzxx+D1DDDGDDrp   c                >    t         j                  j                         S rd   )r   ri  current_trio_tokenr  s    rg   current_tokenzTrioBackend.current_tokenF  s    }}//11rp   c                *    t        j                         S rd   )r   current_timer  s    rg   ro  zTrioBackend.current_timeJ  s      ""rp   c                "    t         j                  S rd   )r   r   r  s    rg   cancelled_exception_classz%TrioBackend.cancelled_exception_classN  s    ~~rp   c                \   K   t         j                  j                          d {    y 7 wrd   )r   ri  rj  r  s    rg   rj  zTrioBackend.checkpointR  s     mm&&(((   ",*,c                \   K   t         j                  j                          d {    y 7 wrd   )r   ri  r  r  s    rg   r  z#TrioBackend.checkpoint_if_cancelledV  s     mm33555rs  c                \   K   t         j                  j                          d {    y 7 wrd   )r   ri  cancel_shielded_checkpointr  s    rg   rv  z&TrioBackend.cancel_shielded_checkpointZ  s     mm66888rs  c                J   K   t        j                  |       d {    y 7 wrd   )r   r0  )r{   delays     rg   r0  zTrioBackend.sleep^  s     jjs   #!#Fr   r   c                   t        ||      S )Nry  rD   )r{   r   r   s      rg   create_cancel_scopezTrioBackend.create_cancel_scopeb  s     HV<<rp   c                *    t        j                         S rd   )r   current_effective_deadliner  s    rg   r}  z&TrioBackend.current_effective_deadlineh  s    ..00rp   c                    t               S rd   )r   r  s    rg   create_task_groupzTrioBackend.create_task_groupl  s
    {rp   c                    t               S rd   r<   r  s    rg   create_eventzTrioBackend.create_eventp  s	    wrp   c                   t        |      S )Nr  r>   r  s     rg   create_lockzTrioBackend.create_lockt  s    ..rp   Nr  c                   t        |||      S )Nr  rB   r  s       rg   create_semaphorezTrioBackend.create_semaphorex  s     ),WWrp   c                    t        |      S rd   r:   )r{   r  s     rg   create_capacity_limiterz#TrioBackend.create_capacity_limiter  s    |,,rp   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rd   )r3   ri  )rl   rn   tokens   rg   ro   z6TrioBackend.run_sync_in_worker_thread.<locals>.wrapper  s)    $[%8 #T{# # #s   !*)abandon_on_cancellimiterri   )ri  rm  r*   r   r   r;   )r{   rn   rl   r  r  ro   r  s    ``   @rg   run_sync_in_worker_threadz%TrioBackend.run_sync_in_worker_thread  sI     	# ))+/--w7
 
 	
 
s   AAAAc                @    t         j                  j                          y rd   )r   from_threadcheck_cancelledr  s    rg   r  zTrioBackend.check_cancelled  s    ((*rp   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   r   r  r   r/   r{   rn   rl   r  r  s        rg   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r  )r   r   r  r*   r/   r  s        rg   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 rd   )osfspathrk   strfsdecode)r   str_or_bytess     rg   convert_itemz.TrioBackend.open_process.<locals>.convert_item  s.    99T?L,,##{{<00rp   T)r  r   r#  shellF)r   rK   rj   r  )rk   r  r   r   r   ri  open_processr  r   r   r   r#  r  )r{   commandr  r   r#  rm   r  r4  r   stdin_streamstdout_streamstderr_streams               rg   r  zTrioBackend.open_process  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 rd   )r   ri  spawn_system_taskr5  )r{   r3  s     rg   #setup_process_pool_exit_at_shutdownz/TrioBackend.setup_process_pool_exit_at_shutdown  s    ''(>Hrp   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_INETr   r  r  r  bindconnectr  r   rM  )r{   hostportlocal_addressfamilyr<  s         rg   connect_tcpzTrioBackend.connect_tcp  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rd   )r   r_  AF_UNIXr  r  r   re  )r{   pathr<  s      rg   connect_unixzTrioBackend.connect_unix  sf     kk((8	%%d+++
  ,, , 		s.   .A5A AA 
A5A A22A5c                    t        |      S rd   )r  r{   socks     rg   create_tcp_listenerzTrioBackend.create_tcp_listener  s     &&rp   c                    t        |      S rd   )r  r  s     rg   create_unix_listenerz TrioBackend.create_unix_listener  s    !$''rp   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   )
r   r_  
SOCK_DGRAMr  rn  SO_REUSEPORTr  r  r  r  )r{   r  r  remote_address
reuse_portr<  s         rg   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rd   re   r{   r  remote_paths      rg   create_unix_datagram_socketz'TrioBackend.create_unix_datagram_socket  s      "%   c                   K   y wrd   re   r  s      rg   r  z'TrioBackend.create_unix_datagram_socket%  s      +.r  c                   K   t         j                  j                  |      }|r$|j                  |       d {    t	        |      S t        |      S 7 wrd   )r   r_  r  r  r  r  )r{   r  r  r<  s       rg   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  protoflagsc               f   K   t         j                  j                  ||||||       d {   S 7 wrd   )r   r_  getaddrinfo)r{   r  r  r  r  r  r  s          rg   r  zTrioBackend.getaddrinfo7  s-     & [[,,T4ueTTTTs   (1/1c                ^   K   t         j                  j                  ||       d {   S 7 wrd   )r   r_  getnameinfo)r{   sockaddrr  s      rg   r  zTrioBackend.getnameinfoL  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)NrP  )r'   r   r6   with_traceback__traceback__r5   r{   objr   s      rg   r'   zTrioBackend.wait_readableR  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)NrQ  )r(   r   r6   r  r  r5   r  s      rg   r(   zTrioBackend.wait_writable[  sf     	<$$$'' 	T%'66s7H7HItS%% 	<#L1t;	<r  c                    t        |       y rd   )r&   )r{   r  s     rg   r&   zTrioBackend.notify_closingd  s
    srp   c                   K   t        t        d      r(|j                  t        j                  k(  rt	        |      S t        |      S w)Nr  )hasattrr_  r  r  r  r  r  s     rg   wrap_listener_socketz TrioBackend.wrap_listener_socketh  s5     69%$++*G%d++ &&s   AAc                ^   K   t         j                  j                  |      }t        |      S wrd   )r   r_  r  rM  r{   r  	trio_socks      rg   wrap_stream_socketzTrioBackend.wrap_stream_socketo  s%     KK2248	I&&rb  c                ^   K   t         j                  j                  |      }t        |      S wrd   )r   r_  r  re  r  s      rg   wrap_unix_stream_socketz#TrioBackend.wrap_unix_stream_sockett  s%     KK2248		**rb  c                ^   K   t         j                  j                  |      }t        |      S wrd   )r   r_  r  r  r  s      rg   wrap_udp_socketzTrioBackend.wrap_udp_sockety  s%     KK2248	##rb  c                ^   K   t         j                  j                  |      }t        |      S wrd   )r   r_  r  r  r  s      rg   wrap_connected_udp_socketz%TrioBackend.wrap_connected_udp_socket~  %     KK2248	!),,rb  c                ^   K   t         j                  j                  |      }t        |      S wrd   )r   r_  r  r  r  s      rg   wrap_unix_datagram_socketz%TrioBackend.wrap_unix_datagram_socket  r  rb  c                ^   K   t         j                  j                  |      }t        |      S wrd   )r   r_  r  r  r  s      rg   #wrap_connected_unix_datagram_socketz/TrioBackend.wrap_connected_unix_datagram_socket  s'      KK2248	*955rb  c                    	 t         j                         S # t        $ rB t        t        j
                  j                               }t         j                  |       |cY S w xY w)Nr  )r  r6  LookupErrorr;   r   	to_threadcurrent_default_thread_limiterr  )r{   r  s     rg   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 rd   )r  )r{   r"  s     rg   r$  z TrioBackend.open_signal_receiver  s     w''rp   c                ,    t               }t        |      S rd   )r%   r  )r{   ra  s     rg   get_current_taskzTrioBackend.get_current_task  s    ~D!!rp   c                    t               }|sJ t        |      g}|j                  }|rTg }|D ]H  }|j                  D ]7  }|j	                  t        |             |j                  |j                         9 J |}|rT|S rd   )r$   r  child_nurserieschild_tasksr  extend)r{   	root_task
task_infos	nurseriesnew_nurseriesnurseryra  s          rg   get_running_taskszTrioBackend.get_running_tasks  s    %'	y"9-.
--	02M$ ?#// ?D%%l4&89!(()=)=>??
 &I  rp   c                :   K   ddl m}  |        d {    y 7 w)Nr   )wait_all_tasks_blocked)trio.testingr   )r{   r   s     rg   r   z"TrioBackend.wait_all_tasks_blocked  s     7$&&&s   c                    t        di |S r~   )r-  )r{   r4  s     rg   create_test_runnerzTrioBackend.create_test_runner  s    $G$$rp   )
rn   z1Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]]rl   tuple[Unpack[PosArgsT]]rm   rX  r4  rX  rj   r[   )rj   ry   r   )rj   ztype[BaseException]r   )rx  r   rj   r   )r   r   r   r   rj   BaseCancelScope)rj   zabc.TaskGroup)rj   	BaseEvent)r  r   rj   r?   )r  r%  r  r   r  r   rj   BaseSemaphore)r  r   rj   r;   )FN)
rn   &Callable[[Unpack[PosArgsT]], T_Retval]rl   r  r  r   r  zBaseCapacityLimiter | Nonerj   r[   )rn   r   rl   r  r  ry   rj   r\   )rn   r  rl   r  r  ry   rj   r[   )r  z)StrOrBytesPath | Sequence[StrOrBytesPath]r  int | IO[Any] | Noner   r	  r#  r	  rm   r   rj   r  r3  zset[abc.Process]rj   r   rd   )r  r  r  r%  r  IPSockAddrType | Nonerj   rM  )r  str | bytesrj   zabc.UNIXSocketStream)r  rK  rj   zabc.SocketListener)
r  zsocket.AddressFamilyr  r  r  r  r  r   rj   zUDPSocket | ConnectedUDPSocket)r  rK  r  r   rj   zabc.UNIXDatagramSocket)r  rK  r  r  rj   zabc.ConnectedUNIXDatagramSocket)r  rK  r  zstr | bytes | Nonerj   z8abc.UNIXDatagramSocket | abc.ConnectedUNIXDatagramSocket)r  zbytes | str | Noner  zstr | int | Noner  zint | AddressFamilyr  zint | SocketKindr  r%  r  r%  rj   zuSequence[tuple[AddressFamily, SocketKind, int, str, tuple[str, int] | tuple[str, int, int, int] | tuple[int, bytes]]])r   )r  rG   r  r%  rj   ztuple[str, str])r  rP   rj   r   )r  rK  rj   rM  )r  rK  rj   re  )r  rK  rj   r  )r  rK  rj   r  )r  rK  rj   r  )r  rK  rj   r  )rj   r;   )r"  r   rj   z.AbstractContextManager[AsyncIterator[Signals]])rj   r0   )rj   zSequence[TaskInfo])r4  rX  rj   r-  )4r   r   r   classmethodr   rm  ro  rq  rj  r  rv  r0  r1  r2  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  r  r  r  r$  r  r  r   r  re   rp   rg   ri  ri  :  sB   E?E &E 	E
  E 
E E 2 2 # #   ) ) 6 6 9 9     "&((5==48=	= =
 1 1     / / 
 !%"XX 	X
 X 
X X - - 
 #(.2
4
 &
  	

 ,
 

 
$ + + 
-E
- &
- 	
-
 

- 
- 
-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( (
 " "    ' '
 % %rp   ri  )rn   rW  rj   z*Callable[P, Coroutine[Any, Any, T_Retval]]r
  )
__future__r   rh  r1  r  r_  systypesr^  collections.abcr   r   r   r   r   r	   r
   r   
contextlibr   contextvarsr   dataclassesr   	functoolsr   r   ior   r   r  r   r   r   r   typingr   r   r   r   r   r   r   r   r   r    trio.from_threadr   trio.lowlevelr@  r!   r"   r#   r$   r%   r&   r'   r(   trio.socketr)   rJ  trio.to_threadr*    r,   r-   r.   r/   r0   r1   r2   _core._eventloopr3   _core._exceptionsr4   r5   r6   r7   _core._socketsr8   _core._streamsr9   _core._synchronizationr;   BaseCapacityLimiterr=   r  r?   BaseLockr@   rA   rC   r  _core._tasksrE   r  rF   rG   rH   rI   abc._eventlooprJ   rK   
abc._tasksrL   rM   rN   rO   	_typeshedrP   streams.memoryrQ   version_infotyping_extensionsrT   rV   rW   rX   exceptiongrouprY   rZ   r[   r\   r  r^   r_   r`   rs   ri  RunVarr   
TaskStatusr   r   ByteReceiveStreamr   ByteSendStreamr   r  
Instrumentr(  r.  r   r5  r7  rM  re  SocketListenerr  r  r  r  r  r  r  r  r-  r  ri  backend_classre   rp   rg   <module>r3     s   "   	  
  	 	 	 .  ! $    ,      ) )  5 #   3  3 8 8 5 @ 9 % G G 9 W W,7g*w111<<CL:v&\37

#cN
*/8 
		0'/ 0'n 01 1cnnX.0A 1b bT e$300 $ $. e$** $ $ e5ckk 5 5pTXX%8%8 
 @F,@ &(< 

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