o
    é’Oj…°  ã                   @  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mZ d dlmZ d d	lmZ d d
lmZ d dlm Z m!Z! d dlm"Z" d dl#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- d dl.Z/d dl0Z/d dl1m2Z2m3Z3m4Z4 d dl0m5Z5m6Z6m7Z7m8Z8m9Z9 d dl:m;Z< d dl=m>Z> ddl?m@Z@mAZAmBZBmCZCmDZDmEZEmFZF ddlGmHZH ddlImJZJmKZKmLZLmMZM ddlNmOZO ddlPmQZQ ddlRmSZT ddlRmUZV ddlRmWZX ddlRmYZYmZZZ ddlRm[Z\ ddl]m^Z_ ddl]m`Z` ddlFmaZambZbmcZc dd ldmeZemfZf dd!lgmhZhmiZimjZj dd"lkmlZl e%�r<d d#lmmnZn ejod$k�rKd d%l#mpZpmqZq nd d&lrmsZs d d%ltmpZpmqZq e+d'ƒZue+d(ƒZve+d)d*d+�Zwe+d,exeaƒZyepd-ƒZze*d.ƒZ{dod3d4„Z|e/j}j~Z~G d5d6„ d6e_ƒZ^eƒ Z€G d7d8„ d8e'eh eFj�eh ƒZ‚G d9d:„ d:eFjƒƒZƒed;d<�G d=d>„ d>eFj„ƒƒZ…ed;d<�G d?d@„ d@eFj†ƒƒZ‡ed;d<�G dAdB„ dBeFjˆƒƒZˆG dCdD„ dDe/jFj‰ƒZŠe~dEƒZ‹dFeŒdE< dpdJdK„Z�G dLdM„ dMe'ey ƒZŽG dNdO„ dOeŽeFj�ƒZ�G dPdQ„ dQe�eFj�ƒZ�G dRdS„ dSeŽeFj‘ƒZ’G dTdU„ dUeŽeFj‘ƒZ“G dVdW„ dWeŽea eFj”ƒZ”G dXdY„ dYeŽea eFj•ƒZ•G dZd[„ d[eŽex eFj–ƒZ–G d\d]„ d]eŽex eFj—ƒZ—G d^d_„ d_eVƒZUG d`da„ daeXƒZWG dbdc„ dce\ƒZ[G ddde„ deeTƒZSe~dfƒZ˜dFeŒdf< G dgdh„ dhƒZ™G didj„ djeFjšƒZšG dkdl„ dleDƒZ›G dmdn„ dneeƒZœeœZ�dS )qé    )ÚannotationsN)ÚAsyncGeneratorÚAsyncIteratorÚ	AwaitableÚCallableÚ
CollectionÚ	CoroutineÚIterableÚSequence)ÚAbstractContextManager)ÚContext)Ú	dataclass)ÚpartialÚwraps)ÚIOBase)ÚPathLike)ÚSignals)ÚAddressFamilyÚ
SocketKind)ÚTracebackType)
ÚIOÚTYPE_CHECKINGÚAnyÚGenericÚLiteralÚNoReturnÚ	ParamSpecÚTypeVarÚcastÚoverload)ÚErrorÚOutcomeÚValue)Úcurrent_root_taskÚcurrent_taskÚnotify_closingÚwait_readableÚwait_writable)Ú
SocketType)Úrun_syncé   )ÚCapacityLimiterStatisticsÚEventStatisticsÚLockStatisticsÚRunFinishedErrorÚTaskInfoÚ
WouldBlockÚabc)Úclaim_worker_thread)ÚBrokenResourceErrorÚBusyResourceErrorÚClosedResourceErrorÚEndOfStream)Úconvert_ipv6_sockaddr)Úcreate_memory_object_stream©ÚCapacityLimiter©ÚEvent©ÚLock)ÚResourceGuardÚSemaphoreStatistics©Ú	Semaphore©ÚCancelScope)Ú
TaskHandle)ÚIPSockAddrTypeÚUDPPacketTypeÚUNIXDatagramPacketType)ÚAsyncBackendÚStrOrBytesPath)ÚT_contraÚcall_for_coroutineÚget_callable_name)ÚMemoryObjectSendStream)ÚFileDescriptorLike)é   é   )ÚTypeVarTupleÚUnpack)ÚBaseExceptionGroupÚTÚT_RetvalÚT_coT)Ú	covariantÚ
T_SockAddrÚPosArgsTÚPÚfuncú Callable[P, Awaitable[T_Retval]]Úreturnú*Callable[P, Coroutine[Any, Any, T_Retval]]c                   s   t ˆ ƒd	‡ fdd„ƒ}|S )
NÚargsúP.argsÚkwargsúP.kwargsr^   úCoroutine[Any, Any, T_Retval]c                    sF   ˆ| i |¤Ž‰ t ˆ tƒrˆ S t ˆ tƒsˆ S tˆƒd‡ fdd„ƒ}|ƒ S )Nr^   rV   c                   “  s   �ˆ I d H S ©N© rf   ©Ú	awaitablerf   ú[/var/www/html/pharmsmart-cdr-gen/venv/lib/python3.10/site-packages/anyio/_backends/_trio.pyÚinner_wrapperz   s   €
z;ensure_returns_coro.<locals>.wrapper.<locals>.inner_wrapper©r^   rV   )Ú
isinstancer   r   r   )r`   rb   rj   ©r\   rg   ri   Úwrappern   s   

z$ensure_returns_coro.<locals>.wrapper)r`   ra   rb   rc   r^   rd   )r   )r\   rn   rf   rm   ri   Úensure_returns_corok   s   ro   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	d/dd„ƒZ
e
jd0d!d„ƒZ
e	d1d"d#„ƒZe	d1d$d%„ƒZe	d1d&d'„ƒZejd2d(d'„ƒZdS )3rD   ©Ú
__originalNÚoriginalútrio.CancelScope | Nonerb   Úobjectr^   c                 K  ó
   t  | ¡S re   ©rt   Ú__new__)Úclsrr   rb   rf   rf   ri   rw   ’   s   
