o
    í6WjÐ— ã                   @  s¢  U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
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¡ej¿jÀƒ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   úg/home/esfera/Documents/content_generation/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¤   ¶   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)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  s.   


ý€
ÿ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 ]>}| ¡ 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Ú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  w  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~   r0  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~   r6  rp   rp   rq   r  Ÿ  s   


ÿc                 C  r4  r�   )rü   rƒ   rp   rp   rq   r*  ©  r5  zCancelScope.cancel_calledc                 C  r4  r�   )rÿ   rƒ   rp   rp   rq   Úcancelled_caught­  r5  zCancelScope.cancelled_caughtc                 C  r4  r�   )r  rƒ   rp   rp   rq   r  ±  r5  zCancelScope.shieldc                 C  s(   | j |kr|| _ |s|  ¡  d S d S d S r�   )r  r  r7  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�   )r0  r1  r€   r‹   ©r€   r	  ©r6  r	  r€   r‹   )r6  rð   r€   r‹   )rj   rk   rl   Ú	__slots__r#  r$  r  r   r„   rŽ   Úpropertyr"  r  r  r  r  r¸   r  Úsetterr*  r8  r  rp   rp   rp   rq   rM   ~  s6    ÿ

b


2	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__rA  ú
int | Nonerè   úCancelScope | Nonec                 C  ó   || _ || _d S r�   ©rA  rè   )r~   rA  rè   rp   rp   rq   r   Ê  ó   
zTaskState.__init__N)rA  rC  rè   rD  )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.FuturerA  Úintc                 C  rE  r�   )Ú_futureÚ
_parent_id)r~   rÆ   rA  rp   rp   rq   r   Ø  rG  z_AsyncioTaskStatus.__init__Nr6  ú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)rL  rË   rå   ÚInvalidStateErrorrÃ   r£   r/   ræ   r   rM  rç   rA  )r~   r6  r¯   rp   rp   rq   ÚstartedÜ  s   
ÿþÿÿz_AsyncioTaskStatus.started)rÆ   rJ  rA  rK  r�   )r6  rN  r€   r‹   )rj   rk   rl   r   rP  rp   rp   rp   rq   rI  ×  s    
rI  ©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)rU  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   rV  Úappendr   r  rM   rÔ   rW  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  rW  rË   rO  rÁ   r   rõ   rø   rÃ   r·   rV  rY  r"  r¸   rÍ   r£   )rf  r  ró   Úe©r~   r¯   rc  rp   rq   Ú	task_doneD  sP   ÿÿÿ€ü
ÿÿÿz#TaskGroup._spawn.<locals>.task_doneÚ__code__Ú__closure__r   )r—   rb  ©rb  rF  rg  )rf  r´   r€   r‹   )r3  r   rè   rê   rN   rå   r   Ú	_run_coroÚget_task_factoryr­   rS  Úcell_contentsrb  r   r  rç   r  r  r  r  Úfuture_add_to_awaited_byÚadd_done_callback)r~   r›   rb  rc  rl  rA  Úhandler—   Úwrapper_coroÚfactoryÚclosureÚcustom_task_constructorrp   rk  rq   Ú_spawn>  s0   /

ÿÿ

ÿ
zTaskGroup._spawn)rb  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.ro  )rõ   r   Ú	TypeErrorÚ	__class__rl   rU  rè   rû   rŒ   r£   r¤   rz  )r~   r›   rb  rš   rp   rp   rq   r   ‘  s   
ÿzTaskGroup.create_taskF)rb  Ú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  )rU  rè   rû   r£   rå   r   rV   rI  r3  rê   rU   rz  r\  ÚstatusrN   ÚStatusÚPENDINGr¸   rM   rÈ   ÚresultÚ_start_value)
r~   r€  rb  r  rÒ   rÆ   Ú
final_namer„  r›   ru  rp   rp   rq   rÕ   ¦  s4   €ÿ

