o
    Þ­j”„ ã                   @  st  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lRmSZSmTZTmUZUmVZVmWZWmXZX ddlYmZZZ ddl[m\Z\ ddl]m^Z_ ddl]m`Za ddl]mbZc ddl]mdZdmeZe dd l]mfZg dd!lhmiZj dd"lMmkZkmlZlmmZmmnZnmoZo dd#lpmqZq dd$lrmsZs dd%ltmuZumvZv eB�r_d d&lwmxZx neyZxe
jzd'k�rvd d(lm{Z{ d d)l@m|Z|m}Z} n@d dlZd dl~Z~d 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-e~j†ƒZ‡G d.d/„ d/ƒZ{d£d4d5„Zˆd£d6d7„Z‰eEd8ƒZŠeEd9d:d;�Z‹e|d<ƒZŒeDd=ƒZ�esd>ƒZŽd?e�d>< d¤dAdB„Z�d¥dFdG„Z‘eGƒ Z’dHe�dI< d¦dLdM„Z“d§dPdQ„Z”G dRdS„ dSejƒZiG dTdU„ dUƒZ•eGƒ Z–dVe�dW< G dXdY„ dYeMj—ƒZ˜e
jzdZk�rej™jšZ›d[e�d\< ndZ›G d]d^„ d^eMjœƒZœe�eŠdB eždB f ZŸG d_d`„ d`e<ƒZ esdaƒZ¡dbe�da< esdcƒZ¢dde�dc< e)dedf�G dgdh„ dheMj£ƒƒZ¤e)dedf�G didj„ djeMj¥ƒƒZ¦e)dedf�G dkdl„ dleMj§ƒƒZ§d¨dqdr„Z¨d©dtdu„Z©G dvdw„ dwejªƒZ«G dxdy„ dyej¬ƒZ¬G dzd{„ d{eMj­ƒZ­G d|d}„ d}ƒZ®G d~d„ de®eMj¯ƒZ¯G d€d�„ d�eMjmƒZ°G d‚dƒ„ dƒeMjmƒZ±G d„d…„ d…eMj²ƒZ²G d†d‡„ d‡eMj³ƒZ³G dˆd‰„ d‰e®eMj´ƒZ´G dŠd‹„ d‹e®eMjµƒZµesdŒƒZ¶d�e�dŽ< esd�ƒZ·d�e�d�< G d‘d’„ d’eaƒZ`G d“d”„ d”ecƒZbG d•d–„ d–egƒZfG d—d˜„ d˜e_ƒZ^esd™ƒ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¢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Ú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Ú	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)ÚAsyncBackendÚIPSockAddrTypeÚSocketListenerÚUDPPacketTypeÚUNIXDatagramPacketType)ÚStrOrBytesPath)Ú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© rn   rn   úU/var/www/html/CropPilot/venv/lib/python3.10/site-packages/anyio/_backends/_asyncio.pyrd   {   s    rd   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_factoryrq   úbool | Nonerr   ú&Callable[[], AbstractEventLoop] | Nonec                C  s0   t j| _|| _|| _d | _d | _d| _d| _d S )Nr   F)	rd   rk   Ú_stateÚ_debugÚ_loop_factoryÚ_loopÚ_contextÚ_interrupt_countÚ_set_event_loop)Úselfrq   rr   rn   rn   ro   Ú__init__‚   s   
zRunner.__init__Úreturnc                 C  s   |   ¡  | S ©N)Ú
_lazy_init©r|   rn   rn   ro   Ú	__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‡   rn   rn   ro   Ú__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)rx   ru   rd   rl   Ú_cancel_all_tasksÚrun_until_completeÚshutdown_asyncgensÚhasattrr�   Ú_shutdown_default_executorr{   r`   Úset_event_looprŠ   rm   ©r|   Úlooprn   rn   ro   rŠ   œ   s(   
€
ü

zRunner.closer   c                 C  s   |   ¡  | jS )zReturn embedded event loop.)r€   rx   r�   rn   rn   ro   Ú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)r_   r!   Ú
ValueErrorr`   Ú_get_running_loopÚRuntimeErrorr€   ry   Úrunrx   r   Ú	threadingÚcurrent_threadÚmain_threadÚsignalÚ	getsignalÚSIGINTÚdefault_int_handlerr   Ú
_on_sigintrz   r�   ra   r   ÚgetattrÚKeyboardInterrupt)r|   r™   r˜   ÚtaskÚsigint_handlerr�   rn   rn   ro   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)ru   rd   rm   r    rl   rw   r`   Únew_event_looprx   r{   r“   rv   Ú	set_debugÚcontextvarsr   ry   r�   rn   rn   ro   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   rn   rn   rn   rn   ro   Ú<lambda>ü   s    z#Runner._on_sigint.<locals>.<lambda>)rz   ÚdoneÚcancelrx   Úcall_soon_threadsafer«   )r|   ÚsignumÚframerœ   rn   rn   ro   r©   ÷   s   zRunner._on_sigint)rq   rs   rr   rt   )r~   r\   ©rƒ   r„   r…   r†   r‡   rˆ   r~   r‰   ©r~   r‰   ©r~   r   )r™   rš   r~   r›   )rœ   r±   r~   r‰   )rh   ri   rj   r}   r‚   rŒ   rŠ   r–   r¡   r€   r©   rn   rn   rn   ro   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¬   )rb   r   rµ   r�   ÚgatherÚ	cancelledr¾   Úcall_exception_handler)r•   Ú	to_cancelr¬   rn   rn   ro   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•   rn   ro   Ú_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Ã   Úthreadrn   rÌ   ro   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 rn   rn   )Ú.0Úcbr˜   rn   rn   ro   Ú
<listcomp><  ó    z"find_root_task.<locals>.<listcomp>ri   zuvloop.loop)rÙ   Úgetr´   r   Ú
_callbacksr
   rª   Úsetr0   ÚasyncioÚTaskr   Ú_task_statesÚcancel_scopeÚ_parent_scopeÚ
_host_task)Ú	root_taskr¬   Ú	callbacksrÛ   Ústaterä   rn   rn   ro   Úfind_root_task4  s.   


ý€
ÿrê   Úfuncr   Ústrc                 C  s0   t | dd ƒ}t | dd ƒ}d dd„ ||fD ƒ¡S )Nri   rj   Ú.c                 S  s   g | ]}|r|‘qS rn   rn   )rÚ   Úxrn   rn   ro   rÜ   V  rÝ   z%get_callable_name.<locals>.<listcomp>)rª   rÓ   )rë   ÚmoduleÚqualnamern   rn   ro   Úget_callable_nameS  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™   rn   rn   ro   Ú_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Ï   Ú
isinstancerì   Ú
startswithÚ__context__r   ©r÷   rn   rn   ro   Úis_anyio_cancellationr  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 )>rN   F©ÚdeadlineÚshieldrÿ   Úfloatr   ró   r~   c                C  ó
   t  | ¡S r   ©ÚobjectÚ__new__©Úclsrÿ   r   rn   rn   ro   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 )NFrY   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   rn   rn   ro   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_statern   rn   ro   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ü   rn   rn   ro   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ù   rc   Úsplitr  rû   r   rý   )r|   rƒ   r…   r‡   Úhost_task_stateÚcancelleds_caughtÚ	remainingr˜   rn   rn   ro   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ä   rn   rn   ro   Ú_effectively_cancelled  s   ù	z"CancelScope._effectively_cancelledc                 C  s   | j d uo| j o| j jS r   )rå   r   r$  r�   rn   rn   ro   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”   rn   rn   ro   r  4  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Úscopern   rn   ro   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|   r1  rn   rn   ro   r  j  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|   r3  r¬   rn   rn   ro   rµ   }  s   


òzCancelScope.cancelc                 C  ó   | j S r   )r  r�   rn   rn   ro   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|   r8  rn   rn   ro   rÿ   ’  s   


ÿc                 C  r6  r   )r  r�   rn   rn   ro   r,  œ  r7  zCancelScope.cancel_calledc                 C  r6  r   )r  r�   rn   rn   ro   Úcancelled_caught   r7  zCancelScope.cancelled_caughtc                 C  r6  r   )r	  r�   rn   rn   ro   r   ¤  r7  zCancelScope.shieldc                 C  s(   | j |kr|| _ |s|  ¡  d S d S d S r   )r	  r  r9  rn   rn   ro   r   ¨  s   
ý©rÿ   r  r   ró   r~   rN   )rÿ   r  r   ró   )r~   rN   ©rƒ   r„   r…   r†   r‡   rˆ   r~   ró   ©r~   ró   rº   )r)  rN   r~   ró   r   )r3  r4  r~   r‰   ©r~   r  ©r8  r  r~   r‰   )r8  ró   r~   r‰   )rh   ri   rj   r%  r&  r  r}   r‚   rŒ   Úpropertyr$  r  r  r  r  rµ   rÿ   Úsetterr,  r:  r   rn   rn   rn   ro   rN   …  s4    ÿ

b


.	rN   c                   @  s   e Zd ZdZdZd
dd„Zd	S )r  z 
    Encapsulates auxiliary task information that cannot be added to the Task instance
    itself because there are no guarantees about its implementation.
    )Ú	parent_idrä   Ú__weakref__rB  ú
int | Nonerä   úCancelScope | Nonec                 C  ó   || _ || _d S r   ©rB  rä   )r|   rB  rä   rn   rn   ro   r}   ½  ó   
zTaskState.__init__N)rB  rD  rä   rE  )rh   ri   rj   Ú__doc__Ú	__slots__r}   rn   rn   rn   ro   r  µ  s    r  z*WeakKeyDictionary[asyncio.Task, TaskState]rã   c                   @  s"   e Zd Zddd„Zdddd„ZdS )Ú_AsyncioTaskStatusrÃ   úasyncio.FuturerB  Úintc                 C  rF  r   )Ú_futureÚ
_parent_id)r|   rÃ   rB  rn   rn   ro   r}   Ë  rH  z_AsyncioTaskStatus.__init__Nr8  ú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)rN  rÈ   rá   ÚInvalidStateErrorrÀ   r    r0   râ   r   rO  rã   rB  )r|   r8  r¬   rn   rn   ro   ÚstartedÏ  s   
ÿþÿÿz_AsyncioTaskStatus.started)rÃ   rL  rB  rM  r   )r8  rP  r~   r‰   )rh   ri   rj   r}   rR  rn   rn   rn   ro   rK  Ê  s    
rK  ©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)rN   rä   r  Ú_exceptionsrà   r  Ú_on_completed_futr�   rn   rn   ro   r}   ã  s
   
zTaskGroup.__init__c                 Ã  s   �| j  ¡  d| _| S ©NT)rä   r‚   r  r�   rn   rn   ro   Ú
__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   rW  Úappendr   r  rN   rÑ   rX  r   rý   ÚAsyncIOBackendÚcancel_shielded_checkpointr  rc   ÚBaseExceptionrŒ   ÚtypeÚ__traceback__)r|   rƒ   r…   r‡   r•   Ú
wait_scoper÷   rn   rn   ro   Ú	__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  rX  rÈ   rQ  r¾   r   rù   rû   rÀ   r´   rW  r[  r$  rµ   rÊ   r    )rh  r  r÷   Úe©r|   r¬   rf  rn   ro   Ú	task_done5  sP   ÿÿÿ€ü
ÿÿÿz#TaskGroup._spawn.<locals>.task_donez;This task group is not active; no new tasks can be started.Útask_statusri   rí   Ú z	Expected z0() to return a coroutine, but the return value (z) is not a coroutine objectÚ__code__Ú__closure__r   )r•   re  ©re  rG  ri  )rh  r±   r~   r‰   )r  r    r5  r   rK  rä   ræ   r!   r‘   ri   Ú	TypeErrorrj   rñ   rì   rá   r   Úget_task_factoryrª   rU  Úcell_contentsr   r  rã   r  r  r  r  Úfuture_add_to_awaited_byÚadd_done_callback)r|   rë   rÏ   re  rf  rn  ÚkwargsrB  r™   Úprefixr•   ÚfactoryÚclosureÚcustom_task_constructorrn   rm  ro   Ú_spawn.  sN   /ÿ

ÿÿÿ
ÿÿ

ÿ
zTaskGroup._spawnrs  úUnpack[PosArgsT]c                G  s   |   |||¡ d S r   )r~  )r|   rë   re  rÏ   rn   rn   ro   Ú
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µ   rN   r   )r|   rë   re  rÏ   rÃ   r¬   rn   rn   ro   rÒ   š  s    €(ÿýýúzTaskGroup.startrº   )r~   rV  r<  r   )
rë   rc  rÏ   rd  re  r  rf  rg  r~   r±   )rë   rc  rÏ   r  re  r  r~   r‰   )rë   r�  rÏ   r  re  r  r~   r-   )	rh   ri   rj   r}   rZ  rb  r~  r€  rÒ   rn   rn   rn   ro   rV  â  s    


Dûhü	ÿrV  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 threadrs  r2   F)Úsuperr}   rç   r…  r‡  rx   r•   r$   Úqueuer\  Úcurrent_timeÚ
idle_sinceÚstopping)r|   rç   r…  r‡  ©Ú	__class__rn   ro   r}   ¹  s   þ

zWorkerThread.__init__rÃ   rL  Ú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_excrn   rn   ro   Ú_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”  rn  )
r|   Úitemr˜   rë   rÏ   rÃ   rä   r�  r¾   r÷   rn   rn   ro   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 rY  )r�  rŠ  Ú
put_nowaitr…  r  r‡  r  rž   )r|   r˜  rn   rn   ro   Ústopú  s   ÿzWorkerThread.stop)rç   r±   r…  r†  r‡  rˆ  )rÃ   rL  r�  r-   r÷   r†   r~   r‰   rº   r   )r˜  r™  r~   r‰   )	rh   ri   rj   ÚMAX_IDLE_TIMEr}   r”  r¡   r›  Ú__classcell__rn   rn   rŽ  ro   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_bytesrM  r~   Úbytesc                 Ã  s    �| j  |¡I d H }|r|S t‚r   )r¢  Úreadr>   )r|   r¤  Údatarn   rn   ro   Úreceive  s
   €zStreamReaderWrapper.receiver‰   c                 Ã  s"   �| j  tƒ ¡ t ¡ I d H  d S r   )r¢  rÊ   r=   r\  Ú
checkpointr�   rn   rn   ro   Úaclose  s   €zStreamReaderWrapper.acloseN©r£  ©r¤  rM  r~   r¥  rº   )rh   ri   rj   Ú__annotations__r¨  rª  rn   rn   rn   ro   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÷   rn   rn   ro   Úsend$  s"   €

€÷ÿzStreamWriterWrapper.sendc                 Ã  s$   �d| _ | j ¡  t ¡ I d H  d S rY  )r±  r¢  rŠ   r\  r©  r�   rn   rn   ro   rª  8  s   €
zStreamWriterWrapper.acloseN©r—  r¥  r~   r‰   rº   )rh   ri   rj   r­  r   r±  r»  rª  rn   rn   rn   ro   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)	rN   r¿  rª  rÀ  rÁ  r   rÅ   r^  Úkillr2  rn   rn   ro   rª  E  s&   €üÿ"özProcess.acloserM  c                 Ã  s   �| j  ¡ I d H S r   )r¾  rÅ   r�   rn   rn   ro   rÅ   W  s   €zProcess.waitc                 C  ó   | j  ¡  d S r   )r¾  Ú	terminater�   rn   rn   ro   rÄ  Z  ó   zProcess.terminatec                 C  rÃ  r   )r¾  rÂ  r�   rn   rn   ro   rÂ  ]  rÅ  zProcess.killr¥   c                 C  s   | j  |¡ d S r   )r¾  Úsend_signal)r|   r¥   rn   rn   ro   rÆ  `  ó   zProcess.send_signalc                 C  ó   | j jS r   )r¾  Úpidr�   rn   rn   ro   rÉ  c  ó   zProcess.pidrD  c                 C  rÈ  r   )r¾  Ú
returncoder�   rn   rn   ro   rË  g  rÊ  zProcess.returncodeúabc.ByteSendStream | Nonec                 C  r6  r   )r¿  r�   rn   rn   ro   Ústdink  r7  zProcess.stdinúabc.ByteReceiveStream | Nonec                 C  r6  r   )rÀ  r�   rn   rn   ro   Ústdouto  r7  zProcess.stdoutc                 C  r6  r   )rÁ  r�   rn   rn   ro   Ústderrs  r7  zProcess.stderrNrº   ©r~   rM  )r¥   rM  r~   r‰   ©r~   rD  )r~   rÌ  )r~   rÎ  )rh   ri   rj   r­  rª  rÅ   rÄ  rÂ  rÆ  r@  rÉ  rË  rÍ  rÏ  rÐ  rn   rn   rn   ro   r½  >  s(   
 




r½  r…  úset[Process]rh  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.NrS  )r  r  rá   Úget_event_loop_policyÚget_child_watcherÚNotImplementedErrorÚcopyrË  r¿  r¢  Ú
_transportrŠ   rÀ  rÁ  rÂ  Úremove_child_handlerrÉ  )r…  rh  Úchild_watcherÚprocessrn   rn   ro   Ú'_forcibly_shutdown_process_pool_on_exitx  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Û  rn   rn   ro   Ú_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á   rF   râ  rã  rà   r0   Ú	TransportÚset_write_buffer_limits©r|   ræ  rn   rn   ro   Úconnection_made²  s
   


