o
    øT·j“²  ã                   @  sD  U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
mZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZ d dlm Z m!Z! d dlm"Z" d dl#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- d dl.Z/d dl0Z/d dl1m2Z2m3Z3m4Z4 d dl0m5Z5m6Z6m7Z7m8Z8m9Z9 d dl:m;Z< d dl=m>Z> ddl?m@Z@mAZAmBZBmCZCmDZDmEZEmFZF ddlGmHZH ddlImJZJmKZKmLZLmMZM ddlNmOZO ddlPmQZQ ddlRmSZT ddlRmUZV ddlRmWZX ddlRmYZYmZZZ ddlRm[Z\ ddl]m^Z_ ddl]m`Z` ddlFmaZambZbmcZc dd ldmeZemfZf dd!lgmhZhmiZimjZjmkZk e%�r>d d"llmmZm dd#lnmoZo ejpd$k �rJd d%lqmrZr ejpd&k�r[d d'l#msZsmtZtmuZu nd d(lvmwZw d d'lqmsZsmtZtmuZu e+d)ƒZxe+d*ƒZye+d+d,d-�Zze+d.e{eaƒZ|etd/ƒZ}e*d0ƒZ~drd5d6„Ze/j€j�Z�G d7d8„ d8e_ƒZ^erd9ƒZ‚G d:d;„ d;eFjƒeh e'eh ƒZ„G d<d=„ d=eFj…ƒZ…ed>d?�G d@dA„ dAeFj†ƒƒZ‡ed>d?�G dBdC„ dCeFjˆƒƒZ‰ed>d?�G dDdE„ dEeFjŠƒƒZŠG dFdG„ dGe/jFj‹ƒZŒe�dHƒZ�dIeŽdH< dsdMdN„Z�G dOdP„ dPe'e| ƒZ�G dQdR„ dRe�eFj‘ƒZ‘G dSdT„ dTe‘eFj’ƒZ’G dUdV„ dVe�eFj“ƒZ”G dWdX„ dXe�eFj“ƒZ•G dYdZ„ dZe�ea eFj–ƒZ–G d[d\„ d\e�ea eFj—ƒZ—G d]d^„ d^e�e{ eFj˜ƒZ˜G d_d`„ d`e�e{ eFj™ƒZ™G dadb„ dbeVƒZUG dcdd„ ddeXƒZWG dedf„ dfe\ƒZ[G dgdh„ dheTƒZSe�diƒZšdIeŽdi< G djdk„ dkƒZ›G dldm„ dmeFjœƒZœG dndo„ doeDƒZ�G dpdq„ dqeeƒZžežZŸdS )té    )ÚannotationsN)ÚAsyncGeneratorÚAsyncIteratorÚ	AwaitableÚCallableÚ
CollectionÚ	CoroutineÚIterableÚSequence)ÚAbstractContextManager)ÚContext)Ú	dataclass)ÚpartialÚwraps)ÚIOBase)ÚPathLike)ÚSignals)ÚAddressFamilyÚ
SocketKind)ÚTracebackType)
ÚIOÚTYPE_CHECKINGÚAnyÚGenericÚLiteralÚNoReturnÚ	ParamSpecÚTypeVarÚcastÚoverload)ÚErrorÚOutcomeÚValue)Úcurrent_root_taskÚcurrent_taskÚnotify_closingÚwait_readableÚwait_writable)Ú
SocketType)Úrun_syncé   )ÚCapacityLimiterStatisticsÚEventStatisticsÚLockStatisticsÚRunFinishedErrorÚTaskInfoÚ
WouldBlockÚabc)Úclaim_worker_thread)ÚBrokenResourceErrorÚBusyResourceErrorÚClosedResourceErrorÚEndOfStream)Úconvert_ipv6_sockaddr)Úcreate_memory_object_stream©ÚCapacityLimiter©ÚEvent©ÚLock)ÚResourceGuardÚSemaphoreStatistics©Ú	Semaphore©ÚCancelScope)Ú
TaskHandle)ÚIPSockAddrTypeÚUDPPacketTypeÚUNIXDatagramPacketType)ÚAsyncBackendÚStrOrBytesPath)ÚT_contraÚcall_for_coroutineÚget_callable_nameÚget_coro_name)ÚFileDescriptorLike)ÚMemoryObjectSendStream)é   é   )Úsentinel)rQ   é   )ÚSelfÚTypeVarTupleÚUnpack)ÚBaseExceptionGroupÚTÚT_RetvalÚT_coT)Ú	covariantÚ
T_SockAddrÚPosArgsTÚPÚfuncú Callable[P, Awaitable[T_Retval]]Úreturnú*Callable[P, Coroutine[Any, Any, T_Retval]]c                   s   t ˆ ƒd	‡ fdd„ƒ}|S )
NÚargsúP.argsÚkwargsúP.kwargsrb   úCoroutine[Any, Any, T_Retval]c                    sF   ˆ| i |¤Ž‰ t ˆ tƒrˆ S t ˆ tƒsˆ S tˆƒd‡ fdd„ƒ}|ƒ S )Nrb   rZ   c                   “  s   �ˆ I d H S ©N© rj   ©Ú	awaitablerj   úX/home/dinkstrade/pdmp-scanner/venv/lib/python3.10/site-packages/anyio/_backends/_trio.pyÚinner_wrapper~   s   €
z;ensure_returns_coro.<locals>.wrapper.<locals>.inner_wrapper©rb   rZ   )Ú
isinstancer   r   r   )rd   rf   rn   ©r`   rk   rm   Úwrapperr   s   

z$ensure_returns_coro.<locals>.wrapper)rd   re   rf   rg   rb   rh   )r   )r`   rr   rj   rq   rm   Úensure_returns_coroo   s   rs   c                   @  s¢   e Zd 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	d0dd „ƒZ
e
jd1d"d „ƒZ
e	d2d#d$„ƒZe	d2d%d&„ƒZe	d2d'd(„ƒZejd3d)d(„ƒZdS )4rD   ©Ú
__originalNÚoriginalútrio.CancelScope | Nonerf   Úobjectrb   rU   c                 K  ó
   t  | ¡S ri   ©rx   Ú__new__)Úclsrv   rf   rj   rj   rm   r{   –   s   
zCancelScope.__new__r   ÚNonec                 K  s   |p	t jdi |¤Ž| _d S ©Nrj   )ÚtriorD   Ú_CancelScope__original)Úselfrv   rf   rj   rj   rm   Ú__init__›   s   zCancelScope.__init__c                 C  s   | j  ¡  | S ri   )r€   Ú	__enter__©r�   rj   rj   rm   rƒ   ž   s   
zCancelScope.__enter__Úexc_typeútype[BaseException] | NoneÚexc_valúBaseException | NoneÚexc_tbúTracebackType | NoneÚboolc                 C  ó   | j  |||¡S ri   )r€   Ú__exit__©r�   r…   r‡   r‰   rj   rj   rm   r�   ¢   ó   zCancelScope.__exit__Úreasonú
str | Nonec                 C  ó   | j  |¡ d S ri   )r€   Úcancel)r�   r�   rj   rj   rm   r“   ª   ó   zCancelScope.cancelÚfloatc                 C  ó   | j jS ri   ©r€   Údeadliner„   rj   rj   rm   r˜   ­   ó   zCancelScope.deadlineÚvaluec                 C  ó   || j _d S ri   r—   ©r�   rš   rj   rj   rm   r˜   ±   ó   c                 C  r–   ri   )r€   Úcancel_calledr„   rj   rj   rm   rž   µ   r™   zCancelScope.cancel_calledc                 C  r–   ri   )r€   Úcancelled_caughtr„   rj   rj   rm   rŸ   ¹   r™   zCancelScope.cancelled_caughtc                 C  r–   ri   ©r€   Úshieldr„   rj   rj   rm   r¡   ½   r™   zCancelScope.shieldc                 C  r›   ri   r    rœ   rj   rj   rm   r¡   Á   r�   ri   )rv   rw   rf   rx   rb   rU   )rv   rw   rf   r   rb   r}   ©rb   rU   ©r…   r†   r‡   rˆ   r‰   rŠ   rb   r‹   )r�   r‘   rb   r}   ©rb   r•   ©rš   r•   rb   r}   ©rb   r‹   )rš   r‹   rb   r}   )Ú__name__Ú
__module__Ú__qualname__Ú	__slots__r{   r‚   rƒ   r�   r“   Úpropertyr˜   Úsetterrž   rŸ   r¡   rj   rj   rj   rm   rD   “   s(    ÿ

rD   Úempty_start_valuec                   @  s2   e Zd ZU eZded< dZded< ddd
d„ZdS )Ú_TrioTaskStatuszT_contra | objectÚearly_start_valueNz'trio.TaskStatus[T_contra | None] | NoneÚreal_task_statusrš   úT_contra | Nonerb   r}   c                 C  s6   | j d u r| jturtdƒ‚|| _d S | j  |¡ d S )Nz.called 'started' twice on the same task status)r°   r¯   r­   ÚRuntimeErrorÚstartedrœ   rj   rj   rm   r³   Ñ   s
   


z_TrioTaskStatus.startedri   )rš   r±   rb   r}   )r§   r¨   r©   r­   r¯   Ú__annotations__r°   r³   rj   rj   rj   rm   r®   Í   s   
 r®   c                   @  sZ   e Zd Zd*dd„Zd+dd„Zd,dd„Zd-d.dd„Zdddœd/dd„Zddd œd0d(d)„ZdS )1Ú	TaskGrouprb   r}   c                 C  s$   d| _ d| _tjdd�| _d | _d S )NFT)Ústrict_exception_groups)Ú_enteredÚ_activer   Úopen_nurseryÚ_nursery_managerÚcancel_scoper„   rj   rj   rm   r‚   Ü   s   
