o
    m=8jS                    @  s  U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlmZmZmZmZmZmZmZ d dlmZ d dlmZmZ d dlmZmZmZmZmZmZm Z m!Z! d dlm"Z" d dl#m$Z$ d d	lm%Z%m&Z& d d
l'm(Z(m)Z) d dl*m+Z+m,Z, d dl-m.Z.m/Z/m0Z0 d dl1m2Z2 d dlm3Z3 d dl4m5Z5 d dl6m7Z7 d dl	m8Z8m9Z9 d dlm:Z: d dl;m<Z<m=Z= d dl>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZE d dlmFZF ddlGmHZHmIZImJZJmKZKmLZL ddlMmNZNmOZOmPZP ddlQmRZRmSZSmTZTmUZUmVZVmWZW ddlXmYZY ddlZm[Z[ ddl\m]Z^ ddl\m_Z` ddl\maZb ddl\mcZcmdZd dd l\meZf dd!lgmhZi dd"lgmjZj dd#lLmkZkmlZlmmZmmnZnmoZo dd$lpmqZq dd%lrmsZsmtZt dd&lumvZv dd'lwmxZxmyZy e@rkd d(lzm{Z{ ne|Z{e
j}d)krd d*lm~Z~ d d+l>mZmZ n@d dlZd dlZd dl6Z6d d,lmZmZmZmZ d d-lmZ d d+lmZmZ G d.d/ d/ejZG d0d1 d1Z~dd6d7Zdd8d9ZeDd:ZeDd;d<d=ZeDd>d<d?Zed@ZeCdAZevdBZdCedB< ddEdFZeF ZdGedH< ddKdLZddOdPZG dQdR dReiZhG dSdT dTZeF ZdUedV< G dWdX dXeLjZe
j}dYkr&ejjZdZed[< ndZG d\d] d]eLjZeedB edB f ZG d^d_ d_e:Zevd`Zdaed`< evdbZdcedb< e(dddeG dfdg dgeLjZe(dddeG dhdi dieLjZe(dddeG djdk dkeLjZddpdqZddsdtZG dudv dvejZG dwdx dxejZG dydz dzeLjZG d{d| d|ZG d}d~ d~eeLjZG dd deLjmZG dd deLjmZG dd deLjZG dd deLjZG dd deeLjZG dd deeLjZevdZded< evdZded< G dd de`Z_G dd debZaG dd defZeG dd de^Z]evdZded< G dd dZG dd deKZG dd deLj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Sequence)Future)AbstractContextManager)Contextcopy_context)	dataclassfield)partialwraps)CORO_RUNNINGCORO_SUSPENDEDgetcoroutinestate)IOBase)PathLike)Queue)Signals)AddressFamily
SocketKind)Thread)CodeTypeTracebackType)IOTYPE_CHECKINGAnyLiteral	ParamSpecTypeVarcast)WeakKeyDictionary   )CapacityLimiterStatisticsEventStatisticsLockStatisticsTaskInfoabc)claim_worker_threadset_current_async_librarythreadlocals)BrokenResourceErrorBusyResourceErrorClosedResourceErrorEndOfStreamRunFinishedError
WouldBlock)convert_ipv6_sockaddr)create_memory_object_streamCapacityLimiterEventLock)ResourceGuardSemaphoreStatistics	SemaphoreCancelScope)
TaskHandle)AsyncBackendIPSockAddrTypeSocketListenerUDPPacketTypeUNIXDatagramPacketType)StrOrBytesPath)call_for_coroutineget_callable_name)RunVar)MemoryObjectReceiveStreamMemoryObjectSendStream)FileDescriptorLike      )Runner)TypeVarTupleUnpack)
coroutinesevents
exceptionstasks)BaseExceptionGroupc                   @  s   e Zd ZdZdZdZdS )_StatecreatedinitializedclosedN)__name__
__module____qualname__CREATEDINITIALIZEDCLOSED rp   rp   _/home/nk/hobo-godmode/plappi-mvp/.venv/lib/python3.10/site-packages/anyio/_backends/_asyncio.pyrf   }   s    rf   c                   @  sj   e Zd Zdddd&ddZd'd
dZd(ddZd)ddZd*ddZddd+ddZd)d d!Z	d,d$d%Z
dS )-r^   Ndebugloop_factoryrs   bool | Nonert   &Callable[[], AbstractEventLoop] | Nonec                C  s0   t j| _|| _|| _d | _d | _d| _d| _d S )Nr   F)	rf   rm   _state_debug_loop_factory_loop_context_interrupt_count_set_event_loop)selfrs   rt   rp   rp   rq   __init__   s   
zRunner.__init__returnc                 C  s   |    | S N)
_lazy_initr~   rp   rp   rq   	__enter__   s   zRunner.__enter__exc_typetype[BaseException] | Noneexc_valBaseException | Noneexc_tbTracebackType | NoneNonec                 C  s   |    d S r   )closer~   r   r   r   rp   rp   rq   __exit__   s   zRunner.__exit__c              	   C  s   | j }| jtjus|du rdS z5t| ||  t|dr(||  n|t	| W | j
r8td |  d| _ tj| _dS | j
rMtd |  d| _ tj| _w )zShutdown and close event loop.Nshutdown_default_executor)rz   rw   rf   rn   _cancel_all_tasksrun_until_completeshutdown_asyncgenshasattrr   _shutdown_default_executorr}   rb   set_event_loopr   ro   r~   looprp   rp   rq   r      s(   



zRunner.closer   c                 C  s   |    | jS )zReturn embedded event loop.)r   rz   r   rp   rp   rq   get_loop   s   zRunner.get_loopcontextcoroCoroutine[T_Retval]T_Retvalc             
   C  sb  t |std|t durtd|   |du r!| j}|| j	j
|}t t u rVttjtju rVt| j|d}z	ttj| W n tyU   d}Y nw d}d| _z>z| j	|W W |duryttj|u rzttjtj S S S  tjy   | jdk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)ra   iscoroutine
ValueErrorrb   _get_running_loopRuntimeErrorr   r{   runrz   r   	threadingcurrent_threadmain_threadsignal	getsignalSIGINTdefault_int_handlerr   
_on_sigintr|   r   rc   r   getattrKeyboardInterrupt)r~   r   r   tasksigint_handlerr   rp   rp   rq   r      sN   
	
z
Runner.runc                 C  s   | j tju r
td| j tju rd S | jd u r)t | _| j	s(t
| j d| _	n|  | _| jd ur:| j| j t | _tj| _ d S )NzRunner is closedT)rw   rf   ro   r   rn   ry   rb   new_event_looprz   r}   r   rx   	set_debugcontextvarsr   r{   r   rp   rp   rq   r      s   




zRunner._lazy_initr   asyncio.Taskc                 C  sB   |  j d7  _ | j dkr| s|  | jdd  d S t )N   c                   S  s   d S r   rp   rp   rp   rp   rq   <lambda>   s    z#Runner._on_sigint.<locals>.<lambda>)r|   donecancelrz   call_soon_threadsafer   )r~   signumframer   rp   rp   rq   r      s   zRunner._on_sigint)rs   ru   rt   rv   )r   r^   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   )rj   rk   rl   r   r   r   r   r   r   r   r   rp   rp   rp   rq   r^      s    




0r^   r   r   r   r   c                 C  st   t | }|s	d S |D ]}|  q| t j|ddi |D ]}| r&q| d ur7| d| |d qd S )Nreturn_exceptionsTz1unhandled exception during asyncio.run() shutdown)message	exceptionr   )rd   r   r   r   gather	cancelledr   call_exception_handler)r   	to_cancelr   rp   rp   rq   r     s$   

r   c                   sh   d
 fdd}d _  jdu rdS   }tj||fd	}|  z|I dH  W |  dS |  w )z.Schedule the shutdown of the default executor.futureasyncio.futures.Futurer   r   c              
     sX   z j jdd  | jd  W d S  ty+ } z | j| W Y d }~d S d }~ww )NT)wait)_default_executorshutdownr   
set_result	Exceptionset_exception)r   exr   rp   rq   _do_shutdown  s   z0_shutdown_default_executor.<locals>._do_shutdownTN)targetargs)r   r   r   r   )_executor_shutdown_calledr   create_futurer   r&   startjoin)r   r   r   threadrp   r   rq   r     s   
r   r   T_coT)	covariantT_contra)contravariantPosArgsTP
_root_taskzRunVar[asyncio.Task | None]r   c                  C  s   t d } | d ur|  s| S t D ]-}|jr?| s?dd |jD }|D ]}|tu s3t|dd dkr>t | |    S q%qtt	j
t }t|}|rm|j}|rb|jd urb|j}|rb|jd usX|d urmtt	j
|jS |S )Nc                 S  s   g | ]\}}|qS rp   rp   ).0cbr   rp   rp   rq   
<listcomp>?  s    z"find_root_task.<locals>.<listcomp>rk   zuvloop.loop)r   getr   r   
_callbacksr
   r   setr/   asyncioTaskr   _task_statescancel_scope_parent_scope
_host_task)	root_taskr   	callbacksr   stater   rp   rp   rq   find_root_task7  s.   



r   z1WeakKeyDictionary[asyncio.AbstractEventLoop, Any]	_run_varsr   boolc                 C  s$   |   }|dus
J t|ttfv S )zBReturn ``True`` if the task has been started and has not finished.N)get_coror   r   r   )r   r   rp   rp   rq   _task_started]  s   r   excr   c                 C  sD   	 | j rt| j d tr| j d drdS t| jtr | j} q dS )NTr   Cancelled via cancel scope F)r   
isinstancestr
startswith__context__r   r   rp   rp   rq   is_anyio_cancellationk  s   r   c                   @  s   e Zd ZdZejddd3d	d
Zejdfd4ddZd5ddZd6ddZ	e
d7ddZe
d7ddZd8ddZd9dd Zd8d!d"Zd:d;d&d'Ze
d<d(d)Zejd=d+d)Ze
d7d,d-Ze
d7d.d/Ze
d7d0d1Zejd>d2d1Zd#S )?rM   )_active_cancel_called_cancel_handle_cancel_reason_cancelled_caught_child_scopes	_deadliner   r   _pending_uncancellations_shield_tasks_timeout_handleFdeadlineshieldr  floatr  r   r   c                C  
   t | S r   object__new__clsr  r  rp   rp   rq   r    s   
zCancelScope.__new__c                 C  sj   || _ || _d | _t | _d| _d | _d| _d| _d | _	d | _
t | _d | _tjdkr0d| _d S d | _d S )NFr[   r   )r  r  r   r   r   r   r   r   r   r  r   r  r   sysversion_infor  )r~   r  r  rp   rp   rq   r     s   


zCancelScope.__init__c                 C  s   | j rtdttjt  | _}| j| zt	| }W n t
y/   td | }|t	|< Y nw |j| _| |_| jd urJ| jj|  | jj| |   d| _ | jrY| |  | S )Nz;Each CancelScope may only be used for a single 'with' blockT)r   r   r/   r   r   r   r   r  addr   KeyError	TaskStater   r   r   discard_timeoutr   _deliver_cancellation)r~   	host_task
task_staterp   rp   rq   r     s,   


zCancelScope.__enter__r   r   r   r   r   r   c                 C  s  ~| j stdt | jurtd| jd usJ t| j}|d u s(|j| ur,td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sgt|tr|dd \}}|d u rW d | _~dS d| _|d u rW d | _~dS |j}z|||_~w t|trt|rd| _W d | _~dS W d | _~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   c                 S  s   t | tot| S r   )r   r   r   r   rp   rp   rq   r     s   
z&CancelScope.__exit__.<locals>.<lambda>Tr   )r   r   r   r   r   r   r   r  r   r  remover   r   r  _restart_cancellation_in_parentr   %_parent_cancellation_is_visible_to_usr  r   r   re   splitr   r   r   r   )r~   r   r   r   host_task_statecancelleds_caught	remainingr   rp   rp   rq   r     s   



#zCancelScope.__exit__c                 C  s2   | }|d ur|j rdS |jrdS |j}|d usdS NTF)r   r  r   )r~   r   rp   rp   rq   _effectively_cancelled'  s   	z"CancelScope._effectively_cancelledc                 C  s   | j d uo| j o| j jS r   )r   r  r"  r   rp   rp   rq   r  5  s
   
z1CancelScope._parent_cancellation_is_visible_to_usr   c                 C  sH   | j tjkr"t }| | j kr| d d S || j | j| _d S d S )Nzdeadline exceeded)	r  mathinfr   timer   call_atr  r  r   rp   rp   rq   r  =  s   zCancelScope._timeoutoriginc                 C  s   d}t  }| jD ]9}d}|jrq||urA|| ju st|rA|j}t|tjr*|	 sA|
|j ||ju rA|jdurA| jd7  _q| jD ]}|jsT|jsT||pS|}qE|| u ri|rft | j|| _|S d| _|S )aZ  
        Deliver cancellation to directly contained tasks and nested cancel scopes.

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

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

        FTNr   )r   r  _must_cancelr   r   _fut_waiterr   r   r   r   r   r   r  r   r  cancel_calledr  r   	call_soonr   )r~   r'  should_retrycurrentr   waiterscoperp   rp   rq   r  E  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~   r/  rp   rp   rq   r  s  s   

z+CancelScope._restart_cancellation_in_parentNreason
str | Nonec                 C  s   | j sA| jr| j  d | _d| _ dt| d| _t  }r)|  jd| 7  _|r5|  jd| 7  _| jd urC| |  d S d S d S )NTr   xz by z
; reason: )r   r  r   idr   r   r   r  )r~   r1  r   rp   rp   rq   r     s   


zCancelScope.cancelc                 C     | j S r   )r  r   rp   rp   rq   r       zCancelScope.deadlinevaluec                 C  sD   t || _| jd ur| j  d | _| jr| js |   d S d S d S r   )r	  r  r  r   r   r   r  r~   r7  rp   rp   rq   r    s   


c                 C  r5  r   )r   r   rp   rp   rq   r*    r6  zCancelScope.cancel_calledc                 C  r5  r   )r   r   rp   rp   rq   cancelled_caught  r6  zCancelScope.cancelled_caughtc                 C  r5  r   )r  r   rp   rp   rq   r    r6  zCancelScope.shieldc                 C  s(   | j |kr|| _ |s|   d S d S d S r   )r  r  r8  rp   rp   rq   r    s   
r  r	  r  r   r   rM   )r  r	  r  r   )r   rM   r   r   r   r   r   r   r   r   r   r   r   )r'  rM   r   r   r   )r1  r2  r   r   r   r	  r7  r	  r   r   )r7  r   r   r   )rj   rk   rl   	__slots__r#  r$  r  r   r   r   propertyr"  r  r  r  r  r   r  setterr*  r9  r  rp   rp   rp   rq   rM   ~  s6    

b


.	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__rB  
int | Noner   CancelScope | Nonec                 C     || _ || _d S r   rB  r   )r~   rB  r   rp   rp   rq   r        
zTaskState.__init__N)rB  rD  r   rE  )rj   rk   rl   __doc__r?  r   rp   rp   rp   rq   r    s    r  z*WeakKeyDictionary[asyncio.Task, TaskState]r   c                   @  s"   e Zd ZdddZddddZdS )_AsyncioTaskStatusr   asyncio.FuturerB  intc                 C  rF  r   )_future
_parent_id)r~   r   rB  rp   rp   rq   r     rH  z_AsyncioTaskStatus.__init__Nr7  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)rM  r   r   InvalidStateErrorr   r   r/   r   r   rN  r   rB  )r~   r7  r   rp   rp   rq   started  s   
z_AsyncioTaskStatus.started)r   rK  rB  rL  r   )r7  rO  r   r   )rj   rk   rl   r   rQ  rp   rp   rp   rq   rJ    s    
rJ  r\      zCodeType | None_eager_task_factory_codec                   @  s\   e Zd Zd*ddZd+ddZd,ddZ	d-d.ddZdddd/ddZddd d0d(d)ZdS )1	TaskGroupr   r   c                 C  s&   t  | _d| _g | _t | _d | _d S )NF)rM   r   _entered_exceptionsr   r  _on_completed_futr   rp   rp   rq   r     s
   
zTaskGroup.__init__c                   s$   | j rtdd| _ | j  | S )Nz*TaskGroup cannot be entered more than onceT)rV  r   r   r   r   rp   rp   rq   
__aenter__  s   
zTaskGroup.__aenter__r   r   r   r   r   r   r   c                   s|  z|d ur| j   t|ts| j| t }zn| jrqt H}| jra|	 | _
z| j
I d H  W n) tyZ } zd|_| j   |d u sNt|trPt|sP|}W Y d }~nd }~ww d | _
| js$W d    n1 skw   Y  nt I d H  | jrtd| jd |r|W n$ ty } z| j t|||jrW Y d }~W ~~| `dS  d }~ww | j |||W ~~| `S ~~| `w )NTzunhandled errors in a TaskGroup)r   r   r   r   rW  appendr   r  rM   r   rX  r  r   AsyncIOBackendcancel_shielded_checkpointre   BaseExceptionr   type__traceback__)r~   r   r   r   r   
wait_scoper   rp   rp   rq   	__aexit__  sb   



