o
    øT·j÷¤ ã                   @  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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#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/m0Z0m1Z1 d dl2m3Z3 d dlm4Z4 d dl5m6Z6 d dl7m8Z8 d dlm9Z9m:Z: d dl
m;Z; d dl<m=Z=m>Z> d dl?m@Z@mAZAmBZBmCZCmDZDmEZEmFZF d dlmGZG ddlHmIZImJZJmKZKmLZLmMZM ddlNmOZOmPZPmQZQ ddlRmSZSmTZTmUZUmVZVmWZWmXZX ddlYmZZZ ddl[m\Z\ ddl]m^Z_ ddl]m`Za ddl]mbZc ddl]mdZdmeZe dd l]mfZg dd!lhmiZj dd"lhmkZk dd#lMmlZlmmZmmnZnmoZompZp dd$lqmrZrmsZsmtZt dd%lumvZvmwZw eA�rmd d&lxmyZy dd'lzm{Z{ dd(l|m}Z}m~Z~ neZye	j€d)k�r†d d*lm�Z� d d+l?m‚Z‚mƒZƒm„Z„ nBd dl%Z%d dl…Z…d dl7Z7d d,lm†Z†m‡Z‡mˆZˆm‰Z‰ d d-lŠm‹Z‹ d d+lŒm‚Z‚mƒZƒm„Z„ G d.d/„ d/e…j�ƒZŽG d0d1„ d1ƒZ�d¢d6d7„Z�d¢d8d9„Z�eEd:ƒZ‘eEd;d<d=�Z’eEd>d<d?�Z“eƒd@ƒZ”eDdAƒZ•evdBƒZ–dCe—dB< d£dEdF„Z˜d¤dIdJ„Z™d¥dMdN„ZšG dOdP„ dPejƒZiG dQdR„ dRƒZ›eGƒ ZœdSe—dT< G dUdV„ dVeMj�e“ ƒZže	j€dWk�r'ejŸj Z¡dXe—dY< ndZ¡G dZd[„ d[eMj¢ƒZ¢e£e‘dB e¤dB f Z¥G d\d]„ d]e;ƒZ¦evd^ƒZ§d_e—d^< evd`ƒZ¨dae—d`< e)dbdc�G ddde„ deeMj©ƒƒZªe)dbdc�G dfdg„ dgeMj«ƒƒZ¬e)dbdc�G dhdi„ dieMj­ƒƒZ­d¦dndo„Z®d§dqdr„Z¯G dsdt„ dtej°ƒZ±G dudv„ dvej²ƒZ²G dwdx„ dxeMj³ƒZ³G dydz„ dzƒZ´G d{d|„ d|e´eMjµƒZµG d}d~„ d~eMjnƒZ¶G dd€„ d€eMjnƒZ·G d�d‚„ d‚eMj¸ƒZ¸G dƒd„„ d„eMj¹ƒZ¹G d…d†„ d†e´eMjºƒZºG d‡dˆ„ dˆe´eMj»ƒZ»evd‰ƒZ¼dŠe—d‹< evdŒƒZ½dŠe—d�< G dŽd�„ d�eaƒZ`G d�d‘„ d‘ecƒZbG d’d“„ d“egƒZfG d”d•„ d•e_ƒZ^evd–ƒZ¾d—e—d–< G d˜d™„ d™ƒZ¿G dšd›„ d›eLƒZÀG dœd�„ d�eMjÁƒZÁG dždŸ„ dŸejÂjÃƒZÄG d d¡„ d¡elƒ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Úsuppress)Ú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)Úcall_for_coroutineÚget_callable_nameÚget_coro_name)ÚRunVarÚ	_run_vars)ÚFileDescriptorLike)ÚStrOrBytesPath)ÚMemoryObjectReceiveStreamÚMemoryObjectSendStream©é   é   )ÚRunner)ÚSelfÚ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© rt   rt   ú[/home/dinkstrade/pdmp-scanner/venv/lib/python3.10/site-packages/anyio/_backends/_asyncio.pyrj   }   s    rj   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 ).ra   N©ÚdebugÚloop_factoryrw   úbool | Nonerx   ú&Callable[[], AbstractEventLoop] | Nonec                C  s0   t j| _|| _|| _d | _d | _d| _d| _d S )Nr   F)	rj   rq   Ú_stateÚ_debugÚ_loop_factoryÚ_loopÚ_contextÚ_interrupt_countÚ_set_event_loop)Úselfrw   rx   rt   rt   ru   Ú__init__„   s   
zRunner.__init__Úreturnrb   c                 C  s   |   ¡  | S ©N)Ú
_lazy_init©r‚   rt   rt   ru   Ú	__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�   rt   rt   ru   Ú__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)r~   r{   rj   rr   Ú_cancel_all_tasksÚrun_until_completeÚshutdown_asyncgensÚhasattrr“   Ú_shutdown_default_executorr�   rf   Úset_event_loopr�   rs   ©r‚   Úlooprt   rt   ru   r�   ž   s(   
€
ü

zRunner.closer   c                 C  s   |   ¡  | jS )zReturn embedded event loop.)r†   r~   r‡   rt   rt   ru   Ú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)re   ÚiscoroutineÚ
ValueErrorrf   Ú_get_running_loopÚRuntimeErrorr†   r   Úrunr~   r   Ú	threadingÚcurrent_threadÚmain_threadÚsignalÚ	getsignalÚSIGINTÚdefault_int_handlerr   Ú
_on_sigintr€   r•   rg   r   ÚgetattrÚKeyboardInterrupt)r‚   rŸ   rž   ÚtaskÚsigint_handlerr£   rt   rt   ru   r¨   ¶   sN   
ÿü	ý÷
ûý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)r{   rj   rs   r§   rr   r}   rf   Únew_event_loopr~   r�   r™   r|   Ú	set_debugÚcontextvarsr   r   r‡   rt   rt   ru   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…   rt   rt   rt   rt   ru   Ú<lambda>þ   s    z#Runner._on_sigint.<locals>.<lambda>)r€   ÚdoneÚcancelr~   Úcall_soon_threadsafer²   )r‚   ÚsignumÚframer¢   rt   rt   ru   r°   ù   s   zRunner._on_sigint)rw   ry   rx   rz   ©r„   rb   ©r‰   rŠ   r‹   rŒ   r�   rŽ   r„   r�   ©r„   r�   ©r„   r   )rŸ   r    r„   r¡   )r¢   r¸   r„   r�   )rn   ro   rp   rƒ   rˆ   r’   r�   rœ   r¨   r†   r°   rt   rt   rt   ru   ra   ‚   s    ü




0ra   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³   )rh   r   r¼   r•   ÚgatherÚ	cancelledrÆ   Úcall_exception_handler)r›   Ú	to_cancelr³   rt   rt   ru   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›   rt   ru   Ú_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Ë   Úthreadrt   rÔ   ru   r˜     s   €
r˜   r¡   ÚT_coT)Ú	covariantÚT_contra)ÚcontravariantÚPosArgsTÚPÚ
_root_taskz RunVar[asyncio.Task[Any] | None]r¸   c                  C  sì   t  d ¡} | d ur|  ¡ s| S tƒ D ]4}|jrF| ¡ sF|jD ]'\}}|tu s.t|dd ƒdkrEt  |¡ d
dd„}|j||d	� |    S qqt	t
jtƒ ƒ}t |¡}|rt|j}|ri|jd uri|j}|ri|jd us_|d urtt	t
j|jƒS |S )Nro   zuvloop.loopÚtúasyncio.Task[Any]r„   r�   c                 S  s&   t  |  ¡ ¡ }r| td ¡ d S d S r…   )rY   Úgetrœ   Úpoprã   )rä   Úvarsrt   rt   ru   Ú_unsetF  s   ÿzfind_root_task.<locals>._unsetr�   )rä   rå   r„   r�   )rã   ræ   r»   r   Ú
_callbacksr
   r±   ÚsetÚadd_done_callbackr0   ÚasyncioÚTaskr   Ú_task_statesÚcancel_scopeÚ_parent_scopeÚ
_host_task)Ú	root_taskr³   Úcbrž   ré   Ústaterð   rt   rt   ru   Úfind_root_task7  s0   