ÿýù	
zTaskGroup.startr½   )r€   rT  r:  r�   )r›   ra  rb  r  rc  rd  r€   re  )r›   ra  rb  r  rš   r{  r€   re  )
r€  r�  rÒ   r‚  rb  r  r  rƒ  r€   r+   )	rj   rk   rl   r   rX  r`  rz  r   rÕ   rp   rp   rp   rq   rT  ï  s    


	BüWûûrT  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 threadro  r1   F)Úsuperr   rë   rŽ  r�  rz   r—   r"   ÚqueuerZ  Úcurrent_timeÚ
idle_sinceÚstopping)r~   rë   rŽ  r�  ©r~  rp   rq   r   Ø  s   þ

zWorkerThread.__init__rÆ   rJ  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)rZ  r”  r•  r–  r�  rY  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   rZ  r—   r“  râ   rÃ   r9   Úcurrent_cancel_scoper¤   r\  Ú	is_closedr¹   r›  rl  )
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Æ   rJ  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_bytesrK  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¬  Údatarp   rp   rq   Úreceive2  s   €zStreamReaderWrapper.receiver‹   c                 Ã  s"   �| j  tƒ ¡ t ¡ I d H  d S r�   )rª  rÍ   r<   rZ  Ú
checkpointrƒ   rp   rp   rq   Úaclose<  s   €zStreamReaderWrapper.acloseN©r«  ©r¬  rK  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�   )rZ  Úcheckpoint_if_cancelledrª  Ú	_protocolÚ_pausedÚwriteÚdrainÚConnectionResetErrorÚBrokenPipeErrorr£   rº  r<   Ú
is_closingr:   r[  )r~   rž  Ústream_pausedró   rp   rp   rq   ÚsendF  s"   €

€÷ÿzStreamWriterWrapper.sendc                 Ã  s$   �d| _ | j ¡  t ¡ I d H  d S r¡  )rº  rª  rŒ   rZ  r²  rƒ   rp   rp   rq   r³  Z  s   €
zStreamWriterWrapper.acloseN©rž  r­  r€   r‹   r½   )rj   rk   rl   r¶  r   rº  rÄ  r³  rp   rp   rp   rq   r·  A  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µ   r1   F)rM   rÈ  r³  rÍ  Úget_pipe_transportrŒ   rÉ  rÊ  r  rÈ   r\  )r~   r/  Úpiperp   rp   rq   r³  i  s2   €
ûÿ"îzProcess.acloserK  c                 Ã  s*   �| j  ¡ I d H  | jjd usJ ‚| jjS r�   )rÌ  rÈ   rÇ  Ú
returncoderƒ   rp   rp   rq   rÈ   „  s   €zProcess.waitc                 C  ó   | j  ¡  d S r�   )rÇ  Ú	terminaterƒ   rp   rp   rq   rÒ  ‰  ó   zProcess.terminatec                 C  rÑ  r�   )rÇ  Úkillrƒ   rp   rp   rq   rÔ  Œ  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.pidrC  c                 C  r×  r�   )rÇ  rÐ  rƒ   rp   rp   rq   rÐ  –  rÙ  zProcess.returncodeúabc.ByteSendStream | Nonec                 C  r4  r�   )rÈ  rƒ   rp   rp   rq   Ústdinš  r5  zProcess.stdinúabc.ByteReceiveStream | Nonec                 C  r4  r�   )rÉ  rƒ   rp   rp   rq   Ústdoutž  r5  zProcess.stdoutc                 C  r4  r�   )rÊ  rƒ   rp   rp   rq   Ústderr¢  r5  zProcess.stderrNr½   ©r€   rK  )r¨   rK  r€   r‹   ©r€   rC  )r€   rÚ  )r€   rÜ  )rj   rk   rl   r¶  r³  rÈ   rÒ  rÔ  rÕ  r?  rØ  rÐ  rÛ  rÝ  rÞ  rp   rp   rp   rq   rÆ  `  s,   
 