zTaskGroup.__aexit__Nr   Coroutine[Any, Any, T_co]namer  task_status_futureasyncio.Future | NoneTaskHandle[T_co]c                   s   d fdd}rt t }nt  jj}t||}t }| }|  }	rHt	|	dd t
u rHt	|	dd  }
rH|
d	 j}||||jd
n|j||jdt| jdt<  jj  j tjdkry jjd uryt jj | |S )N_taskr   r   r   c              
     s  t jdkr jjd urt|  jj t|  }|jd usJ | |jjv s&J |jj|   j t| =  j	d urQ jsQz j	
d  W n
 tjyP   Y nw z|  }W n# tyz } zt|jtrn|j}t|jtse|}W Y d }~nd }~ww |d urd ur rd S d u s rt|ts j|  jjs j  d S d S | d S d ur sÈtd d S d S d S )Nr\      z2Child exited without calling task_status.started())r  r  r   r   r   future_discard_from_awaited_byr   r  r  rX  r   rP  r   r   r   r   r   r   rW  rZ  r"  r   r   r   )rg  r  r   er~   r   rd  rp   rq   	task_done@  sP   
z#TaskGroup._spawn.<locals>.task_done__code____closure__r   )r   rc  rc  rG  rh  )rg  r   r   r   )r4  r   r   r   rN   r   r   	_run_coroget_task_factoryr   rT  cell_contentsrc  r   r  r   r  r  r  r  future_add_to_awaited_byadd_done_callback)r~   r   rc  rd  rm  rB  handler   wrapper_corofactoryclosurecustom_task_constructorrp   rl  rq   _spawn:  s0   /