zTaskGroup.__init__rU   c                 Ã  s@   �| j rtdƒ‚d| _ d| _| j ¡ I d H | _t| jjƒ| _| S )Nz*TaskGroup cannot be entered more than onceT)r·   r²   r¸   rº   Ú
__aenter__Ú_nurseryrD   r»   r„   rj   rj   rm   r¼   â   s   €zTaskGroup.__aenter__r…   r†   r‡   rˆ   r‰   rŠ   r‹   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¸   rX   Úsplitr   Ú	CancelledÚ_create)r�   r…   r‡   r‰   Úexcrj   rj   rm   r¿   ì   s   €ù€üzTaskGroup.__aexit__NÚcoroúCoroutine | Nonec                 C  s"   | j s|d ur| ¡  tdƒ‚d S )Nz;This task group is not active; no new tasks can be started.)r¸   Úcloser²   )r�   rÄ   rj   rj   rm   Ú_check_activeþ   s   ÿüzTaskGroup._check_active)ÚnameÚcontextúCoroutine[Any, Any, T_co]rÈ   rx   rÉ   úContext | NoneúTaskHandle[T_co]c                C  sz   t |tƒstd|jj› �ƒ‚|  |¡ t||ƒ}t||ƒ}|d ur1| t	| j
j|j|jd�¡ |S | j
j|j|jd� |S )Nzexpected a coroutine, got ©rÈ   )rp   r   Ú	TypeErrorÚ	__class__r©   rÇ   rN   rE   Úrunr   r½   Ú
start_soonÚ	_run_cororÈ   )r�   rÄ   rÈ   rÉ   Ú
final_nameÚhandlerj   rj   rm   Úcreate_task  s   



ÿþzTaskGroup.create_taskF)rÈ   Úreturn_handler`   ú7Callable[[Unpack[PosArgsT]], Coroutine[Any, Any, T_co]]rd   úUnpack[PosArgsT]rÖ   úLiteral[False, True]r   c                ‡  sP   �d‡ ‡‡‡fdd„}|   ¡  tˆ|ƒ‰| jj|ˆd�I d H }|r&|ˆ_ˆS |S )	NÚtask_statusútrio.TaskStatus[Any]rb   r}   c                 “  sP   �t ƒ }tˆˆ |d�}|jtur|  |j¡ n| |_t|ˆƒ‰ˆ ¡ I d H  d S )N)rÚ   )r®   rL   r¯   r­   r³   r°   rE   rÒ   )rÚ   Úwrapper_task_statusrÄ   ©rd   rÓ   r`   rÔ   rj   rm   Úrun_coro_with_task_status&  s   €

z2TaskGroup.start.<locals>.run_coro_with_task_statusrÍ   )rÚ   rÛ   rb   r}   )rÇ   rM   r½   ÚstartÚ_start_value)r�   r`   rÈ   rÖ   rd   rÞ   Ústart_valuerj   rÝ   rm   rß     s   €	
ÿzTaskGroup.start©rb   r}   r¢   r£   ri   )rÄ   rÅ   rb   r}   )rÄ   rÊ   rÈ   rx   rÉ   rË   rb   rÌ   )
r`   r×   rd   rØ   rÈ   rx   rÖ   rÙ   rb   r   )	r§   r¨   r©   r‚   r¼   r¿   rÇ   rÕ   rß   rj   rj   rj   rm   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 | Nonerb   Úbytesc              
   Ã  s„   �|d ur|dk rt dƒ‚z| j |¡I d H }W n! tjy) } zt|j‚d }~w tjy9 } zt|j‚d }~ww |r@t|ƒS t‚©Nr¾   z$max_bytes must be a positive integer)	Ú
