o
    +iH… ã                   @  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$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/m0Z0m1Z1m2Z2 d dl3m4Z4 d dlm5Z5 d dl6m7Z7 d dl8m9Z9 d dl	m:Z:m;Z; d dlm<Z< d dl=m>Z>m?Z? d dl@mAZAmBZBmCZCmDZDmEZEmFZF d dlmGZG ddlHmIZImJZJmKZKmLZLmMZM ddlNmOZOmPZPmQZQ ddlRmSZSmTZTmUZUmVZVmWZWmXZXmYZY ddlZm[Z[ ddl\m]Z] ddl^m_Z` ddl^maZb ddl^mcZd ddl^meZemfZf dd l^mgZh dd!limjZk dd"lMmlZlmmZmmnZnmoZompZp dd#lqmrZr dd$lsmtZt dd%lumvZvmwZw eBrad d&lxmyZy nezZye
j{d'krpd d(l@m|Z| nd d(l}m|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lZd dl8Z8d 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/ejˆƒZ‰G d0d1„ d1ƒZ~d§d6d7„ZŠd§d8d9„Z‹eEd:ƒZŒeEd;d<d=Zed>ƒZŽe|d?ƒZetd@ƒZdAe‘d@< d¨dCdD„Z’d©dHdI„Z“eGƒ Z”dJe‘dK< dªdNdO„Z•d«dRdS„Z–G dTdU„ dUekƒZjG dVdW„ dWƒZ—eGƒ Z˜dXe‘dY< G dZd[„ d[eMj™ƒZše
j{d\kr.ej›jœZd]e‘d^< ndZG d_d`„ d`eMjžƒZžeŸeDeŒ eDe  f Z¡G dadb„ dbe<ƒZ¢etdcƒZ£dde‘dc< etdeƒZ¤dfe‘de< G dgdh„ dheMj¥ƒZ¥e)didjG dkdl„ dleMj¦ƒƒZ§e)didjG dmdn„ dneMj¨ƒƒZ©e)didjG dodp„ dpeMjªƒƒZªd¬dudv„Z«d­dxdy„Z¬G dzd{„ d{ej­ƒZ®G d|d}„ d}ej¯ƒZ¯G d~d„ deMj°ƒZ°G d€d„ dƒ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„ de±eMj·ƒZ·G dŽd„ de±eMj¸ƒZ¸etdƒZ¹d‘e‘d’< etd“ƒZºd‘e‘d”< G d•d–„ d–ebƒZaG d—d˜„ d˜edƒZcG d™dš„ dšehƒZgG d›dœ„ dœe`ƒZ_etdƒ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¦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Úiscoroutine)ÚIOBase)ÚPathLike)ÚQueue)ÚSignals)ÚAddressFamilyÚ
SocketKind)ÚThread)ÚCodeTypeÚTracebackType)ÚIOÚTYPE_CHECKINGÚAnyÚOptionalÚTypeVarÚcast)ÚWeakKeyDictionaryé   )ÚCapacityLimiterStatisticsÚEventStatisticsÚLockStatisticsÚTaskInfoÚabc)Úclaim_worker_threadÚset_current_async_libraryÚthreadlocals)ÚBrokenResourceErrorÚBusyResourceErrorÚClosedResourceErrorÚEndOfStreamÚRunFinishedErrorÚ
WouldBlockÚiterate_exceptions)Úconvert_ipv6_sockaddr)Úcreate_memory_object_stream©ÚCapacityLimiter©ÚEvent©ÚLock)ÚResourceGuardÚSemaphoreStatistics©Ú	Semaphore©ÚCancelScope)ÚAsyncBackendÚIPSockAddrTypeÚSocketListenerÚUDPPacketTypeÚUNIXDatagramPacketType)ÚStrOrBytesPath)ÚRunVar)ÚMemoryObjectReceiveStreamÚMemoryObjectSendStream)ÚFileDescriptorLike)é   é
   )Ú	ParamSpec©rZ   é   )Ú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© rq   rq   úK/var/www/html/venv/lib/python3.10/site-packages/anyio/_backends/_asyncio.pyrg      s    rg   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_factoryrt   úbool | Noneru   ú&Callable[[], AbstractEventLoop] | Nonec                C  s0   t j| _|| _|| _d | _d | _d| _d| _d S )Nr   F)	rg   rn   Ú_stateÚ_debugÚ_loop_factoryÚ_loopÚ_contextÚ_interrupt_countÚ_set_event_loop)Úselfrt   ru   rq   rq   rr   Ú__init__ˆ   s   
zRunner.__init__Úreturnc                 C  s   |   ¡  | S ©N)Ú
_lazy_init©r   rq   rq   rr   Ú	__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Š   rq   rq   rr   Ú__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{   rx   rg   ro   Ú_cancel_all_tasksÚrun_until_completeÚshutdown_asyncgensÚhasattrr   Ú_shutdown_default_executorr~   rc   Úset_event_loopr   rp   ©r   Úlooprq   rq   rr   r   ¢   s(   
€
ü

zRunner.closer   c                 C  s   |   ¡  | jS )zReturn embedded event loop.)rƒ   r{   r„   rq   rq   rr   Ú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)rb   r!   Ú
ValueErrorrc   Ú_get_running_loopÚRuntimeErrorrƒ   r|   Úrunr{   r   Ú	threadingÚcurrent_threadÚmain_threadÚsignalÚ	getsignalÚSIGINTÚdefault_int_handlerr   Ú
_on_sigintr}   r’   rd   r   ÚgetattrÚKeyboardInterrupt)r   rœ   r›   ÚtaskÚsigint_handlerr    rq   rq   rr   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)rx   rg   rp   r£   ro   rz   rc   Únew_event_loopr{   r~   r–   ry   Ú	set_debugÚcontextvarsr   r|   r„   rq   rq   rr   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‚   rq   rq   rq   rq   rr   Ú<lambda>  s    z#Runner._on_sigint.<locals>.<lambda>)r}   ÚdoneÚcancelr{   Úcall_soon_threadsafer®   )r   ÚsignumÚframerŸ   rq   rq   rr   r¬   ý   s   zRunner._on_sigint)rt   rv   ru   rw   )r   r_   ©r†   r‡   rˆ   r‰   rŠ   r‹   r   rŒ   ©r   rŒ   ©r   r   )rœ   r   r   rž   )rŸ   r´   r   rŒ   )rk   rl   rm   r€   r…   r   r   r™   r¤   rƒ   r¬   rq   rq   rq   rr   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¯   )re   r   r¸   r’   ÚgatherÚ	cancelledrÁ   Úcall_exception_handler)r˜   Ú	to_cancelr¯   rq   rq   rr   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˜   rq   rr   Ú_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Æ   Úthreadrq   rÏ   rr   r•     s   €
r•   rž   ÚT_contraT)Ú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 rq   rq   )Ú.0Úcbr›   rq   rq   rr   Ú
<listcomp>B  ó    z"find_root_task.<locals>.<listcomp>rl   zuvloop.loop)rÜ   Úgetr·   r   Ú
_callbacksr
   r­   Úsetr0   ÚasyncioÚTaskr   Ú_task_statesÚcancel_scopeÚ_parent_scopeÚ
_host_task)Ú	root_taskr¯   Ú	callbacksrÞ   Ústaterç   rq   rq   rr   Úfind_root_task:  s.   


ý€
ÿrí   Úfuncr   Ústrc                 C  s0   t | dd ƒ}t | dd ƒ}d dd„ ||fD ƒ¡S )Nrl   rm   Ú.c                 S  s   g | ]}|r|‘qS rq   rq   )rÝ   Úxrq   rq   rr   rß   \  rà   z%get_callable_name.<locals>.<listcomp>)r­   rÖ   )rî   ÚmoduleÚqualnamerq   rq   rr   Úget_callable_nameY  s   rô   z1WeakKeyDictionary[asyncio.AbstractEventLoop, Any]Ú	_run_varsr¯   Úboolc                 C  sH   |   ¡ }|dus
J ‚z	t|ƒttfv W S  ty#   td| › dƒd‚w )zBReturn ``True`` if the task has been started and has not finished.NzCannot determine if task z has started or not)Úget_coror    r   r   ÚAttributeErrorrÌ   )r¯   rœ   rq   rq   rr   Ú_task_startedf  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Ò   Ú
isinstancerï   Ú
startswithÚ__context__r   ©rú   rq   rq   rr   Úis_anyio_cancellationx  s   ÿþýr   c                   @  sä   e Zd Zejddœd2dd	„Zejdfd3d
d„Zd4dd„Zd5dd„Ze	d6dd„ƒZ
e	d6dd„ƒZd7dd„Zd8dd„Zd7d d!„Zd9d:d%d&„Ze	d;d'd(„ƒZejd<d*d(„ƒZe	d6d+d,„ƒZe	d6d-d.„ƒZe	d6d/d0„ƒZejd=d1d0„ƒZd"S )>rO   F©ÚdeadlineÚshieldr  Úfloatr  rö   r   c                C  ó
   t  | ¡S r‚   ©ÚobjectÚ__new__©Úclsr  r  rq   rq   rr   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   )Ú	_deadlineÚ_shieldrè   rã   Ú_child_scopesÚ_cancel_calledÚ_cancel_reasonÚ_cancelled_caughtÚ_activeÚ_timeout_handleÚ_cancel_handleÚ_tasksré   ÚsysÚversion_infoÚ_pending_uncancellations)r   r  r  rq   rq   rr   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_staterq   rq   rr   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sgd}|d ur’t|ƒD ]}t|tƒrt|ƒrd| _q€d}q€| jo—| W 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µ   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    rA   rü   r   r   r  )r   r†   rˆ   rŠ   Úhost_task_stateÚcannot_swallow_exc_valrú   rq   rq   rr   r   Â  sh   ÿÿ


