a
    ^g՝                     @  s  U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
mZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZm Z  d dlm!Z! d dl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* d dl+Z,d dl-Z,d dl.m/Z/m0Z0m1Z1 d dl-m2Z2m3Z3m4Z4m5Z5 d dl6m7Z8 d dl9m:Z: ddl;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA ddlBmCZC ddlDmEZEmFZFmGZGmHZH ddlImJZJ ddlKmLZL ddlMmNZO ddlMmPZQ ddlMmRZS ddlMmTZTmUZU ddlMmVZW ddlXmYZZ ddlAm[Z[m\Z\m]Z] ddl^m_Z_m`Z` dd lambZb e$rDd d!lcmdZd ejed"kr^d d#l"mfZf nd d#lgmfZf ejed$krd d%l"mhZhmiZi nd d&ljmkZk d d%lgmhZhmiZi e(d'Zle(d(Zme(d)ene[Zoehd*Zpefd+Zqe,jrjsZsG d,d- d-eZZYG d.d/ d/eAjtZtG d0d1 d1eAjuZued2d3G d4d5 d5eAjvZwed2d3G d6d7 d7eAjxZyed2d3G d8d9 d9eAjzZzG d:d; d;e,jAj{Z|esd<Z}d=e~d<< d>d?d@dAdBZG dCdD dDe&eo ZG dEdF dFeeAjZG dGdH dHeeAjZG dIdJ dJeeAjZG dKdL dLeeAjZG dMdN dNee[ eAjZG dOdP dPee[ eAjZG dQdR dReen eAjZG dSdT dTeen eAjZG dUdV dVeQZPG dWdX dXeSZRG dYdZ dZeWZVG d[d\ d\eOZNesd]Zd=e~d]< G d^d_ d_ZG d`da daeAjZG dbdc dce?ZG ddde dee_ZeZdS )f    )annotationsN)AsyncGeneratorAsyncIterator	AwaitableCallable
Collection	CoroutineIterableSequence)Future)AbstractContextManager)	dataclass)partial)IOBase)PathLike)Signals)AddressFamily
SocketKind)TracebackType)IOTYPE_CHECKINGAnyGenericNoReturnTypeVarcastoverload)ErrorOutcomeValue)current_root_taskcurrent_taskwait_readablewait_writable)
SocketType)run_sync   )CapacityLimiterStatisticsEventStatisticsLockStatisticsTaskInfo
WouldBlockabc)claim_worker_thread)BrokenResourceErrorBusyResourceErrorClosedResourceErrorEndOfStream)convert_ipv6_sockaddr)create_memory_object_streamCapacityLimiterEventLock)ResourceGuardSemaphoreStatistics	SemaphoreCancelScope)IPSockAddrTypeUDPPacketTypeUNIXDatagramPacketType)AsyncBackendStrOrBytesPath)MemoryObjectSendStream)	HasFileno)   
   )	ParamSpec)rG      )TypeVarTupleUnpack)BaseExceptionGroupTT_Retval