ó€
ÿrö   r³   Ú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Ÿ   rt   rt   ru   Ú_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ú   rt   rt   ru   Úis_anyio_cancellationm  s   ÿþýr  c                   @  sò   e Zd ZdZejddœd7d
d„Zejdfd8dd„Zd9dd„Zd:dd„Z	e
d;dd„ƒZe
d;dd„ƒZd<dd„Zd=d d!„Zd<d"d#„Zd>d%d&„Zd?d@d*d+„Ze
dAd,d-„ƒZejdBd/d-„ƒZe
d;d0d1„ƒZe
d;d2d3„ƒZe
d;d4d5„ƒZejdCd6d5„ƒZd'S )DrN   )Ú_activeÚ_cancel_calledÚ_cancel_handleÚ_cancel_reasonÚ_cancelled_caughtÚ_child_scopesÚ	_deadlinerò   rñ   Ú_pending_uncancellationsÚ_shieldÚ_tasksÚ_timeout_handleF©ÚdeadlineÚshieldr  Úfloatr  r÷   r„   rb   c                C  ó
   t  | ¡S r…   ©ÚobjectÚ__new__©Úclsr  r  rt   rt   ru   r  ‘  ó   
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  rt   rt   ru   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§   r0   rí   rî   r   rò   r  Úaddrï   ÚKeyErrorÚ	TaskStaterð   rñ   r  ÚdiscardÚ_timeoutr  Ú_deliver_cancellation)r‚   Ú	host_taskÚ
task_statert   rt   ru   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   rt   rt   ru   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ü   ri   Úsplitr  rÿ   r   r  )r‚   r‰   r‹   r�   Úhost_task_stateÚcancelleds_caughtÚ	remainingrž   rt   rt   ru   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ð   rt   rt   ru   Ú_effectively_cancelled'  s   ù	z"CancelScope._effectively_cancelledc                 C  s   | j d uo| j o| j jS r…   )rñ   r  r*  r‡   rt   rt   ru   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š   rt   rt   ru   r  =  s   ûzCancelScope._timeoutÚoriginc                 C  sà   d}t ƒ }| jD ]>}| ¡ rqd}|jrq||urF|| ju s"t|ƒrF|j}t|tj	ƒr/| ¡ sF| 
|j¡ ||ju rF|jdurF| jd7  _q| jD ]}|jsY|jsY| |¡pX|}qJ|| u rn|rktƒ  | 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  r»   Ú_must_cancelrò   rù   Ú_fut_waiterrü   rí   r   r¼   r  r	  r  r
  Úcancel_calledr  r   Ú	call_soonr  )r‚   r/  Úshould_retryÚcurrentr³   ÚwaiterÚscopert   rt   ru   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‚   r7  rt   rt   ru   r#  w  s   

õz+CancelScope._restart_cancellation_in_parentÚ
new_parentc                 C  sD   | j |u rdS | j dur| j j | ¡ || _ |j | ¡ |  ¡  dS )zí
        Move this active scope from its current parent to ``new_parent``.

        Used by :meth:`TaskGroup.start` to move a task that has just called
        ``task_status.started()`` into the target task group's cancel scope.
        N)rñ   r  r  r  r#  )r‚   r8  rt   rt   ru   Ú	_reparentŠ  s   

zCancelScope._reparentNÚ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‚   r:  r³   rt   rt   ru   r¼   ž  s   


òzCancelScope.cancelc                 C  ó   | j S r…   )r  r‡   rt   rt   ru   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‚   r@  rt   rt   ru   r  ³  s   


ÿc                 C  r>  r…   )r  r‡   rt   rt   ru   r2  ½  r?  zCancelScope.cancel_calledc                 C  r>  r…   )r  r‡   rt   rt   ru   Úcancelled_caughtÁ  r?  zCancelScope.cancelled_caughtc                 C  r>  r…   )r
  r‡   rt   rt   ru   r  Å  r?  zCancelScope.shieldc                 C  s(   | j |kr|| _ |s|  ¡  d S d S d S r…   )r
  r#  rA  rt   rt   ru   r  É  s   
ý)r  r  r  r÷   r„   rb   )r  r  r  r÷   rÀ   ©r‰   rŠ   r‹   rŒ   r�   rŽ   r„   r÷   ©r„   r÷   rÂ   )r/  rN   r„   r÷   )r8  rN   r„   r�   r…   )r:  r;  r„   r�   ©r„   r  ©r@  r  r„   r�   )r@  r÷   r„   r�   )rn   ro   rp   Ú	__slots__r+  r,  r  rƒ   rˆ   r’   Úpropertyr*  r$  r  r  r#  r9  r¼   r  Úsetterr2  rB  r  rt   rt   rt   ru   rN   €  s6    

b


2
	rN   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.
    )Ú__weakref__rð   Ú	parent_idrK  ú
int | Nonerð   úCancelScope | Nonec                 C  s   || _ || _d S r…   ©rK  rð   )r‚   rK  rð   rt   rt   ru   rƒ   Þ  s   
zTaskState.__init__N)rK  rL  rð   rM  )rn   ro   rp   Ú__doc__rG  rƒ   rt   rt   rt   ru   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.FuturerK  ÚintÚtarget_scoperN   Úspawn_scopec                 C  s   || _ || _|| _|| _d S r…   )Ú_futureÚ
_parent_idÚ_target_scopeÚ_spawn_scope)r‚   rË   rK  rS  rT  rt   rt   ru   rƒ   ì  s   
z_AsyncioTaskStatus.__init__Nr@  úT_contra | Noner„   r�   c                 C  sX   t tjtƒ ƒ}| jt| _| j ¡ r| j 	¡ st
dƒ‚d S | j |¡ | j | j¡ d S )Nz.called 'started' twice on the same task status)r0   rí   rî   r   rV  rï   rK  rU  r»   rÈ   r§   rÐ   rX  r9  rW  )r‚   r@  r³   rt   rt   ru   Ústartedû  s   

z_AsyncioTaskStatus.started)rË   rQ  rK  rR  rS  rN   rT  rN   r…   )r@  rY  r„   r�   )rn   ro   rp   rƒ   rZ  rt   rt   rt   ru   rP  ë  s    
rP  ©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œd0dd„Zdd d!œd1d)d*„ZdS )2Ú	TaskGroupr„   r�   c                 C  s&   t ƒ | _d| _g | _tƒ | _d | _d S )NF)rN   rð   Ú_enteredÚ_exceptionsrë   r  Ú_on_completed_futr‡   rt   rt   ru   rƒ     s
   
zTaskGroup.__init__rb   c                 Ã  s$   �| j rtdƒ‚d| _ | j ¡  | S )Nz*TaskGroup cannot be entered more than onceT)r_  r§   rð   rˆ   r‡   rt   rt   ru   Ú
__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   r`  Úappendr   r  rN   rÙ   ra  r  r  ÚAsyncIOBackendÚcancel_shielded_checkpointri   ÚBaseExceptionr’   ÚtypeÚ__traceback__)r‚   r‰   r‹   r�   r›   Ú
wait_scoperú   rt   rt   ru   Ú	__aexit__   sb   €



ÿþ€óì€ÿ€ÿþÿü€üzTaskGroup.__aexit__NrŸ   úCoroutine[Any, Any, T_co]Únamer  Útask_statusú_AsyncioTaskStatus | NoneúTaskHandle[T_co]c                   sØ  |d ur|j nd ‰d‡ ‡‡fdd„}ˆd ur6ttƒ ƒ}t ttjtƒ ƒ¡}|d ur2|jd ur2|j}nˆ j}n	tˆ jj	ƒ}ˆ j}|d urF|j
nd }t|||d�}	t ¡ }
|	 ¡ }z.|
 ¡  }r|t|dd ƒtu r|t|d	d ƒ }r||d
 j}|||
|	jd�‰n|
j||	jd�‰W n8 ty½   ttƒ� | ¡  W d   ƒ n1 sŸw   Y  ttƒ� | ¡  W d   ƒ ‚ 1 s·w   Y  ‚ w t||d�tˆ< |j ˆ¡ ˆ j ˆ¡ tjdkråˆ jj	d uråt ˆˆ 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"  ra  rÐ   ÚInvalidStateErrorrÆ   r   rü   rÿ   rÈ   r»   r`  rc  r*  r¼   rÒ   r§   )rp  r!  rú   Úe©r‚   r³   Útask_status_futurert   ru   Ú	task_donef  sP   ÿÿÿ€ü
ÿÿÿz#TaskGroup._spawn.<locals>.task_done)rð   Ú__code__Ú__closure__r   )r›   rl  ©rl  rN  rq  )rp  r¸   r„   r�   )rU  r=  r   rï   ræ   r0   rí   rî   rð   rò   rX  rO   r   Ú	_run_coroÚget_task_factoryr±   r]  Úcell_contentsrl  r   rf  r   r�   r  r  r  r  r  Úfuture_add_to_awaited_byrì   )r‚   rŸ   rl  rm  rx  rK  Úcaller_stateÚinitial_scoperT  Úhandler›   Úwrapper_coroÚfactoryÚclosureÚcustom_task_constructorrt   rv  ru   Ú_spawn^  sX   /

ÿÿ
ÿ€

ÿ


ÿýù

zTaskGroup._spawn)rl  rž   rž   úContext | Nonec                C  sl   t |tƒstd|jj› �ƒ‚| jr| jjs| ¡  t	dƒ‚t
||ƒ}|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.r{  )rü   r   Ú	TypeErrorÚ	__class__rp   r_  rð   r  r�   r§   rW   r¨   r‡  )r‚   rŸ   rl  rž   Ú
final_namert   rt   ru   r   Ä  s   
ÿ
zTaskGroup.create_taskF)rl  Úreturn_handleÚfuncú7Callable[[Unpack[PosArgsT]], Coroutine[Any, Any, T_co]]r×   úUnpack[PosArgsT]r�  úLiteral[False, True]r,   c          
      Ç  sè   �| j r| jjstdƒ‚t ¡ }t||ƒ}t|t| jj	ƒ| jt