zStreamProtocol.connection_mader÷   c                 C  s"   |r|| _ | j ¡  | j ¡  d S r   )r¾   râ  rà   rã  ©r|   r÷   rn   rn   ro   Úconnection_lost¹  s   
zStreamProtocol.connection_lostr§  r¥  c                 C  s   | j  t|ƒ¡ | j ¡  d S r   )rà  r[  r¥  râ  rà   )r|   r§  rn   rn   ro   Údata_receivedÀ  s   zStreamProtocol.data_receivedrs   c                 C  s   d| _ | j ¡  dS rY  )rå  râ  rà   r�   rn   rn   ro   Úeof_receivedÅ  s   
zStreamProtocol.eof_receivedc                 C  ó   t  ¡ | _d S r   )rá   rF   rã  r�   rn   rn   ro   Úpause_writingÊ  rÅ  zStreamProtocol.pause_writingc                 C  rÃ  r   ©rã  rà   r�   rn   rn   ro   Úresume_writingÍ  rÅ  zStreamProtocol.resume_writing©ræ  rç  r~   r‰   ©r÷   rä  r~   r‰   )r§  r¥  r~   r‰   )r~   rs   rº   )rh   ri   rj   r­  r¾   rå  rì  rî  rï  rð  rò  rô  rn   rn   rn   ro   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á   rF   râ  rã  rà   rë  rn   rn   ro   rì  ×  s   