rÆ  rŽ  úset[Process]rf  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.NrQ  )r  r  rå   Úget_event_loop_policyÚget_child_watcherÚNotImplementedErrorÚcopyrÐ  rÈ  rª  rÍ  rŒ   rÉ  rÊ  rÔ  Úremove_child_handlerrØ  )rŽ  rf  Ú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_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å   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í  rY  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í  rY  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¬  rK  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_readingrZ  r²  rí  ÚpopleftÚ
IndexErrorrº  r<   rÁ   r:   r=   ÚlenÚ
appendleftr  )r~   r¬  ÚchunkÚleftoverrp   rp   rq   r±  .  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  rZ  r²  rº  r<   r¼  rÁ   r:   rÍ  r¾  r£   rÂ  rï  rÈ   )r~   rž  ró   rp   rp   rq   rÄ  T  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_eofg  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³  m  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 )Ú_RawSocketMixinNrd  Ú_receive_futureÚ_send_futureFÚ
raw_socketr  c                 C  s   || _ tdƒ| _tdƒ| _d S )Nr  r  )Ú_RawSocketMixin__raw_socketrH   r  r  ©r~   r1  rp   rp   rq   r     s   
z_RawSocketMixin.__init__r€   c                 C  r4  r�   )r2  rƒ   rp   rp   rq   r  „  r5  z_RawSocketMixin._raw_socketr—   úasyncio.AbstractEventLooprJ  c                   ó>   d‡ ‡fdd„}t  ¡  }ˆ_ˆ  ˆj|jd ¡ | |¡ |S )NrŸ  r  r€   r‹   c                   ó   ˆ` ˆ  ˆj¡ d S r�   )r/  Úremove_readerr2  ©rŸ  ©r—   r~   rp   rq   Úcallback‰  ó   z6_RawSocketMixin._wait_until_readable.<locals>.callback©rŸ  r  r€   r‹   )rå   r   r/  Ú
add_readerr2  rË   rt  ©r~   r—   r:  rŸ  rp   r9  rq   Ú_wait_until_readableˆ  ó
   
z$_RawSocketMixin._wait_until_readablec                   r5  )NrŸ  r  r€   r‹   c                   r6  r�   )r0  Úremove_writerr2  r8  r9  rp   rq   r:  “  r;  z6_RawSocketMixin._wait_until_writable.<locals>.callbackr<  )rå   r   r0  Ú
add_writerr2  rË   rt  r>  rp   r9  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éÿÿÿÿ)Ú_closingr2  ÚfilenorŒ   r/  rË   r0  rƒ   rp   rp   rq   r³  œ  s   €
øz_RawSocketMixin.aclose©r1  r  r-  )r—   r4  r€   rJ  r½   )rj   rk   rl   r/  r¶  r0  rE  r   r?  r  r?  rC  r³  rp   rp   rp   rq   r.  z  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¬  rK  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   rZ  r²  r  r  ÚrecvÚBlockingIOErrorr?  r)  rE  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   rZ  r²  r  Ú
memoryviewr  rÄ  rK  rC  r)  rE  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õ   rK  r¡   r   ÚarrayrZ  r²  r  r  Úrecvmsgr  ÚCMSG_LENÚitemsizerK  r?  r)  rE  r<   r:   r=   Ú
SOL_SOCKETÚ
SCM_RIGHTSr£   Ú	frombytesr$  Úlist)r~   rO  rP  r—   ÚfdsrÀ   ÚancdataÚflagsr  ró   Ú
cmsg_levelÚ	cmsg_typeÚ	cmsg_datarp   rp   rq   Úreceive_fdsÖ  sN   €
ÿ€üðïÿÿÿ&zUNIXSocketStream.receive_fdsrÀ   r[  ú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 emptyrR  )r¡   r   rõ   rK  rY  r    rF  rS  rZ  r²  r  r  Úsendmsgr  rW  rX  rK  rC  r)  rE  r<   r:   )r~   rÀ   r[  r—   ÚfilenosÚfdÚfdarrayró   rp   rp   rq   Úsend_fdsý  sB   €

€ÿ€üö"øzUNIXSocketStream.send_fdsNr½   r´  rµ  rÅ  )rO  rK  rP  rK  r€   rQ  )rÀ   r­  r[  rb  r€   r‹   )rj   rk   rl   r*  r±  rÄ  ra  rg  rp   rp   rp   rq   rH  ¨  s    


'rH  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 )ÚTCPSocketListenerNrD  Ú_accept_scopeFr1  r  c                 C  s$   || _ ttjtƒ ƒ| _tdƒ| _d S )Núaccepting connections from)Ú_TCPSocketListener__raw_socketr/   rå   ÚBaseEventLoopr   rz   rH   Ú_accept_guardr3  rp   rp   rq   r   #  s   zTCPSocketListener.__init__r€   c                 C  r4  r�   )rk  rƒ   rp   rp   rq   r  (  r5  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<   rm  rZ  r²  rM   ri  rz   Úsock_acceptr  rå   r   r7  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º  ri  rz   r7  r  r¡   rä  r¸   r	   rŒ   rƒ   rp   rp   rq   r³  I  s   €ÿ
zTCPSocketListener.acloserG  r-  ©r€   rn  r½   )rj   rk   rl   ri  r¶  rº  r   r?  r  rw  r³  rp   rp   rp   rq   rh    s   
 

rh  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 )ÚUNIXSocketListenerr1  r  c                 C  s"   || _ tƒ | _tdƒ| _d| _d S )Nrj  F)Ú_UNIXSocketListener__raw_socketr   rz   rH   rm  rº  r3  rp   rp   rq   r   \  s   

zUNIXSocketListener.__init__r€   rn  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   r7  rz  ©Ú_rƒ   rp   rq   r¶   n  s    z+UNIXSocketListener.accept.<locals>.<lambda>)rZ  r²  rm  rz  rw  ÚsetblockingrH  rK  rå   r   rz   r=  rË   rt  r)  rº  r<   r:   )r~   ru  r|  rŸ  ró   rp   rƒ   rq   rw  b  s0   €
û
ÿ€üôÿzUNIXSocketListener.acceptr‹   c                 Ã  s   �d| _ | j ¡  d S r¡  )rº  rz  rŒ   rƒ   rp   rp   rq   r³  w  s   €zUNIXSocketListener.aclosec                 C  r4  r�   )rz  rƒ   rp   rp   rq   r  {  r5  zUNIXSocketListener._raw_socketNrG  rx  r½   r-  )rj   rk   rl   r   rw  r³  r?  r  rp   rp   rp   rq   ry  [  s    


ry  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   �  ó
   


zUDPSocket.__init__r€   r  c                 C  r  r  r  rƒ   rp   rp   rq   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ƒ   rp   rp   rq   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  rZ  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  rZ  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~  €  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   rZ  r²  r  r  ÚrecvfromrK  r?  r)  rE  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   rZ  r²  r  r  r‡  rK  rC  r)  rE  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   rZ  r²  r  r  rJ  rK  r?  r)  rE  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   rZ  r²  r  r  rÄ  rK  rC  r)  rE  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  C  r
  zEvent.is_setc                 Ã  s0   �|   ¡ rt ¡ I d H  d S | j ¡ I d H  d S r�   )r  rZ  r²  rž  rÈ   rƒ   rp   rp   rq   rÈ   F  s   €z
Event.waitr3   c                 C  s   t t| jjƒƒS r�   )r3   r$  rž  Ú_waitersrƒ   rp   rp   rq   Ú
statisticsL  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   7  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  S  r
  zLock.__new__r‹   c                C  s   || _ d | _tƒ | _d S r�   )r£  r¤  r   r¡  )r~   r¦  rp   rp   rq   r   V  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¡  rZ  r»  r£  r[  r   Úreleaser£   r   rY  rÃ   r  r¡   )r~   r¯   Úfutrž  rp   rp   rq   Ú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¨  )r/   rå   ræ   r   r¤  r¡  r£   r?   )r~   r¯   rp   rp   rq   Úacquire_nowait  s   
zLock.acquire_nowaitc                 C  s
   | j d uS r�   )r¤  rƒ   rp   rp   rq   Ú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ª  rp   rp   rq   r©  �  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   P  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_valuerK  r³  rC  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¡  rZ  r»  r£  r[  r   r©  rå   r   rY  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  r4  r�   )r°  rƒ   rp   rp   rq   r6  ð  r5  zSemaphore.valuec                 C  r4  r�   )r±  rƒ   rp   rp   rq   r³  ô  r5  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´  rK  r³  rC  r¦  rð   r€   rK   )r´  rK  r³  rC  r¦  rð   r½   rß  rà  )r€   rI   )rj   rk   rl   r>  r  r   r«  r¬  r©  r?  r6  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   rX    ó   €zCapacityLimiter.__aenter__r…   r†   r‡   rˆ   r‰   rŠ   c                 Ã  s   �|   ¡  d S r�   )r©  r�   rp   rp   rq   r`    s   €zCapacityLimiter.__aexit__c                 C  r4  r�   )r¸  rƒ   rp   rp   rq   r»    r5  zCapacityLimiter.total_tokensr6  c                 C  s”   t |tƒst |¡stdƒ‚|dk rtdƒ‚t|| j dƒ}|| _| jrD|rH| jj	dd�\}}| j
 |¡ | ¡  |d8 }| jrF|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õ   rK  r#  Úisinfr}  r¡   Úmaxr¸  rº  Úpopitemr¹  r  rä   )r~   r6  Úwaiters_to_notifyÚborrowerÚeventrp   rp   rq   r»    s   