ValueErrorrå   Úreceive_somer   r5   Ú	__cause__r3   rè   r6   ©r�   ræ   ÚdatarÃ   rj   rj   rm   ÚreceiveI  s   €€€ÿzReceiveStreamWrapper.receiver}   c                 Ã  ó   �| j  ¡ I d H  d S ri   ©rå   Úacloser„   rj   rj   rm   rò   Y  ó   €zReceiveStreamWrapper.acloseri   )ræ   rç   rb   rè   râ   )r§   r¨   r©   r´   rï   rò   rj   rj   rj   rm   rä   E  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è   rb   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 ri   )rå   Úsend_allr   r5   rì   r3   ©r�   rõ   rÃ   rj   rj   rm   Úsenda  s   €€€ÿzSendStreamWrapper.sendc                 Ã  rð   ri   rñ   r„   rj   rj   rm   rò   i  ró   zSendStreamWrapper.acloseN©rõ   rè   rb   r}   râ   )r§   r¨   r©   r´   rø   rò   rj   rj   rj   rm   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Ú_stderrrb   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¡   )rD   rý   rò   rÿ   r   ÚwaitÚBaseExceptionÚkillr„   rj   rj   rm   rò   t  s*   €€ú
ÿþüzProcess.acloseÚintc                 Ã  ó   �| j  ¡ I d H S ri   )rû   r  r„   rj   rj   rm   r  …  ó   €zProcess.waitc                 C  ó   | j  ¡  d S ri   )rû   Ú	terminater„   rj   rj   rm   r	  ˆ  ó   zProcess.terminatec                 C  r  ri   )rû   r  r„   rj   rj   rm   r  ‹  r
  zProcess.killÚsignalr   c                 C  r’   ri   )rû   Úsend_signal)r�   r  rj   rj   rm   r  Ž  r”   zProcess.send_signalc                 C  r–   ri   )rû   Úpidr„   rj   rj   rm   r  ‘  r™   zProcess.pidrç   c                 C  r–   ri   )rû   Ú
returncoder„   rj   rj   rm   r  •  r™   zProcess.returncodec                 C  ó   | j S ri   )rý   r„   rj   rj   rm   Ústdin™  ó   zProcess.stdinc                 C  r  ri   )rÿ   r„   rj   rj   rm   Ústdout�  r  zProcess.stdoutc                 C  r  ri   )r   r„   rj   rj   rm   Ústderr¡  r  zProcess.stderrNrâ   ©rb   r  )r  r   rb   r}   ©rb   rç   )rb   rü   )rb   rþ   )r§   r¨   r©   r´   rò   r  r	  r  r  r«   r  r  r  r  r  rj   rj   rj   rm   rú   m  s(   
 




rú   c                      s   e Zd Zd‡ fdd„Z‡  ZS )Ú_ProcessPoolShutdownInstrumentrb   r}   c                   s   t ƒ  ¡  d S ri   )ÚsuperÚ	after_runr„   ©rÏ   rj   rm   r  §  r
  z(_ProcessPoolShutdownInstrument.after_runrâ   )r§   r¨   r©   r  Ú__classcell__rj   rj   r  rm   r  ¦  s    r  Ú&current_default_worker_process_limiterztrio.lowlevel.RunVarÚworkersúset[abc.Process]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  rD   rò   )r  Úprocessrj   rj   rm   Ú_shutdown_process_pool°  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ÚTrioSocketTyperb   r}   c                 C  s   || _ d| _d S ©NF)Ú_trio_socketÚ_closed©r�   r$  rj   rj   rm   r‚   Ã  s   
z_TrioSocketMixin.__init__c                 C  s    | j rt‚| j ¡ dk rt‚d S ©Nr   )r(  r5   r'  Úfilenor3   r„   rj   rj   rm   Ú_check_closedÇ  s
   ÿz_TrioSocketMixin._check_closedúsocket.socketc                 C  r–   ri   )r'  Ú_sockr„   rj   rj   rm   Ú_raw_socketÍ  r™   z_TrioSocketMixin._raw_socketc                 Ã  s(   �| j  ¡ dkrd| _| j  ¡  d S d S )Nr   T)r'  r+  r(  rÆ   r„   rj   rj   rm   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*  )rp   r   r5   r'  r+  r(  ÚOSErrorr3   ©r�   rÃ   rj   rj   rm   Ú_convert_socket_errorÖ  s   
z&_TrioSocketMixin._convert_socket_errorN©r$  r%  rb   r}   râ   )rb   r-  )rÃ   r  rb   r   )	r§   r¨   r©   r‚   r,  r«   r/  rò   r2  rj   rj   rj   rm   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%  rb   r}   c                   ó$   t ƒ  |¡ tdƒ| _tdƒ| _d S ©Núreading fromú
writing to©r  r‚   r?   Ú_receive_guardÚ_send_guardr)  r  rj   rm   r‚   â  ó   
zSocketStream.__init__é   ræ   r  rè   c                 Ã  sŽ   �|dk r	t dƒ‚| j�1 z| j |¡I d H }W n ty/ } z|  |¡ W Y d }~nd }~ww |r;|W  d   ƒ S t‚1 s@w   Y  d S ré   )rê   r:  r'  Úrecvr  r2  r6   rí   rj   rj   rm   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 ri   )r;  Ú
memoryviewr'  rø   r  r2  )r�   rõ   ÚviewÚ
bytes_sentrÃ   rj   rj   rm   rø   ö  s   €€ÿúþ"þzSocketStream.sendc                 Ã  s   �| j  tj¡ d S ri   )r'  ÚshutdownÚsocketÚSHUT_WRr„   rj   rj   rm   Úsend_eof  s   €zSocketStream.send_eofr3  )r=  )ræ   r  rb   rè   rù   râ   )r§   r¨   r©   r‚   rï   rø   rE  r  rj   rj   r  rm   r4  á  s
    
r4  c                   @  s    e Zd Zddd„Zddd„ZdS )ÚUNIXSocketStreamÚmsglenr  Úmaxfdsrb   ú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 = )rp   r  rê   Úarrayr   ÚlowlevelÚ
checkpointr:  r'  ÚrecvmsgrC  ÚCMSG_LENÚitemsizer  r2  r6   Ú
SOL_SOCKETÚ
SCM_RIGHTSr²   Ú	frombytesÚlenÚlist)r�   rG  rH  ÚfdsÚmessageÚancdataÚ_flagsÚ_addrrÃ   Ú
cmsg_levelÚ	cmsg_typeÚ	cmsg_datarj   rj   rm   Úreceive_fds  sD   €
ÿ€ÿõôÿÿÿ&zUNIXSocketStream.receive_fdsrW  rè   rV  ú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 emptyrJ  )rê   rp   r  Úappendr   r+  rK  r   rL  rM  r;  r'  ÚsendmsgrC  rQ  rR  r  r2  )r�   rW  rV  ÚfilenosÚfdÚfdarrayrÃ   rj   rj   rm   Úsend_fds'  sB   €

