o
    `gco                    @  s  U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlmZmZmZmZmZmZmZ d dlmZ d dlmZmZ d dlmZmZmZmZmZmZmZm Z 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+ d dl,m-Z-m.Z. d dl/m0Z0m1Z1m2Z2m3Z3 d dl4m5Z5 d dlm6Z6 d dl7m8Z8 d dl9m:Z: d dlm;Z;m<Z< d dl
m=Z= d dl>m?Z? d dl@mAZAmBZBmCZCmDZDmEZEmFZF d dlmGZG d dlHZHddlImJZJmKZKmLZLmMZMmNZN ddlOmPZPmQZQ 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"lNmkZkmlZlmmZmmnZnmoZo dd#lpmqZq dd$lrmsZs dd%ltmuZumvZv eBr]d d&lwmxZx neyZxe	jzd'krld d(l@m{Z{ nd d(l|m{Z{ e	jzd)krd d*lm}Z} d d+l@m~Z~mZ n@d dl'Z'd dlZd dl9Z9d d,lmZmZmZmZ d d-lmZ d d+l|m~Z~mZ G d.d/ d/ejZG d0d1 d1Z}dd6d7Zdd8d9ZeEd:ZeEd;d<d=Ze~d>Ze{d?Zesd@ZdAed@< ddCdDZddHdIZeG ZdJedK< ddNdOZddRdSZG dTdU dUejZiG dVdW dWZG dXdY dYe!dZef Ze ZG d[d\ d\eNjZdd_d`ZG dadb dbeNjZeeDe eDe f ZG dcdd dde=ZesdeZdfede< esdgZdhedg< G didj djeNjZe+dkdlG dmdn dneNjZe+dkdlG dodp dpeNjZe+dkdlG dqdr dreNjZddwdxZddzd{ZG d|d} d}ejZG d~d dejZG dd deNjZG dd dZG dd deeNjZG dd deNjmZG dd deNjmZG dd deNjZG dd deNjZG dd deeNjZG dd deeNjZesdZded< esdZded< G dd deaZ`G dd decZbG dd degZfG dd de_Z^esdZded< G dd dZG dd deMZG dd deNjZG dd dekZeZd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IteratorMutableMappingSequence)Future)AbstractContextManagersuppress)Contextcopy_context)	dataclass)partialwraps)CORO_RUNNINGCORO_SUSPENDEDgetcoroutinestateiscoroutine)IOBase)PathLike)Queue)Signals)AddressFamily
SocketKind)Thread)TracebackType)IOTYPE_CHECKINGAnyOptionalTypeVarcast)WeakKeyDictionary   )CapacityLimiterStatisticsEventStatisticsLockStatisticsTaskInfoabc)claim_worker_threadthreadlocals)BrokenResourceErrorBusyResourceErrorClosedResourceErrorEndOfStream
WouldBlockiterate_exceptions)convert_ipv6_sockaddr)create_memory_object_streamCapacityLimiterEventLock)ResourceGuardSemaphoreStatistics	SemaphoreCancelScope)AsyncBackendIPSockAddrTypeSocketListenerUDPPacketTypeUNIXDatagramPacketType)StrOrBytesPath)RunVar)MemoryObjectReceiveStreamMemoryObjectSendStream)FileDescriptorLike)   
   )	ParamSpecrX      )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 ro   ro   S/var/www/html/propose/venv/lib/python3.10/site-packages/anyio/_backends/_asyncio.pyre      s    re   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_factoryrr   bool | Noners   &Callable[[], AbstractEventLoop] | Nonec                C  s0   t j| _|| _|| _d | _d | _d| _d| _d S )Nr   F)	re   rl   _state_debug_loop_factory_loop_context_interrupt_count_set_event_loop)selfrr   rs   ro   ro   rp   __init__   s   
zRunner.__init__returnc                 C  s   |    | S N)
_lazy_initr}   ro   ro   rp   	__enter__   s   zRunner.__enter__exc_typetype[BaseException]exc_valBaseExceptionexc_tbr*   Nonec                 C  s   |    d S r   )closer}   r   r   r   ro   ro   rp   __exit__   s   zRunner.__exit__c              	   C  s   | j tjurdS z8| j}t| ||  t|dr$||  n|t	| W | j
r4td |  d| _tj| _ dS | j
rItd |  d| _tj| _ w )zShutdown and close event loop.Nshutdown_default_executor)rv   re   rm   ry   _cancel_all_tasksrun_until_completeshutdown_asyncgenshasattrr   _shutdown_default_executorr|   ra   set_event_loopr   rn   r}   loopro   ro   rp   r      s(   



zRunner.closer   c                 C  s   |    | jS )zReturn embedded event loop.)r   ry   r   ro   ro   rp   get_loop   s   zRunner.get_loop)contextcoroCoroutine[T_Retval]T_Retvalc             
   C  sd  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rt|dd}|dur| dkrt  w |durttj|u rt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"   
ValueErrorra   _get_running_loopRuntimeErrorr   rz   runry   r   	threadingcurrent_threadmain_threadsignal	getsignalSIGINTdefault_int_handlerr   
_on_sigintr{   r   rb   r   getattrKeyboardInterrupt)r}   r   r   tasksigint_handlerr   ro   ro   rp   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)rv   re   rn   r   rm   rx   ra   new_event_loopry   r|   r   rw   	set_debugcontextvarsr   rz   r   ro   ro   rp   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   ro   ro   ro   ro   rp   <lambda>   s    z#Runner._on_sigint.<locals>.<lambda>)r{   donecancelry   call_soon_threadsafer   )r}   signumframer   ro   ro   rp   r      s   zRunner._on_sigint)rr   rt   rs   ru   )r   r]   )r   r   r   r   r   r*   r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   )ri   rj   rk   r~   r   r   r   r   r   r   r   ro   ro   ro   rp   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   )rc   r   r   r   gather	cancelledr   call_exception_handler)r   	to_cancelr   ro   ro   rp   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   ro   rp   _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   threadro   r   rp   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 ro   ro   ).0cbr   ro   ro   rp   
<listcomp>@      z"find_root_task.<locals>.<listcomp>rj   zuvloop.loop)r   getr   r   
_callbacksr
   r   setr0   asyncioTaskr   _task_statescancel_scope_parent_scope
_host_task)	root_taskr   	callbacksr   stater   ro   ro   rp   find_root_task8  s.   



r   funcr   strc                 C  s0   t | dd }t | dd }ddd ||fD S )Nrj   rk   .c                 S  s   g | ]}|r|qS ro   ro   )r   xro   ro   rp   r   Z  r   z%get_callable_name.<locals>.<listcomp>)r   r   )r   modulequalnamero   ro   rp   get_callable_nameW  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   ro   ro   rp   _task_startedd  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 by cancel scope F)r   
isinstancer   
startswith__context__r   r   ro   ro   rp   is_anyio_cancellationv  s   r   c                   @  s   e Zd Zejddd1dd	Zejdfd2d
dZd3ddZd4ddZe	d5ddZ
e	d5ddZd6ddZd7dd Zd6d!d"Zd6d#d$Ze	d8d%d&Zejd9d(d&Ze	d5d)d*Ze	d5d+d,Ze	d5d-d.Zejd:d/d.Zd0S );rM   Fdeadlineshieldr   floatr   r   r   c                C  
   t | S r   object__new__clsr   r   ro   ro   rp   r    s   
zCancelScope.__new__c                 C  sd   || _ || _d | _t | _d| _d| _d| _d | _d | _	t | _
d | _tjdkr-d| _d S d | _d S )NFr[   r   )	_deadline_shieldr   r   _child_scopes_cancel_called_cancelled_caught_active_timeout_handle_cancel_handle_tasksr   sysversion_info_pending_uncancellations)r}   r   r   ro   ro   rp   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_statero   ro   rp   r     s,   


zCancelScope.__enter__r   type[BaseException] | Noner   BaseException | Noner   TracebackType | Nonert   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zd| _ | jr;| j  d | _| j	
| j | jd urV| jj
|  | jj	| j | j|_|   | jr| js| jrv| j  |  jd8  _| jsgd}|d urt|D ]}t|trt|rd| _qd}q| jo| W d | _~S | jr| jd usJ | jjd usJ | j j| j7  _d| _W d | _~dS d | _~w )NzThis cancel scope is not activezIAttempted to exit cancel scope in a different task than it was entered inzTAttempted to exit a cancel scope that isn't the current tasks's current cancel scopeFr   Tr   )r  r   r   r   r   r   r   r  r   r  remover   r  r  _restart_cancellation_in_parentr	  %_parent_cancellation_is_visible_to_usr  r   r?   r   r   r   r
  )r}   r   r   r   host_task_statecannot_swallow_exc_valr   ro   ro   rp   r     sh   


zCancelScope.__exit__c                 C  s2   | }|d ur|j rdS |jrdS |j}|d usdS )NTF)r	  r   r   )r}   r   ro   ro   rp   _effectively_cancelled  s   	z"CancelScope._effectively_cancelledc                 C  s   | j d uo| j o| j jS r   )r   r   r"  r   ro   ro   rp   r    s
   
z1CancelScope._parent_cancellation_is_visible_to_usr   c                 C  sF   | j tjkr!t }| | j kr|   d S || j | j| _d S d S r   )	r  mathinfr   timer   call_atr  r  r   ro   ro   rp   r  !  s   zCancelScope._timeoutoriginc                 C  s   d}t  }| jD ]>}d}|jrq||urF|| ju st|rF|j}t|tjr*|	 sF|
dt|d ||ju rF|jdurF| jd7  _q| jD ]}|jsY|jsY||pX|}qJ|| u rn|rkt | j|| _|S d| _|S )aZ  
        Deliver cancellation to directly contained tasks and nested cancel scopes.

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

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

        FTr   r   Nr   )r   r  _must_cancelr   r   _fut_waiterr   r   r   r   r   idr  r  r  cancel_calledr  r   	call_soonr  )r}   r'  should_retrycurrentr   waiterscopero   ro   rp   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}   r0  ro   ro   rp   r  W  s   

z+CancelScope._restart_cancellation_in_parentc                 C  sB   | j s| jr| j  d | _d| _ | jd ur| |  d S d S d S NT)r	  r  r   r   r  r   ro   ro   rp   r   j  s   

zCancelScope.cancelc                 C     | j S r   )r  r   ro   ro   rp   r   t     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}   r5  ro   ro   rp   r   x  s   


c                 C  r3  r   )r	  r   ro   ro   rp   r+    r4  zCancelScope.cancel_calledc                 C  r3  r   )r
  r   ro   ro   rp   cancelled_caught  r4  zCancelScope.cancelled_caughtc                 C  r3  r   )r  r   ro   ro   rp   r     r4  zCancelScope.shieldc                 C  s(   | j |kr|| _ |s|   d S d S d S r   )r  r  r6  ro   ro   rp   r     s   
Nr   r   r   r   r   rM   )r   r   r   r   )r   rM   r   r  r   r  r   r  r   rt   r   r   r   )r'  rM   r   r   r   r   r5  r   r   r   )r5  r   r   r   )ri   rj   rk   r#  r$  r  r~   r   r   propertyr"  r  r  r  r  r   r   setterr+  r7  r   ro   ro   ro   rp   rM     s4    

L


.

	rM   c                   @  s   e Zd ZdZdZd
ddZd	S )r  z
    Encapsulates auxiliary task information that cannot be added to the Task instance
    itself because there are no guarantees about its implementation.
    )	parent_idr   __weakref__r?  
int | Noner   CancelScope | Nonec                 C     || _ || _d S r   r?  r   )r}   r?  r   ro   ro   rp   r~        
zTaskState.__init__N)r?  rA  r   rB  )ri   rj   rk   __doc__	__slots__r~   ro   ro   ro   rp   r    s    r  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 )TaskStateStorer   r   c                 C  s   t tjtf  | _i | _d S r   )r1   r   r   r  r   _preliminary_task_statesr   ro   ro   rp   r~     s   
zTaskStateStore.__init__keyAwaitable[Any] | asyncio.Taskr  c                C  sd   t |tjsJ z| j| W S  ty1   |  }r'| j| }r,| Y S Y t|Y t|w r   )r   r   r   r   r  r   rI  r   )r}   rJ  r   r   ro   ro   rp   __getitem__  s   zTaskStateStore.__getitem__asyncio.Task | Awaitable[Any]r5  c                C  s(   t |tjr|| j|< d S || j|< d S r   r   r   r   r   rI  )r}   rJ  r5  ro   ro   rp   __setitem__  s   zTaskStateStore.__setitem__c                C  s$   t |tjr| j|= d S | j|= d S r   rN  )r}   rJ  ro   ro   rp   __delitem__  s   zTaskStateStore.__delitem__intc                 C  s   t | jt | j S r   )lenr   rI  r   ro   ro   rp   __len__  s   zTaskStateStore.__len__'Iterator[Awaitable[Any] | asyncio.Task]c                 c  s    | j E d H  | jE d H  d S r   )r   rI  r   ro   ro   rp   __iter__  s   zTaskStateStore.__iter__Nr   )rJ  rK  r   r  )rJ  rM  r5  r  r   r   )rJ  rM  r   r   r   rQ  )r   rT  )	ri   rj   rk   r~   rL  rO  rP  rS  rU  ro   ro   ro   rp   rH    s    




rH  rK  c                   @  s"   e Zd ZdddZddddZdS )_AsyncioTaskStatusr   asyncio.Futurer?  rQ  c                 C  rC  r   )_future
_parent_id)r}   r   r?  ro   ro   rp   r~     rE  z_AsyncioTaskStatus.__init__Nr5  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)rY  r   r   InvalidStateErrorr   r   r0   r   r   rZ  r   r?  )r}   r5  r   ro   ro   rp   started  s   
z_AsyncioTaskStatus.started)r   rX  r?  rQ  r   )r5  r[  r   r   )ri   rj   rk   r~   r]  ro   ro   ro   rp   rW    s    
rW  rc   Iterable[asyncio.Task[object]]c              	     s~   t   t  d fdd} D ]}|| ~qzI d H  W  r1  |  s&d S d S  r>  |  s5w )Nr   asyncio.Task[object]r   r   c                   s,     |   s sd  d S d S d S r   )r  r   r   r   rc   r/  ro   rp   on_completion  s   
z_wait.<locals>.on_completion)r   r_  r   r   )r   r   r   add_done_callbackpopremove_done_callback)rc   rb  r   ro   ra  rp   _wait  s   

rf  c                   @  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 S )NF)rM   r   r  _exceptionsr   r  r   ro   ro   rp   r~     s   zTaskGroup.__init__c                   s   | j   d| _| S r2  )r   r   r  r   ro   ro   rp   
__aenter__  s   
zTaskGroup.__aenter__r   r  r   r  r   r  rt   c                   sn  z|d ur| j   t|ts| j| zj| jrht B}| jrXz
t| jI d H  W n) tyT } zd|_	| j   |d u sHt|trJt
|sJ|}W Y d }~nd }~ww | js!W d    n1 sbw   Y  nt I d H  d| _| jr{td| j|r|W n$ ty } z| j t|||jrW Y d }~W ~~| `dS  d }~ww | j |||W ~~| `S ~~| `w )NTFzunhandled errors in a TaskGroup)r   r   r   r   rh  appendr  rM   rf  r   r   AsyncIOBackendcancel_shielded_checkpointr  rd   r   r   type__traceback__)r}   r   r   r   
wait_scoper   ro   ro   rp   	__aexit__  sZ   


