U
    RhZ                    @  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 d dlmZ d dlmZ d d	l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* d dl+m,Z, d dlm-Z- d dl.m/Z/ d dl0m1Z1 d dlm2Z2m3Z3 d dl
m4Z4 d dl5m6Z6 d dl7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZD d dlmEZE d dlFZFddlGmHZHmIZImJZJmKZKmLZL ddlMmNZNmOZO ddlPmQZQmRZRmSZSmTZTmUZUmVZV ddlWmXZX ddlYmZZZ ddl[m\Z] ddl[m^Z_ ddl[m`Za ddl[mbZbmcZc dd l[mdZe dd!lfmgZh dd"lLmiZimjZjmkZkmlZlmmZm dd#lnmoZo dd$lpmqZq dd%lrmsZsmtZt e	jud&krd d'l7mvZv nd d'lwmvZv e	jud(krd d)lmxZx d d*l7myZymzZz nd dlZd dl{Z{d dl0Z0d d+lm|Z|m}Z}m~Z~mZ d d,lmZ d d*lwmyZymzZz G d-d. d.e{jZG d/d0 d0Zxd1d2d3d4d5Zd1d2d3d6d7ZeCd8ZeCd9d:d;Zeyd<Zevd=Zeqd>Zd?ed>< d@dAdBdCZdDdEdFdGdHZeE ZdIedJ< d@dKdLdMdNZG dOdP dPehZgG dQdR dRZeE ZdSedT< G dUdV dVeLjZG dWdX dXeLjZeBe@e e@e f ZG dYdZ dZe4Zeqd[Zd\ed[< eqd]Zd^ed]< G d_d` d`eLjZe"dadbG dcdd ddeLjZe"dadbG dedf dfeLjZe"dadbG dgdh dheLjZdidjd2dkdldmZdnd2dodpdqZG drds dsejZG dtdu duejZG dvdw dweLjZG dxdy dyZG dzd{ d{eeLjZG d|d} d}eLjkZG d~d deLjkZG dd deLjZG dd deLjZG dd deeLjZG dd deeLjZeqdZded< eqdZded< G dd de_Z^G dd deaZ`G dd deeZdG dd de]Z\eqdZded< G dd dZG dd deKZG dd deLjZG dd deiZeZdS )    )annotationsN)AbstractEventLoopCancelledError	all_taskscreate_taskcurrent_taskget_running_loopsleep)_run_until_complete_cb)OrderedDictdeque)AsyncIteratorIterable)Future)suppress)Contextcopy_context)	dataclass)partialwraps)CORO_RUNNINGCORO_SUSPENDEDgetcoroutinestateiscoroutine)IOBase)PathLike)Queue)Signals)AddressFamily
SocketKind)Thread)TracebackType)IOAnyAsyncGenerator	AwaitableCallable
CollectionContextManager	CoroutineOptionalSequenceTuple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)   
   )	ParamSpecrU      )Runner)TypeVarTupleUnpack)
coroutinesevents
exceptionstasks)BaseExceptionGroupc                   @  s   e Zd ZdZdZdZdS )_StateZcreatedZinitializedclosedN)__name__
__module____qualname__CREATEDINITIALIZEDCLOSED rj   rj   >./venv/lib/python3.8/site-packages/anyio/_backends/_asyncio.pyrb   v   s   rb   c                   @  s   e Zd ZddddddddZd ddd	Zd
ddddddZddddZddddZdddddddZddddZ	dddd d!Z
dS )"rZ   Ndebugloop_factorybool | None&Callable[[], AbstractEventLoop] | Nonec                C  s0   t j| _|| _|| _d | _d | _d| _d| _d S )Nr   F)	rb   rg   _state_debug_loop_factory_loop_context_interrupt_count_set_event_loop)selfrm   rn   rj   rj   rk   __init__}   s    zRunner.__init__returnc                 C  s   |    | S N)
_lazy_initrx   rj   rj   rk   	__enter__   s    zRunner.__enter__type[BaseException]BaseExceptionr!   Noneexc_typeexc_valexc_tbr{   c                 C  s   |    d S r|   )closerx   r   r   r   rj   rj   rk   __exit__   s    zRunner.__exit__c              	   C  s   | j tjk	rdS zH| j}t	| |
|  t|drH|
|  n|
t| W 5 | jrjtd |  d| _tj| _ X dS )zShutdown and close event loop.Nshutdown_default_executor)rq   rb   rh   rw   r^   set_event_loopr   rt   ri   _cancel_all_tasksrun_until_completeZshutdown_asyncgenshasattrr   _shutdown_default_executorrx   looprj   rj   rk   r      s    

zRunner.closer   c                 C  s   |    | jS )zReturn embedded event loop.)r}   rt   r~   rj   rj   rk   get_loop   s    zRunner.get_loop)contextzCoroutine[T_Retval]T_Retval)coror{   c             
   C  sT  t |std|t dk	r,td|   |dkrB| j}|| j	j
|}t t krttjtjkrt| j|d}zttj| W q tk
r   d}Y qX nd}d| _zfz| j	|W W TS  tjk
r   | jdkrt|dd}|dk	r| dkrt  Y nX W 5 |dk	rNttj|krNttjtj X dS )z/Run a coroutine inside the embedded event loop.za coroutine was expected, got Nz7Runner.run() cannot be called from a running event loop)	main_taskr   uncancel)r]   r   
ValueErrorr^   Z_get_running_loopRuntimeErrorr}   ru   runrt   r   	threadingcurrent_threadmain_threadsignal	getsignalSIGINTdefault_int_handlerr   
_on_sigintrv   r   r_   r   getattrKeyboardInterrupt)rx   r   r   taskZsigint_handlerr   rj   rj   rk   r      sD    
z
Runner.runc                 C  s   | j tjkrtd| j tjkr$d S | jd krRt | _| j	s\t
| j d| _	n
|  | _| jd k	rt| j| j t | _tj| _ d S )NzRunner is closedT)rq   rb   ri   r   rh   rs   r^   new_event_looprt   rw   r   rr   Z	set_debugcontextvarsr   ru   r~   rj   rj   rk   r}      s    




zRunner._lazy_initasyncio.Task)r   r{   c                 C  sF   |  j d7  _ | j dkr<| s<|  | jdd  d S t d S )N   c                   S  s   d S r|   rj   rj   rj   rj   rk   <lambda>       z#Runner._on_sigint.<locals>.<lambda>)rv   donecancelrt   call_soon_threadsafer   )rx   signumframer   rj   rj   rk   r      s    zRunner._on_sigint)rd   re   rf   ry   r   r   r   r   r   r}   r   rj   rj   rj   rk   rZ   {   s   0rZ   r   r   r   r{   c                 C  st   t | }|sd S |D ]}|  q| t j|ddi |D ]0}| rLq>| d k	r>| d| |d q>d S )NZreturn_exceptionsTz1unhandled exception during asyncio.run() shutdown)message	exceptionr   )r`   r   r   r   Zgather	cancelledr   Zcall_exception_handler)r   Z	to_cancelr   rj   rj   rk   r      s     

r   c                   sf   ddd fdd}d _  jdkr(dS   }tj||fd}|  z|I dH  W 5 |  X dS )	z.Schedule the shutdown of the default executor.zasyncio.futures.Futurer   )futurer{   c              
     sV   z  j jdd  | jd  W n0 tk
rP } z | j| W 5 d }~X Y nX d S )NT)wait)_default_executorshutdownr   
set_result	Exceptionset_exception)r   exr   rj   rk   _do_shutdown  s
    z0_shutdown_default_executor.<locals>._do_shutdownTN)targetargs)Z_executor_shutdown_calledr   create_futurer   r    startjoin)r   r   r   threadrj   r   rk   r     s    
r   r   T_contraT)ZcontravariantPosArgsTP
_root_taskzRunVar[asyncio.Task | None]r   rz   c                  C  s   t d } | d k	r|  s| S t D ]Z}|jr$| s$dd |jD }|D ]2}|tksft|dd dkrJt | |    S qJq$tt	j
t }t|}|r|j}|r|jd k	r|j}q|d k	rtt	j
|jS |S )Nc                 S  s   g | ]\}}|qS rj   rj   ).0cbr   rj   rj   rk   
<listcomp>7  s     z"find_root_task.<locals>.<listcomp>re   zuvloop.loop)r   getr   r   Z
_callbacksr
   r   setr.   asyncioTaskr   _task_statescancel_scope_parent_scope
_host_task)	root_taskr   Z	callbacksr   stater   rj   rj   rk   find_root_task/  s,    