T_SockAddrPosArgsTPc                   @  s   e Zd Zd#ddd dddZd$ddddd	d
Zd dddZdddddddZddddZeddddZ	e	j
dddddZ	eddddZeddddZeddd d!Zej
dddd"d!ZdS )%r?   Nztrio.CancelScope | Noneobject)originalkwargsreturnc                 K  s
   t | S NrS   __new__)clsrT   rU    r[   c/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/anyio/_backends/_trio.pyrY   v   s    zCancelScope.__new__r   Nonec                 K  s   |pt jf i || _d S rW   )trior?   _CancelScope__original)selfrT   rU   r[   r[   r\   __init__{   s    zCancelScope.__init__rV   c                 C  s   | j   | S rW   )r_   	__enter__r`   r[   r[   r\   rc   ~   s    
zCancelScope.__enter__type[BaseException] | NoneBaseException | NoneTracebackType | Noneboolexc_typeexc_valexc_tbrV   c                 C  s   | j |||S rW   )r_   __exit__r`   rj   rk   rl   r[   r[   r\   rm      s    zCancelScope.__exit__c                 C  s   | j   d S rW   )r_   cancelrd   r[   r[   r\   ro      s    zCancelScope.cancelfloatc                 C  s   | j jS rW   r_   deadlinerd   r[   r[   r\   rr      s    zCancelScope.deadlinevaluerV   c                 C  s   || j _d S rW   rq   r`   rt   r[   r[   r\   rr      s    c                 C  s   | j jS rW   )r_   cancel_calledrd   r[   r[   r\   rv      s    zCancelScope.cancel_calledc                 C  s   | j jS rW   )r_   cancelled_caughtrd   r[   r[   r\   rw      s    zCancelScope.cancelled_caughtc                 C  s   | j jS rW   r_   shieldrd   r[   r[   r\   ry      s    zCancelScope.shieldc                 C  s   || j _d S rW   rx   ru   r[   r[   r\   ry      s    )N)N)__name__
__module____qualname__rY   ra   rc   rm   ro   propertyrr   setterrv   rw   ry   r[   r[   r[   r\   r?   u   s$    r?   c                   @  sp   e Zd ZddddZd dddZddd	d
dddZdddddddddZdddddddddZdS )	TaskGroupr]   rb   c                 C  s   d| _ tjdd| _d | _d S )NFT)Zstrict_exception_groups)_activer^   Zopen_nursery_nursery_managercancel_scoperd   r[   r[   r\   ra      s    zTaskGroup.__init__c                   s*   d| _ | j I d H | _t| jj| _| S )NT)r   r   
__aenter___nurseryr?   r   rd   r[   r[   r\   r      s    zTaskGroup.__aenter__re   rf   rg   rh   ri   c              
     s   zvz$| j |||I d H W W ~~d| _S  tyh } z*|tjd sRtj | W Y d }~n
d }~0 0 W ~~d| _n~~d| _0 d S )NF   )r   	__aexit__r   rM   splitr^   	Cancelled_create)r`   rj   rk   rl   excr[   r[   r\   r      s    zTaskGroup.__aexit__Nnamez,Callable[[Unpack[PosArgsT]], Awaitable[Any]]zUnpack[PosArgsT]rS   )funcargsr   rV   c                G  s,   | j std| jj|g|R d|i d S Nz;This task group is not active; no new tasks can be started.r   )r   RuntimeErrorr   
start_soonr`   r   r   r   r[   r[   r\   r      s
    zTaskGroup.start_soonzCallable[..., Awaitable[Any]]r   c                  s.   | j std| jj|g|R d|iI d H S r   )r   r   r   startr   r[   r[   r\   r      s
    zTaskGroup.start)rz   r{   r|   ra   r   r   r   r   r[   r[   r[   r\   r      s   r   c                      sH   e Zd Zd dddZdd fddZddd	d
dddddZ  ZS )BlockingPortalrb   c                 C  s
   t | S rW   rX   rZ   r[   r[   r\   rY      s    zBlockingPortal.__new__r]   c                   s   t    tj | _d S rW   )superra   r^   lowlevelcurrent_trio_token_tokenrd   	__class__r[   r\   ra      s    
zBlockingPortal.__init__z<Callable[[Unpack[PosArgsT]], Awaitable[T_Retval] | T_Retval]tuple[Unpack[PosArgsT]]dict[str, Any]rS   zFuture[T_Retval])r   r   rU   r   futurerV   c              	   C  s.   t jjt| jj|d| j||||| jd d S )Nr   )Z
trio_token)r^   from_threadr%   r   Z_task_groupr   Z
_call_funcr   )r`   r   r   rU   r   r   r[   r[   r\   _spawn_task_from_thread   s    z&BlockingPortal._spawn_task_from_thread)rz   r{   r|   rY   ra   r   __classcell__r[   r[   r   r\   r      s   r   F)eqc                   @  s6   e Zd ZU ded< ddddddZd	d
ddZdS )ReceiveStreamWrapperztrio.abc.ReceiveStream_streamN
int | Nonebytes	max_bytesrV   c              
     s   z| j |I d H }W nZ tjyD } zt|jW Y d }~n6d }~0  tjyp } zt|jW Y d }~n
d }~0 0 |rz|S td S rW   )r   Zreceive_somer^   r0   	__cause__r.   r1   r`   r   datar   r[   r[   r\   receive
  s    zReceiveStreamWrapper.receiver]   rb   c                   s   | j  I d H  d S rW   r   acloserd   r[   r[   r\   r     s    zReceiveStreamWrapper.aclose)N)rz   r{   r|   __annotations__r   r   r[   r[   r[   r\   r     s   
r   c                   @  s4   e Zd ZU ded< dddddZddd	d
ZdS )SendStreamWrapperztrio.abc.SendStreamr   r   r]   itemrV   c              
     sv   z| j |I d H  W nZ tjyD } zt|jW Y d }~n6d }~0  tjyp } zt|jW Y d }~n
d }~0 0 d S rW   )r   Zsend_allr^   r0   r   r.   r`   r   r   r[   r[   r\   send  s    zSendStreamWrapper.sendrb   c                   s   | j  I d H  d S rW   r   rd   r[   r[   r\   r   '  s    zSendStreamWrapper.acloseN)rz   r{   r|   r   r   r   r[   r[   r[   r\   r     s   
r   c                   @  s   e Zd ZU ded< ded< ded< ded< dd	d
dZdd	ddZdd	ddZdd	ddZdddddZe	dd	ddZ
e	dd	ddZe	dd	ddZe	dd	ddZe	dd	d d!Zd"S )#Processztrio.Process_processzabc.ByteSendStream | None_stdinzabc.ByteReceiveStream | None_stdout_stderrr]   rb   c                   s   t ddR | jr"| j I d H  | jr8| j I d H  | jrN| j I d H  W d    n1 sb0    Y  z|  I d H  W nT ty   |   t dd |  I d H  W d    n1 s0    Y   Y n0 d S NT)ry   )r?   r   r   r   r   waitBaseExceptionkillrd   r[   r[   r\   r   2  s    .,zProcess.acloseintc                   s   | j  I d H S rW   )r   r   rd   r[   r[   r\   r   C  s    zProcess.waitc                 C  s   | j   d S rW   )r   	terminaterd   r[   r[   r\   r   F  s    zProcess.terminatec                 C  s   | j   d S rW   )r   r   rd   r[   r[   r\   r   I  s    zProcess.killr   )signalrV   c                 C  s   | j | d S rW   )r   send_signal)r`   r   r[   r[   r\   r   L  s    zProcess.send_signalc                 C  s   | j jS rW   )r   pidrd   r[   r[   r\   r   O  s    zProcess.pidr   c                 C  s   | j jS rW   )r   
returncoderd   r[   r[   r\   r   S  s    zProcess.returncodec                 C  s   | j S rW   )r   rd   r[   r[   r\   stdinW  s    zProcess.stdinc                 C  s   | j S rW   )r   rd   r[   r[   r\   stdout[  s    zProcess.stdoutc                 C  s   | j S rW   )r   rd   r[   r[   r\   stderr_  s    zProcess.stderrN)rz   r{   r|   r   r   r   r   r   r   r}   r   r   r   r   r   r[   r[   r[   r\   r   +  s&   
r   c                      s"   e Zd Zdd fddZ  ZS )_ProcessPoolShutdownInstrumentr]   rb   c                   s   t    d S rW   )r   	after_runrd   r   r[   r\   r   e  s    z(_ProcessPoolShutdownInstrument.after_run)rz   r{   r|   r   r   r[   r[   r   r\   r   d  s   r   &current_default_worker_process_limiterztrio.lowlevel.RunVarset[abc.Process]r]   workersrV   c                   s   zt tjI d H  W nr t jy   | D ]}|jd u r*|  q*tdd( | D ]}| I d H  qRW d    n1 sz0    Y  Y n0 d S r   )	r^   sleepmathinfr   r   r   r?   r   )r   processr[   r[   r\   _shutdown_process_pooln  s    

r   c                   @  sZ   e Zd ZdddddZddddZed	dd
dZddddZdddddZdS )_TrioSocketMixinTrioSocketTyper]   trio_socketrV   c                 C  s   || _ d| _d S NF)_trio_socket_closedr`   r   r[   r[   r\   ra     s    z_TrioSocketMixin.__init__rb   c                 C  s    | j r
t| j dk rtd S Nr   )r   r0   r   filenor.   rd   r[   r[   r\   _check_closed  s    z_TrioSocketMixin._check_closedsocket.socketc                 C  s   | j jS rW   )r   _sockrd   r[   r[   r\   _raw_socket  s    z_TrioSocketMixin._raw_socketc                   s"   | j  dkrd| _| j   d S )Nr   T)r   r   r   closerd   r[   r[   r\   r     s    z_TrioSocketMixin.acloser   r   r   rV   c                 C  sJ   t |tjrt|n2| j dk r0| jr0td nt |trBt|n|d S r   )
isinstancer^   r0   r   r   r   OSErrorr.   r`   r   r[   r[   r\   _convert_socket_error  s    
z&_TrioSocketMixin._convert_socket_errorN)	rz   r{   r|   ra   r   r}   r   r   r   r[   r[   r[   r\   r     s   r   c                      sT   e Zd Zddd fddZdddd	d
dZdddddZddddZ  ZS )SocketStreamr   r]   r   c                   s$   t  | td| _td| _d S Nreading from
writing tor   ra   r:   _receive_guard_send_guardr   r   r[   r\   ra     s    
zSocketStream.__init__   r   r   r   c                   s   | j p z| j|I d H }W n. tyL } z| | W Y d }~n
d }~0 0 |rd|W  d    S tW d    n1 s|0    Y  d S rW   )r   r   recvr   r   r1   r   r[   r[   r\   r     s     zSocketStream.receiver   c                   s   | j p t|}|rhz| j|I d H }W n. tyX } z| | W Y d }~n
d }~0 0 ||d  }qW d    n1 s|0    Y  d S rW   )r   
memoryviewr   r   r   r   )r`   r   viewZ
bytes_sentr   r[   r[   r\   r     s     zSocketStream.sendrb   c                   s   | j tj d S rW   )r   shutdownsocketSHUT_WRrd   r[   r[   r\   send_eof  s    zSocketStream.send_eof)r   )rz   r{   r|   ra   r   r   r   r   r[   r[   r   r\   r     s   r   c                   @  s0   e Zd ZddddddZdddd	d
dZdS )UNIXSocketStreamr   ztuple[bytes, list[int]])msglenmaxfdsrV   c                   sR  t |tr|dk rtdt |tr,|dk r4tdtd}tj I d H  | j| z,| j	|t
||j I d H \}}}}W n. ty } z| | W Y d }~qVd }~0 0 |s|stqqVW d    n1 s0    Y  |D ]`\}	}
}|	t
jks|
t
jkr td|d|	 d|
 ||d t|t||j    q|t|fS )	Nr   z%msglen must be a non-negative integerr   z!maxfds must be a positive integeriz.Received unexpected ancillary data; message = z, cmsg_level = z, cmsg_type = )r   r   
ValueErrorarrayr^   r   
checkpointr   r   recvmsgr   CMSG_LENitemsizer   r   r1   
SOL_SOCKET
SCM_RIGHTSr   	frombyteslenlist)r`   r   r   fdsmessageancdataflagsaddrr   
cmsg_level	cmsg_type	cmsg_datar[   r[   r\   receive_fds  s6    
 "&zUNIXSocketStream.receive_fdsr   zCollection[int | IOBase]r]   )r  r  rV   c                   s   |st d|st dg }|D ]2}t|tr:|| q t|tr ||  q td|}tj	 I d H  | j
l z*| j|gtjtj|fgI d H  W qW qx ty } z| | W Y d }~qxd }~0 0 qxW d    n1 s0    Y  d S )Nzmessage must not be emptyzfds must not be emptyr   )r   r   r   appendr   r   r   r^   r   r   r   r   sendmsgr   r   r   r   r   )r`   r  r  ZfilenosfdZfdarrayr   r[   r[   r\   send_fds  s2    



zUNIXSocketStream.send_fdsN)rz   r{   r|   r  r  r[   r[   r[   r\   r     s   !r   c                      s0   e Zd Zdd fddZddddZ  ZS )	TCPSocketListenerr   
raw_socketc                   s"   t  tj| td| _d S Nzaccepting connections fromr   ra   r^   r   from_stdlib_socketr:   _accept_guardr`   r  r   r[   r\   ra     s    zTCPSocketListener.__init__r   rb   c                   s   | j X z| j I d H \}}W n. tyN } z| | W Y d }~n
d }~0 0 W d    n1 sd0    Y  |tjtjd t	|S Nr   )
r  r   acceptr   r   
setsockoptr   IPPROTO_TCPTCP_NODELAYr   r`   r   Z_addrr   r[   r[   r\   r    s    >zTCPSocketListener.acceptrz   r{   r|   ra   r  r   r[   r[   r   r\   r    s   r  c                      s0   e Zd Zdd fddZddddZ  ZS )	UNIXSocketListenerr   r  c                   s"   t  tj| td| _d S r  r  r  r   r[   r\   ra     s    zUNIXSocketListener.__init__r   rb   c                   sv   | j X z| j I d H \}}W n. tyN } z| | W Y d }~n
d }~0 0 W d    n1 sd0    Y  t|S rW   )r  r   r  r   r   r   r  r[   r[   r\   r    s    >zUNIXSocketListener.acceptr  r[   r[   r   r\   r     s   r   c                      sB   e Zd Zddd fddZdddd	Zd
ddddZ  ZS )	UDPSocketr   r]   r   c                   s$   t  | td| _td| _d S r   r   r   r   r[   r\   ra   #  s    
zUDPSocket.__init__ztuple[bytes, IPSockAddrType]rb   c                   s   | j r z2| jdI d H \}}|t|fW W  d    S  tyh } z| | W Y d }~n
d }~0 0 W d    n1 s~0    Y  d S Nr   )r   r   recvfromr2   r   r   r`   r   r  r   r[   r[   r\   r   (  s    zUDPSocket.receiverA   r   c                   sp   | j V z| jj| I d H  W n. tyL } z| | W Y d }~n
d }~0 0 W d    n1 sb0    Y  d S rW   r   r   sendtor   r   r   r[   r[   r\   r   0  s
    zUDPSocket.sendrz   r{   r|   ra   r   r   r   r[   r[   r   r\   r!  "  s   r!  c                      sB   e Zd Zddd fddZdddd	Zddd
ddZ  ZS )ConnectedUDPSocketr   r]   r   c                   s$   t  | td| _td| _d S r   r   r   r   r[   r\   ra   9  s    
zConnectedUDPSocket.__init__r   rb   c                   s|   | j b z"| jdI d H W W  d    S  tyX } z| | W Y d }~n
d }~0 0 W d    n1 sn0    Y  d S r"  r   r   r   r   r   r   r[   r[   r\   r   >  s
    "zConnectedUDPSocket.receiver   c                   sp   | j V z| j|I d H  W n. tyL } z| | W Y d }~n
d }~0 0 W d    n1 sb0    Y  d S rW   r   r   r   r   r   r   r[   r[   r\   r   E  s
    zConnectedUDPSocket.sendr'  r[   r[   r   r\   r(  8  s   r(  c                      sB   e Zd Zddd fddZdddd	Zddd
ddZ  ZS )UNIXDatagramSocketr   r]   r   c                   s$   t  | td| _td| _d S r   r   r   r   r[   r\   ra   N  s    
zUNIXDatagramSocket.__init__rB   rb   c                   s   | j n z.| jdI d H \}}||fW W  d    S  tyd } z| | W Y d }~n
d }~0 0 W d    n1 sz0    Y  d S r"  )r   r   r#  r   r   r$  r[   r[   r\   r   S  s    zUNIXDatagramSocket.receiver   c                   sp   | j V z| jj| I d H  W n. tyL } z| | W Y d }~n
d }~0 0 W d    n1 sb0    Y  d S rW   r%  r   r[   r[   r\   r   [  s
    zUNIXDatagramSocket.sendr'  r[   r[   r   r\   r+  M  s   r+  c                      sB   e Zd Zddd fddZdddd	Zddd
ddZ  ZS )ConnectedUNIXDatagramSocketr   r]   r   c                   s$   t  | td| _td| _d S r   r   r   r   r[   r\   ra   f  s    
z$ConnectedUNIXDatagramSocket.__init__r   rb   c                   s|   | j b z"| jdI d H W W  d    S  tyX } z| | W Y d }~n
d }~0 0 W d    n1 sn0    Y  d S r"  r)  r   r[   r[   r\   r   k  s
    "z#ConnectedUNIXDatagramSocket.receiver   c                   sp   | j V z| j|I d H  W n. tyL } z| | W Y d }~n
d }~0 0 W d    n1 sb0    Y  d S rW   r*  r   r[   r[   r\   r   r  s
    z ConnectedUNIXDatagramSocket.sendr'  r[   r[   r   r\   r,  c  s   r,  c                   @  s`   e Zd Zd dddZddddZdddd	Zddd
dZddddZddddZdS )r7   rb   c                 C  s
   t | S rW   rX   r   r[   r[   r\   rY     s    zEvent.__new__r]   c                 C  s   t  | _d S rW   )r^   r7   _Event__originalrd   r[   r[   r\   ra     s    zEvent.__init__rh   c                 C  s
   | j  S rW   )r-  is_setrd   r[   r[   r\   r.    s    zEvent.is_setc                   s   | j  I d H S rW   )r-  r   rd   r[   r[   r\   r     s    z
Event.waitr(   c                 C  s   | j  }t|jdS )N)tasks_waiting)r-  
statisticsr(   r/  r`   orig_statisticsr[   r[   r\   r0    s    
zEvent.statisticsc                 C  s   | j   d S rW   )r-  setrd   r[   r[   r\   r3    s    z	Event.setN)	rz   r{   r|   rY   ra   r.  r   r0  r3  r[   r[   r[   r\   r7     s   r7   c                   @  s   e Zd Zdddd dddZddddddd	Zed
ddddZddddZddddZddddZ	ddddZ
ddddZdS )r9   Ffast_acquirerh   r5  rV   c                C  s
   t | S rW   rX   rZ   r5  r[   r[   r\   rY     s    zLock.__new__r]   c                C  s   || _ t | _d S rW   )_fast_acquirer^   r9   _Lock__original)r`   r5  r[   r[   r\   ra     s    zLock.__init__r   r   c                 C  s   | j dkrd| _ d S )N)z*attempt to re-acquire an already held Lock)z)Attempted to acquire an already held Lock)r   )r   r[   r[   r\   _convert_runtime_error_msg  s    
zLock._convert_runtime_error_msgrb   c              
     s   | j sPz| j I d H  W n0 tyJ } z| |  W Y d }~n
