o
    Þ­j–¡  ã                   @  s¦  U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
mZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' d dl(Z)d dl*Z)d dl+m,Z,m-Z-m.Z. d dl*m/Z/m0Z0m1Z1m2Z2m3Z3 d dl4m5Z6 d dl7m8Z8 ddl9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@ ddlAmBZB ddlCmDZDmEZEmFZFmGZG ddlHmIZI ddlJmKZK ddlLmMZN ddlLmOZP ddlLmQZR ddlLmSZSmTZT ddlLmUZV ddlWmXZY ddl@mZZZm[Z[m\Z\ ddl]m^Z^m_Z_ ddl`maZa e �rd dlbmcZc ejdd k�r+d d!lmeZemfZf nd d"lgmhZh d d!limeZemfZf e%d#ƒZje%d$ƒZke%d%eleZƒZmeed&ƒZne$d'ƒZoe)jpjqZqG d(d)„ d)eYƒZXG d*d+„ d+e@jrƒZred,d-�G d.d/„ d/e@jsƒƒZted,d-�G d0d1„ d1e@juƒƒZved,d-�G d2d3„ d3e@jwƒƒZwG d4d5„ d5e)j@jxƒZyeqd6ƒZzd7e{d6< dad<d=„Z|G d>d?„ d?e"em ƒZ}G d@dA„ dAe}e@j~ƒZ~G dBdC„ dCe~e@jƒZG dDdE„ dEe}e@j€ƒZ�G dFdG„ dGe}e@j€ƒZ‚G dHdI„ dIe}eZ e@jƒƒZƒG dJdK„ dKe}eZ e@j„ƒZ„G dLdM„ dMe}el e@j…ƒZ…G dNdO„ dOe}el e@j†ƒZ†G dPdQ„ dQePƒZOG dRdS„ dSeRƒZQG dTdU„ dUeVƒZUG dVdW„ dWeNƒZMeqdXƒZ‡d7e{dX< G dYdZ„ dZƒZˆG d[d\„ d\e@j‰ƒZ‰G d]d^„ d^e>ƒZŠG d_d`„ d`e^ƒZ‹e‹ZŒdS )bé    )ÚannotationsN)ÚAsyncGeneratorÚAsyncIteratorÚ	AwaitableÚCallableÚ
CollectionÚ	CoroutineÚIterableÚSequence)ÚAbstractContextManager)Ú	dataclass)ÚIOBase)ÚPathLike)ÚSignals)ÚAddressFamilyÚ
SocketKind)ÚTracebackType)	ÚIOÚTYPE_CHECKINGÚAnyÚGenericÚNoReturnÚ	ParamSpecÚTypeVarÚcastÚoverload)ÚErrorÚOutcomeÚValue)Úcurrent_root_taskÚcurrent_taskÚnotify_closingÚwait_readableÚwait_writable)Ú
SocketType)Úrun_syncé   )ÚCapacityLimiterStatisticsÚEventStatisticsÚLockStatisticsÚRunFinishedErrorÚTaskInfoÚ
WouldBlockÚabc)Úclaim_worker_thread)ÚBrokenResourceErrorÚBusyResourceErrorÚClosedResourceErrorÚEndOfStream)Úconvert_ipv6_sockaddr)Úcreate_memory_object_stream©ÚCapacityLimiter©ÚEvent©ÚLock)ÚResourceGuardÚSemaphoreStatistics©Ú	Semaphore©ÚCancelScope)ÚIPSockAddrTypeÚUDPPacketTypeÚUNIXDatagramPacketType)ÚAsyncBackendÚStrOrBytesPath)ÚMemoryObjectSendStream)ÚFileDescriptorLike)é   é   )ÚTypeVarTupleÚUnpack)ÚBaseExceptionGroupÚTÚT_RetvalÚ
T_SockAddrÚPosArgsTÚPc                   @  sž   e Zd Z	d(d)dd„Zd(d*dd„Zd+dd„Zd,dd„Zd(d-dd„Zed.dd„ƒZ	e	j
d/d d„ƒZ	ed0d!d"„ƒZed0d#d$„ƒZed0d%d&„ƒZej
d1d'd&„ƒZdS )2r@   NÚoriginalútrio.CancelScope | NoneÚkwargsÚobjectÚreturnc                 K  ó
   t  | ¡S ©N©rU   Ú__new__)ÚclsrR   rT   © r\   úR/var/www/html/CropPilot/venv/lib/python3.10/site-packages/anyio/_backends/_trio.pyrZ   r   s   
zCancelScope.__new__r   ÚNonec                 K  s   |p	t jdi |¤Ž| _d S ©Nr\   )Útrior@   Ú_CancelScope__original)ÚselfrR   rT   r\   r\   r]   Ú__init__w   s   zCancelScope.__init__c                 C  s   | j  ¡  | S rX   )ra   Ú	__enter__©rb   r\   r\   r]   rd   z   s   
zCancelScope.__enter__Úexc_typeútype[BaseException] | NoneÚexc_valúBaseException | NoneÚexc_tbúTracebackType | NoneÚboolc                 C  ó   | j  |||¡S rX   )ra   Ú__exit__©rb   rf   rh   rj   r\   r\   r]   rn   ~   ó   zCancelScope.__exit__Úreasonú
str | Nonec                 C  ó   | j  |¡ d S rX   )ra   Úcancel)rb   rq   r\   r\   r]   rt   †   ó   zCancelScope.cancelÚfloatc                 C  ó   | j jS rX   ©ra   Údeadlinere   r\   r\   r]   ry   ‰   ó   zCancelScope.deadlineÚvaluec                 C  ó   || j _d S rX   rx   ©rb   r{   r\   r\   r]   ry   �   ó   c                 C  rw   rX   )ra   Úcancel_calledre   r\   r\   r]   r   ‘   rz   zCancelScope.cancel_calledc                 C  rw   rX   )ra   Úcancelled_caughtre   r\   r\   r]   r€   •   rz   zCancelScope.cancelled_caughtc                 C  rw   rX   ©ra   Úshieldre   r\   r\   r]   r‚   ™   rz   zCancelScope.shieldc                 C  r|   rX   r�   r}   r\   r\   r]   r‚   �   r~   rX   )rR   rS   rT   rU   rV   r@   )rR   rS   rT   r   rV   r^   )rV   r@   ©rf   rg   rh   ri   rj   rk   rV   rl   )rq   rr   rV   r^   ©rV   rv   ©r{   rv   rV   r^   ©rV   rl   )r{   rl   rV   r^   )Ú__name__Ú
__module__Ú__qualname__rZ   rc   rd   rn   rt   Úpropertyry   Úsetterr   r€   r‚   r\   r\   r\   r]   r@   q   s&    ÿ