þÿõÿÿ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ç   rq   rq   rr   Ú_effectively_cancelled  s   ù	z"CancelScope._effectively_cancelledc                 C  s   | j d uo| j o| j jS r‚   )rè   r  r%  r„   rq   rq   rr   r"    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—   rq   rq   rr   r  $  s   ûzCancelScope._timeoutÚoriginc                 C  sÖ   d}t ƒ }| jD ]9}d}|jrq||urA|| ju st|ƒrA|j}t|tjƒr*| 	¡ sA| 
|j¡ ||ju rA|jdurA| jd7  _q| jD ]}|jsT|jsT| |¡pS|}qE|| u ri|rftƒ  | j|¡| _|S d| _|S )aZ  
        Deliver cancellation to directly contained tasks and nested cancel scopes.

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

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

        FTNrµ   )r   r  Ú_must_cancelré   rù   Ú_fut_waiterrü   rä   r   r·   r¸   r  r  r  r  Úcancel_calledr  r   Ú	call_soonr  )r   r*  Úshould_retryÚcurrentr¯   ÚwaiterÚscoperq   rq   rr   r  ,  s4   


€
€ÿþ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   r2  rq   rq   rr   r!  Z  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û   rñ   z by z
; reason: )r  r  r¸   Úidr  r   ré   r  )r   r4  r¯   rq   rq   rr   r¸   m  s   


òzCancelScope.cancelc                 C  ó   | j S r‚   )r  r„   rq   rq   rr   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   r9  rq   rq   rr   r  ‚  s   


ÿc                 C  r7  r‚   )r  r„   rq   rq   rr   r-  Œ  r8  zCancelScope.cancel_calledc                 C  r7  r‚   )r  r„   rq   rq   rr   Úcancelled_caught  r8  zCancelScope.cancelled_caughtc                 C  r7  r‚   )r  r„   rq   rq   rr   r  ”  r8  zCancelScope.shieldc                 C  s(   | j |kr|| _ |s|  ¡  d S d S d S r‚   )r  r!  r:  rq   rq   rr   r  ˜  s   
ý©r  r  r  rö   r   rO   )r  r  r  rö   )r   rO   ©r†   r‡   rˆ   r‰   rŠ   r‹   r   rö   ©r   rö   r½   )r*  rO   r   rö   r‚   )r4  r5  r   rŒ   ©r   r  ©r9  r  r   rŒ   )r9  rö   r   rŒ   )rk   rl   rm   r&  r'  r  r€   r…   r   Úpropertyr%  r"  r  r  r!  r¸   r  Úsetterr-  r;  r  rq   rq   rq   rr   rO   ‹  s4    ÿ

L


.	rO   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__rC  ú
int | Nonerç   úCancelScope | Nonec                 C  ó   || _ || _d S r‚   ©rC  rç   )r   rC  rç   rq   rq   rr   r€   ­  ó   
zTaskState.__init__N)rC  rE  rç   rF  )rk   rl   rm   Ú__doc__Ú	__slots__r€   rq   rq   rq   rr   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.FuturerC  Úintc                 C  rG  r‚   )Ú_futureÚ
_parent_id)r   rÆ   rC  rq   rq   rr   r€   »  rI  z_AsyncioTaskStatus.__init__Nr9  ú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)rO  rË   rä   ÚInvalidStateErrorrÃ   r£   r0   rå   r   rP  ræ   rC  )r   r9  r¯   rq   rq   rr   Ústarted¿  s   
ÿþÿÿz_AsyncioTaskStatus.started)rÆ   rM  rC  rN  r‚   )r9  rQ  r   rŒ   )rk   rl   rm   r€   rS  rq   rq   rq   rr   rL  º  s    
rL  ©rZ   é   zCodeType | NoneÚ_eager_task_factory_codec                   @  sX   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„Zddœd*d"d#„ZdS )+Ú	TaskGroupr   rŒ   c                 C  s&   t ƒ | _d| _g | _tƒ | _d | _d S )NF)rO   rç   r  Ú_exceptionsrã   r  Ú_on_completed_futr„   rq   rq   rr   r€   Ó  s
   
zTaskGroup.__init__c                 Ã  s   | j  ¡  d| _| S ©NT)rç   r…   r  r„   rq   rq   rr   Ú
__aenter__Ú  s   €
zTaskGroup.__aenter__r†   r‡   rˆ   r‰   rŠ   r‹   rö   c                 Ã  s‚  zº|d ur| j  ¡  t|tƒs| j |¡ tƒ }zq| 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  d| _| 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 )NTFzunhandled errors in a TaskGroup)rç   r¸   rü   r   rX  Úappendr   r  rO   rÔ   rY  r  r   ÚAsyncIOBackendÚcancel_shielded_checkpointr  rf   ÚBaseExceptionr   ÚtypeÚ__traceback__)r   r†   rˆ   rŠ   r˜   Ú
wait_scoperú   rq   rq   rr   Ú	__aexit__ß  sd   €



ÿþ€óì€ÿ€ÿþÿü€üzTaskGroup.__aexit__Nrî   ú,Callable[[Unpack[PosArgsT]], Awaitable[Any]]rÒ   útuple[Unpack[PosArgsT]]Únamer  Útask_status_futureúasyncio.Future | Noner´   c                   st  d‡ ‡‡fdd„}ˆ j stdƒ‚i }ˆr%ttƒ ƒ}tˆtˆ jjƒƒ|d< ntˆ jjƒ}||i |¤Ž}t|ƒsQt|d	ƒrA|j	› d
nd}	t
d|	› |j› d|›dƒ‚|d u rYt|ƒnt|ƒ}t ¡ }
|
 ¡  }r„t|dd ƒtu r„t|dd ƒ }r„|d j}|||
|d‰nt||d‰t|ˆ jdtˆ< ˆ j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©rZ   é   z2Child exited without calling task_status.started())r  r  rç   ré   rä   Úfuture_discard_from_awaited_byræ   r  r   rY  rË   rR  rÁ   r   rü   rþ   rÃ   r·   rX  r\  r%  r¸   rÍ   r£   )ri  r  rú   Úe©r   r¯   rg  rq   rr   Ú	task_done%  sP   ÿÿÿ€ü
ÿÿÿz#TaskGroup._spawn.<locals>.task_donez;This task group is not active; no new tasks can be started.Útask_statusrl   rð   Ú z	Expected z0() to return a coroutine, but the return value (z) is not a coroutine objectÚ__code__Ú__closure__r   )r˜   rf  ©rf  rH  rj  )ri  r´   r   rŒ   )r  r£   r6  r   rL  rç   ré   r!   r”   rl   Ú	TypeErrorrm   rô   rï   rä   r   Úget_task_factoryr­   rV  Úcell_contentsr   r  ræ   r  r  r  r  Úfuture_add_to_awaited_byÚadd_done_callback)r   rî   rÒ   rf  rg  ro  ÚkwargsrC  rœ   Úprefixr˜   ÚfactoryÚclosureÚcustom_task_constructorrq   rn  rr   Ú_spawn  sN   /ÿ

ÿÿÿ
ÿÿ

ÿ
zTaskGroup._spawnrt  úUnpack[PosArgsT]c                G  s   |   |||¡ d S r‚   )r  )r   rî   rf  rÒ   rq   rq   rr   Ú
start_soon‚  s   zTaskGroup.start_soonúCallable[..., Awaitable[Any]]r-   c                Ç  sª   t  ¡ }|  ||||¡}z|I d H W S  tyT   | ¡  tdd( ttƒ |I d H  W d   ƒ n1 s8w   Y  W d   ƒ ‚ W d   ƒ ‚ 1 sNw   Y  ‚ w )NT©r  )rä   r   r  r   r¸   rO   r   )r   rî   rf  rÒ   rÆ   r¯   rq   rq   rr   rÕ   Š  s    €(ÿýýúzTaskGroup.startr½   )r   rW  r=  r‚   )
rî   rd  rÒ   re  rf  r  rg  rh  r   r´   )rî   rd  rÒ   r€  rf  r  r   rŒ   )rî   r‚  rÒ   r  rf  r  r   r-   )	rk   rl   rm   r€   r[  rc  r  r  rÕ   rq   rq   rq   rr   rW  Ò  s    


Dûhü	ÿrW  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 ) ÚWorkerThreadr[   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 threadrt  r2   F)Úsuperr€   rê   r…  r‡  r{   r˜   r$   Úqueuer]  Úcurrent_timeÚ
idle_sinceÚstopping)r   rê   r…  r‡  ©Ú	__class__rq   rr   r€   ©  s   þ