r   r&   str)funcr{   c                 C  s0   t | dd }t | dd }ddd ||fD S )Nre   rf   .c                 S  s   g | ]}|r|qS rj   rj   )r   xrj   rj   rk   r   Q  s      z%get_callable_name.<locals>.<listcomp>)r   r   )r   modulequalnamerj   rj   rk   get_callable_nameN  s    r   z1WeakKeyDictionary[asyncio.AbstractEventLoop, Any]	_run_varsbool)r   r{   c                 C  sB   zt |  ttfkW S  tk
r<   td|  ddY nX dS )zBReturn ``True`` if the task has been started and has not finished.zCannot determine if task z has started or notN)r   get_coror   r   AttributeErrorr   r   rj   rj   rk   _task_started[  s    r   c                   @  s.  e Zd Zejddddd dddZejdfddddd	Zd d
ddZdddddddZdddddZ	dd
ddZ
d ddddZdd
ddZdd
d d!Zdd
d"d#Zedd
d$d%Zejddd&d'd%Zedd
d(d)Zedd
d*d+Zedd
d,d-Zejddd&d.d-Zd/S )0rK   Fdeadlineshieldfloatr   r   r   r{   c                C  s
   t | S r|   object__new__clsr   r   rj   rj   rk   r   j  s    zCancelScope.__new__c                 C  sV   || _ || _d | _t | _d| _d| _d| _d | _d | _	t | _
d | _d| _d | _d S )NFr   )	_deadline_shieldr   r   _child_scopes_cancel_called_cancelled_caught_active_timeout_handle_cancel_handle_tasksr   _cancel_calls_cancelling)rx   r   r   rj   rj   rk   ry   o  s    zCancelScope.__init__rz   c                 C  s   | j rtdttjt  | _}| j| zt	| }W n& t
k
r`   td | }|t	|< Y n6X |j| _| |_| jd k	r| jj|  | jj| |   d| _ tjdkr| j | _| jr| |  | S )Nz;Each CancelScope may only be used for a single 'with' blockTrX   )r   r   r.   r   r   r   r   r   addr   KeyError	TaskStater   r   r   remove_timeoutsysversion_info
cancellingr   r   _deliver_cancellation)rx   Z	host_task
task_staterj   rj   rk   r   ~  s.    



zCancelScope.__enter__type[BaseException] | NoneBaseException | NoneTracebackType | Nonero   r   c                 C  s   | j stdt | jk	r"td| jd k	s0tt| j}|d ksN|j| k	rVtdd| _ | jrr| j	  d | _| j
| j | jd k	r| jj|  | jj
| j | j|_|   | jr|d k	rt|D ]$}t|tr| || _| jr qq| jS d S )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 scopeF)r   r   r   r   AssertionErrorr   r   r   r   r   r   r   r   r   r   _restart_cancellation_in_parentr   r=   
isinstancer   	_uncancelr   )rx   r   r   r   Zhost_task_stateexcrj   rj   rk   r     s<    


zCancelScope.__exit__r   )cancelled_excr{   c                 C  sn   t jdk s| jd krd| _dS | jd k	rR| jrR|  jd8  _| j | jkr(dS q(d| _dt| d|jkS )NrU   	   r   Tr   Cancelled by cancel scope r   )r   r   r   r   r   r   idr   )rx   r  rj   rj   rk   r	    s    
zCancelScope._uncancelr   c                 C  s@   | j tjkr<t }| | j kr*|   n|| j | j| _d S r|   )	r   mathinfr   timer   Zcall_atr   r   r   rj   rj   rk   r     s
    
zCancelScope._timeout)originr{   c                 C  s   d}t  }| jD ]|}|jrqd}||k	r|| jks:t|r|j}t|tjrT|	 s| j
d7  _
tjdkr|dt|d q|  q| jD ]}|js|js||p|}q|| kr|rt | j|| _n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  r  r   N)r   r   Z_must_cancelr   r   _fut_waiterr  r   r   r   r   r   r   r   r  r   r   cancel_calledr  r   Z	call_soonr   )rx   r  Zshould_retrycurrentr   waiterscoperj   rj   rk   r    s0    



 z!CancelScope._deliver_cancellationc                 C  s>   | j }|dk	r:|jr*|jdkr:|| q:|jr2q:|j }qdS )zb
        Restart the cancellation effort in the closest directly cancelled parent scope.

        N)r   r   r   r  r   )rx   r  rj   rj   rk   r    s    

z+CancelScope._restart_cancellation_in_parentc                 C  s*   | j }|d k	r&|js&|jrdS |j }qdS )NTF)r   r   r   )rx   r   rj   rj   rk   _parent_cancelled%  s    zCancelScope._parent_cancelledc                 C  s:   | j s6| jr| j  d | _d| _ | jd k	r6| |  d S NT)r   r   r   r   r  r~   rj   rj   rk   r   0  s    

zCancelScope.cancelc                 C  s   | j S r|   )r   r~   rj   rj   rk   r   :  s    zCancelScope.deadlinevaluer{   c                 C  s<   t || _| jd k	r$| j  d | _| jr8| js8|   d S r|   )r   r   r   r   r   r   r   rx   r  rj   rj   rk   r   >  s    


c                 C  s   | j S r|   )r   r~   rj   rj   rk   r  H  s    zCancelScope.cancel_calledc                 C  s   | j S r|   )r   r~   rj   rj   rk   cancelled_caughtL  s    zCancelScope.cancelled_caughtc                 C  s   | j S r|   )r   r~   rj   rj   rk   r   P  s    zCancelScope.shieldc                 C  s    | j |kr|| _ |s|   d S r|   )r   r  r  rj   rj   rk   r   T  s    
N)rd   re   rf   r  r  r   ry   r   r   r	  r   r  r  r  r   propertyr   setterr  r  r   rj   rj   rj   rk   rK   i  s0    1-
	rK   c                   @  s$   e Zd ZdZdZdd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__
int | NoneCancelScope | Noner!  r   c                 C  s   || _ || _d S r|   r%  )rx   r!  r   rj   rj   rk   ry   i  s    zTaskState.__init__N)rd   re   rf   __doc__	__slots__ry   rj   rj   rj   rk   r   a  s   r   z*WeakKeyDictionary[asyncio.Task, TaskState]r   c                   @  s.   e Zd ZdddddZdddd	d
dZdS )_AsyncioTaskStatusasyncio.Futureint)r   r!  c                 C  s   || _ || _d S r|   )_future
_parent_id)rx   r   r!  rj   rj   rk   ry   w  s    z_AsyncioTaskStatus.__init__NzT_contra | Noner   r  c                 C  sZ   z| j | W n* tjk
r:   | j  s6tdd Y nX ttjt }| j	t
| _d S )Nz.called 'started' twice on the same task status)r+  r   r   ZInvalidStateErrorr   r   r.   r   r   r,  r   r!  )rx   r  r   rj   rj   rk   started{  s    
z_AsyncioTaskStatus.started)N)rd   re   rf   ry   r-  rj   rj   rj   rk   r(  v  s   r(  c                   @  s   e Zd ZddddZd dddZddd	d
dddZd ddddddddZdddddddddZdddddddddZdS )!	TaskGroupr   rz   c                 C  s    t  | _d| _g | _t | _d S )NF)rK   r   r   _exceptionsr   r   r~   rj   rj   rk   ry     s    zTaskGroup.__init__c                   s   | j   d| _| S r  )r   r   r   r~   rj   rj   rk   
__aenter__  s    
zTaskGroup.__aenter__r  r  r  ro   r   c              
     s   | j |||}|d k	r8| j   t|ts8| j| d }| jrzt	| jI d H  W q< tk
r } z| j   |d kr|}W 5 d }~X Y q<X q<d| _
| jrtd| j|r|d ks|r||S )NFzunhandled errors in a TaskGroup)r   r   r   r  r   r/  appendr   r   r   r   ra   )rx   r   r   r   Zignore_exceptionZ!cancelled_exc_while_waiting_tasksr
  rj   rj   rk   	__aexit__  s.    


 zTaskGroup.__aexit__Nz,Callable[[Unpack[PosArgsT]], Awaitable[Any]]tuple[Unpack[PosArgsT]]r   asyncio.Future | Noner   )r   r   nametask_status_futurer{   c           
        s  ddd fdd} j s&tdi }rPtt }tt jj|d< nt jj}|||}t|st|dr|j	 d	nd
}	t
d|	 |j d|d|d krt|nt|}t||d| t| jdt<  jj  j S )Nr   r   )_taskr{   c              
     s  t |  }|jd k	st| |jjks&t|jj|   j t | = z|  }W n: tk
r } zt|jtrx|j}qd|}W 5 d }~X Y nX |d k	rd k	r	 rd S d ks
 rt|tsЈ j|  j s j  n
| n"d k	r
 std d S )Nz2Child exited without calling task_status.started())r   r   r  r   r   r   r   r  __context__r   r   r/  r1  r  r   r   r   )r7  r  r
  erx   r   r6  rj   rk   	task_done  s2    

z#TaskGroup._spawn.<locals>.task_donez;This task group is not active; no new tasks can be started.Ztask_statusre   r    z	Expected z0() to return a coroutine, but the return value (z) is not a coroutine objectr5  r%  )r   r   r  r   r(  r   r   r   r   re   	TypeErrorrf   r   r   r   add_done_callbackr   r   r   r   )
rx   r   r   r5  r6  r;  kwargsr!  r   prefixrj   r:  rk   _spawn  s:    $
 



 
zTaskGroup._spawnr=  zUnpack[PosArgsT])r   r   r5  r{   c                G  s   |  ||| d S r|   )rB  )rx   r   r5  r   rj   rj   rk   
start_soon  s    zTaskGroup.start_soonzCallable[..., Awaitable[Any]]r#   c                  s|   t  }| ||||}z|I d H W S  tk
rv   |  tdd$ tt |I d H  W 5 Q R X W 5 Q R X  Y nX d S NTr   )r   r   rB  r   r   rK   r   )rx   r   r5  r   r   r   rj   rj   rk   r     s    zTaskGroup.start)N)	rd   re   rf   ry   r0  r2  rB  rC  r   rj   rj   rj   rk   r.    s   , Q	r.  c                      s^   e Zd ZdZdddd fddZdd	d
ddddZddddZddddddZ  ZS )WorkerThreadrV   r   zset[WorkerThread]zdeque[WorkerThread])r   workersidle_workersc                   sF   t  jdd || _|| _|| _|j| _td| _t	
 | _d| _d S )NzAnyIO worker threadr=  r0   F)superry   r   rG  rH  rt   r   r   queueAsyncIOBackendcurrent_time
idle_sincestopping)rx   r   rG  rH  	__class__rj   rk   ry   /  s    
zWorkerThread.__init__r)  r#   r  r   )r   resultr
  r{   c                 C  sb   t  | _| js| j|  | s^|d k	rTt|trHt	d}||_
|}|| n
|| d S )Nzcoroutine raised StopIteration)rK  rL  rM  rN  rH  r1  r   r  StopIterationr   	__cause__r   r   )rx   r   rQ  r
  new_excrj   rj   rk   _report_result@  s    

zWorkerThread._report_resultrz   c           
      C  s   t t| j | j }|d kr.W 5 Q R  d S |\}}}}}| sd }d }|t_z@z|j|f| }W n& t	k
r }	 z|	}W 5 d }	~	X Y nX W 5 t`X | j
 s| j| j||| | j  qW 5 Q R X d S r|   )r6   rK  r   rJ  r   r   r7   current_cancel_scoper   r   Z	is_closedr   rU  r;  )