r@   c                   @  sJ   e Zd Zddd„Zddd„Zd dd„Zddœd!dd„Zddœd"dd„ZdS )#Ú	TaskGrouprV   r^   c                 C  s   d| _ tjdd�| _d | _d S )NFT)Ústrict_exception_groups)Ú_activer`   Úopen_nurseryÚ_nursery_managerÚcancel_scopere   r\   r\   r]   rc   ¨   s   
zTaskGroup.__init__c                 Ã  s,   �d| _ | j ¡ I d H | _t| jjƒ| _| S )NT)rŽ   r�   Ú
__aenter__Ú_nurseryr@   r‘   re   r\   r\   r]   r’   ­   s
   €zTaskGroup.__aenter__rf   rg   rh   ri   rj   rk   rl   c              
   Ã  sl   �z.z| j  |||¡I d H W W ~~d| _S  ty/ } z| tj¡d s*tj ¡ |‚‚ d }~ww ~~d| _w )NFé   )r�   Ú	__aexit__rŽ   rL   Úsplitr`   Ú	CancelledÚ_create)rb   rf   rh   rj   Úexcr\   r\   r]   r•   ³   s   €ù€üzTaskGroup.__aexit__N)ÚnameÚfuncú,Callable[[Unpack[PosArgsT]], Awaitable[Any]]ÚargsúUnpack[PosArgsT]rš   rU   c                G  s,   | j stdƒ‚| jj|g|¢R d|iŽ d S ©Nz;This task group is not active; no new tasks can be started.rš   )rŽ   ÚRuntimeErrorr“   Ú
start_soon©rb   r›   rš   r�   r\   r\   r]   r¡   Å   s
   ÿzTaskGroup.start_soonúCallable[..., Awaitable[Any]]r   c                Ç  s0   �| j stdƒ‚| jj|g|¢R d|iŽI d H S rŸ   )rŽ   r    r“   Ústartr¢   r\   r\   r]   r¤   Ò   s   €ÿ zTaskGroup.start©rV   r^   )rV   rŒ   rƒ   )r›   rœ   r�   rž   rš   rU   rV   r^   )r›   r£   r�   rU   rš   rU   rV   r   )r‡   rˆ   r‰   rc   r’   r•   r¡   r¤   r\   r\   r\   r]   rŒ   §   s    


üÿrŒ   F)Úeqc                   @  s,   e Zd ZU ded< dddd	„Zddd„ZdS )ÚReceiveStreamWrapperztrio.abc.ReceiveStreamÚ_streamNÚ	max_bytesú
int | NonerV   Úbytesc              
   Ã  sl   �z| j  |¡I d H }W n! tjy } zt|j‚d }~w tjy- } zt|j‚d }~ww |r4t|ƒS t‚rX   )r¨   Úreceive_somer`   r1   Ú	__cause__r/   r«   r2   ©rb   r©   Údatar™   r\   r\   r]   Úreceiveæ   s   €€€ÿzReceiveStreamWrapper.receiver^   c                 Ã  ó   �| j  ¡ I d H  d S rX   ©r¨   Úaclosere   r\   r\   r]   r³   ó   ó   €zReceiveStreamWrapper.acloserX   )r©   rª   rV   r«   r¥   )r‡   rˆ   r‰   Ú__annotations__r°   r³   r\   r\   r\   r]   r§   â   s   
 r§   c                   @  s*   e Zd ZU ded< ddd„Zdd	d
„ZdS )ÚSendStreamWrapperztrio.abc.SendStreamr¨   Úitemr«   rV   r^   c              
   Ã  s^   �z| j  |¡I d H  W d S  tjy } zt|j‚d }~w tjy. } zt|j‚d }~ww rX   )r¨   Úsend_allr`   r1   r­   r/   ©rb   r·   r™   r\   r\   r]   Úsendû   s   €€€ÿzSendStreamWrapper.sendc                 Ã  r±   rX   r²   re   r\   r\   r]   r³     r´   zSendStreamWrapper.acloseN©r·   r«   rV   r^   r¥   )r‡   rˆ   r‰   rµ   rº   r³   r\   r\   r\   r]   r¶   ÷   s   
 
r¶   c                   @  s¦   e Zd ZU ded< ded< ded< ded< d#d
d„Zd$dd„Zd#dd„Zd#dd„Zd%dd„Ze	d$dd„ƒZ
e	d&dd„ƒZe	d'dd„ƒZe	d(dd„ƒZe	d(d d!„ƒZd"S ))ÚProcessztrio.ProcessÚ_processúabc.ByteSendStream | NoneÚ_stdinúabc.ByteReceiveStream | NoneÚ_stdoutÚ_stderrrV   r^   c                 Ã  sÔ   �t dd��) | jr| j ¡ I d H  | jr| j ¡ I d H  | jr(| j ¡ I d H  W d   ƒ n1 s2w   Y  z
|  ¡ I d H  W d S  tyi   |  ¡  t dd�� |  ¡ I d H  W d   ƒ ‚ 1 scw   Y  ‚ w ©NT)r‚   )r@   r¿   r³   rÁ   rÂ   ÚwaitÚBaseExceptionÚkillre   r\   r\   r]   r³     s*   €€ú
ÿþüzProcess.acloseÚintc                 Ã  ó   �| j  ¡ I d H S rX   )r½   rÄ   re   r\   r\   r]   rÄ     ó   €zProcess.waitc                 C  ó   | j  ¡  d S rX   )r½   Ú	terminatere   r\   r\   r]   rË   "  ó   zProcess.terminatec                 C  rÊ   rX   )r½   rÆ   re   r\   r\   r]   rÆ   %  rÌ   zProcess.killÚsignalr   c                 C  rs   rX   )r½   Úsend_signal)rb   rÍ   r\   r\   r]   rÎ   (  ru   zProcess.send_signalc                 C  rw   rX   )r½   Úpidre   r\   r\   r]   rÏ   +  rz   zProcess.pidrª   c                 C  rw   rX   )r½   Ú
returncodere   r\   r\   r]   rÐ   /  rz   zProcess.returncodec                 C  ó   | j S rX   )r¿   re   r\   r\   r]   Ústdin3  ó   zProcess.stdinc                 C  rÑ   rX   )rÁ   re   r\   r\   r]   Ústdout7  rÓ   zProcess.stdoutc                 C  rÑ   rX   )rÂ   re   r\   r\   r]   Ústderr;  rÓ   zProcess.stderrNr¥   ©rV   rÇ   )rÍ   r   rV   r^   ©rV   rª   )rV   r¾   )rV   rÀ   )r‡   rˆ   r‰   rµ   r³   rÄ   rË   rÆ   rÎ   rŠ   rÏ   rÐ   rÒ   rÔ   rÕ   r\   r\   r\   r]   r¼     s(   
 




r¼   c                      s   e Zd Zd‡ fdd„Z‡  ZS )Ú_ProcessPoolShutdownInstrumentrV   r^   c                   s   t ƒ  ¡  d S rX   )ÚsuperÚ	after_runre   ©Ú	__class__r\   r]   rÚ   A  rÌ   z(_ProcessPoolShutdownInstrument.after_runr¥   )r‡   rˆ   r‰   rÚ   Ú__classcell__r\   r\   rÛ   r]   rØ   @  s    rØ   Ú&current_default_worker_process_limiterztrio.lowlevel.RunVarÚworkersúset[abc.Process]rV   r^   c                 Ã  s”   �zt  tj¡I d H  W d S  t jyI   | D ]}|jd u r"| ¡  qtdd�� | D ]	}| ¡ I d H  q+W d   ƒ Y d S 1 sAw   Y  Y d S w rÃ   )	r`   ÚsleepÚmathÚinfr—   rÐ   rÆ   r@   r³   )rß   Úprocessr\   r\   r]   Ú_shutdown_process_poolJ  s   €
€ÿ&ÿûrå   c                   @  sB   e Zd Zddd„Zddd„Zedd
d„ƒZddd„Zddd„ZdS )Ú_TrioSocketMixinÚtrio_socketÚTrioSocketTyperV   r^   c                 C  s   || _ d| _d S ©NF)Ú_trio_socketÚ_closed©rb   rç   r\   r\   r]   rc   ]  s   
z_TrioSocketMixin.__init__c                 C  s    | j rt‚| j ¡ dk rt‚d S ©Nr   )rë   r1   rê   Úfilenor/   re   r\   r\   r]   Ú_check_closeda  s
   ÿz_TrioSocketMixin._check_closedúsocket.socketc                 C  rw   rX   )rê   Ú_sockre   r\   r\   r]   Ú_raw_socketg  rz   z_TrioSocketMixin._raw_socketc                 Ã  s(   �| j  ¡ dkrd| _| j  ¡  d S d S )Nr   T)rê   rî   rë   Úclosere   r\   r\   r]   r³   k  s
   €þz_TrioSocketMixin.acloser™   rÅ   r   c                 C  s@   t |tjƒr	t|‚| j ¡ dk r| jrtd ‚t |tƒrt|‚|‚rí   )Ú
