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ÚcreatedZinitializedÚclosedN)Ú__name__Ú
__module__Ú__qualname__ÚCREATEDÚINITIALIZEDÚCLOSED© rm   rm   úbC:\Users\psant\Downloads\Anu Raj Backend\school\venv\Lib\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_factoryrp   úbool | Nonerq   ú&Callable[[], AbstractEventLoop] | Nonec                C  s0   t j| _|| _|| _d | _d | _d| _d| _d S )Nr   F)	rd   rj   Ú_stateÚ_debugÚ_loop_factoryÚ_loopÚ_contextÚ_interrupt_countÚ_set_event_loop)Úselfrp   rq   rm   rm   rn   Ú__init__‚   s   
zRunner.__init__Úreturnc                 C  s   |   ¡  | S ©N)Ú
_lazy_init©r{   rm   rm   rn   Ú	__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†   rm   rm   rn   Ú__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)rw   rt   rd   rk   Ú_cancel_all_tasksÚrun_until_completeÚshutdown_asyncgensÚhasattrrŒ   Ú_shutdown_default_executorrz   r`   Úset_event_loopr‰   rl   ©r{   Úlooprm   rm   rn   r‰   œ   s(   
€
ü

zRunner.closer   c                 C  s   |   ¡  | jS )zReturn embedded event loop.N)r   rw   r€   rm   rm   rn   Ú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   rx   Úrunrw   r   Ú	threadingÚcurrent_threadÚmain_threadÚsignalÚ	getsignalÚSIGINTÚdefault_int_handlerr   Ú
_on_sigintry   rŽ   ra   r   ÚgetattrÚKeyboardInterrupt)r{   r˜   r—   ÚtaskZsigint_handlerrœ   rm   rm   rn   r    ´   sV   
ÿÿþü	ÿþüù
ûÿþüz
Runner.runc                 C  sŠ   | j tju r
tdƒ‚| j tju rd S | jd u r)t ¡ | _| j	s(t 
| j¡ d| _	n|  ¡ | _| jd ur:| j | j¡ t ¡ | _tj| _ d S )NzRunner is closedT)rt   rd   rl   rŸ   rk   rv   r`   Únew_event_looprw   rz   r’   ru   Ú	set_debugÚcontextvarsr   rx   r€   rm   rm   rn   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~   rm   rm   rm   rm   rn   Ú<lambda>ü   s    z#Runner._on_sigint.<locals>.<lambda>)ry   ÚdoneÚcancelrw   Úcall_soon_threadsaferª   )r{   ÚsignumÚframer›   rm   rm   rn   r¨   ÷   s   zRunner._on_sigint)rp   rr   rq   rs   )r}   r\   ©r‚   rƒ   r„   r…   r†   r‡   r}   rˆ   ©r}   rˆ   ©r}   r   )r˜   r™   r}   rš   )r›   r¯   r}   rˆ   )rg   rh   ri   r|   r�   r‹   r‰   r•   r    r   r¨   rm   rm   rm   rn   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«   rm   rm   rn   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”   rm   rn   Ú_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Á   Úthreadrm   rÊ   rn   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 rm   rm   )Ú.0Úcbr—   rm   rm   rn   Ú
<listcomp><  ó    z"find_root_task.<locals>.<listcomp>rh   zuvloop.loop)r×   Úgetr²   r   Ú
_callbacksr
   r©   Úsetr0   ÚasyncioÚTaskr   Ú_task_statesÚcancel_scopeÚ_parent_scopeÚ
_host_task)Ú	root_taskr«   Ú	callbacksrÙ   Ústaterâ   rm   rm   rn   Úfind_root_task4  s2   

ÿþ
û€
ÿrè   Úfuncr   Ústrc                 C  s0   t | dd ƒ}t | dd ƒ}d dd„ ||fD ƒ¡S )Nrh   ri   Ú.c                 S  s   g | ]}|r|‘qS rm   rm   )rØ   Úxrm   rm   rn   rÚ   V  rÛ   z%get_callable_name.<locals>.<listcomp>)r©   rÑ   )ré   ÚmoduleÚqualnamerm   rm   rn   Ú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˜   rm   rm   rn   Ú_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õ   rm   rm   rn   Ú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þ   rm   rm   rn   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þ   rm   rm   rn   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{   Z	host_taskÚ
task_staterm   rm   rn   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ú   rm   rm   rn   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†   Zhost_task_stateZcancelleds_caughtÚ	remainingr—   rm   rm   rn   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â   rm   rm   rn   Ú_effectively_cancelled  s   ù	z"CancelScope._effectively_cancelledc                 C  s   | j d uo| j o| j jS r~   )rã   rþ   r  r€   rm   rm   rn   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“   rm   rm   rn   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$  Zshould_retryÚcurrentr«   ÚwaiterÚscoperm   rm   rn   r  <  s8   
ÿþ€
€ÿþz!CancelScope._deliver_cancellationc                 C  sL   | j }|dur$|jr|jdu r| |¡ dS |jrdS |j }|dusdS dS )zb
        Restart the cancellation effort in the closest directly cancelled parent scope.

        N)rã   r	  r  r  r  ©r{   r+  rm   rm   rn   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{   r-  r«   rm   rm   rn   r³   }  s   


òzCancelScope.cancelc                 C  ó   | j S r~   )r  r€   rm   rm   rn   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{   r2  rm   rm   rn   rý   ’  s   


ÿc                 C  r0  r~   )r	  r€   rm   rm   rn   r'  œ  r1  zCancelScope.cancel_calledc                 C  r0  r~   )r  r€   rm   rm   rn   Úcancelled_caught   r1  zCancelScope.cancelled_caughtc                 C  r0  r~   )r  r€   rm   rm   rn   rþ   ¤  r1  zCancelScope.shieldc                 C  s(   | j |kr|| _ |s|  ¡  d S d S d S r~   )r  r  r3  rm   rm   rn   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~   )r-  r.  r}   rˆ   ©r}   rÿ   ©r2  rÿ   r}   rˆ   )r2  rñ   r}   rˆ   )rg   rh   ri   r   r!  r  r|   r�   r‹   Úpropertyr  r  r  r  r  r³   rý   Úsetterr'  r4  rþ   rm   rm   rm   rn   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__r<  ú
int | Nonerâ   úCancelScope | Nonec                 C  ó   || _ || _d S r~   ©r<  râ   )r{   r<  râ   rm   rm   rn   r|   ½  ó   
zTaskState.__init__N)r<  r>  râ   r?  )rg   rh   ri   Ú__doc__Ú	__slots__r|   rm   rm   rm   rn   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.Futurer<  Úintc                 C  r@  r~   )Ú_futureÚ
_parent_id)r{   rÁ   r<  rm   rm   rn   r|   Ë  rB  z_AsyncioTaskStatus.__init__Nr2  ú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)rH  rÆ   rß   ÚInvalidStateErrorr¾   rŸ   r0   rà   r   rI  rá   r<  )r{   r2  r«   rm   rm   rn   ÚstartedÏ  s   
ÿþÿÿz_AsyncioTaskStatus.started)rÁ   rF  r<  rG  r~   )r2  rJ  r}   rˆ   )rg   rh   ri   r|   rL  rm   rm   rm   rn   rE  Ê  s    
rE  ©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€   rm   rm   rn   r|   ã  s
   