rx   itemr   r   r   r   r   rQ  r   r
  rj   rj   rk   r   R  s,    

   zWorkerThread.runNzasyncio.Task | Nonefr{   c                 C  sH   d| _ | jd  | j|  z| j|  W n tk
rB   Y nX d S r  )rN  rJ  
put_nowaitrG  discardrH  r   r   )rx   rY  rj   rj   rk   stopm  s    zWorkerThread.stop)N)	rd   re   rf   MAX_IDLE_TIMEry   rU  r   r\  __classcell__rj   rj   rO  rk   rF  ,  s
   rF  _threadpool_idle_workerszRunVar[deque[WorkerThread]]_threadpool_workerszRunVar[set[WorkerThread]]c                      sH   e Zd Zd dddZdd fddZddd	d
dddddZ  ZS )BlockingPortalrz   c                 C  s
   t | S r|   r   r   rj   rj   rk   r   ~  s    zBlockingPortal.__new__r   c                   s   t    t | _d S r|   )rI  ry   r   rt   r~   rO  rj   rk   ry     s    
zBlockingPortal.__init__z<Callable[[Unpack[PosArgsT]], Awaitable[T_Retval] | T_Retval]r3  dict[str, Any]r   zFuture[T_Retval])r   r   r@  r5  r   r{   c                 C  s,   t t| jj|d| j||||f| j d S )Nr=  )rK  run_sync_from_threadr   Z_task_grouprC  Z
_call_funcrt   )rx   r   r   r@  r5  r   rj   rj   rk   _spawn_task_from_thread  s
    z&BlockingPortal._spawn_task_from_thread)rd   re   rf   r   ry   re  r^  rj   rj   rO  rk   ra  }  s   ra  F)eqc                   @  s6   e Zd ZU ded< ddddddZd	d
ddZdS )StreamReaderWrapperzasyncio.StreamReader_stream   r*  bytes	max_bytesr{   c                   s"   | j |I d H }|r|S td S r|   )rh  readr;   )rx   rl  datarj   rj   rk   receive  s    zStreamReaderWrapper.receiver   rz   c                   s    | j t  t I d H  d S r|   )rh  r   r:   rK  
checkpointr~   rj   rj   rk   aclose  s    zStreamReaderWrapper.acloseN)ri  )rd   re   rf   __annotations__ro  rq  rj   rj   rj   rk   rg    s   
rg  c                   @  s4   e Zd ZU ded< dddddZddd	d
ZdS )StreamWriterWrapperzasyncio.StreamWriterrh  rj  r   rW  r{   c                   s    | j | | j  I d H  d S r|   )rh  writeZdrainrx   rW  rj   rj   rk   send  s    zStreamWriterWrapper.sendrz   c                   s   | j   t I d H  d S r|   )rh  r   rK  rp  r~   rj   rj   rk   rq    s    
zStreamWriterWrapper.acloseN)rd   re   rf   rr  rw  rq  rj   rj   rj   rk   rs    s   
rs  c                   @  s   e Zd ZU ded< ded< ded< ded< dd	d
dZdd	ddZdd	ddZdd	ddZdddddZe	dd	ddZ
e	dd	ddZe	dd	ddZe	dd	dd Ze	dd	d!d"Zd#S )$Processzasyncio.subprocess.Process_processzStreamWriterWrapper | None_stdinzStreamReaderWrapper | None_stdout_stderrr   rz   c                   s   t ddH | jr"| j I d H  | jr8| j I d H  | jrN| j I d H  W 5 Q R X z|  I d H  W nB tk
r   |   t dd |  I d H  W 5 Q R X  Y nX d S rD  )rK   rz  rq  r{  r|  r   r   killr~   rj   rj   rk   rq    s    zProcess.acloser*  c                   s   | j  I d H S r|   )ry  r   r~   rj   rj   rk   r     s    zProcess.waitc                 C  s   | j   d S r|   )ry  	terminater~   rj   rj   rk   r~    s    zProcess.terminatec                 C  s   | j   d S r|   )ry  r}  r~   rj   rj   rk   r}    s    zProcess.kill)r   r{   c                 C  s   | j | d S r|   )ry  send_signal)rx   r   rj   rj   rk   r    s    zProcess.send_signalc                 C  s   | j jS r|   )ry  pidr~   rj   rj   rk   r    s    zProcess.pidr#  c                 C  s   | j jS r|   )ry  
returncoder~   rj   rj   rk   r    s    zProcess.returncodezabc.ByteSendStream | Nonec                 C  s   | j S r|   )rz  r~   rj   rj   rk   stdin  s    zProcess.stdinzabc.ByteReceiveStream | Nonec                 C  s   | j S r|   )r{  r~   rj   rj   rk   stdout  s    zProcess.stdoutc                 C  s   | j S r|   )r|  r~   rj   rj   rk   stderr  s    zProcess.stderrN)rd   re   rf   rr  rq  r   r~  r}  r  r  r  r  r  r  r  rj   rj   rj   rk   rx    s&   
rx  zset[Process]r   )rG  r7  r{   c                 C  s   d}t jdk r4zt  }W n tk
r2   Y nX | D ]R}|jdkrHq8|jjj	
  |jjj	
  |jjj	
  |  |r8||j q8dS )zG
    Forcibly shuts down worker processes belonging to this event loop.N)rU      )r   r   r   Zget_event_loop_policyZget_child_watcherNotImplementedErrorr  rz  rh  
_transportr   r{  r|  r}  Zremove_child_handlerr  )rG  r7  Zchild_watcherprocessrj   rj   rk   '_forcibly_shutdown_process_pool_on_exit  s    

r  set[abc.Process]rG  r{   c                   sd   zt tjI dH  W nJ tjk
r^   | D ]}|jdkr*|  q*| D ]}| I dH  qFY nX dS )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}  rq  )rG  r  rj   rj   rk   _shutdown_process_pool_on_exit	  s    	

r  c                   @  s   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ddZdddddZdddddZddddZ	ddddZ
ddddZdS ) StreamProtocolzdeque[bytes]
read_queueasyncio.Event
read_eventwrite_eventNException | Noner   Fr   	is_at_eofasyncio.BaseTransportr   	transportr{   c                 C  s<   t  | _t | _t | _| j  ttj|	d d S Nr   )
r   r  r   rC   r  r  r   r.   	TransportZset_write_buffer_limitsrx   r  rj   rj   rk   connection_made)  s
    


zStreamProtocol.connection_mader
  r{   c                 C  s,   |rt  | _|| j_| j  | j  d S r|   )r8   r   rS  r  r   r  rx   r
  rj   rj   rk   connection_lost0  s
    
zStreamProtocol.connection_lostrj  )rn  r{   c                 C  s   | j t| | j  d S r|   )r  r1  rj  r  r   )rx   rn  rj   rj   rk   data_received8  s    zStreamProtocol.data_receivedro   rz   c                 C  s   d| _ | j  dS r  )r  r  r   r~   rj   rj   rk   eof_received=  s    
zStreamProtocol.eof_receivedc                 C  s   t  | _d S r|   )r   rC   r  r~   rj   rj   rk   pause_writingB  s    zStreamProtocol.pause_writingc                 C  s   | j   d S r|   r  r   r~   rj   rj   rk   resume_writingE  s    zStreamProtocol.resume_writing)rd   re   rf   rr  r   r  r  r  r  r  r  r  rj   rj   rj   rk   r  "  s   
r  c                   @  s   e Zd ZU ded< ded< ded< dZded< d	d
dddZdd
dddZddd
dddZdd
dddZd
dddZ	d
dddZ
dS )DatagramProtocolz#deque[tuple[bytes, IPSockAddrType]]r  r  r  r  Nr  r   r  r   r  c                 C  s.   t dd| _t | _t | _| j  d S )Nd   )maxlen)r   r  r   rC   r  r  r   r  rj   rj   rk   r  O  s    

