o
    ;'hí�  ã                   @  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 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* d dl+Z,d dl-Z,d dl.m/Z/m0Z0m1Z1 d dl-m2Z2m3Z3m4Z4m5Z5 d dl6m7Z8 d dl9m:Z: ddl;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA ddlBmCZC ddlDmEZEmFZFmGZGmHZH ddlImJZJ ddlKmLZL ddlMmNZO ddlMmPZQ ddlMmRZS ddlMmTZTmUZU ddlMmVZW ddlXmYZZ ddlAm[Z[m\Z\m]Z] ddl^m_Z_m`Z` dd lambZb e$�r"d d!lcmdZd ejed"k�r/d d#l"mfZf nd d#lgmfZf ejed$k�rDd d%l"mhZhmiZi nd d&ljmkZk d d%lgmhZhmiZi e(d'ƒZle(d(ƒZme(d)ene[ƒZoehd*ƒZpefd+ƒZqe,jrjsZsG d,d-„ d-eZƒZYG d.d/„ d/eAjtƒZtG d0d1„ d1eAjuƒZued2d3�G d4d5„ d5eAjvƒƒZwed2d3�G d6d7„ d7eAjxƒƒZyed2d3�G d8d9„ d9eAjzƒƒZzG d:d;„ d;e,jAj{ƒZ|esd<ƒZ}d=e~d<< dgdBdC„ZG dDdE„ dEe&eo ƒZ€G dFdG„ dGe€eAj�ƒZ�G dHdI„ dIe�eAj‚ƒZ‚G dJdK„ dKe€eAjƒƒZ„G dLdM„ dMe€eAjƒƒZ…G dNdO„ dOe€e[ eAj†ƒZ†G dPdQ„ dQe€e[ eAj‡ƒZ‡G dRdS„ dSe€en eAjˆƒZˆG dTdU„ dUe€en eAj‰ƒZ‰G dVdW„ dWeQƒZPG dXdY„ dYeSƒZRG dZd[„ d[eWƒZVG d\d]„ d]eOƒZNesd^ƒZŠd=e~d^< G d_d`„ d`ƒZ‹G dadb„ dbeAjŒƒZŒG dcdd„ dde?ƒZ�G dedf„ dfe_ƒZŽeŽZ�dS )hé    )ÚannotationsN)ÚAsyncGeneratorÚAsyncIteratorÚ	AwaitableÚCallableÚ
CollectionÚ	CoroutineÚIterableÚSequence)ÚFuture)ÚAbstractContextManager)Ú	dataclass)Úpartial)ÚIOBase)ÚPathLike)ÚSignals)ÚAddressFamilyÚ
SocketKind)ÚTracebackType)ÚIOÚTYPE_CHECKINGÚAnyÚGenericÚNoReturnÚTypeVarÚcastÚoverload)ÚErrorÚOutcomeÚValue)Úcurrent_root_taskÚcurrent_taskÚwait_readableÚwait_writable)Ú
SocketType)Úrun_syncé   )ÚCapacityLimiterStatisticsÚEventStatisticsÚLockStatisticsÚ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)Ú	HasFileno)é   é
   )Ú	ParamSpec)rG   é   )Ú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„Zed,dd„ƒZ	e	j
d-dd„ƒZ	ed.dd „ƒZed.d!d"„ƒZed.d#d$„ƒZej
d/d%d$„ƒZdS )0r?   NÚoriginalútrio.CancelScope | NoneÚkwargsÚobjectÚreturnc                 K  ó
   t  | ¡S ©N©rV   Ú__new__)ÚclsrS   rU   © r]   úKC:\Users\shubh\Videos\agent\nova\Lib\site-packages\anyio/_backends/_trio.pyr[   v   s   
zCancelScope.__new__r   ÚNonec                 K  s   |p	t jdi |¤Ž| _d S ©Nr]   )Útrior?   Ú_CancelScope__original)ÚselfrS   rU   r]   r]   r^   Ú__init__{   s   zCancelScope.__init__c                 C  s   | j  ¡  | S rY   )rb   Ú	__enter__©rc   r]   r]   r^   re   ~   s   
zCancelScope.__enter__Úexc_typeútype[BaseException] | NoneÚexc_valúBaseException | NoneÚexc_tbúTracebackType | NoneÚboolc                 C  ó   | j  |||¡S rY   )rb   Ú__exit__©rc   rg   ri   rk   r]   r]   r^   ro   ‚   ó   zCancelScope.__exit__c                 C  ó   | j  ¡  d S rY   )rb   Úcancelrf   r]   r]   r^   rs   Š   ó   zCancelScope.cancelÚfloatc                 C  ó   | j jS rY   ©rb   Údeadlinerf   r]   r]   r^   rx   �   ó   zCancelScope.deadlineÚvaluec                 C  ó   || j _d S rY   rw   ©rc   rz   r]   r]   r^   rx   ‘   ó   c                 C  rv   rY   )rb   Úcancel_calledrf   r]   r]   r^   r~   •   ry   zCancelScope.cancel_calledc                 C  rv   rY   )rb   Úcancelled_caughtrf   r]   r]   r^   r   ™   ry   zCancelScope.cancelled_caughtc                 C  rv   rY   ©rb   Úshieldrf   r]   r]   r^   r�   �   ry   zCancelScope.shieldc                 C  r{   rY   r€   r|   r]   r]   r^   r�   ¡   r}   rY   )rS   rT   rU   rV   rW   r?   )rS   rT   rU   r   rW   r_   )rW   r?   ©rg   rh   ri   rj   rk   rl   rW   rm   ©rW   r_   ©rW   ru   ©rz   ru   rW   r_   ©rW   rm   )rz   rm   rW   r_   )Ú__name__Ú
__module__Ú__qualname__r[   rd   re   ro   rs   Úpropertyrx   Úsetterr~   r   r�   r]   r]   r]   r^   r?   u   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 )#Ú	TaskGrouprW   r_   c                 C  s   d| _ tjdd�| _d | _d S )NFT)Zstrict_exception_groups)Ú_activera   Zopen_nurseryÚ_nursery_managerÚcancel_scoperf   r]   r]   r^   rd   ¬   s   
zTaskGroup.__init__c                 Ã  s,   �d| _ | j ¡ I d H | _t| jjƒ| _| S )NT)r�   rŽ   Ú
__aenter__Ú_nurseryr?   r�   rf   r]   r]   r^   r�   ±   s
   €zTaskGroup.__aenter__rg   rh   ri   rj   rk   rl   rm   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�   rM   Úsplitra   Ú	CancelledÚ_create)rc   rg   ri   rk   Úexcr]   r]   r^   r“   ·   s   €ù€üzTaskGroup.__aexit__N©ÚnameÚfuncú,Callable[[Unpack[PosArgsT]], Awaitable[Any]]ÚargsúUnpack[PosArgsT]r™   rV   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©rc   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.startrƒ   )rW   rŒ   r‚   )rš   r›   rœ   r�   r™   rV   rW   r_   )rš   r¢   rœ   rV   r™   rV   rW   r   )r‡   rˆ   r‰   rd   r�   r“   r    r£   r]   r]   r]   r^   rŒ   «   s    