z DatagramProtocol.connection_mader÷   c                 C  s   | j  ¡  | j ¡  d S r   )râ  rà   rã  rí  rn   rn   ro   rî  Ý  s   
z DatagramProtocol.connection_lostr§  r¥  ÚaddrrP   c                 C  s&   t |ƒ}| j ||f¡ | j ¡  d S r   )rA   rà  r[  râ  rà   )r|   r§  rú  rn   rn   ro   Údatagram_receivedá  s   z"DatagramProtocol.datagram_receivedrÉ   c                 C  s
   || _ d S r   )r¾   rí  rn   rn   ro   Úerror_receivedæ  ó   
zDatagramProtocol.error_receivedc                 C  rÃ  r   )rã  Úclearr�   rn   rn   ro   rò  é  rÅ  zDatagramProtocol.pause_writingc                 C  rÃ  r   ró  r�   rn   rn   ro   rô  ì  rÅ  zDatagramProtocol.resume_writingrõ  rö  )r§  r¥  rú  rP   r~   r‰   )r÷   rÉ   r~   r‰   rº   )rh   ri   rj   r­  r¾   rì  rî  rû  rü  rò  rô  rn   rn   rn   ro   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³  rI   Ú_receive_guardÚ_send_guardr±  ©r|   ræ  r  rn   rn   ro   r}   ñ  s
   


zSocketStream.__init__r~   úsocket.socketc                 C  ó   | j  d¡S ©NÚsocket©rØ  Úget_extra_infor�   rn   rn   ro   Ú_raw_socketø  ó   zSocketStream._raw_socketr£  r¤  rM  r¥  c              	   Ã  s  �| j �� | jj ¡ s(| j ¡ s(| jjs(| j ¡  | jj ¡ I d H  | j 	¡  nt
 ¡ I d H  z| jj ¡ }W n tyP   | jrDtd ‚| jjrMt| jj‚td ‚w t|ƒ|krk|d |… ||d … }}| jj |¡ | jjs}| jj ¡  W d   ƒ |S W d   ƒ |S 1 sˆw   Y  |S r   )r  r³  râ  Úis_setrØ  r¹  rå  Úresume_readingrÅ   Úpause_readingr\  r©  rà  ÚpopleftÚ
IndexErrorr±  r=   r¾   r;   r>   ÚlenÚ
appendleftrþ  )r|   r¤  ÚchunkÚleftoverrn   rn   ro   r¨  ü  sB   €
ÿþý

ú
â ý
ã à zSocketStream.receiver—  r‰   c                 Ã  sª   �| j �G t ¡ I d H  | jrt‚| jjd urt| jj‚z| j 	|¡ W n t
y9 } z	| j ¡ r4t|‚‚ d }~ww | jj ¡ I d H  W d   ƒ d S 1 sNw   Y  d S r   )r  r\  r©  r±  r=   r³  r¾   r;   rØ  rµ  r    r¹  rã  rÅ   )r|   r—  r÷   rn   rn   ro   r»    s"   €