z DatagramProtocol.connection_mader  c                 C  s   | j   | j  d S r|   )r  r   r  r  rj   rj   rk   r  U  s    
z DatagramProtocol.connection_lostrj  rM   )rn  addrr{   c                 C  s&   t |}| j||f | j  d S r|   )r>   r  r1  r  r   )rx   rn  r  rj   rj   rk   datagram_receivedY  s    z"DatagramProtocol.datagram_receivedr   c                 C  s
   || _ d S r|   )r   r  rj   rj   rk   error_received^  s    zDatagramProtocol.error_receivedrz   c                 C  s   | j   d S r|   )r  clearr~   rj   rj   rk   r  a  s    zDatagramProtocol.pause_writingc                 C  s   | j   d S r|   r  r~   rj   rj   rk   r  d  s    zDatagramProtocol.resume_writing)rd   re   rf   rr  r   r  r  r  r  r  r  rj   rj   rj   rk   r  I  s   
r  c                   @  sl   e Zd ZdddddZedddd	ZddddddZdddddZddddZddddZ	dS )SocketStreamzasyncio.Transportr  r  protocolc                 C  s*   || _ || _td| _td| _d| _d S Nreading from
writing toFr  	_protocolrF   _receive_guard_send_guard_closedrx   r  r  rj   rj   rk   ry   i  s
    

zSocketStream.__init__socket.socketrz   c                 C  s   | j dS Nsocketr  Zget_extra_infor~   rj   rj   rk   _raw_socketp  s    zSocketStream._raw_socketri  r*  rj  rk  c              	     s   | j  | jj sN| j sN| jjsN| j  | jj I d H  | j	  nt
 I d H  z| jj }W n< tk
r   | jrtd n| jjr| jjd ntd Y nX t||kr|d | ||d   }}| jj| | jjs| jj  W 5 Q R X |S r|   )r  r  r  is_setr  
is_closingr  Zresume_readingr   pause_readingrK  rp  r  popleft
IndexErrorr  r:   r   r;   len
appendleftr  )rx   rl  chunkZleftoverrj   rj   rk   ro  t  s2    

zSocketStream.receiver   rt  c                   s   | j  t I d H  | jr"tn| jjd k	r6| jjz| j| W n6 t	k
r| } z| j
 rjt|n W 5 d }~X Y nX | jj I d H  W 5 Q R X d S r|   )r  rK  rp  r  r:   r  r   r  ru  r   r  r8   r  r   )rx   rW  r
  rj   rj   rk   rw    s    
zSocketStream.sendc                   s(   z| j   W n tk
r"   Y nX d S r|   )r  	write_eofOSErrorr~   rj   rj   rk   send_eof  s    zSocketStream.send_eofc                   sZ   | j  sVd| _z| j   W n tk
r2   Y nX | j   tdI d H  | j   d S NTr   )r  r  r  r  r  r   r	   abortr~   rj   rj   rk   rq    s    

zSocketStream.acloseN)ri  )
rd   re   rf   ry   r  r  ro  rw  r  rq  rj   rj   rj   rk   r  h  s   #r  c                   @  sx   e Zd ZU dZded< dZded< dZdddd	Zedd
ddZ	dddddZ
dddddZdd
ddZdS )_RawSocketMixinNr4  _receive_future_send_futureFr  
raw_socketc                 C  s   || _ td| _td| _d S )Nr  r  )_RawSocketMixin__raw_socketrF   r  r  rx   r  rj   rj   rk   ry     s    
z_RawSocketMixin.__init__rz   c                 C  s   | j S r|   )r  r~   rj   rj   rk   r    s    z_RawSocketMixin._raw_socketasyncio.AbstractEventLoopr)  r   c                   sD   ddd fdd}t   }_ j|jd  || |S )Nr   r   rX  c                   s   `  j d S r|   )r  remove_readerr  rY  r   rx   rj   rk   callback  s    z6_RawSocketMixin._wait_until_readable.<locals>.callback)r   r   r  
add_readerr  r   r?  rx   r   r  rY  rj   r  rk   _wait_until_readable  s
    
z$_RawSocketMixin._wait_until_readablec                   sD   ddd fdd}t   }_ j|jd  || |S )Nr   r   rX  c                   s   `  j d S r|   )r  remove_writerr  r  r  rj   rk   r    s    z6_RawSocketMixin._wait_until_writable.<locals>.callback)r   r   r  
add_writerr  r   r?  r  rj   r  rk   _wait_until_writable  s
    
z$_RawSocketMixin._wait_until_writabler   c                   sL   | j sHd| _ | j dkr$| j  | jr6| jd  | jrH| jd  d S )NT)_closingr  filenor   r  r   r  r~   rj   rj   rk   rq    s    
z_RawSocketMixin.aclose)rd   re   rf   r  rr  r  r  ry   r  r  r  r  rq  rj   rj   rj   rk   r    s   


r  c                   @  s`   e Zd ZddddZddddd	d
ZdddddZddddddZddddddZdS )UNIXSocketStreamr   rz   c              	     s$   | j  | jtj W 5 Q R X d S r|   )r  r  r   r  ZSHUT_WRr~   rj   rj   rk   r    s    zUNIXSocketStream.send_eofri  r*  rj  rk  c                   s   t  }t I d H  | j z| j|}W nX tk
rP   | |I d H  Y q tk
r } z| j	rnt
d nt|W 5 d }~X Y qX |st|W  5 Q R  S qW 5 Q R X d S r|   )r   rK  rp  r  r  recvBlockingIOErrorr  r  r  r:   r8   r;   )rx   rl  r   rn  r
  rj   rj   rk   ro    s    zUNIXSocketStream.receivert  c                   s   t  }t I d H  | j t|}|rz| j|}W nX tk
r\   | |I d H  Y q$ t	k
r } z| j
rztd nt|W 5 d }~X Y q$X ||d  }q$W 5 Q R X d S r|   )r   rK  rp  r  
memoryviewr  rw  r  r  r  r  r:   r8   )rx   rW  r   viewZ
bytes_sentr
  rj   rj   rk   rw    s    zUNIXSocketStream.sendztuple[bytes, list[int]])msglenmaxfdsr{   c                   sf  t |tr|dk rtdt |tr,|dk r4tdt }td}t I d H  | j z&| j	|t
||j \}}}}W nX tk
r   | |I d H  Y qZ tk
r }	 z| jrtd nt|	W 5 d }	~	X Y qZX |s|stqqZW 5 Q R X |D ]`\}
}}|
t
jks|t
jkr4t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iz.Received unexpected ancillary data; message = z, cmsg_level = z, cmsg_type = )r  r*  r   r   arrayrK  rp  r  r  Zrecvmsgr  ZCMSG_LENitemsizer  r  r  r  r:   r8   r;   
SOL_SOCKET
SCM_RIGHTSr   Z	frombytesr  list)rx   r  r  r   fdsr   Zancdataflagsr  r
  Z
cmsg_levelZ	cmsg_typeZ	cmsg_datarj   rj   rk   receive_fds  s:    
 &zUNIXSocketStream.receive_fdszCollection[int | IOBase])r   r  r{   c                   s
  |st d|st dt }g }|D ]2}t|tr@|| q&t|tr&||  q&td|}t	 I d H  | j
 z$| j|gtjtj|fg W qW q| tk
r   | |I d H  Y q| tk
r } z| jrtd nt|W 5 d }~X Y q|X q|W 5 Q R X d S )Nzmessage must not be emptyzfds must not be emptyr  )r   r   r  r*  r1  r   r  r  rK  rp  r  r  Zsendmsgr  r  r  r  r  r  r  r:   r8   )rx   r   r  r   ZfilenosfdZfdarrayr
  rj   rj   rk   send_fds=  s4    

 zUNIXSocketStream.send_fdsN)ri  )rd   re   rf   r  ro  rw  r  r  rj   rj   rj   rk   r    s
   'r  c                   @  sZ   e Zd ZU dZded< dZddddZedd	d
dZdd	ddZ	dd	ddZ
dS )TCPSocketListenerNr$  _accept_scopeFr  r  c                 C  s$   || _ ttjt | _td| _d S )Naccepting connections from)_TCPSocketListener__raw_socketr.   r   ZBaseEventLoopr   rt   rF   _accept_guardr  rj   rj   rk   ry   c  s    zTCPSocketListener.__init__rz   c                 C  s   | j S r|   )r  r~   rj   rj   rk   r  h  s    zTCPSocketListener._raw_socketabc.SocketStreamc                   s   | j r
t| j t I d H  t | _zrz| j| j	I d H \}}W nP t
jk
r   z| j| j	 W n ttfk
r   Y nX | j rtd  Y nX W 5 d | _X W 5 Q R X W 5 Q R X |tjtjd | jt|I d H \}}t||S Nr   )r  r:   r  rK  rp  rK   r  rt   Zsock_acceptr  r   r   r  r   r  Z
setsockoptr  ZIPPROTO_TCPZTCP_NODELAYZconnect_accepted_socketr  r  )rx   client_sockZ_addrr  r  rj   rj   rk   acceptl  s,    
 zTCPSocketListener.acceptr   c              	     sh   | j r