€ýÿ
þ
€ÿó"ózUNIXSocketStream.send_fdsN)rG  r  rH  r  rb   rI  )rW  rè   rV  r_  rb   r}   )r§   r¨   r©   r^  re  rj   rj   rj   rm   rF    s    
!rF  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  r‚   r   rC  Úfrom_stdlib_socketr?   Ú_accept_guard©r�   rh  r  rj   rm   r‚   I  ó   zTCPSocketListener.__init__rb   r4  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¾   )
rm  r'  Úacceptr  r2  Ú
setsockoptrC  ÚIPPROTO_TCPÚTCP_NODELAYr4  ©r�   r$  rZ  rÃ   rj   rj   rm   rq  M  s   €€ÿ€ýzTCPSocketListener.accept©rh  r-  )rb   r4  ©r§   r¨   r©   r‚   rq  r  rj   rj   r  rm   rg  H  ó    rg  c                      rf  )ÚUNIXSocketListenerrh  r-  c                   ri  rj  rk  rn  r  rj   rm   r‚   Y  ro  zUNIXSocketListener.__init__rb   rF  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 ri   )rm  r'  rq  r  r2  rF  ru  rj   rj   rm   rq  ]  s    €€ÿÿ
þþ
üúzUNIXSocketListener.acceptrv  )rb   rF  rw  rj   rj   r  rm   ry  X  rx  ry  c                      s2   e Zd Zd‡ fdd„Zddd	„Zddd„Z‡  ZS )Ú	UDPSocketr$  r%  rb   r}   c                   r5  r6  r9  r)  r  rj   rm   r‚   h  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'  Úrecvfromr7   r  r2  ©r�   rî   ÚaddrrÃ   rj   rj   rm   rï   m  s   €ý€ÿ"ûzUDPSocket.receiverõ   rG   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 ri   ©r;  r'  Úsendtor  r2  r÷   rj   rj   rm   rø   u  ó   €€ÿÿþ"üzUDPSocket.sendr3  )rb   r{  )rõ   rG   rb   r}   ©r§   r¨   r©   r‚   rï   rø   r  rj   rj   r  rm   rz  g  ó    
rz  c                      ó2   e Zd Zd‡ fdd„Zddd	„Zddd„Z‡  ZS )ÚConnectedUDPSocketr$  r%  rb   r}   c                   r5  r6  r9  r)  r  rj   rm   r‚   ~  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 r|  ©r:  r'  r>  r  r2  r1  rj   rj   rm   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 ri   ©r;  r'  rø   r  r2  r÷   rj   rj   rm   rø   Š  rƒ  zConnectedUDPSocket.sendr3  ©rb   rè   rù   r„  rj   rj   r  rm   r‡  }  s    
r‡  c                      r†  )ÚUNIXDatagramSocketr$  r%  rb   r}   c                   r5  r6  r9  r)  r  rj   rm   r‚   “  r<  zUNIXDatagramSocket.__init__rH   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 r|  )r:  r'  r}  r  r2  r~  rj   rj   rm   rï   ˜  s   €ý€ÿ"ûzUNIXDatagramSocket.receiverõ   c                 Ã  r€  ri   r�  r÷   rj   rj   rm   rø      rƒ  zUNIXDatagramSocket.sendr3  )rb   rH   )rõ   rH   rb   r}   r„  rj   rj   r  rm   rŽ  ’  r…  rŽ  c                      r†  )ÚConnectedUNIXDatagramSocketr$  r%  rb   r}   c                   r5  r6  r9  r)  r  rj   rm   r‚   «  r<  z$ConnectedUNIXDatagramSocket.__init__rè   c                 Ã  rˆ  r|  r‰  r1  rj   rj   rm   rï   °  rŠ  z#ConnectedUNIXDatagramSocket.receiverõ   c                 Ã  r‹  ri   rŒ  r÷   rj   rj   rm   rø   ·  rƒ  z ConnectedUNIXDatagramSocket.sendr3  r�  rù   r„  rj   rj   r  rm   r�  ¨  s    
r�  c                   @  sL   e Zd 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 )r<   rt   rb   rU   c                 C  ry   ri   rz   ©r|   rj   rj   rm   r{   Ç  ó   
zEvent.__new__r}   c                 C  s   t  ¡ | _d S ri   )r   r<   Ú_Event__originalr„   rj   rj   rm   r‚   Ê  r
  zEvent.__init__r‹   c                 C  ó
   | j  ¡ S ri   )r’  Úis_setr„   rj   rj   rm   r”  Í  r‘  zEvent.is_setc                 Ã  r  ri   )r’  r  r„   rj   rj   rm   r  Ð  r  z
Event.waitr,   c                 C  s   | j  ¡ }t|jd�S )N)Útasks_waiting)r’  Ú
statisticsr,   r•  ©r�   Úorig_statisticsrj   rj   rm   r–  Ó  s   
zEvent.statisticsc                 C  r  ri   )r’  Úsetr„   rj   rj   rm   r™  ×  r
  z	Event.setNr¢   râ   r¦   )rb   r,   )
r§   r¨   r©   rª   r{   r‚   r”  r  r–  r™  rj   rj   rj   rm   r<   Ä  s    




r<   c                   @  sp   e Zd 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>   )ru   Ú_fast_acquireF©Úfast_acquirerœ  r‹   rb   rU   c                C  ry   ri   rz   ©r|   rœ  rj   rj   rm   r{   Þ  r‘  zLock.__new__r}   c                C  s   || _ t ¡ | _d S ri   )rš  r   r>   Ú_Lock__original)r�   rœ  rj   rj   rm   r‚   á  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)rd   )rÃ   rj   rj   rm   Ú_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 ri   )rš  rž  Úacquirer²   rŸ  r   rL  Úcheckpoint_if_cancelledÚacquire_nowaitr0   Ú_lotÚparkr1  rj   rj   rm   r   ê  s(   €ü
€þ
€þzLock.acquirec              
   C  sJ   z| j  ¡  W d S  tjy   td ‚ ty$ } z|  |¡ ‚ d }~ww ri   )rž  r¢  r   r0   r²   rŸ  r1  rj   rj   rm   r¢  þ  s   
€þzLock.acquire_nowaitc                 C  r“  ri   )rž  Úlockedr„   rj   rj   rm   r¥    r‘  zLock.lockedc                 C  r  ri   )rž  Úreleaser„   rj   rj   rm   r¦  
  r
  zLock.releaser-   c                 C  s.   | j  ¡ }|jrt|jƒnd }t|j||jƒS ri   )rž  r–  ÚownerÚTrioTaskInfor-   r¥  r•  )r�   r˜  r§  rj   rj   rm   r–    s
   