zCancelScope.__new__r   ÚNonec                 K  s   |p	t jdi |¤Ž| _d S ©Nrf   )ÚtriorD   Ú_CancelScope__original)Úselfrr   rb   rf   rf   ri   Ú__init__—   s   zCancelScope.__init__c                 C  s   | j  ¡  | S re   )r|   Ú	__enter__©r}   rf   rf   ri   r   š   s   
zCancelScope.__enter__Úexc_typeútype[BaseException] | NoneÚexc_valúBaseException | NoneÚexc_tbúTracebackType | NoneÚboolc                 C  ó   | j  |||¡S re   )r|   Ú__exit__©r}   r�   rƒ   r…   rf   rf   ri   r‰   ž   ó   zCancelScope.__exit__Úreasonú
str | Nonec                 C  ó   | j  |¡ d S re   )r|   Úcancel)r}   rŒ   rf   rf   ri   r�   ¦   ó   zCancelScope.cancelÚfloatc                 C  ó   | j jS re   ©r|   Údeadliner€   rf   rf   ri   r”   ©   ó   zCancelScope.deadlineÚvaluec                 C  ó   || j _d S re   r“   ©r}   r–   rf   rf   ri   r”   ­   ó   c                 C  r’   re   )r|   Úcancel_calledr€   rf   rf   ri   rš   ±   r•   zCancelScope.cancel_calledc                 C  r’   re   )r|   Úcancelled_caughtr€   rf   rf   ri   r›   µ   r•   zCancelScope.cancelled_caughtc                 C  r’   re   ©r|   Úshieldr€   rf   rf   ri   r�   ¹   r•   zCancelScope.shieldc                 C  r—   re   rœ   r˜   rf   rf   ri   r�   ½   r™   re   )rr   rs   rb   rt   r^   rD   )rr   rs   rb   r   r^   ry   )r^   rD   ©r�   r‚   rƒ   r„   r…   r†   r^   r‡   )rŒ   r�   r^   ry   ©r^   r‘   ©r–   r‘   r^   ry   ©r^   r‡   )r–   r‡   r^   ry   )Ú__name__Ú
__module__Ú__qualname__Ú	__slots__rw   r~   r   r‰   r�   Úpropertyr”   Úsetterrš   r›   r�   rf   rf   rf   ri   rD   �   s(    ÿ

rD   c                   @  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 | Noner^   ry   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©   Úempty_start_valueÚRuntimeErrorÚstartedr˜   rf   rf   ri   r®   Í   s
   


z_TrioTaskStatus.startedre   )r–   r«   r^   ry   )r¢   r£   r¤   r¬   r©   Ú__annotations__rª   r®   rf   rf   rf   ri   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œd/d'd(„ZdS )0Ú	TaskGroupr^   ry   c                 C  s$   d| _ d| _tjdd�| _d | _d S )NFT)Ústrict_exception_groups)Ú_enteredÚ_activer{   Úopen_nurseryÚ_nursery_managerÚcancel_scoper€   rf   rf   ri   r~   Ø   s   
zTaskGroup.__init__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€   rf   rf   ri   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³   rT   Úsplitr{   Ú	CancelledÚ_create)r}   r�   rƒ   r…   Úexcrf   rf   ri   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¿   rf   rf   ri   Ú_check_activeú   s   ÿüzTaskGroup._check_active)ÚnameÚcontextúCoroutine[Any, Any, T_co]rÃ   rt   rÄ   úContext | NoneúTaskHandle[T_co]c                C  sp   t |tƒstd|jj› �ƒ‚|  |¡ t||ƒ}|d ur,| t| j	j
|j|jd�¡ |S | j	j
|j|jd� |S )Nzexpected a coroutine, got ©rÃ   )rl   r   Ú	TypeErrorÚ	__class__r¤   rÂ   rE   Úrunr   r¸   Ú
start_soonÚ	_run_cororÃ   )r}   r¿   rÃ   rÄ   Úhandlerf   rf   ri   Úcreate_task  s   


ÿþzTaskGroup.create_taskF)rÃ   Úreturn_handler\   ú7Callable[[Unpack[PosArgsT]], Coroutine[Any, Any, T_co]]r`   úUnpack[PosArgsT]rÐ   úLiteral[False] | Literal[True]r   c                ‡  sP   �d‡ ‡‡‡fdd„}|   ¡  tˆˆƒ}| jj||d�I d H }|r&|ˆ_ˆS |S )	NÚtask_statusútrio.TaskStatus[Any]r^   ry   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¿   ©r`   r\   rÎ   rÃ   rf   ri   Úrun_coro_with_task_status!  s   €

z2TaskGroup.start.<locals>.run_coro_with_task_statusrÈ   )rÔ   rÕ   r^   ry   )rÂ   rM   r¸   ÚstartÚ_start_value)r}   r\   rÃ   rÐ   r`   rØ   Ú
final_nameÚstart_valuerf   r×   ri   rÙ     s   €	
ÿzTaskGroup.start©r^   ry   )r^   r°   rž   re   )r¿   rÀ   r^   ry   )r¿   rÅ   rÃ   rt   rÄ   rÆ   r^   rÇ   )
r\   rÑ   r`   rÒ   rÃ   rt   rÐ   rÓ   r^   r   )	r¢   r£   r¤   r~   r·   rº   rÂ   rÏ   rÙ   rf   rf   rf   ri   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 | Noner^   Úbytesc              
   Ã  sl   �z| j  |¡I d H }W n! tjy } zt|j‚d }~w tjy- } zt|j‚d }~ww |r4t|ƒS t‚re   )rà   Úreceive_somer{   r5   Ú	__cause__r3   rã   r6   ©r}   rá   Údatar¾   rf   rf   ri   ÚreceiveD  s   €€€ÿzReceiveStreamWrapper.receivery   c                 Ã  ó   �| j  ¡ I d H  d S re   ©rà   Úacloser€   rf   rf   ri   rë   Q  ó   €zReceiveStreamWrapper.aclosere   )rá   râ   r^   rã   rÝ   )r¢   r£   r¤   r¯   rè   rë   rf   rf   rf   ri   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ã   r^   ry   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 re   )rà   Úsend_allr{   r5   rå   r3   ©r}   rî   r¾   rf   rf   ri   ÚsendY  s   €€€ÿzSendStreamWrapper.sendc                 Ã  ré   re   rê   r€   rf   rf   ri   rë   a  rì   zSendStreamWrapper.acloseN©rî   rã   r^   ry   rÝ   )r¢   r£   r¤   r¯   rñ   rë   rf   rf   rf   ri   rí   U  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Ú_stderrr^   ry   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€   rf   rf   ri   rë   l  s*   €€ú