zTaskGroup.__init__c                 Ã  s   �| j  ¡  d| _| S ©NT)râ   r�   r  r€   rm   rm   rn   Ú
__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   rQ  Úappendr   r  rN   rÏ   rR  rþ   rû   ÚAsyncIOBackendÚcancel_shielded_checkpointr  rc   ÚBaseExceptionr‹   ÚtypeÚ__traceback__)r{   r‚   r„   r†   r”   Z
wait_scoperõ   rm   rm   rn   Ú	__aexit__ï  sb   €



ÿþ€óì€ÿÿþÿü€ü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ß   Zfuture_discard_from_awaited_byrá   r  r  rR  rÆ   rK  r¼   r   r÷   rù   r¾   r²   rQ  rU  r  r³   rÈ   rŸ   )ra  r  rõ   Úe©r{   r«   r_  rm   rn   Ú	task_done5  sP   ÿÿÿ€ü
ÿÿÿz#TaskGroup._spawn.<locals>.task_donez;This task group is not active; no new tasks can be started.Ztask_statusrh   rë   Ú z	Expected z0() to return a coroutine, but the return value (z) is not a coroutine objectÚ__code__Ú__closure__r   )r”   r^  ©r^  rA  rb  )ra  r¯   r}   rˆ   )r  rŸ   r/  r   rE  râ   rä   r!   r�   rh   Ú	TypeErrorri   rï   rê   rß   r   Úget_task_factoryr©   rO  Úcell_contentsr   r  rá   r  r  r  r  Zfuture_add_to_awaited_byÚadd_done_callback)r{   ré   rÍ   r^  r_  rf  Úkwargsr<  r˜   Úprefixr”   ÚfactoryÚclosureZcustom_task_constructorrm   re  rn   Ú_spawn.  sP   /ÿ

ÿÿÿ
ÿþý

ÿ
zTaskGroup._spawnrj  úUnpack[PosArgsT]c                G  s   |   |||¡ d S r~   )rs  )r{   ré   r^  rÍ   rm   rm   rn   Ú
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   rs  r   r³   rN   r   )r{   ré   r^  rÍ   rÁ   r«   rm   rm   rn   rÐ   š  s    €(ÿýýúzTaskGroup.startr¸   )r}   rP  r6  r~   )
ré   r\  rÍ   r]  r^  r  r_  r`  r}   r¯   )ré   r\  rÍ   rt  r^  r  r}   rˆ   )ré   rv  rÍ   r  r^  r  r}   r-   )	rg   rh   ri   r|   rT  r[  rs  ru  rÐ   rm   rm   rm   rn   rP  â  s    


Dûhü	ÿrP  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 threadrj  r2   F)Úsuperr|   rå   rz  r|  rw   r”   r$   ÚqueuerV  Úcurrent_timeÚ
idle_sinceÚstopping)r{   rå   rz  r|  ©Ú	__class__rm   rn   r|   ¹  s   þ

zWorkerThread.__init__rÁ   rF  Ú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)rV  r€  r�  r‚  r|  rU  r¾   r÷   ÚStopIterationrŸ   Ú	__cause__rÈ   rÆ   )r{   rÁ   r…  rõ   Únew_excrm   rm   rn   Ú_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 rS  )r8   rV  r”   r  rÜ   r¾   r:   Úcurrent_cancel_scoper    rX  Ú	is_closedr´   r‰  rf  )
r{   Úitemr—   ré   rÍ   rÁ   râ   r…  r¼   rõ   rm   rm   rn   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 rS  )r‚  r  Ú
put_nowaitrz  r  r|  r  r�   )r{   r�  rm   rm   rn   Ústopú  s   ÿzWorkerThread.stop)rå   r¯   rz  r{  r|  r}  )rÁ   rF  r…  r-   rõ   r…   r}   rˆ   r¸   r~   )r�  rŽ  r}   rˆ   )	rg   rh   ri   ÚMAX_IDLE_TIMEr|   r‰  r    r�  Ú__classcell__rm   rm   rƒ  rn   rx  ¶  s    

rx  Ú_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_bytesrG  r}   Úbytesc                 Ã  s    �| j  |¡I d H }|r|S t‚r~   )r—  Úreadr>   )r{   r™  Údatarm   rm   rn   Úreceive  s
   €zStreamReaderWrapper.receiverˆ   c                 Ã  s"   �| j  tƒ ¡ t ¡ I d H  d S r~   )r—  rÈ   r=   rV  Ú
checkpointr€   rm   rm   rn   Úaclose  s   €zStreamReaderWrapper.acloseN©r˜  ©r™  rG  r}   rš  r¸   )rg   rh   ri   Ú__annotations__r�  rŸ  rm   rm   rm   rn   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~   )rV  Úcheckpoint_if_cancelledr—  Ú	_protocolÚ_pausedÚwriteÚdrainÚConnectionResetErrorÚBrokenPipeErrorrŸ   r¦  r=   Ú
is_closingr;   rW  )r{   rŒ  Zstream_pausedrõ   rm   rm   rn   Úsend$  s"   €

€÷ÿzStreamWriterWrapper.sendc                 Ã  s$   �d| _ | j ¡  t ¡ I d H  d S rS  )r¦  r—  r‰   rV  rž  r€   rm   rm   rn   rŸ  8  s   €
zStreamWriterWrapper.acloseN©rŒ  rš  r}   rˆ   r¸   )rg   rh   ri   r¢  r   r¦  r¯  rŸ  rm   rm   rm   rn   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 )NTrw  F)	rN   r³  rŸ  r´  rµ  rþ   rÃ   rX  Úkillr,  rm   rm   rn   rŸ  E  s&   €üÿ"özProcess.acloserG  c                 Ã  s   �| j  ¡ I d H S r~   )r²  rÃ   r€   rm   rm   rn   rÃ   W  s   €zProcess.waitc                 C  ó   | j  ¡  d S r~   )r²  Ú	terminater€   rm   rm   rn   r¸  Z  ó   zProcess.terminatec                 C  r·  r~   )r²  r¶  r€   rm   rm   rn   r¶  ]  r¹  zProcess.killr¤   c                 C  s   | j  |¡ d S r~   )r²  Úsend_signal)r{   r¤   rm   rm   rn   rº  `  ó   zProcess.send_signalc                 C  ó   | j jS r~   )r²  Úpidr€   rm   rm   rn   r½  c  ó   zProcess.pidr>  c                 C  r¼  r~   )r²  Ú
returncoder€   rm   rm   rn   r¿  g  r¾  zProcess.returncodeúabc.ByteSendStream | Nonec                 C  r0  r~   )r³  r€   rm   rm   rn   Ústdink  r1  zProcess.stdinúabc.ByteReceiveStream | Nonec                 C  r0  r~   )r´  r€   rm   rm   rn   Ústdouto  r1  zProcess.stdoutc                 C  r0  r~   )rµ  r€   rm   rm   rn   Ústderrs  r1  zProcess.stderrNr¸   ©r}   rG  )r¤   rG  r}   rˆ   ©r}   r>  )r}   rÀ  )r}   rÂ  )rg   rh   ri   r¢  rŸ  rÃ   r¸  r¶  rº  r:  r½  r¿  rÁ  rÃ  rÄ  rm   rm   rm   rn   r±  >  s(   
 




r±  rz  úset[Process]ra  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.NrM  )r  r  rß   Úget_event_loop_policyÚget_child_watcherÚNotImplementedErrorÚcopyr¿  r³  r—  Ú
_transportr‰   r´  rµ  r¶  Zremove_child_handlerr½  )rz  ra  Zchild_watcherÚprocessrm   rm   rn   Ú'_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Ÿ  )rz  rÍ  rm   rm   rn   Ú_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Ø  rm   rm   rn   Úconnection_made²  s
   