ÿzLock.statisticsN)rœ  r‹   rb   rU   )rœ  r‹   rb   r}   )rÃ   r²   rb   r}   râ   r¦   )rb   r-   )r§   r¨   r©   rª   r{   r‚   ÚstaticmethodrŸ  r   r¢  r¥  r¦  r–  rj   rj   rj   rm   r>   Û  s    


	
r>   c                      s€   e Zd 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 )%rB   rt   NF©Ú	max_valuerœ  Úinitial_valuer  r«  rç   rœ  r‹   rb   rU   c                C  ry   ri   rz   ©r|   r¬  r«  rœ  rj   rj   rm   r{     s   
zSemaphore.__new__r}   c                  s&   t ƒ j|||d� tj||d�| _d S )Nrª  )r«  )r  r‚   r   rB   Ú_Semaphore__original)r�   r¬  r«  rœ  r  rj   rm   r‚   !  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 ri   )
rš  r®  r   r   rL  r¡  r¢  r0   r£  r¤  r„   rj   rj   rm   r   +  s   €ÿzSemaphore.acquirec                 C  ó(   z| j  ¡  W d S  tjy   td ‚w ri   )r®  r¢  r   r0   r„   rj   rj   rm   r¢  7  ó
   ÿzSemaphore.acquire_nowaitc                 C  r–   ri   )r®  r«  r„   rj   rj   rm   r«  =  r™   zSemaphore.max_valuec                 C  r–   ri   )r®  rš   r„   rj   rj   rm   rš   A  r™   zSemaphore.valuec                 C  r  ri   )r®  r¦  r„   rj   rj   rm   r¦  E  r
  zSemaphore.releaser@   c                 C  s   | j  ¡ }t|jƒS ri   )r®  r–  r@   r•  r—  rj   rj   rm   r–  H  s   

zSemaphore.statistics)r¬  r  r«  rç   rœ  r‹   rb   rU   )r¬  r  r«  rç   rœ  r‹   rb   r}   râ   r  r  )rb   r@   )r§   r¨   r©   rª   r{   r‚   r   r¢  r«   r«  rš   r¦  r–  r  rj   rj   r  rm   rB     s     ûû



rB   c                   @  sÌ   e Zd ZdZ	d4ddœd5d
d„Z	d4ddœd6dd„Zd7dd„Zd8dd„Zed9dd„ƒZ	e	j
d:dd„ƒZ	ed;dd „ƒZed9d!d"„ƒZd7d#d$„Zd<d'd(„Zd7d)d*„Zd<d+d,„Zd7d-d.„Zd<d/d0„Zd=d2d3„ZdS )>r:   rt   N©rv   Útotal_tokensúfloat | Nonerv   útrio.CapacityLimiter | Nonerb   rU   c                C  ry   ri   rz   )r|   r²  rv   rj   rj   rm   r{   P  s   
zCapacityLimiter.__new__r}   c                C  s.   |d ur	|| _ d S |d usJ ‚t |¡| _ d S ri   )Ú_CapacityLimiter__originalr   r:   )r�   r²  rv   rj   rj   rm   r‚   X  s   
zCapacityLimiter.__init__c                 Ã  r  ri   )rµ  r¼   r„   rj   rj   rm   r¼   d  r  zCapacityLimiter.__aenter__r…   r†   r‡   rˆ   r‰   rŠ   c                 Ã  s   �| j  |||¡I d H  d S ri   )rµ  r¿   rŽ   rj   rj   rm   r¿   g  s   €zCapacityLimiter.__aexit__r•   c                 C  r–   ri   ©rµ  r²  r„   rj   rj   rm   r²  o  r™   zCapacityLimiter.total_tokensrš   c                 C  r›   ri   r¶  rœ   rj   rj   rm   r²  s  r�   r  c                 C  r–   ri   )rµ  Úborrowed_tokensr„   rj   rj   rm   r·  w  r™   zCapacityLimiter.borrowed_tokensc                 C  r–   ri   )rµ  Úavailable_tokensr„   rj   rj   rm   r¸  {  r™   z CapacityLimiter.available_tokensc                 C  r¯  ri   )rµ  r¢  r   r0   r„   rj   rj   rm   r¢    r°  zCapacityLimiter.acquire_nowaitÚborrowerrx   c                 C  s*   z	| j  |¡ W d S  tjy   td ‚w ri   )rµ  Úacquire_on_behalf_of_nowaitr   r0   ©r�   r¹  rj   rj   rm   rº  …  s
   ÿz+CapacityLimiter.acquire_on_behalf_of_nowaitc                 Ã  rð   ri   )rµ  r   r„   rj   rj   rm   r   ‹  ró   zCapacityLimiter.acquirec                 Ã  s   �| j  |¡I d H  d S ri   )rµ  Úacquire_on_behalf_ofr»  rj   rj   rm   r¼  Ž  s   €z$CapacityLimiter.acquire_on_behalf_ofc                 C  r“  ri   )rµ  r¦  r„   rj   rj   rm   r¦  ‘  r‘  zCapacityLimiter.releasec                 C  s   | j  |¡S ri   )rµ  Úrelease_on_behalf_ofr»  rj   rj   rm   r½  ”  s   z$CapacityLimiter.release_on_behalf_ofr+   c                 C  s&   | j  ¡ }t|j|jt|jƒ|jd�S )N)r·  r²  Ú	borrowersr•  )rµ  r–  r+   r·  r²  Útupler¾  r•  )r�   Úorigrj   rj   rm   r–  —  s   
üzCapacityLimiter.statisticsri   )r²  r³  rv   r´  rb   rU   )r²  r³  rv   r´  rb   r}   râ   )r…   r†   r‡   rˆ   r‰   rŠ   rb   r}   r¤   r¥   r  )r¹  rx   rb   r}   )rb   r+   )r§   r¨   r©   rª   r{   r‚   r¼   r¿   r«   r²  r¬   r·  r¸  r¢  rº  r   r¼  r¦  r½  r–  rj   rj   rj   rm   r:   M  s6    þü
þü







r:   Ú_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 ri   )Ú_signals)r�   rÄ  rj   rj   rm   r‚   ¬  r‘  z_SignalReceiver.__init__rb   rU   c                 C  s   t j| jŽ | _| j ¡ | _| S ri   )r   Úopen_signal_receiverrÆ  Ú_cmrƒ   rÃ  r„   rj   rj   rm   rƒ   ¯  s   z_SignalReceiver.__enter__r…   r†   r‡   rˆ   r‰   rŠ   úbool | Nonec                 C  rŒ   ri   )rÈ  r�   rŽ   rj   rj   rm   r�   ´  r�   z_SignalReceiver.__exit__c                 C  s   | S ri   rj   r„   rj   rj   rm   Ú	__aiter__¼  s   z_SignalReceiver.__aiter__r   c                 Ã  s   �| j  ¡ I d H }t|ƒS ri   )rÃ  Ú	__anext__r   )r�   Úsignumrj   rj   rm   rË  ¿  s   €z_SignalReceiver.__anext__N)rÄ  rÅ  r¢   )r…   r†   r‡   rˆ   r‰   rŠ   rb   rÉ  )rb   rÂ  )rb   r   )	r§   r¨   r©   r´   r‚   rƒ   r�   rÊ  rË  rj   rj   rj   rm   rÂ  ©  s   
 