ƒ ƒ}t|||d�}|  |||¡}	z|I d H  W n/ tyf   |	jtjju re|	 ¡  t
dd�� |	 ¡ I d H  W d   ƒ ‚ 1 s`w   Y  ‚ w |rp| ¡ |	_|	S | ¡ S )Nr‰  )rm  T©r  )r_  rð   r  r§   rí   r   rV   rP  r=  rò   rN   rU   r‡  rf  ÚstatusrO   ÚStatusÚPENDINGr¼   rÍ   ÚresultÚ_start_value)
r‚   rŽ  rl  r�  r×   rË   rŒ  rm  rŸ   r‚  rt   rt   ru   rÚ   Û  s8   €ÿ
ÿ
ÿýù	
zTaskGroup.startrÂ   rÀ   rC  r…   )rŸ   rk  rl  r  rm  rn  r„   ro  )rŸ   rk  rl  r  rž   rˆ  r„   ro  )
rŽ  r�  r×   r�  rl  r  r�  r‘  r„   r,   )	rn   ro   rp   rƒ   rb  rj  r‡  r   rÚ   rt   rt   rt   ru   r^    s    


	Büjûûr^  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   i }t jdkrtƒ |d< tƒ jdddi|¤Ž || _|| _|| _|j| _	t
dƒ| _t ¡ | _d| _d S )Nrq  rž   rl  zAnyIO worker threadr2   Frt   )r  r  r   Úsuperrƒ   ró   rš  rœ  r~   r›   r#   Úqueuerd  Úcurrent_timeÚ
idle_sinceÚstopping)r‚   ró   rš  rœ  Úkwargs©r‹  rt   ru   rƒ     s   

þ

zWorkerThread.__init__rË   rQ  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)rd  r   r¡  r¢  rœ  rc  rÈ   rü   ÚStopIterationr§   Ú	__cause__rÒ   rÐ   )r‚   rË   r–  rú   Únew_excrt   rt   ru   Ú_report_result,  s   

÷zWorkerThread._report_resultc           
      C  s  t t| jƒ�x 	 | j ¡ }|d u r	 W d   ƒ d S |\}}}}}| ¡ srd }d }|t_z$z|j|g|¢R Ž }W n t	yL }	 z|	}W Y d }	~	nd }	~	ww W t`nt`w z| j 
| j|||¡ W n tyo   | j ¡ sm‚ Y nw ~~| j ¡  ~~~~~~q1 s�w   Y  d S r…   )r8   rd  r›   rŸ  ræ   rÈ   r:   Úcurrent_cancel_scoper¨   rf  r½   r¨  r§   Ú	is_closedrx  )
r‚   Úitemrž   rŽ  r×   rË   rð   r–  rÆ   rú   rt   rt   ru   r¨   >  sB   
û€ÿ€
ÿ
ÿÿ
ãÿ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¬  rt   rt   ru   Ústop_  s   ÿzWorkerThread.stop)ró   r¸   rš  r›  rœ  r�  )rË   rQ  r–  r,   rú   rŒ   r„   r�   rÂ   r…   )r¬  r­  r„   r�   )	rn   ro   rp   ÚMAX_IDLE_TIMErƒ   r¨  r¨   r°  Ú__classcell__rt   rt   r¤  ru   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_bytesrR  r„   Úbytesc                 Ã  s0   �|dk r	t dƒ‚| j |¡I d H }|r|S t‚©Nr¹   z$max_bytes must be a positive integer)r¥   r·  Úreadr>   )r‚   r¹  Údatart   rt   ru   Úreceivex  s   €zStreamReaderWrapper.receiver�   c                 Ã  s"   �| j  tƒ ¡ t ¡ I d H  d S r…   )r·  rÒ   r=   rd  Ú
checkpointr‡   rt   rt   ru   Úaclose‚  s   €zStreamReaderWrapper.acloseN©r¸  ©r¹  rR  r„   rº  rÂ   )rn   ro   rp   Ú__annotations__r¾  rÀ  rt   rt   rt   ru   r¶  t  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…   )rd  Úcheckpoint_if_cancelledr·  Ú	_protocolÚ_pausedÚwriteÚdrainÚConnectionResetErrorÚBrokenPipeErrorr§   rÇ  r=   Ú
is_closingr;   re  )r‚   r«  Ústream_pausedrú   rt   rt   ru   ÚsendŒ  s"   €

€÷ÿzStreamWriterWrapper.sendc                 Ã  s$   �d| _ | j ¡  t ¡ I d H  d S r®  )rÇ  r·  r�   rd  r¿  r‡   rt   rt   ru   rÀ     s   €
zStreamWriterWrapper.acloseN©r«  rº  r„   r�   rÂ   )rn   ro   rp   rÃ  r   rÇ  rÑ  rÀ  rt   rt   rt   ru   rÄ  ‡  s
   
 
rÄ  c                   @  s¶   e Zd ZU ded< ded< 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Ú_stderrúasyncio.EventÚ_exitedzasyncio.SubprocessTransportÚ
_transportr„   r�   c              	   Ã  s  �t dd��r}| jr| j ¡ I d H  | j d¡ }r| ¡  | jr5| j ¡ I d H  | j d¡ }r5| ¡  | jrL| j ¡ I d H  | j d¡ }rL| ¡  d|_z	|  	¡ I d H  W n t
yo   d|_| j ¡  |  	¡ I d H  ‚ w W d   ƒ d S 1 s{w   Y  d S )NTr’  r   r¹   r2   F)rN   rÕ  rÀ  rÚ  Úget_pipe_transportr�   rÖ  r×  r  rÍ   rf  )r‚   r7  Úpipert   rt   ru   rÀ  ¯  s2   €
ûÿ"îzProcess.acloserR  c                 Ã  s*   �| j  ¡ I d H  | jjd usJ ‚| jjS r…   )rÙ  rÍ   rÔ  Ú
returncoder‡   rt   rt   ru   rÍ   Ê  s   €zProcess.waitc                 C  ó   | j  ¡  d S r…   )rÔ  Ú	terminater‡   rt   rt   ru   rß  Ï  ó   zProcess.terminatec                 C  rÞ  r…   )rÔ  Úkillr‡   rt   rt   ru   rá  Ò  rà  zProcess.killr¬   c                 C  s   | j  |¡ d S r…   )rÔ  Úsend_signal)r‚   r¬   rt   rt   ru   râ  Õ  ó   zProcess.send_signalc                 C  ó   | j jS r…   )rÔ  Úpidr‡   rt   rt   ru   rå  Ø  ó   zProcess.pidrL  c                 C  rä  r…   )rÔ  rÝ  r‡   rt   rt   ru   rÝ  Ü  ræ  zProcess.returncodeúabc.ByteSendStream | Nonec                 C  r>  r…   )rÕ  r‡   rt   rt   ru   Ústdinà  r?  zProcess.stdinúabc.ByteReceiveStream | Nonec                 C  r>  r…   )rÖ  r‡   rt   rt   ru   Ústdoutä  r?  zProcess.stdoutc                 C  r>  r…   )r×  r‡   rt   rt   ru   Ústderrè  r?  zProcess.stderrNrÂ   ©r„   rR  )r¬   rR  r„   r�   ©r„   rL  )r„   rç  )r„   ré  )rn   ro   rp   rÃ  rÀ  rÍ   rß  rá  râ  rH  rå  rÝ  rè  rê  rë  rt   rt   rt   ru   rÓ  ¦  s,   
 




rÓ  rš  úset[Process]rp  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.Nr[  )r  r  rí   Úget_event_loop_policyÚget_child_watcherÚNotImplementedErrorÚcopyrÝ  rÕ  r·  rÚ  r�   rÖ  r×  rá  Úremove_child_handlerrå  )rš  rp  Úchild_watcherÚprocessrt   rt   ru   Ú'_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õ  rt   rt   ru   Ú_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_queuerØ  Ú
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í   rF   rû  rü  rë   r0   Ú	TransportÚset_write_buffer_limits©r‚   rÿ  rt   rt   ru   Úconnection_made'  s
   


zStreamProtocol.connection_maderú   c                 C  s"   |r|| _ | j ¡  | j ¡  d S r…   )rÆ   rû  rë   rü  ©r‚   rú   rt   rt   ru   Úconnection_lost.  s   
zStreamProtocol.connection_lostr½  rº  c                 C  s   | j  t|ƒ¡ | j ¡  d S r…   )rú  rc  rº  rû  rë   )r‚   r½  rt   rt   ru   Údata_received5  s   zStreamProtocol.data_receivedry   c                 C  s   d| _ | j ¡  dS r®  )rþ  rû  rë   r‡   rt   rt   ru   Úeof_received:  s   
zStreamProtocol.eof_receivedc                 C  ó   t  ¡ | _d S r…   )rí   rF   rü  r‡   rt   rt   ru   Úpause_writing?  rà  zStreamProtocol.pause_writingc                 C  rÞ  r…   ©rü  rë   r‡   rt   rt   ru   Úresume_writingB  rà  zStreamProtocol.resume_writing©rÿ  r   r„   r�   ©rú   rý  r„   r�   )r½  rº  r„   r�   )r„   ry   rÂ   )rn   ro   rp   rÃ  rÆ   rþ  r  r  r  r	  r  r  rt   rt   rt   ru   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í   rF   rû  rü  r  rë   r  rt   rt   ru   r  M  s
   


z DatagramProtocol.connection_maderú   c                 C  s"   | j  ¡  | j ¡  | j ¡  d S r…   )rû  rë   rü  r  r  rt   rt   ru   r  T  s   

z DatagramProtocol.connection_lostr½  rº  ÚaddrrQ   c                 C  s&   t |ƒ}| j ||f¡ | j ¡  d S r…   )rA   rú  rc  rû  rë   )r‚   r½  r  rt   rt   ru   Údatagram_receivedY  s   z"DatagramProtocol.datagram_receivedrÑ   c                 C  s
   || _ d S r…   )rÆ   r  rt   rt   ru   Úerror_received^  r  zDatagramProtocol.error_receivedc                 C  rÞ  r…   )rü  Úclearr‡   rt   rt   ru   r  a  rà  zDatagramProtocol.pause_writingc                 C  rÞ  r…   r  r‡   rt   rt   ru   r  d  rà  zDatagramProtocol.resume_writingr  r  )r½  rº  r  rQ   r„   r�   )rú   rÑ   r„   r�   rÂ   )rn   ro   rp   rÃ  rÆ   r  r  r  r  r  r  rt   rt   rt   ru   r  F  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É  rI   Ú_receive_guardÚ_send_guardrÇ  ©r‚   rÿ  r  rt   rt   ru   rƒ   i  s
   


zSocketStream.__init__r„   úsocket.socketc                 C  ó   | j  d¡S ©NÚsocket©rÚ  Úget_extra_infor‡   rt   rt   ru   Ú_raw_socketp  ó   zSocketStream._raw_socketr¸  r¹  rR  rº  c              	   Ã  s.  �|dk r	t dƒ‚| j�� | jj ¡ s0| j ¡ s0| jjs0| j ¡  | jj 	¡ I d H  | j 
¡  nt ¡ I d H  z| jj ¡ }W n tyX   | jrLtd ‚| jjrUt| jj‚td ‚w t|ƒ|krs|d |… ||d … }}| jj |¡ | jjs…| jj ¡  W d   ƒ |S W d   ƒ |S 1 s�w   Y  |S r»  )r¥   r   rÉ  rû  Úis_setrÚ  rÏ  rþ  Úresume_readingrÍ   Úpause_readingrd  r¿  rú  ÚpopleftÚ
IndexErrorrÇ  r=   rÆ   r;   r>   ÚlenÚ
appendleftr  )r‚   r¹  ÚchunkÚleftoverrt   rt   ru   r¾  t  sF   €
ÿþý

ú
â ý
ã à 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!  rd  r¿  rÇ  r=   rÉ  rÆ   r;   rÚ  rË  r§   rÏ  rü  rÍ   )r‚   r«  rú   rt   rt   ru   rÑ  š  s"   €

€ü"ðzSocketStream.sendc                 Ã  s(   �z| j  ¡  W d S  ty   Y d S w r…   )rÚ  Ú	write_eofÚOSErrorr‡   rt   rt   ru   Úsend_eof­  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Ï  r4  r5  r�   r	   Úabortr‡   rt   rt   ru   rÀ  ³  s   €
ÿ
øzSocketStream.acloseN)rÿ  r  r  rù  ©r„   r#  rÁ  rÂ  rÒ  rÂ   )
rn   ro   rp   rƒ   rH  r)  r¾  rÑ  r6  rÀ  rt   rt   rt   ru   r  h  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 )Ú_RawSocketMixinNzasyncio.Future | NoneÚ_receive_futureÚ_send_futureFÚ
raw_socketr#  c                 C  s   || _ tdƒ| _tdƒ| _d S )Nr  r  )Ú_RawSocketMixin__raw_socketrI   r   r!  ©r‚   r=  rt   rt   ru   rƒ   Å  s   
z_RawSocketMixin.__init__r„   c                 C  r>  r…   )r>  r‡   rt   rt   ru   r)  Ê  r?  z_RawSocketMixin._raw_socketr›   úasyncio.AbstractEventLooprQ  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‚   rt   ru   ÚcallbackÏ  ó   z6_RawSocketMixin._wait_until_readable.<locals>.callback©r¬  r  r„   r�   )rí   r   r;  Ú
add_readerr>  rÐ   rì   ©r‚   r›   rF  r¬  rt   rE  ru   Ú_wait_until_readableÎ  ó
   
z$_RawSocketMixin._wait_until_readablec                   rA  )Nr¬  r  r„   r�   c                   rB  r…   )r<  Úremove_writerr>  rD  rE  rt   ru   rF  Ù  rG  z6_RawSocketMixin._wait_until_writable.<locals>.callbackrH  )rí   r   r<  Ú
add_writerr>  rÐ   rì   rJ  rt   rE  ru   Ú_wait_until_writableØ  rL  z$_RawSocketMixin._wait_until_writabler�   c                 Ã  sn   �| j s1d| _ | j ¡ dkr| j ¡  | jr!| j ¡ s!| j d ¡ | jr3| j ¡ s5| j d ¡ d S d S d S d S )NTéÿÿÿÿ)Ú_closingr>  Úfilenor�   r;  r»   rÐ   r<  r‡   rt   rt   ru   rÀ  â  s   €
øz_RawSocketMixin.aclose©r=  r#  r9  )r›   r@  r„   rQ  rÂ   )rn   ro   rp   r;  rÃ  r<  rQ  rƒ   rH  r)  rK  rO  rÀ  rt   rt   rt   ru   r:  À  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‡   rt   rt   ru   r6  ï  s   €"ÿzUNIXSocketStream.send_eofr¸  r¹  rR  rº  c                 Ã  s¼   �|dk r	t dƒ‚tƒ }t ¡ I d H  | j�> 	 z| j |¡}W n% ty1   |  |¡I d H  Y n" t	yE } z	| j
r>td ‚t|‚d }~ww |sJt‚|W  d   ƒ S q1 sWw   Y  d S r»  )r¥   r   rd  r¿  r   r)  ÚrecvÚBlockingIOErrorrK  r5  rQ  r=   r;   r>   )r‚   r¹  r›   r½  rú   rt   rt   ru   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   rd  r¿  r!  Ú
memoryviewr)  rÑ  rW  rO  r5  rQ  r=   r;   )r‚   r«  r›   ÚviewÚ
bytes_sentrú   rt   rt   ru   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ü   rR  r¥   r   Úarrayrd  r¿  r   r)  Úrecvmsgr&  ÚCMSG_LENÚitemsizerW  rK  r5  rQ  r=   r;   r>   Ú
SOL_SOCKETÚ
SCM_RIGHTSr§   Ú	frombytesr0  Úlist)r‚   r[  r\  r›   ÚfdsrÅ   ÚancdataÚ_flagsÚ_addrrú   Ú
cmsg_levelÚ	cmsg_typeÚ	cmsg_datart   rt   ru   Úreceive_fds  sN   €
ÿ€üðïÿÿÿ&zUNIXSocketStream.receive_fdsrÅ   rg  ú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 emptyr^  )r¥   r   rü   rR  rc  r!   rR  r_  rd  r¿  r!  r)  Úsendmsgr&  rc  rd  rW  rO  r5  rQ  r=   r;   )r‚   rÅ   rg  r›   ÚfilenosÚfdÚfdarrayrú   rt   rt   ru   Úsend_fdsC  sB   €

€ÿ€üö"øzUNIXSocketStream.send_fdsNrÂ   rÁ  rÂ  rÒ  )r[  rR  r\  rR  r„   r]  )rÅ   rº  rg  ro  r„   r�   )rn   ro   rp   r6  r¾  rÑ  rn  rt  rt   rt   rt   ru   rT  î  s    


'rT  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 )ÚTCPSocketListenerNrM  Ú_accept_scopeFr=  r#  c                 C  s$   || _ ttjtƒ ƒ| _tdƒ| _d S )Núaccepting connections from)Ú_TCPSocketListener__raw_socketr0   rí   ÚBaseEventLoopr   r~   rI   Ú_accept_guardr?  rt   rt   ru   rƒ   i  s   zTCPSocketListener.__init__r„   c                 C  r>  r…   )rx  r‡   rt   rt   ru   r)  n  r?  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=   rz  rd  r¿  rN   rv  r~   Úsock_acceptr)  rí   r   rC  r¥   rñ  Ú
setsockoptr&  ÚIPPROTO_TCPÚTCP_NODELAYÚconnect_accepted_socketrù  r  )r‚   Úclient_sockrj  rÿ  r  rt   rt   ru   Úacceptr  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 r7  )
rÇ  rv  r~   rC  r)  r¥   rñ  r¼   r	   r�   r‡   rt   rt   ru   rÀ  �  s   €ÿ
zTCPSocketListener.acloserS  r9  ©r„   r{  rÂ   )rn   ro   rp   rv  rÃ  rÇ  rƒ   rH  r)  rƒ  rÀ  rt   rt   rt   ru   ru  e  s   
 

ru  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 )Nrw  F)Ú_UNIXSocketListener__raw_socketr   r~   rI   rz  rÇ  r?  rt   rt   ru   rƒ   ¢  s   

zUNIXSocketListener.__init__r„   r{  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…   )r~   rC  r†  ©Ú_r‡   rt   ru   rº   ´  s    z+UNIXSocketListener.accept.<locals>.<lambda>)rd  r¿  rz  r†  rƒ  ÚsetblockingrT  rW  rí   r   r~   rI  rÐ   rì   r5  rÇ  r=   r;   )r‚   r‚  rˆ  r¬  rú   rt   r‡   ru   rƒ  ¨  s0   €
û
ÿ€üôÿzUNIXSocketListener.acceptr�   c                 Ã  s   �d| _ | j ¡  d S r®  )rÇ  r†  r�   r‡   rt   rt   ru   rÀ  ½  s   €zUNIXSocketListener.aclosec                 C  r>  r…   )r†  r‡   rt   rt   ru   r)  Á  r?  zUNIXSocketListener._raw_socketNrS  r„  rÂ   r9  )rn   ro   rp   rƒ   rƒ  rÀ  rH  r)  rt   rt   rt   ru   r…  ¡  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 )Ú	UDPSocketrÿ  úasyncio.DatagramTransportr  r  c                 C  r  r  r  r"  rt   rt   ru   rƒ   Ç  ó
   


zUDPSocket.__init__r„   r#  c                 C  r$  r%  r'  r‡   rt   rt   ru   r)  Ð  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‡   rt   rt   ru   rÀ  Ô  ó
   €

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   rd  r¿  rÉ  rú  rÚ  rÏ  rû  r  rÍ   r.  r/  rÇ  r=   r;   r‡   rt   rt   ru   r¾  Û  s   €÷
üözUDPSocket.receiver«  rS   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!  rd  r¿  rÉ  rü  rÍ   rÇ  r=   rÚ  rÏ  r;   Úsendto©r‚   r«  rt   rt   ru   rÑ  ì  ó   €
"øzUDPSocket.sendN©rÿ  r‹  r  r  r9  rÂ   )r„   r�  )r«  rS   r„   r�   ©	rn   ro   rp   rƒ   rH  r)  rÀ  r¾  rÑ  rt   rt   rt   ru   rŠ  Æ  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"  rt   rt   ru   rƒ   ù  rŒ  zConnectedUDPSocket.__init__r„   r#  c                 C  r$  r%  r'  r‡   rt   rt   ru   r)    r*  zConnectedUDPSocket._raw_socketr�   c                 Ã  r�  r®  rŽ  r‡   rt   rt   ru   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‚   Úpacketrt   rt   ru   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”  rt   rt   ru   rÑ     r•  zConnectedUDPSocket.sendNr–  r9  rÂ   ©r„   rº  rÒ  r—  rt   rt   rt   ru   r˜  ø  s    
	

r˜  c                   @  ó    e Zd Zd
dd„Zddd„Zd	S )ÚUNIXDatagramSocketr„   rT   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   rd  r¿  r   r)  ÚrecvfromrW  rK  r5  rQ  r=   r;   ©r‚   r›   r½  rú   rt   rt   ru   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   rd  r¿  r!  r)  r“  rW  rO  r5  rQ  r=   r;   ©r‚   r«  r›   rú   rt   rt   ru   rÑ  >  r¡  zUNIXDatagramSocket.sendN)r„   rT   )r«  rT   r„   r�   ©rn   ro   rp   r¾  rÑ  rt   rt   rt   ru   rœ  ,  ó    
rœ  c                   @  r›  )ÚConnectedUNIXDatagramSocketr„   rº  c                 Ã  r�  rž  )r   rd  r¿  r   r)  rV  rW  rK  r5  rQ  r=   r;   r   rt   rt   ru   r¾  Q  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   rd  r¿  r!  r)  rÑ  rW  rO  r5  rQ  r=   r;   r¢  rt   rt   ru   rÑ  b  r¡  z ConnectedUNIXDatagramSocket.sendNrš  rÒ  r£  rt   rt   rt   ru   r¥  P  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 )rF   )Ú_eventr„   rb   c                 C  r  r…   r  ©r  rt   rt   ru   r  €  r  zEvent.__new__r�   c                 C  r
  r…   )rí   rF   rª  r‡   rt   rt   ru   rƒ   ƒ  rà  zEvent.__init__c                 C  rÞ  r…   )rª  rë   r‡   rt   rt   ru   rë   †  rà  z	Event.setr÷   c                 C  ó
   | j  ¡ S r…   )rª  r+  r‡   rt   rt   ru   r+  ‰  r  zEvent.is_setc                 Ã  s0   �|   ¡ rt ¡ I d H  d S | j ¡ I d H  d S r…   )r+  rd  r¿  rª  rÍ   r‡   rt   rt   ru   rÍ   Œ  s   €z
Event.waitr4   c                 C  s   t t| jjƒƒS r…   )r4   r0  rª  Ú_waitersr‡   rt   rt   ru   Ú
statistics’  rã  zEvent.statisticsNrÀ   rÂ   rD  )r„   r4   )
rn   ro   rp   rG  r  rƒ   rë   r+  rÍ   r®  rt   rt   rt   ru   rF   }  s    




rF   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 )rH   )Ú_fast_acquireÚ_owner_taskr­  F©Úfast_acquirer²  r÷   r„   rb   c                C  r  r…   r  ©r  r²  rt   rt   ru   r  ™  r  zLock.__new__r�   c                C  s   || _ d | _tƒ | _d S r…   )r¯  r°  r   r­  )r‚   r²  rt   rt   ru   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)r0   rí   rî   r   r°  r­  rd  rÈ  r¯  re  r   Úreleaser§   r   rc  rÈ   r"  r¥   )r‚   r³   Úfutr«  rt   rt   ru   Úacquire¡  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´  )r0   rí   rî   r   r°  r­  r§   r@   )r‚   r³   rt   rt   ru   Úacquire_nowaitÅ  s   
zLock.acquire_nowaitc                 C  s
   | j d uS r…   )r°  r‡   rt   rt   ru   ÚlockedÐ  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¶  rt   rt   ru   rµ  Ó  s   

zLock.releaser5   c                 C  s*   | j rt| j ƒnd }t|  ¡ |t| jƒƒS r…   )r°  ÚAsyncIOTaskInfor5   r¹  r0  r­  )r‚   Ú	task_infort   rt   ru   r®  å  s   zLock.statisticsN)r²  r÷   r„   rb   )r²  r÷   r„   r�   rÂ   rD  )r„   r5   )rn   ro   rp   rG  r  rƒ   r·  r¸  r¹  rµ  r®  rt   rt   rt   ru   rH   –  s    

$

rH   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 )%rL   )r¯  Ú
_max_valueÚ_valuer­  NF©Ú	max_valuer²  Úinitial_valuerR  r¿  rL  r²  r÷   r„   rb   c                C  r  r…   r  ©r  rÀ  r¿  r²  rt   rt   ru   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¤  rt   ru   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­  rd  rÈ  r¯  re  r   rµ  rí   r   rc  rÈ   r"  r¥   ©r‚   r¶  rt   rt   ru   r·    s:   €üþûû÷zSemaphore.acquirec                 C  s    | j dkrt‚|  j d8  _ d S rÂ  )r½  r@   r‡   rt   rt   ru   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Ã  rt   rt   ru   rµ  (  s   

zSemaphore.releasec                 C  r>  r…   )r½  r‡   rt   rt   ru   r@  6  r?  zSemaphore.valuec                 C  r>  r…   )r¼  r‡   rt   rt   ru   r¿  :  r?  zSemaphore.max_valuerJ   c                 C  s   t t| jƒƒS r…   )rJ   r0  r­  r‡   rt   rt   ru   r®  >  rà  zSemaphore.statistics)rÀ  rR  r¿  rL  r²  r÷   r„   rb   )rÀ  rR  r¿  rL  r²  r÷   rÂ   rì  rí  )r„   rJ   )rn   ro   rp   rG  r  rƒ   r·  r¸  rµ  rH  r@  r¿  r®  r²  rt   rt   r¤  ru   rL   ê  s     ûû


rL   c                   @  sÂ   e Zd ZdZd2dd„Zd3dd	„Zd4dd„Zd5dd„Zed6dd„ƒZ	e	j
d7dd„ƒZ	ed8dd„ƒZed6dd„ƒZd4dd„Zd4d d!„Zd9d$d%„Zd4d&d'„Zd9d(d)„Zd4d*d+„Zd9d,d-„Zd:d/d0„Zd1S );rD   )Ú
_borrowersÚ_total_tokensÚ_wait_queueÚtotal_tokensr  r„   rb   c                 C  r  r…   r  ©r  rÇ  rt   rt   ru   r  E  r  zCapacityLimiter.__new__c                 C  s    d| _ tƒ | _tƒ | _|| _d S r  )rÅ  rë   rÄ  r   rÆ  rÇ  )r‚   rÇ  rt   rt   ru   rƒ   H  s   
zCapacityLimiter.__init__r�   c                 Ã  s   �|   ¡ I d H  d S r…   )r·  r‡   rt   rt   ru   rb  N  ó   €zCapacityLimiter.__aenter__r‰   rŠ   r‹   rŒ   r�   rŽ   c                 Ã  s   �|   ¡  d S r…   )rµ  r‘   rt   rt   ru   rj  Q  s   €zCapacityLimiter.__aexit__c                 C  r>  r…   )rÅ  r‡   rt   rt   ru   rÇ  Y  r?  zCapacityLimiter.total_tokensr@  c                 C  s”   t |tƒst |¡stdƒ‚|dk rtdƒ‚|| _| jrDt| j	ƒ| jk rH| jj
dd�\}}| j	 |¡ | ¡  | jrFt| j	ƒ| jk 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©Úlast)rü   rR  r+  ÚisinfrŠ  r¥   rÅ  rÆ  r0  rÄ  Úpopitemr  rë   )r‚   r@  ÚborrowerÚeventrt   rt   ru   rÇ  ]  s   &ýrR  c                 C  s
   t | jƒS r…   )r0  rÄ  r‡   rt   rt   ru   Úborrowed_tokensn  ó   
zCapacityLimiter.borrowed_tokensc                 C  s   | j t| jƒ S r…   )rÅ  r0  rÄ  r‡   rt   rt   ru   Úavailable_tokensr  ó   z CapacityLimiter.available_tokensc                 C  sH   | j r t| jƒ| jk r"| j jdd�\}}| j |¡ | ¡  dS dS dS )z3Hand a free token to the next task in line, if any.FrÊ  N)rÆ  r0  rÄ  rÅ  rÍ  r  rë   ©r‚   rÎ  rÏ  rt   rt   ru   Ú_notify_next_waiterv  s
   ýz#CapacityLimiter._notify_next_waiterc                 C  ó   |   tƒ ¡ d S r…   )Úacquire_on_behalf_of_nowaitr   r‡   rt   rt   ru   r¸  }  rã  zCapacityLimiter.acquire_nowaitrÎ  r  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Æ  r0  rÅ  r@   r  ©r‚   rÎ  rt   rt   ru   r×  €  s   
ÿz+CapacityLimiter.acquire_on_behalf_of_nowaitc                 Ã  s   �|   tƒ ¡I d H S r…   )Úacquire_on_behalf_ofr   r‡   rt   rt   ru   r·  ‹  rÉ  zCapacityLimiter.acquirec                 Ã  sÀ   �t  ¡ I d H  z|  |¡ W n9 tyH   t ¡ }|| j|< z| ¡ I d H  W Y d S  tyG   | j 	|d ¡ | 
¡ rF| j |¡ |  ¡  ‚ w w z
t  ¡ I d H  W d S  ty_   |  ¡  ‚ w r…   )rd  rÈ  r×  r@   rí   rF   rÆ  rÍ   rf  rç   r+  rÄ  r  rÕ  re  rµ  rÔ  rt   rt   ru   rÙ  Ž  s.   €
úûþz$CapacityLimiter.acquire_on_behalf_ofc                 C  rÖ  r…   )Úrelease_on_behalf_ofr   r‡   rt   rt   ru   rµ  ¥  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Ø  rt   rt   ru   rÚ  ¨  s   ÿþÿz$CapacityLimiter.release_on_behalf_ofr3   c                 C  s   t | j| jt| jƒt| jƒƒS r…   )r3   rÐ  rÇ  ÚtuplerÄ  r0  rÆ  r‡   rt   rt   ru   r®  ²  s   üzCapacityLimiter.statisticsN)rÇ  r  r„   rb   )rÇ  r  rÂ   rÁ   rE  rF  rì  )rÎ  r  r„   r�   )r„   r3   )rn   ro   rp   rG  r  rƒ   rb  rj  rH  rÇ  rI  rÐ  rÒ  rÕ  r¸  r×  r·  rÙ  rµ  rÚ  r®  rt   rt   rt   ru   rD   B  s,    











rD   Ú_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   r~   r   Ú_signal_queuerí   r   rU  rë   Ú_handled_signals)r‚   rÞ  rt   rt   ru   rƒ   Ä  s
   
z_SignalReceiver.__init__r¾   r$   r„   r�   c                 C  s*   | j  |¡ | j ¡ s| j d ¡ d S d S r…   )rá  rc  rU  r»   rÐ   )r‚   r¾   rt   rt   ru   Ú_deliverË  s   
ÿz_SignalReceiver._deliverrb   c                 C  s2   t | jƒD ]}| j || j|¡ | j |¡ q| S r…   )rë   rà  r~   Úadd_signal_handlerrã  râ  r  )r‚   Úsigrt   rt   ru   rˆ   Ð  s   z_SignalReceiver.__enter__r‰   rŠ   r‹   rŒ   r�   rŽ   c                 C  s   | j D ]}| j |¡ qd S r…   )râ  r~   Úremove_signal_handler)r‚   r‰   r‹   r�   rå  rt   rt   ru   r’   ×  s   
ÿz_SignalReceiver.__exit__c                 C  s   | S r…   rt   r‡   rt   rt   ru   Ú	__aiter__à  s   z_SignalReceiver.__aiter__c                 Ã  s6   �t  ¡ I d H  | jst ¡ | _| jI d H  | j ¡ S r…   )rd  r¿  rá  rí   r   rU  r.  r‡   rt   rt   ru   Ú	__anext__ã  s   €

z_SignalReceiver.__anext__N)rÞ  rß  )r¾   r$   r„   r�   rÀ   rÁ   )r„   rÝ  )r„   r$   )	rn   ro   rp   rƒ   rã  rˆ   r’   rç  rè  rt   rt   rt   ru   rÝ  Ã  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æ   rK  rø   rž  rƒ   r=  Úget_nameÚweakrefÚrefrp  )r‚   r³   r!  rK  rŸ   r¤  rt   ru   rƒ   ò  s   
zAsyncIOTaskInfo.__init__r„   r÷   c                 C  sT   |   ¡  }sdS |jst|jtjƒr|j ¡ rdS t |¡ }r(|j	 }r(|j
S dS )NFT)rp  r0  rü   r1  rí   r   rÈ   rï   ræ   rð   r*  )r‚   r³   r!  rð   rt   rt   ru   Úhas_pending_cancellationþ  s   ÿþ
z(AsyncIOTaskInfo.has_pending_cancellation)r³   r¸   rD  )rn   ro   rp   rƒ   rì  r²  rt   rt   r¤  ru   rº  ñ  s    rº  c                   @  s˜   e Zd ZU ded< ddddœdAdd„ZdBdd„ZdCdd„ZdDdd„ZdEdd„ZdFd$d%„Z	dGd&d'„Z
dHd*d+„ZdId3d4„ZdJd8d9„ZdKd;d<„ZdLd?d@„ZdS )MÚ
TestRunnerzBMemoryObjectSendStream[tuple[Awaitable[Any], asyncio.Future[Any]]]Ú_send_streamNF)rw   Ú
use_uvlooprx   rw   ry   rï  r÷   rx   rz   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   rv   )	r  ÚplatformÚuvlooprµ   Úwinloopra   Ú_runnerr`  Ú_runner_task)r‚   rw   rï  rx   rò  ró  rt   rt   ru   rƒ   	  s   

