
    ^j                       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!lgmhZhmiZimjZj dd"lkmlZl e%rd d#lmmnZn ejo        d$k    r	d d%l#mpZpmqZq nd d&lrmsZs d d%ltmpZpmqZq  e+d'          Zu e+d(          Zv e+d)d*+          Zw e+d,exea          Zy epd-          Zz e*d.          Z{dmd3Z|e/j}        j~        Z~ G d4 d5e_          Z^ e            Z G d6 d7e'eh         eFj        eh                   Z G d8 d9eFj                  Z ed:;           G d< d=eFj                              Z ed:;           G d> d?eFj                              Z ed:;           G d@ dAeFj                              Z G dB dCe/jF        j                  Z e~dD          ZdEedD<   dndIZ G dJ dKe'ey                   Z G dL dMeeFj                  Z G dN dOeeFj                  Z G dP dQeeFj                  Z G dR dSeeFj                  Z G dT dUeea         eFj                  Z G dV dWeea         eFj                  Z G dX dYeex         eFj                  Z G dZ d[eex         eFj                  Z G d\ d]eV          ZU G d^ d_eX          ZW G d` dae\          Z[ G db dceT          ZS e~dd          ZdEedd<    G de df          Z G dg dheFj                  Z G di djeD          Z G dk dlee          ZeZdS )o    )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)MemoryObjectSendStream)FileDescriptorLike)      )TypeVarTupleUnpack)BaseExceptionGroupTT_RetvalT_coT)	covariant
T_SockAddrPosArgsTPfunc Callable[P, Awaitable[T_Retval]]return*Callable[P, Coroutine[Any, Any, T_Retval]]c                >     t                     d fd            }|S )	NargsP.argskwargsP.kwargsr_   Coroutine[Any, Any, T_Retval]c                      | i |t          t                    rS t          t                    sS t                    dfd            } |            S )Nr_   rW   c                    K     d {V S N )	awaitables   G/home/drrone/venv/lib/python3.11/site-packages/anyio/_backends/_trio.pyinner_wrapperz;ensure_returns_coro.<locals>.wrapper.<locals>.inner_wrapperz   s      &&    r_   rW   )
isinstancer	   r   r   )rb   rd   rm   rk   r]   s      @rl   wrapperz$ensure_returns_coro.<locals>.wrappern   s    D$)&))	i++ 	#Iy11 
	#  4[[' ' ' ' ' [' !=??"rn   )rb   rc   rd   re   r_   rf   )r   )r]   rq   s   ` rl   ensure_returns_cororr   k   s:     4[[# # # # # [#" Nrn   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dS )*rE   
__originalNoriginaltrio.CancelScope | Nonerd   objectr_   c                6    t                               |           S ri   rx   __new__)clsrv   rd   s      rl   r{   zCancelScope.__new__   s     ~~c"""rn   r   Nonec                6    |pt          j        di || _        d S Nrj   )triorE   _CancelScope__original)selfrv   rd   s      rl   __init__zCancelScope.__init__   s#    "@d&6&@&@&@&@rn   c                8    | j                                          | S ri   )r   	__enter__r   s    rl   r   zCancelScope.__enter__   s    !!###rn   exc_typetype[BaseException] | Noneexc_valBaseException | Noneexc_tbTracebackType | Noneboolc                :    | j                             |||          S ri   )r   __exit__r   r   r   r   s       rl   r   zCancelScope.__exit__   s     '''6BBBrn   reason
str | Nonec                :    | j                             |           d S ri   )r   cancel)r   r   s     rl   r   zCancelScope.cancel   s    v&&&&&rn   floatc                    | j         j        S ri   r   deadliner   s    rl   r   zCancelScope.deadline   s    ''rn   valuec                    || j         _        d S ri   r   r   r   s     rl   r   zCancelScope.deadline   s    #(   rn   c                    | j         j        S ri   )r   cancel_calledr   s    rl   r   zCancelScope.cancel_called   s    ,,rn   c                    | j         j        S ri   )r   cancelled_caughtr   s    rl   r   zCancelScope.cancelled_caught       //rn   c                    | j         j        S ri   r   shieldr   s    rl   r   zCancelScope.shield   s    %%rn   c                    || j         _        d S ri   r   r   s     rl   r   zCancelScope.shield   s    !&rn   ri   )rv   rw   rd   rx   r_   rE   )rv   rw   rd   r   r_   r}   )r_   rE   r   r   r   r   r   r   r_   r   )r   r   r_   r}   r_   r   r   r   r_   r}   r_   r   )r   r   r_   r}   )__name__
__module____qualname__	__slots__r{   r   r   r   r   propertyr   setterr   r   r   rj   rn   rl   rE   rE      s^       I 26# # # # #
A A A A A   C C C C' ' ' ' ' ( ( ( X( _) ) ) _) - - - X- 0 0 0 X0 & & & X& ]' ' ' ]' ' 'rn   rE   c                  6    e Zd ZU eZded<   dZded<   ddd
ZdS )_TrioTaskStatuszT_contra | objectearly_start_valueNz'trio.TaskStatus[T_contra | None] | Nonereal_task_statusr   T_contra | Noner_   r}   c                    | j         &| j        t          urt          d          || _        d S | j                             |           d S )Nz.called 'started' twice on the same task status)r   r   empty_start_valueRuntimeErrorstartedr   s     rl   r   z_TrioTaskStatus.started   sT     (%->>>"#STTT%*D"""!))%00000rn   ri   )r   r   r_   r}   )r   r   r   r   r   __annotations__r   r   rj   rn   rl   r   r      sS         +<<<<<@DDDDD1 1 1 1 1 1 1rn   r   c                  P    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dS )*	TaskGroupr_   r}   c                d    d| _         d| _        t          j        d          | _        d | _        d S )NFT)strict_exception_groups)_entered_activer   open_nursery_nursery_managercancel_scoper   s    rl   r   zTaskGroup.__init__   s4     $ 1$ O O O rn   c                   K   | j         rt          d          d| _         d| _        | j                                         d {V | _        t          | j        j                  | _        | S )Nz*TaskGroup cannot be entered more than onceT)r   r   r   r   
__aenter___nurseryrE   r   r   s    rl   r   zTaskGroup.__aenter__   sp      = 	MKLLL"3>>@@@@@@@@'(BCCrn   r   r   r   r   r   r   r   c                *  K   	 | j                             |||           d {V 	 ~~d| _        S # t          $ rJ}|                    t
          j                  d         st
          j                                        | d }~ww xY w# ~~d| _        w xY w)NF   )r   	__aexit__r   rU   splitr   	Cancelled_create)r   r   r   r   excs        rl   r   zTaskGroup.__aexit__   s      
	!.887FSSSSSSSSS  DLL " 	 	 	99T^,,Q/ 8n,,..C7		  DL    s!   !0 
BAA??BB BNcoroCoroutine | Nonec                ^    | j         s%||                                 t          d          d S )Nz;This task group is not active; no new tasks can be started.)r   closer   )r   r   s     rl   _check_activezTaskGroup._check_active   s>    | 	

M  		 	rn   )namecontextCoroutine[Any, Any, T_co]r   rx   r   Context | NoneTaskHandle[T_co]c               v   t          |t                    st          d|j        j                   |                     |           t          ||          }|:|                    t          | j	        j
        |j        |j                             n&| j	        
                    |j        |j                   |S )Nzexpected a coroutine, got r   )rp   r	   	TypeError	__class__r   r   rF   runr   r   