zTaskGroup._spawn)rc  r   r   Context | Nonec                C  sb   t |tstd|jj | jr| jjs|  t	d|d ur*|j
| j||dS | j||dS )Nzexpected a coroutine, got ;This task group is not active; no new tasks can be started.rp  )r   r   	TypeError	__class__rl   rV  r   r   r   r   r   r{  )r~   r   rc  r   rp   rp   rq   r     s   
zTaskGroup.create_taskF)rc  return_handlefunc7Callable[[Unpack[PosArgsT]], Coroutine[Any, Any, T_co]]r   Unpack[PosArgsT]r  Literal[False] | Literal[True]r+   c          
        s   | j r| jjstdt }t||}t|t| jj	}t
|||d}| |||}	z|I d H  W n/ tyb   |	jtjju ra|	  tdd |	 I d H  W d     1 s\w   Y   w |rl| |	_|	S | S )Nr}  )task_statusTr  )rV  r   r   r   r   r   rV   rJ  r4  r   rU   r{  r]  statusrN   StatusPENDINGr   rM   r   result_start_value)
r~   r  rc  r  r   r   
final_namer  r   rv  rp   rp   rq   r     s4   

	
zTaskGroup.startr   )r   rU  r;  r   )r   rb  rc  r  rd  re  r   rf  )r   rb  rc  r  r   r|  r   rf  )
r  r  r   r  rc  r  r  r  r   r+   )	rj   rk   rl   r   rY  ra  r{  r   r   rp   rp   rp   rq   rU    s    


	BWrU  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 threadrp  r1   F)superr   r   r  r  rz   r   r"   queuer[  current_time
idle_sincestopping)r~   r   r  r  r  rp   rq   r     s   

zWorkerThread.__init__r   rK  r  r+   r   r   r   r   c                 C  sh   t  | _| js| j|  | s2|d ur+t|tr$t	d}||_
|}|| d S || d S d S )Nzcoroutine raised StopIteration)r[  r  r  r  r  rZ  r   r   StopIterationr   	__cause__r   r   )r~   r   r  r   new_excrp   rp   rq   _report_result  s   

zWorkerThread._report_resultc           
      C  s   t t| jk 	 | j }|d u r	 W d    d S |\}}}}}| sed }d }|t_z$z|j|g|R  }W n t	yL }	 z|	}W Y d }	~	nd }	~	ww W t`nt`w | j
 sc| j| j||| ~~| j  ~~~~~~q1 stw   Y  d S r   )r7   r[  r   r  r   r   r9   current_cancel_scoper   r]  	is_closedr   r  rm  )
r~   itemr   r  r   r   r   r  r   r   rp   rp   rq   r     s8   



zWorkerThread.runNfasyncio.Task | Nonec                 C  sF   d| _ | jd  | j|  z	| j|  W d S  ty"   Y d S w NT)r  r  
put_nowaitr  r  r  r  r   )r~   r  rp   rp   rq   stop  s   zWorkerThread.stop)r   r   r  r  r  r  )r   rK  r  r+   r   r   r   r   r   r   )r  r  r   r   )	rj   rk   rl   MAX_IDLE_TIMEr   r  r   r  __classcell__rp   rp   r  rq   r    s    

r  _threadpool_idle_workerszRunVar[deque[WorkerThread]]_threadpool_workerszRunVar[set[WorkerThread]]F)eqc                   @  s,   e Zd ZU ded< dddd	ZdddZdS )StreamReaderWrapperzasyncio.StreamReader_stream   	max_bytesrL  r   bytesc                   s    | j |I d H }|r|S tr   )r  readr=   )r~   r  datarp   rp   rq   receive.  s
   zStreamReaderWrapper.receiver   c                   s"   | j t  t I d H  d S r   )r  r   r<   r[  
checkpointr   rp   rp   rq   aclose5  s   zStreamReaderWrapper.acloseNr  r  rL  r   r  r   )rj   rk   rl   __annotations__r  r  rp   rp   rp   rq   r  *  s   
 r  c                   @  s>   e Zd ZU ded< edddZded< dddZdddZdS )StreamWriterWrapperzasyncio.StreamWriterr  F)initdefaultr   _closedr  r  r   r   c              
     s   t  I d H  | jjj}z| j| | j I d H  W n ttt	fy; } z| j
r.t|| j r6t| d }~ww |sGt  I d H  d S d S r   )r[  checkpoint_if_cancelledr  	_protocol_pausedwritedrainConnectionResetErrorBrokenPipeErrorr   r  r<   
is_closingr:   r\  )r~   r  stream_pausedr   rp   rp   rq   send?  s"   

zStreamWriterWrapper.sendc                   s$   d| _ | j  t I d H  d S r  )r  r  r   r[  r  r   rp   rp   rq   r  S  s   
zStreamWriterWrapper.acloseNr  r  r   r   r   )rj   rk   rl   r  r   r  r  r  rp   rp   rp   rq   r  :  s
   
 
r  c                   @  s   e Zd ZU ded< ded< ded< ded< d$d
dZd%ddZd$ddZd$ddZd&ddZe	d%ddZ
e	d'ddZe	d(ddZe	d)dd Ze	d)d!d"Zd#S )*Processzasyncio.subprocess.Process_processzStreamWriterWrapper | None_stdinzStreamReaderWrapper | None_stdout_stderrr   r   c              	     s   t ddM}| jr| j I d H  | jr| j I d H  | jr(| j I d H  d|_z	|  I d H  W n tyJ   d|_|   |  I d H   w W d    d S 1 sVw   Y  d S )NTr  F)	rM   r  r  r  r  r  r   r]  killr0  rp   rp   rq   r  `  s&   "zProcess.acloserL  c                   s   | j  I d H S r   )r  r   r   rp   rp   rq   r   r  s   zProcess.waitc                 C     | j   d S r   )r  	terminater   rp   rp   rq   r  u     zProcess.terminatec                 C  r  r   )r  r  r   rp   rp   rq   r  x  r  zProcess.killr   c                 C  s   | j | d S r   )r  send_signal)r~   r   rp   rp   rq   r  {     zProcess.send_signalc                 C     | j jS r   )r  pidr   rp   rp   rq   r  ~     zProcess.pidrD  c                 C  r  r   )r  
returncoder   rp   rp   rq   r    r  zProcess.returncodeabc.ByteSendStream | Nonec                 C  r5  r   )r  r   rp   rp   rq   stdin  r6  zProcess.stdinabc.ByteReceiveStream | Nonec                 C  r5  r   )r  r   rp   rp   rq   stdout  r6  zProcess.stdoutc                 C  r5  r   )r  r   rp   rp   rq   stderr  r6  zProcess.stderrNr   r   rL  )r   rL  r   r   r   rD  )r   r  )r   r  )rj   rk   rl   r  r  r   r  r  r  r@  r  r  r  r  r  rp   rp   rp   rq   r  Y  s(   
 




r  r  set[Process]rg  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.NrR  )r  r  r   get_event_loop_policyget_child_watcherNotImplementedErrorcopyr  r  r  
_transportr   r  r  r  remove_child_handlerr  )r  rg  child_watcherprocessrp   rp   rq   '_forcibly_shutdown_process_pool_on_exit  s$   

r  set[abc.Process]c                   sl   zt tjI dH  W dS  tjy5   |  } | D ]}|jdu r%|  q| D ]	}| I dH  q(Y dS w )z
    Shuts down worker processes belonging to this event loop.

    NOTE: this only works when the event loop was started using asyncio.run() or
    anyio.run().

    N)	r	   r#  r$  r   r   r  r  r  r  )r  r  rp   rp   rq   _shutdown_process_pool_on_exit  s   	
r  c                   @  sz   e Zd ZU ded< ded< ded< dZded< d	Zd
ed< d ddZd!ddZd"ddZd#ddZ	d$ddZ
d$ddZdS )%StreamProtocolzdeque[bytes]
read_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   r/   	Transportset_write_buffer_limitsr~   r  rp   rp   rq   connection_made  s
   


zStreamProtocol.connection_mader   c                 C  s"   |r|| _ | j  | j  d S r   )r   r  r   r  r~   r   rp   rp   rq   connection_lost  s   
zStreamProtocol.connection_lostr  r  c                 C  s   | j t| | j  d S r   )r  rZ  r  r  r   )r~   r  rp   rp   rq   data_received  s   zStreamProtocol.data_receivedru   c                 C  s   d| _ | j  dS r  )r  r  r   r   rp   rp   rq   eof_received  s   
zStreamProtocol.eof_receivedc                 C     t  | _d S r   )r   rE   r  r   rp   rp   rq   pause_writing  r  zStreamProtocol.pause_writingc                 C  r  r   r  r   r   rp   rp   rq   resume_writing  r  zStreamProtocol.resume_writingr  r  r   r   r   r  r   r   )r  r  r   r   )r   ru   r   )rj   rk   rl   r  r   r  r  r  r  r  r  r  rp   rp   rp   rq   r    s   
 