isinstancer`   r1   rê   rî   rë   ÚOSErrorr/   ©rb   r™   r\   r\   r]   Ú_convert_socket_errorp  s   
z&_TrioSocketMixin._convert_socket_errorN©rç   rè   rV   r^   r¥   )rV   rð   )r™   rÅ   rV   r   )	r‡   rˆ   r‰   rc   rï   rŠ   rò   r³   r÷   r\   r\   r\   r]   ræ   \  s    


ræ   c                      s>   e Zd Zd‡ fdd„Zdddd„Zddd„Zddd„Z‡  ZS )ÚSocketStreamrç   rè   rV   r^   c                   ó$   t ƒ  |¡ tdƒ| _tdƒ| _d S ©Núreading fromú
writing to©rÙ   rc   r;   Ú_receive_guardÚ_send_guardrì   rÛ   r\   r]   rc   |  ó   
zSocketStream.__init__é   r©   rÇ   r«   c                 Ã  s~   �| j �1 z| j |¡I d H }W n ty' } z|  |¡ W Y d }~nd }~ww |r3|W  d   ƒ S t‚1 s8w   Y  d S rX   )rÿ   rê   ÚrecvrÅ   r÷   r2   r®   r\   r\   r]   r°   �  s   €€ÿù	÷zSocketStream.receiver·   c                 Ã  s    �| j �B t|ƒ}|r>z| j |¡I d H }W n ty- } z|  |¡ W Y d }~nd }~ww ||d … }|sW d   ƒ d S W d   ƒ d S 1 sIw   Y  d S rX   )r   Ú
memoryviewrê   rº   rÅ   r÷   )rb   r·   ÚviewÚ
bytes_sentr™   r\   r\   r]   rº   �  s   €€ÿúþ"þzSocketStream.sendc                 Ã  s   �| j  tj¡ d S rX   )rê   ÚshutdownÚsocketÚSHUT_WRre   r\   r\   r]   Úsend_eof˜  s   €zSocketStream.send_eofrø   )r  )r©   rÇ   rV   r«   r»   r¥   )r‡   rˆ   r‰   rc   r°   rº   r
  rÝ   r\   r\   rÛ   r]   rù   {  s
    
rù   c                   @  s    e Zd Zddd„Zddd„ZdS )ÚUNIXSocketStreamÚmsglenrÇ   ÚmaxfdsrV   útuple[bytes, list[int]]c                 Ã  sR  �t |tƒr
|dk rtdƒ‚t |tƒr|dk rtdƒ‚t d¡}tj ¡ I d H  | j�? 	 z| j 	|t
 ||j ¡¡I d H \}}}}W n tyZ } z|  |¡ W Y d }~nd }~ww |sa|sat‚nq-W d   ƒ n1 smw   Y  |D ].\}	}
}|	t
jksƒ|
t
jkr�td|›d|	› d	|
› �ƒ‚| |d t|ƒt|ƒ|j  … ¡ qt|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 = )rô   rÇ   Ú
ValueErrorÚarrayr`   ÚlowlevelÚ
checkpointrÿ   rê   Úrecvmsgr  ÚCMSG_LENÚitemsizerÅ   r÷   r2   Ú
SOL_SOCKETÚ
SCM_RIGHTSr    Ú	frombytesÚlenÚlist)rb   r  r  ÚfdsÚmessageÚancdataÚflagsÚaddrr™   Ú
cmsg_levelÚ	cmsg_typeÚ	cmsg_datar\   r\   r]   Úreceive_fds�  sD   €
ÿ€ÿõôÿÿÿ&zUNIXSocketStream.receive_fdsr  r«   r  úCollection[int | IOBase]r^   c                 Ã  sø   �|st dƒ‚|st dƒ‚g }|D ]}t|tƒr| |¡ qt|tƒr*| | ¡ ¡ qt d|¡}tj 	¡ I d H  | j
�6 	 z| j |gtjtj|fg¡I d H  W n tyh } z|  |¡ W Y d }~nd }~ww q>W d   ƒ d S 1 suw   Y  d S )Nzmessage must not be emptyzfds must not be emptyr  )r  rô   rÇ   Úappendr   rî   r  r`   r  r  r   rê   Úsendmsgr  r  r  rÅ   r÷   )rb   r  r  ÚfilenosÚfdÚfdarrayr™   r\   r\   r]   Úsend_fds¾  sB   €

€ýÿ
þ
€ÿó"ózUNIXSocketStream.send_fdsN)r  rÇ   r  rÇ   rV   r  )r  r«   r  r%  rV   r^   )r‡   rˆ   r‰   r$  r+  r\   r\   r\   r]   r  œ  s    
!r  c                      ó(   e Zd Zd	‡ fdd„Zd
dd„Z‡  ZS )ÚTCPSocketListenerÚ
raw_socketrð   c                   ó"   t ƒ  tj |¡¡ tdƒ| _d S ©Nzaccepting connections from©rÙ   rc   r`   r  Úfrom_stdlib_socketr;   Ú_accept_guard©rb   r.  rÛ   r\   r]   rc   à  ó   zTCPSocketListener.__init__rV   rù   c                 Ã  sŠ   �| j �, z| j ¡ I d H \}}W n ty( } z|  |¡ W Y d }~nd }~ww W d   ƒ n1 s3w   Y  | tjtjd¡ t	|ƒS ©Nr”   )
r3  rê   ÚacceptrÅ   r÷   Ú
setsockoptr  ÚIPPROTO_TCPÚTCP_NODELAYrù   ©rb   rç   Ú_addrr™   r\   r\   r]   r7  ä  s   €€ÿ€ýzTCPSocketListener.accept©r.  rð   )rV   rù   ©r‡   rˆ   r‰   rc   r7  rÝ   r\   r\   rÛ   r]   r-  ß  ó    r-  c                      r,  )ÚUNIXSocketListenerr.  rð   c                   r/  r0  r1  r4  rÛ   r\   r]   rc   ð  r5  zUNIXSocketListener.__init__rV   r  c                 Ã  s’   �| j �9 z| j ¡ I d H \}}W n ty( } z|  |¡ W Y d }~nd }~ww W d   ƒ t|ƒS W d   ƒ t|ƒS 1 s@w   Y  t|ƒS rX   )r3  rê   r7  rÅ   r÷   r  r;  r\   r\   r]   r7  ô  s    €€ÿÿ
þþ
üúzUNIXSocketListener.acceptr=  )rV   r  r>  r\   r\   rÛ   r]   r@  ï  r?  r@  c                      s2   e Zd Zd‡ fdd„Zddd	„Zddd„Z‡  ZS )Ú	UDPSocketrç   rè   rV   r^   c                   rú   rû   rþ   rì   rÛ   r\   r]   rc   ÿ  r  zUDPSocket.__init__útuple[bytes, IPSockAddrType]c                 Ã  s�   �| j �: z| j d¡I d H \}}|t|ƒfW W  d   ƒ S  ty5 } z|  |¡ W Y d }~nd }~ww W d   ƒ d S 1 sAw   Y  d S ©Nr  )rÿ   rê   Úrecvfromr3   rÅ   r÷   ©rb   r¯   r   r™   r\   r\   r]   r°     s   €ý€ÿ"ûzUDPSocket.receiver·   rB   c                 Ã  ó„   �| j �4 z| jj|Ž I d H  W n ty' } z|  |¡ W Y d }~nd }~ww W d   ƒ d S W d   ƒ d S 1 s;w   Y  d S rX   ©r   rê   ÚsendtorÅ   r÷   r¹   r\   r\   r]   rº     ó   €€ÿÿþ"üzUDPSocket.sendrø   )rV   rB  )r·   rB   rV   r^   ©r‡   rˆ   r‰   rc   r°   rº   rÝ   r\   r\   rÛ   r]   rA  þ  ó    
rA  c                      ó2   e Zd Zd‡ fdd„Zddd	„Zddd„Z‡  ZS )ÚConnectedUDPSocketrç   rè   rV   r^   c                   rú   rû   rþ   rì   rÛ   r\   r]   rc     r  zConnectedUDPSocket.__init__r«   c                 Ã  ó€   �| j �2 z| j d¡I d H W W  d   ƒ S  ty- } z|  |¡ W Y d }~nd }~ww W d   ƒ d S 1 s9w   Y  d S rC  ©rÿ   rê   r  rÅ   r÷   rö   r\   r\   r]   r°     ó   €þ€ÿ"üzConnectedUDPSocket.receiver·   c                 Ã  ó„   �| j �4 z| j |¡I d H  W n ty' } z|  |¡ W Y d }~nd }~ww W d   ƒ d S W d   ƒ d S 1 s;w   Y  d S rX   ©r   rê   rº   rÅ   r÷   r¹   r\   r\   r]   rº   !  rI  zConnectedUDPSocket.sendrø   ©rV   r«   r»   rJ  r\   r\   rÛ   r]   rM    s    
rM  c                      rL  )ÚUNIXDatagramSocketrç   rè   rV   r^   c                   rú   rû   rþ   rì   rÛ   r\   r]   rc   *  r  zUNIXDatagramSocket.__init__rC   c                 Ã  sŒ   �| j �8 z| j d¡I d H \}}||fW W  d   ƒ S  ty3 } z|  |¡ W Y d }~nd }~ww W d   ƒ d S 1 s?w   Y  d S rC  )rÿ   rê   rD  rÅ   r÷   rE  r\   r\   r]   r°   /  s   €ý€ÿ"ûzUNIXDatagramSocket.receiver·   c                 Ã  rF  rX   rG  r¹   r\   r\   r]   rº   7  rI  zUNIXDatagramSocket.sendrø   )rV   rC   )r·   rC   rV   r^   rJ  r\   r\   rÛ   r]   rT  )  rK  rT  c                      rL  )ÚConnectedUNIXDatagramSocketrç   rè   rV   r^   c                   rú   rû   rþ   rì   rÛ   r\   r]   rc   B  r  z$ConnectedUNIXDatagramSocket.__init__r«   c                 Ã  rN  rC  rO  rö   r\   r\   r]   r°   G  rP  z#ConnectedUNIXDatagramSocket.receiver·   c                 Ã  rQ  rX   rR  r¹   r\   r\   r]   rº   N  rI  z ConnectedUNIXDatagramSocket.sendrø   rS  r»   rJ  r\   r\   rÛ   r]   rU  ?  s    
rU  c                   @  sH   e Zd Zddd„Zddd„Zddd	„Zdd
d„Zddd„Zddd„ZdS )r8   rV   c                 C  rW   rX   rY   ©r[   r\   r\   r]   rZ   \  ó   
zEvent.__new__r^   c                 C  s   t  ¡ | _d S rX   )r`   r8   Ú_Event__originalre   r\   r\   r]   rc   _  rÌ   zEvent.__init__rl   c                 C  ó
   | j  ¡ S rX   )rX  Úis_setre   r\   r\   r]   rZ  b  rW  zEvent.is_setc                 Ã  rÈ   rX   )rX  rÄ   re   r\   r\   r]   rÄ   e  rÉ   z
Event.waitr(   c                 C  s   | j  ¡ }t|jd�S )N)Útasks_waiting)rX  Ú
statisticsr(   r[  ©rb   Úorig_statisticsr\   r\   r]   r\  h  s   
zEvent.statisticsc                 C  rÊ   rX   )rX  Úsetre   r\   r\   r]   r_  l  rÌ   z	Event.setN)rV   r8   r¥   r†   )rV   r(   )	r‡   rˆ   r‰   rZ   rc   rZ  rÄ   r\  r_  r\   r\   r\   r]   r8   [  s    




r8   c                   @  sl   e Zd Zddœddd„Zddœdd	d
„Zeddd„ƒZddd„Zddd„Zddd„Z	ddd„Z
d dd„ZdS )!r:   F©Úfast_acquirera  rl   rV   c                C  rW   rX   rY   ©r[   ra  r\   r\   r]   rZ   q  rW  zLock.__new__r^   c                C  s   || _ t ¡ | _d S rX   )Ú_fast_acquirer`   r:   Ú_Lock__original)rb   ra  r\   r\   r]   rc   t  s   zLock.__init__r™   r    c                 C  s   | 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)r�   )r™   r\   r\   r]   Ú_convert_runtime_error_msgx  s   