üÿrŒ   c                      s2   e Zd Zddd„Zd‡ fdd„Zddd„Z‡  ZS )ÚBlockingPortalrW   c                 C  rX   rY   rZ   ©r\   r]   r]   r^   r[   ç   ó   
zBlockingPortal.__new__r_   c                   s   t ƒ  ¡  tj ¡ | _d S rY   )Úsuperrd   ra   ÚlowlevelÚcurrent_trio_tokenÚ_tokenrf   ©Ú	__class__r]   r^   rd   ê   s   
zBlockingPortal.__init__rš   ú<Callable[[Unpack[PosArgsT]], Awaitable[T_Retval] | T_Retval]rœ   útuple[Unpack[PosArgsT]]rU   údict[str, Any]r™   rV   ÚfutureúFuture[T_Retval]c              	   C  s.   t jjt| jj|d�| j||||| jd� d S )Nr˜   )Z
trio_token)ra   Úfrom_threadr%   r   Z_task_groupr    Z
_call_funcrª   )rc   rš   rœ   rU   r™   r°   r]   r]   r^   Ú_spawn_task_from_threadî   s   
ùz&BlockingPortal._spawn_task_from_thread)rW   r¤   rƒ   )rš   r­   rœ   r®   rU   r¯   r™   rV   r°   r±   rW   r_   )r‡   rˆ   r‰   r[   rd   r³   Ú__classcell__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 | NonerW   Úbytesc              
   Ã  sh   �z| j  |¡I d H }W n! tjy } zt|j‚d }~w tjy- } zt|j‚d }~ww |r2|S t‚rY   )r·   Zreceive_somera   r0   Ú	__cause__r.   r1   ©rc   r¸   Údatar—   r]   r]   r^   Úreceive
  s   €€€ÿzReceiveStreamWrapper.receiver_   c                 Ã  ó   �| j  ¡ I d H  d S rY   ©r·   Úacloserf   r]   r]   r^   rÁ     ó   €zReceiveStreamWrapper.acloserY   )r¸   r¹   rW   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º   rW   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 rY   )r·   Zsend_allra   r0   r»   r.   ©rc   rÅ   r—   r]   r]   r^   Úsend  s   €€€ÿzSendStreamWrapper.sendc                 Ã  r¿   rY   rÀ   rf   r]   r]   r^   rÁ   '  rÂ   zSendStreamWrapper.acloseN©rÅ   rº   rW   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Ú_stderrrW   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Úkillrf   r]   r]   r^   rÁ   2  s*   €€ú