zTaskGroup.__aexit__Nr   ,Callable[[Unpack[PosArgsT]], Awaitable[Any]]r   tuple[Unpack[PosArgsT]]namer  task_status_futureasyncio.Future | Noner   c           
        s6  d fdd} j stdi }r&tt }tt jj|d< nt jj}||i |}t|sRt|d	rB|j	 d
nd}	t
d|	 |j d|dt| jd t|< |d u ret|nt|}zt||dW t|= nt|= w t<  jj  j  r| S | S )N_taskr   r   r   c              
     s&  j d usJ | j jv sJ j j|   j t| = z|  }W n# tyH } zt|jtr<|j}t|jts3|}W Y d }~nd }~ww |d ur~d urW rWd S d u s_	 rwt|tsj j
|  j jsu j   d S d S | d S d ur	 std d S d S d S )Nz2Child exited without calling task_status.started())r   r  r  r   r   r   r   r   r   r   rh  rj  r"  r   r   r   )rv  r   er}   r   r  rt  ro   rp   	task_doneE  s:   
z#TaskGroup._spawn.<locals>.task_donez;This task group is not active; no new tasks can be started.task_statusrj   r    z	Expected z0() to return a coroutine, but the return value (z) is not a coroutine objectrD  rs  )rv  r   r   r   )r  r   r*  r   rW  r   r   r"   r   rj   	TypeErrorrk   r  r   r   r   r   r  r  r   rc  )
r}   r   r   rs  rt  ry  kwargsr?  r   prefixro   rx  rp   _spawn>  sF   $