zWorkerThread.__init__rÆ   rM  Úresultr-   rú   r‰   r   rŒ   c                 C  sh   t  ¡ | _| js| j | ¡ | ¡ s2|d ur+t|tƒr$t	dƒ}||_
|}| |¡ d S | |¡ d S d S )Nzcoroutine raised StopIteration)r]  r‹  rŒ  r  r‡  r\  rÃ   rü   ÚStopIterationr£   Ú	__cause__rÍ   rË   )r   rÆ   r  rú   Únew_excrq   rq   rr   Ú_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‚   )r8   r]  r˜   rŠ  rá   rÃ   r:   Úcurrent_cancel_scoper¤   r_  Ú	is_closedr¹   r”  ro  )
r   Úitemr›   rî   rÒ   rÆ   rç   r  rÁ   rú   rq   rq   rr   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 rZ  )r  rŠ  Ú
put_nowaitr…  r  r‡  r   r¡   )r   r˜  rq   rq   rr   Ústopê  s   ÿzWorkerThread.stop)rê   r´   r…  r†  r‡  rˆ  )rÆ   rM  r  r-   rú   r‰   r   rŒ   r½   r‚   )r˜  r™  r   rŒ   )	rk   rl   rm   ÚMAX_IDLE_TIMEr€   r”  r¤   r›  Ú__classcell__rq   rq   rŽ  rr   r„  ¦  s    

r„  Ú_threadpool_idle_workerszRunVar[deque[WorkerThread]]Ú_threadpool_workerszRunVar[set[WorkerThread]]c                      s2   e Zd Zddd„Zd‡ fdd„Zddd„Z‡  ZS )ÚBlockingPortalr   c                 C  r  r‚   r  ©r
  rq   rq   rr   r  û  ó   
zBlockingPortal.__new__rŒ   c                   s   t ƒ  ¡  tƒ | _d S r‚   )r‰  r€   r   r{   r„   rŽ  rq   rr   r€   þ  s   
zBlockingPortal.__init__rî   ú<Callable[[Unpack[PosArgsT]], Awaitable[T_Retval] | T_Retval]rÒ   re  rz  údict[str, Any]rf  r  rÆ   úFuture[T_Retval]c                 C  s,   t  t| jj|d| j||||f| j¡ d S )Nrt  )r]  Úrun_sync_from_threadr   Ú_task_groupr  Ú
_call_funcr{   )r   rî   rÒ   rz  rf  rÆ   rq   rq   rr   Ú_spawn_task_from_thread  s
   ýz&BlockingPortal._spawn_task_from_thread)r   r   r½   )rî   r£  rÒ   re  rz  r¤  rf  r  rÆ   r¥  r   rŒ   )rk   rl   rm   r  r€   r©  r  rq   rq   rŽ  rr   r   ú  s    
r   F)Úeqc                   @  s,   e Zd ZU ded< dddd	„Zddd„ZdS )ÚStreamReaderWrapperzasyncio.StreamReaderÚ_streamé   Ú	max_bytesrN  r   Úbytesc                 Ã  s    | j  |¡I d H }|r|S t‚r‚   )r¬  Úreadr>   )r   r®  Údatarq   rq   rr   Úreceive  s
   €zStreamReaderWrapper.receiverŒ   c                 Ã  s"   | j  tƒ ¡ t ¡ I d H  d S r‚   )r¬  rÍ   r=   r]  Ú
checkpointr„   rq   rq   rr   Úaclose!  s   €zStreamReaderWrapper.acloseN©r­  ©r®  rN  r   r¯  r½   )rk   rl   rm   Ú__annotations__r²  r´  rq   rq   rq   rr   r«    s   
 r«  c                   @  s>   e Zd ZU ded< edddZded< ddd„Zddd„ZdS )ÚStreamWriterWrapperzasyncio.StreamWriterr¬  F)ÚinitÚdefaultrö   Ú_closedr—  r¯  r   rŒ   c              
   Ã  s’   t  ¡ I d H  | jjj}z| j |¡ | j ¡ I d H  W n ttt	fy; } z| j
r.t|‚| j ¡ r6t|‚‚ d }~ww |sGt  ¡ I d H  d S d S r‚   )r]  Úcheckpoint_if_cancelledr¬  Ú	_protocolÚ_pausedÚwriteÚdrainÚConnectionResetErrorÚBrokenPipeErrorr£   r»  r=   Ú
is_closingr;   r^  )r   r—  Ústream_pausedrú   rq   rq   rr   Úsend+  s"   €

€÷ÿzStreamWriterWrapper.sendc                 Ã  s$   d| _ | j ¡  t ¡ I d H  d S rZ  )r»  r¬  r   r]  r³  r„   rq   rq   rr   r´  ?  s   €
zStreamWriterWrapper.acloseN©r—  r¯  r   rŒ   r½   )rk   rl   rm   r·  r   r»  rÅ  r´  rq   rq   rq   rr   r¸  &  s
   
 
r¸  c                   @  s¦   e Zd ZU ded< ded< ded< ded< d$d
d„Zd%dd„Zd$dd„Zd$dd„Zd&dd„Ze	d%dd„ƒZ
e	d'dd„ƒZe	d(dd„ƒZe	d)dd „ƒZe	d)d!d"„ƒZd#S )*ÚProcesszasyncio.subprocess.ProcessÚ_processzStreamWriterWrapper | NoneÚ_stdinzStreamReaderWrapper | NoneÚ_stdoutÚ_stderrr   rŒ   c              	   Ã  sº   t ddM}| jr| j ¡ I d H  | jr| j ¡ I d H  | jr(| j ¡ I d H  d|_z	|  ¡ I d H  W n tyJ   d|_|  ¡  |  ¡ I d H  ‚ w W d   ƒ d S 1 sVw   Y  d S )NTrƒ  F)	rO   rÉ  r´  rÊ  rË  r  rÈ   r_  Úkillr3  rq   rq   rr   r´  L  s&   €üÿ"özProcess.acloserN  c                 Ã  s   | j  ¡ I d H S r‚   )rÈ  rÈ   r„   rq   rq   rr   rÈ   ^  s   €zProcess.waitc                 C  ó   | j  ¡  d S r‚   )rÈ  Ú	terminater„   rq   rq   rr   rÎ  a  ó   zProcess.terminatec                 C  rÍ  r‚   )rÈ  rÌ  r„   rq   rq   rr   rÌ  d  rÏ  zProcess.killr¨   c                 C  s   | j  |¡ d S r‚   )rÈ  Úsend_signal)r   r¨   rq   rq   rr   rÐ  g  ó   zProcess.send_signalc                 C  ó   | j jS r‚   )rÈ  Úpidr„   rq   rq   rr   rÓ  j  ó   zProcess.pidrE  c                 C  rÒ  r‚   )rÈ  Ú
returncoder„   rq   rq   rr   rÕ  n  rÔ  zProcess.returncodeúabc.ByteSendStream | Nonec                 C  r7  r‚   )rÉ  r„   rq   rq   rr   Ústdinr  r8  zProcess.stdinúabc.ByteReceiveStream | Nonec                 C  r7  r‚   )rÊ  r„   rq   rq   rr   Ústdoutv  r8  zProcess.stdoutc                 C  r7  r‚   )rË  r„   rq   rq   rr   Ústderrz  r8  zProcess.stderrNr½   ©r   rN  )r¨   rN  r   rŒ   ©r   rE  )r   rÖ  )r   rØ  )rk   rl   rm   r·  r´  rÈ   rÎ  rÌ  rÐ  rA  rÓ  rÕ  r×  rÙ  rÚ  rq   rq   rq   rr   rÇ  E  s(   
 




rÇ  r…  úset[Process]ri  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.NrT  )r  r  rä   Úget_event_loop_policyÚget_child_watcherÚNotImplementedErrorÚcopyrÕ  rÉ  r¬  Ú
_transportr   rÊ  rË  rÌ  Úremove_child_handlerrÓ  )r…  ri  Úchild_watcherÚprocessrq   rq   rr   Ú'_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å  rq   rq   rr   Ú_shutdown_process_pool_on_exit˜  s   €	
€ÿúrè  c                   @  sz   e Zd ZU ded< ded< ded< dZded< d	Zd
ed< d dd„Zd!dd„Zd"dd„Zd#dd„Z	d$dd„Z
d$dd„ZdS )%ÚStreamProtocolzdeque[bytes]Ú
read_queueúasyncio.EventÚ
read_eventÚwrite_eventNúException | NonerÁ   Frö   Ú	is_at_eofÚ	transportúasyncio.BaseTransportr   rŒ   c                 C  s<   t ƒ | _t ¡ | _t ¡ | _| j ¡  ttj|ƒ 	d¡ d S ©Nr   )
r   rê  rä   rG   rì  rí  rã   r0   Ú	TransportÚset_write_buffer_limits©r   rð  rq   rq   rr   Úconnection_made¹  s
   


zStreamProtocol.connection_maderú   c                 C  s,   |r
t ƒ | _|| j_| j ¡  | j ¡  d S r‚   )r;   rÁ   r’  rì  rã   rí  ©r   rú   rq   rq   rr   Úconnection_lostÀ  s
   
zStreamProtocol.connection_lostr±  r¯  c                 C  s   | j  t|ƒ¡ | j ¡  d S r‚   )rê  r\  r¯  rì  rã   )r   r±  rq   rq   rr   Údata_receivedÈ  s   zStreamProtocol.data_receivedrv   c                 C  s   d| _ | j ¡  dS rZ  )rï  rì  rã   r„   rq   rq   rr   Úeof_receivedÍ  s   
zStreamProtocol.eof_receivedc                 C  ó   t  ¡ | _d S r‚   )rä   rG   rí  r„   rq   rq   rr   Úpause_writingÒ  rÏ  zStreamProtocol.pause_writingc                 C  rÍ  r‚   ©rí  rã   r„   rq   rq   rr   Úresume_writingÕ  rÏ  zStreamProtocol.resume_writing©rð  rñ  r   rŒ   ©rú   rî  r   rŒ   )r±  r¯  r   rŒ   )r   rv   r½   )rk   rl   rm   r·  rÁ   rï  rö  rø  rù  rú  rü  rþ  rq   rq   rq   rr   ré  ²  s   
 