ÿþüzProcess.acloseÚintc                 Ã  ó   �| j  ¡ I d H S rY   )rÊ   rÑ   rf   r]   r]   r^   rÑ   C  ó   €zProcess.waitc                 C  rr   rY   )rÊ   Ú	terminaterf   r]   r]   r^   r×   F  rt   zProcess.terminatec                 C  rr   rY   )rÊ   rÓ   rf   r]   r]   r^   rÓ   I  rt   zProcess.killÚsignalr   c                 C  ó   | j  |¡ d S rY   )rÊ   Úsend_signal)rc   rØ   r]   r]   r^   rÚ   L  ó   zProcess.send_signalc                 C  rv   rY   )rÊ   Úpidrf   r]   r]   r^   rÜ   O  ry   zProcess.pidr¹   c                 C  rv   rY   )rÊ   Ú
returncoderf   r]   r]   r^   rÝ   S  ry   zProcess.returncodec                 C  ó   | j S rY   )rÌ   rf   r]   r]   r^   ÚstdinW  ó   zProcess.stdinc                 C  rÞ   rY   )rÎ   rf   r]   r]   r^   Ústdout[  rà   zProcess.stdoutc                 C  rÞ   rY   )rÏ   rf   r]   r]   r^   Ústderr_  rà   zProcess.stderrNrƒ   ©rW   rÔ   )rØ   r   rW   r_   ©rW   r¹   )rW   rË   )rW   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 )Ú_ProcessPoolShutdownInstrumentrW   r_   c                   s   t ƒ  ¡  d S rY   )r§   Ú	after_runrf   r«   r]   r^   ræ   e  rt   z(_ProcessPoolShutdownInstrument.after_runrƒ   )r‡   rˆ   r‰   ræ   r´   r]   r]   r«   r^   rå   d  s    rå   Ú&current_default_worker_process_limiterztrio.lowlevel.RunVarÚworkersúset[abc.Process]rW   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Ð   )	ra   ÚsleepÚmathÚinfr•   rÝ   rÓ   r?   rÁ   )rè   Úprocessr]   r]   r^   Ú_shutdown_process_pooln  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ÚTrioSocketTyperW   r_   c                 C  s   || _ d| _d S ©NF)Ú_trio_socketÚ_closed©rc   rð   r]   r]   r^   rd   �  s   
z_TrioSocketMixin.__init__c                 C  s    | j rt‚| j ¡ dk rt‚d S ©Nr   )rô   r0   ró   Úfilenor.   rf   r]   r]   r^   Ú_check_closed…  s
   ÿz_TrioSocketMixin._check_closedúsocket.socketc                 C  rv   rY   )ró   Ú_sockrf   r]   r]   r^   Ú_raw_socket‹  ry   z_TrioSocketMixin._raw_socketc                 Ã  s(   �| j  ¡ dkrd| _| j  ¡  d S d S )Nr   T)ró   r÷   rô   Úcloserf   r]   r]   r^   rÁ   �  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ö   )Ú
isinstancera   r0   ró   r÷   rô   ÚOSErrorr.   ©rc   r—   r]   r]   r^   Ú_convert_socket_error”  s   
z&_TrioSocketMixin._convert_socket_errorN©rð   rñ   rW   r_   rƒ   )rW   rù   )r—   rÒ   rW   r   )	r‡   rˆ   r‰   rd   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ñ   rW   r_   c                   ó$   t ƒ  |¡ tdƒ| _tdƒ| _d S ©Núreading fromú
writing to©r§   rd   r:   Ú_receive_guardÚ_send_guardrõ   r«   r]   r^   rd      ó   
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 rY   )r  ró   ÚrecvrÒ   r   r1   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 rY   )r	  Ú
memoryviewró   rÇ   rÒ   r   )rc   rÅ   ÚviewZ
bytes_sentr—   r]   r]   r^   rÇ   ±  s   €€ÿúþ"þzSocketStream.sendc                 Ã  s   �| j  tj¡ d S rY   )ró   ÚshutdownÚsocketÚSHUT_WRrf   r]   r]   r^   Úsend_eof¼  s   €zSocketStream.send_eofr  )r  )r¸   rÔ   rW   rº   rÈ   rƒ   )r‡   rˆ   r‰   rd   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Ô   ÚmaxfdsrW   ú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Úarrayra   r¨   Ú
checkpointr  ró   Úrecvmsgr  ZCMSG_LENÚitemsizerÒ   r   r1   Ú
SOL_SOCKETÚ
SCM_RIGHTSrŸ   Ú	frombytesÚlenÚlist)rc   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 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  ra   r¨   r  r	  ró   Úsendmsgr  r  r  rÒ   r   )rc   r#  r"  ZfilenosÚfdZfdarrayr—   r]   r]   r^   Úsend_fdsâ  sB   €