rÂ  c                   @  sf   e Zd Zd/dd„Zd0dd„Zd1dd„Zd2dd„Zd3dd„Zd4dd „Zd5d%d&„Z	d6d(d)„Z
d7d,d-„Zd.S )8Ú
TestRunnerÚoptionsr   rb   r}   c                 K  s$   ddl m} |ƒ | _d | _|| _d S )Nr   )ÚQueue)ÚqueuerÏ  Ú_call_queueÚ_send_streamÚ_options)r�   rÎ  rÏ  rj   rj   rm   r‚   Ê  s
   þ
zTestRunner.__init__r…   r†   r‡   rˆ   r‰   útypes.TracebackType | Nonec                 C  s<   | j r| j  ¡  | j d ur| j ¡ ƒ  | j d usd S d S d S ri   )rÒ  rÆ   rÑ  ÚgetrŽ   rj   rj   rm   r�   Ó  s   

ÿþzTestRunner.__exit__r‹   c                 C  ó
   t j ¡ S ri   )r   rL  Úin_trio_taskr„   rj   rj   rm   Ú
is_runningÞ  r‘  zTestRunner.is_runningc                 Ã  s¶   �t ttt tt f  dƒ\| _}|�= |2 z03 d H W \}}z|I d H }W n ty? } z| t	|ƒ¡ W Y d }~qd }~ww | t
|ƒ¡ q6 W d   ƒ d S 1 sTw   Y  d S rp  )r8   r¿  r   r   rU  r!   rÒ  r  r`  r    r"   )r�   Úreceive_streamrl   Úoutcome_holderÚretvalrÃ   rj   rj   rm   Ú_run_tests_and_fixturesá  s"   €ÿ
þ€ÿú"ÿz"TestRunner._run_tests_and_fixturesÚoutcomerx   c                 C  s
   d | _ d S ri   )rÒ  )r�   rÝ  rj   rj   rm   Ú_main_task_finishedî  r‘  zTestRunner._main_task_finishedr`   ra   rd   re   rf   rg   rZ   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   rL  Ústart_guest_runrÜ  rÑ  ÚputrÞ  rÓ  rÕ  Úsend_nowaitÚunwrap)r�   r`   rd   rf   rÚ  rj   rj   rm   Ú_call_in_runner_taskñ  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 stoprj   )rå  ÚasendÚStopAsyncIterationrò   r²   )r�   ræ  rf   ÚasyncgenÚfixturevaluerj   rj   rm   Úrun_asyncgen_fixture	  s   €ÿzTestRunner.run_asyncgen_fixtureú,Callable[..., Coroutine[Any, Any, T_Retval]]c                 C  s   | j |fi |¤ŽS ri   ©rå  )r�   ræ  rf   rj   rj   rm   Úrun_fixture  s   zTestRunner.run_fixtureÚ	test_funcú'Callable[..., Coroutine[Any, Any, Any]]c                 C  s   | j |fi |¤Ž d S ri   rð  )r�   rò  rf   rj   rj   rm   Úrun_test"  s   zTestRunner.run_testN)rÎ  r   rb   r}   )r…   r†   r‡   rˆ   r‰   rÔ  rb   r}   r¦   râ   )rÝ  rx   rb   r}   )r`   ra   rd   re   rf   rg   rb   rZ   )ræ  rç  rf   rè  rb   ré  )ræ  rï  rf   rè  rb   rZ   )rò  ró  rf   rè  rb   r}   )r§   r¨   r©   r‚   r�   rØ  rÜ  rÞ  rå  rî  rñ  rô  rj   rj   rj   rm   rÍ  É  s    

	