zTaskGroup._spawnr|  Unpack[PosArgsT]c                G  s   |  ||| d S r   )r  )r}   r   rs  r   ro   ro   rp   
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   rM   r   )r}   r   rs  r   r   r   ro   ro   rp   r     s    (zTaskGroup.startr   )r   rg  r9  r   )
r   rq  r   rr  rs  r  rt  ru  r   r   )r   rq  r   r  rs  r  r   r   )r   r  r   r  rs  r  r   r-   )	ri   rj   rk   r~   ri  rp  r  r  r   ro   ro   ro   rp   rg    s    


;[	rg  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 ) WorkerThreadrY   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 threadr|  r2   F)superr~   r   r  r  ry   r   r%   queuerk  current_time
idle_sincestopping)r}   r   r  r  	__class__ro   rp   r~     s   

zWorkerThread.__init__r   rX  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)rk  r  r  r  r  rj  r   r   StopIterationr   	__cause__r   r   )r}   r   r  r   new_excro   ro   rp   _report_result  s   

zWorkerThread._report_resultc           
      C  s   t t| jc 	 | j }|d u r	 W d    d S |\}}}}}| scd }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 slw   Y  d S r   )r8   rk  r   r  r   r   r9   current_cancel_scoper   r   	is_closedr   r  ry  )
r}   itemr   r   r   r   r   r  r   r   ro   ro   rp   r     s4   



zWorkerThread.runNfasyncio.Task | Nonec                 C  sF   d| _ | jd  | j|  z	| j|  W d S  ty"   Y d S w r2  )r  r  
put_nowaitr  r  r  r  r   )r}   r  ro   ro   rp   stop  s   zWorkerThread.stop)r   r   r  r  r  r  )r   rX  r  r-   r   r  r   r   r   r   )r  r  r   r   )	ri   rj   rk   MAX_IDLE_TIMEr~   r  r   r  __classcell__ro   ro   r  rp   r    s    

r  _threadpool_idle_workerszRunVar[deque[WorkerThread]]_threadpool_workerszRunVar[set[WorkerThread]]c                      s2   e Zd ZdddZd fddZdddZ  ZS )BlockingPortalr   c                 C  r   r   r  r  ro   ro   rp   r       
zBlockingPortal.__new__r   c                   s   t    t | _d S r   )r  r~   r   ry   r   r  ro   rp   r~     s   
zBlockingPortal.__init__r   <Callable[[Unpack[PosArgsT]], Awaitable[T_Retval] | T_Retval]r   rr  r~  dict[str, Any]rs  r  r   Future[T_Retval]c                 C  s,   t t| jj|d| j||||f| j d S )Nr|  )rk  run_sync_from_threadr   _task_groupr  
_call_funcry   )r}   r   r   r~  rs  r   ro   ro   rp   _spawn_task_from_thread  s
   z&BlockingPortal._spawn_task_from_thread)r   r  r   )r   r  r   rr  r~  r  rs  r  r   r  r   r   )ri   rj   rk   r  r~   r  r  ro   ro   r  rp   r  
  s    
r  F)eqc                   @  s,   e Zd ZU ded< dddd	ZdddZdS )StreamReaderWrapperzasyncio.StreamReader_stream   	max_bytesrQ  r   bytesc                   s    | j |I d H }|r|S tr   )r  readr=   )r}   r  dataro   ro   rp   receive*  s
   zStreamReaderWrapper.receiver   c                   s"   | j t  t I d H  d S r   )r  r   r<   rk  
checkpointr   ro   ro   rp   aclose1  s   zStreamReaderWrapper.acloseNr  r  rQ  r   r  r   )ri   rj   rk   __annotations__r  r  ro   ro   ro   rp   r  &  s   
 r  c                   @  s*   e Zd ZU ded< dddZdd	d
ZdS )StreamWriterWrapperzasyncio.StreamWriterr  r  r  r   r   c                   s"   | j | | j  I d H  d S r   )r  writedrainr}   r  ro   ro   rp   send:  s   zStreamWriterWrapper.sendc                   s   | j   t I d H  d S r   )r  r   rk  r  r   ro   ro   rp   r  >  s   
zStreamWriterWrapper.acloseNr  r  r   r   r   )ri   rj   rk   r  r  r  ro   ro   ro   rp   r  6  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)	rM   r  r  r  r  r   r   r   killr1  ro   ro   rp   r  J  s&   "zProcess.acloserQ  c                   s   | j  I d H S r   )r  r   r   ro   ro   rp   r   \  s   zProcess.waitc                 C     | j   d S r   )r  	terminater   ro   ro   rp   r  _     zProcess.terminatec                 C  r  r   )r  r  r   ro   ro   rp   r  b  r  zProcess.killr   c                 C  s   | j | d S r   )r  send_signal)r}   r   ro   ro   rp   r  e     zProcess.send_signalc                 C     | j jS r   )r  pidr   ro   ro   rp   r  h     zProcess.pidrA  c                 C  r  r   )r  
returncoder   ro   ro   rp   r  l  r  zProcess.returncodeabc.ByteSendStream | Nonec                 C  r3  r   )r  r   ro   ro   rp   stdinp  r4  zProcess.stdinabc.ByteReceiveStream | Nonec                 C  r3  r   )r  r   ro   ro   rp   stdoutt  r4  zProcess.stdoutc                 C  r3  r   )r  r   ro   ro   rp   stderrx  r4  zProcess.stderrNr   rV  )r   rQ  r   r   r   rA  )r   r  )r   r  )ri   rj   rk   r  r  r   r  r  r  r=  r  r  r  r  r  ro   ro   ro   rp   r  C  s(   
 




r  r  set[Process]rv  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	
  |  |rD||j qdS )zG
    Forcibly shuts down worker processes belonging to this event loop.N)rX      )r  r  r   get_event_loop_policyget_child_watcherNotImplementedErrorr  r  r  