d }~0 0 d S tj I d H  z| j  W nT tj	y   | jj
 I d H  Y n0 ty } z| |  W Y d }~n
d }~0 0 d S rW   )r8  r9  acquirer   r:  r^   r   checkpoint_if_cancelledacquire_nowaitr+   _lotparkr   r[   r[   r\   r;    s    

zLock.acquirec              
   C  s\   z| j   W nH tjy(   td Y n0 tyV } z| |  W Y d }~n
d }~0 0 d S rW   )r9  r=  r^   r+   r   r:  r   r[   r[   r\   r=    s    

zLock.acquire_nowaitc                 C  s
   | j  S rW   )r9  lockedrd   r[   r[   r\   r@    s    zLock.lockedc                 C  s   | j   d S rW   )r9  releaserd   r[   r[   r\   rA    s    zLock.releaser)   c                 C  s.   | j  }|jrt|jnd }t|j||jS rW   )r9  r0  ownerTrioTaskInfor)   r@  r/  )r`   r2  rB  r[   r[   r\   r0    s
    

zLock.statisticsN)rz   r{   r|   rY   ra   staticmethodr:  r;  r=  r@  rA  r0  r[   r[   r[   r\   r9     s   	r9   c                      s   e Zd Zddddddd ddd	Zddddddd
d fddZd
dddZd
dddZeddddZeddddZ	d
dddZ
ddddZ  ZS )r=   NF	max_valuer5  r   r   rh   initial_valuerF  r5  rV   c                C  s
   t | S rW   rX   rZ   rH  rF  r5  r[   r[   r\   rY     s    zSemaphore.__new__r]   c                  s&   t  j|||d tj||d| _d S )NrE  )rF  )r   ra   r^   r=   _Semaphore__original)r`   rH  rF  r5  r   r[   r\   ra     s    zSemaphore.__init__rb   c                   sd   | j s| j I d H  d S tj I d H  z| j  W n& tjy^   | jj	 I d H  Y n0 d S rW   )