ÿzLock._convert_runtime_error_msgc              
   Ã  s°   �| j s"z| j ¡ I d H  W d S  ty! } z|  |¡ ‚ d }~ww tj ¡ I d H  z| j ¡  W d S  tj	yF   | jj
 ¡ I d H  Y d S  tyW } z|  |¡ ‚ d }~ww rX   )rc  rd  Úacquirer    re  r`   r  Úcheckpoint_if_cancelledÚacquire_nowaitr,   Ú_lotÚparkrö   r\   r\   r]   rf  }  s(   €ü
€þ
€þzLock.acquirec              
   C  sJ   z| j  ¡  W d S  tjy   td ‚ ty$ } z|  |¡ ‚ d }~ww rX   )rd  rh  r`   r,   r    re  rö   r\   r\   r]   rh  ‘  s   
€þzLock.acquire_nowaitc                 C  rY  rX   )rd  Úlockedre   r\   r\   r]   rk  š  rW  zLock.lockedc                 C  rÊ   rX   )rd  Úreleasere   r\   r\   r]   rl  �  rÌ   zLock.releaser)   c                 C  s.   | j  ¡ }|jrt|jƒnd }t|j||jƒS rX   )rd  r\  ÚownerÚTrioTaskInfor)   rk  r[  )rb   r^  rm  r\   r\   r]   r\     s
   