ré  c                   @  sn   e Zd ZU 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í  Nrî  rÁ   rð  rñ  r   rŒ   c                 C  s.   t dd| _t ¡ | _t ¡ | _| j ¡  d S )Néd   )Úmaxlen)r   rê  rä   rG   rì  rí  rã   rõ  rq   rq   rr   rö  ß  s   

z DatagramProtocol.connection_maderú   c                 C  s   | j  ¡  | j ¡  d S r‚   )rì  rã   rí  r÷  rq   rq   rr   rø  å  s   
z DatagramProtocol.connection_lostr±  r¯  ÚaddrrQ   c                 C  s&   t |ƒ}| j ||f¡ | j ¡  d S r‚   )rB   rê  r\  rì  rã   )r   r±  r  rq   rq   rr   Údatagram_receivedé  s   z"DatagramProtocol.datagram_receivedrÌ   c                 C  s
   || _ d S r‚   )rÁ   r÷  rq   rq   rr   Úerror_receivedî  r¢  zDatagramProtocol.error_receivedc                 C  rÍ  r‚   )rí  Úclearr„   rq   rq   rr   rü  ñ  rÏ  zDatagramProtocol.pause_writingc                 C  rÍ  r‚   rý  r„   rq   rq   rr   rþ  ô  rÏ  zDatagramProtocol.resume_writingrÿ  r   )r±  r¯  r  rQ   r   rŒ   )rú   rÌ   r   rŒ   r½   )rk   rl   rm   r·  rÁ   rö  rø  r  r  rü  rþ  rq   rq   rq   rr   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½  rJ   Ú_receive_guardÚ_send_guardr»  ©r   rð  r
  rq   rq   rr   r€   ù  s
   


zSocketStream.__init__r   úsocket.socketc                 C  ó   | j  d¡S ©NÚsocket©râ  Úget_extra_infor„   rq   rq   rr   Ú_raw_socket   ó   zSocketStream._raw_socketr­  r®  rN  r¯  c              	   Ã  s  | j  | jj ¡ s(| j ¡ s(| jjs(| j ¡  | jj ¡ I d H  | j 	¡  nt
 ¡ I d H  z| jj ¡ }W n tyP   | jrDtd ‚| jjrM| jjd ‚td ‚w t|ƒ|krk|d |… ||d … }}| jj |¡ | jjs}| jj ¡  W d   ƒ |S W d   ƒ |S 1 sˆw   Y  |S r‚   )r  r½  rì  Úis_setrâ  rÃ  rï  Úresume_readingrÈ   Úpause_readingr]  r³  rê  ÚpopleftÚ
IndexErrorr»  r=   rÁ   r>   ÚlenÚ
appendleftr  )r   r®  ÚchunkÚleftoverrq   rq   rr   r²    sB   €
ÿþý

ú
â ý
ã à zSocketStream.receiver—  rŒ   c                 Ã  s¨   | j F t ¡ I d H  | jrt‚| jjd ur| jj‚z| j |¡ W n t	y8 } z	| j 
¡ r3t|‚‚ d }~ww | jj ¡ I d H  W d   ƒ d S 1 sMw   Y  d S r‚   )r  r]  r³  r»  r=   r½  rÁ   râ  r¿  r£   rÃ  r;   rí  rÈ   )r   r—  rú   rq   rq   rr   rÅ  '  s"   €
€ü"ðzSocketStream.sendc                 Ã  s(   z| j  ¡  W d S  ty   Y d S w r‚   )râ  Ú	write_eofÚOSErrorr„   rq   rq   rr   Ú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Ã  r$  r%  r   r	   Úabortr„   rq   rq   rr   r´  @  s   €
ÿ
øzSocketStream.acloseN)rð  r	  r
  ré  ©r   r  rµ  r¶  rÆ  r½   )
rk   rl   rm   r€   rA  r  r²  rÅ  r&  r´  rq   rq   rq   rr   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 )Ú_RawSocketMixinNrh  Ú_receive_futureÚ_send_futureFÚ
raw_socketr  c                 C  s   || _ tdƒ| _tdƒ| _d S )Nr  r  )Ú_RawSocketMixin__raw_socketrJ   r  r  ©r   r-  rq   rq   rr   r€   R  s   
z_RawSocketMixin.__init__r   c                 C  r7  r‚   )r.  r„   rq   rq   rr   r  W  r8  z_RawSocketMixin._raw_socketr˜   úasyncio.AbstractEventLooprM  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   rq   rr   Úcallback\  ó   z6_RawSocketMixin._wait_until_readable.<locals>.callback©r˜  r  r   rŒ   )rä   r   r+  Ú
add_readerr.  rË   ry  ©r   r˜   r6  r˜  rq   r5  rr   Ú_wait_until_readable[  ó
   
z$_RawSocketMixin._wait_until_readablec                   r1  )Nr˜  r  r   rŒ   c                   r2  r‚   )r,  Úremove_writerr.  r4  r5  rq   rr   r6  f  r7  z6_RawSocketMixin._wait_until_writable.<locals>.callbackr8  )rä   r   r,  Ú
add_writerr.  rË   ry  r:  rq   r5  rr   Ú_wait_until_writablee  r<  z$_RawSocketMixin._wait_until_writablerŒ   c                 Ã  sV   | j s'd| _ | j ¡ dkr| j ¡  | jr| j d ¡ | jr)| j d ¡ d S d S d S )NTéÿÿÿÿ)Ú_closingr.  Úfilenor   r+  rË   r,  r„   rq   rq   rr   r´  o  s   €
øz_RawSocketMixin.aclose©r-  r  r)  )r˜   r0  r   rM  r½   )rk   rl   rm   r+  r·  r,  rA  r€   rA  r  r;  r?  r´  rq   rq   rq   rr   r*  M  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„   rq   rq   rr   r&  |  s   €"ÿzUNIXSocketStream.send_eofr­  r®  rN  r¯  c                 Ã  s¬   t ƒ }t ¡ I d H  | j> 	 z| j |¡}W n% ty)   |  |¡I d H  Y n" ty= } z	| j	r6t
d ‚t|‚d }~ww |sBt‚|W  d   ƒ S q1 sOw   Y  d S r‚   )r   r]  r³  r  r  ÚrecvÚBlockingIOErrorr;  r%  rA  r=   r;   r>   )r   r®  r˜   r±  rú   rq   rq   rr   r²  €  s*   €€üñÿzUNIXSocketStream.receiver—  c                 Ã  sÊ   t ƒ }t ¡ I d H  | jM t|ƒ}|rSz| j |¡}W n% ty.   |  |¡I d H  Y n t	yB } z	| j
r;td ‚t|‚d }~ww ||d … }|sW d   ƒ d S W d   ƒ d S 1 s^w   Y  d S r‚   )r   r]  r³  r  Ú
memoryviewr  rÅ  rG  r?  r%  rA  r=   r;   )r   r—  r˜   ÚviewÚ
bytes_sentrú   rq   rq   rr   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rt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ü   rN  r¡   r   Úarrayr]  r³  r  r  Úrecvmsgr  ÚCMSG_LENÚitemsizerG  r;  r%  rA  r=   r;   r>   Ú
SOL_SOCKETÚ
SCM_RIGHTSr£   Ú	frombytesr   Úlist)r   rK  rL  r˜   ÚfdsrÀ   ÚancdataÚflagsr  rú   Ú
cmsg_levelÚ	cmsg_typeÚ	cmsg_datarq   rq   rr   Úreceive_fds¦  sN   €
ÿ€üðïÿÿÿ&zUNIXSocketStream.receive_fdsrÀ   rW  ú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 emptyrN  )r¡   r   rü   rN  r\  r"   rB  rO  r]  r³  r  r  Úsendmsgr  rS  rT  rG  r?  r%  rA  r=   r;   )r   rÀ   rW  r˜   ÚfilenosÚfdÚfdarrayrú   rq   rq   rr   Úsend_fdsÍ  sB   €

€ÿ€üö"øzUNIXSocketStream.send_fdsNr½   rµ  r¶  rÆ  )rK  rN  rL  rN  r   rM  )rÀ   r¯  rW  r^  r   rŒ   )rk   rl   rm   r&  r²  rÅ  r]  rc  rq   rq   rq   rr   rD  {  s    


'rD  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 )ÚTCPSocketListenerNrF  Ú_accept_scopeFr-  r  c                 C  s$   || _ ttjtƒ ƒ| _tdƒ| _d S )Núaccepting connections from)Ú_TCPSocketListener__raw_socketr0   rä   ÚBaseEventLoopr   r{   rJ   Ú_accept_guardr/  rq   rq   rr   r€   ó  s   zTCPSocketListener.__init__r   c                 C  r7  r‚   )rg  r„   rq   rq   rr   r  ø  r8  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=   ri  r]  r³  rO   re  r{   Úsock_acceptr  rä   r   r3  r¡   rà  Ú
setsockoptr  ÚIPPROTO_TCPÚTCP_NODELAYÚconnect_accepted_socketré  r  )r   Úclient_sockÚ_addrrð  r
  rq   rq   rr   Ú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»  re  r{   r3  r  r¡   rà  r¸   r	   r   r„   rq   rq   rr   r´    s   €ÿ
zTCPSocketListener.acloserC  r)  ©r   rj  r½   )rk   rl   rm   re  r·  r»  r€   rA  r  rs  r´  rq   rq   rq   rr   rd  ï  s   
 