zStreamProtocol.connection_maderõ   c                 C  s"   |r|| _ | j ¡  | j ¡  d S r~   )r¼   rÔ  rÞ   rÕ  ©r{   rõ   rm   rm   rn   Úconnection_lost¹  s   
zStreamProtocol.connection_lostrœ  rš  c                 C  s   | j  t|ƒ¡ | j ¡  d S r~   )rÒ  rU  rš  rÔ  rÞ   )r{   rœ  rm   rm   rn   Údata_receivedÀ  s   zStreamProtocol.data_receivedrr   c                 C  s   d| _ | j ¡  dS rS  )r×  rÔ  rÞ   r€   rm   rm   rn   Úeof_receivedÅ  s   
zStreamProtocol.eof_receivedc                 C  ó   t  ¡ | _d S r~   )rß   rF   rÕ  r€   rm   rm   rn   Úpause_writingÊ  r¹  zStreamProtocol.pause_writingc                 C  r·  r~   ©rÕ  rÞ   r€   rm   rm   rn   Úresume_writingÍ  r¹  zStreamProtocol.resume_writing©rØ  rÙ  r}   rˆ   ©rõ   rÖ  r}   rˆ   )rœ  rš  r}   rˆ   )r}   rr   r¸   )rg   rh   ri   r¢  r¼   r×  rÞ  rà  rá  râ  rä  ræ  rm   rm   rm   rn   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Ý  rm   rm   rn   rÞ  ×  s   

z DatagramProtocol.connection_maderõ   c                 C  s   | j  ¡  | j ¡  d S r~   )rÔ  rÞ   rÕ  rß  rm   rm   rn   rà  Ý  s   
z DatagramProtocol.connection_lostrœ  rš  ÚaddrrP   c                 C  s&   t |ƒ}| j ||f¡ | j ¡  d S r~   )rA   rÒ  rU  rÔ  rÞ   )r{   rœ  rì  rm   rm   rn   Údatagram_receivedá  s   z"DatagramProtocol.datagram_receivedrÇ   c                 C  s
   || _ d S r~   )r¼   rß  rm   rm   rn   Úerror_receivedæ  ó   
zDatagramProtocol.error_receivedc                 C  r·  r~   )rÕ  Úclearr€   rm   rm   rn   rä  é  r¹  zDatagramProtocol.pause_writingc                 C  r·  r~   rå  r€   rm   rm   rn   ræ  ì  r¹  zDatagramProtocol.resume_writingrç  rè  )rœ  rš  rì  rP   r}   rˆ   )rõ   rÇ   r}   rˆ   r¸   )rg   rh   ri   r¢  r¼   rÞ  rà  rí  rî  rä  ræ  rm   rm   rm   rn   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ó  rm   rm   rn   r|   ñ  s
   


