o
    í6Wj²  ã                   @  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   úd/home/esfera/Documents/content_generation/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              
   Ã  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¾   rf   rf   ri   ÚreceiveD  s   €€€ÿzReceiveStreamWrapper.receivery   c                 Ã  ó   �| j  ¡ I d H  d S re   ©rà   Úacloser€   rf   rf   ri   rí   T  ó   €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   Úsend\  s   €€€ÿzSendStreamWrapper.sendc                 Ã  rë   re   rì   r€   rf   rf   ri   rí   d  rî   zSendStreamWrapper.acloseN©rð   rã   r^   ry   rÝ   )r¢   r£   r¤   r¯   ró   rí   rf   rf   rf   ri   rï   X  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í   o  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õ   h  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Ž   �|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å   r5  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   )r6  Ú
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.  )r8  )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   rå   Úarrayr{   ÚlowlevelÚ
checkpointr5  r"  Úrecvmsgr>  ÚCMSG_LENÚitemsizerþ   r-  r6   Ú
SOL_SOCKETÚ
SCM_RIGHTSr­   Ú	frombytesÚlenÚlist)r}   rB  rC  ÚfdsÚmessageÚancdataÚflagsÚaddrr¾   Ú
cmsg_levelÚ	cmsg_typeÚ	cmsg_datarf   rf   ri   Úreceive_fds  sD   €
ÿ€ÿõôÿÿÿ&zUNIXSocketStream.receive_fdsrR  rã   rQ  ú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 emptyrE  )rå   rl   r   Úappendr   r&  rF  r{   rG  rH  r6  r"  Úsendmsgr>  rL  rM  rþ   r-  )r}   rR  rQ  ÚfilenosÚfdÚfdarrayr¾   rf   rf   ri   Úsend_fds"  sB   €

€ýÿ
þ
€ÿó"ózUNIXSocketStream.send_fdsN)rB  r   rC  r   r^   rD  )rR  rã   rQ  rZ  r^   ry   )r¢   r£   r¤   rY  r`  rf   rf   rf   ri   rA     s    
!rA  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}   rc  r  rf   ri   r~   D  ó   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¹   )
rh  r"  Úacceptrþ   r-  Ú
setsockoptr>  ÚIPPROTO_TCPÚTCP_NODELAYr/  ©r}   r  Ú_addrr¾   rf   rf   ri   rl  H  s   €€ÿ€ýzTCPSocketListener.accept©rc  r(  )r^   r/  ©r¢   r£   r¤   r~   rl  r  rf   rf   r  ri   rb  C  ó    rb  c                      ra  )ÚUNIXSocketListenerrc  r(  c                   rd  re  rf  ri  r  rf   ri   r~   T  rj  zUNIXSocketListener.__init__r^   rA  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   )rh  r"  rl  rþ   r-  rA  rp  rf   rf   ri   rl  X  s    €€ÿÿ
þþ
üúzUNIXSocketListener.acceptrr  )r^   rA  rs  rf   rf   r  ri   ru  S  rt  ru  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                   r0  r1  r4  r$  r  rf   ri   r~   c  r7  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 ©Nr8  )r5  r"  Úrecvfromr7   rþ   r-  ©r}   ré   rU  r¾   rf   rf   ri   rê   h  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   ©r6  r"  Úsendtorþ   r-  rò   rf   rf   ri   ró   p  ó   €€ÿÿþ"üzUDPSocket.sendr.  )r^   rw  )rð   rG   r^   ry   ©r¢   r£   r¤   r~   rê   ró   r  rf   rf   r  ri   rv  b  ó    
rv  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                   r0  r1  r4  r$  r  rf   ri   r~   y  r7  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 rx  ©r5  r"  r9  rþ   r-  r,  rf   rf   ri   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 re   ©r6  r"  ró   rþ   r-  rò   rf   rf   ri   ró   …  r~  zConnectedUDPSocket.sendr.  ©r^   rã   rô   r  rf   rf   r  ri   r‚  x  s    
r‚  c                      r�  )ÚUNIXDatagramSocketr  r   r^   ry   c                   r0  r1  r4  r$  r  rf   ri   r~   Ž  r7  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 rx  )r5  r"  ry  rþ   r-  rz  rf   rf   ri   rê   “  s   €ý€ÿ"ûzUNIXDatagramSocket.receiverð   c                 Ã  r{  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                   r0  r1  r4  r$  r  rf   ri   r~   ¦  r7  z$ConnectedUNIXDatagramSocket.__init__rã   c                 Ã  rƒ  rx  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{   rG  Ú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{   rG  rœ  r�  r0   rž  rŸ  r€   rf   rf   ri   r›  &  s   €ÿzSemaphore.acquirec                 C  ó(   z| j  ¡  W d S  tjy   td ‚w re   )rª  r�  r{   r0   r€   rf   rf   ri   r�  2  ó
   ÿzSemaphore.acquire_nowaitc                 C  r’   re   )rª  r§  r€   rf   rf   ri   r§  8  r•   zSemaphore.max_valuec                 C  r’   re   )rª  r–   r€   rf   rf   ri   r–   <  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‘  C  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   K  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~   S  s   
zCapacityLimiter.__init__c                 Ã  r  re   )r±  r·   r€   rf   rf   ri   r·   _  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º   b  s   €zCapacityLimiter.__aexit__r‘   c                 C  r’   re   ©r±  r®  r€   rf   rf   ri   r®  j  r•   zCapacityLimiter.total_tokensr–   c                 C  r—   re   r²  r˜   rf   rf   ri   r®  n  r™   r   c                 C  r’   re   )r±  Úborrowed_tokensr€   rf   rf   ri   r³  r  r•   zCapacityLimiter.borrowed_tokensc                 C  r’   re   )r±  Úavailable_tokensr€   rf   rf   ri   r´  v  r•   z CapacityLimiter.available_tokensc                 C  r«  re   )r±  r�  r{   r0   r€   rf   rf   ri   r�  z  r¬  zCapacityLimiter.acquire_nowaitÚborrowerrt   c                 C  s*   z	| j  |¡ W d S  tjy   td ‚w re   )r±  Úacquire_on_behalf_of_nowaitr{   r0   ©r}   rµ  rf   rf   ri   r¶  €  s
   ÿz+CapacityLimiter.acquire_on_behalf_of_nowaitc                 Ã  rë   re   )r±  r›  r€   rf   rf   ri   r›  †  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:   H  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{   rG  Ú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 rk  )r8   r»  r   r   rP  r!   rÎ  rþ   r[  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{   rG  Ú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                      ra  )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Ë   6  s   zTrioBackend.runrt   c                 C  rÒ  re   )r{   rG  Úcurrent_trio_tokenr‹  rf   rf   ri   Úcurrent_tokenA  ó   
zTrioBackend.current_tokenr‘   c                 C  ó   t  ¡ S re   )r{   Úcurrent_timer‹  rf   rf   ri   r  E  r•   zTrioBackend.current_timeútype[BaseException]c                 C  s   t jS re   )r{   r¼   r‹  rf   rf   ri   Úcancelled_exception_classI  r  z%TrioBackend.cancelled_exception_classry   c                 Ã  ó   �t j ¡ I d H  d S re   )r{   rG  rH  r‹  rf   rf   ri   rH  M  ó   €zTrioBackend.checkpointc                 Ã  r  re   )r{   rG  rœ  r‹  rf   rf   ri   rœ  Q  r	  z#TrioBackend.checkpoint_if_cancelledc                 Ã  r  re   )r{   rG  Úcancel_shielded_checkpointr‹  rf   rf   ri   r
  U  r	  z&TrioBackend.cancel_shielded_checkpointÚdelayc                 Ã  s   �t  |¡I d H  d S re   )r{   r  )rx   r  rf   rf   ri   r  Y  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_scope]  s   zTrioBackend.create_cancel_scopec                 C  r  re   )r{   Úcurrent_effective_deadliner‹  rf   rf   ri   r  c  r•   z&TrioBackend.current_effective_deadlineúabc.TaskGroupc                 C  ó   t ƒ S re   )r°   r‹  rf   rf   ri   Úcreate_task_groupg  r  zTrioBackend.create_task_groupú	abc.Eventc                 C  r  re   r;   r‹  rf   rf   ri   Úcreate_eventk  r  zTrioBackend.create_eventr—  r>   c                C  s
   t |d�S )Nr–  r=   r˜  rf   rf   ri   Úcreate_locko  r  zTrioBackend.create_lockNr¦  r¨  r   r§  râ   úabc.Semaphorec                C  s   t |||d�S )Nr¦  rA   r©  rf   rf   ri   Úcreate_semaphores  s   zTrioBackend.create_semaphorer®  r:   c                 C  ó   t |ƒS re   r9   )rx   r®  rf   rf   ri   Úcreate_capacity_limiter}  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_thread�  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ð   ©r3  rf   ri   Ú