rd  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 )Nrf  F)Ú_UNIXSocketListener__raw_socketr   r{   rJ   ri  r»  r/  rq   rq   rr   r€   ,  s   

zUNIXSocketListener.__init__r   rj  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{   r3  rv  ©Ú_r„   rq   rr   r¶   >  s    z+UNIXSocketListener.accept.<locals>.<lambda>)r]  r³  ri  rv  rs  ÚsetblockingrD  rG  rä   r   r{   r9  rË   ry  r%  r»  r=   r;   )r   rq  rx  r˜  rú   rq   r„   rr   rs  2  s0   €
û
ÿ€üôÿzUNIXSocketListener.acceptrŒ   c                 Ã  s   d| _ | j ¡  d S rZ  )r»  rv  r   r„   rq   rq   rr   r´  G  s   €zUNIXSocketListener.aclosec                 C  r7  r‚   )rv  r„   rq   rq   rr   r  K  r8  zUNIXSocketListener._raw_socketNrC  rt  r½   r)  )rk   rl   rm   r€   rs  r´  rA  r  rq   rq   rq   rr   ru  +  s    


ru  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  rq   rq   rr   r€   Q  ó
   


zUDPSocket.__init__r   r  c                 C  r  r  r  r„   rq   rq   rr   r  Z  r  zUDPSocket._raw_socketrŒ   c                 Ã  ó$   d| _ | j ¡ s| j ¡  d S d S rZ  ©r»  râ  rÃ  r   r„   rq   rq   rr   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  r]  r³  r½  rê  râ  rÃ  rì  r  rÈ   r  r  r»  r=   r;   r„   rq   rq   rr   r²  c  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  r]  r³  r½  rí  rÈ   r»  r=   râ  rÃ  r;   Úsendto©r   r—  rq   rq   rr   rÅ  t  ó   €
"øzUDPSocket.sendN©rð  r{  r
  r  r)  r½   )r   r€  )r—  rS   r   rŒ   ©	rk   rl   rm   r€   rA  r  r´  r²  rÅ  rq   rq   rq   rr   rz  P  s    
	

rz  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  rq   rq   rr   r€     r|  zConnectedUDPSocket.__init__r   r  c                 C  r  r  r  r„   rq   rq   rr   r  Š  r  zConnectedUDPSocket._raw_socketrŒ   c                 Ã  r}  rZ  r~  r„   rq   rq   rr   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   Úpacketrq   rq   rr   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„  rq   rq   rr   rÅ  ¦  r…  zConnectedUDPSocket.sendNr†  r)  r½   ©r   r¯  rÆ  r‡  rq   rq   rq   rr   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   r]  r³  r  r  ÚrecvfromrG  r;  r%  rA  r=   r;   ©r   r˜   r±  rú   rq   rq   rr   r²  ³  ó&   €€üôÿzUNIXDatagramSocket.receiver—  rŒ   c                 Ã  s¤   t ƒ }t ¡ I d H  | j: 	 z| jj|Ž  W n% ty)   |  |¡I d H  Y n ty= } z	| j	r6t
d ‚t|‚d }~ww 	 W d   ƒ d S q1 sKw   Y  d S r‚   )r   r]  r³  r  r  rƒ  rG  r?  r%  rA  r=   r;   ©r   r—  r˜   rú   rq   rq   rr   rÅ  Ä  r‘  zUNIXDatagramSocket.sendN)r   rT   )r—  rT   r   rŒ   ©rk   rl   rm   r²  rÅ  rq   rq   rq   rr   rŒ  ²  ó    
rŒ  c                   @  r‹  )ÚConnectedUNIXDatagramSocketr   r¯  c                 Ã  r  rŽ  )r   r]  r³  r  r  rF  rG  r;  r%  rA  r=   r;   r  rq   rq   rr   r²  ×  r‘  z#ConnectedUNIXDatagramSocket.receiver—  rŒ   c                 Ã  s¤   t ƒ }t ¡ I d H  | j: 	 z| j |¡ W n% ty)   |  |¡I d H  Y n ty= } z	| j	r6t
d ‚t|‚d }~ww 	 W d   ƒ d S q1 sKw   Y  d S r‚   )r   r]  r³  r  r  rÅ  rG  r?  r%  rA  r=   r;   r’  rq   rq   rr   rÅ  è  r‘  z ConnectedUNIXDatagramSocket.sendNrŠ  rÆ  r“  rq   rq   rq   rr   r•  Ö  r”  r•  Úread_eventsz'RunVar[dict[int, asyncio.Future[bool]]]Ú_read_eventsÚwrite_eventsÚ_write_eventsc                   @  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 )rG   r   c                 C  r  r‚   r  r¡  rq   rq   rr   r    r¢  zEvent.__new__rŒ   c                 C  rû  r‚   )rä   rG   Ú_eventr„   rq   rq   rr   r€     rÏ  zEvent.__init__c                 C  rÍ  r‚   )rš  rã   r„   rq   rq   rr   rã   
  rÏ  z	Event.setrö   c                 C  ó
   | j  ¡ S r‚   )rš  r  r„   rq   rq   rr   r    r¢  zEvent.is_setc                 Ã  s0   |   ¡ rt ¡ I d H  d S | j ¡ I d H  d S r‚   )r  r]  r³  rš  rÈ   r„   rq   rq   rr   rÈ     s   €z
Event.waitr4   c                 C  s   t t| jjƒƒS r‚   )r4   r   rš  Ú_waitersr„   rq   rq   rr   Ú
statistics  rÑ  zEvent.statisticsN)r   rG   r½   r>  )r   r4   )	rk   rl   rm   r  r€   rã   r  rÈ   r  rq   rq   rq   rr   rG     s    




rG   c                   @  s^   e 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 )rI   F©Úfast_acquirerŸ  rö   r   c                C  r  r‚   r  ©r
  rŸ  rq   rq   rr   r    r¢  zLock.__new__rŒ   c                C  s   || _ d | _tƒ | _d S r‚   )Ú_fast_acquireÚ_owner_taskr   rœ  )r   rŸ  rq   rq   rr   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 n t
yk   | j |¡ | j|u rj|  ¡  ‚ w | j |¡ d S ©Nz)Attempted to acquire an already held Lock)r0   rä   rå   r   r¢  rœ  r]  r¼  r¡  r^  r   Úreleaser£   r   r\  r   )r   r¯   Úfutr—  rq   rq   rr   Úacquire#  s8   €üþ

û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¯   rq   rq   rr   Úacquire_nowaitE  s   
zLock.acquire_nowaitc                 C  s
   | j d uS r‚   )r¢  r„   rq   rq   rr   ÚlockedP  r¢  zLock.lockedc                 C  sL   | j tƒ kr
tdƒ‚| jD ]\}}| ¡ s || _ | d ¡  d S qd | _ d S )Nz)The current task is not holding this lock)r¢  r   r£   rœ  rÃ   rË   )r   r¯   r¥  rq   rq   rr   r¤  S  s   
ý
zLock.releaser5   c                 C  s*   | j rt| j ƒnd }t|  ¡ |t| jƒƒS r‚   )r¢  ÚAsyncIOTaskInfor5   r¨  r   rœ  )r   Ú	task_inforq   rq   rr   r  _  s   zLock.statisticsN)rŸ  rö   r   rI   )rŸ  rö   r   rŒ   r½   r>  )r   r5   )
rk   rl   rm   r  r€   r¦  r§  r¨  r¤  r  rq   rq   rq   rr   rI     s    

"

rI   c                      s|   e 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 )#rM   NF©Ú	max_valuerŸ  Úinitial_valuerN  r¬  rE  rŸ  rö   r   c                C  r  r‚   r  ©r
  r­  r¬  rŸ  rq   rq   rr   r  e  s   