ürK  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  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º  r$  r¹  r¸  rÂ  r  rä   ©r~   rÄ  rÅ  rp   rp   rq   Ú_notify_next_waiter1  s
   ýz#CapacityLimiter._notify_next_waiterc                 C  ó   |   tƒ ¡ d S r�   )Úacquire_on_behalf_of_nowaitr   rƒ   rp   rp   rq   r¬  8  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º  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«  F  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�   )rZ  r»  rÍ  r?   rå   rE   rº  rÈ   r\  Úpopr  r¹  r  rË  r[  r©  rÊ  rp   rp   rq   rÏ  I  s.   €
úûþz$CapacityLimiter.acquire_on_behalf_ofc                 C  rÌ  r�   )Úrelease_on_behalf_ofr   rƒ   rp   rp   rq   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Î  rp   rp   rq   rÑ  c  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¢  m  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   rX  r`  r?  r»  r@  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   rL  rä   Ú_handled_signals)r~   rÕ  rp   rp   rq   r     s
   
z_SignalReceiver.__init__rº   r#   r€   r‹   c                 C  s*   | j  |¡ | j ¡ s| j d ¡ d S d S r�   )rØ  rY  rL  r·   rË   )r~   rº   rp   rp   rq   Ú_deliver†  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„   ‹  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Ž   ’  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�   )rZ  r²  rØ  rå   r   rL  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Ô  ~  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â   rA  rñ   r’  r   r3  Úget_nameÚweakrefÚrefrf  )r~   r¯   r  rA  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)rf  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^   Ú_runnerrV  Ú_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—   r4  rš   údict[str, Any]c                 C  s2   t | d¡tƒr| j |d ¡ d S | |¡ d S )NrÁ   )rõ   râ   rÌ   rV  rY  Ú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)rV  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 ro  )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_fixtureU	  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Ì   rV  rY  r\  rì  r·   r¸   rå  rŒ   r   rò  )r~   r
  rü  rö  ró   rp   rp   rq   Úrun_test`	  s:   ÿ€