zTestRunner.__init__rb   c                 C  s   | j  ¡  |  ¡  | j¡ | S r…   )rô  rˆ   rœ   Úset_exception_handlerÚ_exception_handlerr‡   rt   rt   ru   rˆ   (	  s   
zTestRunner.__enter__r‰   rŠ   r‹   rŒ   r�   rŽ   c                 C  s   | j  |||¡ d S r…   )rô  r’   r‘   rt   rt   ru   r’   -	  s   zTestRunner.__exit__r   c                 C  r¬  r…   )rô  rœ   r‡   rt   rt   ru   rœ   5	  r  zTestRunner.get_loopc                 C  s$   zt  ¡  W dS  ty   Y dS w r)  )rí   r   r§   r‡   rt   rt   ru   Ú
is_running8	  s   ÿzTestRunner.is_runningr›   r@  rž   údict[str, Any]c                 C  s2   t | d¡tƒr| j |d ¡ d S | |¡ d S )NrÆ   )rü   ræ   rÑ   r`  rc  Údefault_exception_handler)r‚   r›   rž   rt   rt   ru   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)r`  r0  ri   )r‚   rg   rt   rt   ru   Ú_raise_async_exceptionsG	  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×   rf  rÒ   rü   rÑ   rÐ   )r‚   rü  rÿ  rŸ   rË   Úretvalrú   rt   rt   ru   Ú_run_tests_and_fixturesR	  s0   €€
ÿ€ü
€ðPÿz"TestRunner._run_tests_and_fixturesrŽ  ú Callable[P, Awaitable[T_Retval]]r×   úP.argsr£  úP.kwargsr¡   c                Ï  sr   �| j stttt tjf  dƒ\| _}|  ¡  	|  
|¡¡| _ ||i |¤Ž}|  ¡  ¡ }| j ||f¡ |I d H S r|  )rõ  rB   rÛ  r   r,   rí   r   rî  rœ   r   r  rÙ   Úsend_nowait)r‚   rŽ  r×   r£  rü  rŸ   rË   rt   rt   ru   Ú_call_in_runner_taskm	  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 stoprt   )rœ   r•   r  Úasendrû  ÚStopAsyncIterationrÀ  r§   )r‚   r  r£  ÚasyncgenÚfixturevaluert   rt   ru   Ú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  rt   rt   ru   Ú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Ñ   r`  rc  rf  rõ  r»   r¼   rî  r�   r   rû  )r‚   r  r£  rÿ  rú   rt   rt   ru   Úrun_test£	  s:   ÿ€

ÿÿýÿózTestRunner.run_test)rw   ry   rï  r÷   rx   rz   r„   r�   rÀ   rÁ   rÃ   rD  )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�   )rn   ro   rp   rÃ  rƒ   rˆ   r’   rœ   rø  r÷  rû  r  r  r  r  r  rt   rt   rt   ru   rí  	  s"   
 û









rí  c                      s0   e Zd ZdZd‡ fdd„Zd‡ fdd„Z‡  ZS )	Ú_ProcessStreamProtocolzó
    A subprocess protocol that allows us to be notified of ``process_exited``

    asyncio's own ``Process.wait()`` only resolves once every pipe transport has
    disconnected so to get same semantics as on trio and uvloop we need this.
    r„   r�   c                   s"   t ƒ jdt ¡ d� t ¡ | _d S )Nr¸  )Úlimitr›   )rž  rƒ   rí   r   rF   Úexitedr‡   r¤  rt   ru   rƒ   É	  s   z_ProcessStreamProtocol.__init__c                   s   t ƒ  ¡  | j ¡  d S r…   )rž  Úprocess_exitedr  rë   r‡   r¤  rt   ru   r  Î	  s   
z%_ProcessStreamProtocol.process_exitedrÂ   )rn   ro   rp   rO  rƒ   r  r²  rt   rt   r¤  ru   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 )ård  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…   )r0   rí   rî   r   Úset_namerV   r  rï   )r³   ©r×   rŽ  rt   ru   ÚwrapperÜ	  s   €z#AsyncIOBackend.run.<locals>.wrapperrw   rx   rï  Frð  r   rv   )r„   r¡   )	r   ræ   r  rñ  rò  rµ   ró  ra   r¨   )r  rŽ  r×   r£  r  r  rw   rx   rò  ró  Úrunnerrt   r  ru   r¨   Ô	  s   


$ÿzAsyncIOBackend.runr  c                 C  ó   t ƒ S r…   )r   r«  rt   rt   ru   Úcurrent_tokenö	  r?  zAsyncIOBackend.current_tokenr  c                 C  s
   t ƒ  ¡ S r…   )r   r-  r«  rt   rt   ru   r   ú	  rÑ  zAsyncIOBackend.current_timeútype[BaseException]c                 C  s   t S r…   )r   r«  rt   rt   ru   Úcancelled_exception_classþ	  s   z(AsyncIOBackend.cancelled_exception_classr�   c                 Ã  s   �t dƒI d H  d S r  ©r	   r«  rt   rt   ru   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  r2  r	   r  rñ   )r  r³   rð   rt   rt   ru   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   )rN   r	   r«  rt   rt   ru   re  
  s   €"ÿz)AsyncIOBackend.cancel_shielded_checkpointÚdelayc                 Ã  s   �t |ƒI d H  d S r…   r$  )r  r&  rt   rt   ru   r	   
  r%  zAsyncIOBackend.sleepFr  r  r  r÷   rN   c                C  s   t ||d�S )Nr  rM   r  rt   rt   ru   Ú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  rt   rt   ru   Úcurrent_effective_deadline(
  s(   
ÿûþø
z)AsyncIOBackend.current_effective_deadlineúabc.TaskGroupc                 C  r   r…   )r^  r«  rt   rt   ru   Úcreate_task_group?
  r?  z AsyncIOBackend.create_task_groupÚ	BaseEventc                 C  r   r…   rE   r«  rt   rt   ru   Úcreate_eventC
  r?  zAsyncIOBackend.create_eventr²  ÚBaseLockc                C  s
   t |d�S )Nr±  rG   r³  rt   rt   ru   Úcreate_lockG
  rÑ  zAsyncIOBackend.create_lockNr¾  rÀ  rR  r¿  rL  ÚBaseSemaphorec                C  s   t |||d�S )Nr¾  rK   rÁ  rt   rt   ru   Úcreate_semaphoreK
  s   zAsyncIOBackend.create_semaphorerÇ  ÚBaseCapacityLimiterc                 C  ó   t |ƒS r…   rC   rÈ  rt   rt   ru   Úcreate_capacity_limiterU
  ræ  z&AsyncIOBackend.create_capacity_limiterú&Callable[[Unpack[PosArgsT]], T_Retval]Úabandon_on_cancelÚlimiterúBaseCapacityLimiter | 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ƒ }	|sbt|	||ƒ}
|
 ¡  | |
¡ |	j|
jtƒ d� n&| ¡ }
|  ¡ }|rˆ||d j tjk rwn| ¡ }|j |j¡ | ¡  |sltƒ }| 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_limiterrN   rí   r   r¡   rö   r˜  rÚ   r  rì   r°  r   rç   r   r¡  r±  r.  ró   Úremove_done_callbackr   r¨   r9   rñ   rŸ  r¯  )r  rŽ  r×   r6  r7  rœ  rš  r7  rË   ró   ÚworkerÚnowÚexpired_workerrž   Úworker_scopert   rt   ru   Úrun_sync_in_worker_threadY
  sX   €
ü
ÿÿõÝÿ.ÿ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û   r<  )r:   r©  r2  r   r=  r  rñ   )r  r7  rt   rt   ru   Ú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®  )r0   rí   rî   r   r  rï   r  r  r  r   Ú
concurrentÚfuturesrý   )Ú__tracebackhide__r³   rú   ©r×   rŽ  r7  rt   ru   Útask_wrapper§
  s$   €ÿý€ÿÿz:AsyncIOBackend.run_async_from_thread.<locals>.task_wrapperr   rí   r©  rÔ   )r„   rÝ   )r0   r:   r!  Únative_tokenrª  r?   r   r¨   r9   r±   rí   Úrun_coroutine_threadsafer–  )r  rŽ  r×   rB  rG  r›   rž   r¬  rt   rF  ru   Úrun_async_from_thread 
  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í   )r9   rÐ   rf  rÒ   rü   rÑ   r   ©r×   r¬  rŽ  rt   ru   r  Ê
  s   

ÿ€þz4AsyncIOBackend.run_sync_from_thread.<locals>.wrapperr   rÂ   )
r   r0   r:   r!  rH  rª  r?   r   r½   r–  )r  rŽ  r×   rB  r  r›   rt   rK  ru   Úrun_sync_from_threadÃ
  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tfƒr1|j	t
|f|||dœ|¤ŽI d H \}}n|jt
g|¢R |||dœ|¤ŽI d H \}}tj |||¡}	|	jrVt|	jƒnd }
|	jr`t|	jƒnd }|	jrjt|	jƒnd }t|	|
|||j|ƒS )N)rè  rê  rë  )r¿  rü   r"   ÚosÚfspathrí   r   rý   rº  Úsubprocess_shellr  Úsubprocess_execÚ
subprocessrÓ  rè  rÄ  rê  r¶  rë  r  )r  rM  rè  rê  rë  r£  r›   rÿ  r  rõ  Ústdin_streamÚstdout_streamÚstderr_streamrt   rt   ru   Úopen_processÞ
  sN   €