zSemaphore.__new__c                  s.   t ƒ j||d || _|| _|| _tƒ | _d S )N)r¬  )r‰  r€   Ú_valueÚ
_max_valuer¡  r   rœ  )r   r­  r¬  rŸ  rŽ  rq   rr   r€   n  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yb   z| j |¡ W ‚  tya   |  ¡  Y ‚ w w ©Nr   rµ   )r¯  rœ  r]  r¼  r¡  r^  r   r¤  rä   r   r\  r   r¡   ©r   r¥  rq   rq   rr   r¦  {  s4   €üþý
ýýzSemaphore.acquirec                 C  s    | j dkrt‚|  j d8  _ d S r±  )r¯  r@   r„   rq   rq   rr   r§  —  s   
zSemaphore.acquire_nowaitc                 C  s`   | j d ur| j| j krtdƒ‚| jD ]}| ¡ s&| d ¡ | j |¡  d S q|  jd7  _d S )Nz!semaphore released too many timesrµ   )r°  r¯  r¡   rœ  rÃ   rË   r   r²  rq   rq   rr   r¤    s   

ýzSemaphore.releasec                 C  r7  r‚   )r¯  r„   rq   rq   rr   r9  ©  r8  zSemaphore.valuec                 C  r7  r‚   )r°  r„   rq   rq   rr   r¬  ­  r8  zSemaphore.max_valuerK   c                 C  s   t t| jƒƒS r‚   )rK   r   rœ  r„   rq   rq   rr   r  ±  rÏ  zSemaphore.statistics)r­  rN  r¬  rE  rŸ  rö   r   rM   )r­  rN  r¬  rE  rŸ  rö   r½   rÛ  rÜ  )r   rK   )rk   rl   rm   r  r€   r¦  r§  r¤  rA  r9  r¬  r  r  rq   rq   rŽ  rr   rM   d  s    ûû


rM   c                   @  sÌ   e Zd ZU dZded< 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 );rE   r   r  Ú_total_tokensÚtotal_tokensr   c                 C  r  r‚   r  ©r
  r´  rq   rq   rr   r  ¸  r¢  zCapacityLimiter.__new__c                 C  s   t ƒ | _tƒ | _|| _d S r‚   )rã   Ú
_borrowersr   Ú_wait_queuer´  )r   r´  rq   rq   rr   r€   »  s   
zCapacityLimiter.__init__rŒ   c                 Ã  s   |   ¡ I d H  d S r‚   )r¦  r„   rq   rq   rr   r[  À  ó   €zCapacityLimiter.__aenter__r†   r‡   rˆ   r‰   rŠ   r‹   c                 Ã  s   |   ¡  d S r‚   )r¤  rŽ   rq   rq   rr   rc  Ã  s   €zCapacityLimiter.__aexit__c                 C  r7  r‚   )r³  r„   rq   rq   rr   r´  Ë  r8  zCapacityLimiter.total_tokensr9  c                 C  sˆ   t |tƒst |¡stdƒ‚|dk rtdƒ‚t|| j dƒ}|| _| jr>|rB| jj	ddd }| 
¡  |d8 }| jr@|s&d S d S d S d S )Nz'total_tokens must be an int or math.infr   ztotal_tokens must be >= 0F©Úlastrµ   )rü   rN  r&  Úisinfru  r¡   Úmaxr³  r·  Úpopitemrã   )r   r9  Úwaiters_to_notifyÚeventrq   rq   rr   r´  Ï  s   
ýrN  c                 C  s
   t | jƒS r‚   )r   r¶  r„   rq   rq   rr   Úborrowed_tokensà  ó   
zCapacityLimiter.borrowed_tokensc                 C  s   | j t| jƒ S r‚   )r³  r   r¶  r„   rq   rq   rr   Úavailable_tokensä  ó   z CapacityLimiter.available_tokensc                 C  s<   | j rt| jƒ| jk r| j jddd }| ¡  dS dS dS )zCNotify the next task in line if this limiter has free capacity now.Fr¹  rµ   N)r·  r   r¶  r³  r½  rã   )r   r¿  rq   rq   rr   Ú_notify_next_waiterè  s   þz#CapacityLimiter._notify_next_waiterc                 C  ó   |   tƒ ¡ d S r‚   )Úacquire_on_behalf_of_nowaitr   r„   rq   rq   rr   r§  î  rÑ  zCapacityLimiter.acquire_nowaitÚborrowerr  c                 C  s<   || j v r	tdƒ‚| jst| j ƒ| jkrt‚| j  |¡ d S )NzEthis borrower is already holding one of this CapacityLimiter's tokens)r¶  r£   r·  r   r³  r@   r  ©r   rÇ  rq   rq   rr   rÆ  ñ  s   
ÿz+CapacityLimiter.acquire_on_behalf_of_nowaitc                 Ã  s   |   tƒ ¡I d H S r‚   )Úacquire_on_behalf_ofr   r„   rq   rq   rr   r¦  ü  r¸  zCapacityLimiter.acquirec                 Ã  sÂ   t  ¡ I d H  z|  |¡ W n: tyI   t ¡ }|| j|< z	| ¡ I d H  W n ty?   | j 	|d ¡ | 
¡ r>|  ¡  ‚ w | j |¡ Y d S w z
t  ¡ I d H  W d S  ty`   |  ¡  ‚ w r‚   )r]  r¼  rÆ  r@   rä   rG   r·  rÈ   r_  Úpopr  rÄ  r¶  r  r^  r¤  )r   rÇ  r¿  rq   rq   rr   rÉ  ÿ  s.   €
ûôþz$CapacityLimiter.acquire_on_behalf_ofc                 C  rÅ  r‚   )Úrelease_on_behalf_ofr   r„   rq   rq   rr   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È  rq   rq   rr   rË    s   ÿþÿz$CapacityLimiter.release_on_behalf_ofr3   c                 C  s   t | j| jt| jƒt| jƒƒS r‚   )r3   rÀ  r´  Útupler¶  r   r·  r„   rq   rq   rr   r  $  s   üzCapacityLimiter.statisticsN)r´  r  r   rE   )r´  r  r½   r¼   r?  r@  rÛ  )rÇ  r  r   rŒ   )r   r3   )rk   rl   rm   r³  r·  r  r€   r[  rc  rA  r´  rB  rÀ  rÂ  rÄ  r§  rÆ  r¦  rÉ  r¤  rË  r  rq   rq   rq   rr   rE   µ  s,   
 











rE   Ú_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   rO  rã   Ú_handled_signals)r   rÏ  rq   rq   rr   r€   6  s
   
z_SignalReceiver.__init__rº   r%   r   rŒ   c                 C  s*   | j  |¡ | j ¡ s| j d ¡ d S d S r‚   )rÒ  r\  rO  r·   rË   )r   rº   rq   rq   rr   Ú_deliver=  s   
ÿz_SignalReceiver._deliverc                 C  s2   t | jƒD ]}| j || j|¡ | j |¡ q| S r‚   )rã   rÑ  r{   Úadd_signal_handlerrÔ  rÓ  r  )r   Úsigrq   rq   rr   r…   B  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Ö  rq   rq   rr   r   I  s   
ÿz_SignalReceiver.__exit__c                 C  s   | S r‚   rq   r„   rq   rq   rr   Ú	__aiter__R  s   z_SignalReceiver.__aiter__c                 Ã  s6   t  ¡ I d H  | jst ¡ | _| jI d H  | j ¡ S r‚   )r]  r³  rÒ  rä   r   rO  r  r„   rq   rq   rr   Ú	__anext__U  s   €

z_SignalReceiver.__anext__N)rÏ  rÐ  )rº   r%   r   rŒ   )r   rÎ  r¼   )r   r%   )	rk   rl   rm   r€   rÔ  r…   r   rØ  rÙ  rq   rq   rq   rr   rÎ  5  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á   rC  r÷   r‰  r€   r6  Úget_nameÚweakrefÚrefri  )r   r¯   r  rC  rœ   rŽ  rq   rr   r€   d  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)ri  r+  rü   r,  rä   r   rÃ   ræ   rá   rç   r%  )r   r¯   r  rç   rq   rq   rr   Úhas_pending_cancellationp  s   ÿþ
z(AsyncIOTaskInfo.has_pending_cancellation)r¯   r´   r>  )rk   rl   rm   r€   rÝ  r  rq   rq   rŽ  rr   r©  c  s    r©  c                   @  sŽ   e Zd ZU ded< ddddœd>dd„Zd?dd„Zd@dd„ZdAdd„ZdBd!d"„ZdCd#d$„Z	dDd'd(„Z
dEd0d1„ZdFd5d6„ZdGd8d9„ZdHd<d=„ZdS )IÚ
TestRunnerzBMemoryObjectSendStream[tuple[Awaitable[Any], asyncio.Future[Any]]]Ú_send_streamNF)rt   Ú
use_uvloopru   rt   rv   rà  rö   ru   rw   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   rs   )	r  ÚplatformÚuvloopr±   Úwinloopr_   Ú_runnerrX  Ú_runner_task)r   rt   rà  ru   rã  rä  rq   rq   rr   r€   ‡  s   