ÿÿýÿózTestRunner.run_test)rs   ru   ræ  rð   rt   rv   r€   r‹   )r€   rä  r¼   r¾   r;  )r—   r4  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                      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   rE   Úexitedrƒ   r—  rp   rq   r   †	  s   z_ProcessStreamProtocol.__init__c                   s   t ƒ  ¡  | j ¡  d S r�   )r’  Úprocess_exitedr  rä   rƒ   r—  rp   rq   r  ‹	  s   
z%_ProcessStreamProtocol.process_exitedr½   )rj   rk   rl   rH  r   r  r¥  rp   rp   r—  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 )årZ  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   Úwrapper™	  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¤   ‘	  s   


$ÿzAsyncIOBackend.runr  c                 C  ó   t ƒ S r�   )r   rŸ  rp   rp   rq   Úcurrent_token³	  r5  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�   )rT  rŸ  rp   rp   rq   Úcreate_task_groupü	  r5  z AsyncIOBackend.create_task_groupú	abc.Eventc                 C  r  r�   rD   rŸ  rp   rp   rq   Úcreate_event 
  r5  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´  rK  r³  rC  ú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  rt  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ô   r2  )r9   rœ  r*  r   r3  r  ré   )r  r/  rp   rp   rq   Úcheck_cancelledS
  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_wrapperf
  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Ò   r:  r?  r—   rš   rŸ  rp   r>  rq   Ú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å   )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  r@  r�  r>   r   r¹   r‰  )r  r€  rÒ   r:  r  r—   rp   rC  rq   Ú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  rE  rÛ  rÝ  rÞ  rü  r—   rò  r  rè  Ústdin_streamÚstdout_streamÚstderr_streamrp   rp   rq   Ú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 taskro  )r   rë  rî   rt  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 | Nonern  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  rR  rS  rT  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�   ©rA  r{  ©r—   r1  rp   rq   r¶   ò
  ó   
 z-AsyncIOBackend.connect_unix.<locals>.<lambda>)r²  r   r  ÚAF_UNIXr}  ÚconnectrK  rå   r   rB  rË   rt  r\  rŒ   rH  )r  rY  rŸ  rp   r^  rq   Úconnect_unixæ
  s&   €