þûú	ÿþûú	úzAsyncIOBackend.open_processrš  r÷  c                 C  s&   t t|ƒdd� tƒ  tt|ƒ¡ d S )Nz AnyIO process pool shutdown taskr{  )r   rø  rö   rì   r   rö  )r  rš  rt   rt   ru   Ú#setup_process_pool_exit_at_shutdown  s   þÿz2AsyncIOBackend.setup_process_pool_exit_at_shutdownÚhostrý   ÚportÚlocal_addressúIPSockAddrType | Noner{  c                 Ã  sB   �t ttjtf tƒ jt|||d�I d H ƒ\}}| ¡  t||ƒS )N)Ú
local_addr)	r0   rÛ  rí   r  rù  r   Úcreate_connectionr-  r  )r  rZ  r[  r\  rÿ  r  rt   rt   ru   Ú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…   ©rM  r‡  ©r›   r=  rt   ru   rº   3  ó   
 z-AsyncIOBackend.connect_unix.<locals>.<lambda>)r¿  r   r&  ÚAF_UNIXr‰  ÚconnectrW  rí   r   rN  rÐ   rì   rf  r�   rT  )r  ra  r¬  rt   rf  ru   Úconnect_unix'  s&   €

÷þøzAsyncIOBackend.connect_unixÚsockr#  rR   c                 C  r3  r…   )ru  ©r  rk  rt   rt   ru   Úcreate_tcp_listener;  ræ  z"AsyncIOBackend.create_tcp_listenerc                 C  r3  r…   )r…  rl  rt   rt   ru   Ú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)r^  Úremote_addrro  rq  )r   Úcreate_datagram_endpointr  rÆ   r�   rŠ  r˜  )r  ro  r\  rp  rq  rÿ  r  rt   rt   ru   Úcreate_udp_socketC  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                   rd  r…   re  r‡  rf  rt   ru   rº   i  rg  z<AsyncIOBackend.create_unix_datagram_socket.<locals>.<lambda>)r¿  r   ri  rW  rí   r   rN  rÐ   rì   rf  r�   r¥  rœ  )r  r=  rv  r¬  rt   rf  ru   Úcreate_unix_datagram_socket[  s&   €
÷þøz*AsyncIOBackend.create_unix_datagram_socketr   ©ro  rg  ÚprotoÚflagsúbytes | str | Noneústr | int | Noneúint | AddressFamilyrg  úint | SocketKindr{  r|  ú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 )Nrz  )r   Úgetaddrinfo)r  rZ  r[  ro  rg  r{  r|  rt   rt   ru   r‚  s  s   €ÿzAsyncIOBackend.getaddrinfoÚsockaddrrQ   útuple[str, str]c                 Ã  s   �t ƒ  ||¡I d H S r…   )r   Úgetnameinfo)r  rƒ  r|  rt   rt   ru   r…  Š  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í   rt  rt   ©rr  r¶  r¦  rC  rt   ru   rô   Ÿ  ó   
ÿÿz(AsyncIOBackend.wait_readable.<locals>.cbr   ©Úget_selectorrÂ   )r§  ræ   r9  rë   rü   rR  rR  r<   r   rÙ   rI  rñ  Ú$anyio._core._asyncio_selector_threadr‹  rC  r  r=   ©r  r†  r›   rô   r‹  ÚselectorÚsuccessrt   rˆ  ru   Ú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®  r‡  rt   ©rr  r¶  rM  r¨  rt   ru   rô   Ô  r‰  z(AsyncIOBackend.wait_writable.<locals>.cbr   rŠ  rÂ   )r©  ræ   r9  rë   rü   rR  rR  r<   r   rÙ   rN  rñ  rŒ  r‹  rM  r  r=   r�  rt   r’  ru   Úwait_writableÅ  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   rŠ  )rü   rR  rR  r   r©  ræ   r9  rç   r  rÐ   rí   rt  rM  rñ  rŒ  r‹  r§  rC  )r  r†  rr  r›   r¨  r¶  r‹  r¦  rt   rt   ru   Únotify_closingú  sX   ÿÿÿýÿÿÿýzAsyncIOBackend.notify_closingc                 Ã  s(   �t tdƒr|jtjkrt|ƒS t|ƒS )Nrh  )r—   r&  ro  rh  r…  ru  rl  rt   rt   ru   Úwrap_listener_socket+  s   €z#AsyncIOBackend.wrap_listener_socketr  c                 Ã  ó&   �t ƒ jt|d�I d H \}}t||ƒS ©N)rk  )r   r_  rù  r  ©r  rk  rÿ  r  rt   rt   ru   Úwrap_stream_socket2  ó
   €ÿ
