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\   ú_C:\Users\psant\Downloads\Anu Raj Backend\school\venv\Lib\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)Zstrict_exception_groups)Ú_activer`   Z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¦   Z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¦   Z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´   ÚviewZ
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‚qcq-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  ZCMSG_LENÚitemsizerÁ   ró   r2   Ú
SOL_SOCKETÚ
SCM_RIGHTSrž   Z	frombytesÚlenÚlist)rb   r  r  ÚfdsÚmessageZancdataÚflagsÚaddrr—   Z
cmsg_levelZ	cmsg_typeZ	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 qj 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
  T)r  rð   rÃ   Úappendr   rê   r  r`   r  r  rü   ræ   Úsendmsgr  r  r  rÁ   ró   )rb   r  r  ZfilenosÚfdZ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’   )
r&  ræ   ÚacceptrÁ   ró   Ú
setsockoptr  ÚIPPROTO_TCPÚTCP_NODELAYrõ   ©rb   rã   Z_addrr—   r\   r\   r]   r*  ä  s   €€ÿ€ýzTCPSocketListener.accept©r!  rì   )rV   rõ   ©r‡   rˆ   r‰   rc   r*  rÙ   r\   r\   r×   r]   r   ß  ó    r   c                      r  )ÚUNIXSocketListenerr!  rì   c                   r"  r#  r$  r'  r×   r\   r]   rc   ð  r(  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   )r&  ræ   r*  rÁ   ró   r  r.  r\   r\   r]   r*  ô  s    €€ÿÿ
þþ
üúzUNIXSocketListener.acceptr/  )rV   r  r0  r\   r\   r×   r]   r2  ï  r1  r2  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   r4  )r´   rB   rV   r^   ©r‡   rˆ   r‰   rc   r­   r¶   rÙ   r\   r\   r×   r]   r3  þ  ó    
r3  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 r5  ©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¶   !  r;  zConnectedUDPSocket.sendrô   ©rV   r©   r·   r<  r\   r\   r×   r]   r?    s    
r?  c                      r>  )Ú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 r5  )rû   ræ   r6  rÁ   ró   r7  r\   r\   r]   r­   /  s   €ý€ÿ"ûzUNIXDatagramSocket.receiver´   c                 Ã  r8  rX   r9  rµ   r\   r\   r]   r¶   7  r;  zUNIXDatagramSocket.sendrô   )rV   rC   )r´   rC   rV   r^   r<  r\   r\   r×   r]   rF  )  r=  rF  c                      r>  )ÚConnectedUNIXDatagramSocketrã   rä   rV   r^   c                   rö   r÷   rú   rè   r×   r\   r]   rc   B  rý   z$ConnectedUNIXDatagramSocket.__init__r©   c                 Ã  r@  r5  rA  rò   r\   r\   r]   r­   G  rB  z#ConnectedUNIXDatagramSocket.receiver´   c                 Ã  rC  rX   rD  rµ   r\   r\   r]   r¶   N  r;  z ConnectedUNIXDatagramSocket.sendrô   rE  r·   r<  r\   r\   r×   r]   rG  ?  s    
rG  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   )rJ  Úis_setre   r\   r\   r]   rL  b  rI  zEvent.is_setc                 Ã  rÄ   rX   )rJ  rÀ   re   r\   r\   r]   rÀ   e  rÅ   z
Event.waitr(   c                 C  s   | j  ¡ }t|jd�S )N)Útasks_waiting)rJ  Ú
statisticsr(   rM  ©rb   Úorig_statisticsr\   r\   r]   rN  h  s   
zEvent.statisticsc                 C  rÆ   rX   )rJ  Úsetre   r\   r\   r]   rQ  l  rÈ   z	Event.setN)rV   r8   r£   r†   )rV   r(   )	r‡   rˆ   r‰   rZ   rc   rL  rÀ   rN  rQ  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_acquirerS  rl   rV   c                C  rW   rX   rY   ©r[   rS  r\   r\   r]   rZ   q  rI  zLock.__new__r^   c                C  s   || _ t ¡ | _d S rX   )Ú_fast_acquirer`   r:   Ú_Lock__original)rb   rS  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   )rU  rV  Úacquirerž   rW  r`   r  Úcheckpoint_if_cancelledÚacquire_nowaitr,   Ú_lotÚparkrò   r\   r\   r]   rX  }  s(   €ü
€þ
€þzLock.acquirec              
   C  sJ   z| j  ¡  W d S  tjy   td ‚ ty$ } z|  |¡ ‚ d }~ww rX   )rV  rZ  r`   r,   rž   rW  rò   r\   r\   r]   rZ  ‘  s   
€þzLock.acquire_nowaitc                 C  rK  rX   )rV  Úlockedre   r\   r\   r]   r]  š  rI  zLock.lockedc                 C  rÆ   rX   )rV  Úreleasere   r\   r\   r]   r^  �  rÈ   zLock.releaser)   c                 C  s.   | j  ¡ }|jrt|jƒnd }t|j||jƒS rX   )rV  rN  ÚownerÚTrioTaskInfor)   r]  rM  )rb   rP  r_  r\   r\   r]   rN     s
   

ÿzLock.statisticsN©rS  rl   rV   r:   )rS  rl   rV   r^   )r—   rž   rV   r^   r£   r†   )rV   r)   )r‡   rˆ   r‰   rZ   rc   ÚstaticmethodrW  rX  rZ  r]  r^  rN  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_valuerS  Úinitial_valuerÃ   rd  r¨   rS  rl   rV   c                C  rW   rX   rY   ©r[   re  rd  rS  r\   r\   r]   rZ   ©  s   
zSemaphore.__new__r^   c                  s&   t ƒ j|||d� tj||d�| _d S )Nrc  )rd  )rÕ   rc   r`   r>   Ú_Semaphore__original)rb   re  rd  rS  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   )
rU  rg  rX  r`   r  rY  rZ  r,   r[  r\  re   r\   r\   r]   rX  ¼  s   €ÿzSemaphore.acquirec                 C  s(   z| j  ¡  W d S  tjy   td ‚w rX   )rg  rZ  r`   r,   re   r\   r\   r]   rZ  È  s
   ÿzSemaphore.acquire_nowaitc                 C  rw   rX   )rg  rd  re   r\   r\   r]   rd  Î  rz   zSemaphore.max_valuec                 C  rw   rX   )rg  r{   re   r\   r\   r]   r{   Ò  rz   zSemaphore.valuec                 C  rÆ   rX   )rg  r^  re   r\   r\   r]   r^  Ö  rÈ   zSemaphore.releaser<   c                 C  s   | j  ¡ }t|jƒS rX   )rg  rN  r<   rM  rO  r\   r\   r]   rN  Ù  s   