€ýÿ
þ
€ÿó"ózUNIXSocketStream.send_fdsN)r  rÔ   r  rÔ   rW   r  )r#  rº   r"  r'  rW   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§   rd   ra   r  Úfrom_stdlib_socketr:   Ú_accept_guard©rc   r.  r«   r]   r^   rd     ó   zTCPSocketListener.__init__rW   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  ©rc   rð   Z_addrr—   r]   r]   r^   r7    s   €€ÿ€ýzTCPSocketListener.accept©r.  rù   )rW   r  ©r‡   rˆ   r‰   rd   r7  r´   r]   r]   r«   r^   r-    ó    r-  c                      r,  )ÚUNIXSocketListenerr.  rù   c                   r/  r0  r1  r4  r«   r]   r^   rd     r5  zUNIXSocketListener.__init__rW   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 rY   )r3  ró   r7  rÒ   r   r  r;  r]   r]   r^   r7    s    €€ÿÿ
þþ
üúzUNIXSocketListener.acceptr<  )rW   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ñ   rW   r_   c                   r  r  r  rõ   r«   r]   r^   rd   #  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ó   Úrecvfromr2   rÒ   r   ©rc   r½   r%  r—   r]   r]   r^   r¾   (  s   €ý€ÿ"ûzUDPSocket.receiverÅ   rA   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 rY   ©r	  ró   ÚsendtorÒ   r   rÆ   r]   r]   r^   rÇ   0  ó   €€ÿÿþ"üzUDPSocket.sendr  )rW   rA  )rÅ   rA   rW   r_   ©r‡   rˆ   r‰   rd   r¾   rÇ   r´   r]   r]   r«   r^   r@  "  ó    
r@  c                      ó2   e Zd Zd‡ fdd„Zddd	„Zddd„Z‡  ZS )ÚConnectedUDPSocketrð   rñ   rW   r_   c                   r  r  r  rõ   r«   r]   r^   rd   9  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 rB  ©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 rY   ©r	  ró   rÇ   rÒ   r   rÆ   r]   r]   r^   rÇ   E  rH  zConnectedUDPSocket.sendr  ©rW   rº   rÈ   rI  r]   r]   r«   r^   rL  8  s    
rL  c                      rK  )ÚUNIXDatagramSocketrð   rñ   rW   r_   c                   r  r  r  rõ   r«   r]   r^   rd   N  r
  zUNIXDatagramSocket.__init__rB   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 rB  )r  ró   rC  rÒ   r   rD  r]   r]   r^   r¾   S  s   €ý€ÿ"ûzUNIXDatagramSocket.receiverÅ   c                 Ã  rE  rY   rF  rÆ   r]   r]   r^   rÇ   [  rH  zUNIXDatagramSocket.sendr  )rW   rB   )rÅ   rB   rW   r_   rI  r]   r]   r«   r^   rS  M  rJ  rS  c                      rK  )ÚConnectedUNIXDatagramSocketrð   rñ   rW   r_   c                   r  r  r  rõ   r«   r]   r^   rd   f  r
  z$ConnectedUNIXDatagramSocket.__init__rº   c                 Ã  rM  rB  rN  rÿ   r]   r]   r^   r¾   k  rO  z#ConnectedUNIXDatagramSocket.receiverÅ   c                 Ã  rP  rY   rQ  rÆ   r]   r]   r^   rÇ   r  rH  z ConnectedUNIXDatagramSocket.sendr  rR  rÈ   rI  r]   r]   r«   r^   rT  c  s    
rT  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 )r7   rW   c                 C  rX   rY   rZ   r¥   r]   r]   r^   r[   €  r¦   zEvent.__new__r_   c                 C  s   t  ¡ | _d S rY   )ra   r7   Ú_Event__originalrf   r]   r]   r^   rd   ƒ  rt   zEvent.__init__rm   c                 C  ó
   | j  ¡ S rY   )rU  Úis_setrf   r]   r]   r^   rW  †  r¦   zEvent.is_setc                 Ã  rÕ   rY   )rU  rÑ   rf   r]   r]   r^   rÑ   ‰  rÖ   z
Event.waitr(   c                 C  s   | j  ¡ }t|jd�S )N)Útasks_waiting)rU  Ú
statisticsr(   rX  ©rc   Úorig_statisticsr]   r]   r^   rY  Œ  s   
zEvent.statisticsc                 C  rr   rY   )rU  Úsetrf   r]   r]   r^   r\  �  rt   z	Event.setN)rW   r7   rƒ   r†   )rW   r(   )	r‡   rˆ   r‰   r[   rd   rW  rÑ   rY  r\  r]   r]   r]   r^   r7     s    




r7   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 )!r9   F©Úfast_acquirer^  rm   rW   c                C  rX   rY   rZ   ©r\   r^  r]   r]   r^   r[   •  r¦   zLock.__new__r_   c                C  s   || _ t ¡ | _d S rY   )Ú_fast_acquirera   r9   Ú_Lock__original)rc   r^  r]   r]   r^   rd   ˜  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_msgœ  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 rY   )r`  ra  ÚacquirerŸ   rb  ra   r¨   Úcheckpoint_if_cancelledÚacquire_nowaitr+   Ú_lotÚparkrÿ   r]   r]   r^   rc  ¡  s(   €ü
€þ
€þzLock.acquirec              
   C  sJ   z| j  ¡  W d S  tjy   td ‚ ty$ } z|  |¡ ‚ d }~ww rY   )ra  re  ra   r+   rŸ   rb  rÿ   r]   r]   r^   re  µ  s   
€þzLock.acquire_nowaitc                 C  rV  rY   )ra  Úlockedrf   r]   r]   r^   rh  ¾  r¦   zLock.lockedc                 C  rr   rY   )ra  Úreleaserf   r]   r]   r^   ri  Á  rt   zLock.releaser)   c                 C  s.   | j  ¡ }|jrt|jƒnd }t|j||jƒS rY   )ra  rY  ÚownerÚTrioTaskInfor)   rh  rX  )rc   r[  rj  r]   r]   r^   rY  Ä  s
   

ÿzLock.statisticsN©r^  rm   rW   r9   )r^  rm   rW   r_   )r—   rŸ   rW   r_   rƒ   r†   )rW   r)   )r‡   rˆ   r‰   r[   rd   Ústaticmethodrb  rc  re  rh  ri  rY  r]   r]   r]   r^   r9   ”  s    


	
r9   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_valuer^  Úinitial_valuerÔ   ro  r¹   r^  rm   rW   c                C  rX   rY   rZ   ©r\   rp  ro  r^  r]   r]   r^   r[   Í  s   
zSemaphore.__new__r_   c                  s&   t ƒ j|||d� tj||d�| _d S )Nrn  )ro  )r§   rd   ra   r=   Ú_Semaphore__original)rc   rp  ro  r^  r«   r]   r^   rd   Ö  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 rY   )
r`  rr  rc  ra   r¨   rd  re  r+   rf  rg  rf   r]   r]   r^   rc  à  s   €ÿzSemaphore.acquirec                 C  s(   z| j  ¡  W d S  tjy   td ‚w rY   )rr  re  ra   r+   rf   r]   r]   r^   re  ì  s
   ÿzSemaphore.acquire_nowaitc                 C  rv   rY   )rr  ro  rf   r]   r]   r^   ro  ò  ry   zSemaphore.max_valuec                 C  rv   rY   )rr  rz   rf   r]   r]   r^   rz   ö  ry   zSemaphore.valuec                 C  rr   rY   )rr  ri  rf   r]   r]   r^   ri  ú  rt   zSemaphore.releaser;   c                 C  s   | j  ¡ }t|jƒS rY   )rr  rY  r;   rX  rZ  r]   r]   r^   rY  ý  s   