zSocketStream.__init__r}   úsocket.socketc                 C  ó   | j  d¡S ©NÚsocket©rÌ  Úget_extra_infor€   rm   rm   rn   Ú_raw_socketø  ó   zSocketStream._raw_socketr˜  r™  rG  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_readingrV  rž  rÒ  ÚpopleftÚ
IndexErrorr¦  r=   r¼   r;   r>   ÚlenÚ
appendleftrð  )r{   r™  ÚchunkÚleftoverrm   rm   rn   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ú  rV  rž  r¦  r=   r¨  r¼   r;   rÌ  rª  rŸ   r®  rÕ  rÃ   )r{   rŒ  rõ   rm   rm   rn   r¯    s"   €

€ü"ðzSocketStream.sendc                 Ã  s(   �z| j  ¡  W d S  ty   Y d S w r~   )rÌ  Ú	write_eofÚOSErrorr€   rm   rm   rn   Ú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€   rm   rm   rn   rŸ  8  s   €
ÿ
øzSocketStream.acloseN)rØ  rò  ró  rÑ  ©r}   rü  r   r¡  r°  r¸   )
rg   rh   ri   r|   r:  r  r�  r¯  r  rŸ  rm   rm   rm   rn   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 )Ú_RawSocketMixinNr`  Ú_receive_futureÚ_send_futureFÚ
raw_socketrü  c                 C  s   || _ tdƒ| _tdƒ| _d S )Nrö  r÷  )Ú_RawSocketMixin__raw_socketrI   rù  rú  ©r{   r  rm   rm   rn   r|   J  s   
z_RawSocketMixin.__init__r}   c                 C  r0  r~   )r  r€   rm   rm   rn   r  O  r1  z_RawSocketMixin._raw_socketr”   úasyncio.AbstractEventLooprF  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{   rm   rn   ÚcallbackT  ó   z6_RawSocketMixin._wait_until_readable.<locals>.callback©r�  r  r}   rˆ   )rß   r   r  Ú
add_readerr  rÆ   rn  ©r{   r”   r  r�  rm   r  rn   Ú_wait_until_readableS  ó
   
z$_RawSocketMixin._wait_until_readablec                   r  )Nr�  r  r}   rˆ   c                   r  r~   )r  Úremove_writerr  r  r  rm   rn   r  ^  r   z6_RawSocketMixin._wait_until_writable.<locals>.callbackr!  )rß   r   r  Ú
add_writerr  rÆ   rn  r#  rm   r  rn   Ú_wait_until_writable]  r%  z$_RawSocketMixin._wait_until_writablerˆ   c                 Ã  sV   �| j s'd| _ | j ¡ dkr| j ¡  | jr| j d ¡ | jr)| j d ¡ d S d S d S )NTéÿÿÿÿ)Ú_closingr  Úfilenor‰   r  rÆ   r  r€   rm   rm   rn   rŸ  g  s   €
øz_RawSocketMixin.aclose©r  rü  r  )r”   r  r}   rF  r¸   )rg   rh   ri   r  r¢  r  r*  r|   r:  r  r$  r(  rŸ  rm   rm   rm   rn   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€   rm   rm   rn   r  t  s   €"ÿzUNIXSocketStream.send_eofr˜  r™  rG  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 rS  )r   rV  rž  rù  r  ÚrecvÚBlockingIOErrorr$  r  r*  r=   r;   r>   )r{   r™  r”   rœ  rõ   rm   rm   rn   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   rV  rž  rú  Ú
memoryviewr  r¯  r0  r(  r  r*  r=   r;   )r{   rŒ  r”   ÚviewZ
bytes_sentrõ   rm   rm   rn   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‚qpq/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÷   rG  r�   r   ÚarrayrV  rž  rù  r  Úrecvmsgrÿ  ZCMSG_LENÚitemsizer0  r$  r  r*  r=   r;   r>   Ú
SOL_SOCKETÚ
SCM_RIGHTSrŸ   Z	frombytesr	  Úlist)r{   r3  r4  r”   Úfdsr»   ZancdataÚflagsrì  rõ   Z
cmsg_levelZ	cmsg_typeZ	cmsg_datarm   rm   rn   Úreceive_fdsž  sN   €
ÿ€üðïÿÿÿ&zUNIXSocketStream.receive_fdsr»   r=  úCollection[int | IOBase]c                 Ã  s  �|st dƒ‚|st dƒ‚tƒ }g }|D ]}t|tƒr!| |¡ qt|tƒr-| | ¡ ¡ qt d|¡}t 	¡ I d H  | j
�A 	 z| j |gtjtj|fg¡ W qw 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 emptyr6  T)r�   r   r÷   rG  rU  r"   r+  r7  rV  rž  rú  r  Úsendmsgrÿ  r:  r;  r0  r(  r  r*  r=   r;   )r{   r»   r=  r”   ZfilenosÚfdZfdarrayrõ   rm   rm   rn   Úsend_fdsÅ  sB   €

€ÿ€üö"øzUNIXSocketStream.send_fdsNr¸   r   r¡  r°  )r3  rG  r4  rG  r}   r5  )r»   rš  r=  r@  r}   rˆ   )rg   rh   ri   r  r�  r¯  r?  rC  rm   rm   rm   rn   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 )ÚTCPSocketListenerNr?  Ú_accept_scopeFr  rü  c                 C  s$   || _ ttjtƒ ƒ| _tdƒ| _d S )Núaccepting connections from)Ú_TCPSocketListener__raw_socketr0   rß   ÚBaseEventLoopr   rw   rI   Ú_accept_guardr  rm   rm   rn   r|   ë  s   zTCPSocketListener.__init__r}   c                 C  r0  r~   )rG  r€   rm   rm   rn   r  ð  r1  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  rV  rž  rN   rE  rw   Úsock_acceptr  rß   r   r  r�   rÊ  Ú
setsockoptrÿ  ÚIPPROTO_TCPÚTCP_NODELAYÚconnect_accepted_socketrÑ  rñ  )r{   Úclient_sockZ_addrrØ  ró  rm   rm   rn   Ú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  rw   r  r  r�   rÊ  r³   r	   r‰   r€   rm   rm   rn   rŸ    s   €ÿ
zTCPSocketListener.acloser,  r  ©r}   rJ  r¸   )rg   rh   ri   rE  r¢  r¦  r|   r:  r  rR  rŸ  rm   rm   rm   rn   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   rw   rI   rI  r¦  r  rm   rm   rn   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~   )rw   r  rU  ©Ú_r€   rm   rn   r±   6  s    z+UNIXSocketListener.accept.<locals>.<lambda>)rV  rž  rI  rU  rR  Úsetblockingr-  r0  rß   r   rw   r"  rÆ   rn  r  r¦  r=   r;   )r{   rQ  rW  r�  rõ   rm   r€   rn   rR  *  s0   €
û
ÿ€üôÿzUNIXSocketListener.acceptrˆ   c                 Ã  s   �d| _ | j ¡  d S rS  )r¦  rU  r‰   r€   rm   rm   rn   rŸ  ?  s   €zUNIXSocketListener.aclosec                 C  r0  r~   )rU  r€   rm   rm   rn   r  C  r1  zUNIXSocketListener._raw_socketNr,  rS  r¸   r  )rg   rh   ri   r|   rR  rŸ  r:  r  rm   rm   rm   rn   rT  #  s    


rT  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û  rm   rm   rn   r|   I  ó
   


zUDPSocket.__init__r}   rü  c                 C  rý  rþ  r   r€   rm   rm   rn   r  R  r  zUDPSocket._raw_socketrˆ   c                 Ã  ó$   �d| _ | j ¡ s| j ¡  d S d S rS  ©r¦  rÌ  r®  r‰   r€   rm   rm   rn   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ù  rV  rž  r¨  rÒ  rÌ  r®  rÔ  rð  rÃ   r  r  r¦  r=   r;   r€   rm   rm   rn   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ú  rV  rž  r¨  rÕ  rÃ   r¦  r=   rÌ  r®  r;   Úsendto©r{   rŒ  rm   rm   rn   r¯  l  ó   €
"øzUDPSocket.sendN©rØ  rZ  ró  ré  r  r¸   )r}   r_  )rŒ  rR   r}   rˆ   ©	rg   rh   ri   r|   r:  r  rŸ  r�  r¯  rm   rm   rm   rn   rY  H  s    
	

rY  c                   @  sB   e Zd Zddd„Zedd	d
„ƒZddd„Zddd„Zddd„ZdS )ÚConnectedUDPSocketrØ  rZ  ró  ré  c                 C  rô  rõ  rø  rû  rm   rm   rn   r|   y  r[  zConnectedUDPSocket.__init__r}   rü  c                 C  rý  rþ  r   r€   rm   rm   rn   r  ‚  r  zConnectedUDPSocket._raw_socketrˆ   c                 Ã  r\  rS  r]  r€   rm   rm   rn   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{   Úpacketrm   rm   rn   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~   ra  rc  rm   rm   rn   r¯  ž  rd  zConnectedUDPSocket.sendNre  r  r¸   ©r}   rš  r°  rf  rm   rm   rm   rn   rg  x  s    
	

rg  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   rV  rž  rù  r  Úrecvfromr0  r$  r  r*  r=   r;   ©r{   r”   rœ  rõ   rm   rm   rn   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 rS  )r   rV  rž  rú  r  rb  r0  r(  r  r*  r=   r;   ©r{   rŒ  r”   rõ   rm   rm   rn   r¯  ¼  rp  zUNIXDatagramSocket.sendN)r}   rS   )rŒ  rS   r}   rˆ   ©rg   rh   ri   r�  r¯  rm   rm   rm   rn   rk  ª  ó    
rk  c                   @  rj  )ÚConnectedUNIXDatagramSocketr}   rš  c                 Ã  rl  rm  )r   rV  rž  rù  r  r/  r0  r$  r  r*  r=   r;   ro  rm   rm   rn   r�  Ï  rp  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 rS  )r   rV  rž  rú  r  r¯  r0  r(  r  r*  r=   r;   rq  rm   rm   rn   r¯  à  rp  z ConnectedUNIXDatagramSocket.sendNri  r°  rr  rm   rm   rm   rn   rt  Î  rs  rt  Ú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  rm   rm   rn   r  ü  rï  zEvent.__new__rˆ   c                 C  rã  r~   )rß   rF   Ú_eventr€   rm   rm   rn   r|   ÿ  r¹  zEvent.__init__c                 C  r·  r~   )rz  rÞ   r€   rm   rm   rn   rÞ     r¹  z	Event.setrñ   c                 C  ó
   | j  ¡ S r~   )rz  r  r€   rm   rm   rn   r    rï  zEvent.is_setc                 Ã  s0   �|   ¡ rt ¡ I d H  d S | j ¡ I d H  d S r~   )r  rV  rž  rz  rÃ   r€   rm   rm   rn   rÃ     s   €z
Event.waitr4   c                 C  s   t t| jjƒƒS r~   )r4   r	  rz  Ú_waitersr€   rm   rm   rn   Ú
statistics  r»  zEvent.statisticsN)r}   rF   r¸   r7  )r}   r4   )	rg   rh   ri   r  r|   rÞ   r  rÃ   r}  rm   rm   rm   rn   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  rm   rm   rn   r    rï  zLock.__new__rˆ   c                C  s   || _ d | _tƒ | _d S r~   )Ú_fast_acquireÚ_owner_taskr   r|  )r{   r  rm   rm   rn   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|  rV  r§  r�  rW  r   ÚreleaserŸ   r   rU  r  )r{   r«   ÚfutrŒ  rm   rm   rn   Ú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«   rm   rm   rn   Úacquire_nowait=  s   
zLock.acquire_nowaitc                 C  s
   | j d uS r~   )r‚  r€   rm   rm   rn   Ú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…  rm   rm   rn   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{   Z	task_inform   rm   rn   r}  W  s   zLock.statisticsN)r  rñ   r}   rH   )r  rñ   r}   rˆ   r¸   r7  )r}   r5   )
rg   rh   ri   r  r|   r†  r‡  rˆ  r„  r}  rm   rm   rm   rn   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_valuerG  r‹  r>  r  rñ   r}   c                C  r   r~   r  ©r  rŒ  r‹  r  rm   rm   rn   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ƒ  rm   rn   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|  rV  r§  r�  rW  r   r„  rß   r   rU  r  r�   ©r{   r…  rm   rm   rn   r†  s  s4   €üþý
ýýzSemaphore.acquirec                 C  s    | j dkrt‚|  j d8  _ d S r�  )rŽ  r@   r€   rm   rm   rn   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‘  rm   rm   rn   r„  •  s   

ýzSemaphore.releasec                 C  r0  r~   )rŽ  r€   rm   rm   rn   r2  ¡  r1  zSemaphore.valuec                 C  r0  r~   )r�  r€   rm   rm   rn   r‹  ¥  r1  zSemaphore.max_valuerJ   c                 C  s   t t| jƒƒS r~   )rJ   r	  r|  r€   rm   rm   rn   r}  ©  r¹  zSemaphore.statistics)rŒ  rG  r‹  r>  r  rñ   r}   rL   )rŒ  rG  r‹  r>  r  rñ   r¸   rÅ  rÆ  )r}   rJ   )rg   rh   ri   r  r|   r†  r‡  r„  r:  r2  r‹  r}  r’  rm   rm   rƒ  rn   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“  rm   rm   rn   r  °  rï  zCapacityLimiter.__new__c                 C  s   t ƒ | _tƒ | _|| _d S r~   )rÞ   Ú
_borrowersr   Ú_wait_queuer“  )r{   r“  rm   rm   rn   r|   ³  s   
zCapacityLimiter.__init__rˆ   c                 Ã  s   �|   ¡ I d H  d S r~   )r†  r€   rm   rm   rn   rT  ¸  ó   €zCapacityLimiter.__aenter__r‚   rƒ   r„   r…   r†   r‡   c                 Ã  s   �|   ¡  d S r~   )r„  rŠ   rm   rm   rn   r[  »  s   €zCapacityLimiter.__aexit__c                 C  r0  r~   )r’  r€   rm   rm   rn   r“  Ã  r1  zCapacityLimiter.total_tokensr2  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÷   rG  r   Úisinfrk  r�   Úmaxr’  r–  ÚpopitemrÞ   )r{   r2  Úwaiters_to_notifyÚeventrm   rm   rn   r“  Ç  s   
ýrG  c                 C  s
   t | jƒS r~   )r	  r•  r€   rm   rm   rn   Úborrowed_tokensØ  ó   
zCapacityLimiter.borrowed_tokensc                 C  s   | j t| jƒ S r~   )r’  r	  r•  r€   rm   rm   rn   Ú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ž  rm   rm   rn   Ú_notify_next_waiterà  s   þz#CapacityLimiter._notify_next_waiterc                 C  ó   |   tƒ ¡ d S r~   )Úacquire_on_behalf_of_nowaitr   r€   rm   rm   rn   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¦  rm   rm   rn   r¥  é  s   
ÿz+CapacityLimiter.acquire_on_behalf_of_nowaitc                 Ã  s   �|   tƒ ¡I d H S r~   )Úacquire_on_behalf_ofr   r€   rm   rm   rn   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~   )rV  r§  r¥  r@   rß   rF   r–  rÃ   rX  Úpopr  r£  r•  r  rW  r„  )r{   r¦  rž  rm   rm   rn   r¨  ÷  s.   €
ûôþz$CapacityLimiter.acquire_on_behalf_ofc                 C  r¤  r~   )Úrelease_on_behalf_ofr   r€   rm   rm   rn   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§  rm   rm   rn   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€   rm   rm   rn   r}    s   üzCapacityLimiter.statisticsN)r“  rÿ   r}   rD   )r“  rÿ   r¸   r·   r8  r9  rÅ  )r¦  r  r}   rˆ   )r}   r3   )rg   rh   ri   r’  r¢  r  r|   rT  r[  r:  r“  r;  rŸ  r¡  r£  r‡  r¥  r†  r¨  r„  rª  r}  rm   rm   rm   rn   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   rw   r   Ú_signal_queuerß   r   rH  rÞ   Ú_handled_signals)r{   r®  rm   rm   rn   r|   .  s
   
z_SignalReceiver.__init__rµ   r%   r}   rˆ   c                 C  s*   | j  |¡ | j ¡ s| j d ¡ d S d S r~   )r±  rU  rH  r²   rÆ   )r{   rµ   rm   rm   rn   Ú_deliver5  s   
ÿz_SignalReceiver._deliverc                 C  s2   t | jƒD ]}| j || j|¡ | j |¡ q| S r~   )rÞ   r°  rw   Úadd_signal_handlerr³  r²  r  )r{   Úsigrm   rm   rn   r�   :  s   z_SignalReceiver.__enter__r‚   rƒ   r„   r…   r†   r‡   c                 C  s   | j D ]}| j |¡ qd S r~   )r²  rw   Úremove_signal_handler)r{   r‚   r„   r†   rµ  rm   rm   rn   r‹   A  s   
ÿz_SignalReceiver.__exit__c                 C  s   | S r~   rm   r€   rm   rm   rn   Ú	__aiter__J  s   z_SignalReceiver.__aiter__c                 Ã  s6   �t  ¡ I d H  | jst ¡ | _| jI d H  | j ¡ S r~   )rV  rž  r±  rß   r   rH  r  r€   rm   rm   rn   Ú	__anext__M  s   €

z_SignalReceiver.__anext__N)r®  r¯  )rµ   r%   r}   rˆ   )r}   r­  r·   )r}   r%   )	rg   rh   ri   r|   r³  r�   r‹   r·  r¸  rm   rm   rm   rn   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Ü   r<  rò   r~  r|   r/  Úget_nameÚweakrefÚrefra  )r{   r«   r  r<  r˜   rƒ  rm   rn   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)ra  r%  r÷   r&  rß   r   r¾   rá   rÜ   râ   r  )r{   r«   r  râ   rm   rm   rn   Úhas_pending_cancellationh  s   ÿþ
z(AsyncIOTaskInfo.has_pending_cancellation)r«   r¯   r7  )rg   rh   ri   r|   r¼  r’  rm   rm   rƒ  rn   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)rp   Ú
use_uvlooprq   rp   rr   r¿  rñ   rq   rs   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   ro   )	r  ÚplatformÚuvloopr¬   Úwinloopr\   Ú_runnerrQ  Ú_runner_task)r{   rp   r¿  rq   rÂ  rÃ  rm   rm   rn   r|     s   

zTestRunner.__init__c                 C  s   | j  ¡  |  ¡  | j¡ | S r~   )rÄ  r�   r•   Úset_exception_handlerÚ_exception_handlerr€   rm   rm   rn   r�   ”  s   
zTestRunner.__enter__r‚   rƒ   r„   r…   r†   r‡   c                 C  s   | j  |||¡ d S r~   )rÄ  r‹   rŠ   rm   rm   rn   r‹   ™  s   zTestRunner.__exit__r   c                 C  r{  r~   )rÄ  r•   r€   rm   rm   rn   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Ç   rQ  rU  Údefault_exception_handler)r{   r”   r—   rm   rm   rn   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)rQ  r	  rc   )r{   ra   rm   rm   rn   Ú_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)Z_pytest.outcomesrÍ  r¾  r   r¾   r³   rÍ   rX  rÈ   r÷   rÇ   rÆ   )r{   rË  rÍ  r˜   rÁ   Úretvalrõ   rm   rm   rn   Ú_run_tests_and_fixtures·  s0   €€
ÿ€ü
€ðPÿz"TestRunner._run_tests_and_fixturesré   ú Callable[P, Awaitable[T_Retval]]rÍ   úP.argsro  úP.kwargsrš   c                Ï  sr   �| j stttt tjf  dƒ\| _}|  ¡  	|  
|¡¡| _ ||i |¤Ž}|  ¡  ¡ }| j ||f¡ |I d H S rK  )rÅ  rB   r«  r   r-   rß   r   r¾  r•   r   rÏ  rÏ   Zsend_nowait)r{   ré   rÍ   ro  rË  r˜   rÁ   rm   rm   rn   Ú_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 stoprm   )r•   rŽ   rÓ  ÚasendrÊ  ÚStopAsyncIterationrŸ  rŸ   )r{   rÔ  ro  ÚasyncgenZfixturevaluerm   rm   rn   Ú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Ô  ro  rÎ  rm   rm   rn   Ú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Ç   rQ  rU  rÊ  )r{   rÝ  ro  rõ   rm   rm   rn   Úrun_test	  s   ÿ€ÿzTestRunner.run_test)rp   rr   r¿  rñ   rq   rs   r}   rˆ   )r}   r½  r·   r¹   )r”   r  r—   rÈ  r}   rˆ   r¸   )rË  rÌ  r}   rˆ   )ré   rÐ  rÍ   rÑ  ro  rÒ  r}   rš   )rÔ  rÕ  ro  rÈ  r}   rÖ  )rÔ  rÛ  ro  rÈ  r}   rš   )rÝ  rÞ  ro  rÈ  r}   rˆ   )rg   rh   ri   r¢  r|   r�   r‹   r•   rÇ  rÊ  rÏ  rÓ  rÚ  rÜ  rß  rm   rm   rm   rn   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 )ãrV  ré   ú1Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]]rÍ   r]  ro  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é   rm   rn   Úwrapper	  s   €z#AsyncIOBackend.run.<locals>.wrapperrp   rq   r¿  FrÀ  r   ro   ©r}   rš   )	r   rÜ   r  rÁ  rÂ  r¬   rÃ  r\   r    )r  ré   rÍ   ro  rá  rä  rp   rq   rÂ  rÃ  Úrunnerrm   rã  rn   r    	  s   


$ÿzAsyncIOBackend.runr  c                 C  ó   t ƒ S r~   )r   ry  rm   rm   rn   Úcurrent_token8	  r1  zAsyncIOBackend.current_tokenrÿ   c                 C  s
   t ƒ  ¡ S r~   )r   r"  ry  rm   rm   rn   r€  <	  r   zAsyncIOBackend.current_timeútype[BaseException]c                 C  s   t S r~   )r   ry  rm   rm   rn   Úcancelled_exception_class@	  s   z(AsyncIOBackend.cancelled_exception_classrˆ   c                 Ã  s   �t dƒI d H  d S rÚ  ©r	   ry  rm   rm   rn   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â   rm   rm   rn   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 )NTrw  r   )rN   r	   ry  rm   rm   rn   rW  [	  s   €"ÿz)AsyncIOBackend.cancel_shielded_checkpointÚdelayc                 Ã  s   �t |ƒI d H  d S r~   rë  )r  rí  rm   rm   rn   r	   `	  rì  zAsyncIOBackend.sleepFrü   rý   rþ   rñ   rN   c                C  s   t ||d�S )Nrü   rM   r  rm   rm   rn   Ú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ý   rm   rm   rn   Úcurrent_effective_deadlinej	  s(   
ÿûþø
z)AsyncIOBackend.current_effective_deadlineúabc.TaskGroupc                 C  rç  r~   )rP  ry  rm   rm   rn   Úcreate_task_group�	  r1  z AsyncIOBackend.create_task_groupú	abc.Eventc                 C  rç  r~   rE   ry  rm   rm   rn   Úcreate_event…	  r1  zAsyncIOBackend.create_eventr  úabc.Lockc                C  s
   t |d�S )Nr~  rG   r€  rm   rm   rn   Úcreate_lock‰	  r   zAsyncIOBackend.create_lockNrŠ  rŒ  rG  r‹  r>  úabc.Semaphorec                C  s   t |||d�S )NrŠ  rK   r�  rm   rm   rn   Úcreate_semaphore�	  s   zAsyncIOBackend.create_semaphorer“  úabc.CapacityLimiterc                 C  ó   t |ƒS r~   rC   r”  rm   rm   rn   Ú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 rxq‰| ¡ }|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 )Nrw  r–   r   )!rž  r“  rÜ   r”  ÚLookupErrorr   rÞ   Úcurrent_default_thread_limiterrN   rß   r   rš   rè   rx  rÐ   r  rn  r�  r®   r   r©  r€  r�  r‘  r  rå   Úremove_done_callbackr   r    r9   rã   r  r�  )r  ré   rÍ   rý  rþ  r|  rz  r+  rÁ   rå   ZworkerÚnowZexpired_workerr—   Zworker_scoperm   rm   rn   Ú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   r/  rþ   rã   )r  r+  rm   rm   rn   Ú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 rS  )r0   rß   rà   r   r  rá   r  r  r  r   Ú