ÿþüzProcess.acloseÚintc                 Ã  ó   �| j  ¡ I d H S re   )rô   rû   r€   rf   rf   ri   rû   }  ó   €zProcess.waitc                 C  ó   | j  ¡  d S re   )rô   Ú	terminater€   rf   rf   ri   r  €  ó   zProcess.terminatec                 C  r  re   )rô   rý   r€   rf   rf   ri   rý   ƒ  r  zProcess.killÚsignalr   c                 C  rŽ   re   )rô   Úsend_signal)r}   r  rf   rf   ri   r  †  r�   zProcess.send_signalc                 C  r’   re   )rô   Úpidr€   rf   rf   ri   r  ‰  r•   zProcess.pidrâ   c                 C  r’   re   )rô   Ú
returncoder€   rf   rf   ri   r  �  r•   zProcess.returncodec                 C  ó   | j S re   )rö   r€   rf   rf   ri   Ústdin‘  ó   zProcess.stdinc                 C  r  re   )rø   r€   rf   rf   ri   Ústdout•  r
  zProcess.stdoutc                 C  r  re   )rù   r€   rf   rf   ri   Ústderr™  r
  zProcess.stderrNrÝ   ©r^   rþ   )r  r   r^   ry   ©r^   râ   )r^   rõ   )r^   r÷   )r¢   r£   r¤   r¯   rë   rû   r  rý   r  r¦   r  r  r	  r  r  rf   rf   rf   ri   ró   e  s(   
 




ró   c                      s   e Zd Zd‡ fdd„Z‡  ZS )Ú_ProcessPoolShutdownInstrumentr^   ry   c                   s   t ƒ  ¡  d S re   )ÚsuperÚ	after_runr€   ©rÊ   rf   ri   r  Ÿ  r  z(_ProcessPoolShutdownInstrument.after_runrÝ   )r¢   r£   r¤   r  Ú__classcell__rf   rf   r  ri   r  ž  s    r  Ú&current_default_worker_process_limiterztrio.lowlevel.RunVarÚworkersúset[abc.Process]ry   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  Úprocessrf   rf   ri   Ú_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ÚTrioSocketTyper^   ry   c                 C  s   || _ d| _d S ©NF)Ú_trio_socketÚ_closed©r}   r  rf   rf   ri   r~   »  s   
z_TrioSocketMixin.__init__c                 C  s    | j rt‚| j ¡ dk rt‚d S ©Nr   )r!  r5   r   Úfilenor3   r€   rf   rf   ri   Ú_check_closed¿  s
   ÿz_TrioSocketMixin._check_closedúsocket.socketc                 C  r’   re   )r   Ú_sockr€   rf   rf   ri   Ú_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€   rf   rf   ri   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#  )rl   r{   r5   r   r$  r!  ÚOSErrorr3   ©r}   r¾   rf   rf   ri   Ú_convert_socket_errorÎ  s   
z&_TrioSocketMixin._convert_socket_errorN©r  r  r^   ry   rÝ   )r^   r&  )r¾   rü   r^   r   )	r¢   r£   r¤   r~   r%  r¦   r(  rë   r+  rf   rf   rf   ri   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  r^   ry   c                   ó$   t ƒ  |¡ tdƒ| _tdƒ| _d S ©Núreading fromú
writing to©r  r~   r?   Ú_receive_guardÚ_send_guardr"  r  rf   ri   r~   Ú  ó   
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 re   )r3  r   Úrecvrü   r+  r6   ræ   rf   rf   ri   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 re   )r4  Ú
memoryviewr   rñ   rü   r+  )r}   rî   ÚviewÚ
bytes_sentr¾   rf   rf   ri   rñ   ë  s   €€ÿúþ"þzSocketStream.sendc                 Ã  s   �| j  tj¡ d S re   )r   ÚshutdownÚsocketÚSHUT_WRr€   rf   rf   ri   Úsend_eofö  s   €zSocketStream.send_eofr,  )r6  )rá   rþ   r^   rã   rò   rÝ   )r¢   r£   r¤   r~   rè   rñ   r>  r  rf   rf   r  ri   r-  Ù  s
    
r-  c                   @  s    e Zd Zddd„Zddd„ZdS )ÚUNIXSocketStreamÚmsglenrþ   Úmaxfdsr^   ú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 = )rl   rþ   Ú
ValueErrorÚarrayr{   ÚlowlevelÚ
checkpointr3  r   Úrecvmsgr<  ÚCMSG_LENÚitemsizerü   r+  r6   Ú
SOL_SOCKETÚ
SCM_RIGHTSr­   Ú	frombytesÚlenÚlist)r}   r@  rA  ÚfdsÚmessageÚancdataÚflagsÚaddrr¾   Ú
cmsg_levelÚ	cmsg_typeÚ	cmsg_datarf   rf   ri   Úreceive_fdsû  sD   €
ÿ€ÿõôÿÿÿ&zUNIXSocketStream.receive_fdsrQ  rã   rP  úCollection[int | IOBase]ry   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 emptyrC  )rD  rl   rþ   Úappendr   r$  rE  r{   rF  rG  r4  r   Úsendmsgr<  rK  rL  rü   r+  )r}   rQ  rP  ÚfilenosÚfdÚfdarrayr¾   rf   rf   ri   Úsend_fds  sB   €