÷þøzAsyncIOBackend.connect_unixÚsockr  rQ   c                 C  r+  r�   )rh  ©r  rc  rp   rp   rq   Úcreate_tcp_listenerú
  rÙ  z"AsyncIOBackend.create_tcp_listenerc                 C  r+  r�   )ry  rd  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)rV  Úremote_addrrg  ri  )r   Úcreate_datagram_endpointr  rÁ   rŒ   r~  rŒ  )r  rg  rT  rh  ri  rò  r  rp   rp   rq   Úcreate_udp_socket  s   €û

z AsyncIOBackend.create_udp_socketr1  Ú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                   r\  r�   r]  r{  r^  rp   rq   r¶   (  r_  z<AsyncIOBackend.create_unix_datagram_socket.<locals>.<lambda>)r²  r   ra  rK  rå   r   rB  rË   rt  r\  rŒ   r™  r�  )r  r1  rn  rŸ  rp   r^  rq   Úcreate_unix_datagram_socket  s&   €
÷þøz*AsyncIOBackend.create_unix_datagram_socketr   ©rg  r]  Úprotor]  úbytes | str | Noneústr | int | Noneúint | AddressFamilyr]  úint | SocketKindrs  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 )Nrr  )r   Úgetaddrinfo)r  rR  rS  rg  r]  rs  r]  rp   rp   rq   ry  2  s   €ÿzAsyncIOBackend.getaddrinfoÚsockaddrrP   útuple[str, str]c                 Ã  s   �t ƒ  ||¡I d H S r�   )r   Úgetnameinfo)r  rz  r]  rp   rp   rq   r|  I  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å   rO  rp   ©re  rª  rš  r7  rp   rq   rà   ^  ó   
ÿÿz(AsyncIOBackend.wait_readable.<locals>.cbr   ©Úget_selectorr½   )r›  râ   r1  rä   rõ   rK  rF  r;   r   rÔ   r=  rä  Ú$anyio._core._asyncio_selector_threadr‚  r7  r  r<   ©r  r}  r—   rà   r‚  ÚselectorÚsuccessrp   r  rq   Úwait_readableO  ó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~  rp   ©re  rª  rA  rœ  rp   rq   rà   “  r€  z(AsyncIOBackend.wait_writable.<locals>.cbr   r�  r½   )r�  râ   r1  rä   rõ   rK  rF  r;   r   rÔ   rB  rä  rƒ  r‚  rA  r  r<   r„  rp   r‰  rq   Ú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õ   rK  rF  r   r�  râ   r1  rÐ  r  rË   rå   rO  rA  rä  rƒ  r‚  r›  r7  )r  r}  re  r—   rœ  rª  r‚  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 )Nr`  )r“   r  rg  r`  ry  rh  rd  rp   rp   rq   Úwrap_listener_socketê  s   €z#AsyncIOBackend.wrap_listener_socketr  c                 Ã  ó&   �t ƒ jt|d�I d H \}}t||ƒS ©N)rc  )r   rW  rì  r  ©r  rc  rò  r  rp   rp   rq   Úwrap_stream_socketñ  ó
   €ÿ