d S d| _ | jrZz| j| j W n ttfk
r@   Y nX | j  tdI d H  | j	  d S r  )
r  r  rt   r  r  r   r  r   r	   r   r~   rj   rj   rk   rq    s    
zTCPSocketListener.aclose)rd   re   rf   r  rr  r  ry   r  r  r  rq  rj   rj   rj   rk   r  _  s   
r  c                   @  sH   e Zd ZddddZddddZd	dd
dZeddddZdS )UNIXSocketListenerr  r  c                 C  s"   || _ t | _td| _d| _d S )Nr  F)_UNIXSocketListener__raw_socketr   rt   rF   r  r  r  rj   rj   rk   ry     s    
zUNIXSocketListener.__init__r  rz   c                   s   t  I d H   j z. j \}}|d t|W W  5 Q R  S  tk
r   t	 } j
 j|jd  | fdd |I d H  Y q tk
r } z jrtd nt|W 5 d }~X Y qX qW 5 Q R X d S )NFc                   s    j  jS r|   )rt   r  r  _r~   rj   rk   r     r   z+UNIXSocketListener.accept.<locals>.<lambda>)rK  rp  r  r  r  setblockingr  r  r   r   rt   r  r   r?  r  r  r:   r8   )rx   r  r  rY  r
  rj   r~   rk   r    s"    

zUNIXSocketListener.acceptr   c                   s   d| _ | j  d S r  )r  r  r   r~   rj   rj   rk   rq    s    zUNIXSocketListener.aclosec                 C  s   | j S r|   )r  r~   rj   rj   rk   r    s    zUNIXSocketListener._raw_socketN)rd   re   rf   ry   r  rq  r  r  rj   rj   rj   rk   r    s
   r  c                   @  sZ   e Zd ZdddddZedddd	Zd
dddZddddZdd
dddZdS )	UDPSocketasyncio.DatagramTransportr  r  c                 C  s*   || _ || _td| _td| _d| _d S r  r  r  rj   rj   rk   ry     s
    

zUDPSocket.__init__r  rz   c                 C  s   | j dS r  r  r~   rj   rj   rk   r    s    zUDPSocket._raw_socketr   c                   s   | j  sd| _| j   d S r  r  r  r  r   r~   rj   rj   rk   rq    s    
zUDPSocket.acloseztuple[bytes, IPSockAddrType]c              
     s   | j  t I d H  | jjsF| j sF| jj  | jj	 I d H  z| jj
 W W  5 Q R  S  tk
r   | jr~td ntd Y nX W 5 Q R X d S r|   r  rK  rp  r  r  r  r  r  r  r   r  r  r  r:   r8   r~   rj   rj   rk   ro    s    zUDPSocket.receiverO   rt  c              	     s^   | j N t I d H  | jj I d H  | jr4tn| j	 rDt
n| jj|  W 5 Q R X d S r|   r  rK  rp  r  r  r   r  r:   r  r  r8   sendtorv  rj   rj   rk   rw    s    
zUDPSocket.sendN	rd   re   rf   ry   r  r  rq  ro  rw  rj   rj   rj   rk   r    s   	r  c                   @  sZ   e Zd ZdddddZedddd	Zd
dddZddddZdd
dddZdS )ConnectedUDPSocketr  r  r  c                 C  s*   || _ || _td| _td| _d| _d S r  r  r  rj   rj   rk   ry     s
    

zConnectedUDPSocket.__init__r  rz   c                 C  s   | j dS r  r  r~   rj   rj   rk   r    s    zConnectedUDPSocket._raw_socketr   c                   s   | j  sd| _| j   d S r  r  r~   rj   rj   rk   rq    s    
zConnectedUDPSocket.acloserj  c              
     s   | j  t I d H  | jjsF| j sF| jj  | jj	 I d H  z| jj
 }W n( tk
r~   | jrttd ntd Y nX |d W  5 Q R  S Q R X d S r  r   )rx   Zpacketrj   rj   rk   ro    s    zConnectedUDPSocket.receivert  c              	     s^   | j N t I d H  | jj I d H  | jr4tn| j	 rDt
n| j| W 5 Q R X d S r|   r  rv  rj   rj   rk   rw    s    
zConnectedUDPSocket.sendNr  rj   rj   rj   rk   r    s   	r  c                   @  s*   e Zd ZddddZdddddZd	S )
UNIXDatagramSocketrP   rz   c                   s   t  }t I d H  | j z| jd}W nX tk
rP   | |I d H  Y q tk
r } z| j	rnt
d nt|W 5 d }~X Y qX |W  5 Q R  S qW 5 Q R X d S Nri  )r   rK  rp  r  r  Zrecvfromr  r  r  r  r:   r8   rx   r   rn  r
  rj   rj   rk   ro  #  s    zUNIXDatagramSocket.receiver   rt  c                   s   t  }t I d H  | j z| jj|  W nX tk
rP   | |I d H  Y q tk
r } z| j	rnt
d nt|W 5 d }~X Y qX W 5 Q R  d S qW 5 Q R X d S r|   )r   rK  rp  r  r  r  r  r  r  r  r:   r8   rx   rW  r   r
  rj   rj   rk   rw  4  s    zUNIXDatagramSocket.sendNrd   re   rf   ro  rw  rj   rj   rj   rk   r  "  s   r  c                   @  s*   e Zd ZddddZdddddZd	S )
ConnectedUNIXDatagramSocketrj  rz   c                   s   t  }t I d H  | j z| jd}W nX tk
rP   | |I d H  Y q tk
r } z| j	rnt
d nt|W 5 d }~X Y qX |W  5 Q R  S qW 5 Q R X d S r  )r   rK  rp  r  r  r  r  r  r  r  r:   r8   r  rj   rj   rk   ro  G  s    z#ConnectedUNIXDatagramSocket.receiver   rt  c                   s   t  }t I d H  | j z| j| W nX tk
rP   | |I d H  Y q tk
r } z| j	rnt
d nt|W 5 d }~X Y qX W 5 Q R  d S qW 5 Q R X d S r|   )r   rK  rp  r  r  rw  r  r  r  r  r:   r8   r  rj   rj   rk   rw  X  s    z ConnectedUNIXDatagramSocket.sendNr	  rj   rj   rj   rk   r
  F  s   r
  read_eventsz RunVar[dict[Any, asyncio.Event]]_read_eventswrite_events_write_eventsc                   @  s`   e Zd Zd dddZddddZddddZd	dd
dZddddZddddZdS )rC   rz   c                 C  s
   t | S r|   r   rb  rj   rj   rk   r   t  s    zEvent.__new__r   c                 C  s   t  | _d S r|   )r   rC   _eventr~   rj   rj   rk   ry   w  s    zEvent.__init__c                 C  s   | j   d S r|   )r  r   r~   rj   rj   rk   r   z  s    z	Event.setr   c                 C  s
   | j  S r|   )r  r  r~   rj   rj   rk   r  }  s    zEvent.is_setc                   s,   |   rt I d H  n| j I d H  d S r|   )r  rK  rp  r  r   r~   rj   rj   rk   r     s    z
Event.waitr2   c                 C  s   t t| jjS r|   )r2   r  r  _waitersr~   rj   rj   rk   
statistics  s    zEvent.statisticsN)	rd   re   rf   r   ry   r   r  r   r  rj   rj   rj   rk   rC   s  s   rC   c                   @  s~   e Zd Zdddd dddZddddddd	Zdd
ddZdd
ddZdd
ddZdd
ddZdd
ddZ	dS )rE   Ffast_acquirer   r  r{   c                C  s
   t | S r|   r   r   r  rj   rj   rk   r     s    zLock.__new__r   c                C  s   || _ d | _t | _d S r|   )_fast_acquire_owner_taskr   r  )rx   r  rj   rj   rk   ry     s    zLock.__init__rz   c                   s   t tjt }| jd krn| jsnt I d H  || _| jsjzt	 I d H  W n t
k
rh   |    Y nX d S | j|krtdt }||f}| j| z|I d H  W n4 t
k
r   | j| | j|kr|    Y nX | j| d S Nz)Attempted to acquire an already held Lock)r.   r   r   r   r  r  rK  checkpoint_if_cancelledr  cancel_shielded_checkpointr   releaser   r   r1  r   )rx   r   futrW  rj   rj   rk   acquire  s0    

zLock.acquirec                 C  sB   t tjt }| jd kr(| js(|| _d S | j|kr:tdtd S r  )r.   r   r   r   r  r  r   r<   )rx   r   rj   rj   rk   acquire_nowait  s    
zLock.acquire_nowaitc                 C  s
   | j d k	S r|   )r  r~   rj   rj   rk   locked  s    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   )rx   r   r  rj   rj   rk   r    s    
zLock.releaser3   c                 C  s*   | j rt| j nd }t|  |t| jS r|   )r  AsyncIOTaskInfor3   r  r  r  )rx   Z	task_inforj   rj   rk   r    s    zLock.statisticsN)
rd   re   rf   r   ry   r  r  r  r  r  rj   rj   rj   rk   rE     s   "rE   c                      s   e Zd Zddddddd ddd	Zddddddd
 fddZddddZddddZddddZeddddZ	eddddZ
ddddZ  ZS )rI   NF	max_valuer  r*  r#  r   initial_valuer"  r  r{   c                C  s
   t | S r|   r   r   r$  r"  r  rj   rj   rk   r     s    zSemaphore.__new__)r$  r"  r  c                  s.   t  j||d || _|| _|| _t | _d S )N)r"  )rI  ry   _value
_max_valuer  r   r  )rx   r$  r"  r  rO  rj   rk   ry     s
    zSemaphore.__init__r   rz   c                   s   | j dkrh| jsht I d H  |  j d8  _ | jsdzt I d H  W n tk
rb   |    Y nX d S t	 }| j
| z|I d H  W nD tk
r   z| j| W n tk
r   |   Y nX  Y nX d S Nr   r   )r&  r  rK  r  r  r  r   r  r   r   r1  r   r   rx   r  rj   rj   rk   r    s(    zSemaphore.acquirec                 C  s    | j dkrt|  j d8  _ d S r(  )r&  r<   r~   rj   rj   rk   r    s    
zSemaphore.acquire_nowaitc                 C  s`   | j d k	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)  rj   rj   rk   r    s    