rÍ  c                      rf  )r¨  Útaskútrio.lowlevel.Taskc                   sH   d }|j r|j jrt|j jƒ}tƒ  t|ƒ||j|j¡ t |¡| _	d S ri   )
Úparent_nurseryÚparent_taskÚidr  r‚   rÈ   rÄ   ÚweakrefÚproxyÚ_task)r�   rõ  Ú	parent_idr  rj   rm   r‚   )  s
   zTrioTaskInfo.__init__rb   r‹   c                 C  s"   z| j jjW S  ty   Y dS w r&  )rü  Ú_cancel_statusÚeffectively_cancelledÚReferenceErrorr„   rj   rj   rm   Úhas_pending_cancellation1  s
   ýz%TrioTaskInfo.has_pending_cancellation)rõ  rö  r¦   )r§   r¨   r©   r‚   r  r  rj   rj   r  rm   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ÎdKdL„ƒZedÏdMdN„ƒZedÐdWdX„ƒZedÑd[d\„ƒZe	3dÒdÓdcdd„ƒZedÔdhdi„ƒZedÕdmdn„ƒZedÕdodp„ƒZedÖdvdw„ƒ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+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]]rd   útuple[Unpack[PosArgsT]]rf   rè  rÎ  rb   rZ   c                 C  s(   |rJ dƒ‚t jt|ƒg|¢R i |¤ŽS )Nz&unreachable, and not supported by Trio)r   rÐ   rs   )r|   r`   rd   rf   rÎ  rj   rj   rm   rÐ   ;  s   zTrioBackend.runrx   c                 C  rÖ  ri   )r   rL  Úcurrent_trio_tokenr�  rj   rj   rm   Úcurrent_tokenF  ó   
zTrioBackend.current_tokenr•   c                 C  ó   t  ¡ S ri   )r   Úcurrent_timer�  rj   rj   rm   r	  J  r™   zTrioBackend.current_timeútype[BaseException]c                 C  s   t jS ri   )r   rÁ   r�  rj   rj   rm   Úcancelled_exception_classN  r  z%TrioBackend.cancelled_exception_classr}   c                 Ã  ó   �t j ¡ I d H  d S ri   )r   rL  rM  r�  rj   rj   rm   rM  R  ó   €zTrioBackend.checkpointc                 Ã  r  ri   )r   rL  r¡  r�  rj   rj   rm   r¡  V  r  z#TrioBackend.checkpoint_if_cancelledc                 Ã  r  ri   )r   rL  Úcancel_shielded_checkpointr�  rj   rj   rm   r  Z  r  z&TrioBackend.cancel_shielded_checkpointÚdelayc                 Ã  s   �t  |¡I d H  d S ri   )r   r  )r|   r  rj   rj   rm   r  ^  r  zTrioBackend.sleepF©r˜   r¡   r˜   r¡   r‹   ÚBaseCancelScopec                C  s   t ||d�S )Nr  rC   )r|   r˜   r¡   rj   rj   rm   Úcreate_cancel_scopeb  s   zTrioBackend.create_cancel_scopec                 C  r  ri   )r   Úcurrent_effective_deadliner�  rj   rj   rm   r  h  r™   z&TrioBackend.current_effective_deadlineúabc.TaskGroupc                 C  ó   t ƒ S ri   )rµ   r�  rj   rj   rm   Úcreate_task_groupl  r  zTrioBackend.create_task_groupÚ	BaseEventc                 C  r  ri   r;   r�  rj   rj   rm   Úcreate_eventp  r  zTrioBackend.create_eventrœ  r>   c                C  s
   t |d�S )Nr›  r=   r�  rj   rj   rm   Úcreate_lockt  r  zTrioBackend.create_lockNrª  r¬  r  r«  rç   ÚBaseSemaphorec                C  s   t |||d�S )Nrª  rA   r­  rj   rj   rm   Úcreate_semaphorex  s   zTrioBackend.create_semaphorer²  r:   c                 C  ó   t |ƒS ri   r9   )r|   r²  rj   rj   rm   Úcreate_capacity_limiter‚  r™   z#TrioBackend.create_capacity_limiterú&Callable[[Unpack[PosArgsT]], T_Retval]Úabandon_on_cancelÚlimiterúBaseCapacityLimiter | Nonec                 ƒ  s8   �d‡ ‡‡fdd„}t  ¡ ‰t||ttj|ƒd�I d H S )Nrb   rZ   c                     s6   t tˆƒ� ˆˆ Ž W  d   ƒ S 1 sw   Y  d S ri   )r2   r  rj   ©rd   r`   Útokenrj   rm   rr   Ž  s   $ÿz6TrioBackend.run_sync_in_worker_thread.<locals>.wrapper)r  r   ro   )r  r  r)   r   r   r:   )r|   r`   rd   r  r   rr   rj   r"  rm   Úrun_sync_in_worker_thread†  s   €
ýz%TrioBackend.run_sync_in_worker_threadc                 C  s   t j ¡  d S ri   )r   Úfrom_threadÚcheck_cancelledr�  rj   rj   rm   r&  ™  ó   zTrioBackend.check_cancelledr×   r#  r[   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`   rd   r#  r*  rj   rj   rm   Úrun_async_from_thread�  ó   
ÿz!TrioBackend.run_async_from_threadc                 C  r(  r)  )r   r   r%  r)   r.   r+  rj   rj   rm   Ú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õ   rJ   rb   Ústrc                 S  s"   t  | ¡}t|tƒr|S t  |¡S ri   )ÚosÚfspathrp   r2  Úfsdecode)rõ   Ústr_or_bytesrj   rj   rm   Úconvert_itemÁ  s   


z.TrioBackend.open_process.<locals>.convert_itemT)r  r  r  Úshellc                   s   g | ]}ˆ |ƒ‘qS rj   rj   )Ú.0rõ   ©r7  rj   rm   Ú
<listcomp>Ó  s    z,TrioBackend.open_process.<locals>.<listcomp>F)rõ   rJ   rb   r2  )rp   r2  rè   r   r   rL  Úopen_processr  rô   r  rä   r  rú   )
r|   r/  r  r  r  rf   r!  Ústdin_streamÚstdout_streamÚstderr_streamrj   r:  rm   r<  ·  s6   €

ÿûú	ÿûú	zTrioBackend.open_processr  r  c                 C  s   t j t|¡ d S ri   )r   rL  Úspawn_system_taskr"  )r|   r  rj   rj   rm   Ú#setup_process_pool_exit_at_shutdownà  s   z/TrioBackend.setup_process_pool_exit_at_shutdownÚhostr2  ÚportÚlocal_addressúIPSockAddrType | Noner4  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¾   )rC  ÚAF_INET6ÚAF_INETr   rr  rs  rt  ÚbindÚconnectr  rÆ   r4  )r|   rB  rC  rD  Úfamilyr$  rj   rj   rm   Ú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 ri   )r   rC  ÚAF_UNIXrJ  r  rÆ   rF  )r|   rM  r$  rj   rj   rm   Úconnect_unixö  s   €üþzTrioBackend.connect_unixÚsockr-  úabc.SocketListenerc                 C  r  ri   )rg  ©r|   rR  rj   rj   rm   Úcreate_tcp_listener  r™   zTrioBackend.create_tcp_listenerc                 C  r  ri   )ry  rT  rj   rj   rm   Úcreate_unix_listener  r™   z TrioBackend.create_unix_listenerrK  ú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)rK  Útyper¾   )
r   rC  Ú
SOCK_DGRAMrr  rQ  ÚSO_REUSEPORTrI  rJ  r‡  rz  )r|   rK  rD  rX  rY  r$  rj   rj   rm   Úcreate_udp_socket	  s   €zTrioBackend.create_udp_socketrh  Úremote_pathúabc.UNIXDatagramSocketc                 Ã  ó   �d S ri   rj   ©r|   rh  r_  rj   rj   rm   Úcreate_unix_datagram_socket  ó   €z'TrioBackend.create_unix_datagram_socketúabc.ConnectedUNIXDatagramSocketc                 Ã  ra  ri   rj   rb  rj   rj   rm   rc  %  rd  ústr | bytes | Noneú8abc.UNIXDatagramSocket | abc.ConnectedUNIXDatagramSocketc                 Ã  s2   �t j |¡}|r| |¡I d H  t|ƒS t|ƒS ri   )r   rC  rl  rJ  r�  rŽ  )r|   rh  r_  r$  rj   rj   rm   rc  +  s   €r   )rK  r[  ÚprotoÚflagsúbytes | str | Noneústr | int | Noneúint | AddressFamilyr[  úint | SocketKindrh  ri  ú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 ri   )r   rC  Úgetaddrinfo)r|   rB  rC  rK  r[  rh  ri  rj   rj   rm   ro  7  s   €zTrioBackend.getaddrinfoÚsockaddrrF   útuple[str, str]c                 Ã  s   �t j ||¡I d H S ri   )r   rC  Úgetnameinfo)r|   rp  ri  rj   rj   rm   rr  L  s   €zTrioBackend.getnameinfoÚobjrO   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 )Nr7  )r&   r   r5   Úwith_tracebackÚ__traceback__r4   ©r|   rs  rÃ   rj   rj   rm   r&   R  ó   €€
ÿzTrioBackend.wait_readablec              
   Ã  rt  )Nr8  )r'   r   r5   ru  rv  r4   rw  rj   rj   rm   r'   [  rx  zTrioBackend.wait_writablec                 C  s   t |ƒ d S ri   )r%   )r|   rs  rj   rj   rm   r%   d  r�   zTrioBackend.notify_closingc                 Ã  s(   �t tdƒr|jtjkrt|ƒS t|ƒS )NrP  )ÚhasattrrC  rK  rP  ry  rg  rT  rj   rj   rm   Úwrap_listener_socketh  s   €z TrioBackend.wrap_listener_socketc                 Ã  ó   �t j |¡}t|ƒS ri   )r   rC  rl  r4  ©r|   rR  Ú	trio_sockrj   rj   rm   Úwrap_stream_socketo  ó   €zTrioBackend.wrap_stream_socketrF  c                 Ã  r{  ri   )r   rC  rl  rF  r|  rj   rj   rm   Úwrap_unix_stream_sockett  r  z#TrioBackend.wrap_unix_stream_socketrz  c                 Ã  r{  ri   )r   rC  rl  rz  r|  rj   rj   rm   Úwrap_udp_sockety  r  zTrioBackend.wrap_udp_socketr‡  c                 Ã  r{  ri   )r   rC  rl  r‡  r|  rj   rj   rm   Úwrap_connected_udp_socket~  r  z%TrioBackend.wrap_connected_udp_socketrŽ  c                 Ã  r{  ri   )r   rC  rl  rŽ  r|  rj   rj   rm   Úwrap_unix_datagram_socketƒ  r  z%TrioBackend.wrap_unix_datagram_socketr�  c                 Ã  r{  ri   )r   rC  rl  r�  r|  rj   rj   rm   Ú#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 )Nr±  )rÁ  rÕ  ÚLookupErrorr:   r   Ú	to_threadÚcurrent_default_thread_limiterr™  )r|   r   rj   rj   rm   r‡  �  s   