concurrentÚfuturesrê   )Z__tracebackhide__r«   rõ   ©rÍ   ré   r+  rm   rn   Ú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�  rm   r	  rn   Ú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Æ   rX  rÈ   r÷   rÇ   rú   ©rÍ   r�  ré   rm   rn   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”   rm   r  rn   Ú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  r  rÁ  rÃ  rÄ  ro  rÍ  Zstdin_streamZstdout_streamZstderr_streamrm   rm   rn   Úopen_process"
  s4   €


ÿüûüûzAsyncIOBackend.open_processrz  rÏ  c                 C  s&   t t|ƒdd� tƒ  tt|ƒ¡ d S )Nz AnyIO process pool shutdown taskrj  )r   rÐ  rè   rn  r   rÎ  )r  rz  rm   rm   rn   Ú#setup_process_pool_exit_at_shutdownF
  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  r  r  r  rØ  ró  rm   rm   rn   Ú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~   ©r&  rV  ©r”   r  rm   rn   r±   i
  ó   
 z-AsyncIOBackend.connect_unix.<locals>.<lambda>)rž  r   rÿ  ÚAF_UNIXrX  Úconnectr0  rß   r   r'  rÆ   rn  rX  r‰   r-  )r  r   r�  rm   r%  rn   Úconnect_unix]
  s&   €