start_soon	_run_coror   )r   r   r   r   handles        rl   create_taskzTaskGroup.create_task  s     $	** 	XV9TVVWWW4   D$''KK0&2BUUU    M$$V%5FK$HHHrn   F)r   return_handler]   7Callable[[Unpack[PosArgsT]], Coroutine[Any, Any, T_co]]rb   Unpack[PosArgsT]r   Literal[False] | Literal[True]r   c                  K   dfd}|                                   t                    }| j                            ||           d {V }|r	|_        S |S )Ntask_statustrio.TaskStatus[Any]r_   r}   c                   K   t                      }t          |          }|j        t          ur|                     |j                   n| |_        t          |                                           d {V  d S )N)r   )r   rM   r   r   r   r   rF   r   )r   wrapper_task_statusr   rb   r]   r   r   s      rl   run_coro_with_task_statusz2TaskGroup.start.<locals>.run_coro_with_task_status!  s       #2"3"3%dD>QRRRD"4<MMM##$7$IJJJJ7B#4d++F""$$$$$$$$$$$rn   r   )r   r   r_   r}   )r   rN   r   start_start_value)	r   r]   r   r   rb   r   
final_namestart_valuer   s	    `` `   @rl   r   zTaskGroup.start  s      	% 	% 	% 	% 	% 	% 	% 	% 	% 	&tT22
 M//%J 0 
 
 
 
 
 
 
 
  	"-FMrn   r_   r}   )r_   r   r   ri   )r   r   r_   r}   )r   r   r   rx   r   r   r_   r   )
r]   r   rb   r   r   rx   r   r   r_   r   )	r   r   r   r   r   r   r   r   r   rj   rn   rl   r   r      s        ! ! ! !   ! ! ! !$     "&     2 8=               rn   r   F)eqc                  ,    e Zd ZU ded<   dddZdd
ZdS )ReceiveStreamWrapperztrio.abc.ReceiveStream_streamN	max_bytes
int | Noner_   bytesc                .  K   ||dk     rt          d          	 | j                            |           d {V }nC# t          j        $ r}t          |j        d }~wt          j        $ r}t          |j        d }~ww xY w|rt          |          S t          Nr   z$max_bytes must be a positive integer)	
ValueErrorr   receive_somer   r6   	__cause__r4   r   r7   r   r   datar   s       rl   receivezReceiveStreamWrapper.receiveD  s       Y]]CDDD	9229========DD' 	9 	9 	9%3=8' 	9 	9 	9%3=8	9  	;;s!    < A<AA<*A77A<r}   c                H   K   | j                                          d {V  d S ri   r   acloser   s    rl   r   zReceiveStreamWrapper.acloseT  2      l!!###########rn   ri   )r   r   r_   r   r   )r   r   r   r   r   r   rj   rn   rl   r   r   @  sO         ####     $ $ $ $ $ $rn   r   c                  *    e Zd ZU ded<   d
dZddZd	S )SendStreamWrapperztrio.abc.SendStreamr   itemr   r_   r}   c                   K   	 | j                             |           d {V  d S # t          j        $ r}t          |j        d }~wt          j        $ r}t
          |j        d }~ww xY wri   )r   send_allr   r6   r   r4   r   r  r   s      rl   sendzSendStreamWrapper.send\  s      	9,''-----------' 	9 	9 	9%3=8' 	9 	9 	9%3=8	9s     & A&AA&A!!A&c                H   K   | j                                          d {V  d S ri   r   r   s    rl   r   zSendStreamWrapper.aclosed  r   rn   Nr  r   r_   r}   r   )r   r   r   r   r  r   rj   rn   rl   r  r  X  sJ             9 9 9 9$ $ $ $ $ $rn   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dS )Processztrio.Process_processabc.ByteSendStream | None_stdinabc.ByteReceiveStream | None_stdout_stderrr_   r}   c                >  K   t          d          5  | j        r| j                                         d {V  | j        r| j                                         d {V  | j        r| j                                         d {V  d d d            n# 1 swxY w Y   	 |                                  d {V  d S # t          $ rX |                                  t          d          5  |                                  d {V  d d d            n# 1 swxY w Y    w xY wNT)r   )rE   r  r   r  r  waitBaseExceptionkillr   s    rl   r   zProcess.acloseo  s     %%% 	, 	,{ +k((*********| ,l))+++++++++| ,l))+++++++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,	))++ 	 	 	IIKKKD))) " "iikk!!!!!!!" " " " " " " " " " " " " " "		sB   A3BBBB: :.D(DDD	DD	Dintc                D   K   | j                                          d {V S ri   )r  r  r   s    rl   r  zProcess.wait  s,      ]'')))))))))rn   c                8    | j                                          d S ri   )r  	terminater   s    rl   r  zProcess.terminate  s    !!!!!rn   c                8    | j                                          d S ri   )r  r  r   s    rl   r  zProcess.kill  s    rn   signalr   c                :    | j                             |           d S ri   )r  send_signal)r   r  s     rl   r  zProcess.send_signal  s    !!&)))))rn   c                    | j         j        S ri   )r  pidr   s    rl   r   zProcess.pid  s    }  rn   r   c                    | j         j        S ri   )r  
returncoder   s    rl   r"  zProcess.returncode  s    }''rn   c                    | j         S ri   )r  r   s    rl   stdinzProcess.stdin  s
    {rn   c                    | j         S ri   )r  r   s    rl   stdoutzProcess.stdout  
    |rn   c                    | j         S ri   )r  r   s    rl   stderrzProcess.stderr  r'  rn   Nr   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)  rj   rn   rl   r  r  h  sJ        %%%%))))))))   "* * * *" " " "   * * * * ! ! ! X! ( ( ( X(    X    X    X  rn   r  c                        e Zd Zd fdZ xZS )_ProcessPoolShutdownInstrumentr_   r}   c                H    t                                                       d S ri   )super	after_run)r   r   s    rl   r0  z(_ProcessPoolShutdownInstrument.after_run  s    rn   r   )r   r   r   r0  __classcell__r   s   @rl   r-  r-    s=                 rn   r-  &current_default_worker_process_limiterztrio.lowlevel.RunVarworkersset[abc.Process]r}   c                T  K   	 t          j        t          j                   d {V  d S # t           j        $ rn | D ]}|j        |                                 t          d          5  | D ]}|                                 d {V  	 d d d            Y d S # 1 swxY w Y   Y d S w xY wr  )	r   sleepmathinfr   r"  r  rE   r   )r4  processs     rl   _shutdown_process_poolr;    s0     	'j"""""""""""> ' ' ' 	 	G!)%%% 	' 	'" ' 'nn&&&&&&&&&&'	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	''s3   $* ?B') B
B'B	B'B	 B'&B'c                  F    e Zd ZddZddZedd            Zdd	ZddZdS )_TrioSocketMixintrio_socketTrioSocketTyper_   r}   c                "    || _         d| _        d S NF)_trio_socket_closed)r   r>  s     rl   r   z_TrioSocketMixin.__init__  s    'rn   c                j    | j         rt          | j                                        dk     rt          d S Nr   )rC  r6   rB  filenor4   r   s    rl   _check_closedz_TrioSocketMixin._check_closed  s:    < 	&%%##%%))%% *)rn   socket.socketc                    | j         j        S ri   )rB  _sockr   s    rl   _raw_socketz_TrioSocketMixin._raw_socket  s     &&rn   c                   K   | j                                         dk    r"d| _        | j                                          d S d S )Nr   T)rB  rF  rC  r   r   s    rl   r   z_TrioSocketMixin.aclose  sJ      ##%%**DL##%%%%% +*rn   r   r  r   c                    t          |t          j                  rt          || j                                        dk     r| j        rt          d t          |t                    rt          ||rE  )rp   r   r6   rB  rF  rC  OSErrorr4   r   r   s     rl   _convert_socket_errorz&_TrioSocketMixin._convert_socket_error  sg    c4344 	%3.%%''!+++%4/W%% 	%3.Irn   Nr>  r?  r_   r}   r   )r_   rH  )r   r  r_   r   )	r   r   r   r   rG  r   rK  r   rP  rj   rn   rl   r=  r=    s           & & & & ' ' ' X'& & & &
     rn   r=  c                  :     e Zd Zd fdZddd
ZddZddZ xZS )SocketStreamr>  r?  r_   r}   c                    t                                          |           t          d          | _        t          d          | _        d S Nreading from
writing tor/  r   r@   _receive_guard_send_guardr   r>  r   s     rl   r   zSocketStream.__init__  A    %%%+N;;(66rn      r   r  r   c                $  K   |dk     rt          d          | j        5  	 | j                            |           d {V }n,# t          $ r}|                     |           Y d }~nd }~ww xY w|r|cd d d            S t          # 1 swxY w Y   d S r   )r   rY  rB  recvr  rP  r7   r   s       rl   r   zSocketStream.receive  s     q==CDDD  		" 		"0!.33I>>>>>>>>  0 0 0**3////////0  "		" 		" 		" 		" 		" 		" 		" 		" "!		" 		" 		" 		" 		" 		" 		" 		" 		" 		"s@   B AB
A+A&!B&A++B>BB	B	r  c                   K   | j         5  t          |          }|rZ	 | j                            |           d {V }n,# t          $ r}|                     |           Y d }~nd }~ww xY w||d          }|Zd d d            d S # 1 swxY w Y   d S ri   )rZ  
memoryviewrB  r  r  rP  )r   r  view
bytes_sentr   s        rl   r  zSocketStream.send  s      	) 	)d##D )4'+'8'='=d'C'C!C!C!C!C!C!CJJ$ 4 4 4..s333333334 JKK(  )	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s7   B >B
A'A"B"A''BB
Bc                R   K   | j                             t          j                   d S ri   )rB  shutdownsocketSHUT_WRr   s    rl   send_eofzSocketStream.send_eof  s%      ""6>22222rn   rQ  )r]  )r   r  r_   r   r	  r   )r   r   r   r   r   r  rh  r1  r2  s   @rl   rS  rS    s~        7 7 7 7 7 7
" " " " "	) 	) 	) 	)3 3 3 3 3 3 3 3rn   rS  c                      e Zd ZddZddZdS )UNIXSocketStreammsglenr  maxfdsr_   tuple[bytes, list[int]]c           	     |  K   t          |t                    r|dk     rt          d          t          |t                    r|dk     rt          d          t          j        d          }t          j                                         d {V  | j        5  	 	 | j        	                    |t          j        ||j        z                       d {V \  }}}}|s	|st          n-# t          $ r}|                     |           Y d }~nd }~ww xY wz	 d d d            n# 1 swxY w Y   |D ]\  }	}
}|	t          j        k    s|
t          j        k    rt%          d|d|	 d	|
           |                    |d t)          |          t)          |          |j        z  z
                      |t+          |          fS )
Nr   z%msglen must be a non-negative integerr   z!maxfds must be a positive integeriTz.Received unexpected ancillary data; message = z, cmsg_level = z, cmsg_type = )rp   r  r   arrayr   lowlevel
checkpointrY  rB  recvmsgrf  CMSG_LENitemsizer7   r  rP  
SOL_SOCKET
SCM_RIGHTSr   	frombyteslenlist)r   rk  rl  fdsmessageancdataflagsaddrr   
cmsg_level	cmsg_type	cmsg_datas               rl   receive_fdszUNIXSocketStream.receive_fds  sx     &#&& 	F&1**DEEE&#&& 	B&1**@AAAk#m&&(((((((((  	 	
:>:K:S:S0E F F; ; 5 5 5 5 5 51GWeT # *7 *)) % 4 4 4..s333333334 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 18 	Y 	Y,J	9V...)v?P2P2P"JW J J$.J J>GJ J  
 MM)$Vc)nnI8U&V$VWXXXXS		!!s=   DA C%D%
D/D	D	DDD#&D#r|  r   r{  Collection[int | IOBase]r}   c                  K   |st          d          |st          d          g }|D ]i}t          |t                    r|                    |           -t          |t                    r'|                    |                                           jt          j        d|          }t          j        	                                 d {V  | j
        5  	 	 | j                            |gt          j        t          j        |fg           d {V  n-# t           $ r}|                     |           Y d }~nd }~ww xY wi	 d d d            d S # 1 swxY w Y   d S )Nzmessage must not be emptyzfds must not be emptyro  )r   rp   r  appendr   rF  rp  r   rq  rr  rZ  rB  sendmsgrf  rv  rw  r  rP  )r   r|  r{  filenosfdfdarrayr   s          rl   send_fdszUNIXSocketStream.send_fds"  s      	:8999 	64555 	, 	,B"c"" ,r""""B'' ,ryy{{++++c7++m&&((((((((( 	4 	444+33 	 !' 1 & 1 '	 	 	 	 	 	 	 	 	 $ 4 4 4..s3333333344 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s<   E:DE
D:D50E5D::EEEN)rk  r  rl  r  r_   rm  )r|  r   r{  r  r_   r}   )r   r   r   r  r  rj   rn   rl   rj  rj     s=        " " " "B4 4 4 4 4 4rn   rj  c                  (     e Zd Zd fdZddZ xZS )	TCPSocketListener
raw_socketrH  c                    t                                          t          j                            |                     t          d          | _        d S Nzaccepting connections fromr/  r   r   rf  from_stdlib_socketr@   _accept_guardr   r  r   s     rl   r   zTCPSocketListener.__init__D  B    77
CCDDD*+GHHrn   r_   rS  c                X  K   | j         5  	 | j                                         d {V \  }}n,# t          $ r}|                     |           Y d }~nd }~ww xY wd d d            n# 1 swxY w Y   |                    t          j        t          j        d           t          |          S Nr   )
r  rB  acceptr  rP  
setsockoptrf  IPPROTO_TCPTCP_NODELAYrS  r   r>  _addrr   s       rl   r  zTCPSocketListener.acceptH  s      	0 	00+/+<+C+C+E+E%E%E%E%E%E%E"UU  0 0 0**3////////0	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	v163EqIIIK(((6   A'"/A'
AAA'AA''A+.A+r  rH  )r_   rS  r   r   r   r   r  r1  r2  s   @rl   r  r  C  sW        I I I I I I) ) ) ) ) ) ) )rn   r  c                  (     e Zd Zd fdZddZ xZS )	UNIXSocketListenerr  rH  c                    t                                          t          j                            |                     t          d          | _        d S r  r  r  s     rl   r   zUNIXSocketListener.__init__T  r  rn   r_   rj  c                  K   | j         5  	 | j                                         d {V \  }}n,# t          $ r}|                     |           Y d }~nd }~ww xY wd d d            n# 1 swxY w Y   t          |          S ri   )r  rB  r  r  rP  rj  r  s       rl   r  zUNIXSocketListener.acceptX  s       	0 	00+/+<+C+C+E+E%E%E%E%E%E%E"UU  0 0 0**3////////0	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0  ,,,r  r  )r_   rj  r  r2  s   @rl   r  r  S  sW        I I I I I I- - - - - - - -rn   r  c                  0     e Zd Zd fdZddZdd
Z xZS )	UDPSocketr>  r?  r_   r}   c                    t                                          |           t          d          | _        t          d          | _        d S rU  rX  r[  s     rl   r   zUDPSocket.__init__c  r\  rn   tuple[bytes, IPSockAddrType]c                &  K   | j         5  	 | j                            d           d {V \  }}|t          |          fcd d d            S # t          $ r}|                     |           Y d }~nd }~ww xY w	 d d d            d S # 1 swxY w Y   d S Nr]  )rY  rB  recvfromr8   r  rP  r   r   r  r   s       rl   r   zUDPSocket.receiveh  s$       	0 	00#'#4#=#=e#D#DDDDDDD
d24888	0 	0 	0 	0 	0 	0 	0 	0 ! 0 0 0**3////////0/	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s4   B3A
A5A0+B0A55BB
B
r  rH   c                   K   | j         5  	  | j        j        |  d {V  n,# t          $ r}|                     |           Y d }~nd }~ww xY wd d d            d S # 1 swxY w Y   d S ri   rZ  rB  sendtor  rP  r  s      rl   r  zUDPSocket.sendp         	0 	00.d'.555555555  0 0 0**3////////0	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	06   A"A
AAAAAA"ArQ  )r_   r  )r  rH   r_   r}   r   r   r   r   r   r  r1  r2  s   @rl   r  r  b  e        7 7 7 7 7 7
0 0 0 00 0 0 0 0 0 0 0rn   r  c                  0     e Zd Zd
 fdZddZdd	Z xZS )ConnectedUDPSocketr>  r?  r_   r}   c                    t                                          |           t          d          | _        t          d          | _        d S rU  rX  r[  s     rl   r   zConnectedUDPSocket.__init__y  r\  rn   r   c                   K   | j         5  	 | j                            d           d {V 	 cd d d            S # t          $ r}|                     |           Y d }~nd }~ww xY w	 d d d            d S # 1 swxY w Y   d S r  rY  rB  r_  r  rP  rO  s     rl   r   zConnectedUDPSocket.receive~         	0 	00!.33E:::::::::	0 	0 	0 	0 	0 	0 	0 	0 ! 0 0 0**3////////0/		0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	02   A39
A"AA3A""A33A7:A7r  c                   K   | j         5  	 | j                            |           d {V  n,# t          $ r}|                     |           Y d }~nd }~ww xY wd d d            d S # 1 swxY w Y   d S ri   rZ  rB  r  r  rP  r  s      rl   r  zConnectedUDPSocket.send         	0 	00',,T2222222222  0 0 0**3////////0	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	06   A& -A&
AAA&AA&&A*-A*rQ  r_   r   r	  r  r2  s   @rl   r  r  x  se        7 7 7 7 7 7
0 0 0 00 0 0 0 0 0 0 0rn   r  c                  0     e Zd Zd
 fdZddZdd	Z xZS )UNIXDatagramSocketr>  r?  r_   r}   c                    t                                          |           t          d          | _        t          d          | _        d S rU  rX  r[  s     rl   r   zUNIXDatagramSocket.__init__  r\  rn   rI   c                  K   | j         5  	 | j                            d           d {V \  }}||fcd d d            S # t          $ r}|                     |           Y d }~nd }~ww xY w	 d d d            d S # 1 swxY w Y   d S r  )rY  rB  r  r  rP  r  s       rl   r   zUNIXDatagramSocket.receive  s       	0 	00#'#4#=#=e#D#DDDDDDD
dTz	0 	0 	0 	0 	0 	0 	0 	0 ! 0 0 0**3////////0/	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s2   A9&?
A(	A#A9#A((A99A= A=r  c                   K   | j         5  	  | j        j        |  d {V  n,# t          $ r}|                     |           Y d }~nd }~ww xY wd d d            d S # 1 swxY w Y   d S ri   r  r  s      rl   r  zUNIXDatagramSocket.send  r  r  rQ  )r_   rI   )r  rI   r_   r}   r  r2  s   @rl   r  r    r  rn   r  c                  0     e Zd Zd
 fdZddZdd	Z xZS )ConnectedUNIXDatagramSocketr>  r?  r_   r}   c                    t                                          |           t          d          | _        t          d          | _        d S rU  rX  r[  s     rl   r   z$ConnectedUNIXDatagramSocket.__init__  r\  rn   r   c                   K   | j         5  	 | j                            d           d {V 	 cd d d            S # t          $ r}|                     |           Y d }~nd }~ww xY w	 d d d            d S # 1 swxY w Y   d S r  r  rO  s     rl   r   z#ConnectedUNIXDatagramSocket.receive  r  r  r  c                   K   | j         5  	 | j                            |           d {V  n,# t          $ r}|                     |           Y d }~nd }~ww xY wd d d            d S # 1 swxY w Y   d S ri   r  r  s      rl   r  z ConnectedUNIXDatagramSocket.send  r  r  rQ  r  r	  r  r2  s   @rl   r  r    se        7 7 7 7 7 7
0 0 0 00 0 0 0 0 0 0 0rn   r  c                  B    e Zd ZdZddZddZddZddZdd
ZddZ	dS )r=   rt   r_   c                6    t                               |           S ri   rz   r|   s    rl   r{   zEvent.__new__      ~~c"""rn   r}   c                6    t          j                    | _        d S ri   )r   r=   _Event__originalr   s    rl   r   zEvent.__init__  s    *,,rn   r   c                4    | j                                         S ri   )r  is_setr   s    rl   r  zEvent.is_set      %%'''rn   c                D   K   | j                                          d {V S ri   )r  r  r   s    rl   r  z
Event.wait  s,      _))+++++++++rn   r-   c                ^    | j                                         }t          |j                  S )N)tasks_waiting)r  
statisticsr-   r  r   orig_statisticss     rl   r  zEvent.statistics  s)    /4466_-JKKKKrn   c                8    | j                                          d S ri   )r  setr   s    rl   r  z	Event.set  s    rn   N)r_   r=   r   r   )r_   r-   )
r   r   r   r   r{   r   r  r  r  r  rj   rn   rl   r=   r=     s        I# # # #' ' ' '( ( ( (, , , ,L L L L     rn   r=   c                  n    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dS )r?   )_fast_acquireru   Ffast_acquirer  r   r_   c               6    t                               |           S ri   rz   r|   r  s     rl   r{   zLock.__new__  r  rn   r}   c               D    || _         t          j                    | _        d S ri   )r  r   r?   _Lock__original)r   r  s     rl   r   zLock.__init__  s    ))++rn   r   r   c                .    | j         dk    r	d| _         d S d S )N)z*attempt to re-acquire an already held Lock)z)Attempted to acquire an already held Lock)rb   )r   s    rl   _convert_runtime_error_msgzLock._convert_runtime_error_msg  s$    8FFFECHHH GFrn   c                  K   | j         sK	 | j                                         d {V  n(# t          $ r}|                     |            d }~ww xY wd S t
          j                                         d {V  	 | j                                         d S # t
          j	        $ r( | j        j
                                         d {V  Y d S t          $ r}|                     |            d }~ww xY wri   )r  r  acquirer   r  r   rq  checkpoint_if_cancelledacquire_nowaitr1   _lotparkrO  s     rl   r  zLock.acquire  s?     ! 	o--//////////   //444 F m33555555555	O**,,,,, 	. 	. 	./&++------------ 	 	 	++C000	s2   + 
AAA:B 3C/	C/C**C/c                    	 | j                                          d S # t          j        $ r	 t          d t          $ r}|                     |            d }~ww xY wri   )r  r  r   r1   r   r  rO  s     rl   r  zLock.acquire_nowait  ss    	O**,,,,, 	' 	' 	'$& 	 	 	++C000	s     AAAc                4    | j                                         S ri   )r  lockedr   s    rl   r  zLock.locked  r  rn   c                8    | j                                          d S ri   )r  releaser   s    rl   r  zLock.release      !!!!!rn   r.   c                    | j                                         }|j        rt          |j                  nd }t	          |j        ||j                  S ri   )r  r  ownerTrioTaskInfor.   r  r  )r   r  r  s      rl   r  zLock.statistics  sR    /44667F7LV_2333RV"E?+H
 
 	
rn   Nr  r   r_   r?   )r  r   r_   r}   )r   r   r_   r}   r   r   )r_   r.   )r   r   r   r   r{   r   staticmethodr  r  r  r  r  r  rj   rn   rl   r?   r?     s        -I-2 # # # # # # 05 & & & & & & F F F \F   (   ( ( ( (" " " "
 
 
 
 
 
rn   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   rt   NF	max_valuer  initial_valuer  r  r   r  r   r_   c               6    t                               |           S ri   rz   r|   r  r  r  s       rl   r{   zSemaphore.__new__  s     ~~c"""rn   r}   c                   t                                          |||           t          j        ||          | _        d S )Nr  )r  )r/  r   r   rC   _Semaphore__original)r   r  r  r  r   s       rl   r   zSemaphore.__init__  s>     	),WWW.)LLLrn   c                J  K   | j         s!| j                                         d {V  d S t          j                                         d {V  	 | j                                         d S # t          j        $ r( | j        j        	                                 d {V  Y d S w xY wri   )
r  r  r  r   rq  r  r  r1   r  r  r   s    rl   r  zSemaphore.acquire&  s      ! 	/))+++++++++F m33555555555	.O**,,,,, 	. 	. 	./&++------------	.s   A+ +3B"!B"c                p    	 | j                                          d S # t          j        $ r	 t          d w xY wri   )r  r  r   r1   r   s    rl   r  zSemaphore.acquire_nowait2  F    	'O**,,,,, 	' 	' 	'$&	'    5c                    | j         j        S ri   )r  r  r   s    rl   r  zSemaphore.max_value8  s    ((rn   c                    | j         j        S ri   )r  r   r   s    rl   r   zSemaphore.value<  s    $$rn   c                8    | j                                          d S ri   )r  r  r   s    rl   r  zSemaphore.release@  r  rn   rA   c                \    | j                                         }t          |j                  S ri   )r  r  rA   r  r  s     rl   r  zSemaphore.statisticsC  s&    /4466"?#@AAArn   )r  r  r  r   r  r   r_   rC   )r  r  r  r   r  r   r_   r}   r   r+  r*  )r_   rA   )r   r   r   r   r{   r   r  r  r   r  r   r  r  r1  r2  s   @rl   rC   rC     s       I !%"# # # # # # !%"M M M M M M M M
. 
. 
. 
.' ' ' ' ) ) ) X) % % % X%" " " "B B B B B B B Brn   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dS )/r;   rt   Nrv   total_tokensfloat | Nonerv   trio.CapacityLimiter | Noner_   c               6    t                               |           S ri   rz   )r|   r  rv   s      rl   r{   zCapacityLimiter.__new__K  s     ~~c"""rn   r}   c               V    |	|| _         d S |J t          j        |          | _         d S ri   )_CapacityLimiter__originalr   r;   )r   r  rv   s      rl   r   zCapacityLimiter.__init__S  s7     &DOOO+++"2<@@DOOOrn   c                D   K   | j                                          d {V S ri   )r  r   r   s    rl   r   zCapacityLimiter.__aenter___  s,      _//111111111rn   r   r   r   r   r   r   c                N   K   | j                             |||           d {V  d S ri   )r  r   r   s       rl   r   zCapacityLimiter.__aexit__b  s:       o'''6BBBBBBBBBBBrn   r   c                    | j         j        S ri   r  r  r   s    rl   r  zCapacityLimiter.total_tokensj  s    ++rn   r   c                    || j         _        d S ri   r  r   s     rl   r  zCapacityLimiter.total_tokensn  s    ',$$$rn   r  c                    | j         j        S ri   )r  borrowed_tokensr   s    rl   r  zCapacityLimiter.borrowed_tokensr  s    ..rn   c                    | j         j        S ri   )r  available_tokensr   s    rl   r  z CapacityLimiter.available_tokensv  r   rn   c                p    	 | j                                          d S # t          j        $ r	 t          d w xY wri   )r  r  r   r1   r   s    rl   r  zCapacityLimiter.acquire_nowaitz  r   r  borrowerrx   c                r    	 | j                             |           d S # t          j        $ r	 t          d w xY wri   )r  acquire_on_behalf_of_nowaitr   r1   r   r  s     rl   r  z+CapacityLimiter.acquire_on_behalf_of_nowait  sH    	'O77AAAAA 	' 	' 	'$&	's    6c                H   K   | j                                          d {V  d S ri   )r  r  r   s    rl   r  zCapacityLimiter.acquire  s2      o%%'''''''''''rn   c                J   K   | j                             |           d {V  d S ri   )r  acquire_on_behalf_ofr  s     rl   r  z$CapacityLimiter.acquire_on_behalf_of  s4      o228<<<<<<<<<<<rn   c                4    | j                                         S ri   )r  r  r   s    rl   r  zCapacityLimiter.release  s    &&(((rn   c                6    | j                             |          S ri   )r  release_on_behalf_ofr  s     rl   r!  z$CapacityLimiter.release_on_behalf_of  s    33H===rn   r,   c                    | j                                         }t          |j        |j        t          |j                  |j                  S )N)r  r  	borrowersr  )r  r  r,   r  r  tupler#  r  )r   origs     rl   r  zCapacityLimiter.statistics  sK    ))++( 0*DN++,	
 
 
 	
rn   ri   )r  r	  rv   r
  r_   r;   )r  r	  rv   r
  r_   r}   r   )r   r   r   r   r   r   r_   r}   r   r   r*  )r  rx   r_   r}   )r_   r,   )r   r   r   r   r{   r   r   r   r   r  r   r  r  r  r  r  r  r  r!  r  rj   rn   rl   r;   r;   H  s       I &*# 15	# # # # # # &*
A 15	
A 
A 
A 
A 
A 
A2 2 2 2C C C C , , , X, - - - - / / / X/ 0 0 0 X0' ' ' '' ' ' '( ( ( (= = = =) ) ) )> > > >
 
 
 
 
 
rn   r;   _capacity_limiter_wrapperc                  B    e Zd ZU ded<   ddZddZddZddZddZdS )_SignalReceiverzAsyncIterator[int]	_iteratorsignalstuple[Signals, ...]c                    || _         d S ri   )_signals)r   r*  s     rl   r   z_SignalReceiver.__init__  s    rn   r_   c                r    t          j        | j         | _        | j                                        | _        | S ri   )r   open_signal_receiverr-  _cmr   r)  r   s    rl   r   z_SignalReceiver.__enter__  s-    ,dm<++--rn   r   r   r   r   r   r   bool | Nonec                :    | j                             |||          S ri   )r0  r   r   s       rl   r   z_SignalReceiver.__exit__  s     x  7F;;;rn   c                    | S ri   rj   r   s    rl   	__aiter__z_SignalReceiver.__aiter__  s    rn   r   c                b   K   | j                                          d {V }t          |          S ri   )r)  	__anext__r   )r   signums     rl   r6  z_SignalReceiver.__anext__  s7      ~//11111111vrn   N)r*  r+  )r_   r(  )r   r   r   r   r   r   r_   r1  )r_   r   )	r   r   r   r   r   r   r   r4  r6  rj   rn   rl   r(  r(    s         !!!!          
< < < <        rn   r(  c                  V    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d%S )/
TestRunneroptionsr   r_   r}   c                L    ddl m}  |            | _        d | _        || _        d S )Nr   )Queue)queuer<  _call_queue_send_stream_options)r   r:  r<  s      rl   r   zTestRunner.__init__  s<    8=  	  rn   r   r   r   r   r   types.TracebackType | Nonec                    | j         rJ| j                                          | j         , | j                                                     | j         (d S d S d S ri   )r?  r   r>  getr   s       rl   r   zTestRunner.__exit__  sk      	)##%%%#/& $$&&((( #///	) 	)//rn   r   c                >    t           j                                        S ri   )r   rq  in_trio_taskr   s    rl   
is_runningzTestRunner.is_running  s    }))+++rn   c                  K   t          t          t          t                   t          t
                   f                  d          \  | _        }|5  |2 3 d {V \  }}	 | d {V }|                    t          |                     6# t          $ r,}|                    t          |                     Y d }~gd }~ww xY w6 	 d d d            d S # 1 swxY w Y   d S r  )r9   r$  r   r   rz  r"   r?  r  r#   r  r!   )r   receive_streamrk   outcome_holderretvalr   s         rl   _run_tests_and_fixturesz"TestRunner._run_tests_and_fixtures  sZ     ,G)C.$w-/0-

- -)>  	9 	93A 9 9 9 9 9 9 9/i9#,______F #))%--8888 % 6 6 6"))%**555555556 4B>	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9sH   CCCB%#C
B>"B94C9B>>CCCoutcomerx   c                    d | _         d S ri   )r?  )r   rL  s     rl   _main_task_finishedzTestRunner._main_task_finished  s     rn   r]   r^   rb   rc   rd   re   rW   c                  | j         bt          j        j        | j        f| j        j        | j        d| j         | j         ( | j        	                                             | j         (g }| j         
                     ||i ||f           |s# | j        	                                             |#|d                                         S )N)run_sync_soon_threadsafedone_callbackr   )r?  r   rq  start_guest_runrK  r>  putrN  r@  rC  send_nowaitunwrap)r   r]   rb   rd   rI  s        rl   _call_in_runner_taskzTestRunner._call_in_runner_task  s     $M),)-)9)="6  -	   #+& $$&&((( #+ )+%%ttT'<V'<'<n&MNNN  	%"D  ""$$$ ! 	% a '')))rn   fixture_func,Callable[..., AsyncGenerator[T_Retval, Any]]dict[str, Any]Iterable[T_Retval]c              #     K    |di |}|                      |j        d           }|V  	 |                      |j        d            |                      |j                   t          d          # t          $ r Y d S w xY w)Nz$Async generator fixture did not stoprj   )rV  asendr   r   StopAsyncIteration)r   rW  rd   asyncgenfixturevalues        rl   run_asyncgen_fixturezTestRunner.run_asyncgen_fixture  s      
  <))&))!%!:!:8>4!P!P	G%%hnd;;; %%ho666EFFF	 " 	 	 	DD	s   A/ /
A=<A=,Callable[..., Coroutine[Any, Any, T_Retval]]c                     | j         |fi |S ri   rV  )r   rW  rd   s      rl   run_fixturezTestRunner.run_fixture  s    
 )t(@@@@@rn   	test_func'Callable[..., Coroutine[Any, Any, Any]]c                "     | j         |fi | d S ri   rc  )r   re  rd   s      rl   run_testzTestRunner.run_test  s%     	"!)66v66666rn   N)r:  r   r_   r}   )r   r   r   r   r   rA  r_   r}   r   r   )rL  rx   r_   r}   )r]   r^   rb   rc   rd   re   r_   rW   )rW  rX  rd   rY  r_   rZ  )rW  ra  rd   rY  r_   rW   )re  rf  rd   rY  r_   r}   )r   r   r   r   r   rF  rK  rN  rV  r`  rd  rh  rj   rn   rl   r9  r9    s               	) 	) 	) 	), , , ,9 9 9 9! ! ! !* * * *0G G G G$A A A A7 7 7 7 7 7rn   r9  c                  (     e Zd Zd fdZddZ xZS )	r  tasktrio.lowlevel.Taskc                   d }|j         r%|j         j        rt          |j         j                  }t                                          t          |          ||j        |j                   t          j        |          | _	        d S ri   )