_transportr   r  r  r  remove_child_handlerr  )r  rv  child_watcherprocessro   ro   rp   '_forcibly_shutdown_process_pool_on_exit}  s$   

r  set[abc.Process]c                   sd   zt tjI dH  W dS  tjy1   | 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  ro   ro   rp   _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   rE   r  r  r   r0   	Transportset_write_buffer_limitsr}   r  ro   ro   rp   connection_made  s
   


zStreamProtocol.connection_mader   c                 C  s,   |r
t  | _|| j_| j  | j  d S r   )r:   r   r  r  r   r  r}   r   ro   ro   rp   connection_lost  s
   
zStreamProtocol.connection_lostr  r  c                 C  s   | j t| | j  d S r   )r  rj  r  r  r   )r}   r  ro   ro   rp   data_received  s   zStreamProtocol.data_receivedrt   c                 C  s   d| _ | j  dS r2  )r  r  r   r   ro   ro   rp   eof_received  s   
zStreamProtocol.eof_receivedc                 C     t  | _d S r   )r   rE   r  r   ro   ro   rp   pause_writing  r  zStreamProtocol.pause_writingc                 C  r  r   r  r   r   ro   ro   rp   resume_writing  r  zStreamProtocol.resume_writingr  r  r   r   r   r  r   r   )r  r  r   r   )r   rt   r   )ri   rj   rk   r  r   r  r  r  r  r  r  r  ro   ro   ro   rp   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 )Nd   )maxlen)r   r  r   rE   r  r  r   r  ro   ro   rp   r    s   

z DatagramProtocol.connection_mader   c                 C  s   | j   | j  d S r   )r  r   r  r  ro   ro   rp   r    s   
z DatagramProtocol.connection_lostr  r  addrrO   c                 C  s&   t |}| j||f | j  d S r   )r@   r  rj  r  r   )r}   r  r  ro   ro   rp   datagram_received  s   z"DatagramProtocol.datagram_receivedr   c                 C  s
   || _ d S r   )r   r  ro   ro   rp   error_received  r  zDatagramProtocol.error_receivedc                 C  r  r   )r  clearr   ro   ro   rp   r    r  zDatagramProtocol.pause_writingc                 C  r  r   r  r   ro   ro   rp   r    r  zDatagramProtocol.resume_writingr  r  )r  r  r  rO   r   r   )r   r   r   r   r   )ri   rj   rk   r  r   r  r  r  r  r  r  ro   ro   ro   rp   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  	_protocolrH   _receive_guard_send_guard_closedr}   r  r  ro   ro   rp   r~     s
   


zSocketStream.__init__r   socket.socketc                 C     | j dS Nsocketr  get_extra_infor   ro   ro   rp   _raw_socket     zSocketStream._raw_socketr  r  rQ  r  c              	     s  | j  | jj s(| j s(| jjs(| j  | jj I d H  | j	  nt
 I d H  z| jj }W n tyP   | jrDtd | jjrM| jjd td w t||krk|d | ||d  }}| jj| | jjs}| jj  W d    |S W d    |S 1 sw   Y  |S r   )r  r  r  is_setr  
is_closingr  resume_readingr   pause_readingrk  r  r  popleft
IndexErrorr
  r<   r   r=   rR  
appendleftr  )r}   r  chunkleftoverro   ro   rp   r    sB   



 
  zSocketStream.receiver  r   c                   s   | j F t I d H  | jrt| jjd ur| jjz| j| W n t	y8 } z	| j
 r3t| d }~ww | jj I d H  W d    d S 1 sMw   Y  d S r   )r	  rk  r  r
  r<   r  r   r  r  r   r  r:   r  r   )r}   r  r   ro   ro   rp   r  $  s"   
"zSocketStream.sendc                   s(   z| j   W d S  ty   Y d S w r   )r  	write_eofOSErrorr   ro   ro   rp   send_eof7  s   zSocketStream.send_eofc                   s^   | j  s-d| _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   ro   ro   rp   r  =  s   

zSocketStream.acloseN)r  r   r  r  r   r  r  r  r  r   )
ri   rj   rk   r~   r=  r  r  r  r  r  ro   ro   ro   rp   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 )_RawSocketMixinNru  _receive_future_send_futureF
raw_socketr  c                 C  s   || _ td| _td| _d S )Nr  r  )_RawSocketMixin__raw_socketrH   r  r	  r}   r&  ro   ro   rp   r~   O  s   
z_RawSocketMixin.__init__r   c                 C  r3  r   )r'  r   ro   ro   rp   r  T  r4  z_RawSocketMixin._raw_socketr   asyncio.AbstractEventLooprX  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}   ro   rp   callbackY     z6_RawSocketMixin._wait_until_readable.<locals>.callbackr  r  r   r   )r   r   r$  
add_readerr'  r   rc  r}   r   r/  r  ro   r.  rp   _wait_until_readableX  
   
z$_RawSocketMixin._wait_until_readablec                   r*  )Nr  r  r   r   c                   r+  r   )r%  remove_writerr'  r-  r.  ro   rp   r/  c  r0  z6_RawSocketMixin._wait_until_writable.<locals>.callbackr1  )r   r   r%  
add_writerr'  r   rc  r3  ro   r.  rp   _wait_until_writableb  r5  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   ro   ro   rp   r  l  s   
z_RawSocketMixin.acloser&  r  r"  )r   r)  r   rX  r   )ri   rj   rk   r$  r  r%  r:  r~   r=  r  r4  r8  r  ro   ro   ro   rp   r#  J  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   ro   ro   rp   r  y  s   "zUNIXSocketStream.send_eofr  r  rQ  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   rk  r  r  r  recvBlockingIOErrorr4  r  r:  r<   r:   r=   )r}   r  r   r  r   ro   ro   rp   r  }  s*   zUNIXSocketStream.receiver  c                   s   t  }t I d H  | jM t|}|rSz| j|}W n% ty.   | |I d H  Y n t	yB } z	| j
r;td t|d }~ww ||d  }|sW d    d S W d    d S 1 s^w   Y  d S r   )r   rk  r  r	  
memoryviewr  r  r@  r8  r  r:  r<   r:   )r}   r  r   view
bytes_sentr   ro   ro   rp   r    s*   "zUNIXSocketStream.sendmsglenmaxfdstuple[bytes, list[int]]c                   sl  t |tr
|dk rtdt |tr|dk rtdt }td}t I d H  | jJ 	 z| j	|t
||j \}}}}W n% tyS   | |I d H  Y n tyg }	 z	| jr`td t|	d }	~	ww |sn|sntnq/W d    n1 szw   Y  |D ].\}
}}|
t
jks|t
jkrtd|d|
 d	| ||d t|t||j    q|t|fS )
Nr   z%msglen must be a non-negative integerr   z!maxfds must be a positive integeriTz.Received unexpected ancillary data; message = z, cmsg_level = z, cmsg_type = )r   rQ  r   r   arrayrk  r  r  r  recvmsgr  CMSG_LENitemsizer@  r4  r  r:  r<   r:   r=   
SOL_SOCKET
SCM_RIGHTSr   	frombytesrR  list)r}   rD  rE  r   fdsr   ancdataflagsr  r   
cmsg_level	cmsg_type	cmsg_dataro   ro   rp   receive_fds  sN   
&zUNIXSocketStream.receive_fdsr   rP  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 sw   Y  d S )Nzmessage must not be emptyzfds must not be emptyrG  )r   r   r   rQ  rj  r#   r;  rH  rk  r  r	  r  sendmsgr  rL  rM  r@  r8  r  r:  r<   r:   )r}   r   rP  r   filenosfdfdarrayr   ro   ro   rp   send_fds  sB   

"zUNIXSocketStream.send_fdsNr   r  r  r  )rD  rQ  rE  rQ  r   rF  )r   r  rP  rW  r   r   )ri   rj   rk   r  r  r  rV  r\  ro   ro   ro   rp   r=  x  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 )TCPSocketListenerNrB  _accept_scopeFr&  r  c                 C  s$   || _ ttjt | _td| _d S )Naccepting connections from)_TCPSocketListener__raw_socketr0   r   BaseEventLoopr   ry   rH   _accept_guardr(  ro   ro   rp   r~     s   zTCPSocketListener.__init__r   c                 C  r3  r   )r`  r   ro   ro   rp   r    r4  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<   rb  rk  r  rM   r^  ry   sock_acceptr  r   r   r,  r   r  
setsockoptr  IPPROTO_TCPTCP_NODELAYconnect_accepted_socketr  r  )r}   client_sock_addrr  r  ro   ro   rp   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^  ry   r,  r  r   r  r   r	   r   r   ro   ro   rp   r    s   
zTCPSocketListener.acloser<  r"  r   rc  r   )ri   rj   rk   r^  r  r
  r~   r=  r  rl  r  ro   ro   ro   rp   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   ry   rH   rb  r
  r(  ro   ro   rp   r~   )  s   