÷þøzAsyncIOBackend.connect_unixÚsockrü  rQ   c                 C  rú  r~   ©rD  ©r  r*  rm   rm   rn   Úcreate_tcp_listenerq
  r¾  z"AsyncIOBackend.create_tcp_listenerc                 C  rú  r~   )rT  r,  rm   rm   rn   Ú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_addrr/  r1  )r   Úcreate_datagram_endpointré  r¼   r‰   rY  rg  )r  r/  r  r0  r1  rØ  ró  rm   rm   rn   Ú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                   r#  r~   r$  rV  r%  rm   rn   r±   Ÿ
  r&  z<AsyncIOBackend.create_unix_datagram_socket.<locals>.<lambda>)rž  r   r(  r0  rß   r   r'  rÆ   rn  rX  r‰   rt  rk  )r  r  r6  r�  rm   r%  rn   Úcreate_unix_datagram_socket‘
  s&   €
÷þøz*AsyncIOBackend.create_unix_datagram_socketr   ©r/  rY  Úprotor>  úbytes | str | Noneústr | int | Noneúint | AddressFamilyrY  úint | SocketKindr;  r>  úuSequence[tuple[AddressFamily, SocketKind, int, str, tuple[str, int] | tuple[str, int, int, int] | tuple[int, bytes]]]c                Ã  s    �t ƒ j||||||d�I d H S )Nr:  )r   Úgetaddrinfo)r  r  r  r/  rY  r;  r>  rm   rm   rn   rA  ©
  s   €ÿzAsyncIOBackend.getaddrinfoÚsockaddrrP   útuple[str, str]c                 Ã  s   �t ƒ  ||¡I d H S r~   )r   Úgetnameinfo)r  rB  r>  rm   rm   rn   rD  À
  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 rS  ©r  rÆ   rß   rK  rm   ©rB  r…  ru  r  rm   rn   rÙ   Õ
  ó   