r  c                   @  sv   e Zd ZU ded< ded< ded< ded< dZded	< d ddZd!ddZd"ddZd#ddZd$ddZ	d$ddZ
dS )%DatagramProtocolz#deque[tuple[bytes, IPSockAddrType]]r  r  r  r  closed_eventNr  r   r  r  r   r   c                 C  s8   t dd| _t | _t | _t | _| j  d S )Nd   )maxlen)r   r  r   rE   r  r  r  r   r  rp   rp   rq   r    s
   


z DatagramProtocol.connection_mader   c                 C  s"   | j   | j  | j  d S r   )r  r   r  r  r  rp   rp   rq   r    s   

z DatagramProtocol.connection_lostr  r  addrrP   c                 C  s&   t |}| j||f | j  d S r   )r@   r  rZ  r  r   )r~   r  r  rp   rp   rq   datagram_received  s   z"DatagramProtocol.datagram_receivedr   c                 C  s
   || _ d S r   )r   r  rp   rp   rq   error_received     
zDatagramProtocol.error_receivedc                 C  r  r   )r  clearr   rp   rp   rq   r    r  zDatagramProtocol.pause_writingc                 C  r  r   r  r   rp   rp   rq   r  
  r  zDatagramProtocol.resume_writingr  r  )r  r  r  rP   r   r   )r   r   r   r   r   )rj   rk   rl   r  r   r  r  r  r  r  r  rp   rp   rp   rq   r     s   
 




r   c                   @  sN   e Zd ZdddZedd	d
ZddddZdddZdddZdddZ	dS ) SocketStreamr  asyncio.Transportprotocolr  c                 C  *   || _ || _td| _td| _d| _d S Nreading from
writing toFr  r  rH   _receive_guard_send_guardr  r~   r  r  rp   rp   rq   r     s
   


zSocketStream.__init__r   socket.socketc                 C     | j dS Nsocketr  get_extra_infor   rp   rp   rq   _raw_socket     zSocketStream._raw_socketr  r  rL  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 sw   Y  |S r   )r  r  r  is_setr  r  r  resume_readingr   pause_readingr[  r  r  popleft
IndexErrorr  r<   r   r:   r=   len
appendleftr  )r~   r  chunkleftoverrp   rp   rq   r    sB   



 
  zSocketStream.receiver  r   c                   s   | j G t I d H  | jrt| jjd urt| jjz| j	| W n t
y9 } z	| j r4t| d }~ww | jj I d H  W d    d S 1 sNw   Y  d S r   )r  r[  r  r  r<   r  r   r:   r  r  r   r  r  r   )r~   r  r   rp   rp   rq   r  =  s"   

"zSocketStream.sendc                   s(   z| j   W d S  ty   Y d S w r   )r  	write_eofOSErrorr   rp   rp   rq   send_eofP  s   zSocketStream.send_eofc                   s^   d| _ | j s-z| j  W n	 ty   Y nw | j  tdI d H  | j  d S d S NTr   )r  r  r  r%  r&  r   r	   abortr   rp   rp   rq   r  V  s   

zSocketStream.acloseN)r  r
  r  r  r   r  r  r  r  r   )
rj   rk   rl   r   r@  r  r  r  r'  r  rp   rp   rp   rq   r	    s    

#
r	  c                   @  s`   e Zd ZU dZded< dZded< dZddd	ZedddZ	dddZ
dddZdddZdS )_RawSocketMixinNre  _receive_future_send_futureF
raw_socketr  c                 C  s   || _ td| _td| _d S )Nr  r  )_RawSocketMixin__raw_socketrH   r  r  r~   r.  rp   rp   rq   r   h  s   
z_RawSocketMixin.__init__r   c                 C  r5  r   )r/  r   rp   rp   rq   r  m  r6  z_RawSocketMixin._raw_socketr   asyncio.AbstractEventLooprK  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~   rp   rq   callbackr     z6_RawSocketMixin._wait_until_readable.<locals>.callbackr  r  r   r   )r   r   r,  
add_readerr/  r   ru  r~   r   r7  r  rp   r6  rq   _wait_until_readableq  
   
z$_RawSocketMixin._wait_until_readablec                   r2  )Nr  r  r   r   c                   r3  r   )r-  remove_writerr/  r5  r6  rp   rq   r7  |  r8  z6_RawSocketMixin._wait_until_writable.<locals>.callbackr9  )r   r   r-  
add_writerr/  r   ru  r;  rp   r6  rq   _wait_until_writable{  r=  z$_RawSocketMixin._wait_until_writabler   c                   sV   | j s'd| _ | j dkr| j  | jr| jd  | jr)| jd  d S d S d S )NT)_closingr/  filenor   r,  r   r-  r   rp   rp   rq   r    s   
z_RawSocketMixin.acloser.  r  r*  )r   r1  r   rK  r   )rj   rk   rl   r,  r  r-  rB  r   r@  r  r<  r@  r  rp   rp   rp   rq   r+  c  s   
 




r+  c                   @  s@   e Zd ZdddZddd	d
ZdddZdddZdddZdS )UNIXSocketStreamr   r   c                   s<   | j  | jtj W d    d S 1 sw   Y  d S r   )r  r  r   r  SHUT_WRr   rp   rp   rq   r'    s   "zUNIXSocketStream.send_eofr  r  rL  r  c                   s   t  }t I d H  | j> 	 z| j|}W n% ty)   | |I d H  Y n" ty= } z	| j	r6t
d t|d }~ww |sBt|W  d    S q1 sOw   Y  d S r   )r   r[  r  r  r  recvBlockingIOErrorr<  r&  rB  r<   r:   r=   )r~   r  r   r  r   rp   rp   rq   r    s*   zUNIXSocketStream.receiver  c                   s   t  }t I d H  | jM t|}|rSz| j|}W n% ty.   | |I d H  Y n t	yB } z	| j
r;td t|d }~ww ||d  }|sW d    d S W d    d S 1 s^w   Y  d S r   )r   r[  r  r  
memoryviewr  r  rH  r@  r&  rB  r<   r:   )r~   r  r   view
bytes_sentr   rp   rp   rq   r    s*   "zUNIXSocketStream.sendmsglenmaxfdstuple[bytes, list[int]]c                   sl  t |tr
|dk rtdt |tr|dk rtdt }td}t I d H  | jJ 	 z| j	|t
||j \}}}}W n% tyS   | |I d H  Y n tyg }	 z	| jr`td t|	d }	~	ww |sn|sntnq/W d    n1 szw   Y  |D ].\}
}}|
t
jks|t
jk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   rL  r   r   arrayr[  r  r  r  recvmsgr  CMSG_LENitemsizerH  r<  r&  rB  r<   r:   r=   
SOL_SOCKET
SCM_RIGHTSr   	frombytesr!  list)r~   rL  rM  r   fdsr   ancdataflagsr  r   
cmsg_level	cmsg_type	cmsg_datarp   rp   rq   receive_fds  sN   
&zUNIXSocketStream.receive_fdsr   rX  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 emptyrO  )r   r   r   rL  rZ  r    rC  rP  r[  r  r  r  sendmsgr  rT  rU  rH  r@  r&  rB  r<   r:   )r~   r   rX  r   filenosfdfdarrayr   rp   rp   rq   send_fds  sB   

"zUNIXSocketStream.send_fdsNr   r  r  r  )rL  rL  rM  rL  r   rN  )r   r  rX  r_  r   r   )rj   rk   rl   r'  r  r  r^  rd  rp   rp   rp   rq   rE    s    


'rE  c                   @  sJ   e Zd ZU dZded< dZdddZedd
dZdddZ	dddZ
dS )TCPSocketListenerNrE  _accept_scopeFr.  r  c                 C  s$   || _ ttjt | _td| _d S )Naccepting connections from)_TCPSocketListener__raw_socketr/   r   BaseEventLoopr   rz   rH   _accept_guardr0  rp   rp   rq   r   	  s   zTCPSocketListener.__init__r   c                 C  r5  r   )rh  r   rp   rp   rq   r    r6  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<   rj  r[  r  rM   rf  rz   sock_acceptr  r   r   r4  r   r  
setsockoptr  IPPROTO_TCPTCP_NODELAYconnect_accepted_socketr  r	  )r~   client_sock_addrr  r  rp   rp   rq   accept  s8   

zTCPSocketListener.acceptr   c              	     sh   | j rd S d| _ | jr-z	| j| j W n ttfy    Y nw | j  tdI d H  | j	  d S r(  )
r  rf  rz   r4  r  r   r  r   r	   r   r   rp   rp   rq   r  /  s   
zTCPSocketListener.acloserD  r*  r   rk  r   )rj   rk   rl   rf  r  r  r   r@  r  rt  r  rp   rp   rp   rq   re    s   
 

re  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 )Nrg  F)_UNIXSocketListener__raw_socketr   rz   rH   rj  r  r0  rp   rp   rq   r   B  s   