r8  rJ  r;  r^   r   r<  r=  r+   r>  r?  rd   r[   r[   r\   r;    s    zSemaphore.acquirec                 C  s.   z| j   W n tjy(   td Y n0 d S rW   )rJ  r=  r^   r+   rd   r[   r[   r\   r=    s    zSemaphore.acquire_nowaitc                 C  s   | j jS rW   )rJ  rF  rd   r[   r[   r\   rF    s    zSemaphore.max_valuec                 C  s   | j jS rW   )rJ  rt   rd   r[   r[   r\   rt     s    zSemaphore.valuec                 C  s   | j   d S rW   )rJ  rA  rd   r[   r[   r\   rA    s    zSemaphore.releaser;   c                 C  s   | j  }t|jS rW   )rJ  r0  r;   r/  r1  r[   r[   r\   r0    s    
zSemaphore.statistics)rz   r{   r|   rY   ra   r;  r=  r}   rF  rt   rA  r0  r   r[   r[   r   r\   r=     s   
r=   c                   @  s  e Zd Zd/ddddd dddZd0ddddddd	d
ZddddZdddddddZeddddZej	dddddZeddddZ
eddddZddddZd dd!d"d#Zddd$d%Zd dd!d&d'Zddd(d)Zd dd!d*d+Zd,dd-d.ZdS )1r5   NrT   zfloat | Noneztrio.CapacityLimiter | None)total_tokensrT   rV   c                C  s
   t | S rW   rX   )rZ   rL  rT   r[   r[   r\   rY     s    zCapacityLimiter.__new__r]   c                C  s,   |d ur|| _ n|d usJ t|| _ d S rW   )_CapacityLimiter__originalr^   r5   )r`   rL  rT   r[   r[   r\   ra     s    zCapacityLimiter.__init__rb   c                   s   | j  I d H S rW   )rM  r   rd   r[   r[   r\   r     s    zCapacityLimiter.__aenter__re   rf   rg   ri   c                   s   | j |||I d H  d S rW   )rM  r   rn   r[   r[   r\   r     s    zCapacityLimiter.__aexit__rp   c                 C  s   | j jS rW   rM  rL  rd   r[   r[   r\   rL  "  s    zCapacityLimiter.total_tokensrs   c                 C  s   || j _d S rW   rN  ru   r[   r[   r\   rL  &  s    r   c                 C  s   | j jS rW   )rM  borrowed_tokensrd   r[   r[   r\   rO  *  s    zCapacityLimiter.borrowed_tokensc                 C  s   | j jS rW   )rM  available_tokensrd   r[   r[   r\   rP  .  s    z CapacityLimiter.available_tokensc                 C  s   | j   d S rW   )rM  r=  rd   r[   r[   r\   r=  2  s    zCapacityLimiter.acquire_nowaitrS   )borrowerrV   c                 C  s   | j | d S rW   )rM  acquire_on_behalf_of_nowaitr`   rQ  r[   r[   r\   rR  5  s    z+CapacityLimiter.acquire_on_behalf_of_nowaitc                   s   | j  I d H  d S rW   )rM  r;  rd   r[   r[   r\   r;  8  s    zCapacityLimiter.acquirec                   s   | j |I d H  d S rW   )rM  acquire_on_behalf_ofrS  r[   r[   r\   rT  ;  s    z$CapacityLimiter.acquire_on_behalf_ofc                 C  s
   | j  S rW   )rM  rA  rd   r[   r[   r\   rA  >  s    zCapacityLimiter.releasec                 C  s   | j |S rW   )rM  release_on_behalf_ofrS  r[   r[   r\   rU  A  s    z$CapacityLimiter.release_on_behalf_ofr'   c                 C  s&   | j  }t|j|jt|j|jdS )N)rO  rL  	borrowersr/  )rM  r0  r'   rO  rL  tuplerV  r/  )r`   origr[   r[   r\   r0  D  s    
zCapacityLimiter.statistics)N)N)rz   r{   r|   rY   ra   r   r   r}   rL  r~   rO  rP  r=  rR  r;  rT  rA  rU  r0  r[   r[   r[   r\   r5     s2    
 r5   _capacity_limiter_wrapperc                   @  sb   e Zd ZU ded< ddddZd ddd	Zd
ddddddZd dddZddddZdS )_SignalReceiverzAsyncIterator[int]	_iteratorztuple[Signals, ...])signalsc                 C  s
   || _ d S rW   )_signals)r`   r\  r[   r[   r\   ra   Y  s    z_SignalReceiver.__init__rb   c                 C  s   t j| j | _| j | _| S rW   )r^   open_signal_receiverr]  _cmrc   r[  rd   r[   r[   r\   rc   \  s    z_SignalReceiver.__enter__re   rf   rg   zbool | Noneri   c                 C  s   | j |||S rW   )r_  rm   rn   r[   r[   r\   rm   a  s    z_SignalReceiver.__exit__c                 C  s   | S rW   r[   rd   r[   r[   r\   	__aiter__i  s    z_SignalReceiver.__aiter__r   c                   s   | j  I d H }t|S rW   )r[  	__anext__r   )r`   signumr[   r[   r\   ra  l  s    z_SignalReceiver.__anext__N)	rz   r{   r|   r   ra   rc   rm   r`  ra  r[   r[   r[   r\   rZ  V  s   
rZ  c                   @  s   e Zd ZdddddZddddd	d
dZddddZdddddZdddddddZddddddZd dddd!d"Z	d#ddd$d%d&Z
d'S )(
TestRunnerr   r]   optionsrV   c                 K  s$   ddl m} | | _d | _|| _d S )Nr   )Queue)queuerf  _call_queue_send_stream_options)r`   re  rf  r[   r[   r\   ra   w  s    zTestRunner.__init__re   rf   ztypes.TracebackType | Noneri   c                 C  s,   | j r(| j   | j d ur(| j   qd S rW   )ri  r   rh  getrn   r[   r[   r\   rm   ~  s    

zTestRunner.__exit__rb   c                   s   t d\| _}|x |2 z`3 d H W \}}z|I d H }W n2 tyh } z|t| W Y d }~qd }~0 0 |t| q6 W d    n1 s0    Y  d S r  )r3   ri  r   r  r   r   )r`   Zreceive_streamcorooutcome_holderretvalr   r[   r[   r\   _run_tests_and_fixtures  s    $z"TestRunner._run_tests_and_fixturesrS   )outcomerV   c                 C  s
   d | _ d S rW   )ri  )r`   rp  r[   r[   r\   _main_task_finished  s    zTestRunner._main_task_finishedz Callable[P, Awaitable[T_Retval]]zP.argszP.kwargsrO   )r   r   rU   rV   c                 O  s   | j d u rFtjj| jf| jj| jd| j | j d u rF| j	   q.g }| j 
||i ||f |sv| j	   qd|d  S )N)Zrun_sync_soon_threadsafeZdone_callbackr   )ri  r^   r   Zstart_guest_runro  rh  putrq  rj  rk  Zsend_nowaitunwrap)r`   r   r   rU   rm  r[   r[   r\   _call_in_runner_task  s     

zTestRunner._call_in_runner_taskz,Callable[..., AsyncGenerator[T_Retval, Any]]r   zIterable[T_Retval])fixture_funcrU   rV   c                 c  s`   |f i |}|  |jd }|V  z|  |jd  W n tyF   Y n0 |  |j tdd S )Nz$Async generator fixture did not stop)rt  asendStopAsyncIterationr   r   )r`   ru  rU   asyncgenZfixturevaluer[   r[   r\   run_asyncgen_fixture  s    zTestRunner.run_asyncgen_fixturez,Callable[..., Coroutine[Any, Any, T_Retval]]c                 C  s   | j |fi |S rW   rt  )r`   ru  rU   r[   r[   r\   run_fixture  s    zTestRunner.run_fixturez'Callable[..., Coroutine[Any, Any, Any]])	test_funcrU   rV   c                 C  s   | j |fi | d S rW   rz  )r`   r|  rU   r[   r[   r\   run_test  s    zTestRunner.run_testN)rz   r{   r|   ra   rm   ro  rq  rt  ry  r{  r}  r[   r[   r[   r\   rc  v  s   rc  c                      s0   e Zd Zdd fddZddddZ  ZS )	rC  ztrio.lowlevel.Task)taskc                   sH   d }|j r|j jrt|j j}t t|||j|j t|| _	d S rW   )
Zparent_nurseryZparent_taskidr   ra   r   rl  weakrefproxy_task)r`   r~  Z	parent_idr   r[   r\   ra     s
    zTrioTaskInfo.__init__rh   rb   c                 C  s&   z| j jjW S  ty    Y dS 0 d S r   )r  Z_cancel_statusZeffectively_cancelledReferenceErrorrd   r[   r[   r\   has_pending_cancellation  s    z%TrioTaskInfo.has_pending_cancellation)rz   r{   r|   ra   r  r   r[   r[   r   r\   rC    s   rC  c                
   @  sx  e Zd ZeddddddddZedd	d
dZedd	ddZedd	ddZedd	ddZedd	ddZ	edd	ddZ
edddddZeejdddddd d!d"Zedd	d#d$Zed%d	d&d'Zed(d	d)d*Zedd+d,d-d.Zed/dd0d1d2dd3d4d5d6Zedd7d8d9d:Zedd;ddd<dd=d>d?Zedd	d@dAZedddddBdCdDZed;ddddBdEdFZedGd	dHdIZedJdKdKdKdLdMdNdOdPZedQddRdSdTZeddUd1dVdWdXdYdZZed[d\d]d^d_Zed`dadbdcddZed`dadbdedfZedgdVdVddhdidjdkZ ee!d`ddldmdndoZ"ee!d`d[dpdmdqdoZ"ed`drdsdmdtdoZ"edududududvdwdxdydzd1d1d{d|d}d~Z#eddd1ddddZ$edddddZ%edddddZ&ed7d	ddZ'edddddZ(edd	ddZ)edd	ddZ*edd	ddZ+edddddZ,d/S )TrioBackendz1Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]]r   r   rO   )r   r   rU   re  rV   c                 C  s   t j|g|R  S rW   )r^   run)rZ   r   r   rU   re  r[   r[   r\   r    s    zTrioBackend.runrS   rb   c                 C  s
   t j S rW   )r^   r   r   r   r[   r[   r\   current_token  s    zTrioBackend.current_tokenrp   c                 C  s   t  S rW   )r^   current_timer   r[   r[   r\   r    s    zTrioBackend.current_timeztype[BaseException]c                 C  s   t jS rW   )r^   r   r   r[   r[   r\   cancelled_exception_class  s    z%TrioBackend.cancelled_exception_classr]   c                   s   t j I d H  d S rW   )r^   r   r   r   r[   r[   r\   r     s    zTrioBackend.checkpointc                   s   t j I d H  d S rW   )r^   r   r<  r   r[   r[   r\   r<    s    z#TrioBackend.checkpoint_if_cancelledc                   s   t j I d H  d S rW   )r^   r   cancel_shielded_checkpointr   r[   r[   r\   r    s    z&TrioBackend.cancel_shielded_checkpoint)delayrV   c                   s   t |I d H  d S rW   )r^   r   )rZ   r  r[   r[   r\   r     s    zTrioBackend.sleepFrr   ry   rh   zabc.CancelScope)rr   ry   rV   c                C  s   t ||dS )Nr  r>   )rZ   rr   ry   r[   r[   r\   create_cancel_scope  s    zTrioBackend.create_cancel_scopec                 C  s   t  S rW   )r^   current_effective_deadliner   r[   r[   r\   r    s    z&TrioBackend.current_effective_deadlinezabc.TaskGroupc                 C  s   t  S rW   )r   r   r[   r[   r\   create_task_group  s    zTrioBackend.create_task_groupz	abc.Eventc                 C  s   t  S rW   r6   r   r[   r[   r\   create_event  s    zTrioBackend.create_eventr9   r6  c                C  s
   t |dS )Nr4  r8   r7  r[   r[   r\   create_lock  s    zTrioBackend.create_lockNrE  r   r   zabc.SemaphorerG  c                C  s   t |||dS )NrE  r<   rI  r[   r[   r\   create_semaphore  s    zTrioBackend.create_semaphorer5   )rL  rV   c                 C  s   t |S rW   r4   )rZ   rL  r[   r[   r\   create_capacity_limiter&  s    z#TrioBackend.create_capacity_limiterz&Callable[[Unpack[PosArgsT]], T_Retval]zabc.CapacityLimiter | None)r   r   abandon_on_cancellimiterrV   c                   s:   dd fdd}t  t||ttj|dI d H S )NrO   rb   c                     s6   t t   W  d    S 1 s(0    Y  d S rW   )r-   r  r[   r   r   tokenr[   r\   wrapper2  s    z6TrioBackend.run_sync_in_worker_thread.<locals>.wrapper)r  r  )r  r  r%   r   r^   r5   )rZ   r   r   r  r  r  r[   r  r\   run_sync_in_worker_thread*  s    
z%TrioBackend.run_sync_in_worker_threadc                 C  s   t j  d S rW   )r^   r   check_cancelledr   r[   r[   r\   r  =  s    zTrioBackend.check_cancelled)r   r   r  rV   c                 C  s   t jj|g|R  S rW   )r^   r   r  rZ   r   r   r  r[   r[   r\   run_async_from_threadA  s    z!TrioBackend.run_async_from_threadc                 C  s   t jj|g|R  S rW   )r^   r   r%   r  r[   r[   r\   run_sync_from_threadJ  s    z TrioBackend.run_sync_from_threadzabc.BlockingPortalc                 C  s   t  S rW   )r   r   r[   r[   r\   create_blocking_portalS  s    z"TrioBackend.create_blocking_portalz)StrOrBytesPath | Sequence[StrOrBytesPath]zint | IO[Any] | Noner   r   )commandr   r   r   rU   rV   c          
        s   ddddd t |tttfrJtjj |f|||dd|I d H }n2tjj fdd	|D f|||d
d|I d H }|jrt|jnd }|j	rt
|j	nd }|jrt
|jnd }	t||||	S )NrD   strr   c                 S  s&   t | }t|tr|S t |S d S rW   )osfspathr   r  fsdecode)r   Zstr_or_bytesr[   r[   r\   convert_itema  s    

z.TrioBackend.open_process.<locals>.convert_itemT)r   r   r   shellc                   s   g | ]} |qS r[   r[   ).0r   r  r[   r\   
<listcomp>s      z,TrioBackend.open_process.<locals>.<listcomp>F)r   r  r   r   r^   r   open_processr   r   r   r   r   r   )
rZ   r  r   r   r   rU   r   Zstdin_streamZstdout_streamZstderr_streamr[   r  r\   r  W  s4    
		zTrioBackend.open_processr   r   c                 C  s   t jt| d S rW   )r^   r   Zspawn_system_taskr   )rZ   r   r[   r[   r\   #setup_process_pool_exit_at_shutdown  s    z/TrioBackend.setup_process_pool_exit_at_shutdownr  zIPSockAddrType | Noner   )hostportlocal_addressrV   c                   s   d|v rt jnt j}tj  |}|t jt jd |rF||I d H  z|||fI d H  W n t	yz   |
   Y n0 t|S )N:r   )r   AF_INET6AF_INETr^   r  r  r  bindconnectr   r   r   )rZ   r  r  r  familyr   r[   r[   r\   connect_tcp  s    zTrioBackend.connect_tcpzstr | byteszabc.UNIXSocketStream)pathrV   c                   sH   t jtj}z||I d H  W n ty>   |   Y n0 t|S rW   )r^   r   AF_UNIXr  r   r   r   )rZ   r  r   r[   r[   r\   connect_unix  s    zTrioBackend.connect_unixr   zabc.SocketListener)sockrV   c                 C  s   t |S rW   )r  rZ   r  r[   r[   r\   create_tcp_listener  s    zTrioBackend.create_tcp_listenerc                 C  s   t |S rW   )r   r  r[   r[   r\   create_unix_listener  s    z TrioBackend.create_unix_listenerzsocket.AddressFamilyzUDPSocket | ConnectedUDPSocket)r  r  remote_address
reuse_portrV   c                   sd   t jj|tjd}|r(|tjtjd |r<||I d H  |rX||I d H  t|S t	|S d S )N)r  typer   )
r^   r   
SOCK_DGRAMr  r   SO_REUSEPORTr  r  r(  r!  )rZ   r  r  r  r  r   r[   r[   r\   create_udp_socket  s    zTrioBackend.create_udp_socketzabc.UNIXDatagramSocket)r  remote_pathrV   c                   s   d S rW   r[   rZ   r  r  r[   r[   r\   create_unix_datagram_socket  s    z'TrioBackend.create_unix_datagram_socketzabc.ConnectedUNIXDatagramSocketc                   s   d S rW   r[   r  r[   r[   r\   r    s    zstr | bytes | Nonez8abc.UNIXDatagramSocket | abc.ConnectedUNIXDatagramSocketc                   s4   t j|}|r(||I d H  t|S t|S d S rW   )r^   r   r  r  r,  r+  )rZ   r  r  r   r[   r[   r\   r    s
    r   )r  r  protor  zbytes | str | Nonezstr | int | Nonezint | AddressFamilyzint | SocketKindz]list[tuple[AddressFamily, SocketKind, int, str, tuple[str, int] | tuple[str, int, int, int]]])r  r  r  r  r  r  rV   c                  s   t j||||||I d H S rW   )r^   r   getaddrinfo)rZ   r  r  r  r  r  r  r[   r[   r\   r    s    zTrioBackend.getaddrinfor@   ztuple[str, str])sockaddrr  rV   c                   s   t j||I d H S rW   )r^   r   getnameinfo)rZ   r  r  r[   r[   r\   r    s    zTrioBackend.getnameinfozHasFileno | int)objrV   c              
     sj   zt |I d H  W nR tjyH } zt |jd W Y d }~n&d }~0  tjyd   tdd Y n0 d S )Nr   )r"   r^   r0   with_traceback__traceback__r/   rZ   r  r   r[   r[   r\   r"     s    $zTrioBackend.wait_readablec              
     sj   zt |I d H  W nR tjyH } zt |jd W Y d }~n&d }~0  tjyd   tdd Y n0 d S )Nr   )r#   r^   r0   r  r  r/   r  r[   r[   r\   r#     s    $zTrioBackend.wait_writablec                 C  s@   z
t  W S  ty:   ttj d}t | | Y S 0 d S )NrK  )rY  rk  LookupErrorr5   r^   	to_threadcurrent_default_thread_limiterr3  )rZ   r  r[   r[   r\   r    s    

z*TrioBackend.current_default_thread_limiterr   z.AbstractContextManager[AsyncIterator[Signals]])r\  rV   c                 G  s   t |S rW   )rZ  )rZ   r\  r[   r[   r\   r^    s    z TrioBackend.open_signal_receiverr*   c                 C  s   t  }t|S rW   )r!   rC  )rZ   r~  r[   r[   r\   get_current_task  s    zTrioBackend.get_current_taskzSequence[TaskInfo]c                 C  s`   t  }|sJ t|g}|j}|r\g }|D ]*}|jD ]}|t| ||j q4q*|}q|S rW   )r    rC  Zchild_nurseriesZchild_tasksr  extend)rZ   Z	root_taskZ
task_infosZ	nurseriesZnew_nurseriesZnurseryr~  r[   r[   r\   get_running_tasks  s    

zTrioBackend.get_running_tasksc                   s   ddl m} | I d H  d S )Nr   )wait_all_tasks_blocked)Ztrio.testingr  )rZ   r  r[   r[   r\   r  +  s    z"TrioBackend.wait_all_tasks_blockedrc  rd  c                 C  s   t f i |S rW   )rc  )rZ   re  r[   r[   r\   create_test_runner1  s    zTrioBackend.create_test_runner)FN)N)r   )-rz   r{   r|   classmethodr  r  r  r  r   r<  r  r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r"   r#   r  r^  r  r  r  r  r[   r[   r[   r\   r    s   		  ( 
  
r  )
__future__r   r   r   r  r   systypesr  collections.abcr   r   r   r   r   r   r	   r
   concurrent.futuresr   
contextlibr   dataclassesr   	functoolsr   ior   r   r   r   r   r   r   typingr   r   r   r   r   r   r   r   Ztrio.from_threadr^   Ztrio.lowlevelrp  r   r   r   r    r!   r"   r#   Ztrio.socketr$   r   Ztrio.to_threadr%    r'   r(   r)   r*   r+   r,   Z_core._eventloopr-   Z_core._exceptionsr.   r/   r0   r1   Z_core._socketsr2   Z_core._streamsr3   Z_core._synchronizationr5   ZBaseCapacityLimiterr7   Z	BaseEventr9   ZBaseLockr:   r;   r=   ZBaseSemaphoreZ_core._tasksr?   ZBaseCancelScoper@   rA   rB   Zabc._eventlooprC   rD   Zstreams.memoryrE   Z	_typeshedrF   version_inforI   Ztyping_extensionsrK   rL   ZexceptiongrouprM   rN   rO   r  rP   rQ   rR   r   ZRunVarr   r   ZByteReceiveStreamr   ZByteSendStreamr   r   Z
Instrumentr   r   r   r   r   r   r   ZSocketListenerr  r   r!  r(  r+  r,  rY  rZ  rc  rC  r  Zbackend_classr[   r[   r[   r\   <module>   s   (
( 6; 8!C

86L W  Y