€ü"ðzSocketStream.sendc                 Ã  s(   �z| j  ¡  W d S  ty   Y d S w r   )rØ  Ú	write_eofÚOSErrorr�   rn   rn   ro   Úsend_eof2  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�   rn   rn   ro   rª  8  s   €
ÿ
øzSocketStream.acloseN)ræ  r   r  rß  ©r~   r
  r«  r¬  r¼  rº   )
rh   ri   rj   r}   r@  r  r¨  r»  r  rª  rn   rn   rn   ro   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 )Ú_RawSocketMixinNrg  Ú_receive_futureÚ_send_futureFÚ
raw_socketr
  c                 C  s   || _ tdƒ| _tdƒ| _d S )Nr  r  )Ú_RawSocketMixin__raw_socketrI   r  r  ©r|   r$  rn   rn   ro   r}   J  s   
z_RawSocketMixin.__init__r~   c                 C  r6  r   )r%  r�   rn   rn   ro   r  O  r7  z_RawSocketMixin._raw_socketr•   úasyncio.AbstractEventLooprL  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|   rn   ro   ÚcallbackT  ó   z6_RawSocketMixin._wait_until_readable.<locals>.callback©r˜  r  r~   r‰   )rá   r   r"  Ú
add_readerr%  rÈ   rx  ©r|   r•   r-  r˜  rn   r,  ro   Ú_wait_until_readableS  ó
   
z$_RawSocketMixin._wait_until_readablec                   r(  )Nr˜  r  r~   r‰   c                   r)  r   )r#  Úremove_writerr%  r+  r,  rn   ro   r-  ^  r.  z6_RawSocketMixin._wait_until_writable.<locals>.callbackr/  )rá   r   r#  Ú
add_writerr%  rÈ   rx  r1  rn   r,  ro   Ú_wait_until_writable]  r3  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�   rn   rn   ro   rª  g  s   €
øz_RawSocketMixin.aclose©r$  r
  r   )r•   r'  r~   rL  rº   )rh   ri   rj   r"  r­  r#  r8  r}   r@  r  r2  r6  rª  rn   rn   rn   ro   r!  E  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�   rn   rn   ro   r  t  s   €"ÿzUNIXSocketStream.send_eofr£  r¤  rM  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ÚBlockingIOErrorr2  r  r8  r=   r;   r>   )r|   r¤  r•   r§  r÷   rn   rn   ro   r¨  x  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»  r>  r6  r  r8  r=   r;   )r|   r—  r•   ÚviewÚ
bytes_sentr÷   rn   rn   ro   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ù   rM  rž   r   Úarrayr\  r©  r  r  Úrecvmsgr  ÚCMSG_LENÚitemsizer>  r2  r  r8  r=   r;   r>   Ú
SOL_SOCKETÚ
SCM_RIGHTSr    Ú	frombytesr  Úlist)r|   rB  rC  r•   Úfdsr½   ÚancdataÚflagsrú  r÷   Ú
cmsg_levelÚ	cmsg_typeÚ	cmsg_datarn   rn   ro   Úreceive_fdsž  sN   €
ÿ€üðïÿÿÿ&zUNIXSocketStream.receive_fdsr½   rN  ú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 emptyrE  )rž   r   rù   rM  r[  r"   r9  rF  r\  r©  r  r  Úsendmsgr  rJ  rK  r>  r6  r  r8  r=   r;   )r|   r½   rN  r•   ÚfilenosÚfdÚfdarrayr÷   rn   rn   ro   Úsend_fdsÅ  sB   €

€ÿ€üö"øzUNIXSocketStream.send_fdsNrº   r«  r¬  r¼  )rB  rM  rC  rM  r~   rD  )r½   r¥  rN  rU  r~   r‰   )rh   ri   rj   r  r¨  r»  rT  rZ  rn   rn   rn   ro   r;  s  s    


'r;  c                   @  sJ   e Zd ZU dZded< dZddd„Zedd
d„ƒZddd„Z	ddd„Z
dS )ÚTCPSocketListenerNrE  Ú_accept_scopeFr$  r
  c                 C  s$   || _ ttjtƒ ƒ| _tdƒ| _d S )Núaccepting connections from)Ú_TCPSocketListener__raw_socketr0   rá   ÚBaseEventLoopr   rx   rI   Ú_accept_guardr&  rn   rn   ro   r}   ë  s   zTCPSocketListener.__init__r~   c                 C  r6  r   )r^  r�   rn   rn   ro   r  ð  r7  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=   r`  r\  r©  rN   r\  rx   Úsock_acceptr  rá   r   r*  rž   rÖ  Ú
setsockoptr  ÚIPPROTO_TCPÚTCP_NODELAYÚconnect_accepted_socketrß  rÿ  )r|   Úclient_sockÚ_addrræ  r  rn   rn   ro   Ú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±  r\  rx   r*  r  rž   rÖ  rµ   r	   rŠ   r�   rn   rn   ro   rª    s   €ÿ
zTCPSocketListener.acloser:  r   ©r~   ra  rº   )rh   ri   rj   r\  r­  r±  r}   r@  r  rj  rª  rn   rn   rn   ro   r[  ç  s   
 

r[  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 )Nr]  F)Ú_UNIXSocketListener__raw_socketr   rx   rI   r`  r±  r&  rn   rn   ro   r}   $  s   