€ýÿ
þ
€ÿó"ózUNIXSocketStream.send_fdsN)r@  rþ   rA  rþ   r^   rB  )rQ  rã   rP  rY  r^   ry   )r¢   r£   r¤   rX  r_  rf   rf   rf   ri   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  r~   r{   r<  Úfrom_stdlib_socketr?   Ú_accept_guard©r}   rb  r  rf   ri   r~   >  ó   zTCPSocketListener.__init__r^   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¹   )
rg  r   Úacceptrü   r+  Ú
setsockoptr<  ÚIPPROTO_TCPÚTCP_NODELAYr-  ©r}   r  Ú_addrr¾   rf   rf   ri   rk  B  s   €€ÿ€ýzTCPSocketListener.accept©rb  r&  )r^   r-  ©r¢   r£   r¤   r~   rk  r  rf   rf   r  ri   ra  =  ó    ra  c                      r`  )ÚUNIXSocketListenerrb  r&  c                   rc  rd  re  rh  r  rf   ri   r~   N  ri  zUNIXSocketListener.__init__r^   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 re   )rg  r   rk  rü   r+  r?  ro  rf   rf   ri   rk  R  s    €€ÿÿ
þþ
üúzUNIXSocketListener.acceptrq  )r^   r?  rr  rf   rf   r  ri   rt  M  rs  rt  c                      s2   e Zd Zd‡ fdd„Zddd	„Zddd„Z‡  ZS )Ú	UDPSocketr  r  r^   ry   c                   r.  r/  r2  r"  r  rf   ri   r~   ]  r5  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 ©Nr6  )r3  r   Úrecvfromr7   rü   r+  ©r}   rç   rT  r¾   rf   rf   ri   rè   b  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 re   ©r4  r   Úsendtorü   r+  rð   rf   rf   ri   rñ   j  ó   €€ÿÿþ"üzUDPSocket.sendr,  )r^   rv  )rî   rG   r^   ry   ©r¢   r£   r¤   r~   rè   rñ   r  rf   rf   r  ri   ru  \  ó    
ru  c                      ó2   e Zd Zd‡ fdd„Zddd	„Zddd„Z‡  ZS )ÚConnectedUDPSocketr  r  r^   ry   c                   r.  r/  r2  r"  r  rf   ri   r~   s  r5  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 rw  ©r3  r   r7  rü   r+  r*  rf   rf   ri   rè   x  ó   €þ€ÿ"ü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 re   ©r4  r   rñ   rü   r+  rð   rf   rf   ri   rñ     r}  zConnectedUDPSocket.sendr,  ©r^   rã   rò   r~  rf   rf   r  ri   r�  r  s    
r�  c                      r€  )ÚUNIXDatagramSocketr  r  r^   ry   c                   r.  r/  r2  r"  r  rf   ri   r~   ˆ  r5  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 rw  )r3  r   rx  rü   r+  ry  rf   rf   ri   rè   �  s   €ý€ÿ"ûzUNIXDatagramSocket.receiverî   c                 Ã  rz  re   r{  rð   rf   rf   ri   rñ   •  r}  zUNIXDatagramSocket.sendr,  )r^   rH   )rî   rH   r^   ry   r~  rf   rf   r  ri   rˆ  ‡  r  rˆ  c                      r€  )ÚConnectedUNIXDatagramSocketr  r  r^   ry   c                   r.  r/  r2  r"  r  rf   ri   r~      r5  z$ConnectedUNIXDatagramSocket.__init__rã   c                 Ã  r‚  rw  rƒ  r*  rf   rf   ri   rè   ¥  r„  z#ConnectedUNIXDatagramSocket.receiverî   c                 Ã  r…  re   r†  rð   rf   rf   ri   rñ   ¬  r}  z ConnectedUNIXDatagramSocket.sendr,  r‡  rò   r~  rf   rf   r  ri   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<   rp   r^   c                 C  ru   re   rv   ©rx   rf   rf   ri   rw   ¼  ó   
zEvent.__new__ry   c                 C  s   t  ¡ | _d S re   )r{   r<   Ú_Event__originalr€   rf   rf   ri   r~   ¿  r  zEvent.__init__r‡   c                 C  ó
   | j  ¡ S re   )rŒ  Úis_setr€   rf   rf   ri   rŽ  Â  r‹  zEvent.is_setc                 Ã  rÿ   re   )rŒ  rû   r€   rf   rf   ri   rû   Å  r   z
Event.waitr,   c                 C  s   | j  ¡ }t|jd�S )N)Útasks_waiting)rŒ  Ú
statisticsr,   r�  ©r}   Úorig_statisticsrf   rf   ri   r�  È  s   
zEvent.statisticsc                 C  r  re   )rŒ  Úsetr€   rf   rf   ri   r“  Ì  r  z	Event.setN)r^   r<   rÝ   r¡   )r^   r,   )
r¢   r£   r¤   r¥   rw   r~   rŽ  rû   r�  r“  rf   rf   rf   ri   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>   )Ú_fast_acquirerq   F©Úfast_acquirer–  r‡   r^   c                C  ru   re   rv   ©rx   r–  rf   rf   ri   rw   Ó  r‹  zLock.__new__ry   c                C  s   || _ t ¡ | _d S re   )r”  r{   r>   Ú_Lock__original)r}   r–  rf   rf   ri   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)r`   )r¾   rf   rf   ri   Ú_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 re   )r”  r˜  Úacquirer­   r™  r{   rF  Úcheckpoint_if_cancelledÚacquire_nowaitr0   Ú_lotÚparkr*  rf   rf   ri   rš  ß  s(   €ü
€þ
€þzLock.acquirec              
   C  sJ   z| j  ¡  W d S  tjy   td ‚ ty$ } z|  |¡ ‚ d }~ww re   )r˜  rœ  r{   r0   r­   r™  r*  rf   rf   ri   rœ  ó  s   
€þzLock.acquire_nowaitc                 C  r�  re   )r˜  Úlockedr€   rf   rf   ri   rŸ  ü  r‹  zLock.lockedc                 C  r  re   )r˜  Úreleaser€   rf   rf   ri   r   ÿ  r  zLock.releaser-   c                 C  s.   | j  ¡ }|jrt|jƒnd }t|j||jƒS re   )r˜  r�  ÚownerÚTrioTaskInfor-   rŸ  r�  )r}   r’  r¡  rf   rf   ri   r�    s
   