zSemaphore.statistics)rp  rÔ   ro  r¹   r^  rm   rW   r=   )rp  rÔ   ro  r¹   r^  rm   rW   r_   rƒ   rä   rã   )rW   r;   )r‡   rˆ   r‰   r[   rd   rc  re  rŠ   ro  rz   ri  rY  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 )<r5   N©rS   Útotal_tokensúfloat | NonerS   útrio.CapacityLimiter | NonerW   c                C  rX   rY   rZ   )r\   rt  rS   r]   r]   r^   r[     s   
zCapacityLimiter.__new__r_   c                C  s.   |d ur	|| _ d S |d usJ ‚t |¡| _ d S rY   )Ú_CapacityLimiter__originalra   r5   )rc   rt  rS   r]   r]   r^   rd     s   
zCapacityLimiter.__init__c                 Ã  rÕ   rY   )rw  r�   rf   r]   r]   r^   r�     rÖ   zCapacityLimiter.__aenter__rg   rh   ri   rj   rk   rl   c                 Ã  s   �| j  |||¡I d H  d S rY   )rw  r“   rp   r]   r]   r^   r“     s   €zCapacityLimiter.__aexit__ru   c                 C  rv   rY   ©rw  rt  rf   r]   r]   r^   rt  "  ry   zCapacityLimiter.total_tokensrz   c                 C  r{   rY   rx  r|   r]   r]   r^   rt  &  r}   rÔ   c                 C  rv   rY   )rw  Úborrowed_tokensrf   r]   r]   r^   ry  *  ry   zCapacityLimiter.borrowed_tokensc                 C  rv   rY   )rw  Úavailable_tokensrf   r]   r]   r^   rz  .  ry   z CapacityLimiter.available_tokensc                 C  rr   rY   )rw  re  rf   r]   r]   r^   re  2  rt   zCapacityLimiter.acquire_nowaitÚborrowerrV   c                 C  rÙ   rY   )rw  Úacquire_on_behalf_of_nowait©rc   r{  r]   r]   r^   r|  5  rÛ   z+CapacityLimiter.acquire_on_behalf_of_nowaitc                 Ã  r¿   rY   )rw  rc  rf   r]   r]   r^   rc  8  rÂ   zCapacityLimiter.acquirec                 Ã  s   �| j  |¡I d H  d S rY   )rw  Úacquire_on_behalf_ofr}  r]   r]   r^   r~  ;  s   €z$CapacityLimiter.acquire_on_behalf_ofc                 C  rV  rY   )rw  ri  rf   r]   r]   r^   ri  >  r¦   zCapacityLimiter.releasec                 C  s   | j  |¡S rY   )rw  Úrelease_on_behalf_ofr}  r]   r]   r^   r  A  s   z$CapacityLimiter.release_on_behalf_ofr'   c                 C  s&   | j  ¡ }t|j|jt|jƒ|jd�S )N)ry  rt  Ú	borrowersrX  )rw  rY  r'   ry  rt  Útupler€  rX  )rc   Úorigr]   r]   r^   rY  D  s   
üzCapacityLimiter.statisticsrY   )rt  ru  rS   rv  rW   r5   )rt  ru  rS   rv  rW   r_   rƒ   )rg   rh   ri   rj   rk   rl   rW   r_   r„   r…   rã   )r{  rV   rW   r_   )rW   r'   )r‡   rˆ   r‰   r[   rd   r�   r“   rŠ   rt  r‹   ry  rz  re  r|  rc  r~  ri  r  rY  r]   r]   r]   r^   r5     s4    þü
þü