zTestRunner.__init__c                 C  s   | j  ¡  |  ¡  | j¡ | S r‚   )rå  r…   r™   Úset_exception_handlerÚ_exception_handlerr„   rq   rq   rr   r…   œ  s   
zTestRunner.__enter__r†   r‡   rˆ   r‰   rŠ   r‹   c                 C  s   | j  |||¡ d S r‚   )rå  r   rŽ   rq   rq   rr   r   ¡  s   zTestRunner.__exit__r   c                 C  r›  r‚   )rå  r™   r„   rq   rq   rr   r™   ©  r¢  zTestRunner.get_loopr˜   r0  r›   r¤  c                 C  s2   t | d¡tƒr| j |d ¡ d S | |¡ d S )NrÁ   )rü   rá   rÌ   rX  r\  Údefault_exception_handler)r   r˜   r›   rq   rq   rr   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)rX  r   rf   )r   rd   rq   rq   rr   Ú_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ú   rq   rq   rr   Ú_run_tests_and_fixtures¿  s0   €€
ÿ€ü
€ðPÿz"TestRunner._run_tests_and_fixturesrî   ú Callable[P, Awaitable[T_Retval]]rÒ   úP.argsrz  úP.kwargsrž   c                 Ï  sr   | j stttt tjf  dƒ\| _}|  ¡  	|  
|¡¡| _ ||i |¤Ž}|  ¡  ¡ }| j ||f¡ |I d H S rk  )ræ  rC   rÌ  r   r-   rä   r   rß  r™   r   rð  rÔ   Úsend_nowait)r   rî   rÒ   rz  rë  rœ   rÆ   rq   rq   rr   Ú_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 stoprq   )r™   r’   rõ  Úasendrê  ÚStopAsyncIterationr´  r£   )r   rö  rz  ÚasyncgenÚfixturevaluerq   rq   rr   Ú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ö  rz  rï  rq   rq   rr   Úrun_fixture	  s
   ÿzTestRunner.run_fixtureÚ	test_funcú'Callable[..., Coroutine[Any, Any, Any]]c              
   C  s^   z|   ¡  | j|fi |¤Ž¡ W n ty( } z| j |¡ W Y d }~nd }~ww |  ¡  d S r‚   )r™   r’   rõ  rÌ   rX  r\  rê  )r   r   rz  rú   rq   rq   rr   Úrun_test	  s   ÿ€ÿzTestRunner.run_test)rt   rv   rà  rö   ru   rw   r   rŒ   )r   rÞ  r¼   r¾   )r˜   r0  r›   r¤  r   rŒ   r½   )rë  rì  r   rŒ   )rî   rñ  rÒ   rò  rz  ró  r   rž   )rö  r÷  rz  r¤  r   rø  )rö  rþ  rz  r¤  r   rž   )r   r  rz  r¤  r   rŒ   )rk   rl   rm   r·  r€   r…   r   r™   rè  rê  rð  rõ  rý  rÿ  r  rq   rq   rq   rr   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ÍdIdJ„ƒZedÎdKdL„ƒZedÏdNdO„ƒZedÐdXdY„ƒZedÑd\d]„ƒZe	3dÒdÓddde„ƒZedÔdidj„ƒZedÕdndo„ƒZedÕdpdq„ƒZedÖdwdx„ƒZ ed×d}d~„ƒZ!eddddd€œdØd‰dŠ„ƒZ"e	dÙdÚdŽd„ƒZ#edÛd’d“„ƒZ$edÛd”d•„ƒZ%edÛd–d—„ƒZ&edÕd˜d™„ƒZ'edÜd›dœ„ƒZ(edÝdždŸ„ƒZ)edÞd¡d¢„ƒZ*edßd¤d¥„ƒZ+edàd§d¨„ƒZ,edádªd«„ƒZ-edâd­d®„ƒZ.edãd²d³„ƒZ/edädµd¶„ƒZ0edåd¸d¹„ƒZ1edÃdºd»„ƒZ2edæd½d¾„ƒZ3d3S )çr]  rî   ú1Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]]rÒ   re  rz  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_namerô   r  ræ   )r¯   ©rÒ   rî   rq   rr   Úwrapper%	  s   €z#AsyncIOBackend.run.<locals>.wrapperrt   ru   rà  Frá  r   rs   ©r   rž   )	r   rá   r  râ  rã  r±   rä  r_   r¤   )r
  rî   rÒ   rz  r  r  rt   ru   rã  rä  Úrunnerrq   r  rr   r¤   	  s   


$ÿzAsyncIOBackend.runr  c                 C  ó   t ƒ S r‚   )r   r¡  rq   rq   rr   Úcurrent_token?	  r8  zAsyncIOBackend.current_tokenr  c                 C  s
   t ƒ  ¡ S r‚   )r   r(  r¡  rq   rq   rr   r‹  C	  rÁ  zAsyncIOBackend.current_timeútype[BaseException]c                 C  s   t S r‚   )r   r¡  rq   rq   rr   Úcancelled_exception_classG	  s   z(AsyncIOBackend.cancelled_exception_classrŒ   c                 Ã  s   t dƒI d H  d S rò  ©r	   r¡  rq   rq   rr   r³  K	  ó   €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ç   rq   rq   rr   r¼  O	  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   )rO   r	   r¡  rq   rq   rr   r^  b	  s   €"ÿz)AsyncIOBackend.cancel_shielded_checkpointÚdelayc                 Ã  s   t |ƒI d H  d S r‚   r  )r
  r  rq   rq   rr   r	   g	  r  zAsyncIOBackend.sleepFr  r  r  rö   rO   c                C  s   t ||dS )Nr  rN   r	  rq   rq   rr   Úcreate_cancel_scopek	  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  rq   rq   rr   Úcurrent_effective_deadlineq	  s(   
ÿûþø
z)AsyncIOBackend.current_effective_deadlineúabc.TaskGroupc                 C  r
  r‚   )rW  r¡  rq   rq   rr   Úcreate_task_groupˆ	  r8  z AsyncIOBackend.create_task_groupú	abc.Eventc                 C  r
  r‚   rF   r¡  rq   rq   rr   Úcreate_eventŒ	  r8  zAsyncIOBackend.create_eventrŸ  úabc.Lockc                C  s
   t |dS )Nrž  rH   r   rq   rq   rr   Úcreate_lock	  rÁ  zAsyncIOBackend.create_lockNr«  r­  rN  r¬  rE  úabc.Semaphorec                C  s   t |||dS )Nr«  rL   r®  rq   rq   rr   Úcreate_semaphore”	  s   zAsyncIOBackend.create_semaphorer´  úabc.CapacityLimiterc                 C  ó   t |ƒS r‚   rD   rµ  rq   rq   rr   Ú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_limiterrO   rä   r   rž   rí   r„  rÕ   r  ry  r›  r³   r   rÊ  r‹  rŒ  rœ  r  rê   Úremove_done_callbackr   r¤   r9   rè   rŠ  rš  )r
  rî   rÒ   r   r!  r‡  r…  r2  rÆ   rê   ÚworkerÚnowÚexpired_workerr›   Úworker_scoperq   rq   rr   Ú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 )NzCancelled by cancel scope rñ   )r:   r•  r-  r   r6  r  rè   )r
  r2  rq   rq   rr   Úcheck_cancelledß	  s   ùzAsyncIOBackend.check_cancelledÚtokenc                   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 rZ  )r0   rä   rå   r   r  ræ   r  r  r  r   Ú
concurrentÚfuturesrï   )Ú__tracebackhide__r¯   rú   ©rÒ   rî   r2  rq   rr   Útask_wrapperò	  s$   €ÿý€ÿÿz:AsyncIOBackend.run_async_from_thread.<locals>.task_wrapperr   rä   r•  rÏ   r  )r0   r:   r  Únative_tokenr–  r?   r   r¤   r9   r­   rä   Úrun_coroutine_threadsafer  )r
  rî   rÒ   r,  r1  r˜   r›   r˜  rq   r0  rr   Ú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Ë   r_  rÍ   rü   rÌ   rÿ   ©rÒ   r˜  rî   rq   rr   r  
  s   

ÿ€þz4AsyncIOBackend.run_sync_from_thread.<locals>.wrapperr   r½   )
r   r0   r:   r  r2  r–  r?   r   r¹   r  )r
  rî   rÒ   r,  r  r˜   rq   r5  rr   r¦  
  s   	ÿ
z#AsyncIOBackend.run_sync_from_threadúabc.BlockingPortalc                 C  r
  r‚   )r   r¡  rq   rq   rr   Úcreate_blocking_portal)
  r8  z%AsyncIOBackend.create_blocking_portalÚcommandú)StrOrBytesPath | Sequence[StrOrBytesPath]r×  úint | IO[Any] | NonerÙ  rÚ  r-   rÇ  c          
      Ë  s¼   |   ¡ I d H  t|tƒrt |¡}t|ttfƒr*tj|f|||dœ|¤ŽI d H }ntj	||||dœ|¤ŽI d H }|j
rAt|j
ƒnd }|jrKt|jƒnd }|jrUt|jƒnd }	t||||	ƒS )N)r×  rÙ  rÚ  )r³  rü   r#   ÚosÚfspathrï   r¯  rä   Úcreate_subprocess_shellÚcreate_subprocess_execr×  r¸  rÙ  r«  rÚ  rÇ  )
r
  r8  r×  rÙ  rÚ  rz  rå  Ústdin_streamÚstdout_streamÚstderr_streamrq   rq   rr   Úopen_process-
  s4   €


ÿüûüûzAsyncIOBackend.open_processr…  rç  c                 C  s&   t t|ƒdd tƒ  tt|ƒ¡ d S )Nz AnyIO process pool shutdown taskrt  )r   rè  rí   ry  r   ræ  )r
  r…  rq   rq   rr   Ú#setup_process_pool_exit_at_shutdownQ
  s   þÿz2AsyncIOBackend.setup_process_pool_exit_at_shutdownÚhostrï   ÚportÚlocal_addressúIPSockAddrType | Nonerj  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
  rD  rE  rF  rð  r
  rq   rq   rr   Úconnect_tcp[
  s   €
ÿþ
zAsyncIOBackend.connect_tcpÚpathústr | bytesúabc.UNIXSocketStreamc                 ƒ  s¤   |   ¡ I d H  tƒ ‰ t tj¡‰ˆ d¡ 	 z
ˆ |¡ W tˆƒS  tyE   t ¡ }ˆ  	ˆ|j
d ¡ | ‡ ‡fdd„¡ |I d H  Y n tyP   ˆ ¡  ‚ w q)NFTc                   ó
   ˆ   ˆ¡S r‚   ©r=  rw  ©r˜   r-  rq   rr   r¶   t
  ó   
 z-AsyncIOBackend.connect_unix.<locals>.<lambda>)r³  r   r  ÚAF_UNIXry  ÚconnectrG  rä   r   r>  rË   ry  r_  r   rD  )r
  rK  r˜  rq   rP  rr   Úconnect_unixh
  s&   €

