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
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 d dlmZ d dlmZm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%m&Z& d d
l'm(Z(m)Z) d dl*m+Z+m,Z, d dl-m.Z.m/Z/m0Z0 d dl1m2Z2 d dlm3Z3 d dl4m5Z5 d dl6m7Z7 d dl	m8Z8m9Z9 d dlm:Z: d dl;m<Z<m=Z= d dl>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZE d dlmFZF ddlGmHZHmIZImJZJmKZKmLZL ddlMmNZNmOZOmPZP ddlQmRZRmSZSmTZTmUZUmVZVmWZW ddlXmYZY ddlZm[Z[ ddl\m]Z^ ddl\m_Z` ddl\maZb ddl\mcZcmdZd dd l\meZf dd!lgmhZi dd"lgmjZj dd#lLmkZkmlZlmmZmmnZnmoZo dd$lpmqZq dd%lrmsZsmtZt dd&lumvZv dd'lwmxZxmyZy e@�rkd d(lzm{Z{ ne|Z{e
j}d)k�r‚d d*lm~Z~ d d+l>mZm€Z€ n@d dlZd dl�Z�d dl6Z6d d,lm‚Z‚mƒZƒm„Z„m…Z… d d-l†m‡Z‡ d d+lˆmZm€Z€ G d.d/„ d/e�j‰ƒZŠG d0d1„ d1ƒZ~d¢d6d7„Z‹d¢d8d9„ZŒeDd:ƒZ�eDd;d<d=�ZŽeDd>d<d?�Z�ed@ƒZ�eCdAƒZ‘evdBƒZ’dCe“dB< d£dEdF„Z”eFƒ Z•dGe“dH< d¤dKdL„Z–d¥dOdP„Z—G dQdR„ dReiƒZhG dSdT„ dTƒZ˜eFƒ Z™dUe“dV< G dWdX„ dXeLjšƒZ›e
j}dYk�r&ejœj�ZždZe“d[< ndZžG d\d]„ d]eLjŸƒZŸe e�dB e¡dB f Z¢G d^d_„ d_e:ƒZ£evd`ƒZ¤dae“d`< evdbƒZ¥dce“db< e(ddde�G dfdg„ dgeLj¦ƒƒZ§e(ddde�G dhdi„ dieLj¨ƒƒZ©e(ddde�G djdk„ dkeLjªƒƒZªd¦dpdq„Z«d§dsdt„Z¬G dudv„ dvej­ƒZ®G dwdx„ dxej¯ƒZ¯G dydz„ dzeLj°ƒZ°G d{d|„ d|ƒZ±G d}d~„ d~e±eLj²ƒZ²G dd€„ d€eLjmƒZ³G d�d‚„ d‚eLjmƒZ´G dƒd„„ d„eLjµƒZµG d…d†„ d†eLj¶ƒZ¶G d‡dˆ„ dˆe±eLj·ƒZ·G d‰dŠ„ dŠe±eLj¸ƒZ¸evd‹ƒZ¹dŒe“d�< evdŽƒZºdŒe“d�< G d�d‘„ d‘e`ƒZ_G d’d“„ d“ebƒZaG d”d•„ d•efƒZeG d–d—„ d—e^ƒZ]evd˜ƒZ»d™e“d˜< G dšd›„ d›ƒZ¼G dœd�„ d�eKƒZ½G dždŸ„ dŸeLj¾ƒZ¾G d d¡„ d¡ekƒZ¿e¿ZÀdS )¨é    )ÚannotationsN)ÚAbstractEventLoopÚCancelledErrorÚ	all_tasksÚcreate_taskÚcurrent_taskÚget_running_loopÚsleep)Ú_run_until_complete_cb)ÚOrderedDictÚdeque)ÚAsyncGeneratorÚAsyncIteratorÚ	AwaitableÚCallableÚ
CollectionÚ	CoroutineÚIterableÚSequence)ÚFuture)ÚAbstractContextManager)ÚContextÚcopy_context)Ú	dataclassÚfield)ÚpartialÚwraps)ÚCORO_RUNNINGÚCORO_SUSPENDEDÚgetcoroutinestate)ÚIOBase)ÚPathLike)ÚQueue)ÚSignals)ÚAddressFamilyÚ
SocketKind)ÚThread)ÚCodeTypeÚTracebackType)ÚIOÚTYPE_CHECKINGÚAnyÚLiteralÚ	ParamSpecÚTypeVarÚcast)ÚWeakKeyDictionaryé   )ÚCapacityLimiterStatisticsÚEventStatisticsÚLockStatisticsÚTaskInfoÚabc)Úclaim_worker_threadÚset_current_async_libraryÚthreadlocals)ÚBrokenResourceErrorÚBusyResourceErrorÚClosedResourceErrorÚEndOfStreamÚRunFinishedErrorÚ
WouldBlock)Úconvert_ipv6_sockaddr)Úcreate_memory_object_stream©ÚCapacityLimiter©ÚEvent©ÚLock)ÚResourceGuardÚSemaphoreStatistics©Ú	Semaphore©ÚCancelScope)Ú
TaskHandle)ÚAsyncBackendÚIPSockAddrTypeÚSocketListenerÚUDPPacketTypeÚUNIXDatagramPacketType)ÚStrOrBytesPath)Úcall_for_coroutineÚget_callable_name)ÚRunVar)ÚMemoryObjectReceiveStreamÚMemoryObjectSendStream)ÚFileDescriptorLike©é   é   )ÚRunner)ÚTypeVarTupleÚUnpack)Ú
coroutinesÚeventsÚ
exceptionsÚtasks)ÚBaseExceptionGroupc                   @  s   e Zd ZdZdZdZdS )Ú_StateÚcreatedÚinitializedÚclosedN)Ú__name__Ú
__module__Ú__qualname__ÚCREATEDÚINITIALIZEDÚCLOSED© rp   rp   ú^/var/www/html/pharmsmart-cdr-gen/venv/lib/python3.10/site-packages/anyio/_backends/_asyncio.pyrf   }   s    rf   c                   @  sj   e Zd Zdddœd&dd„Zd'd
d„Zd(dd„Zd)dd„Zd*dd„Zddœd+dd„Zd)d d!„Z	d,d$d%„Z
dS )-r^   N©ÚdebugÚloop_factoryrs   úbool | Nonert   ú&Callable[[], AbstractEventLoop] | Nonec                C  s0   t j| _|| _|| _d | _d | _d| _d| _d S )Nr   F)	rf   rm   Ú_stateÚ_debugÚ_loop_factoryÚ_loopÚ_contextÚ_interrupt_countÚ_set_event_loop)Úselfrs   rt   rp   rp   rq   Ú__init__„   s   
zRunner.__init__Úreturnc                 C  s   |   ¡  | S ©N)Ú
_lazy_init©r~   rp   rp   rq   Ú	__enter__’   s   zRunner.__enter__Úexc_typeútype[BaseException] | NoneÚexc_valúBaseException | NoneÚexc_tbúTracebackType | NoneÚNonec                 C  s   |   ¡  d S r�   )Úclose©r~   r…   r‡   r‰   rp   rp   rq   Ú__exit__–   s   zRunner.__exit__c              	   C  s²   | j }| jtjus|du rdS z5t|ƒ | | ¡ ¡ t|dƒr(| | ¡ ¡ n| t	|ƒ¡ W | j
r8t d¡ | ¡  d| _ tj| _dS | j
rMt d¡ | ¡  d| _ tj| _w )zShutdown and close event loop.NÚshutdown_default_executor)rz   rw   rf   rn   Ú_cancel_all_tasksÚrun_until_completeÚshutdown_asyncgensÚhasattrr�   Ú_shutdown_default_executorr}   rb   Úset_event_looprŒ   ro   ©r~   Úlooprp   rp   rq   rŒ   ž   s(   
€
ü

zRunner.closer   c                 C  s   |   ¡  | jS )zReturn embedded event loop.)r‚   rz   rƒ   rp   rp   rq   Úget_loop±   s   zRunner.get_loop©ÚcontextÚcoroúCoroutine[T_Retval]ÚT_Retvalc             
   C  sb  t  |¡std|›�ƒ‚t ¡ durtdƒ‚|  ¡  |du r!| j}| | j	j
|¡}t ¡ t ¡ u rVt tj¡tju rVt| j|d�}z	t tj|¡ W n tyU   d}Y nw d}d| _z>z| j	 |¡W W |duryt tj¡|u rzt tjtj¡ S S S  tjy™   | jdkr˜t|ddƒ}|dur˜|ƒ dkr˜t‚‚ w |dur¯t tj¡|u r°t tjtj¡ w w w )z/Run a coroutine inside the embedded event loop.za coroutine was expected, got Nz7Runner.run() cannot be called from a running event loop)Ú	main_taskr   Úuncancel)ra   ÚiscoroutineÚ
ValueErrorrb   Ú_get_running_loopÚRuntimeErrorr‚   r{   Úrunrz   r   Ú	threadingÚcurrent_threadÚmain_threadÚsignalÚ	getsignalÚSIGINTÚdefault_int_handlerr   Ú
_on_sigintr|   r‘   rc   r   ÚgetattrÚKeyboardInterrupt)r~   r›   rš   ÚtaskÚsigint_handlerrŸ   rp   rp   rq   r¤   ¶   sV   
ÿÿþü	ÿþüù
ûÿþüz
Runner.runc                 C  sŠ   | j tju r
tdƒ‚| j tju rd S | jd u r)t ¡ | _| j	s(t 
| j¡ d| _	n|  ¡ | _| jd ur:| j | j¡ t ¡ | _tj| _ d S )NzRunner is closedT)rw   rf   ro   r£   rn   ry   rb   Únew_event_looprz   r}   r•   rx   Ú	set_debugÚcontextvarsr   r{   rƒ   rp   rp   rq   r‚   æ   s   

€


zRunner._lazy_initrž   úasyncio.Taskc                 C  sB   |  j d7  _ | j dkr| ¡ s| ¡  | j dd„ ¡ d S tƒ ‚)Né   c                   S  s   d S r�   rp   rp   rp   rp   rq   Ú<lambda>þ   s    z#Runner._on_sigint.<locals>.<lambda>)r|   ÚdoneÚcancelrz   Úcall_soon_threadsafer®   )r~   ÚsignumÚframerž   rp   rp   rq   r¬   ù   s   zRunner._on_sigint)rs   ru   rt   rv   )r€   r^   ©r…   r†   r‡   rˆ   r‰   rŠ   r€   r‹   ©r€   r‹   ©r€   r   )r›   rœ   r€   r�   )rž   r´   r€   r‹   )rj   rk   rl   r   r„   rŽ   rŒ   r˜   r¤   r‚   r¬   rp   rp   rp   rq   r^   ‚   s    ü




0r^   r—   r   r€   r‹   c                 C  st   t  | ¡}|s	d S |D ]}| ¡  q|  t j|ddiŽ¡ |D ]}| ¡ r&q| ¡ d ur7|  d| ¡ |dœ¡ qd S )NÚreturn_exceptionsTz1unhandled exception during asyncio.run() shutdown)ÚmessageÚ	exceptionr¯   )rd   r   r¸   r‘   ÚgatherÚ	cancelledrÁ   Úcall_exception_handler)r—   Ú	to_cancelr¯   rp   rp   rq   r�     s$   

ýÿ€ür�   c                 ƒ  sh   �d
‡ fdd„}dˆ _ ˆ jdu rdS ˆ  ¡ }tj||fd	�}| ¡  z|I dH  W | ¡  dS | ¡  w )z.Schedule the shutdown of the default executor.Úfutureúasyncio.futures.Futurer€   r‹   c              
     sX   zˆ j jdd� ˆ  | jd ¡ W d S  ty+ } zˆ  | j|¡ W Y d }~d S d }~ww )NT)Úwait)Ú_default_executorÚshutdownr¹   Ú
set_resultÚ	ExceptionÚset_exception)rÆ   Úex©r—   rp   rq   Ú_do_shutdown  s   €ÿz0_shutdown_default_executor.<locals>._do_shutdownTN)ÚtargetÚargs)rÆ   rÇ   r€   r‹   )Ú_executor_shutdown_calledrÉ   Úcreate_futurer¥   r&   ÚstartÚjoin)r—   rÐ   rÆ   Úthreadrp   rÏ   rq   r”     s   €
r”   r�   ÚT_coT)Ú	covariantÚT_contra)ÚcontravariantÚPosArgsTÚPÚ
_root_taskzRunVar[asyncio.Task | None]r´   c                  C  sÞ   t  d ¡} | d ur|  ¡ s| S tƒ D ]-}|jr?| ¡ s?dd„ |jD ƒ}|D ]}|tu s3t|dd ƒdkr>t  |¡ |    S q%qtt	j
tƒ ƒ}t |¡}|rm|j}|rb|jd urb|j}|rb|jd usX|d urmtt	j
|jƒS |S )Nc                 S  s   g | ]\}}|‘qS rp   rp   )Ú.0Úcbrš   rp   rp   rq   Ú
<listcomp>?  s    z"find_root_task.<locals>.<listcomp>rk   zuvloop.loop)rÞ   Úgetr·   r   Ú
_callbacksr
   r­   Úsetr/   ÚasyncioÚTaskr   Ú_task_statesÚcancel_scopeÚ_parent_scopeÚ
_host_task)Ú	root_taskr¯   Ú	callbacksrà   Ústaterè   rp   rp   rq   Úfind_root_task7  s2   

ÿþ
û€
ÿrî   z1WeakKeyDictionary[asyncio.AbstractEventLoop, Any]Ú	_run_varsr¯   Úboolc                 C  s$   |   ¡ }|dus
J ‚t|ƒttfv S )zBReturn ``True`` if the task has been started and has not finished.N)Úget_coror   r   r   )r¯   r›   rp   rp   rq   Ú_task_started]  s   rò   Úexcr   c                 C  sD   	 | j rt| j d tƒr| j d  d¡rdS t| jtƒr | j} q dS )NTr   úCancelled via cancel scope F)rÒ   Ú
isinstanceÚstrÚ
startswithÚ__context__r   ©ró   rp   rp   rq   Úis_anyio_cancellationk  s   ÿþýrú   c                   @  sè   e Zd ZdZejddœd3d	d
„Zejdfd4dd„Zd5dd„Zd6dd„Z	e
d7dd„ƒZe
d7dd„ƒZd8dd„Zd9dd „Zd8d!d"„Zd:d;d&d'„Ze
d<d(d)„ƒZejd=d+d)„ƒZe
d7d,d-„ƒZe
d7d.d/„ƒZe
d7d0d1„ƒZejd>d2d1„ƒZd#S )?rM   )Ú_activeÚ_cancel_calledÚ_cancel_handleÚ_cancel_reasonÚ_cancelled_caughtÚ_child_scopesÚ	_deadlinerê   ré   Ú_pending_uncancellationsÚ_shieldÚ_tasksÚ_timeout_handleF©ÚdeadlineÚshieldr  Úfloatr  rð   r€   c                C  ó
   t  | ¡S r�   ©ÚobjectÚ__new__©Úclsr  r  rp   rp   rq   r  �  s   
zCancelScope.__new__c                 C  sj   || _ || _d | _tƒ | _d| _d | _d| _d| _d | _	d | _
tƒ | _d | _tjdkr0d| _d S d | _d S )NFr[   r   )r  r  ré   rä   r   rü   rþ   rÿ   rû   r  rý   r  rê   ÚsysÚversion_infor  )r~   r  r  rp   rp   rq   r   ”  s   


zCancelScope.__init__c                 C  s¶   | j rtdƒ‚ttjtƒ ƒ | _}| j |¡ zt	| }W n t
y/   td | ƒ}|t	|< Y nw |j| _| |_| jd urJ| jj | ¡ | jj |¡ |  ¡  d| _ | jrY|  | ¡ | S )Nz;Each CancelScope may only be used for a single 'with' blockT)rû   r£   r/   rå   ræ   r   rê   r  Úaddrç   ÚKeyErrorÚ	TaskStaterè   ré   r   ÚdiscardÚ_timeoutrü   Ú_deliver_cancellation)r~   Ú	host_taskÚ
task_staterp   rp   rq   r„   ¦  s,   ÿ
þ

zCancelScope.__enter__r…   r†   r‡   rˆ   r‰   rŠ   c                 C  sØ  ~| j stdƒ‚tƒ | jurtdƒ‚| jd usJ ‚t | j¡}|d u s(|j| ur,tdƒ‚zºd| _ | jr;| j ¡  d | _| j	 
| j¡ | jd urV| jj 
| ¡ | jj	 | j¡ | j|_|  ¡  | jrÂ| jsÂ| jrv| j ¡  |  jd8  _| jsgt|tƒr¨| dd„ ¡\}}|d u r�W d | _~dS d| _|d u r�W d | _~dS |j}z|‚||_~w t|tƒr»t|ƒr»d| _W d | _~dS W d | _~dS | jrà| jd usÌJ ‚| jjd usÔJ ‚| j j| j7  _d	| _W d | _~dS d | _~w )
NzThis cancel scope is not activezIAttempted to exit cancel scope in a different task than it was entered inzTAttempted to exit a cancel scope that isn't the current tasks's current cancel scopeFrµ   c                 S  s   t | tƒot| ƒS r�   )rõ   r   rú   rù   rp   rp   rq   r¶   ú  s   
z&CancelScope.__exit__.<locals>.<lambda>Tr   )rû   r£   r   rê   rç   râ   rè   r  r¸   r  Úremoveré   r   r  Ú_restart_cancellation_in_parentrü   Ú%_parent_cancellation_is_visible_to_usr  rŸ   rõ   re   Úsplitrÿ   rø   r   rú   )r~   r…   r‡   r‰   Úhost_task_stateÚcancelleds_caughtÚ	remainingrš   rp   rp   rq   rŽ   Å  sŠ   ÿÿ


þ
ÿ#ÞãÿóõÿÿzCancelScope.__exit__c                 C  s2   | }|d ur|j rdS |jrdS |j}|d usdS ©NTF)rü   r  ré   )r~   rè   rp   rp   rq   Ú_effectively_cancelled'  s   ù	z"CancelScope._effectively_cancelledc                 C  s   | j d uo| j o| j jS r�   )ré   r  r"  rƒ   rp   rp   rq   r  5  s
   
ÿýz1CancelScope._parent_cancellation_is_visible_to_usr‹   c                 C  sH   | j tjkr"tƒ }| ¡ | j kr|  d¡ d S | | j | j¡| _d S d S )Nzdeadline exceeded)	r  ÚmathÚinfr   Útimer¸   Úcall_atr  r  r–   rp   rp   rq   r  =  s   ûzCancelScope._timeoutÚoriginc                 C  sÖ   d}t ƒ }| jD ]9}d}|jrq||urA|| ju st|ƒrA|j}t|tjƒr*| 	¡ sA| 
|j¡ ||ju rA|jdurA| jd7  _q| jD ]}|jsT|jsT| |¡pS|}qE|| u ri|rftƒ  | j|¡| _|S d| _|S )aZ  
        Deliver cancellation to directly contained tasks and nested cancel scopes.

        Schedule another run at the end if we still have tasks eligible for
        cancellation.

        :param origin: the cancel scope that originated the cancellation
        :return: ``True`` if the delivery needs to be retried on the next cycle

        FTNrµ   )r   r  Ú_must_cancelrê   rò   Ú_fut_waiterrõ   rå   r   r·   r¸   rþ   r  r   r  Úcancel_calledr  r   Ú	call_soonrý   )r~   r'  Úshould_retryÚcurrentr¯   ÚwaiterÚscoperp   rp   rq   r  E  s8   
ÿþ€
€ÿþz!CancelScope._deliver_cancellationc                 C  sL   | j }|dur$|jr|jdu r| |¡ dS |jrdS |j }|dusdS dS )zb
        Restart the cancellation effort in the closest directly cancelled parent scope.

        N)ré   rü   rý   r  r  ©r~   r/  rp   rp   rq   r  s  s   

õz+CancelScope._restart_cancellation_in_parentNÚreasonú
str | Nonec                 C  sŠ   | j sA| jr| j ¡  d | _d| _ dt| ƒd›�| _tƒ  }r)|  jd|› �7  _|r5|  jd|› �7  _| jd urC|  | ¡ d S d S d S )NTrô   Úxz by z
; reason: )rü   r  r¸   Úidrþ   r   rê   r  )r~   r1  r¯   rp   rp   rq   r¸   †  s   


òzCancelScope.cancelc                 C  ó   | j S r�   )r  rƒ   rp   rp   rq   r  —  ó   zCancelScope.deadlineÚvaluec                 C  sD   t |ƒ| _| jd ur| j ¡  d | _| jr| js |  ¡  d S d S d S r�   )r	  r  r  r¸   rû   rü   r  ©r~   r7  rp   rp   rq   r  ›  s   


ÿc                 C  r5  r�   )rü   rƒ   rp   rp   rq   r*  ¥  r6  zCancelScope.cancel_calledc                 C  r5  r�   )rÿ   rƒ   rp   rp   rq   Úcancelled_caught©  r6  zCancelScope.cancelled_caughtc                 C  r5  r�   )r  rƒ   rp   rp   rq   r  ­  r6  zCancelScope.shieldc                 C  s(   | j |kr|| _ |s|  ¡  d S d S d S r�   )r  r  r8  rp   rp   rq   r  ±  s   
ý©r  r	  r  rð   r€   rM   )r  r	  r  rð   )r€   rM   ©r…   r†   r‡   rˆ   r‰   rŠ   r€   rð   ©r€   rð   r½   )r'  rM   r€   rð   r�   )r1  r2  r€   r‹   ©r€   r	  ©r7  r	  r€   r‹   )r7  rð   r€   r‹   )rj   rk   rl   Ú	__slots__r#  r$  r  r   r„   rŽ   Úpropertyr"  r  r  r  r  r¸   r  Úsetterr*  r9  r  rp   rp   rp   rq   rM   ~  s6    ÿ

b


.	rM   c                   @  s   e Zd ZdZdZd
dd„Zd	S )r  z 
    Encapsulates auxiliary task information that cannot be added to the Task instance
    itself because there are no guarantees about its implementation.
    )Ú	parent_idrè   Ú__weakref__rB  ú
int | Nonerè   úCancelScope | Nonec                 C  ó   || _ || _d S r�   ©rB  rè   )r~   rB  rè   rp   rp   rq   r   Æ  ó   
zTaskState.__init__N)rB  rD  rè   rE  )rj   rk   rl   Ú__doc__r?  r   rp   rp   rp   rq   r  ¾  s    r  z*WeakKeyDictionary[asyncio.Task, TaskState]rç   c                   @  s"   e Zd Zddd„Zdddd„ZdS )Ú_AsyncioTaskStatusrÆ   úasyncio.FuturerB  Úintc                 C  rF  r�   )Ú_futureÚ
_parent_id)r~   rÆ   rB  rp   rp   rq   r   Ô  rH  z_AsyncioTaskStatus.__init__Nr7  úT_contra | Noner€   r‹   c                 C  sX   z| j  |¡ W n tjy   | j  ¡ stdƒd ‚Y nw ttjtƒ ƒ}| j	t
| _d S )Nz.called 'started' twice on the same task status)rM  rË   rå   ÚInvalidStateErrorrÃ   r£   r/   ræ   r   rN  rç   rB  )r~   r7  r¯   rp   rp   rq   ÚstartedØ  s   
ÿþÿÿz_AsyncioTaskStatus.started)rÆ   rK  rB  rL  r�   )r7  rO  r€   r‹   )rj   rk   rl   r   rQ  rp   rp   rp   rq   rJ  Ó  s    
rJ  ©r\   é   zCodeType | NoneÚ_eager_task_factory_codec                   @  s\   e Zd Zd*dd„Zd+dd„Zd,dd„Z	d-d.dd„Zdddœd/dd„Zddd œd0d(d)„ZdS )1Ú	TaskGroupr€   r‹   c                 C  s&   t ƒ | _d| _g | _tƒ | _d | _d S )NF)rM   rè   Ú_enteredÚ_exceptionsrä   r  Ú_on_completed_futrƒ   rp   rp   rq   r   ì  s
   
zTaskGroup.__init__c                 Ã  s$   �| j rtdƒ‚d| _ | j ¡  | S )Nz*TaskGroup cannot be entered more than onceT)rV  r£   rè   r„   rƒ   rp   rp   rq   Ú
__aenter__ó  s   €
zTaskGroup.__aenter__r…   r†   r‡   rˆ   r‰   rŠ   rð   c                 Ã  s|  �z·|d ur| j  ¡  t|tƒs| j |¡ tƒ }zn| jrqtƒ �H}| jra| 	¡ | _
z| j
I d H  W n) tyZ } zd|_| j  ¡  |d u sNt|tƒrPt|ƒsP|}W Y d }~nd }~ww d | _
| js$W d   ƒ n1 skw   Y  nt ¡ I d H  | jr‚td| jƒd ‚|r†|‚W n$ ty« } z| j  t|ƒ||j¡r¦W Y d }~W ~~| `dS ‚ d }~ww | j  |||¡W ~~| `S ~~| `w )NTzunhandled errors in a TaskGroup)rè   r¸   rõ   r   rW  Úappendr   r  rM   rÔ   rX  r  rú   ÚAsyncIOBackendÚcancel_shielded_checkpointre   ÚBaseExceptionrŽ   ÚtypeÚ__traceback__)r~   r…   r‡   r‰   r—   Ú
wait_scoperó   rp   rp   rq   Ú	__aexit__ü  sb   €