zSemaphore.releasec                 C  s   | j S r|   )r&  r~   rj   rj   rk   r    s    zSemaphore.valuec                 C  s   | j S r|   )r'  r~   rj   rj   rk   r"    s    zSemaphore.max_valuerG   c                 C  s   t t| jS r|   )rG   r  r  r~   rj   rj   rk   r  !  s    zSemaphore.statistics)rd   re   rf   r   ry   r  r  r  r  r  r"  r  r^  rj   rj   rO  rk   rI     s   rI   c                   @  s  e Zd ZU dZded< dd dddZdddd	Zd
dddZdddd
dddZe	ddddZ
e
jdd
dddZ
e	ddddZe	ddddZd
dddZdd
d d!d"Zd
dd#d$Zdd
d d%d&Zd
dd'd(Zdd
d d)d*Zd+dd,d-Zd.S )/rA   r   r   _total_tokenstotal_tokensr{   c                 C  s
   t | S r|   r   r   r,  rj   rj   rk   r   (  s    zCapacityLimiter.__new__)r,  c                 C  s   t  | _t | _|| _d S r|   )r   
_borrowersr   _wait_queuer,  )rx   r,  rj   rj   rk   ry   +  s    zCapacityLimiter.__init__r   rz   c                   s   |   I d H  d S r|   )r  r~   rj   rj   rk   r0  0  s    zCapacityLimiter.__aenter__r  r  r  r   c                   s   |    d S r|   )r  r   rj   rj   rk   r2  3  s    zCapacityLimiter.__aexit__c                 C  s   | j S r|   )r*  r~   rj   rj   rk   r,  ;  s    zCapacityLimiter.total_tokensr  c                 C  st   t |tst|std|dk r,tdt|| j d}|| _| jrp|rp| jj	ddd }|
  |d8 }qBd S )Nz'total_tokens must be an int or math.infr   ztotal_tokens must be >= 1r   FZlast)r  r*  r  Zisinfr>  r   maxr*  r/  popitemr   )rx   r  waiters_to_notifyeventrj   rj   rk   r,  ?  s    
r*  c                 C  s
   t | jS r|   )r  r.  r~   rj   rj   rk   borrowed_tokensO  s    zCapacityLimiter.borrowed_tokensc                 C  s   | j t| j S r|   )r*  r  r.  r~   rj   rj   rk   available_tokensS  s    z CapacityLimiter.available_tokensc                 C  s   |  t  d S r|   )acquire_on_behalf_of_nowaitr   r~   rj   rj   rk   r  W  s    zCapacityLimiter.acquire_nowaitr   )borrowerr{   c                 C  s<   || j k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   )rx   r8  rj   rj   rk   r7  Z  s    
z+CapacityLimiter.acquire_on_behalf_of_nowaitc                   s   |  t I d H S r|   )acquire_on_behalf_ofr   r~   rj   rj   rk   r  f  s    zCapacityLimiter.acquirec                   s   t  I d H  z| | W nj tk
r   t }|| j|< z| I d H  W n$ tk
rt   | j	|d   Y nX | j
| Y n4X zt  I d H  W n tk
r   |    Y nX d S r|   )rK  r  r7  r<   r   rC   r/  r   r   popr.  r   r  r  rx   r8  r4  rj   rj   rk   r9  i  s"    
z$CapacityLimiter.acquire_on_behalf_ofc                 C  s   |  t  d S r|   )release_on_behalf_ofr   r~   rj   rj   rk   r  ~  s    zCapacityLimiter.releasec                 C  sd   z| j | W n tk
r.   tdd Y nX | jr`t| j | jk r`| jjddd }|  d S )Nz@this borrower isn't holding any of this CapacityLimiter's tokensFr0  r   )	r.  r   r   r   r/  r  r*  r2  r   r;  rj   rj   rk   r<    s    z$CapacityLimiter.release_on_behalf_ofr1   c                 C  s   t | j| jt| jt| jS r|   )r1   r5  r,  tupler.  r  r/  r~   rj   rj   rk   r    s    zCapacityLimiter.statisticsN)rd   re   rf   r*  rr  r   ry   r0  r2  r  r,  r   r5  r6  r  r7  r  r9  r  r<  r  rj   rj   rj   rk   rA   %  s(   
rA   _default_thread_limiterzRunVar[CapacityLimiter]c                   @  sh   e Zd ZddddZddddd	Zd d
ddZdddddddZd d
ddZdd
ddZdS )_SignalReceiverztuple[Signals, ...])signalsc                 C  s,   || _ t | _t | _t | _t | _	d S r|   )
_signalsr   rt   r   _signal_queuer   r   r+  r   _handled_signals)rx   r@  rj   rj   rk   ry     s
    
z_SignalReceiver.__init__r   r   )r   r{   c                 C  s&   | j | | j s"| jd  d S r|   )rB  r1  r+  r   r   )rx   r   rj   rj   rk   _deliver  s    
z_SignalReceiver._deliverrz   c                 C  s2   t | jD ]"}| j|| j| | j| q
| S r|   )r   rA  rt   Zadd_signal_handlerrD  rC  r   )rx   sigrj   rj   rk   r     s    z_SignalReceiver.__enter__r  r  r  ro   r   c                 C  s   | j D ]}| j| qd S r|   )rC  rt   Zremove_signal_handler)rx   r   r   r   rE  rj   rj   rk   r     s    
z_SignalReceiver.__exit__c                 C  s   | S r|   rj   r~   rj   rj   rk   	__aiter__  s    z_SignalReceiver.__aiter__c                   s4   t  I d H  | js*t | _| jI d H  | j S r|   )rK  rp  rB  r   r   r+  r  r~   rj   rj   rk   	__anext__  s
    
z_SignalReceiver.__anext__N)	rd   re   rf   ry   rD  r   r   rF  rG  rj   rj   rj   rk   r?    s   
r?  c                      s0   e Zd Zdd fddZddddZ  ZS )	r   r   r   c                   sL   t |}|d krd }n|j}t t||| |  t	|| _
d S r|   )r   r   r!  rI  ry   r  Zget_namer   weakrefrefr7  )rx   r   r  r!  rO  rj   rk   ry     s    
zAsyncIOTaskInfo.__init__r   rz   c                 C  sv   |    }sdS tjdkr(| rDdS nt|jtjrD|j rDdS t	
| }rr|j }rr|jpp|j op| S dS )NFrX   T)r7  r   r   r   r  r  r   r   r   r   r   r   r  r   r  )rx   r   r  r   rj   rj   rk   has_pending_cancellation  s     

z(AsyncIOTaskInfo.has_pending_cancellation)rd   re   rf   ry   rJ  r^  rj   rj   rO  rk   r     s   
r   c                   @  s   e Zd ZU ded< dddddddd	d
ddZd dddZdddd	dddZddddZddd	dddZd	dddZ	d d	d!d"d#Z
d$d%d&d'd(d)d*Zd+dd,d-d.d/Zd0dd'd-d1d2Zd3dd	d4d5d6ZdS )7
TestRunnerzBMemoryObjectSendStream[tuple[Awaitable[Any], asyncio.Future[Any]]]_send_streamNF)rm   
use_uvlooprn   ro   r   rp   r   )rm   rM  rn   r{   c                C  s8   |r|d krdd l }|j}t||d| _g | _d | _d S )Nr   rl   )uvloopr   rZ   _runnerr/  _runner_task)rx   rm   rM  rn   rN  rj   rj   rk   ry     s    zTestRunner.__init__rz   c                 C  s   | j   |  | j | S r|   )rO  r   r   Zset_exception_handler_exception_handlerr~   rj   rj   rk   r     s    
zTestRunner.__enter__r  r  r  r   c                 C  s   | j ||| d S r|   )rO  r   r   rj   rj   rk   r     s    zTestRunner.__exit__r   c                 C  s
   | j  S r|   )rO  r   r~   rj   rj   rk   r     s    zTestRunner.get_loopr  rc  )r   r   r{   c                 C  s0   t |dtr"| j|d  n
|| d S )Nr   )r  r   r   r/  r1  Zdefault_exception_handler)rx   r   r   rj   rj   rk   rQ    s    zTestRunner._exception_handlerc                 C  s<   | j r8| j g  }| _ t|dkr*|d n|r8td|d S )Nr   r   z6Multiple exceptions occurred in asynchronous callbacks)r/  r  ra   )rx   r_   rj   rj   rk   _raise_async_exceptions  s    
 z"TestRunner._raise_async_exceptionszOMemoryObjectReceiveStream[tuple[Awaitable[T_Retval], asyncio.Future[T_Retval]]])receive_streamr{   c                   s   ddl m} | | j |2 z3 d H W \}}z|I d H }W nz tk