ÿÿz(AsyncIOBackend.wait_readable.<locals>.cbr   ©Úget_selectorr¸   )rv  rÜ   r   rÞ   r÷   rG  r+  r<   r   rÏ   r"  rÊ  Ú$anyio._core._asyncio_selector_threadrJ  r  r  r=   ©r  rE  r”   rÙ   rJ  ÚselectorÚsuccessrm   rG  rn   Ú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 rS  rF  rm   ©rB  r…  r&  rw  rm   rn   rÙ   
  rH  z(AsyncIOBackend.wait_writable.<locals>.cbr   rI  r¸   )rx  rÜ   r   rÞ   r÷   rG  r+  r<   r   rÏ   r'  rÊ  rK  rJ  r&  r  r=   rL  rm   rQ  rn   Úwait_writableû
  rP  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   rI  )r÷   rG  r+  r   rx  rÜ   r   r©  r  rÆ   rß   rK  r&  rÊ  rK  rJ  rv  r  )r  rE  rB  r”   rw  r…  rJ  ru  rm   rm   rn   Únotify_closing0  sX   ÿÿÿýÿÿÿýzAsyncIOBackend.notify_closingc                 Ã  ó
   �t |ƒS r~   r+  r,  rm   rm   rn   Úwrap_listener_socketa  ó   €z#AsyncIOBackend.wrap_listener_socketrñ  c                 Ã  ó&   �t ƒ jt|d�I d H \}}t||ƒS ©N)r*  )r   r  rÑ  rñ  ©r  r*  rØ  ró  rm   rm   rn   Úwrap_stream_sockete  ó
   €ÿ