ÿþ€óì€ÿ€ÿþÿü€üzTaskGroup.__aexit__Nr›   úCoroutine[Any, Any, T_co]Únamer  Útask_status_futureúasyncio.Future | NoneúTaskHandle[T_co]c                   s   d‡ ‡‡fdd„}ˆrt tƒ ƒ}nt ˆ jjƒ}t||ƒ}t ¡ }| ¡ }| ¡  }	rHt	|	dd ƒt
u rHt	|	dd ƒ }
rH|
d	 j}||||jd
�‰n|j||jd�‰t|ˆ jd�tˆ< ˆ jj ˆ¡ ˆ j ˆ¡ tjdkryˆ jjd uryt ˆˆ jj¡ ˆ |¡ |S )NÚ_taskr´   r€   r‹   c              
     sŠ  t jdkrˆ jjd urt | ˆ jj¡ t|  }|jd usJ ‚| |jjv s&J ‚|jj | ¡ ˆ j ˆ¡ t| = ˆ j	d urQˆ jsQzˆ j	 
d ¡ W n
 tjyP   Y nw z|  ¡ }W n# tyz } zt|jtƒrn|j}t|jtƒse|}W Y d }~nd }~ww |d ur°ˆd ur‰ˆ ¡ r‰d S ˆd u s‘ˆ ¡ r©t|tƒsœˆ j |¡ ˆ jjs§ˆ j ¡  d S d S ˆ |¡ d S ˆd urÁˆ ¡ sÃˆ tdƒ¡ d S d S d S )N©r\   é   z2Child exited without calling task_status.started())r  r  rè   rê   rå   Úfuture_discard_from_awaited_byrç   r  r  rX  rË   rP  rÁ   r   rõ   rø   rÃ   r·   rW  rZ  r"  r¸   rÍ   r£   )rg  r  ró   Úe©r~   r¯   rd  rp   rq   Ú	task_done@  sP   ÿÿÿ€ü