r5   Ú_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 rY   )Ú_signals)rc   r†  r]   r]   r^   rd   Y  r¦   z_SignalReceiver.__init__rW   c                 C  s   t j| jŽ | _| j ¡ | _| S rY   )ra   Úopen_signal_receiverrˆ  Ú_cmre   r…  rf   r]   r]   r^   re   \  s   z_SignalReceiver.__enter__rg   rh   ri   rj   rk   rl   úbool | Nonec                 C  rn   rY   )rŠ  ro   rp   r]   r]   r^   ro   a  rq   z_SignalReceiver.__exit__c                 C  s   | S rY   r]   rf   r]   r]   r^   Ú	__aiter__i  s   z_SignalReceiver.__aiter__r   c                 Ã  s   �| j  ¡ I d H }t|ƒS rY   )r…  Ú	__anext__r   )rc   Zsignumr]   r]   r^   r�  l  s   €z_SignalReceiver.__anext__N)r†  r‡  )rW   r„  )rg   rh   ri   rj   rk   rl   rW   r‹  )rW   r   )	r‡   rˆ   r‰   rÃ   rd   re   ro   rŒ  r�  r]   r]   r]   r^   r„  V  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   rW   r_   c                 K  s$   ddl m} |ƒ | _d | _|| _d S )Nr   )ÚQueue)Úqueuer�  Ú_call_queueÚ_send_streamÚ_options)rc   r�  r�  r]   r]   r^   rd   w  s   
zTestRunner.__init__rg   rh   ri   rj   rk   útypes.TracebackType | Nonec                 C  s<   | j r| j  ¡  | j d ur| j ¡ ƒ  | j d usd S d S d S rY   )r“  rü   r’  Úgetrp   r]   r]   r^   ro   ~  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  )r3   r“  rÒ   r(  r   r   )rc   Zreceive_streamÚcoroÚoutcome_holderÚretvalr—   r]   r]   r^   Ú_run_tests_and_fixtures‰  s   €€ÿú"ÿz"TestRunner._run_tests_and_fixturesÚoutcomerV   c                 C  s
   d | _ d S rY   )r“  )rc   r›  r]   r]   r^   Ú_main_task_finished”  r¦   zTestRunner._main_task_finishedrš   ú Callable[P, Awaitable[T_Retval]]rœ   úP.argsrU   úP.kwargsrO   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“  ra   r¨   Zstart_guest_runrš  r’  Úputrœ  r”  r–  Zsend_nowaitÚunwrap)rc   rš   rœ   rU   r˜  r]   r]   r^   Ú_call_in_runner_task—  s$   
ÿýü

ÿÿzTestRunner._call_in_runner_taskÚfixture_funcú,Callable[..., AsyncGenerator[T_Retval, Any]]r¯   ú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Ÿ   )rc   r¤  rU   Ú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 rY   ©r£  )rc   r¤  rU   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 rY   r¬  )rc   r®  rU   r]   r]   r^   Úrun_testÇ  s   zTestRunner.run_testN)r�  r   rW   r_   )rg   rh   ri   rj   rk   r•  rW   r_   rƒ   )r›  rV   rW   r_   )rš   r�  rœ   rž  rU   rŸ  rW   rO   )r¤  r¥  rU   r¯   rW   r¦  )r¤  r«  rU   r¯   rW   rO   )r®  r¯  rU   r¯   rW   r_   )r‡   rˆ   r‰   rd   ro   rš  rœ  r£  rª  r­  r°  r]   r]   r]   r^   rŽ  v  s    






rŽ  c                      r,  )rk  Útaskútrio.lowlevel.Taskc                   sH   d }|j r|j jrt|j jƒ}tƒ  t|ƒ||j|j¡ t |¡| _	d S rY   )
Zparent_nurseryZparent_taskÚidr§   rd   r™   r—  ÚweakrefÚproxyÚ_task)rc   r±  Z	parent_idr«   r]   r^   rd   Î  s
   zTrioTaskInfo.__init__rW   rm   c                 C  s"   z| j jjW S  ty   Y dS w rò   )r¶  Z_cancel_statusZeffectively_cancelledÚReferenceErrorrf   r]   r]   r^   Úhas_pending_cancellationÖ  s
   ýz%TrioTaskInfo.has_pending_cancellation)r±  r²  r†   )r‡   rˆ   r‰   rd   r¸  r´   r]   r]   r«   r^   rk  Í  s    rk  c                   @  sp  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¼dNdO„ƒZed½dXdY„ƒZed¾d\d]„ƒZe	3d¿dÀddde„ƒZedÁdidj„ƒZedÂdndo„ƒZedÂdpdq„ƒZedÃdwdx„ƒZ ee!dÄd|d}„ƒƒZ"ee!dÅdd}„ƒƒZ"edÆd‚d}„ƒ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,d3S )ÐÚTrioBackendrš   ú1Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]]rœ   r®   rU   r¯   r�  rW   rO   c                 C  s   t j|g|¢R Ž S rY   )ra   Úrun)r\   rš   rœ   rU   r�  r]   r]   r^   r»  à  s   zTrioBackend.runrV   c                 C  s
   t j ¡ S rY   )ra   r¨   r©   r¥   r]   r]   r^   Úcurrent_tokenê  ó   