ÿzLock.statisticsN©ra  rl   rV   r:   )ra  rl   rV   r^   )r™   r    rV   r^   r¥   r†   )rV   r)   )r‡   rˆ   r‰   rZ   rc   Ústaticmethodre  rf  rh  rk  rl  r\  r\   r\   r\   r]   r:   p  s    


	
r:   c                      s|   e Zd Zdddœddd„Zdddœd‡ fdd„Zddd„Zddd„Zed dd„ƒZed!dd„ƒZ	ddd„Z
d"dd„Z‡  ZS )#r>   NF©Ú	max_valuera  Úinitial_valuerÇ   rr  rª   ra  rl   rV   c                C  rW   rX   rY   ©r[   rs  rr  ra  r\   r\   r]   rZ   ©  s   
zSemaphore.__new__r^   c                  s&   t ƒ j|||d� tj||d�| _d S )Nrq  )rr  )rÙ   rc   r`   r>   Ú_Semaphore__original)rb   rs  rr  ra  rÛ   r\   r]   rc   ²  s   zSemaphore.__init__c                 Ã  sf   �| j s| j ¡ I d H  d S tj ¡ I d H  z| j ¡  W d S  tjy2   | jj 	¡ I d H  Y d S w rX   )
rc  ru  rf  r`   r  rg  rh  r,   ri  rj  re   r\   r\   r]   rf  ¼  s   €ÿzSemaphore.acquirec                 C  s(   z| j  ¡  W d S  tjy   td ‚w rX   )ru  rh  r`   r,   re   r\   r\   r]   rh  È  s
   ÿzSemaphore.acquire_nowaitc                 C  rw   rX   )ru  rr  re   r\   r\   r]   rr  Î  rz   zSemaphore.max_valuec                 C  rw   rX   )ru  r{   re   r\   r\   r]   r{   Ò  rz   zSemaphore.valuec                 C  rÊ   rX   )ru  rl  re   r\   r\   r]   rl  Ö  rÌ   zSemaphore.releaser<   c                 C  s   | j  ¡ }t|jƒS rX   )ru  r\  r<   r[  r]  r\   r\   r]   r\  Ù  s   

zSemaphore.statistics)rs  rÇ   rr  rª   ra  rl   rV   r>   )rs  rÇ   rr  rª   ra  rl   rV   r^   r¥   r×   rÖ   )rV   r<   )r‡   rˆ   r‰   rZ   rc   rf  rh  rŠ   rr  r{   rl  r\  rÝ   r\   r\   rÛ   r]   r>   ¨  s    ûû



r>   c                   @  sÈ   e Zd Z	d2ddœd3dd	„Z	d2ddœd4dd„Zd5dd„Zd6dd„Zed7dd„ƒZej	d8dd„ƒZed9dd„ƒZ
ed7dd „ƒZd5d!d"„Zd:d%d&„Zd5d'd(„Zd:d)d*„Zd5d+d,„Zd:d-d.„Zd;d0d1„ZdS )<r6   N©rR   Útotal_tokensúfloat | NonerR   útrio.CapacityLimiter | NonerV   c                C  rW   rX   rY   )r[   rw  rR   r\   r\   r]   rZ   ß  s   
zCapacityLimiter.__new__r^   c                C  s.   |d ur	|| _ d S |d usJ ‚t |¡| _ d S rX   )Ú_CapacityLimiter__originalr`   r6   )rb   rw  rR   r\   r\   r]   rc   ç  s   
zCapacityLimiter.__init__c                 Ã  rÈ   rX   )rz  r’   re   r\   r\   r]   r’   ó  rÉ   zCapacityLimiter.__aenter__rf   rg   rh   ri   rj   rk   c                 Ã  s   �| j  |||¡I d H  d S rX   )rz  r•   ro   r\   r\   r]   r•   ö  s   €zCapacityLimiter.__aexit__rv   c                 C  rw   rX   ©rz  rw  re   r\   r\   r]   rw  þ  rz   zCapacityLimiter.total_tokensr{   c                 C  r|   rX   r{  r}   r\   r\   r]   rw    r~   rÇ   c                 C  rw   rX   )rz  Úborrowed_tokensre   r\   r\   r]   r|    rz   zCapacityLimiter.borrowed_tokensc                 C  rw   rX   )rz  Úavailable_tokensre   r\   r\   r]   r}  
  rz   z CapacityLimiter.available_tokensc                 C  rÊ   rX   )rz  rh  re   r\   r\   r]   rh    rÌ   zCapacityLimiter.acquire_nowaitÚborrowerrU   c                 C  rs   rX   )rz  Úacquire_on_behalf_of_nowait©rb   r~  r\   r\   r]   r    ru   z+CapacityLimiter.acquire_on_behalf_of_nowaitc                 Ã  r±   rX   )rz  rf  re   r\   r\   r]   rf    r´   zCapacityLimiter.acquirec                 Ã  s   �| j  |¡I d H  d S rX   )rz  Úacquire_on_behalf_ofr€  r\   r\   r]   r�    s   €z$CapacityLimiter.acquire_on_behalf_ofc                 C  rY  rX   )rz  rl  re   r\   r\   r]   rl    rW  zCapacityLimiter.releasec                 C  s   | j  |¡S rX   )rz  Úrelease_on_behalf_ofr€  r\   r\   r]   r‚    s   z$CapacityLimiter.release_on_behalf_ofr'   c                 C  s&   | j  ¡ }t|j|jt|jƒ|jd�S )N)r|  rw  Ú	borrowersr[  )rz  r\  r'   r|  rw  Útuplerƒ  r[  )rb   Úorigr\   r\   r]   r\     s   
üzCapacityLimiter.statisticsrX   )rw  rx  rR   ry  rV   r6   )rw  rx  rR   ry  rV   r^   r¥   )rf   rg   rh   ri   rj   rk   rV   r^   r„   r…   rÖ   )r~  rU   rV   r^   )rV   r'   )r‡   rˆ   r‰   rZ   rc   r’   r•   rŠ   rw  r‹   r|  r}  rh  r  rf  r�  rl  r‚  r\  r\   r\   r\   r]   r6   Þ  s4    þü
þü







r6   Ú_capacity_limiter_wrapperc                   @  sH   e Zd ZU ded< ddd„Zddd	„Zddd„Zddd„Zddd„ZdS )Ú_SignalReceiverzAsyncIterator[int]Ú	_iteratorÚsignalsútuple[Signals, ...]c                 C  s
   || _ d S rX   )Ú_signals)rb   r‰  r\   r\   r]   rc   5  rW  z_SignalReceiver.__init__rV   c                 C  s   t j| jŽ | _| j ¡ | _| S rX   )r`   Úopen_signal_receiverr‹  Ú_cmrd   rˆ  re   r\   r\   r]   rd   8  s   z_SignalReceiver.__enter__rf   rg   rh   ri   rj   rk   úbool | Nonec                 C  rm   rX   )r�  rn   ro   r\   r\   r]   rn   =  rp   z_SignalReceiver.__exit__c                 C  s   | S rX   r\   re   r\   r\   r]   Ú	__aiter__E  s   z_SignalReceiver.__aiter__r   c                 Ã  s   �| j  ¡ I d H }t|ƒS rX   )rˆ  Ú	__anext__r   )rb   Úsignumr\   r\   r]   r�  H  s   €z_SignalReceiver.__anext__N)r‰  rŠ  )rV   r‡  )rf   rg   rh   ri   rj   rk   rV   rŽ  )rV   r   )	r‡   rˆ   r‰   rµ   rc   rd   rn   r�  r�  r\   r\   r\   r]   r‡  2  s   
 



r‡  c                   @  s\   e Zd Zd,dd„Zd-dd„Zd.dd„Zd/dd„Zd0dd„Zd1d"d#„Zd2d%d&„Z	d3d)d*„Z
d+S )4Ú
TestRunnerÚoptionsr   rV   r^   c                 K  s$   ddl m} |ƒ | _d | _|| _d S )Nr   )ÚQueue)Úqueuer”  Ú_call_queueÚ_send_streamÚ_options)rb   r“  r”  r\   r\   r]   rc   S  s   
zTestRunner.__init__rf   rg   rh   ri   rj   útypes.TracebackType | Nonec                 C  s<   | j r| j  ¡  | j d ur| j ¡ ƒ  | j d usd S d S d S rX   )r—  ró   r–  Úgetro   r\   r\   r]   rn   Z  s   

ÿþzTestRunner.__exit__c                 Ã  s¢   �t dƒ\| _}|�= |2 z03 d H W \}}z|I d H }W n ty5 } z| t|ƒ¡ W Y d }~qd }~ww | t|ƒ¡ q6 W d   ƒ d S 1 sJw   Y  d S r6  )r4   r—  rÅ   r&  r   r   )rb   Úreceive_streamÚcoroÚoutcome_holderÚretvalr™   r\   r\   r]   Ú_run_tests_and_fixturese  s   €€ÿú"ÿz"TestRunner._run_tests_and_fixturesÚoutcomerU   c                 C  s
   d | _ d S rX   )r—  )rb   r   r\   r\   r]   Ú_main_task_finishedp  rW  zTestRunner._main_task_finishedr›   ú Callable[P, Awaitable[T_Retval]]r�   úP.argsrT   úP.kwargsrN   c                O  sŒ   | j d u r'tjj| jf| jj| jdœ| j¤Ž | j d u r'| j 	¡ ƒ  | j d u sg }| j  
||i |¤Ž|f¡ |s@| j 	¡ ƒ  |r8|d  ¡ S )N)Úrun_sync_soon_threadsafeÚdone_callbackr   )r—  r`   r  Ústart_guest_runrŸ  r–  Úputr¡  r˜  rš  Úsend_nowaitÚunwrap)rb   r›   r�   rT   r�  r\   r\   r]   Ú_call_in_runner_tasks  s$   
ÿýü