rt } z| sb|j|j   W 5 d }~X Y q tk
r } z&| s|| t	|t
|fs W 5 d }~X Y qX | s|| q6 W 5 Q R X W 5 Q R X d S )Nr   )OutcomeException)Z_pytest.outcomesrT  rL  r   r   r   r   r   r   r  r   r   )rx   rS  rT  r   r   retvalr
  rj   rj   rk   _run_tests_and_fixtures&  s     
z"TestRunner._run_tests_and_fixturesz Callable[P, Awaitable[T_Retval]]zP.argszP.kwargsr   )r   r   r@  r{   c                   sl   | j s<tttt tjf  d\| _}|  	| 
|| _ |||}|   }| j||f |I d H S r  )rP  r?   r,   r%   r#   r   r   rL  r   r   rV  r   Zsend_nowait)rx   r   r   r@  rS  r   r   rj   rj   rk   _call_in_runner_taskA  s    

zTestRunner._call_in_runner_taskz,Callable[..., AsyncGenerator[T_Retval, Any]]zIterable[T_Retval])fixture_funcr@  r{   c                 c  s   |f |}|   | |jd }|   |V  z|   | |jd  W n tk
rh   |   Y nX |   |  tdd S )Nz$Async generator fixture did not stop)r   r   rW  asendrR  StopAsyncIterationrq  r   )rx   rX  r@  ZasyncgenZfixturevaluerj   rj   rk   run_asyncgen_fixtureT  s    
zTestRunner.run_asyncgen_fixturez,Callable[..., Coroutine[Any, Any, T_Retval]]c                 C  s$   |   | j|f|}|   |S r|   )r   r   rW  rR  )rx   rX  r@  rU  rj   rj   rk   run_fixturek  s
    zTestRunner.run_fixturez'Callable[..., Coroutine[Any, Any, Any]])	test_funcr@  r{   c              
   C  sX   z|   | j|f| W n. tk
rJ } z| j| W 5 d }~X Y nX |   d S r|   )r   r   rW  r   r/  r1  rR  )rx   r]  r@  r
  rj   rj   rk   run_testv  s    zTestRunner.run_test)rd   re   rf   rr  ry   r   r   r   rQ  rR  rV  rW  r[  r\  r^  rj   rj   rj   rk   rK    s   
rK  c                
   @  sD  e Zd ZeddddddddZedd	d
dZedd	ddZedd	ddZedd	ddZedd	ddZ	edd	ddZ
edddddZeejdddddd d!d"Zedd	d#d$Zed%d	d&d'Zed(d	d)d*Zedd+d,d-d.Zed/dd0d1d2dd3d4d5d6Zedd7d8d9d:Zedd;ddd<dd=d>d?Zedd	d@dAZedddddBdCdDZed;ddddBdEdFZedGd	dHdIZedJdKdKdKdLdMdNdOdPZedQddRdSdTZeddUd1dVdWdXdYdZZed[d\d]d^d_Zed`dadbdcddZed`dadbdedfZedgdVdVddhdidjdkZ ed`dldmdndodpZ!edqdqdqdqdrdsdtdudvd1d1dwdxdydzZ"edd{d1d|d}d~dZ#ed`ddbddZ$ed`ddbddZ%edd	ddZ&edddddZ'edd	ddZ(edd	ddZ)edd	ddZ*edddddZ+d/S )rK  z1Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]]r3  rc  r   )r   r   r@  optionsr{   c           
   
     s   t dd fdd}|dd }|dd }|d krV|ddrVd	d l}|j}t||d
}	|	| W  5 Q R  S Q R X d S )Nr   rz   c                    sJ   t tjt } | t td d t| < z  I d H W S t| = X d S r|   )r.   r   r   r   Zset_namer   r   r   r   r   r   rj   rk   wrapper  s    z#AsyncIOBackend.run.<locals>.wrapperrm   rn   rM  Fr   rl   )r   r   rN  r   rZ   r   )
r   r   r   r@  r_  ra  rm   rn   rN  Zrunnerrj   r`  rk   r     s    
zAsyncIOBackend.runr   rz   c                 C  s   t  S r|   )r   rb  rj   rj   rk   current_token  s    zAsyncIOBackend.current_tokenr   c                 C  s
   t   S r|   )r   r  rb  rj   rj   rk   rL    s    zAsyncIOBackend.current_timer   c                 C  s   t S r|   )r   rb  rj   rj   rk   cancelled_exception_class  s    z(AsyncIOBackend.cancelled_exception_classr   c                   s   t dI d H  d S r  r	   rb  rj   rj   rk   rp    s    zAsyncIOBackend.checkpointc                   sh   t  }|d krd S zt| j}W n tk
r6   Y d S X |rd|jrRtdI d H  q8|jr\qdq8|j}q8d S r  )r   r   r   r   r  r	   r   r   )r   r   r   rj   rj   rk   r    s    z&AsyncIOBackend.checkpoint_if_cancelledc              	     s(   t dd tdI d H  W 5 Q R X d S )NTrE  r   )rK   r	   rb  rj   rj   rk   r    s    z)AsyncIOBackend.cancel_shielded_checkpoint)delayr{   c                   s   t |I d H  d S r|   rd  )r   re  rj   rj   rk   r	     s    zAsyncIOBackend.sleepFr   r   rK   r   c                C  s   t ||dS )Nr   rJ   r   rj   rj   rk   create_cancel_scope  s    z"AsyncIOBackend.create_cancel_scopec                 C  sj   zt t  j}W n tk
r*   tj Y S X tj}|rft||j}|jrTtj }qfq2|j	r^qfq2|j
}q2|S r|   )r   r   r   r   r  r  minr   r   r   r   )r   r   r   rj   rj   rk   current_effective_deadline  s     
z)AsyncIOBackend.current_effective_deadlinezabc.TaskGroupc                 C  s   t  S r|   )r.  rb  rj   rj   rk   create_task_group  s    z AsyncIOBackend.create_task_groupz	abc.Eventc                 C  s   t  S r|   rB   rb  rj   rj   rk   create_event  s    zAsyncIOBackend.create_eventzabc.Lockr  c                C  s
   t |dS )Nr  rD   r  rj   rj   rk   create_lock  s    zAsyncIOBackend.create_lockNr!  r*  r#  zabc.Semaphorer#  c                C  s   t |||dS )Nr!  rH   r%  rj   rj   rk   create_semaphore  s    zAsyncIOBackend.create_semaphorezabc.CapacityLimiterr+  c                 C  s   t |S r|   r@   r-  rj   rj   rk   create_capacity_limiter  s    z&AsyncIOBackend.create_capacity_limiterz&Callable[[Unpack[PosArgsT]], T_Retval]zabc.CapacityLimiter | None)r   r   abandon_on_cancellimiterr{   c                   s  |   I d H  zt }t }W n4 tk
rV   t }t }t| t| Y nX |pb|  4 I d H  t| d }t	
 }t }	|st|	||}
|
  ||
 |	|
j nN| }
|  }|r||d j tjk rq| }|j|j |  qt }|tjjd  |s4|jd kr:|}n|j}|
j|||||f |I d H W  5 Q R  W  5 Q I d H R  S Q R X W 5 Q I d H R X d S )NrE  r   )rp  r_  r   r`  LookupErrorr   r   current_default_thread_limiterrK   r   r   r   rF  r   r   r?  r\  r:  rL  rM  r]  r  r   Zremove_done_callbackr   r   sniffiocurrent_async_library_cvarr   rJ  rZ  )r   r   r   rn  ro  rH  rG  r  r   r   ZworkerZnowZexpired_workerr   Zworker_scoperj   rj   rk   run_sync_in_worker_thread	  sL    


z(AsyncIOBackend.run_sync_in_worker_threadc                 C  s>   t j}|d k	r:|jr(tdt|d|jr2d S |j}qd S )Nr  r   )r7   rV  r  r   r  r   r   )r   r  rj   rj   rk   check_cancelled>	  s    zAsyncIOBackend.check_cancelled)r   r   tokenr{   c           	        sX   ddd fdd}t t|}t }|tjjd |tj}|t	j
||}| S )NrK   r   )r  r{   c              
     s   d}t tjt }td | t|< | j| zNz  I d H W W :S  t	k
rv } zt
j	t|d W 5 d }~X Y nX W 5 | j| X d S r  )r.   r   r   r   r   r   r   r   r[  r   
concurrentZfuturesr   )r  Z__tracebackhide__r   r
  r`  rj   rk   task_wrapperQ	  s    (z:AsyncIOBackend.run_async_from_thread.<locals>.task_wrapperr   )r.   r   r   r   rr  rs  r   r7   rV  r   Zrun_coroutine_threadsaferQ  )	r   r   r   rv  rx  r   r   ra  rY  rj   r`  rk   run_async_from_threadJ	  s    

  z$AsyncIOBackend.run_async_from_threadc                   s@   t dd fdd}t tt|}||  S )Nr   rz   c               
     s\   zt jd    W n8 tk