zUNIXSocketListener.__init__r   rc  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   )ry   r,  ro  _r   ro   rp   r   ;  s    z+UNIXSocketListener.accept.<locals>.<lambda>)rk  r  rb  ro  rl  setblockingr=  r@  r   r   ry   r2  r   rc  r  r
  r<   r:   )r}   rj  rq  r  r   ro   r   rp   rl  /  s0   

zUNIXSocketListener.acceptr   c                   s   d| _ | j  d S r2  )r
  ro  r   r   ro   ro   rp   r  D  s   zUNIXSocketListener.aclosec                 C  r3  r   )ro  r   ro   ro   rp   r  H  r4  zUNIXSocketListener._raw_socketNr<  rm  r   r"  )ri   rj   rk   r~   rl  r  r=  r  ro   ro   ro   rp   rn  (  s    


rn  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  ro   ro   rp   r~   N  
   


zUDPSocket.__init__r   r  c                 C  r  r  r  r   ro   ro   rp   r  W  r  zUDPSocket._raw_socketr   c                   $   | j  sd| _| j   d S d S r2  r  r  r
  r   r   ro   ro   rp   r  [  
   
zUDPSocket.aclosetuple[bytes, IPSockAddrType]c              	     s   | j ? t I d H  | jjs$| j s$| jj  | jj	 I d H  z| jj
 W W  d    S  tyB   | jr?td td w 1 sFw   Y  d S r   r  rk  r  r  r  r  r  r  r  r   r  r  r
  r<   r:   r   ro   ro   rp   r  `  s   
zUDPSocket.receiver  rQ   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	  rk  r  r  r  r   r
  r<   r  r  r:   sendtor  ro   ro   rp   r  q     
"zUDPSocket.sendNr  rt  r  r  r"  r   )r   ry  )r  rQ   r   r   	ri   rj   rk   r~   r=  r  r  r  r  ro   ro   ro   rp   rs  M  s    
	

rs  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  rt  r  r  c                 C  r  r  r  r  ro   ro   rp   r~   ~  ru  zConnectedUDPSocket.__init__r   r  c                 C  r  r  r  r   ro   ro   rp   r    r  zConnectedUDPSocket._raw_socketr   c                   rv  r2  rw  r   ro   ro   rp   r    rx  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  rz  )r}   packetro   ro   rp   r    s   $zConnectedUDPSocket.receiver  c                   sr   | j + t I d H  | jj I d H  | jrt| j	 r!t
| j| W d    d S 1 s2w   Y  d S r   r{  r  ro   ro   rp   r    r}  zConnectedUDPSocket.sendNr~  r"  r   r   r  r  r  ro   ro   ro   rp   r  }  s    
	

r  c                   @      e Zd Zd
ddZdddZd	S )UNIXDatagramSocketr   rR   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   rk  r  r  r  recvfromr@  r4  r  r:  r<   r:   r}   r   r  r   ro   ro   rp   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   rk  r  r	  r  r|  r@  r8  r  r:  r<   r:   r}   r  r   r   ro   ro   rp   r    r  zUNIXDatagramSocket.sendN)r   rR   )r  rR   r   r   ri   rj   rk   r  r  ro   ro   ro   rp   r        
r  c                   @  r  )ConnectedUNIXDatagramSocketr   r  c                   r  r  )r   rk  r  r  r  r?  r@  r4  r  r:  r<   r:   r  ro   ro   rp   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   rk  r  r	  r  r  r@  r8  r  r:  r<   r:   r  ro   ro   rp   r    r  z ConnectedUNIXDatagramSocket.sendNr  r  r  ro   ro   ro   rp   r    r  r  read_eventsz RunVar[dict[int, asyncio.Event]]_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 )rE   r   c                 C  r   r   r  r  ro   ro   rp   r    r  zEvent.__new__r   c                 C  r  r   )r   rE   _eventr   ro   ro   rp   r~     r  zEvent.__init__c                 C  r  r   )r  r   r   ro   ro   rp   r     r  z	Event.setr   c                 C  
   | j  S r   )r  r  r   ro   ro   rp   r  
  r  zEvent.is_setc                   s0   |   rt I d H  d S | j I d H  d S r   )r  rk  r  r  r   r   ro   ro   rp   r     s   z
Event.waitr4   c                 C  s   t t| jjS r   )r4   rR  r  _waitersr   ro   ro   rp   
statistics  r  zEvent.statisticsN)r   rE   r   r:  )r   r4   )	ri   rj   rk   r  r~   r   r  r   r  ro   ro   ro   rp   rE      s    




rE   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 )rG   Ffast_acquirer  r   r   c                C  r   r   r  r  r  ro   ro   rp   r    r  zLock.__new__r   c                C  s   || _ d | _t | _d S r   )_fast_acquire_owner_taskr   r  )r}   r  ro   ro   rp   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  rk  checkpoint_if_cancelledr  rl  r   releaser   r   rj  r  )r}   r   futr  ro   ro   rp   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   ro   ro   rp   acquire_nowaitB  s   
zLock.acquire_nowaitc                 C  s
   | j d uS r   )r  r   ro   ro   rp   lockedM  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  ro   ro   rp   r  P  s   

zLock.releaser5   c                 C  s*   | j rt| j nd }t|  |t| jS r   )r  AsyncIOTaskInfor5   r  rR  r  )r}   	task_inforo   ro   rp   r  \  s   zLock.statisticsN)r  r   r   rG   )r  r   r   r   r   r:  )r   r5   )
ri   rj   rk   r  r~   r  r  r  r  r  ro   ro   ro   rp   rG     s    

"

rG   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 )#rK   NF	max_valuer  initial_valuerQ  r  rA  r  r   r   c                C  r   r   r  r  r  r  r  ro   ro   rp   r  b  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  ro   rp   r~   k  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  rk  r  r  rl  r   r  r   r   rj  r  r   r}   r  ro   ro   rp   r  x  s4   
zSemaphore.acquirec                 C  s    | j dkrt|  j d8  _ d S r  )r  r>   r   ro   ro   rp   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  ro   ro   rp   r    s   

zSemaphore.releasec                 C  r3  r   )r  r   ro   ro   rp   r5    r4  zSemaphore.valuec                 C  r3  r   )r  r   ro   ro   rp   r    r4  zSemaphore.max_valuerI   c                 C  s   t t| jS r   )rI   rR  r  r   ro   ro   rp   r    r  zSemaphore.statistics)r  rQ  r  rA  r  r   r   rK   )r  rQ  r  rA  r  r   r   rV  r  )r   rI   )ri   rj   rk   r  r~   r  r  r  r=  r5  r  r  r  ro   ro   r  rp   rK   a  s    


rK   c                   @  s   e Zd ZU dZded< d0ddZd1dd	Zd2ddZd3ddZe	d4ddZ
e
jd5ddZ
e	d6ddZe	d4ddZd2ddZd7d"d#Zd2d$d%Zd7d&d'Zd2d(d)Zd7d*d+Zd8d-d.Zd/S )9rC   r   r   _total_tokenstotal_tokensr   c                 C  r   r   r  r  r  ro   ro   rp   r    r  zCapacityLimiter.__new__c                 C  s   t  | _t | _|| _d S r   )r   
_borrowersr   _wait_queuer  )r}   r  ro   ro   rp   r~     s   
zCapacityLimiter.__init__r   c                   s   |   I d H  d S r   )r  r   ro   ro   rp   ri       zCapacityLimiter.__aenter__r   r  r   r  r   r  c                   s   |    d S r   )r  r   ro   ro   rp   rp    s   zCapacityLimiter.__aexit__c                 C  r3  r   )r  r   ro   ro   rp   r    r4  zCapacityLimiter.total_tokensr5  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 >= 1r   Flast)r   rQ  r#  isinfr}  r   maxr  r  popitemr   )r}   r5  waiters_to_notifyeventro   ro   rp   r    s   
rQ  c                 C  s
   t | jS r   )rR  r  r   ro   ro   rp   borrowed_tokens     
zCapacityLimiter.borrowed_tokensc                 C  s   | j t| j S r   )r  rR  r  r   ro   ro   rp   available_tokens     z CapacityLimiter.available_tokensc                 C     |  t  d S r   )acquire_on_behalf_of_nowaitr   r   ro   ro   rp   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  rR  r  r>   r  )r}   r  ro   ro   rp   r    s   
z+CapacityLimiter.acquire_on_behalf_of_nowaitc                   s   |  t I d H S r   )acquire_on_behalf_ofr   r   ro   ro   rp   r    r  zCapacityLimiter.acquirec                   s   t  I d H  z| | W n2 tyA   t }|| j|< z	| I d H  W n ty7   | j	|d   w | j
| Y d S w z
t  I d H  W d S  tyX   |    w r   )rk  r  r  r>   r   rE   r  r   r   rd  r  r  rl  r  r}   r  r  ro   ro   rp   r    s*   
z$CapacityLimiter.acquire_on_behalf_ofc                 C  r  r   )release_on_behalf_ofr   r   ro   ro   rp   r    r  zCapacityLimiter.releasec                 C  sf   z| j | W n ty   tdd w | jr/t| j | jk r1| jjddd }|  d S d S d S )Nz@this borrower isn't holding any of this CapacityLimiter's tokensFr  r   )	r  r  r  r   r  rR  r  r  r   r  ro   ro   rp   r    s   z$CapacityLimiter.release_on_behalf_ofr3   c                 C  s   t | j| jt| jt| jS r   )r3   r  r  tupler  rR  r  r   ro   ro   rp   r    s   zCapacityLimiter.statisticsN)r  r   r   rC   )r  r   r   r   r  r   r  r   r  r   r   r;  r<  rV  )r  r  r   r   )r   r3   )ri   rj   rk   r  r  r  r~   ri  rp  r=  r  r>  r  r  r  r  r  r  r  r  r  ro   ro   ro   rp   rC     s*   
 









rC   _default_thread_limiterzRunVar[CapacityLimiter]c                   @  sH   e Zd ZdddZdd	d
ZdddZdddZdddZdddZdS ) _SignalReceiversignalstuple[Signals, ...]c                 C  s,   || _ t | _t | _t | _t | _	d S r   )
_signalsr   ry   r   _signal_queuer   r   rY  r   _handled_signals)r}   r  ro   ro   rp   r~   -  s
   
z_SignalReceiver.__init__r   r&   r   r   c                 C  s*   | j | | j s| jd  d S d S r   )r  rj  rY  r   r   )r}   r   ro   ro   rp   _deliver4  s   
z_SignalReceiver._deliverc                 C  s2   t | jD ]}| j|| j| | j| q| S r   )r   r  ry   add_signal_handlerr  r  r  )r}   sigro   ro   rp   r   9  s   z_SignalReceiver.__enter__r   r  r   r  r   r  rt   c                 C  s   | j D ]}| j| qd S r   )r  ry   remove_signal_handler)r}   r   r   r   r  ro   ro   rp   r   @  s   
z_SignalReceiver.__exit__c                 C  s   | S r   ro   r   ro   ro   rp   	__aiter__J  s   z_SignalReceiver.__aiter__c                   s6   t  I d H  | jst | _| jI d H  | j S r   )rk  r  r  r   r   rY  r  r   ro   ro   rp   	__anext__M  s   

z_SignalReceiver.__anext__N)r  r  )r   r&   r   r   )r   r  r9  )r   r&   )	ri   rj   rk   r~   r  r   r   r  r  ro   ro   ro   rp   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refrv  )r}   r   r  r?  r   r  ro   rp   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)rv  r(  r   r)  r   r   r   r   r   r   r"  )r}   r   r  r   ro   ro   rp   has_pending_cancellationh  s   
z(AsyncIOTaskInfo.has_pending_cancellation)r   r   r:  )ri   rj   rk   r~   r  r  ro   ro   r  rp   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)rr   
use_uvlooprs   rr   rt   r  r   rs   ru   r   r   c                C  s8   |r|d u rdd l }|j}t||d| _g | _d | _d S )Nr   rq   )uvloopr   r]   _runnerrh  _runner_task)r}   rr   r  rs   r  ro   ro   rp   r~     s   
zTestRunner.__init__c                 C  s   | j   |  | j | S r   )r  r   r   set_exception_handler_exception_handlerr   ro   ro   rp   r     s   
zTestRunner.__enter__r   r  r   r  r   r  c                 C  s   | j ||| d S r   )r  r   r   ro   ro   rp   r     s   zTestRunner.__exit__r   c                 C  r  r   )r  r   r   ro   ro   rp   r     r  zTestRunner.get_loopr   r)  r   r  c                 C  s2   t |dtr| j|d  d S || d S )Nr   )r   r   r   rh  rj  default_exception_handler)r}   r   r   ro   ro   rp   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)rh  rR  rd   )r}   rb   ro   ro   rp   _raise_async_exceptions  s   z"TestRunner._raise_async_exceptionsreceive_streamOMemoryObjectReceiveStream[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 sw   Y  d S )Nr   )OutcomeException)_pytest.outcomesr  r  r   r   r   r   r   r   r   r   r   )r}   r  r  r   r   retvalr   ro   ro   rp   _run_tests_and_fixtures  s0   

Pz"TestRunner._run_tests_and_fixturesr    Callable[P, Awaitable[T_Retval]]r   P.argsr~  P.kwargsr   c                   sr   | j stttt tjf  d\| _}|  	| 
|| _ ||i |}|   }| j||f |I d H S rd  )r  rA   r  r   r-   r   r   r  r   r   r  r   send_nowait)r}   r   r   r~  r  r   r   ro   ro   rp   _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 stopro   )r   r   r  asendr  StopAsyncIterationr  r   )r}   r  r~  asyncgenfixturevaluero   ro   rp   run_asyncgen_fixture  s    zTestRunner.run_asyncgen_fixture,Callable[..., Coroutine[Any, Any, T_Retval]]c                 C  s(   |   | j|fi |}|   |S r   )r   r   r  r  )r}   r  r~  r  ro   ro   rp   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   rh  rj  r  )r}   r  r~  r   ro   ro   rp   run_test	  s   zTestRunner.run_test)rr   rt   r  r   rs   ru   r   r   )r   r  r  r   )r   r)  r   r  r   r   r   )r  r  r   r   )r   r  r   r  r~  r  r   r   )r  r  r~  r  r   r  )r  r  r~  r  r   r   )r  r  r~  r  r   r   )ri   rj   rk   r  r~   r   r   r   r  r  r  r  r  r  r  ro   ro   ro   rp   r  |  s    
 








r  c                   @  sL  e Zd Zedd
dZedddZedddZedddZedddZedddZ	edddZ
edddZeejdd dd%d&Zedd'd(Zedd*d+Zedd-d.Zedd1d2Zed3dd4dd:d;Zedd>d?Ze		3dddDdEZeddFdGZeddIdJZeddKdLZeddNdOZeddXdYZedd\d]Ze	3dddddeZeddidjZeddndoZeddpdqZeddwdxZ edd}d~Z!eddddddddZ"e	ddddZ#edddZ$edddZ%edddZ&edddZ'edddZ(edddZ)edddZ*edddZ+d3S )rk  r   1Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]]r   rr  r~  r  optionsr   r   c           
        s   t d fdd}|dd }|dd }|d u r)|ddr)d	d l}|j}t||d
}	|	| W  d    S 1 s@w   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   ro   rp   wrapper	  s   z#AsyncIOBackend.run.<locals>.wrapperrr   rs   r  Fr   rq   )r   r   )r   r   r  r   r]   r   )
r  r   r   r~  r  r  rr   rs   r  runnerro   r  rp   r   	  s   

$zAsyncIOBackend.runr  c                 C     t  S r   )r   r  ro   ro   rp   current_token-	  r4  zAsyncIOBackend.current_tokenr   c                 C  s
   t   S r   )r   r%  r  ro   ro   rp   r  1	  r  zAsyncIOBackend.current_timer   c                 C  s   t S r   )r   r  ro   ro   rp   cancelled_exception_class5	  s   z(AsyncIOBackend.cancelled_exception_classr   c                   s   t dI d H  d S r  r	   r  ro   ro   rp   r  9	     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   ro   ro   rp   r  =	  s    z&AsyncIOBackend.checkpoint_if_cancelledc                   s@   t dd tdI d H  W d    d S 1 sw   Y  d S )NTr  r   )rM   r	   r  ro   ro   rp   rl  P	  s   "z)AsyncIOBackend.cancel_shielded_checkpointdelayc                   s   t |I d H  d S r   r  )r  r  ro   ro   rp   r	   U	  r  zAsyncIOBackend.sleepFr   r   r   r   rM   c                C  s   t ||dS )Nr   rL   r  ro   ro   rp   create_cancel_scopeY	  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   ro   ro   rp   current_effective_deadline_	  s(   

z)AsyncIOBackend.current_effective_deadlineabc.TaskGroupc                 C  r  r   )rg  r  ro   ro   rp   create_task_groupv	  r4  z AsyncIOBackend.create_task_group	abc.Eventc                 C  r  r   rD   r  ro   ro   rp   create_eventz	  r4  zAsyncIOBackend.create_eventr  abc.Lockc                C  s
   t |dS )Nr  rF   r  ro   ro   rp   create_lock~	  r  zAsyncIOBackend.create_lockNr  r  rQ  r  rA  abc.Semaphorec                C  s   t |||dS )Nr  rJ   r  ro   ro   rp   create_semaphore	  s   zAsyncIOBackend.create_semaphorer  abc.CapacityLimiterc                 C     t |S r   rB   r  ro   ro   rp   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	
 }t }	|s]t|	||}
|
  ||
 |	|
j n&| }
|  }|r||d j tjk rrn| }|j|j |  |sgt }|tjjd  |s|jd u r|}n|j}|
j|||||f |I d H W  d    W  d   I d H  S 1 sw   Y  W d   I d H  d S 1 I d H sw   Y  d S )Nr  r   )r  r  r   r  LookupErrorr   r   current_default_thread_limiterrM   r   r   r   r  r   r  rc  r  rd  r  r  r  r  r   re  r   r   sniffiocurrent_async_library_cvarr   r  r  )r  r   r   r  r  r  r  r0  r   r   workernowexpired_workerr   worker_scopero   ro   rp   run_sync_in_worker_thread	  sX   

.z(AsyncIOBackend.run_sync_in_worker_threadc                 C  sH   t j}|d ur"|jrtdt|d|jrd S |j}|d usd S d S )Nr   r   )r9   r  r+  r   r*  r   r   )r  r0  ro   ro   rp   check_cancelled	  s   zAsyncIOBackend.check_cancelledtokenc           	        sR   d fdd}t t|}t }|tjjd |tj}|t	j
||}| S )	Nr0  rM   r   r   c              
     s   d}t tjt }td | t|< | j| z%z  I d H W W | j| S  t	y< } z	t
j	t|d d }~ww | j| w r2  )r0   r   r   r   r  r   r  r  r  r   
concurrentfuturesr   )r0  __tracebackhide__r   r   r  ro   rp   task_wrapper	  s   z:AsyncIOBackend.run_async_from_thread.<locals>.task_wrapperr   )r0  rM   r   r   )r0   r   r   r   r  r  r   r9   r  r   run_coroutine_threadsafer  )	r  r   r   r   r$  r   r   r  r  ro   r  rp   run_async_from_thread	  s   

z$AsyncIOBackend.run_async_from_threadc                   s<   t d fdd}t tt|}||  S )Nr   r   c               
     s^   zt jd    W d S  ty. }  z|  t| ts# W Y d } ~ d S d } ~ ww )Nr   )r  r  r   r   r   r   r   r   r   r   r  r   ro   rp   r  	  s   

z4AsyncIOBackend.run_sync_from_thread.<locals>.wrapperr   )r   r   r0   r   r   r  )r  r   r   r   r  r   ro   r'  rp   r  	  s   	

z#AsyncIOBackend.run_sync_from_threadabc.BlockingPortalc                 C  r  r   )r  r  ro   ro   rp   create_blocking_portal	
  r4  z%AsyncIOBackend.create_blocking_portalcommand)StrOrBytesPath | Sequence[StrOrBytesPath]r  int | IO[Any] | Noner  r  r-   r  c          
        s   |   I d H  t|trt|}t|ttfr*tj|f|||d|I d H }ntj	||||d|I d H }|j
rAt|j
nd }|jrKt|jnd }|jrUt|jnd }	t||||	S )N)r  r  r  )r  r   r$   osfspathr   r  r   create_subprocess_shellcreate_subprocess_execr  r  r  r  r  r  )
r  r*  r  r  r  r~  r  stdin_streamstdout_streamstderr_streamro   ro   rp   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 taskr|  )r   r  r   rc  r   r  )r  r  ro   ro   rp   #setup_process_pool_exit_at_shutdown1
  s   z2AsyncIOBackend.setup_process_pool_exit_at_shutdownhostr   portlocal_addressIPSockAddrType | Nonerc  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  r6  r7  r8  r  r  ro   ro   rp   connect_tcp;
  s   

zAsyncIOBackend.connect_tcppathstr | bytesabc.UNIXSocketStreamc                   s   |   I d H  t  ttjd 	 z
| W tS  tyE   t } 	|j
d  | fdd |I d H  Y n tyP      w q)NFTc                   
     S r   r6  rp  r   r&  ro   rp   r   T
     
 z-AsyncIOBackend.connect_unix.<locals>.<lambda>)r  r   r  AF_UNIXrr  connectr@  r   r   r7  r   rc  r   r   r=  )r  r=  r  ro   rB  rp   connect_unixH
  s&   

zAsyncIOBackend.connect_unixsockr  rP   c                 C  r  r   )r]  r  rG  ro   ro   rp   create_tcp_listener\
  r  z"AsyncIOBackend.create_tcp_listenerc                 C  r  r   )rn  rH  ro   ro   rp   create_unix_listener`
  r  z#AsyncIOBackend.create_unix_listenerfamilyr'   remote_address
reuse_portUDPSocket | ConnectedUDPSocketc                   sN   t  jt||||dI d H \}}|jr|  |j|s"t||S t||S )N)r:  remote_addrrK  rM  )r   create_datagram_endpointr  r   r   rs  r  )r  rK  r8  rL  rM  r  r  ro   ro   rp   create_udp_socketd
  s   