ÿÿzTestRunner._call_in_runner_taskÚfixture_funcú,Callable[..., AsyncGenerator[T_Retval, Any]]údict[str, Any]úIterable[T_Retval]c                 c  s`   � |di |¤Ž}|   |jd ¡}|V  z	|   |jd ¡ W n
 ty%   Y d S w |   |j¡ tdƒ‚)Nz$Async generator fixture did not stopr\   )r«  ÚasendÚStopAsyncIterationr³   r    )rb   r¬  rT   ÚasyncgenÚfixturevaluer\   r\   r]   Úrun_asyncgen_fixture‹  s   €ÿzTestRunner.run_asyncgen_fixtureú,Callable[..., Coroutine[Any, Any, T_Retval]]c                 C  s   | j |fi |¤ŽS rX   ©r«  )rb   r¬  rT   r\   r\   r]   Úrun_fixture�  s   zTestRunner.run_fixtureÚ	test_funcú'Callable[..., Coroutine[Any, Any, Any]]c                 C  s   | j |fi |¤Ž d S rX   r¶  )rb   r¸  rT   r\   r\   r]   Úrun_test¤  s   zTestRunner.run_testN)r“  r   rV   r^   )rf   rg   rh   ri   rj   r™  rV   r^   r¥   )r   rU   rV   r^   )r›   r¢  r�   r£  rT   r¤  rV   rN   )r¬  r­  rT   r®  rV   r¯  )r¬  rµ  rT   r®  rV   rN   )r¸  r¹  rT   r®  rV   r^   )r‡   rˆ   r‰   rc   rn   rŸ  r¡  r«  r´  r·  rº  r\   r\   r\   r]   r’  R  s    






r’  c                      r,  )rn  Útaskútrio.lowlevel.Taskc                   sH   d }|j r|j jrt|j jƒ}tƒ  t|ƒ||j|j¡ t |¡| _	d S rX   )
Úparent_nurseryÚparent_taskÚidrÙ   rc   rš   rœ  ÚweakrefÚproxyÚ_task)rb   r»  Ú	parent_idrÛ   r\   r]   rc   «  s
   zTrioTaskInfo.__init__rV   rl   c                 C  s"   z| j jjW S  ty   Y dS w ré   )rÂ  Ú_cancel_statusÚeffectively_cancelledÚReferenceErrorre   r\   r\   r]   Úhas_pending_cancellation³  s
   ýz%TrioTaskInfo.has_pending_cancellation)r»  r¼  r†   )r‡   rˆ   r‰   rc   rÇ  rÝ   r\   r\   rÛ   r]   rn  ª  s    rn  c                   @  sÒ  e Zd Zed¾d
d„ƒZed¿dd„ƒZedÀdd„ƒZedÁdd„ƒZedÂdd„ƒZedÂdd„ƒZ	edÂdd„ƒZ
edÃdd„ƒZeejdd œdÄd%d&„ƒZedÀd'd(„ƒZedÅd*d+„ƒZedÆd-d.„ƒZedÇd1d2„ƒZed3dd4œdÈd:d;„ƒZedÉd>d?„ƒZe		3dÊdËdDdE„ƒZedÂdFdG„ƒZedÌdIdJ„ƒZedÍdKdL„ƒZedÎdUdV„ƒZedÏdYdZ„ƒZe	3dÐdÑdadb„ƒZedÒdfdg„ƒZedÓdkdl„ƒZedÓdmdn„ƒZedÔdtdu„ƒZee dÕdydz„ƒƒZ!ee dÖd|dz„ƒƒZ!ed×ddz„ƒZ!ed€d€d€d€d�œdØdŠd‹„ƒZ"e	€dÙdÚd�d�„ƒZ#edÛd“d”„ƒZ$edÛd•d–„ƒZ%edÛd—d˜„ƒZ&edÓd™dš„ƒZ'edÜd›dœ„ƒZ(edÝdždŸ„ƒZ)edÞd¡d¢„ƒZ*edßd¤d¥„ƒZ+edàd§d¨„ƒZ,edádªd«„ƒZ-edâd¬d­„ƒZ.edãd±d²„ƒZ/edäd´dµ„ƒZ0edåd·d¸„ƒZ1edÂd¹dº„ƒZ2edæd¼d½„ƒZ3d3S )çÚTrioBackendr›   ú1Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]]r�   útuple[Unpack[PosArgsT]]rT   r®  r“  rV   rN   c                 C  s   t j|g|¢R Ž S rX   )r`   Úrun)r[   r›   r�   rT   r“  r\   r\   r]   rË  ½  s   zTrioBackend.runrU   c                 C  s
   t j ¡ S rX   )r`   r  Úcurrent_trio_tokenrV  r\   r\   r]   Úcurrent_tokenÇ  ó   
zTrioBackend.current_tokenrv   c                 C  ó   t  ¡ S rX   )r`   Úcurrent_timerV  r\   r\   r]   rÐ  Ë  rz   zTrioBackend.current_timeútype[BaseException]c                 C  s   t jS rX   )r`   r—   rV  r\   r\   r]   Úcancelled_exception_classÏ  rÓ   z%TrioBackend.cancelled_exception_classr^   c                 Ã  ó   �t j ¡ I d H  d S rX   )r`   r  r  rV  r\   r\   r]   r  Ó  ó   €zTrioBackend.checkpointc                 Ã  rÓ  rX   )r`   r  rg  rV  r\   r\   r]   rg  ×  rÔ  z#TrioBackend.checkpoint_if_cancelledc                 Ã  rÓ  rX   )r`   r  Úcancel_shielded_checkpointrV  r\   r\   r]   rÕ  Û  rÔ  z&TrioBackend.cancel_shielded_checkpointÚdelayc                 Ã  s   �t  |¡I d H  d S rX   )r`   rá   )r[   rÖ  r\   r\   r]   rá   ß  rÔ  zTrioBackend.sleepF©ry   r‚   ry   r‚   rl   úabc.CancelScopec                C  s   t ||d�S )Nr×  r?   )r[   ry   r‚   r\   r\   r]   Úcreate_cancel_scopeã  s   zTrioBackend.create_cancel_scopec                 C  rÏ  rX   )r`   Úcurrent_effective_deadlinerV  r\   r\   r]   rÚ  é  rz   z&TrioBackend.current_effective_deadlineúabc.TaskGroupc                 C  ó   t ƒ S rX   )rŒ   rV  r\   r\   r]   Úcreate_task_groupí  rÓ   zTrioBackend.create_task_groupú	abc.Eventc                 C  rÜ  rX   r7   rV  r\   r\   r]   Úcreate_eventñ  rÓ   zTrioBackend.create_eventra  r:   c                C  s
   t |d�S )Nr`  r9   rb  r\   r\   r]   Úcreate_lockõ  rÎ  zTrioBackend.create_lockNrq  rs  rÇ   rr  rª   úabc.Semaphorec                C  s   t |||d�S )Nrq  r=   rt  r\   r\   r]   Úcreate_semaphoreù  s   zTrioBackend.create_semaphorerw  r6   c                 C  ó   t |ƒS rX   r5   )r[   rw  r\   r\   r]   Úcreate_capacity_limiter  rz   z#TrioBackend.create_capacity_limiterú&Callable[[Unpack[PosArgsT]], T_Retval]Úabandon_on_cancelÚlimiterúabc.CapacityLimiter | Nonec                 ƒ  s8   �d‡ ‡‡fdd„}t  ¡ ‰t||ttj|ƒd�I d H S )NrV   rN   c                     s6   t tˆƒ� ˆˆ Ž W  d   ƒ S 1 sw   Y  d S rX   )r.   rÈ  r\   ©r�   r›   Útokenr\   r]   Úwrapper  s   $ÿz6TrioBackend.run_sync_in_worker_thread.<locals>.wrapper)ræ  rç  )rV   rN   )rÈ  rÍ  r%   r   r`   r6   )r[   r›   r�   ræ  rç  rë  r\   ré  r]   Úrun_sync_in_worker_thread  s   €