ÿÿÿz#TaskGroup._spawn.<locals>.task_doneÚ__code__Ú__closure__r   )r—   rc  ©rc  rG  rh  )rg  r´   r€   r‹   )r4  r   rè   rê   rN   rå   r   Ú	_run_coroÚget_task_factoryr­   rT  Úcell_contentsrc  r   r  rç   r  r  r  r  Úfuture_add_to_awaited_byÚadd_done_callback)r~   r›   rc  rd  rm  rB  Úhandler—   Úwrapper_coroÚfactoryÚclosureÚcustom_task_constructorrp   rl  rq   Ú_spawn:  s2   /

ÿþý

ÿ
zTaskGroup._spawn)rc  rš   rš   úContext | Nonec                C  sb   t |tƒstd|jj› �ƒ‚| jr| jjs| ¡  t	dƒ‚|d ur*|j
| j||d�S | j||d�S )Nzexpected a coroutine, got ú;This task group is not active; no new tasks can be started.rp  )rõ   r   Ú	TypeErrorÚ	__class__rl   rV  rè   rû   rŒ   r£   r¤   r{  )r~   r›   rc  rš   rp   rp   rq   r   �  s   
ÿzTaskGroup.create_taskF)rc  Úreturn_handleÚfuncú7Callable[[Unpack[PosArgsT]], Coroutine[Any, Any, T_co]]rÒ   úUnpack[PosArgsT]r€  úLiteral[False] | Literal[True]r+   c          
      Ç  sà   �| j r| jjstdƒ‚t ¡ }t||ƒ}t|t| jj	ƒƒ}t
|||d�}|  |||¡}	z|I d H  W n/ tyb   |	jtjju ra|	 ¡  tdd�� |	 ¡ I d H  W d   ƒ ‚ 1 s\w   Y  ‚ w |rl| ¡ |	_|	S | ¡ S )Nr}  )Útask_statusT©r  )rV  rè   rû   r£   rå   r   rV   rJ  r4  rê   rU   r{  r]  ÚstatusrN   ÚStatusÚPENDINGr¸   rM   rÈ   ÚresultÚ_start_value)
r~   r�  rc  r€  rÒ   rÆ   Ú
final_namer…  r›   rv  rp   rp   rq   rÕ   ¢  s4   €ÿ

ÿýù	
zTaskGroup.startr½   )r€   rU  r;  r�   )r›   rb  rc  r  rd  re  r€   rf  )r›   rb  rc  r  rš   r|  r€   rf  )
r�  r‚  rÒ   rƒ  rc  r  r€  r„  r€   r+   )	rj   rk   rl   r   rY  ra  r{  r   rÕ   rp   rp   rp   rq   rU  ë  s    


	BüWûûrU  c                      sB   e Zd ZdZd‡ fdd	„Zddd„Zddd„Zdddd„Z‡  ZS ) ÚWorkerThreadé
   rë   r´   Úworkersúset[WorkerThread]Úidle_workersúdeque[WorkerThread]c                   sF   t ƒ jdd� || _|| _|| _|j| _tdƒ| _t	 
¡ | _d| _d S )NzAnyIO worker threadrp  r1   F)Úsuperr   rë   r�  r‘  rz   r—   r"   Úqueuer[  Úcurrent_timeÚ
idle_sinceÚstopping)r~   rë   r�  r‘  ©r  rp   rq   r   Ô  s   þ

zWorkerThread.__init__rÆ   rK  rŠ  r+   ró   rˆ   r€   r‹   c                 C  sh   t  ¡ | _| js| j | ¡ | ¡ s2|d ur+t|tƒr$t	dƒ}||_
|}| |¡ d S | |¡ d S d S )Nzcoroutine raised StopIteration)r[  r•  r–  r—  r‘  rZ  rÃ   rõ   ÚStopIterationr£   Ú	__cause__rÍ   rË   )r~   rÆ   rŠ  ró   Únew_excrp   rp   rq   Ú_report_resultå  s   

÷zWorkerThread._report_resultc           
      C  sö   t t| jƒ�k 	 | j ¡ }|d u r	 W d   ƒ d S |\}}}}}| ¡ sed }d }|t_z$z|j|g|¢R Ž }W n t	yL }	 z|	}W Y d }	~	nd }	~	ww W t`nt`w | j 
¡ sc| j | j|||¡ ~~| j ¡  ~~~~~~q1 stw   Y  d S r�   )r7   r[  r—   r”  râ   rÃ   r9   Úcurrent_cancel_scoper¤   r]  Ú	is_closedr¹   rœ  rm  )
r~   Úitemrš   r�  rÒ   rÆ   rè   rŠ  rÁ   ró   rp   rp   rq   r¤   ÷  s8   
û€ÿ€

ÿ
æÿzWorkerThread.runNÚfúasyncio.Task | Nonec                 C  sF   d| _ | j d ¡ | j | ¡ z	| j | ¡ W d S  ty"   Y d S w ©NT)r—  r”  Ú
put_nowaitr�  r  r‘  r  r¡   )r~   r   rp   rp   rq   Ústop  s   ÿzWorkerThread.stop)rë   r´   r�  r�  r‘  r’  )rÆ   rK  rŠ  r+   ró   rˆ   r€   r‹   r½   r�   )r   r¡  r€   r‹   )	rj   rk   rl   ÚMAX_IDLE_TIMEr   rœ  r¤   r¤  Ú__classcell__rp   rp   r˜  rq   r�  Ñ  s    

r�  Ú_threadpool_idle_workerszRunVar[deque[WorkerThread]]Ú_threadpool_workerszRunVar[set[WorkerThread]]F)Úeqc                   @  s,   e Zd ZU ded< dddd	„Zddd„ZdS )ÚStreamReaderWrapperzasyncio.StreamReaderÚ_streamé   Ú	max_bytesrL  r€   Úbytesc                 Ã  s    �| j  |¡I d H }|r|S t‚r�   )r«  Úreadr=   )r~   r­  Údatarp   rp   rq   Úreceive.  s
   €zStreamReaderWrapper.receiver‹   c                 Ã  s"   �| j  tƒ ¡ t ¡ I d H  d S r�   )r«  rÍ   r<   r[  Ú
checkpointrƒ   rp   rp   rq   Úaclose5  s   €zStreamReaderWrapper.acloseN©r¬  ©r­  rL  r€   r®  r½   )rj   rk   rl   Ú__annotations__r±  r³  rp   rp   rp   rq   rª  *  s   
 rª  c                   @  s>   e Zd ZU ded< eddd�Zded< ddd„Zddd„ZdS )ÚStreamWriterWrapperzasyncio.StreamWriterr«  F)ÚinitÚdefaultrð   Ú_closedrŸ  r®  r€   r‹   c              
   Ã  s’   �t  ¡ I d H  | jjj}z| j |¡ | j ¡ I d H  W n ttt	fy; } z| j
r.t|‚| j ¡ r6t|‚‚ d }~ww |sGt  ¡ I d H  d S d S r�   )r[  Úcheckpoint_if_cancelledr«  Ú	_protocolÚ_pausedÚwriteÚdrainÚConnectionResetErrorÚBrokenPipeErrorr£   rº  r<   Ú
is_closingr:   r\  )r~   rŸ  Ústream_pausedró   rp   rp   rq   Úsend?  s"   €

€÷ÿzStreamWriterWrapper.sendc                 Ã  s$   �d| _ | j ¡  t ¡ I d H  d S r¢  )rº  r«  rŒ   r[  r²  rƒ   rp   rp   rq   r³  S  s   €
zStreamWriterWrapper.acloseN©rŸ  r®  r€   r‹   r½   )rj   rk   rl   r¶  r   rº  rÄ  r³  rp   rp   rp   rq   r·  :  s
   
 
r·  c                   @  s¦   e Zd ZU ded< ded< ded< ded< d$d
d„Zd%dd„Zd$dd„Zd$dd„Zd&dd„Ze	d%dd„ƒZ
e	d'dd„ƒZe	d(dd„ƒZe	d)dd „ƒZe	d)d!d"„ƒZd#S )*ÚProcesszasyncio.subprocess.ProcessÚ_processzStreamWriterWrapper | NoneÚ_stdinzStreamReaderWrapper | NoneÚ_stdoutÚ_stderrr€   r‹   c              	   Ã  sº   �t dd��M}| jr| j ¡ I d H  | jr| j ¡ I d H  | jr(| j ¡ I d H  d|_z	|  ¡ I d H  W n tyJ   d|_|  ¡  |  ¡ I d H  ‚ w W d   ƒ d S 1 sVw   Y  d S )NTr†  F)	rM   rÈ  r³  rÉ  rÊ  r  rÈ   r]  Úkillr0  rp   rp   rq   r³  `  s&   €üÿ"özProcess.acloserL  c                 Ã  s   �| j  ¡ I d H S r�   )rÇ  rÈ   rƒ   rp   rp   rq   rÈ   r  s   €zProcess.waitc                 C  ó   | j  ¡  d S r�   )rÇ  Ú	terminaterƒ   rp   rp   rq   rÍ  u  ó   zProcess.terminatec                 C  rÌ  r�   )rÇ  rË  rƒ   rp   rp   rq   rË  x  rÎ  zProcess.killr¨   c                 C  s   | j  |¡ d S r�   )rÇ  Úsend_signal)r~   r¨   rp   rp   rq   rÏ  {  ó   zProcess.send_signalc                 C  ó   | j jS r�   )rÇ  Úpidrƒ   rp   rp   rq   rÒ  ~  ó   zProcess.pidrD  c                 C  rÑ  r�   )rÇ  Ú
returncoderƒ   rp   rp   rq   rÔ  ‚  rÓ  zProcess.returncodeúabc.ByteSendStream | Nonec                 C  r5  r�   )rÈ  rƒ   rp   rp   rq   Ústdin†  r6  zProcess.stdinúabc.ByteReceiveStream | Nonec                 C  r5  r�   )rÉ  rƒ   rp   rp   rq   ÚstdoutŠ  r6  zProcess.stdoutc                 C  r5  r�   )rÊ  rƒ   rp   rp   rq   ÚstderrŽ  r6  zProcess.stderrNr½   ©r€   rL  )r¨   rL  r€   r‹   ©r€   rD  )r€   rÕ  )r€   r×  )rj   rk   rl   r¶  r³  rÈ   rÍ  rË  rÏ  r@  rÒ  rÔ  rÖ  rØ  rÙ  rp   rp   rp   rq   rÆ  Y  s(   
 




rÆ  r�  úset[Process]rg  r  c                 C  s’   d}t jdk rzt ¡  ¡ }W n	 ty   Y nw |  ¡ D ])}|jdur%q|jj	j
 ¡  |jj	j
 ¡  |jj	j
 ¡  | ¡  |rF| |j¡ qdS )zG
    Forcibly shuts down worker processes belonging to this event loop.NrR  )r  r  rå   Úget_event_loop_policyÚget_child_watcherÚNotImplementedErrorÚcopyrÔ  rÈ  r«  Ú
_transportrŒ   rÉ  rÊ  rË  Úremove_child_handlerrÒ  )r�  rg  Úchild_watcherÚprocessrp   rp   rq   Ú'_forcibly_shutdown_process_pool_on_exit“  s$   
ÿ
€÷rå  úset[abc.Process]c                 Ã  sl   �zt tjƒI dH  W dS  tjy5   |  ¡ } | D ]}|jdu r%| ¡  q| D ]	}| ¡ I dH  q(Y dS w )z§
    Shuts down worker processes belonging to this event loop.

    NOTE: this only works when the event loop was started using asyncio.run() or
    anyio.run().

    N)	r	   r#  r$  rå   r   rà  rÔ  rË  r³  )r�  rä  rp   rp   rq   Ú_shutdown_process_pool_on_exit¬  s   €	
€ÿúrç  c                   @  sz   e Zd ZU ded< ded< ded< dZded< d	Zd
ed< 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 )%ÚStreamProtocolzdeque[bytes]Ú
read_queueúasyncio.EventÚ
read_eventÚwrite_eventNúException | NonerÁ   Frð   Ú	is_at_eofÚ	transportúasyncio.BaseTransportr€   r‹   c                 C  s<   t ƒ | _t ¡ | _t ¡ | _| j ¡  ttj|ƒ 	d¡ d S ©Nr   )
r   ré  rå   rE   rë  rì  rä   r/   Ú	TransportÚset_write_buffer_limits©r~   rï  rp   rp   rq   Úconnection_madeÍ  s
   