ÿzLock.statisticsN©r–  r‡   r^   r>   )r–  r‡   r^   ry   )r¾   r­   r^   ry   rÝ   r¡   )r^   r-   )r¢   r£   r¤   r¥   rw   r~   Ústaticmethodr™  rš  rœ  rŸ  r   r�  rf   rf   rf   ri   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   rp   NF©Ú	max_valuer–  Úinitial_valuerþ   r¦  râ   r–  r‡   r^   c                C  ru   re   rv   ©rx   r§  r¦  r–  rf   rf   ri   rw     s   
zSemaphore.__new__ry   c                  s&   t ƒ j|||d� tj||d�| _d S )Nr¥  )r¦  )r  r~   r{   rB   Ú_Semaphore__original)r}   r§  r¦  r–  r  rf   ri   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 re   )
r”  r©  rš  r{   rF  r›  rœ  r0   r�  rž  r€   rf   rf   ri   rš     s   €ÿzSemaphore.acquirec                 C  s(   z| j  ¡  W d S  tjy   td ‚w re   )r©  rœ  r{   r0   r€   rf   rf   ri   rœ  ,  s
   ÿzSemaphore.acquire_nowaitc                 C  r’   re   )r©  r¦  r€   rf   rf   ri   r¦  2  r•   zSemaphore.max_valuec                 C  r’   re   )r©  r–   r€   rf   rf   ri   r–   6  r•   zSemaphore.valuec                 C  r  re   )r©  r   r€   rf   rf   ri   r   :  r  zSemaphore.releaser@   c                 C  s   | j  ¡ }t|jƒS re   )r©  r�  r@   r�  r‘  rf   rf   ri   r�  =  s   

zSemaphore.statistics)r§  rþ   r¦  râ   r–  r‡   r^   rB   )r§  rþ   r¦  râ   r–  r‡   r^   ry   rÝ   r  r  )r^   r@   )r¢   r£   r¤   r¥   rw   r~   rš  rœ  r¦   r¦  r–   r   r�  r  rf   rf   r  ri   rB   
  s     ûû



rB   c                   @  sÌ   e Zd ZdZ	d3ddœd4d	d
„Z	d3ddœd5dd„Zd6dd„Zd7dd„Zed8dd„ƒZ	e	j
d9dd„ƒZ	ed:dd„ƒZed8d d!„ƒZd6d"d#„Zd;d&d'„Zd6d(d)„Zd;d*d+„Zd6d,d-„Zd;d.d/„Zd<d1d2„ZdS )=r:   rp   N©rr   Útotal_tokensúfloat | Nonerr   útrio.CapacityLimiter | Noner^   c                C  ru   re   rv   )rx   r«  rr   rf   rf   ri   rw   E  s   
zCapacityLimiter.__new__ry   c                C  s.   |d ur	|| _ d S |d usJ ‚t |¡| _ d S re   )Ú_CapacityLimiter__originalr{   r:   )r}   r«  rr   rf   rf   ri   r~   M  s   
zCapacityLimiter.__init__c                 Ã  rÿ   re   )r®  r·   r€   rf   rf   ri   r·   Y  r   zCapacityLimiter.__aenter__r�   r‚   rƒ   r„   r…   r†   c                 Ã  s   �| j  |||¡I d H  d S re   )r®  rº   rŠ   rf   rf   ri   rº   \  s   €zCapacityLimiter.__aexit__r‘   c                 C  r’   re   ©r®  r«  r€   rf   rf   ri   r«  d  r•   zCapacityLimiter.total_tokensr–   c                 C  r—   re   r¯  r˜   rf   rf   ri   r«  h  r™   rþ   c                 C  r’   re   )r®  Úborrowed_tokensr€   rf   rf   ri   r°  l  r•   zCapacityLimiter.borrowed_tokensc                 C  r’   re   )r®  Úavailable_tokensr€   rf   rf   ri   r±  p  r•   z CapacityLimiter.available_tokensc                 C  r  re   )r®  rœ  r€   rf   rf   ri   rœ  t  r  zCapacityLimiter.acquire_nowaitÚborrowerrt   c                 C  rŽ   re   )r®  Úacquire_on_behalf_of_nowait©r}   r²  rf   rf   ri   r³  w  r�   z+CapacityLimiter.acquire_on_behalf_of_nowaitc                 Ã  ré   re   )r®  rš  r€   rf   rf   ri   rš  z  rì   zCapacityLimiter.acquirec                 Ã  s   �| j  |¡I d H  d S re   )r®  Úacquire_on_behalf_ofr´  rf   rf   ri   rµ  }  s   €z$CapacityLimiter.acquire_on_behalf_ofc                 C  r�  re   )r®  r   r€   rf   rf   ri   r   €  r‹  zCapacityLimiter.releasec                 C  s   | j  |¡S re   )r®  Úrelease_on_behalf_ofr´  rf   rf   ri   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}   Úorigrf   rf   ri   r�  †  s   
üzCapacityLimiter.statisticsre   )r«  r¬  rr   r­  r^   r:   )r«  r¬  rr   r­  r^   ry   rÝ   )r�   r‚   rƒ   r„   r…   r†   r^   ry   rŸ   r    r  )r²  rt   r^   ry   )r^   r+   )r¢   r£   r¤   r¥   rw   r~   r·   rº   r¦   r«  r§   r°  r±  rœ  r³  rš  rµ  r   r¶  r�  rf   rf   rf   ri   r:   B  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 re   )Ú_signals)r}   r½  rf   rf   ri   r~   ›  r‹  z_SignalReceiver.__init__r^   c                 C  s   t j| jŽ | _| j ¡ | _| S re   )r{   Úopen_signal_receiverr¿  Ú_cmr   r¼  r€   rf   rf   ri   r   ž  s   z_SignalReceiver.__enter__r�   r‚   rƒ   r„   r…   r†   úbool | Nonec                 C  rˆ   re   )rÁ  r‰   rŠ   rf   rf   ri   r‰   £  r‹   z_SignalReceiver.__exit__c                 C  s   | S re   rf   r€   rf   rf   ri   Ú	__aiter__«  s   z_SignalReceiver.__aiter__r   c                 Ã  s   �| j  ¡ I d H }t|ƒS re   )r¼  Ú	__anext__r   )r}   Úsignumrf   rf   ri   rÄ  ®  s   €z_SignalReceiver.__anext__N)r½  r¾  )r^   r»  )r�   r‚   rƒ   r„   r…   r†   r^   rÂ  )r^   r   )	r¢   r£   r¤   r¯   r~   r   r‰   rÃ  rÄ  rf   rf   rf   ri   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   r^   ry   c                 K  s$   ddl m} |ƒ | _d | _|| _d S )Nr   )ÚQueue)ÚqueuerÈ  Ú_call_queueÚ_send_streamÚ_options)r}   rÇ  rÈ  rf   rf   ri   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 re   )rË  rÁ   rÊ  ÚgetrŠ   rf   rf   ri   r‰   Â  s   