<listcomp>Î  s    z,TrioBackend.open_process.<locals>.<listcomp>F)rð   rJ   r^   r.  )rl   r.  rã   r   r{   rG  Úopen_processr  rï   r  rß   r  rõ   )
rx   r+  r  r  r  rb   r  Ústdin_streamÚstdout_streamÚstderr_streamrf   r6  ri   r8  ²  s6   €

ÿûú	ÿûú	zTrioBackend.open_processr  r  c                 C  s   t j t|¡ d S re   )r{   rG  Ú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{   rm  rn  ro  Ú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_UNIXrF  rþ   rÁ   rA  )rx   rI  r  rf   rf   ri   Úconnect_unixñ  s   €üþzTrioBackend.connect_unixÚsockr(  úabc.SocketListenerc                 C  r  re   )rb  ©rx   rN  rf   rf   ri   Úcreate_tcp_listenerü  r•   zTrioBackend.create_tcp_listenerc                 C  r  re   )ru  rP  rf   rf   ri   Úcreate_unix_listener   r•   z TrioBackend.create_unix_listenerrG  ú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)rG  Útyper¹   )
r{   r>  Ú
SOCK_DGRAMrm  rL  ÚSO_REUSEPORTrE  rF  r‚  rv  )rx   rG  r@  rT  rU  r  rf   rf   ri   Úcreate_udp_socket  s   €zTrioBackend.create_udp_socketrc  Úremote_pathúabc.UNIXDatagramSocketc                 Ã  ó   �d S re   rf   ©rx   rc  r[  rf   rf   ri   Úcreate_unix_datagram_socket  ó   €z'TrioBackend.create_unix_datagram_socketúabc.ConnectedUNIXDatagramSocketc                 Ã  r]  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>  rg  rF  rŠ  r‰  )rx   rc  r[  r  rf   rf   ri   r_  &  s   €r   )rG  rW  ÚprotorT  úbytes | str | Noneústr | int | Noneúint | AddressFamilyrW  úint | SocketKindrd  rT  ú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?  rG  rW  rd  rT  rf   rf   ri   rj  2  s   €zTrioBackend.getaddrinfoÚsockaddrrF   útuple[str, str]c                 Ã  s   �t j ||¡I d H S re   )r{   r>  Úgetnameinfo)rx   rk  rT  rf   rf   ri   rm  G  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 )Nr2  )r&   r{   r5   Úwith_tracebackÚ__traceback__r4   ©rx   rn  r¾   rf   rf   ri   r&   M  ó   €€
ÿzTrioBackend.wait_readablec              
   Ã  ro  )Nr3  )r'   r{   r5   rp  rq  r4   rr  rf   rf   ri   r'   V  rs  zTrioBackend.wait_writablec                 C  s   t |ƒ d S re   )r%   )rx   rn  rf   rf   ri   r%   _  r™   zTrioBackend.notify_closingc                 Ã  s(   �t tdƒr|jtjkrt|ƒS t|ƒS )NrL  )Úhasattrr>  rG  rL  ru  rb  rP  rf   rf   ri   Úwrap_listener_socketc  s   €z TrioBackend.wrap_listener_socketc                 Ã  ó   �t j |¡}t|ƒS re   )r{   r>  rg  r/  ©rx   rN  Ú	trio_sockrf   rf   ri   Úwrap_stream_socketj  ó   €zTrioBackend.wrap_stream_socketrA  c                 Ã  rv  re   )r{   r>  rg  rA  rw  rf   rf   ri   Úwrap_unix_stream_socketo  rz  z#TrioBackend.wrap_unix_stream_socketrv  c                 Ã  rv  re   )r{   r>  rg  rv  rw  rf   rf   ri   Úwrap_udp_sockett  rz  zTrioBackend.wrap_udp_socketr‚  c                 Ã  rv  re   )r{   r>  rg  r‚  rw  rf   rf   ri   Úwrap_connected_udp_sockety  rz  z%TrioBackend.wrap_connected_udp_socketr‰  c                 Ã  rv  re   )r{   r>  rg  r‰  rw  rf   rf   ri   Úwrap_unix_datagram_socket~  rz  z%TrioBackend.wrap_unix_datagram_socketrŠ  c                 Ã  rv  re   )r{   r>  rg  rŠ  rw  rf   rf   ri   Ú#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”  )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_tasksr[  Ú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@  rA  r^   r/  )rI  rJ  r^   rK  )rN  r(  r^   rO  )
rG  rS  r@  rA  rT  rA  rU  r‡   r^   rV  )rc  r(  r[  ry   r^   r\  )rc  r(  r[  rJ  r^   ra  )rc  r(  r[  rb  r^   rc  )r>  re  r?  rf  rG  rg  rW  rh  rd  r   rT  r   r^   ri  )r   )rk  rF   rT  r   r^   rl  )rn  rO   r^   ry   )rN  r(  r^   r/  )rN  r(  r^   rA  )rN  r(  r^   rv  )rN  r(  r^   r‚  )rN  r(  r^   r‰  )rN  r(  r^   rŠ  )r^   r:   )rÀ  r   r^   rƒ  )r^   r/   )r^   r…  )rÊ  rä  r^   rÉ  )4r¢   r£   r¤   ÚclassmethodrË   r  r  r  rH  rœ  r
  r  r  r  r  r  r  r  r  r  r  r   r"  r(  r*  r8  r=  rH  rM  rQ  rR  rZ  r   r_  rj  rm  r&   r'   r%   ru  ry  r{  r|  r}  r~  r  r‚  rÃ  r„  rŽ  r�  r‘  rf   rf   rf   ri   rþ  5  sØ    
ÿû	û(ÿ
øÿ
rþ  )r\   r]   r^   r_   r’  )žÚ
__future__r   rF  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   rG  ÚRunVarrt   r¬   Ú
TaskStatusr¨   r°   ÚByteReceiveStreamrß   ÚByteSendStreamrï   rõ   Ú
Instrumentr  r  r¯   r  r  r/  rA  ÚSocketListenerrb  ru  rv  r‚  r‰  rŠ  r½  r¾  rÉ  r£  rþ  Úbackend_classrf   rf   rf   ri   Ú<module>   s¼    (
0$	
7i8ÿ
$C

ÿ:8T _   