zStreamProtocol.connection_maderó   c                 C  s"   |r|| _ | j ¡  | j ¡  d S r�   )rÁ   rë  rä   rì  ©r~   ró   rp   rp   rq   Úconnection_lostÔ  s   
zStreamProtocol.connection_lostr°  r®  c                 C  s   | j  t|ƒ¡ | j ¡  d S r�   )ré  rZ  r®  rë  rä   )r~   r°  rp   rp   rq   Údata_receivedÛ  s   zStreamProtocol.data_receivedru   c                 C  s   d| _ | j ¡  dS r¢  )rî  rë  rä   rƒ   rp   rp   rq   Úeof_receivedà  s   
zStreamProtocol.eof_receivedc                 C  ó   t  ¡ | _d S r�   )rå   rE   rì  rƒ   rp   rp   rq   Úpause_writingå  rÎ  zStreamProtocol.pause_writingc                 C  rÌ  r�   ©rì  rä   rƒ   rp   rp   rq   Úresume_writingè  rÎ  zStreamProtocol.resume_writing©rï  rð  r€   r‹   ©ró   rí  r€   r‹   )r°  r®  r€   r‹   )r€   ru   r½   )rj   rk   rl   r¶  rÁ   rî  rõ  r÷  rø  rù  rû  rý  rp   rp   rp   rq   rè  Æ  s   
 




rè  c                   @  sv   e Zd ZU ded< ded< ded< ded< dZded	< 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 )%ÚDatagramProtocolz#deque[tuple[bytes, IPSockAddrType]]ré  rê  rë  rì  Úclosed_eventNrí  rÁ   rï  rð  r€   r‹   c                 C  s8   t dd�| _t ¡ | _t ¡ | _t ¡ | _| j ¡  d S )Néd   )Úmaxlen)r   ré  rå   rE   rë  rì  r  rä   rô  rp   rp   rq   rõ  ó  s
   


z DatagramProtocol.connection_maderó   c                 C  s"   | j  ¡  | j ¡  | j ¡  d S r�   )rë  rä   rì  r  rö  rp   rp   rq   r÷  ú  s   

z DatagramProtocol.connection_lostr°  r®  ÚaddrrP   c                 C  s&   t |ƒ}| j ||f¡ | j ¡  d S r�   )r@   ré  rZ  rë  rä   )r~   r°  r  rp   rp   rq   Údatagram_receivedÿ  s   z"DatagramProtocol.datagram_receivedrÌ   c                 C  s
   || _ d S r�   )rÁ   rö  rp   rp   rq   Úerror_received  ó   
zDatagramProtocol.error_receivedc                 C  rÌ  r�   )rì  Úclearrƒ   rp   rp   rq   rû    rÎ  zDatagramProtocol.pause_writingc                 C  rÌ  r�   rü  rƒ   rp   rp   rq   rý  
  rÎ  zDatagramProtocol.resume_writingrþ  rÿ  )r°  r®  r  rP   r€   r‹   )ró   rÌ   r€   r‹   r½   )rj   rk   rl   r¶  rÁ   rõ  r÷  r  r  rû  rý  rp   rp   rp   rq   r   ì  s   
 




r   c                   @  sN   e Zd Zddd„Zedd	d
„ƒZdddd„Zddd„Zddd„Zddd„Z	dS ) ÚSocketStreamrï  úasyncio.TransportÚprotocolrè  c                 C  ó*   || _ || _tdƒ| _tdƒ| _d| _d S ©Núreading fromú
writing toF©rá  r¼  rH   Ú_receive_guardÚ_send_guardrº  ©r~   rï  r  rp   rp   rq   r     s
   


zSocketStream.__init__r€   úsocket.socketc                 C  ó   | j  d¡S ©NÚsocket©rá  Úget_extra_inforƒ   rp   rp   rq   Ú_raw_socket  ó   zSocketStream._raw_socketr¬  r­  rL  r®  c              	   Ã  s  �| j �� | jj ¡ s(| j ¡ s(| jjs(| j ¡  | jj ¡ I d H  | j 	¡  nt
 ¡ I d H  z| jj ¡ }W n tyP   | jrDtd ‚| jjrMt| jj‚td ‚w t|ƒ|krk|d |… ||d … }}| jj |¡ | jjs}| jj ¡  W d   ƒ |S W d   ƒ |S 1 sˆw   Y  |S r�   )r  r¼  rë  Úis_setrá  rÂ  rî  Úresume_readingrÈ   Úpause_readingr[  r²  ré  ÚpopleftÚ
IndexErrorrº  r<   rÁ   r:   r=   ÚlenÚ
appendleftr  )r~   r­  ÚchunkÚleftoverrp   rp   rq   r±    sB   €
ÿþý

ú
â ý
ã à zSocketStream.receiverŸ  r‹   c                 Ã  sª   �| j �G t ¡ I d H  | jrt‚| jjd urt| jj‚z| j 	|¡ W n t
y9 } z	| j ¡ r4t|‚‚ d }~ww | jj ¡ I d H  W d   ƒ d S 1 sNw   Y  d S r�   )r  r[  r²  rº  r<   r¼  rÁ   r:   rá  r¾  r£   rÂ  rì  rÈ   )r~   rŸ  ró   rp   rp   rq   rÄ  =  s"   €

€ü"ðzSocketStream.sendc                 Ã  s(   �z| j  ¡  W d S  ty   Y d S w r�   )rá  Ú	write_eofÚOSErrorrƒ   rp   rp   rq   Úsend_eofP  s   €ÿzSocketStream.send_eofc                 Ã  s^   �d| _ | j ¡ s-z| j ¡  W n	 ty   Y nw | j ¡  tdƒI d H  | j ¡  d S d S ©NTr   )rº  rá  rÂ  r%  r&  rŒ   r	   Úabortrƒ   rp   rp   rq   r³  V  s   €
ÿ
øzSocketStream.acloseN)rï  r
  r  rè  ©r€   r  r´  rµ  rÅ  r½   )
rj   rk   rl   r   r@  r  r±  rÄ  r'  r³  rp   rp   rp   rq   r	    s    

#
r	  c                   @  s`   e Zd ZU dZded< dZded< dZddd	„Zeddd„ƒZ	ddd„Z
ddd„Zddd„ZdS )Ú_RawSocketMixinNre  Ú_receive_futureÚ_send_futureFÚ
raw_socketr  c                 C  s   || _ tdƒ| _tdƒ| _d S )Nr  r  )Ú_RawSocketMixin__raw_socketrH   r  r  ©r~   r.  rp   rp   rq   r   h  s   
z_RawSocketMixin.__init__r€   c                 C  r5  r�   )r/  rƒ   rp   rp   rq   r  m  r6  z_RawSocketMixin._raw_socketr—   úasyncio.AbstractEventLooprK  c                   ó>   d‡ ‡fdd„}t  ¡  }ˆ_ˆ  ˆj|jd ¡ | |¡ |S )Nr   r  r€   r‹   c                   ó   ˆ` ˆ  ˆj¡ d S r�   )r,  Úremove_readerr/  ©r   ©r—   r~   rp   rq   Úcallbackr  ó   z6_RawSocketMixin._wait_until_readable.<locals>.callback©r   r  r€   r‹   )rå   r   r,  Ú
add_readerr/  rË   ru  ©r~   r—   r7  r   rp   r6  rq   Ú_wait_until_readableq  ó
   
z$_RawSocketMixin._wait_until_readablec                   r2  )Nr   r  r€   r‹   c                   r3  r�   )r-  Úremove_writerr/  r5  r6  rp   rq   r7  |  r8  z6_RawSocketMixin._wait_until_writable.<locals>.callbackr9  )rå   r   r-  Ú
add_writerr/  rË   ru  r;  rp   r6  rq   Ú_wait_until_writable{  r=  z$_RawSocketMixin._wait_until_writabler‹   c                 Ã  sV   �| j s'd| _ | j ¡ dkr| j ¡  | jr| j d ¡ | jr)| j d ¡ d S d S d S )NTéÿÿÿÿ)Ú_closingr/  ÚfilenorŒ   r,  rË   r-  rƒ   rp   rp   rq   r³  …  s   €
øz_RawSocketMixin.aclose©r.  r  r*  )r—   r1  r€   rK  r½   )rj   rk   rl   r,  r¶  r-  rB  r   r@  r  r<  r@  r³  rp   rp   rp   rq   r+  c  s   
 




r+  c                   @  s@   e Zd Zddd„Zddd	d
„Zddd„Zddd„Zddd„ZdS )ÚUNIXSocketStreamr€   r‹   c                 Ã  s<   �| j � | j tj¡ W d   ƒ d S 1 sw   Y  d S r�   )r  r  rÊ   r  ÚSHUT_WRrƒ   rp   rp   rq   r'  ’  s   €"ÿzUNIXSocketStream.send_eofr¬  r­  rL  r®  c                 Ã  s¬   �t ƒ }t ¡ I d H  | j�> 	 z| j |¡}W n% ty)   |  |¡I d H  Y n" ty= } z	| j	r6t
d ‚t|‚d }~ww |sBt‚|W  d   ƒ S q1 sOw   Y  d S r�   )r   r[  r²  r  r  ÚrecvÚBlockingIOErrorr<  r&  rB  r<   r:   r=   )r~   r­  r—   r°  ró   rp   rp   rq   r±  –  s*   €€üñÿzUNIXSocketStream.receiverŸ  c                 Ã  sÊ   �t ƒ }t ¡ I d H  | j�M t|ƒ}|rSz| j |¡}W n% ty.   |  |¡I d H  Y n t	yB } z	| j
r;td ‚t|‚d }~ww ||d … }|sW d   ƒ d S W d   ƒ d S 1 s^w   Y  d S r�   )r   r[  r²  r  Ú
memoryviewr  rÄ  rH  r@  r&  rB  r<   r:   )r~   rŸ  r—   ÚviewÚ
bytes_sentró   rp   rp   rq   rÄ  ª  s*   €€üõþ"þzUNIXSocketStream.sendÚmsglenÚmaxfdsútuple[bytes, list[int]]c                 Ã  sl  �t |tƒr
|dk rtdƒ‚t |tƒr|dk rtdƒ‚tƒ }t d¡}t ¡ I d H  | j�J 	 z| j 	|t
 ||j ¡¡\}}}}W n% tyS   |  |¡I d H  Y n tyg }	 z	| jr`td ‚t|	‚d }	~	ww |sn|snt‚nq/W d   ƒ n1 szw   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ÚiTz.Received unexpected ancillary data; message = z, cmsg_level = z, cmsg_type = )rõ   rL  r¡   r   Úarrayr[  r²  r  r  Úrecvmsgr  ÚCMSG_LENÚitemsizerH  r<  r&  rB  r<   r:   r=   Ú
SOL_SOCKETÚ
SCM_RIGHTSr£   Ú	frombytesr!  Úlist)r~   rL  rM  r—   ÚfdsrÀ   ÚancdataÚflagsr  ró   Ú
cmsg_levelÚ	cmsg_typeÚ	cmsg_datarp   rp   rq   Úreceive_fds¼  sN   €
ÿ€üðïÿÿÿ&zUNIXSocketStream.receive_fdsrÀ   rX  úCollection[int | IOBase]c                 Ã  s  �|st dƒ‚|st dƒ‚tƒ }g }|D ]}t|tƒr!| |¡ qt|tƒr-| | ¡ ¡ qt d|¡}t 	¡ I d H  | j
�A 	 z| j |gtjtj|fg¡ W n& tya   |  |¡I d H  Y n tyu } z	| jrntd ‚t|‚d }~ww q@W d   ƒ d S 1 s‚w   Y  d S )Nzmessage must not be emptyzfds must not be emptyrO  )r¡   r   rõ   rL  rZ  r    rC  rP  r[  r²  r  r  Úsendmsgr  rT  rU  rH  r@  r&  rB  r<   r:   )r~   rÀ   rX  r—   ÚfilenosÚfdÚfdarrayró   rp   rp   rq   Úsend_fdsã  sB   €

€ÿ€üö"øzUNIXSocketStream.send_fdsNr½   r´  rµ  rÅ  )rL  rL  rM  rL  r€   rN  )rÀ   r®  rX  r_  r€   r‹   )rj   rk   rl   r'  r±  rÄ  r^  rd  rp   rp   rp   rq   rE  ‘  s    


'rE  c                   @  sJ   e Zd ZU dZded< dZddd„Zedd
d„ƒZddd„Z	ddd„Z
dS )ÚTCPSocketListenerNrE  Ú_accept_scopeFr.  r  c                 C  s$   || _ ttjtƒ ƒ| _tdƒ| _d S )Núaccepting connections from)Ú_TCPSocketListener__raw_socketr/   rå   ÚBaseEventLoopr   rz   rH   Ú_accept_guardr0  rp   rp   rq   r   	  s   zTCPSocketListener.__init__r€   c                 C  r5  r�   )rh  rƒ   rp   rp   rq   r    r6  zTCPSocketListener._raw_socketúabc.SocketStreamc                 Ã  s  �| j rt‚| j�` t ¡ I d H  tƒ �F| _z8z| j | j	¡I d H \}}W n$ t
jyI   z	| j | j	¡ W n ttfyA   Y nw | j rHtd ‚‚ w W d | _nd | _w W d   ƒ n1 s]w   Y  W d   ƒ n1 slw   Y  | tjtjd¡ | j t|¡I d H \}}t||ƒS ©Nrµ   )rº  r<   rj  r[  r²  rM   rf  rz   Úsock_acceptr  rå   r   r4  r¡   rß  Ú
setsockoptr  ÚIPPROTO_TCPÚTCP_NODELAYÚconnect_accepted_socketrè  r	  )r~   Úclient_sockÚ_addrrï  r  rp   rp   rq   Úaccept  s8   €
ÿöÿñ€þÿ
zTCPSocketListener.acceptr‹   c              	   Ã  sh   �| j rd S d| _ | jr-z	| j | j¡ W n ttfy    Y nw | j ¡  tdƒI d H  | j 	¡  d S r(  )
rº  rf  rz   r4  r  r¡   rß  r¸   r	   rŒ   rƒ   rp   rp   rq   r³  /  s   €ÿ
zTCPSocketListener.acloserD  r*  ©r€   rk  r½   )rj   rk   rl   rf  r¶  rº  r   r@  r  rt  r³  rp   rp   rp   rq   re    s   
 