z!AsyncIOBackend.wrap_stream_socketr-  c                 Ã  rT  r~   )r-  r,  rm   rm   rn   Úwrap_unix_stream_socketl  rV  z&AsyncIOBackend.wrap_unix_stream_socketrY  c                 Ã  rW  rX  )r   r4  ré  rY  rY  rm   rm   rn   Úwrap_udp_socketp  r[  zAsyncIOBackend.wrap_udp_socketrg  c                 Ã  rW  rX  )r   r4  ré  rg  rY  rm   rm   rn   Úwrap_connected_udp_socketw  r[  z(AsyncIOBackend.wrap_connected_udp_socketrk  c                 Ã  rT  r~   )rk  r,  rm   rm   rn   Úwrap_unix_datagram_socket~  rV  z(AsyncIOBackend.wrap_unix_datagram_socketrt  c                 Ã  rT  r~   )rt  r,  rm   rm   rn   Ú#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þ  rm   rm   rn   r  ˆ  s   

ýz-AsyncIOBackend.current_default_thread_limiterr®  r%   ú.AbstractContextManager[AsyncIterator[Signals]]c                 G  rú  r~   )r­  )r  r®  rm   rm   rn   Úopen_signal_receiver‘  s   z#AsyncIOBackend.open_signal_receiverr6   c                 C  s
   t tƒ ƒS r~   )r‰  r   ry  rm   rm   rn   Ú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 rm   )r²   r‰  )rØ   r«   rm   rm   rn   rÚ   �  s    z4AsyncIOBackend.get_running_tasks.<locals>.<listcomp>)r   ry  rm   rm   rn   Ú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   q-qd S q)NTgš™™™™™¹?)rž  r   r   r&  r²   r	   )r  Z	this_taskr«   r*  rm   rm   rn   Úwait_all_tasks_blockedŸ  s   €
þöz%AsyncIOBackend.wait_all_tasks_blockedr½  c                 C  s   t di |¤ŽS )Nrm   )r½  )r  rá  rm   rm   rn   Úcreate_test_runner¯  s   z!AsyncIOBackend.create_test_runner)
ré   rà  rÍ   r]  ro  rÈ  rá  rÈ  r}   rš   )r}   r  r8  )r}   ré  r¸   )rí  rÿ   r}   rˆ   r5  )r}   rñ  )r}   ró  )r  rñ   r}   rõ  )rŒ  rG  r‹  r>  r  rñ   r}   r÷  )r“  rÿ   r}   rù  )FN)
ré   rü  rÍ   r]  rý  rñ   rþ  rÿ  r}   rš   )ré   rà  rÍ   r]  r  r  r}   rš   )ré   rü  rÍ   r]  r  r  r}   rš   )r  r  rÁ  r  rÃ  r  rÄ  r  ro  r-   r}   r±  ©rz  rÏ  r}   rˆ   r~   )r  rê   r  rG  r  r  r}   rJ  )r   r!  r}   r"  )r*  rü  r}   rQ   )
r/  r&   r  r  r0  r  r1  rñ   r}   r2  )r  rü  r6  r7  r}   r8  )r  r<  r  r=  r/  r>  rY  r?  r;  rG  r>  rG  r}   r@  )r   )rB  rP   r>  rG  r}   rC  )rE  rX   r}   rˆ   )r*  rü  r}   rñ  )r*  rü  r}   r-  )r*  rü  r}   rY  )r*  rü  r}   rg  )r*  rü  r}   rk  )r*  rü  r}   rt  )r}   rD   )r®  r%   r}   rb  )r}   r6   )r}   re  )rá  rÈ  r}   r½  )3rg   rh   ri   Úclassmethodr    rè  r€  rê  rž  r§  rW  r	   r   r!  rî  rð  rò  rô  rö  rø  rû  r  r  r  r  r  r  r  r)  r-  r.  r5  r9  rA  rD  rO  rR  rS  rU  rZ  r\  r]  r^  r_  r`  r  rc  rd  rf  rg  rh  rm   rm   rm   rn   rV  	  sÌ    !ÿû	û<"#	ÿøÿ440rV  )r”   r   r}   rˆ   )r}   r¯   )ré   r   r}   rê   )r«   r¯   r}   rñ   )rõ   r   r}   rñ   )rz  rÇ  ra  r  r}   rˆ   ri  )¾Ú
__future__r   r7  rß   Úconcurrent.futuresr  r®   r   r  rÿ  r  r¡   rº  r   r   r   r   r   r   r	   Z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   rg  r3   r4   r5   r6   r7   Z_core._eventloopr8   r9   r:   Z_core._exceptionsr;   r<   r=   r>   r?   r@   Z_core._socketsrA   Z_core._streamsrB   Z_core._synchronizationrD   ZBaseCapacityLimiterrF   Z	BaseEventrH   ZBaseLockrI   rJ   rL   ZBaseSemaphoreZ_core._tasksrN   ZBaseCancelScoperO   rP   rQ   rR   rS   Zabc._eventlooprT   ZlowlevelrU   Zstreams.memoryrV   rW   Z	_typeshedrX   r  r  r\   r]   r^   Úenumr_   r`   ra   rb   Zexceptiongrouprc   Ztyping_extensionsÚEnumrd   r�   r‘   rš   rÓ   rÕ   rÖ   r×   r¢  rè   rï   rð   rô   rû   r  rá   Z
TaskStatusrE  Zeager_task_factoryrh  rO  rP  r«  rX  Z_Retval_Queue_Typerx  r“  r”  ZByteReceiveStreamr–  ZByteSendStreamr£  r±  rÎ  rÐ  ÚProtocolrÑ  ré  rñ  r  r-  rD  rT  rY  rg  rk  rt  rv  rx  r¬  r­  r‰  r½  rV  Zbackend_classrm   rm   rm   rn   Ú<module>   sü    $	(
   





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