zUNIXSocketListener.__init__r   rk  c                   s   t  I d H   jU 	 z j \}}|d t|W W  d    S  tyJ   t	 } j
 j|jd  | fdd |I d H  Y n ty^ } z	 jrWtd t|d }~ww q1 scw   Y  d S )NTFc                   s    j  jS r   )rz   r4  rw  _r   rp   rq   r   T  s    z+UNIXSocketListener.accept.<locals>.<lambda>)r[  r  rj  rw  rt  setblockingrE  rH  r   r   rz   r:  r   ru  r&  r  r<   r:   )r~   rr  ry  r  r   rp   r   rq   rt  H  s0   

zUNIXSocketListener.acceptr   c                   s   d| _ | j  d S r  )r  rw  r   r   rp   rp   rq   r  ]  s   zUNIXSocketListener.aclosec                 C  r5  r   )rw  r   rp   rp   rq   r  a  r6  zUNIXSocketListener._raw_socketNrD  ru  r   r*  )rj   rk   rl   r   rt  r  r@  r  rp   rp   rp   rq   rv  A  s    


rv  c                   @  sB   e Zd ZdddZedd	d
ZdddZdddZdddZdS )	UDPSocketr  asyncio.DatagramTransportr  r   c                 C  r  r  r  r  rp   rp   rq   r   g  
   


zUDPSocket.__init__r   r  c                 C  r  r  r  r   rp   rp   rq   r  p  r  zUDPSocket._raw_socketr   c                   2   d| _ | j s| j  | jj I d H  d S r  r  r  r  r   r  r  r   r   rp   rp   rq   r  t  
   

zUDPSocket.aclosetuple[bytes, IPSockAddrType]c              	     s   | j ? t I d H  | jjs$| j s$| jj  | jj	 I d H  z| jj
 W W  d    S  tyB   | jr?td td w 1 sFw   Y  d S r   r  r[  r  r  r  r  r  r  r  r   r  r   r  r<   r:   r   rp   rp   rq   r  {  s   
zUDPSocket.receiver  rR   c                   sr   | j + t I d H  | jj I d H  | jrt| j	 r!t
| jj|  W d    d S 1 s2w   Y  d S r   r  r[  r  r  r  r   r  r<   r  r  r:   sendtor~   r  rp   rp   rq   r       
"zUDPSocket.sendNr  r|  r  r   r*  r   )r   r  )r  rR   r   r   	rj   rk   rl   r   r@  r  r  r  r  rp   rp   rp   rq   r{  f  s    
	

r{  c                   @  sB   e Zd ZdddZedd	d
ZdddZdddZdddZdS )ConnectedUDPSocketr  r|  r  r   c                 C  r  r  r  r  rp   rp   rq   r     r}  zConnectedUDPSocket.__init__r   r  c                 C  r  r  r  r   rp   rp   rq   r    r  zConnectedUDPSocket._raw_socketr   c                   r~  r  r  r   rp   rp   rq   r    r  zConnectedUDPSocket.acloser  c              	     s   | j D t I d H  | jjs$| j s$| jj  | jj	 I d H  z| jj
 }W n ty<   | jr9td td w |d W  d    S 1 sKw   Y  d S r  r  )r~   packetrp   rp   rq   r    s   $zConnectedUDPSocket.receiver  c                   sr   | j + t I d H  | jj I d H  | jrt| j	 r!t
| j| W d    d S 1 s2w   Y  d S r   r  r  rp   rp   rq   r    r  zConnectedUDPSocket.sendNr  r*  r   r   r  r  r  rp   rp   rp   rq   r    s    
	

r  c                   @      e Zd Zd
ddZdddZd	S )UNIXDatagramSocketr   rS   c                      t  }t I d H  | j: 	 z| jd}W n% ty)   | |I d H  Y n ty= } z	| j	r6t
d t|d }~ww |W  d    S q1 sKw   Y  d S NTr  )r   r[  r  r  r  recvfromrH  r<  r&  rB  r<   r:   r~   r   r  r   rp   rp   rq   r    &   zUNIXDatagramSocket.receiver  r   c                   s   t  }t I d H  | j: 	 z| jj|  W n% ty)   | |I d H  Y n ty= } z	| j	r6t
d t|d }~ww 	 W d    d S q1 sKw   Y  d S r   )r   r[  r  r  r  r  rH  r@  r&  rB  r<   r:   r~   r  r   r   rp   rp   rq   r    r  zUNIXDatagramSocket.sendN)r   rS   )r  rS   r   r   rj   rk   rl   r  r  rp   rp   rp   rq   r        
r  c                   @  r  )ConnectedUNIXDatagramSocketr   r  c                   r  r  )r   r[  r  r  r  rG  rH  r<  r&  rB  r<   r:   r  rp   rp   rq   r    r  z#ConnectedUNIXDatagramSocket.receiver  r   c                   s   t  }t I d H  | j: 	 z| j| W n% ty)   | |I d H  Y n ty= } z	| j	r6t
d t|d }~ww 	 W d    d S q1 sKw   Y  d S r   )r   r[  r  r  r  r  rH  r@  r&  rB  r<   r:   r  rp   rp   rq   r    r  z ConnectedUNIXDatagramSocket.sendNr  r  r  rp   rp   rp   rq   r    r  r  read_eventsz'RunVar[dict[int, asyncio.Future[bool]]]_read_eventswrite_events_write_eventsc                   @  sL   e Zd ZdZdddZdddZddd	ZdddZdddZdddZ	dS )rE   )_eventr   c                 C  r
  r   r  r  rp   rp   rq   r     r  zEvent.__new__r   c                 C  r  r   )r   rE   r  r   rp   rp   rq   r   #  r  zEvent.__init__c                 C  r  r   )r  r   r   rp   rp   rq   r   &  r  z	Event.setr   c                 C  
   | j  S r   )r  r  r   rp   rp   rq   r  )  r  zEvent.is_setc                   s0   |   rt I d H  d S | j I d H  d S r   )r  r[  r  r  r   r   rp   rp   rq   r   ,  s   z
Event.waitr3   c                 C  s   t t| jjS r   )r3   r!  r  _waitersr   rp   rp   rq   
statistics2  r  zEvent.statisticsN)r   rE   r   r<  )r   r3   )
rj   rk   rl   r?  r  r   r   r  r   r  rp   rp   rp   rq   rE     s    




rE   c                   @  sb   e Zd ZdZdddddZdddd
dZdddZdddZdddZdddZ	dddZ
dS )rG   )_fast_acquire_owner_taskr  Ffast_acquirer  r   r   c                C  r
  r   r  r  r  rp   rp   rq   r  9  r  zLock.__new__r   c                C  s   || _ d | _t | _d S r   )r  r  r   r  )r~   r  rp   rp   rq   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 d S  t
yw   | rrz| j| W   tyq   Y  w |    w Nz)Attempted to acquire an already held Lock)r/   r   r   r   r  r  r[  r  r  r\  r   releaser   r   rZ  r   r  r   )r~   r   futr  rp   rp   rq   acquireA  sB   
zLock.acquirec                 C  s>   t tjt }| jd u r| js|| _d S | j|u rtdtr  )r/   r   r   r   r  r  r   r?   )r~   r   rp   rp   rq   acquire_nowaite  s   
zLock.acquire_nowaitc                 C  s
   | j d uS r   )r  r   rp   rp   rq   lockedp  r  zLock.lockedc                 C  sP   | j t kr
td| jr#| j \}}| rq
|| _ |d  d S d | _ d S )Nz)The current task is not holding this lock)r  r   r   r  r  r   r   )r~   r   r  rp   rp   rq   r  s  s   

zLock.releaser4   c                 C  s*   | j rt| j nd }t|  |t| jS r   )r  AsyncIOTaskInfor4   r  r!  r  )r~   	task_inforp   rp   rq   r    s   zLock.statisticsN)r  r   r   rG   )r  r   r   r   r   r<  )r   r4   )rj   rk   rl   r?  r  r   r  r  r  r  r  rp   rp   rp   rq   rG   6  s    

$

rG   c                      s   e Zd ZdZddddddZdddd fddZd ddZd ddZd ddZe	d!ddZ
e	d"ddZd#ddZ  ZS )$rK   )_value
_max_valuer  r  NF	max_valuer  initial_valuerL  r  rD  r  r   r   c                C  r
  r   r  r  r  r  r  rp   rp   rq   r    s   
zSemaphore.__new__c                  s.   t  j||d || _|| _|| _t | _d S )N)r  )r  r   r  r  r  r   r  )r~   r  r  r  r  rp   rq   r     s
   zSemaphore.__init__r   c                   s   | j dkr3| js3t I d H  |  j d8  _ | js1z
t I d H  W d S  ty0   |    w d S t	 }| j
| z|I d H  W d S  tyg   | rbz| j| W   tya   Y  w |    w Nr   r   )r  r  r[  r  r  r\  r   r  r   r   rZ  r   r  r   r~   r  rp   rp   rq   r    s:   zSemaphore.acquirec                 C  s    | j dkrt|  j d8  _ d S r  )r  r?   r   rp   rp   rq   r    s   
zSemaphore.acquire_nowaitc                 C  sX   | j d ur| j| j krtd| jr#| j }| rq|d  d S |  jd7  _d S )Nz!semaphore released too many timesr   )r  r  r   r  r  r   r   r  rp   rp   rq   r    s   