rV }  z|  t| tsF W 5 d } ~ X Y nX d S )Nr   )rr  rs  r   r   r   r   r  r   )r
  r   rY  r   rj   rk   ra  m	  s    

z4AsyncIOBackend.run_sync_from_thread.<locals>.wrapper)r   r   r.   r   r   rQ  )r   r   r   rv  ra  r   rj   rz  rk   rd  f	  s    	

z#AsyncIOBackend.run_sync_from_threadzabc.BlockingPortalc                 C  s   t  S r|   )ra  rb  rj   rj   rk   create_blocking_portal|	  s    z%AsyncIOBackend.create_blocking_portalz)StrOrBytesPath | Sequence[StrOrBytesPath]zint | IO[Any] | Noner#   rx  )commandr  r  r  r@  r{   c          
        s   |   I d H  t|tr"t|}t|ttfrRtj|f|||d|I d H }ntj	||||d|I d H }|j
rt|j
nd }|jrt|jnd }|jrt|jnd }	t||||	S )N)r  r  r  )rp  r  r   osfspathr   rj  r   Zcreate_subprocess_shellZcreate_subprocess_execr  rs  r  rg  r  rx  )
r   r|  r  r  r  r@  r  Zstdin_streamZstdout_streamZstderr_streamrj   rj   rk   open_process	  s2    


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   r?  r   r  )r   rG  rj   rj   rk   #setup_process_pool_exit_at_shutdown	  s    z2AsyncIOBackend.setup_process_pool_exit_at_shutdownr   zIPSockAddrType | Noner  )hostportlocal_addressr{   c                   s@   t ttjtf t jt|||dI d H \}}|  t||S )N)
local_addr)	r.   r,   r   r  r  r   Zcreate_connectionr  r  )r   r  r  r  r  r  rj   rj   rk   connect_tcp	  s       
zAsyncIOBackend.connect_tcpzstr | byteszabc.UNIXSocketStream)pathr{   c                   s   |   I d H  t  ttjd z| W nf tk
r   t } 	|j
d  | fdd |I d H  Y q* tk
r      Y q*X tS q*d S )NFc                   s
     S r|   r  r  r   r  rj   rk   r   	  r   z-AsyncIOBackend.connect_unix.<locals>.<lambda>)rp  r   r  ZAF_UNIXr  connectr  r   r   r  r   r?  r   r   r  )r   r  rY  rj   r  rk   connect_unix	  s    
zAsyncIOBackend.connect_unixr  rN   )sockr{   c                 C  s   t |S r|   )r  r   r  rj   rj   rk   create_tcp_listener	  s    z"AsyncIOBackend.create_tcp_listenerc                 C  s   t |S r|   )r  r  rj   rj   rk   create_unix_listener	  s    z#AsyncIOBackend.create_unix_listenerr   zUDPSocket | ConnectedUDPSocket)familyr  remote_address
reuse_portr{   c                   sP   t  jt||||dI d H \}}|jr4|  |j|sBt||S t||S d S )N)r  Zremote_addrr  r  )r   Zcreate_datagram_endpointr  r   r   r  r  )r   r  r  r  r  r  r  rj   rj   rk   create_udp_socket	  s    
z AsyncIOBackend.create_udp_socketzstr | bytes | Nonez8abc.UNIXDatagramSocket | abc.ConnectedUNIXDatagramSocket)r  remote_pathr{   c                   s   |   I d H  t  |rz| W nf tk
rp   t } |jd  | fdd |I d H  Y q t	k
r   
   Y qX tS qntS d S )Nc                   s
     S r|   r  r  r  rj   rk   r   	  r   z<AsyncIOBackend.create_unix_datagram_socket.<locals>.<lambda>)rp  r   r  r  r   r   r  r   r?  r   r   r
  r  )r   r  r  rY  rj   r  rk   create_unix_datagram_socket	  s    z*AsyncIOBackend.create_unix_datagram_socketr   r  typeprotor  zbytes | str | Nonezstr | int | Nonezint | AddressFamilyzint | SocketKindz]list[tuple[AddressFamily, SocketKind, int, str, tuple[str, int] | tuple[str, int, int, int]]])r  r  r  r  r  r  r{   c                  s   t  j||||||dI d H S )Nr  )r   getaddrinfo)r   r  r  r  r  r  r  rj   rj   rk   r  
  s         zAsyncIOBackend.getaddrinforM   ztuple[str, str])sockaddrr  r{   c                   s   t  ||I d H S r|   )r   getnameinfo)r   r  r  rj   rj   rk   r  
  s    zAsyncIOBackend.getnameinfoc              
     s   |   I d H  zt }W n" tk
r<   i }t| Y nX ||rRtdd t }t  }||< |	||j z| I d H  W 5 |
|d d k	r|| d}nd}X |std S )Nr  TF)rp  r  r   rp  r   r9   r   r   rC   r  r:  r  r   r:   )r   r  r  r   r4  readablerj   rj   rk   wait_socket_readable$
  s&    


z#AsyncIOBackend.wait_socket_readablec              
     s   |   I d H  zt }W n" tk
r<   i }t| Y nX ||rRtdd t }t  }||< |	|
 |j z| I d H  W 5 ||d d k	r|| d}nd}X |std S )Nr  TF)rp  r  r   rp  r   r9   r   r   rC   r  r  r:  r  r   r:   )r   r  r  r   r4  writablerj   rj   rk   wait_socket_writable?
  s&    


z#AsyncIOBackend.wait_socket_writablerA   c                 C  s:   z
t  W S  tk
r4   td}t | | Y S X d S )N(   )r>  r   rp  rA   r   )r   ro  rj   rj   rk   rq  Z
  s    

z-AsyncIOBackend.current_default_thread_limiterr   z&ContextManager[AsyncIterator[Signals]])r@  r{   c                 G  s   t |S r|   )r?  )r   r@  rj   rj   rk   open_signal_receiverc
  s    z#AsyncIOBackend.open_signal_receiverr4   c                 C  s
   t t S r|   )r   r   rb  rj   rj   rk   get_current_taski
  s    zAsyncIOBackend.get_current_taskzSequence[TaskInfo]c                 C  s   dd t  D S )Nc                 S  s   g | ]}|  st|qS rj   )r   r   )r   r   rj   rj   rk   r   o
  s      z4AsyncIOBackend.get_running_tasks.<locals>.<listcomp>)r   rb  rj   rj   rk   get_running_tasksm
  s    z AsyncIOBackend.get_running_tasksc                   s\   |   I d H  t }t D ]6}||kr(q|j}|d ks>| rtdI d H   qqd S qd S )Ng?)rp  r   r   r  r   r	   )r   Z	this_taskr   r  rj   rj   rk   wait_all_tasks_blockedq
  s    
z%AsyncIOBackend.wait_all_tasks_blockedrK  )r_  r{   c                 C  s
   t f |S r|   )rK  )r   r_  rj   rj   rk   create_test_runner
  s    z!AsyncIOBackend.create_test_runner)FN)N)r   ),rd   re   rf   classmethodr   rb  rL  rc  rp  r  r  r	   r  r  rf  rh  ri  rj  rk  rl  rm  rt  ru  ry  rd  r{  r  r  r  r  r  r  r  r  r  r  r  r  rq  r  r  r  r  r  rj   rj   rj   rk   rK    s    	  :#	   rK  )Z
__future__r   r  r   concurrent.futuresrw  r  r}  r  r   r   rH  r   r   r   r   r   r   r	   Zasyncio.base_eventsr
   collectionsr   r   Zcollections.abcr   r   r   
contextlibr   r   r   r   Zdataclassesr   	functoolsr   r   inspectr   r   r   r   ior   r   rJ  r   r   r   r   r   r    typesr!   typingr"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   rr  r<  r1   r2   r3   r4   r5   Z_core._eventloopr6   r7   Z_core._exceptionsr8   r9   r:   r;   r<   r=   Z_core._socketsr>   Z_core._streamsr?   Z_core._synchronizationrA   ZBaseCapacityLimiterrC   Z	BaseEventrE   ZBaseLockrF   rG   rI   ZBaseSemaphoreZ_core._tasksrK   ZBaseCancelScoperL   rM   rN   rO   rP   Zabc._eventlooprQ   ZlowlevelrR   Zstreams.memoryrS   rT   r   rW   Ztyping_extensionsrZ   r[   r\   enumr]   r^   r_   r`   Zexceptiongroupra   Enumrb   r   r   r   r   r   r   r   rr  r   r   r   r   r   r   Z
TaskStatusr(  r.  r   Z_Retval_Queue_TyperF  r_  r`  ra  ZByteReceiveStreamrg  ZByteSendStreamrs  rx  r  r  ZProtocolr  r  r  r  r  r  r  r  r  r  r
  r  r  r>  r?  r   rK  rK  Zbackend_classrj   rj   rj   rk   <module>   s    $	<  
 y "K9'U.t<%02$$JQr/"     