parent_nurseryparent_taskidr/  r   r   r   weakrefproxy_task)r   rj  	parent_idr   s      rl   r   zTrioTaskInfo.__init__$  sp    	 	<4#6#B 	<4.:;;ID9diCCC]4((


rn   r_   r   c                H    	 | j         j        j        S # t          $ r Y dS w xY wrA  )rr  _cancel_statuseffectively_cancelledReferenceErrorr   s    rl   has_pending_cancellationz%TrioTaskInfo.has_pending_cancellation,  s9    	:,BB 	 	 	 55	s    
!!)rj  rk  r   )r   r   r   r   rx  r1  r2  s   @rl   r  r  #  sQ        ) ) ) ) ) )       rn   r  c                     e Zd Zedd
            Zedd            Zedd            Zedd            Zedd            Zedd            Z	edd            Z
edd            Zeej        dddd            Zedd            Zedd             Zedd"            Zedd%            Zed&dd'dd-            Zedd0            Ze	 	 ddd5            Zedd6            Zedd:            Zedd;            ZeddD            ZeddG            Ze	 dddN            ZeddR            ZeddV            ZeddW            Zedd]            Zee dda                        Z!ee ddc                        Z!eddf            Z!edgdgdgdgdhddq            Z"e	 dddu            Z#eddx            Z$eddy            Z%eddz            Z&edd{            Z'edd|            Z(edd~            Z)edd            Z*edd            Z+edd            Z,edd            Z-edd            Z.edd            Z/edd            Z0edd            Z1edd            Z2edd            Z3d&S )TrioBackendr]   1Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]]rb   tuple[Unpack[PosArgsT]]rd   rY  r:  r_   rW   c                ^    |r
J d            t          j        t          |          g|R i |S )Nz&unreachable, and not supported by Trio)r   r   rr   )r|   r]   rb   rd   r:  s        rl   r   zTrioBackend.run6  sB     CCCCCCx+D11DDDDDGDDDrn   rx   c                >    t           j                                        S ri   )r   rq  current_trio_tokenr  s    rl   current_tokenzTrioBackend.current_tokenA  s    }//111rn   r   c                (    t          j                    S ri   )r   current_timer  s    rl   r  zTrioBackend.current_timeE  s     """rn   type[BaseException]c                    t           j        S ri   )r   r   r  s    rl   cancelled_exception_classz%TrioBackend.cancelled_exception_classI  s
    ~rn   r}   c                R   K   t           j                                         d {V  d S ri   )r   rq  rr  r  s    rl   rr  zTrioBackend.checkpointM  s2      m&&(((((((((((rn   c                R   K   t           j                                         d {V  d S ri   )r   rq  r  r  s    rl   r  z#TrioBackend.checkpoint_if_cancelledQ  s2      m3355555555555rn   c                R   K   t           j                                         d {V  d S ri   )r   rq  cancel_shielded_checkpointr  s    rl   r  z&TrioBackend.cancel_shielded_checkpointU  s2      m6688888888888rn   delayc                >   K   t          j        |           d {V  d S ri   )r   r7  )r|   r  s     rl   r7  zTrioBackend.sleepY  s.      jrn   Fr   r   r   r   r   abc.CancelScopec               $    t          ||          S )Nr  rD   )r|   r   r   s      rl   create_cancel_scopezTrioBackend.create_cancel_scope]  s     HV<<<<rn   c                (    t          j                    S ri   )r   current_effective_deadliner  s    rl   r  z&TrioBackend.current_effective_deadlinec  s    .000rn   abc.TaskGroupc                    t                      S ri   )r   r  s    rl   create_task_groupzTrioBackend.create_task_groupg  s    {{rn   	abc.Eventc                    t                      S ri   r<   r  s    rl   create_eventzTrioBackend.create_eventk  s    wwrn   r  r?   c               "    t          |          S )Nr  r>   r  s     rl   create_lockzTrioBackend.create_locko  s    ....rn   Nr  r  r  r  r   abc.Semaphorec               &    t          |||          S )Nr  rB   r  s       rl   create_semaphorezTrioBackend.create_semaphores  s     ),WWWWrn   r  r;   c                     t          |          S ri   r:   )r|   r  s     rl   create_capacity_limiterz#TrioBackend.create_capacity_limiter}  s    |,,,rn   &Callable[[Unpack[PosArgsT]], T_Retval]abandon_on_cancellimiterabc.CapacityLimiter | Nonec                   K   dfd}t                                           t          ||t          t          j        |                     d {V S )Nr_   rW   c                 l    t          t                    5     cd d d            S # 1 swxY w Y   d S ri   )r3   rz  )rb   r]   tokens   rl   rq   z6TrioBackend.run_sync_in_worker_thread.<locals>.wrapper  s    $[%88 # #tT{# # # # # # # # # # # # # # # # # #s   )--)r  r  ro   )rz  r  r*   r   r   r;   )r|   r]   rb   r  r  rq   r  s    ``   @rl   run_sync_in_worker_threadz%TrioBackend.run_sync_in_worker_thread  s      	# 	# 	# 	# 	# 	# 	# 	# ))++/-w77
 
 
 
 
 
 
 
 
 	
rn   c                B    t           j                                         d S ri   )r   from_threadcheck_cancelledr  s    rl   r  zTrioBackend.check_cancelled  s    ((*****rn   r   r  rX   c                    t          d|          }	 t          j        j        |g|R 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|   r]   rb   r  r  s        rl   run_async_from_threadz!TrioBackend.run_async_from_thread  sc     :EBB
	-#'KtKKK
KKK$ 	- 	- 	-",	-	   , Ac                    t          d|          }	 t          j        j        |g|R d|iS # t          j        $ r	 t          d w xY wr  )r   r   r  r*   r/   r  s        rl   run_sync_from_threadz TrioBackend.run_sync_from_thread  sc     :EBB
	-#,TPDPPPZPPP$ 	- 	- 	-",	-r  command)StrOrBytesPath | Sequence[StrOrBytesPath]r$  int | IO[Any] | Noner&  r)  r   r  c                 
K   d
d
t          |t          t          t          f          r,t	          j        j         
|          f|||dd| d {V }n.t	          j        j        
fd|D             f|||d	d| d {V }|j        rt          |j                  nd }|j	        rt          |j	                  nd }|j        rt          |j                  nd }	t          ||||	          S )Nr  rK   r_   strc                    t          j        |           }t          |t                    r|S t          j        |          S ri   )osfspathrp   r  fsdecode)r  str_or_bytess     rl   convert_itemz.TrioBackend.open_process.<locals>.convert_item  s7    9T??L,,, 1##{<000rn   T)r$  r&  r)  shellc                &    g | ]} |          S rj   rj   ).0r  r  s     rl   
<listcomp>z,TrioBackend.open_process.<locals>.<listcomp>  s#    888d##888rn   F)r  rK   r_   r  )rp   r  r   r   r   rq  open_processr$  r  r&  r   r)  r  )r|   r  r$  r&  r)  rd   r:  stdin_streamstdout_streamstderr_streamr  s             @rl   r  zTrioBackend.open_process  so     	1 	1 	1 	1 gUH566 	 M6W%%         GG !M68888888         G <C=R(777d@GX,W^<<<TX@GX,W^<<<TXwm]KKKrn   r4  r5  c                P    t           j                            t          |           d S ri   )r   rq  spawn_system_taskr;  )r|   r4  s     rl   #setup_process_pool_exit_at_shutdownz/TrioBackend.setup_process_pool_exit_at_shutdown  s!    ''(>HHHHHrn   hostr  portlocal_addressIPSockAddrType | NonerS  c                  K   d|v rt           j        nt           j        }t          j                              |          }|                    t           j        t           j        d           |r|                    |           d {V  	 |                    ||f           d {V  n## t          $ r |
                                  w xY wt          |          S )N:r   )rf  AF_INET6AF_INETr   r  r  r  bindconnectr  r   rS  )r|   r  r  r  familyr>  s         rl   connect_tcpzTrioBackend.connect_tcp  s       %(4KKV^k((00v163EqIII 	2""=111111111	%%tTl3333333333 	 	 		 K(((s   B% % Cpathstr | bytesabc.UNIXSocketStreamc                   K   t           j                            t          j                  }	 |                    |           d {V  n## t          $ r |                                  w xY wt          |          S ri   )r   rf  AF_UNIXr  r  r   rj  )r|   r  r>  s      rl   connect_unixzTrioBackend.connect_unix  s      k((88	%%d++++++++++ 	 	 		  ,,,s   A	 	 A)sockrH  abc.SocketListenerc                     t          |          S ri   )r  r|   r  s     rl   create_tcp_listenerzTrioBackend.create_tcp_listener  s     &&&rn   c                     t          |          S ri   )r  r  s     rl   create_unix_listenerz TrioBackend.create_unix_listener   s    !$'''rn   r  socket.AddressFamilyremote_address
reuse_portUDPSocket | ConnectedUDPSocketc                f  K   t           j                            |t          j                  }|r+|                    t          j        t          j        d           |r|                    |           d {V  |r*|                    |           d {V  t          |          S t          |          S )N)r  typer   )
r   rf  
SOCK_DGRAMr  rv  SO_REUSEPORTr  r  r  r  )r|   r  r  r  r  r>  s         rl   create_udp_socketzTrioBackend.create_udp_socket  s       k((V=N(OO 	N""6#4f6I1MMM 	2""=111111111 	*%%n555555555%k222[)))rn   r  remote_pathabc.UNIXDatagramSocketc                
   K   d S ri   rj   r|   r  r  s      rl   create_unix_datagram_socketz'TrioBackend.create_unix_datagram_socket  s       "%rn   abc.ConnectedUNIXDatagramSocketc                
   K   d S ri   rj   r  s      rl   r  z'TrioBackend.create_unix_datagram_socket   s       +.#rn   str | bytes | None8abc.UNIXDatagramSocket | abc.ConnectedUNIXDatagramSocketc                   K   t           j                            |          }|r*|                    |           d {V  t	          |          S t          |          S ri   )r   rf  r  r  r  r  )r|   r  r  r>  s       rl   r  z'TrioBackend.create_unix_datagram_socket&  sg       k44Z@@ 	3%%k222222222.{;;;%k222rn   r   )r  r  protor~  bytes | str | Nonestr | int | Noneint | AddressFamilyr  int | SocketKindr  r~  uSequence[tuple[AddressFamily, SocketKind, int, str, tuple[str, int] | tuple[str, int, int, int] | tuple[int, bytes]]]c               Z   K   t           j                            ||||||           d {V S ri   )r   rf  getaddrinfo)r|   r  r  r  r  r  r~  s          rl   r  zTrioBackend.getaddrinfo2  s:      & [,,T4ueTTTTTTTTTrn   sockaddrrG   tuple[str, str]c                R   K   t           j                            ||           d {V S ri   )r   rf  getnameinfo)r|   r  r~  s      rl   r  zTrioBackend.getnameinfoG  s2       [,,Xu=========rn   objrP   c                   K   	 t          |           d {V  d S # t          j        $ r,}t                                          |j                  d d }~wt          j        $ r t          d          d w xY w)NrV  )r'   r   r6   with_traceback__traceback__r5   r|   r   r   s      rl   r'   zTrioBackend.wait_readableM  s      	>$$$$$$$$$$$' 	T 	T 	T%''66s7HIItS% 	> 	> 	>#N33=	>    A4'A#A4c                   K   	 t          |           d {V  d S # t          j        $ r,}t                                          |j                  d d }~wt          j        $ r t          d          d w xY w)NrW  )r(   r   r6   r  r  r5   r  s      rl   r(   zTrioBackend.wait_writableV  s      	<$$$$$$$$$$$' 	T 	T 	T%''66s7HIItS% 	< 	< 	<#L11t;	<r  c                $    t          |           d S ri   )r&   )r|   r   s     rl   r&   zTrioBackend.notify_closing_  s    srn   c                   K   t          t          d          r$|j        t          j        k    rt	          |          S t          |          S )Nr  )hasattrrf  r  r  r  r  r  s     rl   wrap_listener_socketz TrioBackend.wrap_listener_socketc  sB      69%% 	,$+*G*G%d+++ &&&rn   c                b   K   t           j                            |          }t          |          S ri   )r   rf  r  rS  r|   r  	trio_socks      rl   wrap_stream_socketzTrioBackend.wrap_stream_socketj  s)      K22488	I&&&rn   rj  c                b   K   t           j                            |          }t          |          S ri   )r   rf  r  rj  r  s      rl   wrap_unix_stream_socketz#TrioBackend.wrap_unix_stream_socketo  s)      K22488		***rn   r  c                b   K   t           j                            |          }t          |          S ri   )r   rf  r  r  r  s      rl   wrap_udp_socketzTrioBackend.wrap_udp_sockett  s)      K22488	###rn   r  c                b   K   t           j                            |          }t          |          S ri   )r   rf  r  r  r  s      rl   wrap_connected_udp_socketz%TrioBackend.wrap_connected_udp_sockety  )      K22488	!),,,rn   r  c                b   K   t           j                            |          }t          |          S ri   )r   rf  r  r  r  s      rl   wrap_unix_datagram_socketz%TrioBackend.wrap_unix_datagram_socket~  r  rn   r  c                b   K   t           j                            |          }t          |          S ri   )r   rf  r  r  r  s      rl   #wrap_connected_unix_datagram_socketz/TrioBackend.wrap_connected_unix_datagram_socket  s+       K22488	*9555rn   c                    	 t                                           S # t          $ rK t          t          j                                                  }t                               |           |cY S w xY w)Nr  )r&  rC  LookupErrorr;   r   	to_threadcurrent_default_thread_limiterr  )r|   r  s     rl   r  z*TrioBackend.current_default_thread_limiter  sx    	,00222 	 	 	%FFHH  G &))'222NNN	s    AA0/A0r*  r   .AbstractContextManager[AsyncIterator[Signals]]c                     t          |          S ri   )r(  )r|   r*  s     rl   r/  z TrioBackend.open_signal_receiver  s     w'''rn   r0   c                <    t                      }t          |          S ri   )r%   r  )r|   rj  s     rl   get_current_taskzTrioBackend.get_current_task  s    ~~D!!!rn   Sequence[TaskInfo]c                    t                      }|sJ t          |          g}|j        }|rQg }|D ]H}|j        D ]>}|                    t          |                     |                    |j                   ?I|}|Q|S ri   )r$   r  child_nurserieschild_tasksr  extend)r|   	root_task
task_infos	nurseriesnew_nurseriesnurseryrj  s          rl   get_running_taskszTrioBackend.get_running_tasks  s    %''	"9--.
-	 	&02M$ ? ?#/ ? ?D%%l4&8&8999!(()=>>>>? &I  	& rn   c                6   K   ddl m}  |             d {V  d S )Nr   )wait_all_tasks_blocked)trio.testingr.  )r|   r.  s     rl   r.  z"TrioBackend.wait_all_tasks_blocked  s?      777777$$&&&&&&&&&&&rn   r9  c                    t          di |S r   )r9  )r|   r:  s     rl   create_test_runnerzTrioBackend.create_test_runner  s    $$G$$$rn   )
r]   r{  rb   r|  rd   rY  r:  rY  r_   rW   )r_   rx   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;   )FN)
r]   r  rb   r|  r  r   r  r  r_   rW   )r]   r   rb   r|  r  rx   r_   rX   )r]   r  rb   r|  r  rx   r_   rW   )r  r  r$  r  r&  r  r)  r  rd   r   r_   r  r4  r5  r_   r}   ri   )r  r  r  r  r  r  r_   rS  )r  r  r_   r  )r  rH  r_   r  )
r  r  r  r  r  r  r  r   r_   r  )r  rH  r  r}   r_   r  )r  rH  r  r  r_   r  )r  rH  r  r  r_   r  )r  r  r  r  r  r  r  r  r  r  r~  r  r_   r  )r   )r  rG   r~  r  r_   r  )r   rP   r_   r}   )r  rH  r_   rS  )r  rH  r_   rj  )r  rH  r_   r  )r  rH  r_   r  )r  rH  r_   r  )r  rH  r_   r  )r_   r;   )r*  r   r_   r  )r_   r0   )r_   r"  )r:  rY  r_   r9  )4r   r   r   classmethodr   r  r  r  rr  r  r  r7  r8  r9  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.  r1  rj   rn   rl   rz  rz  5  sw       E E E [E 2 2 2 [2 # # # [#    [ ) ) ) [) 6 6 6 [6 9 9 9 [9       [  "&(5= = = = = [=
 1 1 1 [1    [    [ / / / [/ 
 !%"X X X X X [X - - - [- 
 #(.2
 
 
 
 [
$ + + + [+ 
- 
- 
- [
- 
- 
- 
- [
- &L &L &L [&LP I I I [I JN) ) ) ) [)" - - - [- ' ' ' [' ( ( ( [( * * * [** % % % X [% . . . X [. 	3 	3 	3 [	3  '(!"U U U U U [U( 45> > > > [>
 > > > [> < < < [<    [ ' ' ' [' ' ' ' [' + + + [+ $ $ $ [$ - - - [- - - - [- 6 6 6 [6    [ ( ( ( [(
 " " " ["    [  ' ' ' ['
 % % % [% % %rn   rz  )r]   r^   r_   r`   r2  )
__future__r   rp  r8  r  rf  systypesrp  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.lowlevelrL  r!   r"   r#   r$   r%   r&   r'   r(   trio.socketr)   r?  trio.to_threadr*    r,   r-   r.   r/   r0   r1   r2   _core._eventloopr3   _core._exceptionsr4   r5   r6   r7   _core._socketsr8   _core._streamsr9   _core._synchronizationr;   BaseCapacityLimiterr=   	BaseEventr?   BaseLockr@   rA   rC   BaseSemaphore_core._tasksrE   BaseCancelScoperF   rG   rH   rI   abc._eventlooprJ   rK   
abc._tasksrL   rM   rN   streams.memoryrO   	_typeshedrP   version_inforS   rT   exceptiongrouprU   typing_extensionsrV   rW   rX   r  rZ   r[   r\   rr   rq  RunVarrx   r   
TaskStatusr   r   ByteReceiveStreamr   ByteSendStreamr  r  
Instrumentr-  r3  r   r;  r=  rS  rj  SocketListenerr  r  r  r  r  r  r&  r(  r9  r  rz  backend_classrj   rn   rl   <module>r\     s
   " " " " " " "   				  



  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 . - - - - -       ! ! ! ! ! ! $ $ $ $ $ $ $ $                   , , , , , , , ,                                      ) ) ) ) ) ) ) ) ) )              5 4 4 4 4 4 # # # # # #                  3 2 2 2 2 2            3 2 2 2 2 2 8 8 8 8 8 8      8 7 7 7 7 7 5 5 5 5 5 5        @ ? ? ? ? ? 9 9 9 9 9 9 % % % % % % G G G G G G G G G G 9 9 9 9 9 9 9 9 H H H H H H H H H H 3 3 3 3 3 3 -,,,,,,w+++++++++11111166666666GCLL7:wv&&&W\377
<
##IcNN   8 
	0' 0' 0' 0' 0'/ 0' 0' 0'n FHH 1 1 1 1 1gh')A 1 1 1a a a a a a a aR e$ $ $ $ $30 $ $ $. e$ $ $ $ $* $ $ $ e5 5 5 5 5ck 5 5 5p    TX%8   
 @Fv,@ @ &    

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