re  c                   @  s8   e Zd Zddd„Zddd„Zdd
d„Zeddd„ƒZdS )ÚUNIXSocketListenerr.  r  c                 C  s"   || _ tƒ | _tdƒ| _d| _d S )Nrg  F)Ú_UNIXSocketListener__raw_socketr   rz   rH   rj  rº  r0  rp   rp   rq   r   B  s   

zUNIXSocketListener.__init__r€   rk  c                 ƒ  sÔ   �t  ¡ I d H  ˆ j�U 	 zˆ j ¡ \}}| d¡ t|ƒW W  d   ƒ S  tyJ   t 	¡ }ˆ j
 ˆ j|jd ¡ | ‡ fdd„¡ |I d H  Y n ty^ } z	ˆ jrWtd ‚t|‚d }~ww q1 scw   Y  d S )NTFc                   s   ˆ j  ˆ j¡S r�   )rz   r4  rw  ©Ú_rƒ   rp   rq   r¶   T  s    z+UNIXSocketListener.accept.<locals>.<lambda>)r[  r²  rj  rw  rt  ÚsetblockingrE  rH  rå   r   rz   r:  rË   ru  r&  rº  r<   r:   )r~   rr  ry  r   ró   rp   rƒ   rq   rt  H  s0   €
û
ÿ€üôÿzUNIXSocketListener.acceptr‹   c                 Ã  s   �d| _ | j ¡  d S r¢  )rº  rw  rŒ   rƒ   rp   rp   rq   r³  ]  s   €zUNIXSocketListener.aclosec                 C  r5  r�   )rw  rƒ   rp   rp   rq   r  a  r6  zUNIXSocketListener._raw_socketNrD  ru  r½   r*  )rj   rk   rl   r   rt  r³  r@  r  rp   rp   rp   rq   rv  A  s    


rv  c                   @  sB   e Zd Zddd„Zedd	d
„ƒZddd„Zddd„Zddd„ZdS )Ú	UDPSocketrï  úasyncio.DatagramTransportr  r   c                 C  r  r  r  r  rp   rp   rq   r   g  ó
   


zUDPSocket.__init__r€   r  c                 C  r  r  r  rƒ   rp   rp   rq   r  p  r  zUDPSocket._raw_socketr‹   c                 Ã  ó2   �d| _ | j ¡ s| j ¡  | jj ¡ I d H  d S r¢  ©rº  rá  rÂ  rŒ   r¼  r  rÈ   rƒ   rp   rp   rq   r³  t  ó
   €

zUDPSocket.acloseútuple[bytes, IPSockAddrType]c              	   Ã  sš   �| j �? t ¡ I d H  | jjs$| j ¡ s$| jj ¡  | jj 	¡ I d H  z| jj 
¡ W W  d   ƒ S  tyB   | jr?td ‚td ‚w 1 sFw   Y  d S r�   ©r  r[  r²  r¼  ré  rá  rÂ  rë  r  rÈ   r  r   rº  r<   r:   rƒ   rp   rp   rq   r±  {  s   €÷
üözUDPSocket.receiverŸ  rR   c                 Ã  sr   �| j �+ t ¡ I d H  | jj ¡ I d H  | jrt‚| j 	¡ r!t
‚| jj|Ž  W d   ƒ d S 1 s2w   Y  d S r�   ©r  r[  r²  r¼  rì  rÈ   rº  r<   rá  rÂ  r:   Úsendto©r~   rŸ  rp   rp   rq   rÄ  Œ  ó   €
"øzUDPSocket.sendN©rï  r|  r  r   r*  r½   )r€   r�  )rŸ  rR   r€   r‹   ©	rj   rk   rl   r   r@  r  r³  r±  rÄ  rp   rp   rp   rq   r{  f  s    
	

r{  c                   @  sB   e Zd Zddd„Zedd	d
„ƒZddd„Zddd„Zddd„ZdS )ÚConnectedUDPSocketrï  r|  r  r   c                 C  r  r  r  r  rp   rp   rq   r   ™  r}  zConnectedUDPSocket.__init__r€   r  c                 C  r  r  r  rƒ   rp   rp   rq   r  ¢  r  zConnectedUDPSocket._raw_socketr‹   c                 Ã  r~  r¢  r  rƒ   rp   rp   rq   r³  ¦  r€  zConnectedUDPSocket.acloser®  c              	   Ã  s¤   �| j �D t ¡ I d H  | jjs$| j ¡ s$| jj ¡  | jj 	¡ I d H  z| jj 
¡ }W n ty<   | jr9td ‚td ‚w |d W  d   ƒ S 1 sKw   Y  d S rñ  r‚  )r~   Úpacketrp   rp   rq   r±  ­  s   €ü$ðzConnectedUDPSocket.receiverŸ  c                 Ã  sr   �| j �+ t ¡ I d H  | jj ¡ I d H  | jrt‚| j 	¡ r!t
‚| j |¡ W d   ƒ d S 1 s2w   Y  d S r�   rƒ  r…  rp   rp   rq   rÄ  À  r†  zConnectedUDPSocket.sendNr‡  r*  r½   ©r€   r®  rÅ  rˆ  rp   rp   rp   rq   r‰  ˜  s    
	

r‰  c                   @  ó    e Zd Zd
dd„Zddd„Zd	S )ÚUNIXDatagramSocketr€   rS   c                 Ã  ó¤   �t ƒ }t ¡ I d H  | j�: 	 z| j d¡}W n% ty)   |  |¡I d H  Y n ty= } z	| j	r6t
d ‚t|‚d }~ww |W  d   ƒ S q1 sKw   Y  d S ©NTr¬  )r   r[  r²  r  r  ÚrecvfromrH  r<  r&  rB  r<   r:   ©r~   r—   r°  ró   rp   rp   rq   r±  Í  ó&   €€üôÿzUNIXDatagramSocket.receiverŸ  r‹   c                 Ã  s¤   �t ƒ }t ¡ I d H  | j�: 	 z| jj|Ž  W n% ty)   |  |¡I d H  Y n ty= } z	| j	r6t
d ‚t|‚d }~ww 	 W d   ƒ d S q1 sKw   Y  d S r�   )r   r[  r²  r  r  r„  rH  r@  r&  rB  r<   r:   ©r~   rŸ  r—   ró   rp   rp   rq   rÄ  Þ  r’  zUNIXDatagramSocket.sendN)r€   rS   )rŸ  rS   r€   r‹   ©rj   rk   rl   r±  rÄ  rp   rp   rp   rq   r�  Ì  ó    
r�  c                   @  rŒ  )ÚConnectedUNIXDatagramSocketr€   r®  c                 Ã  rŽ  r�  )r   r[  r²  r  r  rG  rH  r<  r&  rB  r<   r:   r‘  rp   rp   rq   r±  ñ  r’  z#ConnectedUNIXDatagramSocket.receiverŸ  r‹   c                 Ã  s¤   �t ƒ }t ¡ I d H  | j�: 	 z| j |¡ W n% ty)   |  |¡I d H  Y n ty= } z	| j	r6t
d ‚t|‚d }~ww 	 W d   ƒ d S q1 sKw   Y  d S r�   )r   r[  r²  r  r  rÄ  rH  r@  r&  rB  r<   r:   r“  rp   rp   rq   rÄ    r’  z ConnectedUNIXDatagramSocket.sendNr‹  rÅ  r”  rp   rp   rp   rq   r–  ð  r•  r–  Úread_eventsz'RunVar[dict[int, asyncio.Future[bool]]]Ú_read_eventsÚwrite_eventsÚ_write_eventsc                   @  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 )rE   )Ú_eventr€   c                 C  r
  r�   r  ©r  rp   rp   rq   r     r  zEvent.__new__r‹   c                 C  rú  r�   )rå   rE   r›  rƒ   rp   rp   rq   r   #  rÎ  zEvent.__init__c                 C  rÌ  r�   )r›  rä   rƒ   rp   rp   rq   rä   &  rÎ  z	Event.setrð   c                 C  ó
   | j  ¡ S r�   )r›  r  rƒ   rp   rp   rq   r  )  r  zEvent.is_setc                 Ã  s0   �|   ¡ rt ¡ I d H  d S | j ¡ I d H  d S r�   )r  r[  r²  r›  rÈ   rƒ   rp   rp   rq   rÈ   ,  s   €z
Event.waitr3   c                 C  s   t t| jjƒƒS r�   )r3   r!  r›  Ú_waitersrƒ   rp   rp   rq   Ú
statistics2  rÐ  zEvent.statisticsN)r€   rE   r½   r<  )r€   r3   )
rj   rk   rl   r?  r  r   rä   r  rÈ   rŸ  rp   rp   rp   rq   rE     s    




rE   c                   @  sb   e Zd ZdZddœddd„Zddœ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 )rG   )Ú_fast_acquireÚ_owner_taskrž  F©Úfast_acquirer£  rð   r€   c                C  r
  r�   r  ©r  r£  rp   rp   rq   r  9  r  zLock.__new__r‹   c                C  s   || _ d | _tƒ | _d S r�   )r   r¡  r   rž  )r~   r£  rp   rp   rq   r   <  s   zLock.__init__c                 Ã  sð   �t tjtƒ ƒ}| jd u r6| js6t ¡ I d H  || _| js4z
t 	¡ I d H  W d S  t
y3   |  ¡  ‚ w d S | j|kr?tdƒ‚t ¡ }||f}| j |¡ z|I d H  W d S  t
yw   | ¡ rrz| j |¡ W ‚  tyq   Y ‚ w |  ¡  ‚ w ©Nz)Attempted to acquire an already held Lock)r/   rå   ræ   r   r¡  rž  r[  r»  r   r\  r   Úreleaser£   r   rZ  rÃ   r  r¡   )r~   r¯   ÚfutrŸ  rp   rp   rq   ÚacquireA  sB   €üþ
ûû÷zLock.acquirec                 C  s>   t tjtƒ ƒ}| jd u r| js|| _d S | j|u rtdƒ‚t‚r¥  )r/   rå   ræ   r   r¡  rž  r£   r?   )r~   r¯   rp   rp   rq   Úacquire_nowaite  s   
zLock.acquire_nowaitc                 C  s
   | j d uS r�   )r¡  rƒ   rp   rp   rq   Úlockedp  r  zLock.lockedc                 C  sP   | j tƒ kr
tdƒ‚| jr#| j ¡ \}}| ¡ rq
|| _ | d ¡ d S d | _ d S )Nz)The current task is not holding this lock)r¡  r   r£   rž  r  rÃ   rË   )r~   r¯   r§  rp   rp   rq   r¦  s  s   

zLock.releaser4   c                 C  s*   | j rt| j ƒnd }t|  ¡ |t| jƒƒS r�   )r¡  ÚAsyncIOTaskInfor4   rª  r!  rž  )r~   Ú	task_inforp   rp   rq   rŸ  …  s   zLock.statisticsN)r£  rð   r€   rG   )r£  rð   r€   r‹   r½   r<  )r€   r4   )rj   rk   rl   r?  r  r   r¨  r©  rª  r¦  rŸ  rp   rp   rp   rq   rG   6  s    

$

rG   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d dd„Ze	d!dd„ƒZ
e	d"dd„ƒZd#dd„Z‡  ZS )$rK   )Ú_valueÚ
_max_valuer   rž  NF©Ú	max_valuer£  Úinitial_valuerL  r°  rD  r£  rð   r€   c                C  r
  r�   r  ©r  r±  r°  r£  rp   rp   rq   r  �  s   
zSemaphore.__new__c                  s.   t ƒ j||d� || _|| _|| _tƒ | _d S )N)r°  )r“  r   r­  r®  r   r   rž  )r~   r±  r°  r£  r˜  rp   rq   r   –  s
   zSemaphore.__init__r‹   c                 Ã  sÐ   �| j dkr3| js3t ¡ I d H  |  j d8  _ | js1z
t ¡ I d H  W d S  ty0   |  ¡  ‚ w d S t 	¡ }| j 
|¡ z|I d H  W d S  tyg   | ¡ rbz| j |¡ W ‚  tya   Y ‚ w |  ¡  ‚ w ©Nr   rµ   )r­  rž  r[  r»  r   r\  r   r¦  rå   r   rZ  rÃ   r  r¡   ©r~   r§  rp   rp   rq   r¨  £  s:   €üþûû÷zSemaphore.acquirec                 C  s    | j dkrt‚|  j d8  _ d S r³  )r­  r?   rƒ   rp   rp   rq   r©  Â  s   
zSemaphore.acquire_nowaitc                 C  sX   | j d ur| j| j krtdƒ‚| jr#| j ¡ }| ¡ rq| d ¡ d S |  jd7  _d S )Nz!semaphore released too many timesrµ   )r®  r­  r¡   rž  r  rÃ   rË   r´  rp   rp   rq   r¦  È  s   