z!AsyncIOBackend.wrap_stream_socketrH  c                 Ã  ó
   �t |ƒS r�   )rH  rd  rp   rp   rq   Úwrap_unix_stream_socketø  ó   €z&AsyncIOBackend.wrap_unix_stream_socketr~  c                 Ã  r�  rŽ  )r   rl  r  r~  r�  rp   rp   rq   Úwrap_udp_socketü  r‘  zAsyncIOBackend.wrap_udp_socketrŒ  c                 Ã  r�  rŽ  )r   rl  r  rŒ  r�  rp   rp   rq   Úwrap_connected_udp_socket  r‘  z(AsyncIOBackend.wrap_connected_udp_socketr�  c                 Ã  r’  r�   )r�  rd  rp   rp   rq   Úwrap_unix_datagram_socket
  r”  z(AsyncIOBackend.wrap_unix_datagram_socketr™  c                 Ã  r’  r�   )r™  rd  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â   r1  rC   rä   )r  r/  rp   rp   rq   r2    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‹   r9  )r€   r"  )r€   r$  )r¦  rð   r€   r&  )r´  rK  r³  rC  r¦  rð   r€   r(  )r»  r	  r€   r*  )FN)
r€  r-  rÒ   r  r.  rð   r/  r0  r€   r�   )r€  r�  rÒ   r  r:  r  r€   rØ   )r€  r-  rÒ   r  r:  r  r€   r�   )rE  rF  rÛ  rG  rÝ  rG  rÞ  rG  rü  r+   r€   rÆ  ©rŽ  rê  r€   r‹   r�   )rR  rö   rS  rK  rT  rU  r€   rn  )rY  rZ  r€   r[  )rc  r  r€   rQ   )
rg  r$   rT  rU  rh  rU  ri  rð   r€   rj  )r1  r  rn  ro  r€   rp  )rR  rt  rS  ru  rg  rv  r]  rw  rs  rK  r]  rK  r€   rx  )r   )rz  rP   r]  rK  r€   r{  )r}  rZ   r€   r‹   )rc  r  r€   r  )rc  r  r€   rH  )rc  r  r€   r~  )rc  r  r€   rŒ  )rc  r  r€   r�  )rc  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,  r8  r9  rB  rD  rP  rQ  rX  rb  re  rf  rm  rq  ry  r|  r‡  rŠ  r‹  rŒ  r�  r“  r•  r–  r—  r˜  r2  r›  rœ  rž  r   r¡  rp   rp   rp   rq   rZ  �	  sÌ    !ÿû	û<"1	ÿøÿ440rZ  )r—   r   r€   r‹   )r€   r´   )r¯   r´   r€   rð   )ró   r   r€   rð   )rŽ  rá  rf  r  r€   r‹   r¢  )ÄÚ
__future__r   rS  rå   Úconcurrent.futuresr;  r³   r#  rH  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ç   Ú
TaskStatusrI  Úeager_task_factoryrm  rS  rT  rÒ  r\  Ú_Retval_Queue_TyperŒ  r¦  r§  ÚByteReceiveStreamr©  ÚByteSendStreamr·  rÆ  ré  rë  ÚProtocolrì  r  r  r.  rH  rh  ry  r~  rŒ  r�  r™  r›  r�  rÓ  rÔ  r®  rä  rL  ÚSubprocessStreamProtocolr  rZ  Úbackend_classrp   rp   rp   rq   Ú<module>   s   $	(
$	  


#

  F dNÿ
F
&"X.w<%24$$TXz.! 2     5