zSemaphore.statistics)re  rÃ   rd  r¨   rS  rl   rV   r>   )re  rÃ   rd  r¨   rS  rl   rV   r^   r£   rÓ   rÒ   )rV   r<   )r‡   rˆ   r‰   rZ   rc   rX  rZ  rŠ   rd  r{   r^  rN  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[   ri  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   ri  rR   r\   r\   r]   rc   ç  s   
zCapacityLimiter.__init__c                 Ã  rÄ   rX   )rl  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   )rl  r“   ro   r\   r\   r]   r“   ö  s   €zCapacityLimiter.__aexit__rv   c                 C  rw   rX   ©rl  ri  re   r\   r\   r]   ri  þ  rz   zCapacityLimiter.total_tokensr{   c                 C  r|   rX   rm  r}   r\   r\   r]   ri    r~   rÃ   c                 C  rw   rX   )rl  Úborrowed_tokensre   r\   r\   r]   rn    rz   zCapacityLimiter.borrowed_tokensc                 C  rw   rX   )rl  Úavailable_tokensre   r\   r\   r]   ro  
  rz   z CapacityLimiter.available_tokensc                 C  rÆ   rX   )rl  rZ  re   r\   r\   r]   rZ    rÈ   zCapacityLimiter.acquire_nowaitÚborrowerrU   c                 C  rs   rX   )rl  Úacquire_on_behalf_of_nowait©rb   rp  r\   r\   r]   rq    ru   z+CapacityLimiter.acquire_on_behalf_of_nowaitc                 Ã  r®   rX   )rl  rX  re   r\   r\   r]   rX    r±   zCapacityLimiter.acquirec                 Ã  s   �| j  |¡I d H  d S rX   )rl  Úacquire_on_behalf_ofrr  r\   r\   r]   rs    s   €z$CapacityLimiter.acquire_on_behalf_ofc                 C  rK  rX   )rl  r^  re   r\   r\   r]   r^    rI  zCapacityLimiter.releasec                 C  s   | j  |¡S rX   )rl  Úrelease_on_behalf_ofrr  r\   r\   r]   rt    s   z$CapacityLimiter.release_on_behalf_ofr'   c                 C  s&   | j  ¡ }t|j|jt|jƒ|jd�S )N)rn  ri  Ú	borrowersrM  )rl  rN  r'   rn  ri  Útupleru  rM  )rb   Úorigr\   r\   r]   rN     s   