z!AsyncIOBackend.wrap_stream_socketrT  c                 Ã  ó
   �t |ƒS r…   )rT  rl  rt   rt   ru   Úwrap_unix_stream_socket9  ó   €z&AsyncIOBackend.wrap_unix_stream_socketrŠ  c                 Ã  r–  r—  )r   rt  r  rŠ  r˜  rt   rt   ru   Úwrap_udp_socket=  rš  zAsyncIOBackend.wrap_udp_socketr˜  c                 Ã  r–  r—  )r   rt  r  r˜  r˜  rt   rt   ru   Úwrap_connected_udp_socketD  rš  z(AsyncIOBackend.wrap_connected_udp_socketrœ  c                 Ã  r›  r…   )rœ  rl  rt   rt   ru   Úwrap_unix_datagram_socketK  r�  z(AsyncIOBackend.wrap_unix_datagram_socketr¥  c                 Ã  r›  r…   )r¥  rl  rt   rt   ru   Ú#wrap_connected_unix_datagram_socketO  s   €z2AsyncIOBackend.wrap_connected_unix_datagram_socketrD   c                 C  s4   zt  ¡ W S  ty   tdƒ}t  |¡ | Y S w )Né(   )rÜ  ræ   r9  rD   rë   )r  r7  rt   rt   ru   r:  U  s   