zSemaphore.releasec                 C  r5  r�   )r­  rƒ   rp   rp   rq   r7  Ö  r6  zSemaphore.valuec                 C  r5  r�   )r®  rƒ   rp   rp   rq   r°  Ú  r6  zSemaphore.max_valuerI   c                 C  s   t t| jƒƒS r�   )rI   r!  rž  rƒ   rp   rp   rq   rŸ  Þ  rÎ  zSemaphore.statistics)r±  rL  r°  rD  r£  rð   r€   rK   )r±  rL  r°  rD  r£  rð   r½   rÚ  rÛ  )r€   rI   )rj   rk   rl   r?  r  r   r¨  r©  r¦  r@  r7  r°  rŸ  r¦  rp   rp   r˜  rq   rK   Š  s     ûû


rK   c                   @  sÂ   e Zd ZdZd1dd„Zd2dd„Zd3d
d„Zd4dd„Zed5dd„ƒZ	e	j
d6dd„ƒZ	ed7dd„ƒZed5dd„ƒZd3dd„Zd3dd „Zd8d#d$„Zd3d%d&„Zd8d'd(„Zd3d)d*„Zd8d+d,„Zd9d.d/„Zd0S ):rC   )Ú_total_tokensÚ
_borrowersÚ_wait_queueÚtotal_tokensr	  r€   c                 C  r
  r�   r  ©r  r¸  rp   rp   rq   r  å  r  zCapacityLimiter.__new__c                 C  s    d| _ tƒ | _tƒ | _|| _d S rñ  )rµ  rä   r¶  r   r·  r¸  )r~   r¸  rp   rp   rq   r   è  s   
zCapacityLimiter.__init__r‹   c                 Ã  s   �|   ¡ I d H  d S r�   )r¨  rƒ   rp   rp   rq   rY  î  ó   €zCapacityLimiter.__aenter__r…   r†   r‡   rˆ   r‰   rŠ   c                 Ã  s   �|   ¡  d S r�   )r¦  r�   rp   rp   rq   ra  ñ  s   €zCapacityLimiter.__aexit__c                 C  r5  r�   )rµ  rƒ   rp   rp   rq   r¸  ù  r6  zCapacityLimiter.total_tokensr7  c                 C  sˆ   t |tƒst |¡stdƒ‚|dk rtdƒ‚t|| j dƒ}|| _| jr>|rB| jj	dd�d }| 
¡  |d8 }| jr@|s&d S d S d S d S )Nz'total_tokens must be an int or math.infr   ztotal_tokens must be >= 0F©Úlastrµ   )rõ   rL  r#  Úisinfr~  r¡   Úmaxrµ  r·  Úpopitemrä   )r~   r7  Úwaiters_to_notifyÚeventrp   rp   rq   r¸  ý  s   
ýrL  c                 C  s
   t | jƒS r�   )r!  r¶  rƒ   rp   rp   rq   Úborrowed_tokens  ó   
zCapacityLimiter.borrowed_tokensc                 C  s   | j t| jƒ S r�   )rµ  r!  r¶  rƒ   rp   rp   rq   Úavailable_tokens  ó   z CapacityLimiter.available_tokensc                 C  s<   | j rt| jƒ| jk r| j jdd�d }| ¡  dS dS dS )zCNotify the next task in line if this limiter has free capacity now.Fr»  rµ   N)r·  r!  r¶  rµ  r¿  rä   )r~   rÁ  rp   rp   rq   Ú_notify_next_waiter  s   þz#CapacityLimiter._notify_next_waiterc                 C  ó   |   tƒ ¡ d S r�   )Úacquire_on_behalf_of_nowaitr   rƒ   rp   rp   rq   r©    rÐ  zCapacityLimiter.acquire_nowaitÚborrowerr  c                 C  s<   || j v r	tdƒ‚| jst| j ƒ| jkrt‚| j  |¡ d S )NzEthis borrower is already holding one of this CapacityLimiter's tokens)r¶  r£   r·  r!  rµ  r?   r  ©r~   rÉ  rp   rp   rq   rÈ    s   
ÿz+CapacityLimiter.acquire_on_behalf_of_nowaitc                 Ã  s   �|   tƒ ¡I d H S r�   )Úacquire_on_behalf_ofr   rƒ   rp   rp   rq   r¨  *  rº  zCapacityLimiter.acquirec                 Ã  sÂ   �t  ¡ I d H  z|  |¡ W n: tyI   t ¡ }|| j|< z	| ¡ I d H  W n ty?   | j 	|d ¡ | 
¡ r>|  ¡  ‚ w | j |¡ Y d S w z
t  ¡ I d H  W d S  ty`   |  ¡  ‚ w r�   )r[  r»  rÈ  r?   rå   rE   r·  rÈ   r]  Úpopr  rÆ  r¶  r  r\  r¦  )r~   rÉ  rÁ  rp   rp   rq   rË  -  s.   €
ûôþz$CapacityLimiter.acquire_on_behalf_ofc                 C  rÇ  r�   )Úrelease_on_behalf_ofr   rƒ   rp   rp   rq   r¦  E  rÐ  zCapacityLimiter.releasec                 C  s6   z| j  |¡ W n ty   tdƒd ‚w |  ¡  d S )Nz@this borrower isn't holding any of this CapacityLimiter's tokens)r¶  r  r  r£   rÆ  rÊ  rp   rp   rq   rÍ  H  s   ÿþÿz$CapacityLimiter.release_on_behalf_ofr2   c                 C  s   t | j| jt| jƒt| jƒƒS r�   )r2   rÂ  r¸  Útupler¶  r!  r·  rƒ   rp   rp   rq   rŸ  R  s   üzCapacityLimiter.statisticsN)r¸  r	  r€   rC   )r¸  r	  r½   r¼   r=  r>  rÚ  )rÉ  r  r€   r‹   )r€   r2   )rj   rk   rl   r?  r  r   rY  ra  r@  r¸  rA  rÂ  rÄ  rÆ  r©  rÈ  r¨  rË  r¦  rÍ  rŸ  rp   rp   rp   rq   rC   â  s,    











rC   Ú_default_thread_limiterzRunVar[CapacityLimiter]c                   @  sH   e Zd Zddd„Zdd	d
„Zddd„Zddd„Zddd„Zddd„ZdS )Ú_SignalReceiverÚsignalsútuple[Signals, ...]c                 C  s,   || _ tƒ | _tƒ | _t ¡ | _tƒ | _	d S r�   )
Ú_signalsr   rz   r   Ú_signal_queuerå   r   rM  rä   Ú_handled_signals)r~   rÑ  rp   rp   rq   r   d  s
   
z_SignalReceiver.__init__rº   r#   r€   r‹   c                 C  s*   | j  |¡ | j ¡ s| j d ¡ d S d S r�   )rÔ  rZ  rM  r·   rË   )r~   rº   rp   rp   rq   Ú_deliverk  s   
ÿz_SignalReceiver._deliverc                 C  s2   t | jƒD ]}| j || j|¡ | j |¡ q| S r�   )rä   rÓ  rz   Úadd_signal_handlerrÖ  rÕ  r  )r~   Úsigrp   rp   rq   r„   p  s   z_SignalReceiver.__enter__r…   r†   r‡   rˆ   r‰   rŠ   c                 C  s   | j D ]}| j |¡ qd S r�   )rÕ  rz   Úremove_signal_handler)r~   r…   r‡   r‰   rØ  rp   rp   rq   rŽ   w  s   
ÿz_SignalReceiver.__exit__c                 C  s   | S r�   rp   rƒ   rp   rp   rq   Ú	__aiter__€  s   z_SignalReceiver.__aiter__c                 Ã  s6   �t  ¡ I d H  | jst ¡ | _| jI d H  | j ¡ S r�   )r[  r²  rÔ  rå   r   rM  r  rƒ   rp   rp   rq   Ú	__anext__ƒ  s   €

z_SignalReceiver.__anext__N)rÑ  rÒ  )rº   r#   r€   r‹   )r€   rÐ  r¼   )r€   r#   )	rj   rk   rl   r   rÖ  r„   rŽ   rÚ  rÛ  rp   rp   rp   rq   rÐ  c  s    




	rÐ  c                      s(   e Zd Zd	‡ fdd„Zd
dd„Z‡  ZS )r«  r¯   r´   c                   s`   t  |¡}|d u rd }n|j}| ¡ }|d usJ dƒ‚tƒ  t|ƒ|| ¡ |¡ t 	|¡| _
d S )Nz&created TaskInfo from a completed Task)rç   râ   rB  rñ   r“  r   r4  Úget_nameÚweakrefÚrefrg  )r~   r¯   r  rB  r›   r˜  rp   rq   r   ’  s   
zAsyncIOTaskInfo.__init__r€   rð   c                 C  sX   |   ¡  }sdS |jrdS t|jtjƒr|j ¡ rdS t |¡ }r*|j	 }r*|j
S dS )NFT)rg  r(  rõ   r)  rå   r   rÃ   rç   râ   rè   r"  )r~   r¯   r  rè   rp   rp   rq   Úhas_pending_cancellationž  s   ÿþ
z(AsyncIOTaskInfo.has_pending_cancellation)r¯   r´   r<  )rj   rk   rl   r   rß  r¦  rp   rp   r˜  rq   r«  ‘  s    r«  c                   @  s˜   e Zd ZU ded< ddddœd@dd„ZdAdd„ZdBdd„ZdCdd„ZdDdd„ZdEd#d$„Z	dFd%d&„Z
dGd)d*„ZdHd2d3„ZdId7d8„ZdJd:d;„ZdKd>d?„ZdS )LÚ
TestRunnerzBMemoryObjectSendStream[tuple[Awaitable[Any], asyncio.Future[Any]]]Ú_send_streamNF)rs   Ú
use_uvlooprt   rs   ru   râ  rð   rt   rv   r€   r‹   c                C  sR   |r|d u rt jdkrdd l}|j}ndd l}|j}t||d�| _g | _d | _d S )NÚwin32r   rr   )	r  ÚplatformÚuvloopr±   Úwinloopr^   Ú_runnerrW  Ú_runner_task)r~   rs   râ  rt   rå  ræ  rp   rp   rq   r   µ  s   

zTestRunner.__init__c                 C  s   | j  ¡  |  ¡  | j¡ | S r�   )rç  r„   r˜   Úset_exception_handlerÚ_exception_handlerrƒ   rp   rp   rq   r„   Ê  s   
zTestRunner.__enter__r…   r†   r‡   rˆ   r‰   rŠ   c                 C  s   | j  |||¡ d S r�   )rç  rŽ   r�   rp   rp   rq   rŽ   Ï  s   zTestRunner.__exit__r   c                 C  r�  r�   )rç  r˜   rƒ   rp   rp   rq   r˜   ×  r  zTestRunner.get_loopc                 C  s$   zt  ¡  W dS  ty   Y dS w r!  )rå   r   r£   rƒ   rp   rp   rq   Ú
is_runningÚ  s   ÿzTestRunner.is_runningr—   r1  rš   údict[str, Any]c                 C  s2   t | d¡tƒr| j |d ¡ d S | |¡ d S )NrÁ   )rõ   râ   rÌ   rW  rZ  Údefault_exception_handler)r~   r—   rš   rp   rp   rq   rê  á  s   zTestRunner._exception_handlerc                 C  s>   | j r| j g }| _ t|ƒdkr|d ‚|rtd|ƒ‚d S d S )Nrµ   r   z6Multiple exceptions occurred in asynchronous callbacks)rW  r!  re   )r~   rc   rp   rp   rq   Ú_raise_async_exceptionsé  s   ÿûz"TestRunner._raise_async_exceptionsÚreceive_streamúOMemoryObjectReceiveStream[tuple[Awaitable[T_Retval], asyncio.Future[T_Retval]]]c                 Ã  s  �ddl m} |�z | j�^ |2 zR3 d H W \}}z|I d H }W n9 ty6 } z| ¡ s1|j|jŽ  ‚ d }~w tyX } z| ¡ sF| |¡ t	|t
|fƒsN‚ W Y d }~qd }~ww | ¡ sb| |¡ q6 W d   ƒ n1 snw   Y  W d   ƒ d S W d   ƒ d S 1 s†w   Y  d S ©Nr   )ÚOutcomeException)Ú_pytest.outcomesrò  rá  r   rÃ   r¸   rÒ   r]  rÍ   rõ   rÌ   rË   )r~   rï  rò  r›   rÆ   Úretvalró   rp   rp   rq   Ú_run_tests_and_fixturesô  s0   €€
ÿ€ü
€ðPÿz"TestRunner._run_tests_and_fixturesr�  ú Callable[P, Awaitable[T_Retval]]rÒ   úP.argsÚkwargsúP.kwargsr�   c                Ï  sr   �| j stttt tjf  dƒ\| _}|  ¡  	|  
|¡¡| _ ||i |¤Ž}|  ¡  ¡ }| j ||f¡ |I d H S rl  )rè  rA   rÎ  r   r+   rå   r   rá  r˜   r   rõ  rÔ   Úsend_nowait)r~   r�  rÒ   rø  rï  r›   rÆ   rp   rp   rq   Ú_call_in_runner_task	  s   €ÿ
þÿ
zTestRunner._call_in_runner_taskÚfixture_funcú,Callable[..., AsyncGenerator[T_Retval, Any]]úIterable[T_Retval]c                 c  sŠ   � |di |¤Ž}|   ¡  |  |jd ¡¡}|  ¡  |V  z|   ¡  |  |jd ¡¡ W n ty7   |  ¡  Y d S w |   ¡  | ¡ ¡ tdƒ‚)Nz$Async generator fixture did not stoprp   )r˜   r‘   rû  Úasendrî  ÚStopAsyncIterationr³  r£   )r~   rü  rø  ÚasyncgenÚfixturevaluerp   rp   rq   Úrun_asyncgen_fixture#	  s    €ÿÿÿzTestRunner.run_asyncgen_fixtureú,Callable[..., Coroutine[Any, Any, T_Retval]]c                 C  s(   |   ¡  | j|fi |¤Ž¡}|  ¡  |S r�   )r˜   r‘   rû  rî  )r~   rü  rø  rô  rp   rp   rq   Úrun_fixture:	  s
   ÿzTestRunner.run_fixtureÚ	test_funcú'Callable[..., Coroutine[Any, Any, Any]]c                 C  sô   ddl m} z|  ¡  | j|fi |¤Ž¡ W n] ty. } z| j |¡ W Y d }~nJd }~w |y5   ‚  tys   | j	d urr| j	 