üzCapacityLimiter.statisticsrX   )ri  rj  rR   rk  rV   r6   )ri  rj  rR   rk  rV   r^   r£   )rf   rg   rh   ri   rj   rk   rV   r^   r„   r…   rÒ   )rp  rU   rV   r^   )rV   r'   )r‡   rˆ   r‰   rZ   rc   r�   r“   rŠ   ri  r‹   rn  ro  rZ  rq  rX  rs  r^  rt  rN  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  rI  z_SignalReceiver.__init__rV   c                 C  s   t j| jŽ | _| j ¡ | _| S rX   )r`   Úopen_signal_receiverr}  Ú_cmrd   rz  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   )rz  Ú	__anext__r   )rb   Úsignumr\   r\   r]   r‚  H  s   €z_SignalReceiver.__anext__N)r{  r|  )rV   ry  )rf   rg   rh   ri   rj   rk   rV   r€  )rV   r   )	r‡   rˆ   r‰   r²   rc   rd   rn   r�  r‚  r\   r\   r\   r]   ry  2  s   
 



ry  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 r)  )r4   r‰  rÁ   r  r   r   )rb   Z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  rI  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)Zrun_sync_soon_threadsafeÚdone_callbackr   )r‰  r`   r  Zstart_guest_runr�  rˆ  Úputr’  rŠ  rŒ  Z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   ÚasyncgenZ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  )r`  Útaskútrio.lowlevel.Taskc                   sH   d }|j r|j jrt|j jƒ}tƒ  t|ƒ||j|j¡ t |¡| _	d S rX   )
Zparent_nurseryZparent_taskÚidrÕ   rc   r˜   r�  ÚweakrefÚproxyÚ_task)rb   r¨  Z	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­  Z_cancel_statusZ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]   r`  ª  s    r`  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  Zcurrent_trio_tokenrH  r\   r\   r]   Úcurrent_tokenÇ  ó   
zTrioBackend.current_tokenrv   c                 C  ó   t  ¡ S rX   )r`   Úcurrent_timerH  r\   r\   r]   r·  Ë  rz   zTrioBackend.current_timeútype[BaseException]c                 C  s   t jS rX   )r`   r•   rH  r\   r\   r]   Úcancelled_exception_classÏ  rÏ   z%TrioBackend.cancelled_exception_classr^   c                 Ã  ó   �t j ¡ I d H  d S rX   )r`   r  r  rH  r\   r\   r]   r  Ó  ó   €zTrioBackend.checkpointc                 Ã  rº  rX   )r`   r  rY  rH  r\   r\   r]   rY  ×  r»  z#TrioBackend.checkpoint_if_cancelledc                 Ã  rº  rX   )r`   r  Úcancel_shielded_checkpointrH  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_deadlinerH  r\   r\   r]   rÁ  é  rz   z&TrioBackend.current_effective_deadlineúabc.TaskGroupc                 C  ó   t ƒ S rX   )rŒ   rH  r\   r\   r]   Úcreate_task_groupí  rÏ   zTrioBackend.create_task_groupú	abc.Eventc                 C  rÃ  rX   r7   rH  r\   r\   r]   Úcreate_eventñ  rÏ   zTrioBackend.create_eventrS  r:   c                C  s
   t |d�S )NrR  r9   rT  r\   r\   r]   Úcreate_lockõ  rµ  zTrioBackend.create_lockNrc  re  rÃ   rd  r¨   úabc.Semaphorec                C  s   t |||d�S )Nrc  r=   rf  r\   r\   r]   Úcreate_semaphoreù  s   zTrioBackend.create_semaphoreri  r6   c                 C  ó   t |ƒS rX   r5   )r[   ri  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_cancelledrH  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´   Z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à   Zstdin_streamZstdout_streamZstderr_streamr\   rè  r]   rê  8  s6   €