ýz%TrioBackend.run_sync_in_worker_threadc                 C  s   t j ¡  d S rX   )r`   Úfrom_threadÚcheck_cancelledrV  r\   r\   r]   rî    ó   zTrioBackend.check_cancelledrê  c                 C  ó>   t d|ƒ}ztjj|g|¢R d|iŽW S  tjy   td ‚w ©Nztrio.lowlevel.TrioToken | NoneÚ
trio_token)r   r`   rí  rË  r*   ©r[   r›   r�   rê  rò  r\   r\   r]   Úrun_async_from_thread  ó   
ÿz!TrioBackend.run_async_from_threadc                 C  rð  rñ  )r   r`   rí  r%   r*   ró  r\   r\   r]   Úrun_sync_from_thread+  rõ  z TrioBackend.run_sync_from_threadÚcommandú)StrOrBytesPath | Sequence[StrOrBytesPath]rÒ   úint | IO[Any] | NonerÔ   rÕ   r   r¼   c          
      ‹  sÂ   �ddd„‰ t |tttfƒr#tjjˆ |ƒf|||ddœ|¤ŽI d H }ntjj‡ fd	d
„|D ƒf|||ddœ|¤ŽI d H }|jrDt|jƒnd }|j	rNt
|j	ƒnd }|jrXt
|jƒnd }	t||||	ƒS )Nr·   rE   rV   Ústrc                 S  s"   t  | ¡}t|tƒr|S t  |¡S rX   )ÚosÚfspathrô   rú  Úfsdecode)r·   Ústr_or_bytesr\   r\   r]   Úconvert_itemB  s   


z.TrioBackend.open_process.<locals>.convert_itemT)rÒ   rÔ   rÕ   Úshellc                   s   g | ]}ˆ |ƒ‘qS r\   r\   )Ú.0r·   ©rÿ  r\   r]   Ú
<listcomp>T  s    z,TrioBackend.open_process.<locals>.<listcomp>F)r·   rE   rV   rú  )rô   rú  r«   r   r`   r  Úopen_processrÒ   r¶   rÔ   r§   rÕ   r¼   )
r[   r÷  rÒ   rÔ   rÕ   rT   rä   Ústdin_streamÚstdout_streamÚstderr_streamr\   r  r]   r  8  s6   €

ÿûú	ÿûú	zTrioBackend.open_processrß   rà   c                 C  s   t j t|¡ d S rX   )r`   r  Úspawn_system_taskrå   )r[   rß   r\   r\   r]   Ú#setup_process_pool_exit_at_shutdowna  s   z/TrioBackend.setup_process_pool_exit_at_shutdownÚhostrú  ÚportÚlocal_addressúIPSockAddrType | Nonerù   c                 Ã  s€   �d|v rt jnt j}tj   |¡}| t jt jd¡ |r$| |¡I d H  z| ||f¡I d H  W t|ƒS  t	y?   | 
¡  ‚ w )Nú:r”   )r  ÚAF_INET6ÚAF_INETr`   r8  r9  r:  ÚbindÚconnectrÅ   ró   rù   )r[   r
  r  r  Úfamilyrç   r\   r\   r]   Úconnect_tcpe  s   €üþzTrioBackend.connect_tcpÚpathústr | bytesúabc.UNIXSocketStreamc                 Ã  sD   �t j tj¡}z| |¡I d H  W t|ƒS  ty!   | ¡  ‚ w rX   )r`   r  ÚAF_UNIXr  rÅ   ró   r  )r[   r  rç   r\   r\   r]   Úconnect_unixw  s   €üþzTrioBackend.connect_unixÚsockrð   úabc.SocketListenerc                 C  rã  rX   ©r-  ©r[   r  r\   r\   r]   Úcreate_tcp_listener‚  rz   zTrioBackend.create_tcp_listenerc                 C  rã  rX   )r@  r  r\   r\   r]   Úcreate_unix_listener†  rz   z TrioBackend.create_unix_listenerr  úsocket.AddressFamilyÚremote_addressÚ
reuse_portúUDPSocket | ConnectedUDPSocketc                 Ã  sb   �t jj|tjd�}|r| tjtjd¡ |r| |¡I d H  |r-| |¡I d H  t|ƒS t	|ƒS )N)r  Útyper”   )
r`   r  Ú
SOCK_DGRAMr8  r  ÚSO_REUSEPORTr  r  rM  rA  )r[   r  r  r!  r"  rç   r\   r\   r]   Úcreate_udp_socketŠ  s   €zTrioBackend.create_udp_socketr.  Úremote_pathúabc.UNIXDatagramSocketc                 Ã  ó   �d S rX   r\   ©r[   r.  r(  r\   r\   r]   Úcreate_unix_datagram_socket   ó   €z'TrioBackend.create_unix_datagram_socketúabc.ConnectedUNIXDatagramSocketc                 Ã  r*  rX   r\   r+  r\   r\   r]   r,  ¦  r-  ústr | bytes | Noneú8abc.UNIXDatagramSocket | abc.ConnectedUNIXDatagramSocketc                 Ã  s2   �t j |¡}|r| |¡I d H  t|ƒS t|ƒS rX   )r`   r  r2  r  rU  rT  )r[   r.  r(  rç   r\   r\   r]   r,  ¬  s   €r   )r  r$  Úprotor  úbytes | str | Noneústr | int | Noneúint | AddressFamilyr$  úint | SocketKindr1  r  úuSequence[tuple[AddressFamily, SocketKind, int, str, tuple[str, int] | tuple[str, int, int, int] | tuple[int, bytes]]]c                Ã  s   �t j ||||||¡I d H S rX   )r`   r  Úgetaddrinfo)r[   r
  r  r  r$  r1  r  r\   r\   r]   r7  ¸  s   €zTrioBackend.getaddrinfoÚsockaddrrA   útuple[str, str]c                 Ã  s   �t j ||¡I d H S rX   )r`   r  Úgetnameinfo)r[   r8  r  r\   r\   r]   r:  Í  s   €zTrioBackend.getnameinfoÚobjrG   c              
   Ã  óZ   �z
t |ƒI d H  W d S  tjy  } ztƒ  |j¡d ‚d }~w tjy,   tdƒd ‚w )Nrü   )r"   r`   r1   Úwith_tracebackÚ__traceback__r0   ©r[   r;  r™   r\   r\   r]   r"   Ó  ó   €€
ÿzTrioBackend.wait_readablec              
   Ã  r<  )Nrý   )r#   r`   r1   r=  r>  r0   r?  r\   r\   r]   r#   Ü  r@  zTrioBackend.wait_writablec                 C  s   t |ƒ d S rX   )r!   )r[   r;  r\   r\   r]   r!   å  r~   zTrioBackend.notify_closingc                 Ã  s
   �t |ƒS rX   r  r  r\   r\   r]   Úwrap_listener_socketé  s   €z TrioBackend.wrap_listener_socketc                 Ã  ó   �t j |¡}t|ƒS rX   )r`   r  r2  rù   ©r[   r  Ú	trio_sockr\   r\   r]   Úwrap_stream_socketí  ó   €zTrioBackend.wrap_stream_socketr  c                 Ã  rB  rX   )r`   r  r2  r  rC  r\   r\   r]   Úwrap_unix_stream_socketò  rF  z#TrioBackend.wrap_unix_stream_socketrA  c                 Ã  rB  rX   )r`   r  r2  rA  rC  r\   r\   r]   Úwrap_udp_socket÷  rF  zTrioBackend.wrap_udp_socketrM  c                 Ã  rB  rX   )r`   r  r2  rM  rC  r\   r\   r]   Úwrap_connected_udp_socketü  rF  z%TrioBackend.wrap_connected_udp_socketrT  c                 Ã  rB  rX   )r`   r  r2  rT  rC  r\   r\   r]   Úwrap_unix_datagram_socket  rF  z%TrioBackend.wrap_unix_datagram_socketrU  c                 Ã  rB  rX   )r`   r  r2  rU  rC  r\   r\   r]   Ú#wrap_connected_unix_datagram_socket  s   €z/TrioBackend.wrap_connected_unix_datagram_socketc                 C  s<   zt  ¡ W S  ty   ttj ¡ d�}t  |¡ | Y S w )Nrv  )r†  rš  ÚLookupErrorr6   r`   Ú	to_threadÚcurrent_default_thread_limiterr_  )r[   rç  r\   r\   r]   rN    s   