zUNIXSocketListener.__init__r~   ra  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   )rx   r*  rm  ©Ú_r�   rn   ro   r³   6  s    z+UNIXSocketListener.accept.<locals>.<lambda>)r\  r©  r`  rm  rj  Úsetblockingr;  r>  rá   r   rx   r0  rÈ   rx  r  r±  r=   r;   )r|   rh  ro  r˜  r÷   rn   r�   ro   rj  *  s0   €
û
ÿ€üôÿzUNIXSocketListener.acceptr‰   c                 Ã  s   �d| _ | j ¡  d S rY  )r±  rm  rŠ   r�   rn   rn   ro   rª  ?  s   €zUNIXSocketListener.aclosec                 C  r6  r   )rm  r�   rn   rn   ro   r  C  r7  zUNIXSocketListener._raw_socketNr:  rk  rº   r   )rh   ri   rj   r}   rj  rª  r@  r  rn   rn   rn   ro   rl  #  s    


rl  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	  rn   rn   ro   r}   I  ó
   


zUDPSocket.__init__r~   r
  c                 C  r  r  r  r�   rn   rn   ro   r  R  r  zUDPSocket._raw_socketr‰   c                 Ã  ó$   �d| _ | j ¡ s| j ¡  d S d S rY  ©r±  rØ  r¹  rŠ   r�   rn   rn   ro   rª  V  ó
   €
ÿ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�   rn   rn   ro   r¨  [  s   €÷
üözUDPSocket.receiver—  rR   c                 Ã  sr   �| j �+ t ¡ I d H  | jj ¡ I d H  | jrt‚| j 	¡ r!t
‚| jj|Ž  W d   ƒ d S 1 s2w   Y  d S r   ©r  r\  r©  r³  rã  rÅ   r±  r=   rØ  r¹  r;   Úsendto©r|   r—  rn   rn   ro   r»  l  ó   €
"øzUDPSocket.sendN©ræ  rr  r  r÷  r   rº   )r~   rw  )r—  rR   r~   r‰   ©	rh   ri   rj   r}   r@  r  rª  r¨  r»  rn   rn   rn   ro   rq  H  s    
	

rq  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æ  rr  r  r÷  c                 C  r  r  r  r	  rn   rn   ro   r}   y  rs  zConnectedUDPSocket.__init__r~   r
  c                 C  r  r  r  r�   rn   rn   ro   r  ‚  r  zConnectedUDPSocket._raw_socketr‰   c                 Ã  rt  rY  ru  r�   rn   rn   ro   rª  †  rv  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è  rx  )r|   Úpacketrn   rn   ro   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   ry  r{  rn   rn   ro   r»  ž  r|  zConnectedUDPSocket.sendNr}  r   rº   ©r~   r¥  r¼  r~  rn   rn   rn   ro   r  x  s    
	

r  c                   @  ó    e Zd Zd
dd„Zddd„Zd	S )ÚUNIXDatagramSocketr~   rS   c                 Ã  ó¤   �t ƒ }t ¡ I d H  | j�: 	 z| j d¡}W n% ty)   |  |¡I d H  Y n ty= } z	| j	r6t
d ‚t|‚d }~ww |W  d   ƒ S q1 sKw   Y  d S ©NTr£  )r   r\  r©  r  r  Úrecvfromr>  r2  r  r8  r=   r;   ©r|   r•   r§  r÷   rn   rn   ro   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  rz  r>  r6  r  r8  r=   r;   ©r|   r—  r•   r÷   rn   rn   ro   r»  ¼  rˆ  zUNIXDatagramSocket.sendN)r~   rS   )r—  rS   r~   r‰   ©rh   ri   rj   r¨  r»  rn   rn   rn   ro   rƒ  ª  ó    
rƒ  c                   @  r‚  )ÚConnectedUNIXDatagramSocketr~   r¥  c                 Ã  r„  r…  )r   r\  r©  r  r  r=  r>  r2  r  r8  r=   r;   r‡  rn   rn   ro   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»  r>  r6  r  r8  r=   r;   r‰  rn   rn   ro   r»  à  rˆ  z ConnectedUNIXDatagramSocket.sendNr�  r¼  rŠ  rn   rn   rn   ro   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 )rF   r~   c                 C  r  r   r  ©r  rn   rn   ro   r  ü  rý  zEvent.__new__r‰   c                 C  rñ  r   )rá   rF   Ú_eventr�   rn   rn   ro   r}   ÿ  rÅ  zEvent.__init__c                 C  rÃ  r   )r’  rà   r�   rn   rn   ro   rà     rÅ  z	Event.setró   c                 C  ó
   | j  ¡ S r   )r’  r  r�   rn   rn   ro   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�   rn   rn   ro   rÅ     s   €z
Event.waitr4   c                 C  s   t t| jjƒƒS r   )r4   r  r’  Ú_waitersr�   rn   rn   ro   Ú
statistics  rÇ  zEvent.statisticsN)r~   rF   rº   r=  )r~   r4   )	rh   ri   rj   r  r}   rà   r  rÅ   r•  rn   rn   rn   ro   rF   û  s    




rF   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 )rH   F©Úfast_acquirer—  ró   r~   c                C  r  r   r  ©r  r—  rn   rn   ro   r    rý  zLock.__new__r‰   c                C  s   || _ d | _tƒ | _d S r   )Ú_fast_acquireÚ_owner_taskr   r”  )r|   r—  rn   rn   ro   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—  rn   rn   ro   Ú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¬   rn   rn   ro   Úacquire_nowait=  s   
zLock.acquire_nowaitc                 C  s
   | j d uS r   )rš  r�   rn   rn   ro   ÚlockedH  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�  rn   rn   ro   rœ  K  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_inforn   rn   ro   r•  W  s   zLock.statisticsN)r—  ró   r~   rH   )r—  ró   r~   r‰   rº   r=  )r~   r5   )
rh   ri   rj   r  r}   rž  rŸ  r   rœ  r•  rn   rn   rn   ro   rH     s    

"

rH   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 )#rL   NF©Ú	max_valuer—  Úinitial_valuerM  r¤  rD  r—  ró   r~   c                C  r  r   r  ©r  r¥  r¤  r—  rn   rn   ro   r  ]  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Ž  rn   ro   r}   f  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�  rn   rn   ro   rž  s  s4   €üþý
ýýzSemaphore.acquirec                 C  s    | j dkrt‚|  j d8  _ d S r©  )r§  r@   r�   rn   rn   ro   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ª  rn   rn   ro   rœ  •  s   

ýzSemaphore.releasec                 C  r6  r   )r§  r�   rn   rn   ro   r8  ¡  r7  zSemaphore.valuec                 C  r6  r   )r¨  r�   rn   rn   ro   r¤  ¥  r7  zSemaphore.max_valuerJ   c                 C  s   t t| jƒƒS r   )rJ   r  r”  r�   rn   rn   ro   r•  ©  rÅ  zSemaphore.statistics)r¥  rM  r¤  rD  r—  ró   r~   rL   )r¥  rM  r¤  rD  r—  ró   rº   rÑ  rÒ  )r~   rJ   )rh   ri   rj   r  r}   rž  rŸ  rœ  r@  r8  r¤  r•  r�  rn   rn   rŽ  ro   rL   \  s    ûû


rL   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 );rD   r   r  Ú_total_tokensÚtotal_tokensr~   c                 C  r  r   r  ©r  r¬  rn   rn   ro   r  °  rý  zCapacityLimiter.__new__c                 C  s   t ƒ | _tƒ | _|| _d S r   )rà   Ú
_borrowersr   Ú_wait_queuer¬  )r|   r¬  rn   rn   ro   r}   ³  s   
zCapacityLimiter.__init__r‰   c                 Ã  s   �|   ¡ I d H  d S r   )rž  r�   rn   rn   ro   rZ  ¸  ó   €zCapacityLimiter.__aenter__rƒ   r„   r…   r†   r‡   rˆ   c                 Ã  s   �|   ¡  d S r   )rœ  r‹   rn   rn   ro   rb  »  s   €zCapacityLimiter.__aexit__c                 C  r6  r   )r«  r�   rn   rn   ro   r¬  Ã  r7  zCapacityLimiter.total_tokensr8  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ù   rM  r%  Úisinfrt  rž   Úmaxr«  r¯  Úpopitemrà   )r|   r8  Úwaiters_to_notifyÚeventrn   rn   ro   r¬  Ç  s   
ýrM  c                 C  s
   t | jƒS r   )r  r®  r�   rn   rn   ro   Úborrowed_tokensØ  ó   
zCapacityLimiter.borrowed_tokensc                 C  s   | j t| jƒ S r   )r«  r  r®  r�   rn   rn   ro   Ú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·  rn   rn   ro   Ú_notify_next_waiterà  s   þz#CapacityLimiter._notify_next_waiterc                 C  ó   |   tƒ ¡ d S r   )Úacquire_on_behalf_of_nowaitr   r�   rn   rn   ro   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¿  rn   rn   ro   r¾  é  s   
ÿz+CapacityLimiter.acquire_on_behalf_of_nowaitc                 Ã  s   �|   tƒ ¡I d H S r   )Úacquire_on_behalf_ofr   r�   rn   rn   ro   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á   rF   r¯  rÅ   r^  Úpopr  r¼  r®  r  r]  rœ  )r|   r¿  r·  rn   rn   ro   rÁ  ÷  s.   €
ûôþz$CapacityLimiter.acquire_on_behalf_ofc                 C  r½  r   )Úrelease_on_behalf_ofr   r�   rn   rn   ro   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À  rn   rn   ro   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�   rn   rn   ro   r•    s   üzCapacityLimiter.statisticsN)r¬  r  r~   rD   )r¬  r  rº   r¹   r>  r?  rÑ  )r¿  r  r~   r‰   )r~   r3   )rh   ri   rj   r«  r­  r  r}   rZ  rb  r@  r¬  rA  r¸  rº  r¼  rŸ  r¾  rž  rÁ  rœ  rÃ  r•  rn   rn   rn   ro   rD   ­  s,   
 











rD   Ú_default_thread_limiterzRunVar[CapacityLimiter]c                   @  sH   e Zd Zddd„Zdd	d
„Zddd„Zddd„Zddd„Zddd„ZdS )Ú_SignalReceiverÚsignalsútuple[Signals, ...]c                 C  s,   || _ tƒ | _tƒ | _t ¡ | _tƒ | _	d S r   )
Ú_signalsr   rx   r   Ú_signal_queuerá   r   rN  rà   Ú_handled_signals)r|   rÇ  rn   rn   ro   r}   .  s
   
z_SignalReceiver.__init__r·   r%   r~   r‰   c                 C  s*   | j  |¡ | j ¡ s| j d ¡ d S d S r   )rÊ  r[  rN  r´   rÈ   )r|   r·   rn   rn   ro   Ú_deliver5  s   
ÿz_SignalReceiver._deliverc                 C  s2   t | jƒD ]}| j || j|¡ | j |¡ q| S r   )rà   rÉ  rx   Úadd_signal_handlerrÌ  rË  r  )r|   Úsigrn   rn   ro   r‚   :  s   z_SignalReceiver.__enter__rƒ   r„   r…   r†   r‡   rˆ   c                 C  s   | j D ]}| j |¡ qd S r   )rË  rx   Úremove_signal_handler)r|   rƒ   r…   r‡   rÎ  rn   rn   ro   rŒ   A  s   
ÿz_SignalReceiver.__exit__c                 C  s   | S r   rn   r�   rn   rn   ro   Ú	__aiter__J  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   rN  r  r�   rn   rn   ro   Ú	__anext__M  s   €

z_SignalReceiver.__anext__N)rÇ  rÈ  )r·   r%   r~   r‰   )r~   rÆ  r¹   )r~   r%   )	rh   ri   rj   r}   rÌ  r‚   rŒ   rÐ  rÑ  rn   rn   rn   ro   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Þ   rB  rô   r‰  r}   r5  Úget_nameÚweakrefÚrefrh  )r|   r¬   r  rB  r™   rŽ  rn   ro   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)rh  r*  rù   r+  rá   r   rÀ   rã   rÞ   rä   r$  )r|   r¬   r  rä   rn   rn   ro   Úhas_pending_cancellationh  s   ÿþ
z(AsyncIOTaskInfo.has_pending_cancellation)r¬   r±   r=  )rh   ri   rj   r}   rÕ  r�  rn   rn   rŽ  ro   r¡  [  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)rq   Ú
use_uvlooprr   rq   rs   rØ  ró   rr   rt   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   rp   )	r  ÚplatformÚuvloopr®   Úwinloopr\   Ú_runnerrW  Ú_runner_task)r|   rq   rØ  rr   rÛ  rÜ  rn   rn   ro   r}     s   

zTestRunner.__init__c                 C  s   | j  ¡  |  ¡  | j¡ | S r   )rÝ  r‚   r–   Úset_exception_handlerÚ_exception_handlerr�   rn   rn   ro   r‚   ”  s   
zTestRunner.__enter__rƒ   r„   r…   r†   r‡   rˆ   c                 C  s   | j  |||¡ d S r   )rÝ  rŒ   r‹   rn   rn   ro   rŒ   ™  s   zTestRunner.__exit__r   c                 C  r“  r   )rÝ  r–   r�   rn   rn   ro   r–   ¡  rý  zTestRunner.get_loopr•   r'  r˜   údict[str, Any]c                 C  s2   t | d¡tƒr| j |d ¡ d S | |¡ d S )Nr¾   )rù   rÞ   rÉ   rW  r[  Údefault_exception_handler)r|   r•   r˜   rn   rn   ro   rà  ¤  s   zTestRunner._exception_handlerc                 C  s>   | j r| j g }| _ t|ƒdkr|d ‚|rtd|ƒ‚d S d S )Nr²   r   z6Multiple exceptions occurred in asynchronous callbacks)rW  r  rc   )r|   ra   rn   rn   ro   Ú_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÷   rn   rn   ro   Ú_run_tests_and_fixtures·  s0   €€
ÿ€ü
€ðPÿz"TestRunner._run_tests_and_fixturesrë   ú Callable[P, Awaitable[T_Retval]]rÏ   úP.argsry  úP.kwargsr›   c                Ï  sr   �| j stttt tjf  dƒ\| _}|  ¡  	|  
|¡¡| _ ||i |¤Ž}|  ¡  ¡ }| j ||f¡ |I d H S rb  )rÞ  rB   rÄ  r   r-   rá   r   r×  r–   r   ré  rÑ   Úsend_nowait)r|   rë   rÏ   ry  rä  r™   rÃ   rn   rn   ro   Ú_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 stoprn   )r–   r�   rî  Úasendrã  ÚStopAsyncIterationrª  r    )r|   rï  ry  ÚasyncgenÚfixturevaluern   rn   ro   Ú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ï  ry  rè  rn   rn   ro   Ú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É   rW  r[  rã  )r|   rù  ry  r÷   rn   rn   ro   Úrun_test	  s   ÿ€ÿzTestRunner.run_test)rq   rs   rØ  ró   rr   rt   r~   r‰   )r~   rÖ  r¹   r»   )r•   r'  r˜   rá  r~   r‰   rº   )rä  rå  r~   r‰   )rë   rê  rÏ   rë  ry  rì  r~   r›   )rï  rð  ry  rá  r~   rñ  )rï  r÷  ry  rá  r~   r›   )rù  rú  ry  rá  r~   r‰   )rh   ri   rj   r­  r}   r‚   rŒ   r–   rà  rã  ré  rî  rö  rø  rû  rn   rn   rn   ro   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ÌdUdV„ƒZedÍdYdZ„ƒZe	3dÎdÏdadb„ƒZedÐdfdg„ƒZedÑdkdl„ƒZedÑdmdn„ƒZedÒdtdu„ƒZedÓdzd{„ƒZ ed|d|d|d|d}œdÔd†d‡„ƒZ!e	|dÕdÖd‹dŒ„ƒZ"ed×d�d�„ƒZ#ed×d‘d’„ƒZ$ed×d“d”„ƒZ%edÑd•d–„ƒZ&edØd˜d™„ƒZ'edÙd›dœ„ƒZ(edÚdždŸ„ƒZ)edÛd¡d¢„ƒZ*edÜd¤d¥„ƒZ+edÝd§d¨„ƒZ,edÞdªd«„ƒZ-edßd¯d°„ƒZ.edàd²d³„ƒZ/edádµd¶„ƒZ0edÀd·d¸„ƒZ1edâdºd»„ƒZ2d3S )ãr\  rë   ú1Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]]rÏ   rd  ry  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ë   rn   ro   Úwrapper	  s   €z#AsyncIOBackend.run.<locals>.wrapperrq   rr   rØ  FrÙ  r   rp   ©r~   r›   )	r   rÞ   r  rÚ  rÛ  r®   rÜ  r\   r¡   )r  rë   rÏ   ry  rý  r   rq   rr   rÛ  rÜ  Úrunnerrn   rÿ  ro   r¡   	  s   


$ÿzAsyncIOBackend.runr  c                 C  ó   t ƒ S r   )r   r‘  rn   rn   ro   Úcurrent_token8	  r7  zAsyncIOBackend.current_tokenr  c                 C  s
   t ƒ  ¡ S r   )r   r'  r‘  rn   rn   ro   r‹  <	  r¹  zAsyncIOBackend.current_timeútype[BaseException]c                 C  s   t S r   )r   r‘  rn   rn   ro   Úcancelled_exception_class@	  s   z(AsyncIOBackend.cancelled_exception_classr‰   c                 Ã  s   �t dƒI d H  d S rè  ©r	   r‘  rn   rn   ro   r©  D	  ó   €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ä   rn   rn   ro   r²  H	  s    €ÿúz&AsyncIOBackend.checkpoint_if_cancelledc                 Ã  s@   �t dd�� tdƒI d H  W d   ƒ d S 1 sw   Y  d S )NTr‚  r   )rN   r	   r‘  rn   rn   ro   r]  [	  s   €"ÿz)AsyncIOBackend.cancel_shielded_checkpointÚdelayc                 Ã  s   �t |ƒI d H  d S r   r  )r  r	  rn   rn   ro   r	   `	  r  zAsyncIOBackend.sleepFrþ   rÿ   r   ró   rN   c                C  s   t ||d�S )Nrþ   rM   r  rn   rn   ro   Úcreate_cancel_scoped	  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ÿ   rn   rn   ro   Úcurrent_effective_deadlinej	  s(   
ÿûþø
z)AsyncIOBackend.current_effective_deadlineúabc.TaskGroupc                 C  r  r   )rV  r‘  rn   rn   ro   Úcreate_task_group�	  r7  z AsyncIOBackend.create_task_groupú	abc.Eventc                 C  r  r   rE   r‘  rn   rn   ro   Úcreate_event…	  r7  zAsyncIOBackend.create_eventr—  úabc.Lockc                C  s
   t |d�S )Nr–  rG   r˜  rn   rn   ro   Úcreate_lock‰	  r¹  zAsyncIOBackend.create_lockNr£  r¥  rM  r¤  rD  úabc.Semaphorec                C  s   t |||d�S )Nr£  rK   r¦  rn   rn   ro   Úcreate_semaphore�	  s   zAsyncIOBackend.create_semaphorer¬  úabc.CapacityLimiterc                 C  ó   t |ƒS r   rC   r­  rn   rn   ro   Ú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_limiterrN   rá   r   r›   rê   rƒ  rÒ   r  rx  r›  r°   r   rÂ  r‹  rŒ  rœ  r  rç   Úremove_done_callbackr   r¡   r9   rå   rŠ  rš  )r  rë   rÏ   r  r  r‡  r…  r1  rÃ   rç   ÚworkerÚnowÚexpired_workerr˜   Úworker_scopern   rn   ro   Ú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   r5  r   rå   )r  r1  rn   rn   ro   Ú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 rY  )r0   rá   râ   r   r  rã   r  r  r  r   Ú