zSemaphore.releasec                 C  r5  r   )r  r   rp   rp   rq   r7    r6  zSemaphore.valuec                 C  r5  r   )r  r   rp   rp   rq   r    r6  zSemaphore.max_valuerI   c                 C  s   t t| jS r   )rI   r!  r  r   rp   rp   rq   r    r  zSemaphore.statistics)r  rL  r  rD  r  r   r   rK   )r  rL  r  rD  r  r   r   r  r  )r   rI   )rj   rk   rl   r?  r  r   r  r  r  r@  r7  r  r  r  rp   rp   r  rq   rK     s     


rK   c                   @  s   e Zd ZdZd1ddZd2ddZd3d
dZd4ddZed5ddZ	e	j
d6ddZ	ed7ddZed5ddZd3ddZd3dd Zd8d#d$Zd3d%d&Zd8d'd(Zd3d)d*Zd8d+d,Zd9d.d/Zd0S ):rC   )_total_tokens
_borrowers_wait_queuetotal_tokensr	  r   c                 C  r
  r   r  r  r  rp   rp   rq   r    r  zCapacityLimiter.__new__c                 C  s    d| _ t | _t | _|| _d S r  )r  r   r  r   r  r  )r~   r  rp   rp   rq   r     s   
zCapacityLimiter.__init__r   c                   s   |   I d H  d S r   )r  r   rp   rp   rq   rY       zCapacityLimiter.__aenter__r   r   r   r   r   r   c                   s   |    d S r   )r  r   rp   rp   rq   ra    s   zCapacityLimiter.__aexit__c                 C  r5  r   )r  r   rp   rp   rq   r    r6  zCapacityLimiter.total_tokensr7  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   rL  r#  isinfr~  r   maxr  r  popitemr   )r~   r7  waiters_to_notifyeventrp   rp   rq   r    s   
rL  c                 C  s
   t | jS r   )r!  r  r   rp   rp   rq   borrowed_tokens     
zCapacityLimiter.borrowed_tokensc                 C  s   | j t| j S r   )r  r!  r  r   rp   rp   rq   available_tokens     z CapacityLimiter.available_tokensc                 C  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  rp   rp   rq   _notify_next_waiter  s   z#CapacityLimiter._notify_next_waiterc                 C     |  t  d S r   )acquire_on_behalf_of_nowaitr   r   rp   rp   rq   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  rp   rp   rq   r    s   
z+CapacityLimiter.acquire_on_behalf_of_nowaitc                   s   |  t I d H S r   )acquire_on_behalf_ofr   r   rp   rp   rq   r  *  r  zCapacityLimiter.acquirec                   s   t  I d H  z| | W n: tyI   t }|| j|< z	| I d H  W n ty?   | j	|d  |
 r>|    w | j| Y d S w z
t  I d H  W d S  ty`   |    w r   )r[  r  r  r?   r   rE   r  r   r]  popr  r  r  r  r\  r  )r~   r  r  rp   rp   rq   r  -  s.   
z$CapacityLimiter.acquire_on_behalf_ofc                 C  r  r   )release_on_behalf_ofr   r   rp   rp   rq   r  E  r  zCapacityLimiter.releasec                 C  s6   z| j | W n ty   tdd w |   d S )Nz@this borrower isn't holding any of this CapacityLimiter's tokens)r  r  r  r   r  r  rp   rp   rq   r  H  s   z$CapacityLimiter.release_on_behalf_ofr2   c                 C  s   t | j| jt| jt| jS r   )r2   r  r  tupler  r!  r  r   rp   rp   rq   r  R  s   zCapacityLimiter.statisticsN)r  r	  r   rC   )r  r	  r   r   r=  r>  r  )r  r  r   r   )r   r2   )rj   rk   rl   r?  r  r   rY  ra  r@  r  rA  r  r  r  r  r  r  r  r  r  r  rp   rp   rp   rq   rC     s,    











rC   _default_thread_limiterzRunVar[CapacityLimiter]c                   @  sH   e Zd ZdddZdd	d
ZdddZdddZdddZdddZdS )_SignalReceiversignalstuple[Signals, ...]c                 C  s,   || _ t | _t | _t | _t | _	d S r   )
_signalsr   rz   r   _signal_queuer   r   rM  r   _handled_signals)r~   r  rp   rp   rq   r   d  s
   
z_SignalReceiver.__init__r   r#   r   r   c                 C  s*   | j | | j s| jd  d S d S r   )r  rZ  rM  r   r   )r~   r   rp   rp   rq   _deliverk  s   
z_SignalReceiver._deliverc                 C  s2   t | jD ]}| j|| j| | j| q| S r   )r   r  rz   add_signal_handlerr  r  r  )r~   sigrp   rp   rq   r   p  s   z_SignalReceiver.__enter__r   r   r   r   r   r   c                 C  s   | j D ]}| j| qd S r   )r  rz   remove_signal_handler)r~   r   r   r   r  rp   rp   rq   r   w  s   
z_SignalReceiver.__exit__c                 C  s   | S r   rp   r   rp   rp   rq   	__aiter__  s   z_SignalReceiver.__aiter__c                   s6   t  I d H  | jst | _| jI d H  | j S r   )r[  r  r  r   r   rM  r  r   rp   rp   rq   	__anext__  s   

z_SignalReceiver.__anext__N)r  r  )r   r#   r   r   )r   r  r   )r   r#   )	rj   rk   rl   r   r  r   r   r  r  rp   rp   rp   rq   r  c  s    




	r  c                      s(   e Zd Zd	 fddZd
ddZ  ZS )r  r   r   c                   s`   t |}|d u rd }n|j}| }|d usJ dt t||| | t	|| _
d S )Nz&created TaskInfo from a completed Task)r   r   rB  r   r  r   r4  get_nameweakrefrefrg  )r~   r   r  rB  r   r  rp   rq   r     s   
zAsyncIOTaskInfo.__init__r   r   c                 C  sX   |    }sdS |jrdS t|jtjr|j rdS t| }r*|j	 }r*|j
S dS )NFT)rg  r(  r   r)  r   r   r   r   r   r   r"  )r~   r   r  r   rp   rp   rq   has_pending_cancellation  s   
z(AsyncIOTaskInfo.has_pending_cancellation)r   r   r<  )rj   rk   rl   r   r  r  rp   rp   r  rq   r    s    r  c                   @  s   e Zd ZU ded< ddddd@ddZdAddZdBddZdCddZdDddZdEd#d$Z	dFd%d&Z
dGd)d*ZdHd2d3ZdId7d8ZdJd:d;ZdKd>d?ZdS )L
TestRunnerzBMemoryObjectSendStream[tuple[Awaitable[Any], asyncio.Future[Any]]]_send_streamNF)rs   
use_uvlooprt   rs   ru   r  r   rt   rv   r   r   c                C  sR   |r|d u rt jdkrdd l}|j}ndd l}|j}t||d| _g | _d | _d S )Nwin32r   rr   )	r  platformuvloopr   winloopr^   _runnerrW  _runner_task)r~   rs   r  rt   r  r  rp   rp   rq   r     s   

zTestRunner.__init__c                 C  s   | j   |  | j | S r   )r  r   r   set_exception_handler_exception_handlerr   rp   rp   rq   r     s   
zTestRunner.__enter__r   r   r   r   r   r   c                 C  s   | j ||| d S r   )r  r   r   rp   rp   rq   r     s   zTestRunner.__exit__r   c                 C  r  r   )r  r   r   rp   rp   rq   r     r  zTestRunner.get_loopc                 C  s$   zt   W dS  ty   Y dS w r!  )r   r   r   r   rp   rp   rq   
is_running  s   zTestRunner.is_runningr   r1  r   dict[str, Any]c                 C  s2   t |dtr| j|d  d S || d S )Nr   )r   r   r   rW  rZ  default_exception_handler)r~   r   r   rp   rp   rq   r    s   zTestRunner._exception_handlerc                 C  s>   | j r| j g }| _ t|dkr|d |rtd|d S d S )Nr   r   z6Multiple exceptions occurred in asynchronous callbacks)rW  r!  re   )r~   rc   rp   rp   rq   _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   rp   rp   rq   _run_tests_and_fixtures  s0   

Pz"TestRunner._run_tests_and_fixturesr   Callable[P, Awaitable[T_Retval]]r   P.argskwargsP.kwargsr   c                  sr   | j stttt tjf  d\| _}|  	| 
|| _ ||i |}|   }| j||f |I d H S rl  )r  rA   r  r   r+   r   r   r  r   r   r  r   send_nowait)r~   r  r   r  r  r   r   rp   rp   rq   _call_in_runner_task	  s   

zTestRunner._call_in_runner_taskfixture_func,Callable[..., AsyncGenerator[T_Retval, Any]]Iterable[T_Retval]c                 c  s    |di |}|   | |jd }|   |V  z|   | |jd  W n ty7   |   Y d S w |   |  td)Nz$Async generator fixture did not stoprp   )r   r   r  asendr  StopAsyncIterationr  r   )r~   r  r  asyncgenfixturevaluerp   rp   rq   run_asyncgen_fixture#	  s    zTestRunner.run_asyncgen_fixture,Callable[..., Coroutine[Any, Any, T_Retval]]c                 C  s(   |   | j|fi |}|   |S r   )r   r   r  r  )r~   r  r  r  rp   rp   rq   run_fixture:	  s
   zTestRunner.run_fixture	test_func'Callable[..., Coroutine[Any, Any, Any]]c                 C  s   z|   | j|fi | W nV ty( } z| j| W Y d }~nCd }~w tyf   | jd ure| j se| j	  | j
  zz