z AsyncIOBackend.create_udp_socketr&  remote_pathstr | bytes | None8abc.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   rA  rp  rB  ro   rp   r   
  rC  z<AsyncIOBackend.create_unix_datagram_socket.<locals>.<lambda>)r  r   rE  r@  r   r   r7  r   rc  r   r   r  r  )r  r&  rR  r  ro   rB  rp   create_unix_datagram_socket|
  s&   
z*AsyncIOBackend.create_unix_datagram_socketr   rK  rm  protorR  bytes | str | Nonestr | int | Noneint | AddressFamilyrm  int | SocketKindrW  rR  ]list[tuple[AddressFamily, SocketKind, int, str, tuple[str, int] | tuple[str, int, int, int]]]c                  s    t  j||||||dI d H S )NrV  )r   getaddrinfo)r  r6  r7  rK  rm  rW  rR  ro   ro   rp   r]  
  s   zAsyncIOBackend.getaddrinfosockaddrrO   tuple[str, str]c                   s   t  ||I d H S r   )r   getnameinfo)r  r^  rR  ro   ro   rp   r`  
  s   zAsyncIOBackend.getnameinfoobjrW   c                   s   |   I d H  zt }W n ty   i }t| Y nw t|ts(| }||r1tdt	 }t
 }z	|||j W n ty]   ddlm} | }|||j |j}Y nw |j}|||< z| I d H  W || ||= d S || ||= w )Nr  r   get_selector)r  r  r   r  r   r   rQ  r;  r;   r   r   rE   r2  r  $anyio._core._asyncio_selector_threadrc  r,  r   )r  ra  r  r   r  rc  selectorr,  ro   ro   rp   wait_readable
  s<   



zAsyncIOBackend.wait_readablec                   s   |   I d H  zt }W n ty   i }t| Y nw t|ts(| }||r1tdt	 }t
 }z	|||j W n ty]   ddlm} | }|||j |j}Y nw |j}|||< z| I d H  W ||= || d S ||= || w )Nr  r   rb  )r  r  r   r  r   r   rQ  r;  r;   r   r   rE   r7  r  rd  rc  r6  r   )r  ra  r  r   r  rc  re  r6  ro   ro   rp   wait_writable
  s<   



zAsyncIOBackend.wait_writablerC   c                 C  s4   zt  W S  ty   td}t | | Y S w )N(   )r  r   r  rC   r   )r  r  ro   ro   rp   r  
  s   

z-AsyncIOBackend.current_default_thread_limiterr  r&   .AbstractContextManager[AsyncIterator[Signals]]c                 G  r  r   )r  )r  r  ro   ro   rp   open_signal_receiver   s   z#AsyncIOBackend.open_signal_receiverr6   c                 C  s
   t t S r   )r  r   r  ro   ro   rp   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 ro   )r   r  )r   r   ro   ro   rp   r     s    z4AsyncIOBackend.get_running_tasks.<locals>.<listcomp>)r   r  ro   ro   rp   get_running_tasks
  r  z AsyncIOBackend.get_running_tasksc                   s\   |   I d H  t }	 t D ]}||u rq|j}|d u s!| r*tdI d H   nqd S q)NTg?)r  r   r   r)  r   r	   )r  	this_taskr   r/  ro   ro   rp   wait_all_tasks_blocked  s   
z%AsyncIOBackend.wait_all_tasks_blockedr  c                 C  s   t di |S )Nro   )r  )r  r  ro   ro   rp   create_test_runner  s   z!AsyncIOBackend.create_test_runner)
r   r  r   rr  r~  r  r  r  r   r   )r   r  r;  )r   r   r   )r  r   r   r   r8  )r   r  )r   r	  )r  r   r   r  )r  rQ  r  rA  r  r   r   r  )r  r   r   r  )FN)
r   r  r   rr  r  r   r  r  r   r   )r   r  r   rr  r   r  r   r   )r   r  r   rr  r   r  r   r   )r   r(  )r*  r+  r  r,  r  r,  r  r,  r~  r-   r   r  r  r  r   r   r   )r6  r   r7  rQ  r8  r9  r   rc  )r=  r>  r   r?  )rG  r  r   rP   )
rK  r'   r8  r9  rL  r9  rM  r   r   rN  )r&  r  rR  rS  r   rT  )r6  rX  r7  rY  rK  rZ  rm  r[  rW  rQ  rR  rQ  r   r\  )r   )r^  rO   rR  rQ  r   r_  )ra  rW   r   r   )r   rC   )r  r&   r   ri  )r   r6   )r   rl  )r  r  r   r  ),ri   rj   rk   classmethodr   r  r  r   r  r  rl  r	   r#  r$  r  r  r  r
  r  r  r  r  r  r&  r  r)  r4  r5  r<  rF  rI  rJ  rQ  rU  r]  r`  rf  rg  r  rj  rk  rm  ro  rp  ro   ro   ro   rp   rk  	  s    	:#	""rk  )r   r   r   r   )r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )rc   r^  r   r   )r  r  rv  r  r   r   rq  )