ÿ
ûz*TrioBackend.current_default_thread_limiterr‰  r   ú.AbstractContextManager[AsyncIterator[Signals]]c                 G  rã  rX   )r‡  )r[   r‰  r\   r\   r]   rŒ    s   z TrioBackend.open_signal_receiverr+   c                 C  s   t ƒ }t|ƒS rX   )r    rn  )r[   r»  r\   r\   r]   Úget_current_task  s   zTrioBackend.get_current_taskúSequence[TaskInfo]c                 C  sb   t ƒ }|sJ ‚t|ƒg}|j}|r/g }|D ]}|jD ]}| t|ƒ¡ | |j¡ qq|}|s|S rX   )r   rn  Úchild_nurseriesÚchild_tasksr&  Úextend)r[   Ú	root_taskÚ
task_infosÚ	nurseriesÚnew_nurseriesÚnurseryr»  r\   r\   r]   Úget_running_tasks#  s   

þù	zTrioBackend.get_running_tasksc                 Ã  s   �ddl m} |ƒ I d H  d S )Nr   )Úwait_all_tasks_blocked)Útrio.testingr[  )r[   r[  r\   r\   r]   r[  4  s   €z"TrioBackend.wait_all_tasks_blockedr’  c                 C  s   t di |¤ŽS r_   )r’  )r[   r“  r\   r\   r]   Úcreate_test_runner:  rï  zTrioBackend.create_test_runner)
r›   rÉ  r�   rÊ  rT   r®  r“  r®  rV   rN   )rV   rU   r„   )rV   rÑ  r¥   )rÖ  rv   rV   r^   )ry   rv   r‚   rl   rV   rØ  )rV   rÛ  )rV   rÞ  ro  )rs  rÇ   rr  rª   ra  rl   rV   rá  )rw  rv   rV   r6   )FN)
r›   rå  r�   rÊ  ræ  rl   rç  rè  rV   rN   )r›   rÉ  r�   rÊ  rê  rU   rV   rN   )r›   rå  r�   rÊ  rê  rU   rV   rN   )r÷  rø  rÒ   rù  rÔ   rù  rÕ   rù  rT   r   rV   r¼   ©rß   rà   rV   r^   rX   )r
  rú  r  rÇ   r  r  rV   rù   )r  r  rV   r  )r  rð   rV   r  )
r  r   r  r  r!  r  r"  rl   rV   r#  )r.  rð   r(  r^   rV   r)  )r.  rð   r(  r  rV   r.  )r.  rð   r(  r/  rV   r0  )r
  r2  r  r3  r  r4  r$  r5  r1  rÇ   r  rÇ   rV   r6  )r   )r8  rA   r  rÇ   rV   r9  )r;  rG   rV   r^   )r  rð   rV   rù   )r  rð   rV   r  )r  rð   rV   rA  )r  rð   rV   rM  )r  rð   rV   rT  )r  rð   rV   rU  )rV   r6   )r‰  r   rV   rO  )rV   r+   )rV   rQ  )r“  r®  rV   r’  )4r‡   rˆ   r‰   ÚclassmethodrË  rÍ  rÐ  rÒ  r  rg  rÕ  rá   râ   rã   rÙ  rÚ  rÝ  rß  rà  râ  rä  rì  rî  rô  rö  r  r	  r  r  r  r  r'  r   r,  r7  r:  r"   r#   r!   rA  rE  rG  rH  rI  rJ  rK  rN  rŒ  rP  rZ  r[  r]  r\   r\   r\   r]   rÈ  ¼  sØ    	ÿû	û(ÿ
øÿ
rÈ  r^  )�Ú
__future__r   r  râ   rû  r  ÚsysÚtypesrÀ  Úcollections.abcr   r   r   r   r   r   r	   r
   Ú
contextlibr   Údataclassesr   Úior   r   rÍ   r   r   r   r   Útypingr   r   r   r   r   r   r   r   r   Útrio.from_threadr`   Útrio.lowlevelr   r   r   r   r   r    r!   r"   r#   Útrio.socketr$   rè   Útrio.to_threadr%   Ú r'   r(   r)   r*   r+   r,   r-   Ú_core._eventloopr.   Ú_core._exceptionsr/   r0   r1   r2   Ú_core._socketsr3   Ú_core._streamsr4   Ú_core._synchronizationr6   ÚBaseCapacityLimiterr8   Ú	BaseEventr:   ÚBaseLockr;   r<   r>   ÚBaseSemaphoreÚ_core._tasksr@   ÚBaseCancelScoperA   rB   rC   Úabc._eventlooprD   rE   Ústreams.memoryrF   Ú	_typeshedrG   Úversion_inforJ   rK   ÚexceptiongrouprL   Útyping_extensionsrM   rN   rú  rO   rP   rQ   r  ÚRunVarrŒ   ÚByteReceiveStreamr§   ÚByteSendStreamr¶   r¼   Ú
InstrumentrØ   rÞ   rµ   rå   ræ   rù   r  ÚSocketListenerr-  r@  rA  rM  rT  rU  r†  r‡  r’  rn  rÈ  Úbackend_classr\   r\   r\   r]   Ú<module>   s¬    (
,$	6;8ÿ
!C

ÿ86L X   