ÿþzTestRunner.__exit__r‡   c                 C  ó
   t j ¡ S re   )r{   rF  Úin_trio_taskr€   rf   rf   ri   Ú
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 rj  )r8   r¸  r   r   rO  r!   rË  rü   rZ  r    r"   )r}   Úreceive_streamrh   Úoutcome_holderÚretvalr¾   rf   rf   ri   Ú_run_tests_and_fixturesÐ  s"   €ÿ
þ€ÿú"ÿz"TestRunner._run_tests_and_fixturesÚoutcomert   c                 C  s
   d | _ d S re   )rË  )r}   rÖ  rf   rf   ri   Ú_main_task_finishedÝ  r‹  zTestRunner._main_task_finishedr\   r]   r`   ra   rb   rc   rV   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{   rF  Ústart_guest_runrÕ  rÊ  Úputr×  rÌ  rÎ  Úsend_nowaitÚunwrap)r}   r\   r`   rb   rÓ  rf   rf   ri   Ú_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 stoprf   )rÞ  ÚasendÚStopAsyncIterationrë   r­   )r}   rß  rb   ÚasyncgenÚfixturevaluerf   rf   ri   Úrun_asyncgen_fixtureø  s   €ÿzTestRunner.run_asyncgen_fixtureú,Callable[..., Coroutine[Any, Any, T_Retval]]c                 C  s   | j |fi |¤ŽS re   ©rÞ  )r}   rß  rb   rf   rf   ri   Úrun_fixture
  s   zTestRunner.run_fixtureÚ	test_funcú'Callable[..., Coroutine[Any, Any, Any]]c                 C  s   | j |fi |¤Ž d S re   ré  )r}   rë  rb   rf   rf   ri   Úrun_test  s   zTestRunner.run_testN)rÇ  r   r^   ry   )r�   r‚   rƒ   r„   r…   rÍ  r^   ry   r¡   rÝ   )rÖ  rt   r^   ry   )r\   r]   r`   ra   rb   rc   r^   rV   )rß  rà  rb   rá  r^   râ  )rß  rè  rb   rá  r^   rV   )rë  rì  rb   rá  r^   ry   )r¢   r£   r¤   r~   r‰   rÑ  rÕ  r×  rÞ  rç  rê  rí  rf   rf   rf   ri   rÆ  ¸  s    

	