¡ sr| j	 ¡  | j ¡  zz
|  ¡  | j	¡ W n	 tyc   Y nw W d | _	‚ W d | _	‚ d | _	w ‚ w |  ¡  d S rñ  )ró  rò  r˜   r‘   rû  rÌ   rW  rZ  r]  rè  r·   r¸   rá  rŒ   r   rî  )r~   r  rø  rò  ró   rp   rp   rq   Úrun_testE	  s:   ÿ€

ÿÿýÿózTestRunner.run_test)rs   ru   râ  rð   rt   rv   r€   r‹   )r€   rà  r¼   r¾   r<  )r—   r1  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‹   )rj   rk   rl   r¶  r   r„   rŽ   r˜   rë  rê  rî  rõ  rû  r  r  r  rp   rp   rp   rq   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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µ„ƒZ/edãd·d¸„ƒZ0edÂd¹dº„ƒZ1edäd¼d½„ƒZ2d3S )år[  r�  ú1Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]]rÒ   útuple[Unpack[PosArgsT]]rø  rì  Úoptionsr€   r�   c                   s¨   t ˆƒd‡ ‡fdd„ƒ}| dd ¡}| dd ¡}|d u r6| dd¡r6tjd	kr/d
d l}|j}nd
d l}	|	j}t||d��}
|
 |ƒ ¡W  d   ƒ S 1 sMw   Y  d S )Nr€   r�   c                  “  sL   �t tjtƒ ƒ} |  tˆƒ¡ td d ƒt| < zˆˆ Ž I d H W t| = S t| = w r�   )r/   rå   ræ   r   Úset_namerV   r  rç   )r¯   ©rÒ   r�  rp   rq   Úwrapperl	  s   €z#AsyncIOBackend.run.<locals>.wrapperrs   rt   râ  Frã  r   rr   )r€   r�   )	r   râ   r  rä  rå  r±   ræ  r^   r¤   )r  r�  rÒ   rø  r  r  rs   rt   rå  ræ  Úrunnerrp   r  rq   r¤   d	  s   


$ÿzAsyncIOBackend.runr  c                 C  ó   t ƒ S r�   )r   rœ  rp   rp   rq   Úcurrent_token†	  r6  zAsyncIOBackend.current_tokenr	  c                 C  s
   t ƒ  ¡ S r�   )r   r%  rœ  rp   rp   rq   r•  Š	  rÃ  zAsyncIOBackend.current_timeútype[BaseException]c                 C  s   t S r�   )r   rœ  rp   rp   rq   Úcancelled_exception_classŽ	  s   z(AsyncIOBackend.cancelled_exception_classr‹   c                 Ã  s   �t dƒI d H  d S rñ  ©r	   rœ  rp   rp   rq   r²  ’	  ó   €zAsyncIOBackend.checkpointc                 Ã  sn   �t ƒ }|d u r
d S zt| j}W n
 ty   Y d S w |r5|jr)tdƒI d H  n|jr.d S |j}|sd S d S rñ  )r   rç   rè   r  r*  r	   r  ré   )r  r¯   rè   rp   rp   rq   r»  –	  s    €ÿúz&AsyncIOBackend.checkpoint_if_cancelledc                 Ã  s@   �t dd�� tdƒI d H  W d   ƒ d S 1 sw   Y  d S )NTr†  r   )rM   r	   rœ  rp   rp   rq   r\  ©	  s   €"ÿz)AsyncIOBackend.cancel_shielded_checkpointÚdelayc                 Ã  s   �t |ƒI d H  d S r�   r  )r  r  rp   rp   rq   r	   ®	  r  zAsyncIOBackend.sleepFr  r  r  rð   rM   c                C  s   t ||d�S )Nr  rL   r  rp   rp   rq   Úcreate_cancel_scope²	  s   z"AsyncIOBackend.create_cancel_scopec                 C  s€   t ƒ  }d u r
tjS zt| j}W n ty   tj Y S w tj}|r>t||jƒ}|jr3tj }	 |S |j	r9	 |S |j
}|s#|S r�   )r   r#  r$  rç   rè   r  Úminr  rü   r  ré   )r  r¯   rè   r  rp   rp   rq   Úcurrent_effective_deadline¸	  s(   
ÿûþø
z)AsyncIOBackend.current_effective_deadlineúabc.TaskGroupc                 C  r  r�   )rU  rœ  rp   rp   rq   Úcreate_task_groupÏ	  r6  z AsyncIOBackend.create_task_groupú	abc.Eventc                 C  r  r�   rD   rœ  rp   rp   rq   Úcreate_eventÓ	  r6  zAsyncIOBackend.create_eventr£  úabc.Lockc                C  s
   t |d�S )Nr¢  rF   r¤  rp   rp   rq   Úcreate_lock×	  rÃ  zAsyncIOBackend.create_lockNr¯  r±  rL  r°  rD  úabc.Semaphorec                C  s   t |||d�S )Nr¯  rJ   r²  rp   rp   rq   Úcreate_semaphoreÛ	  s   zAsyncIOBackend.create_semaphorer¸  úabc.CapacityLimiterc                 C  ó   t |ƒS r�   rB   r¹  rp   rp   rq   Úcreate_capacity_limiterå	  rÓ  z&AsyncIOBackend.create_capacity_limiterú&Callable[[Unpack[PosArgsT]], T_Retval]Úabandon_on_cancelÚlimiterúabc.CapacityLimiter | Nonec              	   Ã  sÀ  �|   ¡ I d H  z
t ¡ }t ¡ }W n ty+   tƒ }tƒ }t |¡ t |¡ Y nw |p1|  ¡ 4 I d H š� t| d��ƒ}t	j
t ƒ }tƒ }	|sct|	||ƒ}
|
 ¡  | |
¡ |	j|
jt ¡ d� n&| ¡ }
|  ¡ }|r‰||d j tjk rxn| ¡ }|j |j¡ | ¡  |smtƒ }| td ¡ |s™|jd u rœ|}n|j}|
j  |||||f¡ |I d H W  d   ƒ W  d   ƒI d H  S 1 sÃw   Y  W d   ƒI d H  d S 1 I d H sÙw   Y  d S )Nr†  r™   r   )!r²  r§  râ   r¨  ÚLookupErrorr   rä   Úcurrent_default_thread_limiterrM   rå   r   r�   rî   r�  rÕ   r  ru  r¤  r³   r   rÌ  r•  r–  r¥  r  rë   Úremove_done_callbackr   r¤   r8   ré   r”  r£  )r  r�  rÒ   r&  r'  r‘  r�  r/  rÆ   rë   ÚworkerÚnowÚexpired_workerrš   Úworker_scoperp   rp   rq   Úrun_sync_in_worker_threadé	  s^   €
ü

ÿÿÿÿõÛÿ.ÿz(AsyncIOBackend.run_sync_in_worker_threadc                 C  sH   t j}|d ur"|jrtdt|ƒd›�ƒ‚|jrd S |j}|d usd S d S )Nrô   r3  )r9   r�  r*  r   r4  r  ré   )r  r/  rp   rp   rq   Úcheck_cancelled&
  s   ùzAsyncIOBackend.check_cancelledr‚  ÚtokenrØ   c                   sj   d	‡ ‡‡fdd„}t d|ptjjƒ}| ¡ rt‚tƒ }| td¡ t	tdd ƒ‰|jt
j|ƒ |d�}| ¡ S )
Nr€   rØ   c               
   “  s¤   �d} ˆd urt tjtƒ ƒ}td ˆƒt|< ˆj |¡ z*zˆˆ Ž I d H W W ˆd ur0ˆj |¡ S S  t	yE } z	t
j 	t|ƒ¡d ‚d }~ww ˆd urQˆj |¡ w w r¢  )r/   rå   ræ   r   r  rç   r  r  r  r   Ú
concurrentÚfuturesrö   )Ú__tracebackhide__r¯   ró   ©rÒ   r�  r/  rp   rq   Útask_wrapper9
  s$   €ÿý€ÿÿz:AsyncIOBackend.run_async_from_thread.<locals>.task_wrapperr   rå   r�  rÏ   )r€   rØ   )r/   r9   r  Únative_tokenrž  r>   r   r¤   r8   r­   rå   Úrun_coroutine_threadsaferŠ  )r  r�  rÒ   r2  r7  r—   rš   r   rp   r6  rq   Úrun_async_from_thread2
  s   ÿ
ÿz$AsyncIOBackend.run_async_from_threadc                   sP   t ˆƒd‡ ‡‡fdd„ƒ}td|ptjjƒ}| ¡ rt‚tƒ ‰| |¡ ˆ 	¡ S )Nr€   r‹   c               
     sZ   zt dƒ ˆ ˆˆ Ž ¡ W d S  ty, }  zˆ | ¡ t| tƒs!‚ W Y d } ~ d S d } ~ ww )Nrå   )r8   rË   r]  rÍ   rõ   rÌ   rù   ©rÒ   r   r�  rp   rq   r  \
  s   

ÿ€þz4AsyncIOBackend.run_sync_from_thread.<locals>.wrapperr   r½   )
r   r/   r9   r  r8  rž  r>   r   r¹   rŠ  )r  r�  rÒ   r2  r  r—   rp   r;  rq   Úrun_sync_from_threadU
  s   	ÿ
z#AsyncIOBackend.run_sync_from_threadÚcommandú)StrOrBytesPath | Sequence[StrOrBytesPath]rÖ  úint | IO[Any] | NonerØ  rÙ  r+   rÆ  c          
      Ë  s¼   �|   ¡ I d H  t|tƒrt |¡}t|ttfƒr*tj|f|||dœ|¤ŽI d H }ntj	||||dœ|¤ŽI d H }|j
rAt|j
ƒnd }|jrKt|jƒnd }|jrUt|jƒnd }	t||||	ƒS )N)rÖ  rØ  rÙ  )r²  rõ   r!   ÚosÚfspathrö   r®  rå   Úcreate_subprocess_shellÚcreate_subprocess_execrÖ  r·  rØ  rª  rÙ  rÆ  )
r  r=  rÖ  rØ  rÙ  rø  rä  Ústdin_streamÚstdout_streamÚstderr_streamrp   rp   rq   Úopen_processp
  s4   €


ÿüûüûzAsyncIOBackend.open_processr�  ræ  c                 C  s&   t t|ƒdd� tƒ  tt|ƒ¡ d S )Nz AnyIO process pool shutdown taskrp  )r   rç  rî   ru  r   rå  )r  r�  rp   rp   rq   Ú#setup_process_pool_exit_at_shutdown”
  s   þÿz2AsyncIOBackend.setup_process_pool_exit_at_shutdownÚhoströ   ÚportÚlocal_addressúIPSockAddrType | Nonerk  c                 Ã  sB   �t ttjtf tƒ jt|||d�I d H ƒ\}}| ¡  t||ƒS )N)Ú
local_addr)	r/   rÎ  rå   rò  rè  r   Úcreate_connectionr  r	  )r  rI  rJ  rK  rï  r  rp   rp   rq   Úconnect_tcpž
  s   €
ÿþ
zAsyncIOBackend.connect_tcpÚpathústr | bytesúabc.UNIXSocketStreamc                 ƒ  s¤   �|   ¡ I d H  tƒ ‰ t tj¡‰ˆ d¡ 	 z
ˆ |¡ W tˆƒS  tyE   t ¡ }ˆ  	ˆ|j
d ¡ | ‡ ‡fdd„¡ |I d H  Y n tyP   ˆ ¡  ‚ w q)NFTc                   ó
   ˆ   ˆ¡S r�   ©r>  rx  ©r—   r.  rp   rq   r¶   ·
  ó   
 z-AsyncIOBackend.connect_unix.<locals>.<lambda>)r²  r   r  ÚAF_UNIXrz  ÚconnectrH  rå   r   r?  rË   ru  r]  rŒ   rE  )r  rP  r   rp   rU  rq   Úconnect_unix«
  s&   €