zTrioBackend.current_tokenru   c                 C  ó   t  ¡ S rY   )ra   Úcurrent_timer¥   r]   r]   r^   r¿  î  ry   zTrioBackend.current_timeútype[BaseException]c                 C  s   t jS rY   )ra   r•   r¥   r]   r]   r^   Úcancelled_exception_classò  rà   z%TrioBackend.cancelled_exception_classr_   c                 Ã  ó   �t j ¡ I d H  d S rY   )ra   r¨   r  r¥   r]   r]   r^   r  ö  ó   €zTrioBackend.checkpointc                 Ã  rÂ  rY   )ra   r¨   rd  r¥   r]   r]   r^   rd  ú  rÃ  z#TrioBackend.checkpoint_if_cancelledc                 Ã  rÂ  rY   )ra   r¨   Úcancel_shielded_checkpointr¥   r]   r]   r^   rÄ  þ  rÃ  z&TrioBackend.cancel_shielded_checkpointÚdelayc                 Ã  s   �t  |¡I d H  d S rY   )ra   rê   )r\   rÅ  r]   r]   r^   rê     rÃ  zTrioBackend.sleepF©rx   r�   rx   r�   rm   úabc.CancelScopec                C  s   t ||d�S )NrÆ  r>   )r\   rx   r�   r]   r]   r^   Úcreate_cancel_scope  s   zTrioBackend.create_cancel_scopec                 C  r¾  rY   )ra   Úcurrent_effective_deadliner¥   r]   r]   r^   rÉ    ry   z&TrioBackend.current_effective_deadlineúabc.TaskGroupc                 C  ó   t ƒ S rY   )rŒ   r¥   r]   r]   r^   Úcreate_task_group  rà   zTrioBackend.create_task_groupú	abc.Eventc                 C  rË  rY   r6   r¥   r]   r]   r^   Úcreate_event  rà   zTrioBackend.create_eventr^  r9   c                C  s
   t |d�S )Nr]  r8   r_  r]   r]   r^   Úcreate_lock  r½  zTrioBackend.create_lockNrn  rp  rÔ   ro  r¹   úabc.Semaphorec                C  s   t |||d�S )Nrn  r<   rq  r]   r]   r^   Úcreate_semaphore  s   zTrioBackend.create_semaphorert  r5   c                 C  ó   t |ƒS rY   r4   )r\   rt  r]   r]   r^   Úcreate_capacity_limiter&  ry   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 )NrW   rO   c                     s6   t tˆƒ� ˆˆ Ž W  d   ƒ S 1 sw   Y  d S rY   )r-   r¹  r]   ©rœ   rš   Útokenr]   r^   Úwrapper2  s   $ÿz6TrioBackend.run_sync_in_worker_thread.<locals>.wrapper)rÕ  rÖ  )rW   rO   )r¹  r¼  r%   r   ra   r5   )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 rY   )ra   r²   Úcheck_cancelledr¥   r]   r]   r^   rÜ  =  ó   zTrioBackend.check_cancelledrÙ  c                 C  ó   t jj|g|¢R Ž S rY   )ra   r²   r»  ©r\   rš   rœ   rÙ  r]   r]   r^   Úrun_async_from_threadA  ó   z!TrioBackend.run_async_from_threadc                 C  rÞ  rY   )ra   r²   r%   rß  r]   r]   r^   Úrun_sync_from_threadJ  rá  z TrioBackend.run_sync_from_threadúabc.BlockingPortalc                 C  rË  rY   )r¤   r¥   r]   r]   r^   Úcreate_blocking_portalS  rà   z"TrioBackend.create_blocking_portalÚ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Å   rD   rW   Ústrc                 S  s"   t  | ¡}t|tƒr|S t  |¡S rY   )ÚosÚfspathrý   rè  Úfsdecode)rÅ   Zstr_or_bytesr]   r]   r^   Úconvert_itema  s   


z.TrioBackend.open_process.<locals>.convert_itemT)rß   rá   râ   Úshellc                   s   g | ]}ˆ |ƒ‘qS r]   r]   )Ú.0rÅ   ©rì  r]   r^   Ú
<listcomp>s  s    z,TrioBackend.open_process.<locals>.<listcomp>F)rÅ   rD   rW   rè  )rý   rè  rº   r   ra   r¨   Úopen_processrß   rÄ   rá   r¶   râ   rÉ   )
r\   rå  rß   rá   râ   rU   rí   Zstdin_streamZstdout_streamZstderr_streamr]   rï  r^   rñ  W  s6   €

ÿûú	ÿûú	zTrioBackend.open_processrè   ré   c                 C  s   t j t|¡ d S rY   )ra   r¨   Zspawn_system_taskrî   )r\   rè   r]   r]   r^   Ú#setup_process_pool_exit_at_shutdown€  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_INETra   r8  r9  r:  ÚbindÚconnectrÒ   rü   r  )r\   ró  rô  rõ  Úfamilyrð   r]   r]   r^   Úconnect_tcp„  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 rY   )ra   r  ÚAF_UNIXrû  rÒ   rü   r  )r\   rþ  rð   r]   r]   r^   Úconnect_unix–  s   €üþzTrioBackend.connect_unixÚsockrù   úabc.SocketListenerc                 C  rÒ  rY   )r-  ©r\   r  r]   r]   r^   Úcreate_tcp_listener¡  ry   zTrioBackend.create_tcp_listenerc                 C  rÒ  rY   )r?  r  r]   r]   r^   Úcreate_unix_listener¥  ry   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’   )
ra   r  Ú
SOCK_DGRAMr8  r  ÚSO_REUSEPORTrú  rû  rL  r@  )r\   rü  rõ  r	  r
  rð   r]   r]   r^   Úcreate_udp_socket©  s   €zTrioBackend.create_udp_socketr.  Úremote_pathúabc.UNIXDatagramSocketc                 Ã  ó   �d S rY   r]   ©r\   r.  r  r]   r]   r^   Úcreate_unix_datagram_socket¿  ó   €z'TrioBackend.create_unix_datagram_socketúabc.ConnectedUNIXDatagramSocketc                 Ã  r  rY   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 rY   )ra   r  r2  rû  rT  rS  )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 rY   )ra   r  Úgetaddrinfo)r\   ró  rô  rü  r  r  r$  r]   r]   r^   r  ×  s   €zTrioBackend.getaddrinfoÚsockaddrr@   útuple[str, str]c                 Ã  s   �t j ||¡I d H S rY   )ra   r  Úgetnameinfo)r\   r   r$  r]   r]   r^   r"  ì  s   €zTrioBackend.getnameinfoÚobjúHasFileno | intc              
   Ã  ó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"   ra   r0   Úwith_tracebackÚ__traceback__r/   ©r\   r#  r—   r]   r]   r^   r"   ò  ó   €€