|   | j W n	 tyV   Y nw W d | _ W d | _ d | _w  w |   d S r   )r   r   r  r   rW  rZ  r]  r  r   r   r  r   r   r  )r~   r  r  r   rp   rp   rq   run_testE	  s4   

zTestRunner.run_test)rs   ru   r  r   rt   rv   r   r   )r   r  r   r   r<  )r   r1  r   r  r   r   r   )r  r  r   r   )r  r  r   r  r  r  r   r   )r  r  r  r  r   r  )r  r  r  r  r   r   )r  r  r  r  r   r   )rj   rk   rl   r  r   r   r   r   r  r  r  r  r  r  r  r  rp   rp   rp   rq   r    s"   
 









r  c                   @  s  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ddKdLZeddMdNZeddWdXZedd[d\Ze	3dddcddZeddhdiZeddmdnZeddodpZeddvdw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*edddZ+edddZ,edddZ-edddZ.edddZ/edddZ0edddZ1edddZ2d3S )r[  r  1Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]]r   tuple[Unpack[PosArgsT]]r  r  optionsr   r   c                   s   t d fdd}|dd }|dd }|d u r6|ddr6tjd	kr/d
d l}|j}nd
d l}	|	j}t||d}
|
| W  d    S 1 sMw   Y  d S )Nr   r   c                    sL   t tjt } | t td d t| < z  I d H W t| = S t| = w r   )r/   r   r   r   set_namerV   r  r   )r   r   r  rp   rq   wrapperh	  s   z#AsyncIOBackend.run.<locals>.wrapperrs   rt   r  Fr  r   rr   )r   r   )	r   r   r  r  r  r   r  r^   r   )r  r  r   r  r
  r  rs   rt   r  r  runnerrp   r  rq   r   `	  s   


$zAsyncIOBackend.runr  c                 C     t  S r   )r   r  rp   rp   rq   current_token	  r6  zAsyncIOBackend.current_tokenr	  c                 C  s
   t   S r   )r   r%  r  rp   rp   rq   r  	  r  zAsyncIOBackend.current_timetype[BaseException]c                 C  s   t S r   )r   r  rp   rp   rq   cancelled_exception_class	  s   z(AsyncIOBackend.cancelled_exception_classr   c                   s   t dI d H  d S r  r	   r  rp   rp   rq   r  	     zAsyncIOBackend.checkpointc                   sn   t  }|d u r
d S zt| j}W n
 ty   Y d S w |r5|jr)tdI d H  n|jr.d S |j}|sd S d S r  )r   r   r   r  r*  r	   r  r   )r  r   r   rp   rp   rq   r  	  s    z&AsyncIOBackend.checkpoint_if_cancelledc                   s@   t dd tdI d H  W d    d S 1 sw   Y  d S )NTr  r   )rM   r	   r  rp   rp   rq   r\  	  s   "z)AsyncIOBackend.cancel_shielded_checkpointdelayc                   s   t |I d H  d S r   r  )r  r  rp   rp   rq   r	   	  r  zAsyncIOBackend.sleepFr  r  r  r   rM   c                C  s   t ||dS )Nr  rL   r  rp   rp   rq   create_cancel_scope	  s   z"AsyncIOBackend.create_cancel_scopec                 C  s   t   }d u r
tjS zt| j}W n ty   tj Y S w tj}|r>t||j}|jr3tj }	 |S |j	r9	 |S |j
}|s#|S r   )r   r#  r$  r   r   r  minr  r   r  r   )r  r   r   r  rp   rp   rq   current_effective_deadline	  s(   

z)AsyncIOBackend.current_effective_deadlineabc.TaskGroupc                 C  r  r   )rU  r  rp   rp   rq   create_task_group	  r6  z AsyncIOBackend.create_task_group	abc.Eventc                 C  r  r   rD   r  rp   rp   rq   create_event	  r6  zAsyncIOBackend.create_eventr  abc.Lockc                C  s
   t |dS )Nr  rF   r  rp   rp   rq   create_lock	  r  zAsyncIOBackend.create_lockNr  r  rL  r  rD  abc.Semaphorec                C  s   t |||dS )Nr  rJ   r  rp   rp   rq   create_semaphore	  s   zAsyncIOBackend.create_semaphorer  abc.CapacityLimiterc                 C     t |S r   rB   r  rp   rp   rq   create_capacity_limiter	  r  z&AsyncIOBackend.create_capacity_limiter&Callable[[Unpack[PosArgsT]], T_Retval]abandon_on_cancellimiterabc.CapacityLimiter | Nonec              	     s  |   I d H  z
t }t }W n ty+   t }t }t| t| Y nw |p1|  4 I d H  t| d}t	j
t  }t }	|sct|	||}
|
  ||
 |	j|
jt d n&| }
|  }|r||d j tjk rxn| }|j|j |  |smt }|td  |s|jd u r|}n|j}|
j |||||f |I d H W  d    W  d   I d H  S 1 sw   Y  W d   I d H  d S 1 I d H sw   Y  d S )Nr  r   r   )!r  r  r   r  LookupErrorr   r   current_default_thread_limiterrM   r   r   r   r   r  r   r  ru  r  r   r   r  r  r  r  r  r   remove_done_callbackr   r   r8   r   r  r  )r  r  r   r%  r&  r  r  r/  r   r   workernowexpired_workerr   worker_scoperp   rp   rq   run_sync_in_worker_thread	  s\   


.z(AsyncIOBackend.run_sync_in_worker_threadc                 C  sH   t j}|d ur"|jrtdt|d|jrd S |j}|d usd S d S )Nr   r3  )r9   r  r*  r   r4  r  r   )r  r/  rp   rp   rq   check_cancelled"
  s   zAsyncIOBackend.check_cancelledr  tokenr   c                   sj   d	 fdd}t d|ptjj}| rtt }|td t	tdd |jt
j| |d}| S )
Nr   r   c               
     s   d} d urt tjt }td t|< j| z*z  I d H W W d ur0j| S S  t	yE } z	t
j	t|d d }~ww d urQj| w w r  )r/   r   r   r   r  r   r  r  r  r   
concurrentfuturesr   )__tracebackhide__r   r   r   r  r/  rp   rq   task_wrapper5
  s$   z:AsyncIOBackend.run_async_from_thread.<locals>.task_wrapperr   r   r  r   )r   r   )r/   r9   r  native_tokenr  r>   r   r   r8   r   r   run_coroutine_threadsafer  )r  r  r   r1  r6  r   r   r  rp   r5  rq   run_async_from_thread.
  s   
z$AsyncIOBackend.run_async_from_threadc                   sP   t d fdd}td|ptjj}| rtt || 	 S )Nr   r   c               
     sZ   zt d    W d S  ty, }  z|  t| ts! W Y d } ~ d S d } ~ ww )Nr   )r8   r   r]  r   r   r   r   r   r  r  rp   rq   r  X
  s   

z4AsyncIOBackend.run_sync_from_thread.<locals>.wrapperr   r   )
r   r/   r9   r  r7  r  r>   r   r   r  )r  r  r   r1  r  r   rp   r:  rq   run_sync_from_threadQ
  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  r  r  stdin_streamstdout_streamstderr_streamrp   rp   rq   open_processl
  s4   


zAsyncIOBackend.open_processr  r  c                 C  s&   t t|dd t tt| d S )Nz AnyIO process pool shutdown taskrp  )r   r  r   ru  r   r  )r  r  rp   rp   rq   #setup_process_pool_exit_at_shutdown
  s   z2AsyncIOBackend.setup_process_pool_exit_at_shutdownhostr   portlocal_addressIPSockAddrType | Nonerk  c                   sB   t ttjtf t jt|||dI d H \}}|  t||S )N)
local_addr)	r/   r  r   r  r  r   create_connectionr  r	  )r  rH  rI  rJ  r  r  rp   rp   rq   connect_tcp
  s   

zAsyncIOBackend.connect_tcppathstr | bytesabc.UNIXSocketStreamc                   s   |   I d H  t  ttjd 	 z
| W tS  tyE   t } 	|j
d  | fdd |I d H  Y n tyP      w q)NFTc                   
     S r   r>  rx  r   r.  rp   rq   r   
     
 z-AsyncIOBackend.connect_unix.<locals>.<lambda>)r  r   r  AF_UNIXrz  connectrH  r   r   r?  r   ru  r]  r   rE  )r  rO  r  rp   rT  rq   connect_unix
  s&   

zAsyncIOBackend.connect_unixsockr  rQ   c                 C  r"  r   )re  r  rY  rp   rp   rq   create_tcp_listener
  r  z"AsyncIOBackend.create_tcp_listenerc                 C  r"  r   )rv  rZ  rp   rp   rq   create_unix_listener
  r  z#AsyncIOBackend.create_unix_listenerfamilyr$   remote_address
reuse_portUDPSocket | ConnectedUDPSocketc                   sN   t  jt||||dI d H \}}|jr|  |j|s"t||S t||S )N)rL  remote_addrr]  r_  )r   create_datagram_endpointr   r   r   r{  r  )r  r]  rJ  r^  r_  r  r  rp   rp   rq   create_udp_socket
  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                   rR  r   rS  rx  rT  rp   rq   r   
  rU  z<AsyncIOBackend.create_unix_datagram_socket.<locals>.<lambda>)r  r   rW  rH  r   r   r?  r   ru  r]  r   r  r  )r  r.  rd  r  rp   rT  rq   create_unix_datagram_socket
  s&   
z*AsyncIOBackend.create_unix_datagram_socketr   r]  r^  protorZ  bytes | str | Nonestr | int | Noneint | AddressFamilyr^  int | SocketKindri  rZ  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 )Nrh  )r   getaddrinfo)r  rH  rI  r]  r^  ri  rZ  rp   rp   rq   ro  
  s   zAsyncIOBackend.getaddrinfosockaddrrP   tuple[str, str]c                   s   t  ||I d H S r   )r   getnameinfo)r  rp  rZ  rp   rp   rq   rr  
  s   zAsyncIOBackend.getnameinfoobjrZ   c                   s:  zt  W n ty   i t  Y nw t|tr|n|   r,tdt }|	 d fdd}z|
 | W n ty`   ddlm} | }|
 | |jY nw |j < zI d H }W z = W n	 ty}   Y nw   nz = W n	 ty   Y w w   w |std S )	Nr  r   r   c                     sN   z = W n	 t y   Y nw   zd W d S  tjy&   Y d S w r  r  r   r   rP  rp   rb  r  r  r4  rp   rq   r        