concurrentÚfuturesrì   )Ú__tracebackhide__r¬   r÷   ©rÏ   rë   r1  rn   ro   Ú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%  r*  r•   r˜   r˜  rn   r)  ro   Ú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ë   rn   ro   r   
  s   

ÿ€þz4AsyncIOBackend.run_sync_from_thread.<locals>.wrapperr   rº   )
r   r0   r:   r  r+  r–  r?   r   r¶   r�  )r  rë   rÏ   r%  r   r•   rn   r.  ro   Ú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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  r0  rÍ  rÏ  rÐ  ry  rÛ  Ústdin_streamÚstdout_streamÚstderr_streamrn   rn   ro   Ú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 taskrs  )r   rÞ  rê   rx  r   rÜ  )r  r…  rn   rn   ro   Ú#setup_process_pool_exit_at_shutdownF
  s   þÿz2AsyncIOBackend.setup_process_pool_exit_at_shutdownÚhostrì   ÚportÚlocal_addressúIPSockAddrType | Nonera  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  r<  r=  r>  ræ  r  rn   rn   ro   Úconnect_tcpP
  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   ©r4  rn  ©r•   r$  rn   ro   r³   i
  ó   
 z-AsyncIOBackend.connect_unix.<locals>.<lambda>)r©  r   r  ÚAF_UNIXrp  Úconnectr>  rá   r   r5  rÈ   rx  r^  rŠ   r;  )r  rC  r˜  rn   rH  ro   Úconnect_unix]
  s&   €