rÆ  c                      r`  )r¢  Útaskútrio.lowlevel.Taskc                   sH   d }|j r|j jrt|j jƒ}tƒ  t|ƒ||j|j¡ t |¡| _	d S re   )
Úparent_nurseryÚparent_taskÚidr  r~   rÃ   r¿   ÚweakrefÚproxyÚ_task)r}   rî  Ú	parent_idr  rf   ri   r~     s
   zTrioTaskInfo.__init__r^   r‡   c                 C  s"   z| j jjW S  ty   Y dS w r  )rõ  Ú_cancel_statusÚeffectively_cancelledÚReferenceErrorr€   rf   rf   ri   Úhas_pending_cancellation   s
   ýz%TrioTaskInfo.has_pending_cancellation)rî  rï  r¡   )r¢   r£   r¤   r~   rú  r  rf   rf   r  ri   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]]r`   útuple[Unpack[PosArgsT]]rb   rá  rÇ  r^   rV   c                 C  s(   |rJ dƒ‚t jt|ƒg|¢R i |¤ŽS )Nz&unreachable, and not supported by Trio)r{   rË   ro   )rx   r\   r`   rb   rÇ  rf   rf   ri   rË   *  s   zTrioBackend.runrt   c                 C  rÏ  re   )r{   rF  Úcurrent_trio_tokenrŠ  rf   rf   ri   Úcurrent_token5  ó   
zTrioBackend.current_tokenr‘   c                 C  ó   t  ¡ S re   )r{   Úcurrent_timerŠ  rf   rf   ri   r  9  r•   zTrioBackend.current_timeútype[BaseException]c                 C  s   t jS re   )r{   r¼   rŠ  rf   rf   ri   Úcancelled_exception_class=  r
  z%TrioBackend.cancelled_exception_classry   c                 Ã  ó   �t j ¡ I d H  d S re   )r{   rF  rG  rŠ  rf   rf   ri   rG  A  ó   €zTrioBackend.checkpointc                 Ã  r  re   )r{   rF  r›  rŠ  rf   rf   ri   r›  E  r  z#TrioBackend.checkpoint_if_cancelledc                 Ã  r  re   )r{   rF  Úcancel_shielded_checkpointrŠ  rf   rf   ri   r  I  r  z&TrioBackend.cancel_shielded_checkpointÚdelayc                 Ã  s   �t  |¡I d H  d S re   )r{   r  )rx   r  rf   rf   ri   r  M  r  zTrioBackend.sleepF©r”   r�   r”   r�   r‡   úabc.CancelScopec                C  s   t ||d�S )Nr	  rC   )rx   r”   r�   rf   rf   ri   Úcreate_cancel_scopeQ  s   zTrioBackend.create_cancel_scopec                 C  r  re   )r{   Úcurrent_effective_deadlinerŠ  rf   rf   ri   r  W  r•   z&TrioBackend.current_effective_deadlineúabc.TaskGroupc                 C  ó   t ƒ S re   )r°   rŠ  rf   rf   ri   Úcreate_task_group[  r
  zTrioBackend.create_task_groupú	abc.Eventc                 C  r  re   r;   rŠ  rf   rf   ri   Úcreate_event_  r
  zTrioBackend.create_eventr–  r>   c                C  s
   t |d�S )Nr•  r=   r—  rf   rf   ri   Úcreate_lockc  r   zTrioBackend.create_lockNr¥  r§  rþ   r¦  râ   úabc.Semaphorec                C  s   t |||d�S )Nr¥  rA   r¨  rf   rf   ri   Úcreate_semaphoreg  s   zTrioBackend.create_semaphorer«  r:   c                 C  ó   t |ƒS re   r9   )rx   r«  rf   rf   ri   Úcreate_capacity_limiterq  r•   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 )Nr^   rV   c                     s6   t tˆƒ� ˆˆ Ž W  d   ƒ S 1 sw   Y  d S re   )r2   rû  rf   ©r`   r\   Útokenrf   ri   rn   }  s   $ÿz6TrioBackend.run_sync_in_worker_thread.<locals>.wrapper)r  r  rk   )rû  rÿ  r)   r   r{   r:   )rx   r\   r`   r  r  rn   rf   r  ri   Úrun_sync_in_worker_threadu  s   €
ýz%TrioBackend.run_sync_in_worker_threadc                 C  s   t j ¡  d S re   )r{   Úfrom_threadÚcheck_cancelledrŠ  rf   rf   ri   r  ˆ  ó   zTrioBackend.check_cancelledrÑ   r  rW   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.   ©rx   r\   r`   r  r#  rf   rf   ri   Úrun_async_from_threadŒ  ó   
ÿz!TrioBackend.run_async_from_threadc                 C  r!  r"  )r   r{   r  r)   r.   r$  rf   rf   ri   Ú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   r^   Ústrc                 S  s"   t  | ¡}t|tƒr|S t  |¡S re   )ÚosÚfspathrl   r+  Úfsdecode)rî   Ústr_or_bytesrf   rf   ri   Úconvert_item°  s   