ÿzTrioBackend.wait_readablec              
   Ã  r%  )Nr  )r#   ra   r0   r&  r'  r/   r(  r]   r]   r^   r#   û  r)  zTrioBackend.wait_writablec                 C  s<   zt  ¡ W S  ty   ttj ¡ d�}t  |¡ | Y S w )Nrs  )rƒ  r–  ÚLookupErrorr5   ra   Ú	to_threadÚcurrent_default_thread_limiterr\  )r\   rÖ  r]   r]   r^   r,    s   
ÿ
ûz*TrioBackend.current_default_thread_limiterr†  r   ú.AbstractContextManager[AsyncIterator[Signals]]c                 G  rÒ  rY   )r„  )r\   r†  r]   r]   r^   r‰    s   z TrioBackend.open_signal_receiverr*   c                 C  s   t ƒ }t|ƒS rY   )r!   rk  )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 rY   )r    rk  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.testingr2  )r\   r2  r]   r]   r^   r2  +  s   €z"TrioBackend.wait_all_tasks_blockedrŽ  c                 C  s   t di |¤ŽS r`   )rŽ  )r\   r�  r]   r]   r^   Úcreate_test_runner1  rÝ  zTrioBackend.create_test_runner)
rš   rº  rœ   r®   rU   r¯   r�  r¯   rW   rO   )rW   rV   r„   )rW   rÀ  rƒ   )rÅ  ru   rW   r_   )rx   ru   r�   rm   rW   rÇ  )rW   rÊ  )rW   rÍ  rl  )rp  rÔ   ro  r¹   r^  rm   rW   rÐ  )rt  ru   rW   r5   )FN)
rš   rÔ  rœ   r®   rÕ  rm   rÖ  r×  rW   rO   )rš   rº  rœ   r®   rÙ  rV   rW   rO   )rš   rÔ  rœ   r®   rÙ  rV   rW   rO   )rW   rã  )rå  ræ  rß   rç  rá   rç  râ   rç  rU   r   rW   rÉ   ©rè   ré   rW   r_   rY   )ró  rè  rô  rÔ   rõ  rö  rW   r  )rþ  rÿ  rW   r   )r  rù   rW   r  )
rü  r  rõ  rö  r	  rö  r
  rm   rW   r  )r.  rù   r  r_   rW   r  )r.  rù   r  rÿ  rW   r  )r.  rù   r  r  rW   r  )ró  r  rô  r  rü  r  r  r  r  rÔ   r$  rÔ   rW   r  )r   )r   r@   r$  rÔ   rW   r!  )r#  r$  rW   r_   )rW   r5   )r†  r   rW   r-  )rW   r*   )rW   r/  )r�  r¯   rW   rŽ  )-r‡   rˆ   r‰   Úclassmethodr»  r¼  r¿  rÁ  r  rd  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  r2  r3  r]   r]   r]   r^   r¹  ß  s¼    	ÿû	û(ÿ
øÿ
r¹  r4  )�Ú
__future__r   r  rë   ré  r  ÚsysÚtypesr´  Úcollections.abcr   r   r   r   r   r   r	   r
   Úconcurrent.futuresr   Ú
contextlibr   Údataclassesr   Ú	functoolsr   Úior   r   rØ   r   r   r   r   Útypingr   r   r   r   r   r   r   r   Ztrio.from_threadra   Ztrio.lowlevelr›  r   r   r   r    r!   r"   r#   Ztrio.socketr$   rñ   Ztrio.to_threadr%   Ú r'   r(   r)   r*   r+   r,   Z_core._eventloopr-   Z_core._exceptionsr.   r/   r0   r1   Z_core._socketsr2   Z_core._streamsr3   Z_core._synchronizationr5   ZBaseCapacityLimiterr7   Z	BaseEventr9   ZBaseLockr:   r;   r=   ZBaseSemaphoreZ_core._tasksr?   ZBaseCancelScoper@   rA   rB   Zabc._eventlooprC   rD   Zstreams.memoryrE   Z	_typeshedrF   Úversion_inforI   Ztyping_extensionsrK   rL   ZexceptiongrouprM   rN   rO   rè  rP   rQ   rR   r¨   ZRunVarrŒ   r¤   ZByteReceiveStreamr¶   ZByteSendStreamrÄ   rÉ   Z
Instrumentrå   rç   rÃ   rî   rï   r  r  ZSocketListenerr-  r?  r@  rL  rS  rT  rƒ  r„  rŽ  rk  r¹  Zbackend_classr]   r]   r]   r^   Ú<module>   s¶    (
( 6; 8ÿ
!C

ÿ86L W  Y