÷þøzAsyncIOBackend.connect_unixÚsockr
  rQ   c                 C  r  r   ©r[  ©r  rM  rn   rn   ro   Úcreate_tcp_listenerq
  rÊ  z"AsyncIOBackend.create_tcp_listenerc                 C  r  r   )rl  rO  rn   rn   ro   Úcreate_unix_listeneru
  rÊ  z#AsyncIOBackend.create_unix_listenerÚfamilyr&   Úremote_addressÚ
reuse_portúUDPSocket | ConnectedUDPSocketc                 Ã  sN   �t ƒ jt||||d�I d H \}}|jr| ¡  |j‚|s"t||ƒS t||ƒS )N)r@  Úremote_addrrR  rT  )r   Úcreate_datagram_endpointr÷  r¾   rŠ   rq  r  )r  rR  r>  rS  rT  ræ  r  rn   rn   ro   Úcreate_udp_sockety
  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                   rF  r   rG  rn  rH  rn   ro   r³   Ÿ
  rI  z<AsyncIOBackend.create_unix_datagram_socket.<locals>.<lambda>)r©  r   rK  r>  rá   r   r5  rÈ   rx  r^  rŠ   rŒ  rƒ  )r  r$  rY  r˜  rn   rH  ro   Úcreate_unix_datagram_socket‘
  s&   €
÷þøz*AsyncIOBackend.create_unix_datagram_socketr   ©rR  r_  ÚprotorP  úbytes | str | Noneústr | int | Noneúint | AddressFamilyr_  úint | SocketKindr^  rP  ú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 )Nr]  )r   Úgetaddrinfo)r  r<  r=  rR  r_  r^  rP  rn   rn   ro   rd  ©
  s   €ÿzAsyncIOBackend.getaddrinfoÚsockaddrrP   útuple[str, str]c                 Ã  s   �t ƒ  ||¡I d H S r   )r   Úgetnameinfo)r  re  rP  rn   rn   ro   rg  À
  s   €zAsyncIOBackend.getnameinfoÚobjrX   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 rY  ©r  rÈ   rá   rQ  rn   ©rX  r�  r�  r*  rn   ro   rÛ   Õ
  ó   