ÿ
ûz*TrioBackend.current_default_thread_limiterrÄ  r   ú.AbstractContextManager[AsyncIterator[Signals]]c                 G  r  ri   )rÂ  )r|   rÄ  rj   rj   rm   rÇ  š  s   z TrioBackend.open_signal_receiverr/   c                 C  s   t ƒ }t|ƒS ri   )r$   r¨  )r|   rõ  rj   rj   rm   Ú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 ri   )r#   r¨  Úchild_nurseriesÚchild_tasksr`  Úextend)r|   Ú	root_taskÚ
task_infosÚ	nurseriesÚnew_nurseriesÚnurseryrõ  rj   rj   rm   Ú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”  rj   rj   rm   r”  ¶  s   €z"TrioBackend.wait_all_tasks_blockedrÍ  c                 C  s   t di |¤ŽS r~   )rÍ  )r|   rÎ  rj   rj   rm   Úcreate_test_runner¼  r'  zTrioBackend.create_test_runner)
r`   r  rd   r  rf   rè  rÎ  rè  rb   rZ   )rb   rx   r¤   )rb   r
  râ   )r  r•   rb   r}   )r˜   r•   r¡   r‹   rb   r  )rb   r  )rb   r  )rœ  r‹   rb   r>   )r¬  r  r«  rç   rœ  r‹   rb   r  )r²  r•   rb   r:   )FN)
r`   r  rd   r  r  r‹   r   r!  rb   rZ   )r`   r×   rd   r  r#  rx   rb   r[   )r`   r  rd   r  r#  rx   rb   rZ   )r/  r0  r  r1  r  r1  r  r1  rf   r   rb   rú   ©r  r  rb   r}   ri   )rB  r2  rC  r  rD  rE  rb   r4  )rM  rN  rb   rO  )rR  r-  rb   rS  )
rK  rW  rD  rE  rX  rE  rY  r‹   rb   rZ  )rh  r-  r_  r}   rb   r`  )rh  r-  r_  rN  rb   re  )rh  r-  r_  rf  rb   rg  )rB  rj  rC  rk  rK  rl  r[  rm  rh  r  ri  r  rb   rn  )r   )rp  rF   ri  r  rb   rq  )rs  rO   rb   r}   )rR  r-  rb   r4  )rR  r-  rb   rF  )rR  r-  rb   rz  )rR  r-  rb   r‡  )rR  r-  rb   rŽ  )rR  r-  rb   r�  )rb   r:   )rÄ  r   rb   rˆ  )rb   r/   )rb   rŠ  )rÎ  rè  rb   rÍ  )4r§   r¨   r©   ÚclassmethodrÐ   r  r	  r  rM  r¡  r  r  r  r   r  r  r  r  r  r  r  r$  r&  r,  r.  r<  rA  rL  rQ  rU  rV  r^  r   rc  ro  rr  r&   r'   r%   rz  r~  r€  r�  r‚  rƒ  r„  r‡  rÇ  r‰  r“  r”  r–  rj   rj   rj   rm   r  :  sØ    
ÿû	û(ÿ
øÿ
r  )r`   ra   rb   rc   r—  ) Ú
__future__r   rK  r  r3  rC  ÚsysÚtypesrú  Úcollections.abcr   r   r   r   r   r   r	   r
   Ú
contextlibr   Úcontextvarsr   Údataclassesr   Ú	functoolsr   r   Úior   r   r  r   r   r   r   Útypingr   r   r   r   r   r   r   r   r   r   Útrio.from_threadr   Útrio.lowlevelrÝ  r    r!   r"   r#   r$   r%   r&   r'   Útrio.socketr(   r%  Útrio.to_threadr)   Ú r+   r,   r-   r.   r/   r0   r1   Ú_core._eventloopr2   Ú_core._exceptionsr3   r4   r5   r6   Ú_core._socketsr7   Ú_core._streamsr8   Ú_core._synchronizationr:   ÚBaseCapacityLimiterr<   r  r>   ÚBaseLockr?   r@   rB   r  Ú_core._tasksrD   r  rE   rF   rG   rH   Úabc._eventlooprI   rJ   Ú
abc._tasksrK   rL   rM   rN   Ú	_typeshedrO   Ústreams.memoryrP   Úversion_infoÚtyping_extensionsrS   rU   rV   rW   ÚexceptiongrouprX   rY   rZ   r[   r2  r]   r^   r_   rs   rL  ÚRunVarr­   Ú
TaskStatusr®   rµ   ÚByteReceiveStreamrä   ÚByteSendStreamrô   rú   Ú
Instrumentr  r  r´   r"  r#  r4  rF  ÚSocketListenerrg  ry  rz  r‡  rŽ  r�  rÁ  rÂ  rÍ  r¨  r  Úbackend_classrj   rj   rj   rm   Ú<module>   sÀ    (
0$	
7j8ÿ
$C

ÿ:8T _   