÷þøzAsyncIOBackend.connect_unixÚsockr  rR   c                 C  r  r‚   ©rd  ©r
  rU  rq   rq   rr   Úcreate_tcp_listener|
  rÔ  z"AsyncIOBackend.create_tcp_listenerc                 C  r  r‚   )ru  rW  rq   rq   rr   Ú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)rH  Úremote_addrrZ  r\  )r   Úcreate_datagram_endpointr  rÁ   r   rz  rˆ  )r
  rZ  rF  r[  r\  rð  r
  rq   rq   rr   Úcreate_udp_socket„
  s   €û

z AsyncIOBackend.create_udp_socketr-  Úremote_pathústr | bytes | Noneú8abc.UNIXDatagramSocket | abc.ConnectedUNIXDatagramSocketc                 ƒ  sš   |   ¡ I d H  tƒ ‰ |rI	 z
ˆ |¡ W tˆƒS  ty<   t ¡ }ˆ  ˆ|jd ¡ | ‡ ‡fdd„¡ |I d H  Y n t	yG   ˆ 
¡  ‚ w qtˆƒS )NTc                   rN  r‚   rO  rw  rP  rq   rr   r¶   ª
  rQ  z<AsyncIOBackend.create_unix_datagram_socket.<locals>.<lambda>)r³  r   rS  rG  rä   r   r>  rË   ry  r_  r   r•  rŒ  )r
  r-  ra  r˜  rq   rP  rr   Úcreate_unix_datagram_socketœ
  s&   €
÷þøz*AsyncIOBackend.create_unix_datagram_socketr   ©rZ  r`  ÚprotorY  úbytes | str | Noneústr | int | Noneúint | AddressFamilyr`  úint | SocketKindrf  rY  ú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 )Nre  )r   Úgetaddrinfo)r
  rD  rE  rZ  r`  rf  rY  rq   rq   rr   rl  ´
  s   €ÿzAsyncIOBackend.getaddrinfoÚsockaddrrQ   útuple[str, str]c                 Ã  s   t ƒ  ||¡I d H S r‚   )r   Úgetnameinfo)r
  rm  rY  rq   rq   rr   ro  Ë
  s   €zAsyncIOBackend.getnameinfoÚobjrY   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 rZ  ©r  rË   rä   rR  rq   ©ra  r¥  r–  r3  rq   rr   rÞ   à
  ó   
ÿÿz(AsyncIOBackend.wait_readable.<locals>.cbr   ©Úget_selectorr½   )r—  rá   r#  rã   rü   rN  rB  r<   r   rÔ   r9  rà  Ú$anyio._core._asyncio_selector_threadru  r3  r  r=   ©r
  rp  r˜   rÞ   ru  ÚselectorÚsuccessrq   rr  rr   Ú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 rZ  rq  rq   ©ra  r¥  r=  r˜  rq   rr   rÞ     rs  z(AsyncIOBackend.wait_writable.<locals>.cbr   rt  r½   )r™  rá   r#  rã   rü   rN  rB  r<   r   rÔ   r>  rà  rv  ru  r=  r  r=   rw  rq   r|  rr   Ú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   rt  )rü   rN  rB  r   r™  rá   r#  rÊ  r  rË   rä   rR  r=  rà  rv  ru  r—  r3  )r
  rp  ra  r˜   r˜  r¥  ru  r–  rq   rq   rr   Únotify_closing;  sX   ÿÿÿýÿÿÿýzAsyncIOBackend.notify_closingc                 Ã  ó
   t |ƒS r‚   rV  rW  rq   rq   rr   Úwrap_listener_socketl  ó   €z#AsyncIOBackend.wrap_listener_socketr  c                 Ã  ó&   t ƒ jt|dI d H \}}t||ƒS ©N)rU  )r   rI  ré  r  ©r
  rU  rð  r
  rq   rq   rr   Úwrap_stream_socketp  ó
   €ÿ
z!AsyncIOBackend.wrap_stream_socketrD  c                 Ã  r  r‚   )rD  rW  rq   rq   rr   Úwrap_unix_stream_socketw  r  z&AsyncIOBackend.wrap_unix_stream_socketrz  c                 Ã  r‚  rƒ  )r   r_  r  rz  r„  rq   rq   rr   Úwrap_udp_socket{  r†  zAsyncIOBackend.wrap_udp_socketrˆ  c                 Ã  r‚  rƒ  )r   r_  r  rˆ  r„  rq   rq   rr   Úwrap_connected_udp_socket‚  r†  z(AsyncIOBackend.wrap_connected_udp_socketrŒ  c                 Ã  r  r‚   )rŒ  rW  rq   rq   rr   Úwrap_unix_datagram_socket‰  r  z(AsyncIOBackend.wrap_unix_datagram_socketr•  c                 Ã  r  r‚   )r•  rW  rq   rq   rr   Ú#wrap_connected_unix_datagram_socket  s   €z2AsyncIOBackend.wrap_connected_unix_datagram_socketrE   c                 C  s4   zt  ¡ W S  ty   tdƒ}t  |¡ | Y S w )Né(   )rÍ  rá   r#  rE   rã   )r
  r!  rq   rq   rr   r$  “  s   

ýz-AsyncIOBackend.current_default_thread_limiterrÏ  r%   ú.AbstractContextManager[AsyncIterator[Signals]]c                 G  r  r‚   )rÎ  )r
  rÏ  rq   rq   rr   Úopen_signal_receiverœ  s   z#AsyncIOBackend.open_signal_receiverr6   c                 C  s
   t tƒ ƒS r‚   )r©  r   r¡  rq   rq   rr   Ú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 rq   )r·   r©  )rÝ   r¯   rq   rq   rr   rß   ¨  s    z4AsyncIOBackend.get_running_tasks.<locals>.<listcomp>)r   r¡  rq   rq   rr   Ú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¯   r1  rq   rq   rr   Úwait_all_tasks_blockedª  s   €
þöz%AsyncIOBackend.wait_all_tasks_blockedrÞ  c                 C  s   t di |¤ŽS )Nrq   )rÞ  )r
  r  rq   rq   rr   Úcreate_test_runnerº  s   z!AsyncIOBackend.create_test_runner)
rî   r  rÒ   re  rz  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  r¬  rE  rŸ  rö   r   r  )r´  r  r   r  )FN)
rî   r  rÒ   re  r   rö   r!  r"  r   rž   )rî   r  rÒ   re  r,  r  r   rž   )rî   r  rÒ   re  r,  r  r   rž   )r   r6  )r8  r9  r×  r:  rÙ  r:  rÚ  r:  rz  r-   r   rÇ  ©r…  rç  r   rŒ   r‚   )rD  rï   rE  rN  rF  rG  r   rj  )rK  rL  r   rM  )rU  r  r   rR   )
rZ  r&   rF  rG  r[  rG  r\  rö   r   r]  )r-  r  ra  rb  r   rc  )rD  rg  rE  rh  rZ  ri  r`  rj  rf  rN  rY  rN  r   rk  )r   )rm  rQ   rY  rN  r   rn  )rp  rY   r   rŒ   )rU  r  r   r  )rU  r  r   rD  )rU  r  r   rz  )rU  r  r   rˆ  )rU  r  r   rŒ  )rU  r  r   r•  )r   rE   )rÏ  r%   r   r  )r   r6   )r   r  )r  r¤  r   rÞ  )4rk   rl   rm   Úclassmethodr¤   r  r‹  r  r³  r¼  r^  r	   r&  r'  r  r  r  r  r  r  r  r*  r+  r4  r¦  r7  rB  rC  rJ  rT  rX  rY  r`  rd  rl  ro  rz  r}  r~  r€  r…  r‡  rˆ  r‰  rŠ  r‹  r$  rŽ  r  r‘  r“  r”  rq   rq   rq   rr   r]  	  sÐ    !ÿû	û<"#	ÿøÿ440r]  )r˜   r   r   rŒ   )r   r´   )rî   r   r   rï   )r¯   r´   r   rö   )rú   r   r   rö   )r…  rÝ  ri  r  r   rŒ   r•  )ÁÚ
__future__r   rO  rä   Úconcurrent.futuresr-  r³   r&  r;  r  r  r¥   rÛ  r   r   r   r   r   r   r	   Úasyncio.base_eventsr
   Úcollectionsr   r   Úcollections.abcr   r   r   r   r   r   r   r   r   Ú
contextlibr   r   r   r   Údataclassesr   r   Ú	functoolsr   r   Úinspectr   r   r    r!   Úior"   r#   rŠ  r$   r¨   r%   r&   r'   r(   Útypesr)   r*   Útypingr+   r,   r-   r.   r/   r0   r1   rq  r3   r4   r5   r6   r7   Ú_core._eventloopr8   r9   r:   Ú_core._exceptionsr;   r<   r=   r>   r?   r@   rA   Ú_core._socketsrB   Ú_core._streamsrC   Ú_core._synchronizationrE   ÚBaseCapacityLimiterrG   Ú	BaseEventrI   ÚBaseLockrJ   rK   rM   ÚBaseSemaphoreÚ_core._tasksrO   ÚBaseCancelScoperP   rQ   rR   rS   rT   Úabc._eventlooprU   ÚlowlevelrV   Ústreams.memoryrW   rX   Ú	_typeshedrY   r  r  r\   Útyping_extensionsr_   r`   ra   Úenumrb   rc   rd   re   Úexceptiongrouprf   ÚEnumrg   r‘   r•   rž   rØ   rÚ   rÛ   rÜ   r·  rí   rô   rõ   rù   r   r  ræ   Ú
TaskStatusrL  Úeager_task_factoryrr  rV  rW  rÌ  r_  Ú_Retval_Queue_Typer„  rž  rŸ  r   ÚByteReceiveStreamr«  ÚByteSendStreamr¸  rÇ  ræ  rè  ÚProtocolré  r  r  r*  rD  rd  ru  rz  rˆ  rŒ  r•  r—  r™  rÍ  rÎ  r©  rÞ  r]  Úbackend_classrq   rq   rq   rr   Ú<module>   s   $	(
 $	 






   RNÿ
9
'U.t<%02$$JQx.!      (