ÿÿz(AsyncIOBackend.wait_readable.<locals>.cbr   ©Úget_selectorrº   )rŽ  rÞ   r  rà   rù   rM  r9  r<   r   rÑ   r0  rÖ  Ú$anyio._core._asyncio_selector_threadrm  r*  r  r=   ©r  rh  r•   rÛ   rm  ÚselectorÚsuccessrn   rj  ro   Ú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 rY  ri  rn   ©rX  r�  r4  r�  rn   ro   rÛ   
  rk  z(AsyncIOBackend.wait_writable.<locals>.cbr   rl  rº   )r�  rÞ   r  rà   rù   rM  r9  r<   r   rÑ   r5  rÖ  rn  rm  r4  r  r=   ro  rn   rt  ro   Úwait_writableû
  rs  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   rl  )rù   rM  r9  r   r�  rÞ   r  rÂ  r  rÈ   rá   rQ  r4  rÖ  rn  rm  rŽ  r*  )r  rh  rX  r•   r�  r�  rm  r�  rn   rn   ro   Únotify_closing0  sX   ÿÿÿýÿÿÿýzAsyncIOBackend.notify_closingc                 Ã  ó
   �t |ƒS r   rN  rO  rn   rn   ro   Úwrap_listener_socketa  ó   €z#AsyncIOBackend.wrap_listener_socketrÿ  c                 Ã  ó&   �t ƒ jt|d�I d H \}}t||ƒS ©N)rM  )r   rA  rß  rÿ  ©r  rM  ræ  r  rn   rn   ro   Úwrap_stream_sockete  ó
   €ÿ
z!AsyncIOBackend.wrap_stream_socketr;  c                 Ã  rw  r   )r;  rO  rn   rn   ro   Úwrap_unix_stream_socketl  ry  z&AsyncIOBackend.wrap_unix_stream_socketrq  c                 Ã  rz  r{  )r   rW  r÷  rq  r|  rn   rn   ro   Úwrap_udp_socketp  r~  zAsyncIOBackend.wrap_udp_socketr  c                 Ã  rz  r{  )r   rW  r÷  r  r|  rn   rn   ro   Úwrap_connected_udp_socketw  r~  z(AsyncIOBackend.wrap_connected_udp_socketrƒ  c                 Ã  rw  r   )rƒ  rO  rn   rn   ro   Úwrap_unix_datagram_socket~  ry  z(AsyncIOBackend.wrap_unix_datagram_socketrŒ  c                 Ã  rw  r   )rŒ  rO  rn   rn   ro   Ú#wrap_connected_unix_datagram_socket‚  s   €z2AsyncIOBackend.wrap_connected_unix_datagram_socketrD   c                 C  s4   zt  ¡ W S  ty   tdƒ}t  |¡ | Y S w )Né(   )rÅ  rÞ   r  rD   rà   )r  r  rn   rn   ro   r  ˆ  s   

ýz-AsyncIOBackend.current_default_thread_limiterrÇ  r%   ú.AbstractContextManager[AsyncIterator[Signals]]c                 G  r  r   )rÆ  )r  rÇ  rn   rn   ro   Úopen_signal_receiver‘  s   z#AsyncIOBackend.open_signal_receiverr6   c                 C  s
   t tƒ ƒS r   )r¡  r   r‘  rn   rn   ro   Ú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 rn   )r´   r¡  )rÚ   r¬   rn   rn   ro   rÜ   �  s    z4AsyncIOBackend.get_running_tasks.<locals>.<listcomp>)r   r‘  rn   rn   ro   Ú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¬   r0  rn   rn   ro   Úwait_all_tasks_blockedŸ  s   €
þöz%AsyncIOBackend.wait_all_tasks_blockedrÖ  c                 C  s   t di |¤ŽS )Nrn   )rÖ  )r  rý  rn   rn   ro   Úcreate_test_runner¯  s   z!AsyncIOBackend.create_test_runner)
rë   rü  rÏ   rd  ry  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¥  rM  r¤  rD  r—  ró   r~   r  )r¬  r  r~   r  )FN)
rë   r  rÏ   rd  r  ró   r  r  r~   r›   )rë   rü  rÏ   rd  r%  r  r~   r›   )rë   r  rÏ   rd  r%  r  r~   r›   )r0  r1  rÍ  r2  rÏ  r2  rÐ  r2  ry  r-   r~   r½  ©r…  rÝ  r~   r‰   r   )r<  rì   r=  rM  r>  r?  r~   ra  )rC  rD  r~   rE  )rM  r
  r~   rQ   )
rR  r&   r>  r?  rS  r?  rT  ró   r~   rU  )r$  r
  rY  rZ  r~   r[  )r<  r_  r=  r`  rR  ra  r_  rb  r^  rM  rP  rM  r~   rc  )r   )re  rP   rP  rM  r~   rf  )rh  rX   r~   r‰   )rM  r
  r~   rÿ  )rM  r
  r~   r;  )rM  r
  r~   rq  )rM  r
  r~   r  )rM  r
  r~   rƒ  )rM  r
  r~   rŒ  )r~   rD   )rÇ  r%   r~   r…  )r~   r6   )r~   rˆ  )rý  rá  r~   rÖ  )3rh   ri   rj   Úclassmethodr¡   r  r‹  r  r©  r²  r]  r	   r%  r&  r
  r  r  r  r  r  r  r#  r$  r-  r/  r:  r;  rB  rL  rP  rQ  rX  r\  rd  rg  rr  ru  rv  rx  r}  r  r€  r�  r‚  rƒ  r  r†  r‡  r‰  r‹  rŒ  rn   rn   rn   ro   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Ó  rh  r  r~   r‰   r�  )¾Ú
__future__r   rF  rá   Úconcurrent.futuresr&  r°   r%  r3  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   rp  r3   r4   r5   r6   r7   Ú_core._eventloopr8   r9   r:   Ú_core._exceptionsr;   r<   r=   r>   r?   r@   Ú_core._socketsrA   Ú_core._streamsrB   Ú_core._synchronizationrD   ÚBaseCapacityLimiterrF   Ú	BaseEventrH   ÚBaseLockrI   rJ   rL   ÚBaseSemaphoreÚ_core._tasksrN   ÚBaseCancelScoperO   rP   rQ   rR   rS   Úabc._eventlooprT   ÚlowlevelrU   Ústreams.memoryrV   rW   Ú	_typeshedrX   r  r  r\   r]   r^   Úenumr_   r`   ra   rb   Úexceptiongrouprc   Útyping_extensionsÚEnumrd   rŽ   r’   r›   rÕ   r×   rØ   rÙ   r­  rê   rñ   rò   rö   rý   r  rã   Ú
TaskStatusrK  Úeager_task_factoryrq  rU  rV  rÄ  r^  Ú_Retval_Queue_Typerƒ  rž  rŸ  ÚByteReceiveStreamr¡  ÚByteSendStreamr®  r½  rÜ  rÞ  ÚProtocolrß  r÷  rÿ  r!  r;  r[  rl  rq  r  rƒ  rŒ  rŽ  r�  rÅ  rÆ  r¡  rÖ  r\  Úbackend_classrn   rn   rn   ro   Ú<module>   sü    $	(
   





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