ýz-AsyncIOBackend.current_default_thread_limiterrÞ  r$   ú.AbstractContextManager[AsyncIterator[Signals]]c                 G  r3  r…   )rÝ  )r  rÞ  rt   rt   ru   Úopen_signal_receiver^  s   z#AsyncIOBackend.open_signal_receiverr6   c                 C  s
   t tƒ ƒS r…   )rº  r   r«  rt   rt   ru   Úget_current_taskd  rÑ  zAsyncIOBackend.get_current_taskúSequence[TaskInfo]c                 C  s   dd„ t ƒ D ƒS )Nc                 S  s   g | ]
}|  ¡ st|ƒ‘qS rt   )r»   rº  )Ú.0r³   rt   rt   ru   Ú
<listcomp>j  s    z4AsyncIOBackend.get_running_tasks.<locals>.<listcomp>)r   r«  rt   rt   ru   Úget_running_tasksh  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   r1  r»   r	   )r  Ú	this_taskr³   r6  rt   rt   ru   Úwait_all_tasks_blockedl  s   €
þöz%AsyncIOBackend.wait_all_tasks_blockedrí  c                 C  s   t di |¤ŽS )Nrt   )rí  )r  r  rt   rt   ru   Úcreate_test_runner|  s   z!AsyncIOBackend.create_test_runner)
rŽ  r  r×   r  r£  rù  r  rù  r„   r¡   )r„   r  rE  )r„   r"  rÂ   )r&  r  r„   r�   )r  r  r  r÷   r„   rN   )r„   r*  )r„   r,  )r²  r÷   r„   r.  )rÀ  rR  r¿  rL  r²  r÷   r„   r0  )rÇ  r  r„   r2  )FN)
rŽ  r5  r×   r  r6  r÷   r7  r8  r„   r¡   )rŽ  r�  r×   r  rB  r  r„   rÝ   )rŽ  r5  r×   r  rB  r  r„   r¡   )rM  rN  rè  rO  rê  rO  rë  rO  r£  r,   r„   rÓ  ©rš  r÷  r„   r�   r…   )rZ  rý   r[  rR  r\  r]  r„   r{  )ra  rb  r„   rc  )rk  r#  r„   rR   )
ro  r%   r\  r]  rp  r]  rq  r÷   r„   rr  )r=  r#  rv  rw  r„   rx  )rZ  r}  r[  r~  ro  r  rg  r€  r{  rR  r|  rR  r„   r�  )r   )rƒ  rQ   r|  rR  r„   r„  )r†  rZ   r„   r�   )rk  r#  r„   r  )rk  r#  r„   rT  )rk  r#  r„   rŠ  )rk  r#  r„   r˜  )rk  r#  r„   rœ  )rk  r#  r„   r¥  )r„   rD   )rÞ  r$   r„   r£  )r„   r6   )r„   r¦  )r  rù  r„   rí  )3rn   ro   rp   Úclassmethodr¨   r!  r   r#  r¿  rÈ  re  r	   r+  r,  r'  r)  r+  r-  r/  r1  r4  r@  rA  rJ  rL  rX  rY  r`  rj  rm  rn  ru  ry  r‚  r…  r�  r“  r”  r•  r™  rœ  rž  rŸ  r   r¡  r:  r¤  r¥  r©  r«  r¬  rt   rt   rt   ru   rd  Ó	  sÌ    !ÿû	û:"1	ÿøÿ440rd  )r›   r   r„   r�   )r„   r¸   )r³   r¸   r„   r÷   )rú   r   r„   r÷   )rš  rî  rp  r  r„   r�   r­  )ÇÚ
__future__r   r_  rí   Úconcurrent.futuresrC  r+  rP  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·   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/   r0   r1   Ú r3   r4   r5   r6   r7   Ú_core._eventloopr8   r9   r:   Ú_core._exceptionsr;   r<   r=   r>   r?   r@   Ú_core._socketsrA   Ú_core._streamsrB   Ú_core._synchronizationrD   r2  rF   r,  rH   r.  rI   rJ   rL   r0  Ú_core._tasksrN   ÚBaseCancelScoperO   rP   rQ   rR   rS   rT   Ú
abc._tasksrU   rV   rW   ÚlowlevelrX   rY   Ú	_typeshedrZ   Úabc._eventloopr[   Ústreams.memoryr\   r]   r  r  ra   rb   rc   rd   Úenumre   rf   rg   rh   Úexceptiongroupri   Útyping_extensionsÚEnumrj   r”   r˜   r¡   rÝ   rß   rá   râ   rã   rÃ  rö   rù   r  r  rï   Ú
TaskStatusrP  Úeager_task_factoryry  r]  r^  rÛ  rf  Ú_Retval_Queue_Typer˜  r³  r´  ÚByteReceiveStreamr¶  ÚByteSendStreamrÄ  rÓ  rö  rø  ÚProtocolrù  r  r  r:  rT  ru  r…  rŠ  r˜  rœ  r¥  r§  r©  rÜ  rÝ  rº  rí  rT  ÚSubprocessStreamProtocolr  rd  Úbackend_classrt   rt   rt   ru   Ú<module>   s    $	(
$	  



(
  X  Uÿ
F
&"X.w<%24$$TXy. 2     3