__future__r   rH  r   concurrent.futuresr!  r#  r-  r  r  r   r  r   r   r   r   r   r   r	   asyncio.base_eventsr
   collectionsr   r   collections.abcr   r   r   r   r   r   r   r   r   r   r   
contextlibr   r   r   r   r   dataclassesr   	functoolsr   r   inspectr   r    r!   r"   ior#   r$   r  r%   r   r&   r'   r(   r)   typesr*   typingr+   r,   r-   r.   r/   r0   r1   r  r{  r3   r4   r5   r6   r7   _core._eventloopr8   r9   _core._exceptionsr:   r;   r<   r=   r>   r?   _core._socketsr@   _core._streamsrA   _core._synchronizationrC   BaseCapacityLimiterrE   	BaseEventrG   BaseLockrH   rI   rK   BaseSemaphore_core._tasksrM   BaseCancelScoperN   rO   rP   rQ   rR   abc._eventlooprS   lowlevelrT   streams.memoryrU   rV   	_typeshedrW   r  r  rZ   typing_extensionsr]   r^   r_   enumr`   ra   rb   rc   exceptiongrouprd   Enumre   r   r   r   r   r   r   r   r  r   r   r   r   r   r  rH  r   
TaskStatusrW  rf  rg  r  r   _Retval_Queue_Typer  r  r  r  ByteReceiveStreamr  ByteSendStreamr  r  r  r  Protocolr  r  r  r#  r=  r]  rn  rs  r  r  r  r  r  r  r  r  r  rk  backend_classro   ro   ro   rp   <module>   s    $	0   






  &
 ;K
9
'U.t<%02$$JQr/!     