ÿûú	ÿûú	zTrioBackend.open_processrÛ   rÜ   c                 C  s   t j t|¡ d S rX   )r`   r  Z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`   r+  r,  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   )r2  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_DGRAMr+  r  ÚSO_REUSEPORTró  rô  r?  r3  )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  r%  rô  rG  rF  )r[   r!  r
  rã   r\   r\   r]   r  ¬  s   €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                Ã  s   �t j ||||||¡I d H S rX   )r`   r  Úgetaddrinfo)r[   rì  rí  rõ  r  r  r  r\   r\   r]   r  ¸  s   €zTrioBackend.getaddrinfoÚsockaddrrA   útuple[str, str]c                 Ã  s   �t j ||¡I d H S rX   )r`   r  Úgetnameinfo)r[   r  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  r%  rõ   ©r[   rü  Z	trio_sockr\   r\   r]   Úwrap_stream_socketí  ó   €zTrioBackend.wrap_stream_socketr  c                 Ã  r$  rX   )r`   r  r%  r  r%  r\   r\   r]   Úwrap_unix_stream_socketò  r'  z#TrioBackend.wrap_unix_stream_socketr3  c                 Ã  r$  rX   )r`   r  r%  r3  r%  r\   r\   r]   Úwrap_udp_socket÷  r'  zTrioBackend.wrap_udp_socketr?  c                 Ã  r$  rX   )r`   r  r%  r?  r%  r\   r\   r]   Úwrap_connected_udp_socketü  r'  z%TrioBackend.wrap_connected_udp_socketrF  c                 Ã  r$  rX   )r`   r  r%  rF  r%  r\   r\   r]   Úwrap_unix_datagram_socket  r'  z%TrioBackend.wrap_unix_datagram_socketrG  c                 Ã  r$  rX   )r`   r  r%  rG  r%  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 )Nrh  )rx  rŒ  ÚLookupErrorr6   r`   Ú	to_threadÚcurrent_default_thread_limiterrQ  )r[   rÎ  r\   r\   r]   r/    s   
ÿ
ûz*TrioBackend.current_default_thread_limiterr{  r   ú.AbstractContextManager[AsyncIterator[Signals]]c                 G  rÊ  rX   )ry  )r[   r{  r\   r\   r]   r~    s   z TrioBackend.open_signal_receiverr+   c                 C  s   t ƒ }t|ƒS rX   )r    r`  )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   r`  Zchild_nurseriesZchild_tasksr  Úextend)r[   Z	root_taskZ
task_infosZ	nurseriesZnew_nurseriesZ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)Ztrio.testingr5  )r[   r5  r\   r\   r]   r5  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Å  ra  )re  rÃ   rd  r¨   rS  rl   rV   rÈ  )ri  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   r  )rì  r  rí  r  rõ  r  r  r  r  rÃ   r  rÃ   rV   r  )r   )r  rA   r  rÃ   rV   r  )r  rG   rV   r^   )rü  rì   rV   rõ   )rü  rì   rV   r  )rü  rì   rV   r3  )rü  rì   rV   r?  )rü  rì   rV   rF  )rü  rì   rV   rG  )rV   r6   )r{  r   rV   r0  )rV   r+   )rV   r2  )r…  rœ  rV   r„  )4r‡   rˆ   r‰   Úclassmethodr³  r´  r·  r¹  r  rY  r¼  rÝ   rÞ   rß   rÀ  rÁ  rÄ  rÆ  rÇ  rÉ  rË  rÓ  rÕ  rÛ  rÝ  rê  rë  rö  rû  r   r  r	  r   r  r  r  r"   r#   r!   r#  r&  r(  r)  r*  r+  r,  r/  r~  r1  r4  r5  r6  r\   r\   r\   r]   r°  ¼  sØ    	ÿû	û(ÿ
øÿ
r°  r7  )�Ú
__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   Ztrio.from_threadr`   Ztrio.lowlevelr‘  r   r   r   r   r    r!   r"   r#   Ztrio.socketr$   rä   Ztrio.to_threadr%   Ú r'   r(   r)   r*   r+   r,   r-   Z_core._eventloopr.   Z_core._exceptionsr/   r0   r1   r2   Z_core._socketsr3   Z_core._streamsr4   Z_core._synchronizationr6   ZBaseCapacityLimiterr8   Z	BaseEventr:   ZBaseLockr;   r<   r>   ZBaseSemaphoreZ_core._tasksr@   ZBaseCancelScoperA   rB   rC   Zabc._eventlooprD   rE   Zstreams.memoryrF   Z	_typeshedrG   Úversion_inforJ   rK   ZexceptiongrouprL   Ztyping_extensionsrM   rN   rá  rO   rP   rQ   r  ZRunVarrŒ   ZByteReceiveStreamr¥   ZByteSendStreamr³   r¸   Z
InstrumentrÔ   rÚ   r²   rá   râ   rõ   r  ZSocketListenerr   r2  r3  r?  rF  rG  rx  ry  r„  r`  r°  Zbackend_classr\   r\   r\   r]   Ú<module>   s¬    (
,$	6;8ÿ
!C

ÿ86L X   