z(AsyncIOBackend.wait_readable.<locals>.cbr   get_selectorr   )r  r   r(  r   r   rL  rC  r;   r   r   r:  r  $anyio._core._asyncio_selector_threadrx  r4  r  r<   r  rs  r   r   rx  selectorsuccessrp   ru  rq   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 |std S )	Nr  r   r   c                     sN   z = W n	 t y   Y nw   zd W d S  tjy&   Y d S w r  rt  rp   rb  r  r>  r  rp   rq   r   T  rv  z(AsyncIOBackend.wait_writable.<locals>.cbr   rw  r   )r  r   r(  r   r   rL  rC  r;   r   r   r?  r  ry  rx  r>  r  r<   rz  rp   r  rq   wait_writableE  r~  zAsyncIOBackend.wait_writablec                 C  sd  t |tr|n| }t }zt }W n	 ty   Y nAw z||}W n	 ty.   Y n0w z|	d W n
 t
jy@   Y nw z|| W n ty]   ddlm} | | Y nw zt }W n
 tyn   Y d S w z||}W n
 ty   Y d S w z|	d W n
 t
jy   Y nw z|| W d S  ty   ddlm} | | Y d S w )NFr   rw  )r   rL  rC  r   r  r   r(  r  r  r   r   rP  r>  r  ry  rx  r  r4  )r  rs  rb  r   r  r  rx  r  rp   rp   rq   notify_closingz  sX   zAsyncIOBackend.notify_closingc                   s(   t tdr|jtjkrt|S t|S )NrV  )r   r  r]  rV  rv  re  rZ  rp   rp   rq   wrap_listener_socket  s   z#AsyncIOBackend.wrap_listener_socketr	  c                   &   t  jt|dI d H \}}t||S N)rY  )r   rM  r  r	  r  rY  r  r  rp   rp   rq   wrap_stream_socket  
   
z!AsyncIOBackend.wrap_stream_socketrE  c                   
   t |S r   )rE  rZ  rp   rp   rq   wrap_unix_stream_socket     z&AsyncIOBackend.wrap_unix_stream_socketr{  c                   r  r  )r   rb  r   r{  r  rp   rp   rq   wrap_udp_socket  r  zAsyncIOBackend.wrap_udp_socketr  c                   r  r  )r   rb  r   r  r  rp   rp   rq   wrap_connected_udp_socket  r  z(AsyncIOBackend.wrap_connected_udp_socketr  c                   r  r   )r  rZ  rp   rp   rq   wrap_unix_datagram_socket  r  z(AsyncIOBackend.wrap_unix_datagram_socketr  c                   r  r   )r  rZ  rp   rp   rq   #wrap_connected_unix_datagram_socket  s   z2AsyncIOBackend.wrap_connected_unix_datagram_socketrC   c                 C  s4   zt  W S  ty   td}t | | Y S w )N(   )r  r   r(  rC   r   )r  r&  rp   rp   rq   r)    s   

z-AsyncIOBackend.current_default_thread_limiterr  r#   .AbstractContextManager[AsyncIterator[Signals]]c                 G  r"  r   )r  )r  r  rp   rp   rq   open_signal_receiver  s   z#AsyncIOBackend.open_signal_receiverr5   c                 C  s
   t t S r   )r  r   r  rp   rp   rq   get_current_task  r  zAsyncIOBackend.get_current_taskSequence[TaskInfo]c                 C  s   dd t  D S )Nc                 S  s   g | ]
}|  st|qS rp   )r   r  )r   r   rp   rp   rq   r     s    z4AsyncIOBackend.get_running_tasks.<locals>.<listcomp>)r   r  rp   rp   rq   get_running_tasks  r  z AsyncIOBackend.get_running_tasksc                   s\   |   I d H  t }	 t D ]}||u rq|j}|d u s!| r*tdI d H   nqd S q)NTg?)r  r   r   r)  r   r	   )r  	this_taskr   r.  rp   rp   rq   wait_all_tasks_blocked  s   
z%AsyncIOBackend.wait_all_tasks_blockedr  c                 C  s   t di |S )Nrp   )r  )r  r
  rp   rp   rq   create_test_runner  s   z!AsyncIOBackend.create_test_runner)
r  r  r   r	  r  r  r
  r  r   r   )r   r  r=  )r   r  r   )r  r	  r   r   r:  )r   r  )r   r  )r  r   r   r  )r  rL  r  rD  r  r   r   r  )r  r	  r   r!  )FN)
r  r$  r   r	  r%  r   r&  r'  r   r   )r  r  r   r	  r1  r  r   r   )r  r$  r   r	  r1  r  r   r   )r<  r=  r  r>  r  r>  r  r>  r  r+   r   r  r  r  r   r   r   )rH  r   rI  rL  rJ  rK  r   rk  )rO  rP  r   rQ  )rY  r  r   rQ   )
r]  r$   rJ  rK  r^  rK  r_  r   r   r`  )r.  r  rd  re  r   rf  )rH  rj  rI  rk  r]  rl  r^  rm  ri  rL  rZ  rL  r   rn  )r   )rp  rP   rZ  rL  r   rq  )rs  rZ   r   r   )rY  r  r   r	  )rY  r  r   rE  )rY  r  r   r{  )rY  r  r   r  )rY  r  r   r  )rY  r  r   r  )r   rC   )r  r#   r   r  )r   r5   )r   r  )r
  r  r   r  )3rj   rk   rl   classmethodr   r  r  r  r  r  r\  r	   r#  r$  r  r  r  r  r  r   r#  r/  r0  r9  r;  rF  rG  rN  rX  r[  r\  rc  rg  ro  rr  r}  r  r  r  r  r  r  r  r  r  r)  r  r  r  r  r  rp   rp   rp   rq   r[  _	  s    !	<"#	440r[  )r   r   r   r   )r   r   )r   r   r   r   )r   r   r   r   )r  r  rg  r  r   r   r  )
__future__r   rP  r   concurrent.futuresr2  r   r#  r?  r  r  r   r  r   r   r   r   r   r   r	   asyncio.base_eventsr
   collectionsr   r   collections.abcr   r   r   r   r   r   r   r   r   
contextlibr   r   r   dataclassesr   r   	functoolsr   r   inspectr   r   r   ior    r!   r  r"   r   r#   r$   r%   r&   typesr'   r(   typingr)   r*   r+   r,   r-   r.   r/   r0    r2   r3   r4   r5   r6   _core._eventloopr7   r8   r9   _core._exceptionsr:   r;   r<   r=   r>   r?   _core._socketsr@   _core._streamsrA   _core._synchronizationrC   BaseCapacityLimiterrE   	BaseEventrG   BaseLockrH   rI   rK   BaseSemaphore_core._tasksrM   BaseCancelScoperN   rO   rP   rQ   rR   rS   abc._eventlooprT   
abc._tasksrU   rV   lowlevelrW   streams.memoryrX   rY   	_typeshedrZ   r  r  r^   r_   r`   enumra   rb   rc   rd   exceptiongroupre   typing_extensionsEnumrf   r   r   r   r   r   r   r   r   r  r   r   r   r   r  r   
TaskStatusrJ  eager_task_factoryrn  rT  rU  r  r]  _Retval_Queue_Typer  r  r  ByteReceiveStreamr  ByteSendStreamr  r  r  r  Protocolr  r   r	  r+  rE  re  rv  r{  r  r  r  r  r  r  r  r  r  r[  backend_classrp   rp   rp   rq   <module>   s    $	(
$	  


#

  B dN
9
&"U.t<%24$$TXy.! .     '