z.TrioBackend.open_process.<locals>.convert_itemT)r	  r  r  Úshellc                   s   g | ]}ˆ |ƒ‘qS rf   rf   )Ú.0rî   ©r0  rf   ri   Ú
<listcomp>Â  s    z,TrioBackend.open_process.<locals>.<listcomp>F)rî   rJ   r^   r+  )rl   r+  rã   r   r{   rF  Úopen_processr	  rí   r  rß   r  ró   )
rx   r(  r	  r  r  rb   r  Ústdin_streamÚstdout_streamÚstderr_streamrf   r3  ri   r5  ¦  s6   €

ÿûú	ÿûú	zTrioBackend.open_processr  r  c                 C  s   t j t|¡ d S re   )r{   rF  Úspawn_system_taskr  )rx   r  rf   rf   ri   Ú#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_INETr{   rl  rm  rn  ÚbindÚconnectrü   rÁ   r-  )rx   r;  r<  r=  Úfamilyr  rf   rf   ri   Ú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 re   )r{   r<  ÚAF_UNIXrC  rü   rÁ   r?  )rx   rF  r  rf   rf   ri   Úconnect_unixå  s   €üþzTrioBackend.connect_unixÚsockr&  úabc.SocketListenerc                 C  r  re   )ra  ©rx   rK  rf   rf   ri   Úcreate_tcp_listenerð  r•   zTrioBackend.create_tcp_listenerc                 C  r  re   )rt  rM  rf   rf   ri   Úcreate_unix_listenerô  r•   z TrioBackend.create_unix_listenerrD  ú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)rD  Útyper¹   )
r{   r<  Ú
SOCK_DGRAMrl  rK  ÚSO_REUSEPORTrB  rC  r�  ru  )rx   rD  r=  rQ  rR  r  rf   rf   ri   Úcreate_udp_socketø  s   €zTrioBackend.create_udp_socketrb  Úremote_pathúabc.UNIXDatagramSocketc                 Ã  ó   �d S re   rf   ©rx   rb  rX  rf   rf   ri   Úcreate_unix_datagram_socket  ó   €z'TrioBackend.create_unix_datagram_socketúabc.ConnectedUNIXDatagramSocketc                 Ã  rZ  re   rf   r[  rf   rf   ri   r\    r]  ústr | bytes | Noneú8abc.UNIXDatagramSocket | abc.ConnectedUNIXDatagramSocketc                 Ã  s2   �t j |¡}|r| |¡I d H  t|ƒS t|ƒS re   )r{   r<  rf  rC  r‰  rˆ  )rx   rb  rX  r  rf   rf   ri   r\    s   €r   )rD  rT  ÚprotorS  úbytes | str | Noneústr | int | Noneúint | AddressFamilyrT  úint | SocketKindra  rS  ú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 re   )r{   r<  Úgetaddrinfo)rx   r;  r<  rD  rT  ra  rS  rf   rf   ri   rg  &  s   €zTrioBackend.getaddrinfoÚsockaddrrF   útuple[str, str]c                 Ã  s   �t j ||¡I d H S re   )r{   r<  Úgetnameinfo)rx   rh  rS  rf   rf   ri   rj  ;  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 )Nr0  )r&   r{   r5   Úwith_tracebackÚ__traceback__r4   ©rx   rk  r¾   rf   rf   ri   r&   A  ó   €€
ÿzTrioBackend.wait_readablec              
   Ã  rl  )Nr1  )r'   r{   r5   rm  rn  r4   ro  rf   rf   ri   r'   J  rp  zTrioBackend.wait_writablec                 C  s   t |ƒ d S re   )r%   )rx   rk  rf   rf   ri   r%   S  r™   zTrioBackend.notify_closingc                 Ã  s(   �t tdƒr|jtjkrt|ƒS t|ƒS )NrI  )Úhasattrr<  rD  rI  rt  ra  rM  rf   rf   ri   Úwrap_listener_socketW  s   €z TrioBackend.wrap_listener_socketc                 Ã  ó   �t j |¡}t|ƒS re   )r{   r<  rf  r-  ©rx   rK  Ú	trio_sockrf   rf   ri   Úwrap_stream_socket^  ó   €zTrioBackend.wrap_stream_socketr?  c                 Ã  rs  re   )r{   r<  rf  r?  rt  rf   rf   ri   Úwrap_unix_stream_socketc  rw  z#TrioBackend.wrap_unix_stream_socketru  c                 Ã  rs  re   )r{   r<  rf  ru  rt  rf   rf   ri   Úwrap_udp_socketh  rw  zTrioBackend.wrap_udp_socketr�  c                 Ã  rs  re   )r{   r<  rf  r�  rt  rf   rf   ri   Úwrap_connected_udp_socketm  rw  z%TrioBackend.wrap_connected_udp_socketrˆ  c                 Ã  rs  re   )r{   r<  rf  rˆ  rt  rf   rf   ri   Úwrap_unix_datagram_socketr  rw  z%TrioBackend.wrap_unix_datagram_socketr‰  c                 Ã  rs  re   )r{   r<  rf  r‰  rt  rf   rf   ri   Ú#wrap_connected_unix_datagram_socketw  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“  )rx   r  rf   rf   ri   r  ~  s   
ÿ
ûz*TrioBackend.current_default_thread_limiterr½  r   ú.AbstractContextManager[AsyncIterator[Signals]]c                 G  r  re   )r»  )rx   r½  rf   rf   ri   rÀ  ‰  s   z TrioBackend.open_signal_receiverr/   c                 C  s   t ƒ }t|ƒS re   )r$   r¢  )rx   rî  rf   rf   ri   Ú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 re   )r#   r¢  Úchild_nurseriesÚchild_tasksrZ  Úextend)rx   Ú	root_taskÚ
task_infosÚ	nurseriesÚnew_nurseriesÚnurseryrî  rf   rf   ri   Ú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Œ  )rx   rŒ  rf   rf   ri   rŒ  ¥  s   €z"TrioBackend.wait_all_tasks_blockedrÆ  c                 C  s   t di |¤ŽS rz   )rÆ  )rx   rÇ  rf   rf   ri   Úcreate_test_runner«  r   zTrioBackend.create_test_runner)
r\   rü  r`   rý  rb   rá  rÇ  rá  r^   rV   )r^   rt   rŸ   )r^   r  rÝ   )r  r‘   r^   ry   )r”   r‘   r�   r‡   r^   r
  )r^   r  )r^   r  r£  )r§  rþ   r¦  râ   r–  r‡   r^   r  )r«  r‘   r^   r:   )FN)
r\   r  r`   rý  r  r‡   r  r  r^   rV   )r\   rÑ   r`   rý  r  rt   r^   rW   )r\   r  r`   rý  r  rt   r^   rV   )r(  r)  r	  r*  r  r*  r  r*  rb   r   r^   ró   ©r  r  r^   ry   re   )r;  r+  r<  rþ   r=  r>  r^   r-  )rF  rG  r^   rH  )rK  r&  r^   rL  )
rD  rP  r=  r>  rQ  r>  rR  r‡   r^   rS  )rb  r&  rX  ry   r^   rY  )rb  r&  rX  rG  r^   r^  )rb  r&  rX  r_  r^   r`  )r;  rb  r<  rc  rD  rd  rT  re  ra  rþ   rS  rþ   r^   rf  )r   )rh  rF   rS  rþ   r^   ri  )rk  rO   r^   ry   )rK  r&  r^   r-  )rK  r&  r^   r?  )rK  r&  r^   ru  )rK  r&  r^   r�  )rK  r&  r^   rˆ  )rK  r&  r^   r‰  )r^   r:   )r½  r   r^   r€  )r^   r/   )r^   r‚  )rÇ  rá  r^   rÆ  )4r¢   r£   r¤   ÚclassmethodrË   rÿ  r  r  rG  r›  r  r  r  r  r  r  r  r  r  r  r  r  r  r%  r'  r5  r:  rE  rJ  rN  rO  rW  r   r\  rg  rj  r&   r'   r%   rr  rv  rx  ry  rz  r{  r|  r  rÀ  r�  r‹  rŒ  rŽ  rf   rf   rf   ri   rû  )  sØ    
ÿû	û(ÿ
øÿ
rû  )r\   r]   r^   r_   r�  )žÚ
__future__r   rE  r  r,  r<  Ú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<   Ú	BaseEventr>   ÚBaseLockr?   r@   rB   ÚBaseSemaphoreÚ_core._tasksrD   ÚBaseCancelScoperE   rF   rG   rH   Úabc._eventlooprI   rJ   Ú
abc._tasksrK   rL   rM   Ústreams.memoryrN   Ú	_typeshedrO   Úversion_inforR   rS   ÚexceptiongrouprT   Útyping_extensionsrU   rV   rW   r+  rY   rZ   r[   ro   rF  ÚRunVarrt   r¬   Ú
TaskStatusr¨   r°   ÚByteReceiveStreamrß   ÚByteSendStreamrí   ró   Ú
Instrumentr  r  r¯   r  r  r-  r?  ÚSocketListenerra  rt  ru  r�  rˆ  r‰  rº  r»  rÆ  r¢  rû  Úbackend_classrf   rf   rf   ri   Ú<module>   s¼    (
0$	
7i8ÿ
!C

ÿ:8N _   