÷þøzAsyncIOBackend.connect_unixÚsockr  rQ   c                 C  r#  r�   )re  ©r  rZ  rp   rp   rq   Úcreate_tcp_listener¿
  rÓ  z"AsyncIOBackend.create_tcp_listenerc                 C  r#  r�   )rv  r[  rp   rp   rq   Úcreate_unix_listenerÃ
  rÓ  z#AsyncIOBackend.create_unix_listenerÚfamilyr$   Úremote_addressÚ
reuse_portúUDPSocket | ConnectedUDPSocketc                 Ã  sN   �t ƒ jt||||d�I d H \}}|jr| ¡  |j‚|s"t||ƒS t||ƒS )N)rM  Úremote_addrr^  r`  )r   Úcreate_datagram_endpointr   rÁ   rŒ   r{  r‰  )r  r^  rK  r_  r`  rï  r  rp   rp   rq   Úcreate_udp_socketÇ
  s   €û

z AsyncIOBackend.create_udp_socketr.  Úremote_pathústr | bytes | Noneú8abc.UNIXDatagramSocket | abc.ConnectedUNIXDatagramSocketc                 ƒ  sš   �|   ¡ I d H  tƒ ‰ |rI	 z
ˆ |¡ W tˆƒS  ty<   t ¡ }ˆ  ˆ|jd ¡ | ‡ ‡fdd„¡ |I d H  Y n t	yG   ˆ 
¡  ‚ w qtˆƒS )NTc                   rS  r�   rT  rx  rU  rp   rq   r¶   í
  rV  z<AsyncIOBackend.create_unix_datagram_socket.<locals>.<lambda>)r²  r   rX  rH  rå   r   r?  rË   ru  r]  rŒ   r–  r�  )r  r.  re  r   rp   rU  rq   Úcreate_unix_datagram_socketß
  s&   €
÷þøz*AsyncIOBackend.create_unix_datagram_socketr   ©r^  r^  ÚprotorZ  úbytes | str | Noneústr | int | Noneúint | AddressFamilyr^  úint | SocketKindrj  rZ  úuSequence[tuple[AddressFamily, SocketKind, int, str, tuple[str, int] | tuple[str, int, int, int] | tuple[int, bytes]]]c                Ã  s    �t ƒ j||||||d�I d H S )Nri  )r   Úgetaddrinfo)r  rI  rJ  r^  r^  rj  rZ  rp   rp   rq   rp  ÷
  s   €ÿzAsyncIOBackend.getaddrinfoÚsockaddrrP   útuple[str, str]c                 Ã  s   �t ƒ  ||¡I d H S r�   )r   Úgetnameinfo)r  rq  rZ  rp   rp   rq   rs    s   €zAsyncIOBackend.getnameinfoÚobjrZ   c                 ƒ  s:  �zt  ¡ ‰W n ty   i ‰t  ˆ¡ Y nw t|tƒr|n| ¡ ‰ ˆ ˆ ¡r,tdƒ‚tƒ }| 	¡ ‰d‡ ‡‡‡fdd„}z| 
ˆ |¡ W n ty`   ddlm} |ƒ }| 
ˆ |¡ |j‰Y nw |j‰ˆˆˆ < zˆI d H }W zˆˆ = W n	 ty}   Y nw ˆˆ ƒ nzˆˆ = W n	 ty‘   Y w w ˆˆ ƒ w |s›t‚d S )	Nr  r€   r‹   c                     sN   zˆˆ = W n	 t y   Y nw ˆˆ ƒ zˆ d¡ W d S  tjy&   Y d S w r¢  ©r  rË   rå   rP  rp   ©rb  r§  r—  r4  rp   rq   rà   #  ó   
ÿÿz(AsyncIOBackend.wait_readable.<locals>.cbr   ©Úget_selectorr½   )r˜  râ   r)  rä   rõ   rL  rC  r;   r   rÔ   r:  rß  Ú$anyio._core._asyncio_selector_threadry  r4  r  r<   ©r  rt  r—   rà   ry  ÚselectorÚsuccessrp   rv  rq   Úwait_readable  óP   €þ

û
ÿ
û
ÿ
ÿzAsyncIOBackend.wait_readablec                 ƒ  s:  �zt  ¡ ‰W n ty   i ‰t  ˆ¡ Y nw t|tƒr|n| ¡ ‰ ˆ ˆ ¡r,tdƒ‚tƒ }| 	¡ ‰d‡ ‡‡‡fdd„}z| 
ˆ |¡ W n ty`   ddlm} |ƒ }| 
ˆ |¡ |j‰Y nw |j‰ˆˆˆ < zˆI d H }W zˆˆ = W n	 ty}   Y nw ˆˆ ƒ nzˆˆ = W n	 ty‘   Y w w ˆˆ ƒ w |s›t‚d S )	Nr  r€   r‹   c                     sN   zˆˆ = W n	 t y   Y nw ˆˆ ƒ zˆ d¡ W d S  tjy&   Y d S w r¢  ru  rp   ©rb  r§  r>  r™  rp   rq   rà   X  rw  z(AsyncIOBackend.wait_writable.<locals>.cbr   rx  r½   )rš  râ   r)  rä   rõ   rL  rC  r;   r   rÔ   r?  rß  rz  ry  r>  r  r<   r{  rp   r€  rq   Úwait_writableI  r  zAsyncIOBackend.wait_writablec                 C  sd  t |tƒr|n| ¡ }tƒ }zt ¡ }W n	 ty   Y nAw z| |¡}W n	 ty.   Y n0w z| 	d¡ W n
 t
jy@   Y nw z| |¡ W n ty]   ddlm} |ƒ  |¡ Y nw zt ¡ }W n
 tyn   Y d S w z| |¡}W n
 ty€   Y d S w z| 	d¡ W n
 t
jy’   Y nw z| |¡ W d S  ty±   ddlm} |ƒ  |¡ Y d S w )NFr   rx  )rõ   rL  rC  r   rš  râ   r)  rÌ  r  rË   rå   rP  r>  rß  rz  ry  r˜  r4  )r  rt  rb  r—   r™  r§  ry  r—  rp   rp   rq   Únotify_closing~  sX   ÿÿÿýÿÿÿýzAsyncIOBackend.notify_closingc                 Ã  s(   �t tdƒr|jtjkrt|ƒS t|ƒS )NrW  )r“   r  r^  rW  rv  re  r[  rp   rp   rq   Úwrap_listener_socket¯  s   €z#AsyncIOBackend.wrap_listener_socketr	  c                 Ã  ó&   �t ƒ jt|d�I d H \}}t||ƒS ©N)rZ  )r   rN  rè  r	  ©r  rZ  rï  r  rp   rp   rq   Úwrap_stream_socket¶  ó
   €ÿ
z!AsyncIOBackend.wrap_stream_socketrE  c                 Ã  ó
   �t |ƒS r�   )rE  r[  rp   rp   rq   Úwrap_unix_stream_socket½  ó   €z&AsyncIOBackend.wrap_unix_stream_socketr{  c                 Ã  r„  r…  )r   rc  r   r{  r†  rp   rp   rq   Úwrap_udp_socketÁ  rˆ  zAsyncIOBackend.wrap_udp_socketr‰  c                 Ã  r„  r…  )r   rc  r   r‰  r†  rp   rp   rq   Úwrap_connected_udp_socketÈ  rˆ  z(AsyncIOBackend.wrap_connected_udp_socketr�  c                 Ã  r‰  r�   )r�  r[  rp   rp   rq   Úwrap_unix_datagram_socketÏ  r‹  z(AsyncIOBackend.wrap_unix_datagram_socketr–  c                 Ã  r‰  r�   )r–  r[  rp   rp   rq   Ú#wrap_connected_unix_datagram_socketÓ  s   €z2AsyncIOBackend.wrap_connected_unix_datagram_socketrC   c                 C  s4   zt  ¡ W S  ty   tdƒ}t  |¡ | Y S w )Né(   )rÏ  râ   r)  rC   rä   )r  r'  rp   rp   rq   r*  Ù  s   

ýz-AsyncIOBackend.current_default_thread_limiterrÑ  r#   ú.AbstractContextManager[AsyncIterator[Signals]]c                 G  r#  r�   )rÐ  )r  rÑ  rp   rp   rq   Úopen_signal_receiverâ  s   z#AsyncIOBackend.open_signal_receiverr5   c                 C  s
   t tƒ ƒS r�   )r«  r   rœ  rp   rp   rq   Úget_current_taskè  rÃ  zAsyncIOBackend.get_current_taskúSequence[TaskInfo]c                 C  s   dd„ t ƒ D ƒS )Nc                 S  s   g | ]
}|  ¡ st|ƒ‘qS rp   )r·   r«  )rß   r¯   rp   rp   rq   rá   î  s    z4AsyncIOBackend.get_running_tasks.<locals>.<listcomp>)r   rœ  rp   rp   rq   Úget_running_tasksì  rÅ  z AsyncIOBackend.get_running_tasksc                 Ã  s\   �|   ¡ I d H  tƒ }	 tƒ D ]}||u rq|j}|d u s!| ¡ r*tdƒI d H   nqd S q)NTgš™™™™™¹?)r²  r   r   r)  r·   r	   )r  Ú	this_taskr¯   r.  rp   rp   rq   Úwait_all_tasks_blockedð  s   €
þöz%AsyncIOBackend.wait_all_tasks_blockedrà  c                 C  s   t di |¤ŽS )Nrp   )rà  )r  r  rp   rp   rq   Úcreate_test_runner   s   z!AsyncIOBackend.create_test_runner)
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±  rL  r°  rD  r£  rð   r€   r   )r¸  r	  r€   r"  )FN)
r�  r%  rÒ   r
  r&  rð   r'  r(  r€   r�   )r�  r‚  rÒ   r
  r2  r  r€   rØ   )r�  r%  rÒ   r
  r2  r  r€   r�   )r=  r>  rÖ  r?  rØ  r?  rÙ  r?  rø  r+   r€   rÆ  ©r�  ræ  r€   r‹   r�   )rI  rö   rJ  rL  rK  rL  r€   rk  )rP  rQ  r€   rR  )rZ  r  r€   rQ   )
r^  r$   rK  rL  r_  rL  r`  rð   r€   ra  )r.  r  re  rf  r€   rg  )rI  rk  rJ  rl  r^  rm  r^  rn  rj  rL  rZ  rL  r€   ro  )r   )rq  rP   rZ  rL  r€   rr  )rt  rZ   r€   r‹   )rZ  r  r€   r	  )rZ  r  r€   rE  )rZ  r  r€   r{  )rZ  r  r€   r‰  )rZ  r  r€   r�  )rZ  r  r€   r–  )r€   rC   )rÑ  r#   r€   r‘  )r€   r5   )r€   r”  )r  rì  r€   rà  )3rj   rk   rl   Úclassmethodr¤   r  r•  r  r²  r»  r\  r	   r#  r$  r  r  r  r  r  r!  r$  r0  r1  r:  r<  rG  rH  rO  rY  r\  r]  rd  rh  rp  rs  r~  r�  r‚  rƒ  r‡  rŠ  rŒ  r�  rŽ  r�  r*  r’  r“  r•  r—  r˜  rp   rp   rp   rq   r[  c	  sÌ    !ÿû	û<"#	ÿøÿ440r[  )r—   r   r€   r‹   )r€   r´   )r¯   r´   r€   rð   )ró   r   r€   rð   )r�  rÜ  rg  r  r€   r‹   r™  )ÁÚ
__future__r   rP  rå   Úconcurrent.futuresr3  r³   r#  r@  r  r  r¥   rÝ  r   r   r   r   r   r   r	   Úasyncio.base_eventsr
   Úcollectionsr   r   Úcollections.abcr   r   r   r   r   r   r   r   r   Ú
contextlibr   r   r   Údataclassesr   r   Ú	functoolsr   r   Úinspectr   r   r   Úior    r!   r”  r"   r¨   r#   r$   r%   r&   Útypesr'   r(   Útypingr)   r*   r+   r,   r-   r.   r/   r0   Ú r2   r3   r4   r5   r6   Ú_core._eventloopr7   r8   r9   Ú_core._exceptionsr:   r;   r<   r=   r>   r?   Ú_core._socketsr@   Ú_core._streamsrA   Ú_core._synchronizationrC   ÚBaseCapacityLimiterrE   Ú	BaseEventrG   ÚBaseLockrH   rI   rK   ÚBaseSemaphoreÚ_core._tasksrM   ÚBaseCancelScoperN   rO   rP   rQ   rR   rS   Úabc._eventlooprT   Ú
abc._tasksrU   rV   ÚlowlevelrW   Ústreams.memoryrX   rY   Ú	_typeshedrZ   r  r  r^   r_   r`   Úenumra   rb   rc   rd   Úexceptiongroupre   Útyping_extensionsÚEnumrf   r�   r”   r�   rØ   rÚ   rÜ   rÝ   rÞ   r¶  rî   rï   rò   rú   r  rç   Ú
TaskStatusrJ  Úeager_task_factoryrn  rT  rU  rÎ  r]  Ú_Retval_Queue_Typer�  r§  r¨  ÚByteReceiveStreamrª  ÚByteSendStreamr·  rÆ  rå  rç  ÚProtocolrè  r   r	  r+  rE  re  rv  r{  r‰  r�  r–  r˜  rš  rÏ  rÐ  r«  rà  r[  Úbackend_classrp   rp   rp   rq   Ú<module>   s    $	(
$	  


#

  B dNÿ
9
&"U.t<%24$$TXy.! 2     '