a
    ^gk                    @  s  U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlmZmZmZmZmZmZmZ d dlmZ d dlmZmZ d dlmZmZmZmZmZmZmZm Z  d dlm!Z! d dl"m#Z#m$Z$ d d	l%m&Z&m'Z' d d
l(m)Z) d dl*m+Z+m,Z, d dl-m.Z.m/Z/m0Z0m1Z1 d dl2m3Z3 d dlm4Z4 d dl5m6Z6 d dl7m8Z8 d dlm9Z9m:Z: d dl
m;Z; d dl<m=Z=m>Z> d dl?m@Z@mAZAmBZBmCZCmDZDmEZE d dlmFZF d dlGZGddlHmIZImJZJmKZKmLZLmMZM ddlNmOZOmPZP 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"lMmjZjmkZkmlZlmmZmmnZn dd#lompZp dd$lqmrZr dd%lsmtZtmuZu eArd d&lvmwZw nexZwe	jyd'krd d(l?mzZz nd d(l{mzZz e	jyd)kr
d d*lm|Z| d d+l?m}Z}m~Z~ nd dl%Z%d dlZd dl7Z7d d,lmZmZmZmZ d d-lmZ d d+l{m}Z}m~Z~ G d.d/ d/ejZG d0d1 d1Z|d2d3d4d5d6Zd2d3d4d7d8ZeDd9ZeDd:d;d<Ze}d=Zezd>Zerd?Zd@ed?< dAdBdCdDZdEdFdGdHdIZeF ZdJedK< dAdLdMdNdOZdPdLdQdRdSZG dTdU dUeiZhG dVdW dWZeF ZdXedY< G dZd[ d[eMjZe	jyd\krrejjZd]ed^< ndZG d_d` d`eMjZeeCe eCe f ZG dadb dbe;ZerdcZddedc< erdeZdfede< G dgdh dheMjZe)didjG dkdl dleMjZe)didjG dmdn dneMjZe)didjG dodp dpeMjZdqdrd3dsdtduZdvd3dwdxdyZG dzd{ d{ejZG d|d} d}ejZG d~d deMjZG dd dZG dd deeMjZG dd deMjlZG dd deMjlZG dd deMjZG dd deMjZG dd deeMjZG dd deeMjZerdZded< erdZded< G dd de`Z_G dd debZaG dd defZeG dd de^Z]erdZded< G dd dZG dd deLZG dd deMjZG dd dej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suppress)Contextcopy_context)	dataclass)partialwraps)CORO_RUNNINGCORO_SUSPENDEDgetcoroutinestateiscoroutine)IOBase)PathLike)Queue)Signals)AddressFamily
SocketKind)Thread)CodeTypeTracebackType)IOTYPE_CHECKINGAnyOptionalTypeVarcast)WeakKeyDictionary   )CapacityLimiterStatisticsEventStatisticsLockStatisticsTaskInfoabc)claim_worker_threadthreadlocals)BrokenResourceErrorBusyResourceErrorClosedResourceErrorEndOfStream
WouldBlockiterate_exceptions)convert_ipv6_sockaddr)create_memory_object_streamCapacityLimiterEventLock)ResourceGuardSemaphoreStatistics	SemaphoreCancelScope)AsyncBackendIPSockAddrTypeSocketListenerUDPPacketTypeUNIXDatagramPacketType)StrOrBytesPath)RunVar)MemoryObjectReceiveStreamMemoryObjectSendStream)FileDescriptorLike)   
   )	ParamSpecrW      )Runner)TypeVarTupleUnpack)
coroutinesevents
exceptionstasks)BaseExceptionGroupc                   @  s   e Zd ZdZdZdZdS )_StatecreatedZinitializedclosedN)__name__
__module____qualname__CREATEDINITIALIZEDCLOSED rm   rm   f/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/anyio/_backends/_asyncio.pyrd   }   s   rd   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 )"r\   Ndebugloop_factorybool | None&Callable[[], AbstractEventLoop] | Nonec                C  s0   t j| _|| _|| _d | _d | _d| _d| _d S )Nr   F)	rd   rj   _state_debug_loop_factory_loop_context_interrupt_count_set_event_loop)selfrp   rq   rm   rm   rn   __init__   s    zRunner.__init__returnc                 C  s   |    | S N)
_lazy_initr{   rm   rm   rn   	__enter__   s    zRunner.__enter__type[BaseException]BaseExceptionr)   Noneexc_typeexc_valexc_tbr~   c                 C  s   |    d S r   )closer{   r   r   r   rm   rm   rn   __exit__   s    zRunner.__exit__c              	   C  s   | j tjurdS zn| j}t| ||  t|drH||  n|t	| W | j
rhtd |  d| _tj| _ n(| j
rtd |  d| _tj| _ 0 dS )zShutdown and close event loop.Nshutdown_default_executor)rt   rd   rk   rw   _cancel_all_tasksrun_until_completeshutdown_asyncgenshasattrr   _shutdown_default_executorrz   r`   set_event_loopr   rl   r{   looprm   rm   rn   r      s&    



zRunner.closer   c                 C  s   |    | jS )zReturn embedded event loop.)r   rw   r   rm   rm   rn   get_loop   s    zRunner.get_loop)contextzCoroutine[T_Retval]T_Retval)coror~   c             
   C  s  t |std|t dur,td|   |du rB| j}|| j	j
|}t t u rttjtju rt| j|d}zttj| W q ty   d}Y q0 nd}d| _zz8| j	|W W |durttj|u rttjtj S  tjy>   | jdkr8t|dd}|dur8| dkr8t  Y n0 W |durttj|u rttjtj n.|durttj|u rttjtj 0 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`   _get_running_loopRuntimeErrorr   rx   runrw   r   	threadingcurrent_threadmain_threadsignal	getsignalSIGINTdefault_int_handlerr   
_on_sigintry   r   ra   r   getattrKeyboardInterrupt)r{   r   r   taskZsigint_handlerr   rm   rm   rn   r      sZ    
	
z
Runner.runc                 C  s   | j tju rtd| j tju r$d S | jd u rRt | _| j	s\t
| j d| _	n
|  | _| jd urt| j| j t | _tj| _ d S )NzRunner is closedT)rt   rd   rl   r   rk   rv   r`   new_event_looprw   rz   r   ru   	set_debugcontextvarsr   rx   r   rm   rm   rn   r      s    




zRunner._lazy_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   rm   rm   rm   rm   rn   <lambda>       z#Runner._on_sigint.<locals>.<lambda>)ry   donecancelrw   call_soon_threadsafer   )r{   signumframer   rm   rm   rn   r      s    zRunner._on_sigint)rg   rh   ri   r|   r   r   r   r   r   r   r   rm   rm   rm   rn   r\      s   0r\   r   r   r   r~   c                 C  st   t | }|sd S |D ]}|  q| t j|ddi |D ]0}| rLq>| d ur>| d| |d q>d S )Nreturn_exceptionsTz1unhandled exception during asyncio.run() shutdown)message	exceptionr   )rb   r   r   r   gather	cancelledr   call_exception_handler)r   	to_cancelr   rm   rm   rn   r     s     

r   c                   sn   ddd fdd}d _  jdu r(dS   }tj||fd}|  z|I dH  W |  n
|  0 dS )	z.Schedule the shutdown of the default executor.zasyncio.futures.Futurer   )futurer~   c              
     sX   z  j jdd  | jd  W n2 tyR } z | j| W Y d }~n
d }~0 0 d S )NT)wait)_default_executorshutdownr   
set_result	Exceptionset_exception)r   exr   rm   rn   _do_shutdown  s
    z0_shutdown_default_executor.<locals>._do_shutdownTN)targetargs)_executor_shutdown_calledr   create_futurer   r'   startjoin)r   r   r   threadrm   r   rn   r     s    
r   r   T_contraT)contravariantPosArgsTP
_root_taskzRunVar[asyncio.Task | None]r   r}   c                  C  s   t d } | d ur|  s| S t D ]Z}|jr$| s$dd |jD }|D ]2}|tu sft|dd dkrJt | |    S qJq$tt	j
t }t|}|r|j}|r|jd ur|j}q|d urtt	j
|jS |S )Nc                 S  s   g | ]\}}|qS rm   rm   ).0cbr   rm   rm   rn   
<listcomp>>  r   z"find_root_task.<locals>.<listcomp>rh   zuvloop.loop)r   getr   r   
_callbacksr
   r   setr/   asyncioTaskr   _task_statescancel_scope_parent_scope
_host_task)	root_taskr   	callbacksr   stater   rm   rm   rn   find_root_task6  s,    



r   r   str)funcr~   c                 C  s0   t | dd }t | dd }ddd ||fD S )Nrh   ri   .c                 S  s   g | ]}|r|qS rm   rm   )r   xrm   rm   rn   r   X  r   z%get_callable_name.<locals>.<listcomp>)r   r   )r   modulequalnamerm   rm   rn   get_callable_nameU  s    r   z1WeakKeyDictionary[asyncio.AbstractEventLoop, Any]	_run_varsbool)r   r~   c                 C  sP   |   }|dusJ zt|ttfv W S  tyJ   td|  ddY n0 dS )zBReturn ``True`` if the task has been started and has not finished.NzCannot determine if task z has started or not)get_coror   r   r   AttributeErrorr   )r   r   rm   rm   rn   _task_startedb  s    r   r   excr~   c                 C  sB   | j r*t| j d tr*| j d dr*dS t| jtr>| j} q dS )Nr   Cancelled by cancel scope TF)r   
isinstancer   
startswith__context__r   r   rm   rm   rn   is_anyio_cancellationt  s    r   c                   @  s4  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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 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 )-rL   Fdeadlineshieldfloatr   r   r   r~   c                C  s
   t | S r   object__new__clsr   r   rm   rm   rn   r     s    zCancelScope.__new__c                 C  sb   || _ || _d | _t | _d| _d| _d| _d | _d | _	t | _
d | _tjdkrXd| _nd | _d S )NFrZ   r   )	_deadline_shieldr   r   _child_scopes_cancel_called_cancelled_caught_active_timeout_handle_cancel_handle_tasksr   sysversion_info_pending_uncancellations)r{   r   r   rm   rm   rn   r|     s    
zCancelScope.__init__r}   c                 C  s   | j rtdttjt  | _}| j| zt	| }W n$ t
y^   td | }|t	|< Y n60 |j| _| |_| jd ur| jj|  | jj| |   d| _ | jr| |  | 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{   Z	host_task
task_staterm   rm   rn   r     s*    


zCancelScope.__enter__type[BaseException] | NoneBaseException | NoneTracebackType | Noner   c                 C  s  ~| j stdt | jur$td| jd us2J t| j}|d u sP|j| urXtdzFd| _ | jrx| j  d | _| j	
| j | jd ur| jj
|  | jj	| j | j|_|   | jrF| jsF| jr| j  |  jd8  _qd}|d ur.t|D ](}t|tr&t|r&d| _nd}q| jo:| W d | _~S | jr| jd us^J | jjd uspJ | j j| j7  _d| _W d | _~dS W d | _~n
d | _~0 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 scopeFr   Tr   )r  r   r   r   r   r   r   r	  r   r  remover   r  r  _restart_cancellation_in_parentr  %_parent_cancellation_is_visible_to_usr  r   r>   r   r   r   r  )r{   r   r   r   Zhost_task_stateZcannot_swallow_exc_valr   rm   rm   rn   r     sn    



zCancelScope.__exit__c                 C  s,   | }|d ur(|j rdS |jr dS |j}qdS )NTF)r  r   r   )r{   r   rm   rm   rn   _effectively_cancelled	  s    z"CancelScope._effectively_cancelledc                 C  s   | j d uo| j o| j jS r   )r   r   r  r   rm   rm   rn   r    s
    
z1CancelScope._parent_cancellation_is_visible_to_usr   c                 C  s@   | j tjkr<t }| | j kr*|   n|| j | j| _d S r   )	r  mathinfr   timer   call_atr  r	  r   rm   rm   rn   r    s
    
zCancelScope._timeout)originr~   c                 C  s   d}t  }| jD ]|}d}|jr q||ur|| ju s:t|r|j}t|tjrT|	 s|
dt|d ||ju r|jdur| jd7  _q| jD ]}|js|js||p|}q|| u 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   Nr   )r   r  _must_cancelr   r   _fut_waiterr   r   r   r   r   idr  r  r  cancel_calledr  r   	call_soonr
  )r{   r!  Zshould_retrycurrentr   waiterscoperm   rm   rn   r  '  s2    

z!CancelScope._deliver_cancellationc                 C  s>   | j }|dur:|jr*|jdu 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  r{   r)  rm   rm   rn   r  U  s    

z+CancelScope._restart_cancellation_in_parentc                 C  s:   | j s6| jr| j  d | _d| _ | jd ur6| |  d S NT)r  r	  r   r   r  r   rm   rm   rn   r   h  s    

zCancelScope.cancelc                 C  s   | j S r   )r  r   rm   rm   rn   r   r  s    zCancelScope.deadlinevaluer~   c                 C  s<   t || _| jd ur$| j  d | _| jr8| js8|   d S r   )r   r  r	  r   r  r  r  r{   r-  rm   rm   rn   r   v  s    


c                 C  s   | j S r   )r  r   rm   rm   rn   r%    s    zCancelScope.cancel_calledc                 C  s   | j S r   )r  r   rm   rm   rn   cancelled_caught  s    zCancelScope.cancelled_caughtc                 C  s   | j S r   )r  r   rm   rm   rn   r     s    zCancelScope.shieldc                 C  s    | j |kr|| _ |s|   d S r   )r  r  r.  rm   rm   rn   r     s    
N)rg   rh   ri   r  r  r   r|   r   r   propertyr  r  r  r  r  r   r   setterr%  r/  r   rm   rm   rm   rn   rL     s2   L.
	rL   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r2  r   c                 C  s   || _ || _d S r   r6  )r{   r2  r   rm   rm   rn   r|     s    zTaskState.__init__N)rg   rh   ri   __doc__	__slots__r|   rm   rm   rm   rn   r    s   r  z*WeakKeyDictionary[asyncio.Task, TaskState]r   c                   @  s.   e Zd ZdddddZdddd	d
dZdS )_AsyncioTaskStatusasyncio.Futureint)r   r2  c                 C  s   || _ || _d S r   )_future
_parent_id)r{   r   r2  rm   rm   rn   r|     s    z_AsyncioTaskStatus.__init__NzT_contra | Noner   r,  c                 C  sX   z| j | W n( tjy8   | j  s4tdd Y n0 ttjt }| j	t
| _d S )Nz.called 'started' twice on the same task status)r<  r   r   InvalidStateErrorr   r   r/   r   r   r=  r   r2  )r{   r-  r   rm   rm   rn   started  s    
z_AsyncioTaskStatus.started)N)rg   rh   ri   r|   r?  rm   rm   rm   rn   r9    s   r9  rW      zCodeType | None_eager_task_factory_codec                   @  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   r}   c                 C  s&   t  | _d| _g | _t | _d | _d S )NF)rL   r   r  _exceptionsr   r  _on_completed_futr   rm   rm   rn   r|     s
    zTaskGroup.__init__c                   s   | j   d| _| S r+  )r   r   r  r   rm   rm   rn   
__aenter__  s    
zTaskGroup.__aenter__r  r  r  rr   r   c                   s  z|d ur,| j   t|ts,| j| t }z| jrt }| jr|	 | _
z| j
I d H  W nR ty } z:d|_| j   |d u st|trt|s|}W Y d }~n
d }~0 0 d | _
qBW d    q1 s0    Y  nt I d H  d| _| jrtd| jn
|r|W nX tyl } z>| j t|||jrVW Y d }~W ~~| `dS  W Y d }~n
d }~0 0 | j |||W ~~| `S ~~| `0 d S )NTFzunhandled errors in a TaskGroup)r   r   r   r   rD  appendr   r  rL   r   rE  r   r   AsyncIOBackendcancel_shielded_checkpointr  rc   r   r   type__traceback__)r{   r   r   r   r   Z
wait_scoper   rm   rm   rn   	__aexit__  sR    



(zTaskGroup.__aexit__Nz,Callable[[Unpack[PosArgsT]], Awaitable[Any]]tuple[Unpack[PosArgsT]]r   asyncio.Future | Noner   )r   r   nametask_status_futurer~   c                   sZ  ddd fdd} j s&tdi }rPtt }tt jj|d< nt jj}||i |}t|st|dr|j	 d	nd
}	t
d|	 |j d|d|d u rt|nt|}t }
|
  }rt|dd tu rt|dd  }r|d j}|||
|dnt||dt| jdt<  jj  j | S )Nr   r   )_taskr~   c              
     sV  t |  }|jd usJ | |jjv s&J |jj|   j t | =  jd ur| js|z jd  W n tjyz   Y n0 z|  }W n< t	y } z$t
|jt	r|j}q|}W Y d }~n
d }~0 0 |d ur0d ur rd S d u s r$t
|t	s j|  jjs. j  n
| n"d urR sRtd d S )Nz2Child exited without calling task_status.started())r   r   r  r  rE  r   r   r>  r   r   r   r   r   r   rD  rG  r  r   r   r   )rQ  r  r   er{   r   rP  rm   rn   	task_done  s<    

z#TaskGroup._spawn.<locals>.task_donez;This task group is not active; no new tasks can be started.Ztask_statusrh   r    z	Expected z0() to return a coroutine, but the return value (z) is not a coroutine object__code____closure__r   )r   rO  rO  r6  )r  r   r$  r   r9  r   r   r    r   rh   	TypeErrorri   r   r   r   r   get_task_factoryr   rB  cell_contentsr   r  r   r  r  add_done_callback)r{   r   r   rO  rP  rT  kwargsr2  r   prefixr   factoryclosureZcustom_task_constructorrm   rS  rn   _spawn  sL    *





zTaskGroup._spawnrX  zUnpack[PosArgsT])r   r   rO  r~   c                G  s   |  ||| d S r   )ra  )r{   r   rO  r   rm   rm   rn   
start_soonj  s    zTaskGroup.start_soonzCallable[..., Awaitable[Any]]r,   c                  s   t  }| ||||}z|I d H W S  ty   |  tddB tt |I d H  W d    n1 sn0    Y  W d    n1 s0    Y   Y n0 d S )NTr   )r   r   ra  r   r   rL   r   )r{   r   rO  r   r   r   rm   rm   rn   r   r  s    FzTaskGroup.start)N)	rg   rh   ri   r|   rF  rL  ra  rb  r   rm   rm   rm   rn   rC    s   @ `	rC  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 )WorkerThreadrX   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 threadrX  r1   F)superr|   r   re  rf  rw   r   r#   queuerH  current_time
idle_sincestopping)r{   r   re  rf  	__class__rm   rn   r|     s    
zWorkerThread.__init__r:  r,   r  r   )r   resultr   r~   c                 C  sb   t  | _| js| j|  | s^|d urTt|trHt	d}||_
|}|| n
|| d S )Nzcoroutine raised StopIteration)rH  ri  rj  rk  rf  rG  r   r   StopIterationr   	__cause__r   r   )r{   r   rn  r   new_excrm   rm   rn   _report_result  s    

zWorkerThread._report_resultr}   c           
      C  s   t t| j | j }|d u r0W d    d S |\}}}}}| sd }d }|t_zHz|j|g|R  }W n( t	y }	 z|	}W Y d }	~	n
d }	~	0 0 W t`nt`0 | j
 s| j| j||| | j  qW d    n1 s0    Y  d S r   )r7   rH  r   rh  r   r   r8   current_cancel_scoper   r   	is_closedr   rr  rT  )
r{   itemr   r   r   r   r   rn  r   r   rm   rm   rn   r     s&    


zWorkerThread.runNzasyncio.Task | Nonefr~   c                 C  sF   d| _ | jd  | j|  z| j|  W n ty@   Y n0 d S r+  )rk  rh  
put_nowaitre  r  rf  r  r   )r{   rw  rm   rm   rn   stop  s    zWorkerThread.stop)N)	rg   rh   ri   MAX_IDLE_TIMEr|   rr  r   ry  __classcell__rm   rm   rl  rn   rd    s
   rd  _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 )BlockingPortalr}   c                 C  s
   t | S r   r   r  rm   rm   rn   r     s    zBlockingPortal.__new__r   c                   s   t    t | _d S r   )rg  r|   r   rw   r   rl  rm   rn   r|     s    
zBlockingPortal.__init__z<Callable[[Unpack[PosArgsT]], Awaitable[T_Retval] | T_Retval]rM  dict[str, Any]r   zFuture[T_Retval])r   r   r]  rO  r   r~   c                 C  s,   t t| jj|d| j||||f| j d S )NrX  )rH  run_sync_from_threadr   Z_task_grouprb  Z
_call_funcrw   )r{   r   r   r]  rO  r   rm   rm   rn   _spawn_task_from_thread  s
    z&BlockingPortal._spawn_task_from_thread)rg   rh   ri   r   r|   r  r{  rm   rm   rl  rn   r~    s   r~  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   )r  readr<   )r{   r  datarm   rm   rn   receive  s    zStreamReaderWrapper.receiver   r}   c                   s    | j t  t I d H  d S r   )r  r   r;   rH  
checkpointr   rm   rm   rn   aclose  s    zStreamReaderWrapper.acloseN)r  )rg   rh   ri   __annotations__r  r  rm   rm   rm   rn   r    s   
r  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.StreamWriterr  r  r   ru  r~   c                   s    | j | | j  I d H  d S r   )r  writedrainr{   ru  rm   rm   rn   send  s    zStreamWriterWrapper.sendr}   c                   s   | j   t I d H  d S r   )r  r   rH  r  r   rm   rm   rn   r    s    
zStreamWriterWrapper.acloseN)rg   rh   ri   r  r  r  rm   rm   rm   rn   r    s   
r  c                   @  s   e Zd ZU ded< ded< ded< ded< dd	d
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   r}   c              	     s   t dd}| jr"| j I d H  | jr8| j I d H  | jrN| j I d H  d|_z|  I d H  W n0 ty   d|_|   |  I d H   Y n0 W d    n1 s0    Y  d S )NTrc  F)	rL   r  r  r  r  r   r   r   killr*  rm   rm   rn   r    s    zProcess.acloser;  c                   s   | j  I d H S r   )r  r   r   rm   rm   rn   r   1  s    zProcess.waitc                 C  s   | j   d S r   )r  	terminater   rm   rm   rn   r  4  s    zProcess.terminatec                 C  s   | j   d S r   )r  r  r   rm   rm   rn   r  7  s    zProcess.kill)r   r~   c                 C  s   | j | d S r   )r  send_signal)r{   r   rm   rm   rn   r  :  s    zProcess.send_signalc                 C  s   | j jS r   )r  pidr   rm   rm   rn   r  =  s    zProcess.pidr4  c                 C  s   | j jS r   )r  
returncoder   rm   rm   rn   r  A  s    zProcess.returncodezabc.ByteSendStream | Nonec                 C  s   | j S r   )r  r   rm   rm   rn   stdinE  s    zProcess.stdinzabc.ByteReceiveStream | Nonec                 C  s   | j S r   )r  r   rm   rm   rn   stdoutI  s    zProcess.stdoutc                 C  s   | j S r   )r  r   rm   rm   rn   stderrM  s    zProcess.stderrN)rg   rh   ri   r  r  r   r  r  r  r0  r  r  r  r  r  rm   rm   rm   rn   r    s&   
r  zset[Process]r   )re  rQ  r~   c                 C  s   d}t jdk r2zt  }W n ty0   Y n0 | D ]R}|jdu rFq6|jjj	
  |jjj	
  |jjj	
  |  |r6||j q6dS )zG
    Forcibly shuts down worker processes belonging to this event loop.Nr@  )r  r  r   get_event_loop_policyget_child_watcherNotImplementedErrorr  r  r  
_transportr   r  r  r  remove_child_handlerr  )re  rQ  Zchild_watcherprocessrm   rm   rn   '_forcibly_shutdown_process_pool_on_exitR  s    

r  set[abc.Process]re  r~   c                   sb   zt tjI dH  W nH tjy\   | D ]}|jdu r(|  q(| D ]}| I dH  qDY n0 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  r  )re  r  rm   rm   rn   _shutdown_process_pool_on_exitk  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   rD   r  r  r   r/   	Transportset_write_buffer_limitsr{   r  rm   rm   rn   connection_made  s
    


zStreamProtocol.connection_mader   c                 C  s,   |rt  | _|| j_| j  | j  d S r   )r9   r   rp  r  r   r  r{   r   rm   rm   rn   connection_lost  s
    
zStreamProtocol.connection_lostr  )r  r~   c                 C  s   | j t| | j  d S r   )r  rG  r  r  r   )r{   r  rm   rm   rn   data_received  s    zStreamProtocol.data_receivedrr   r}   c                 C  s   d| _ | j  dS r+  )r  r  r   r   rm   rm   rn   eof_received  s    
zStreamProtocol.eof_receivedc                 C  s   t  | _d S r   )r   rD   r  r   rm   rm   rn   pause_writing  s    zStreamProtocol.pause_writingc                 C  s   | j   d S r   r  r   r   rm   rm   rn   resume_writing  s    zStreamProtocol.resume_writing)rg   rh   ri   r  r   r  r  r  r  r  r  r  rm   rm   rm   rn   r    s   
r  c                   @  s   e Zd ZU ded< ded< ded< d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   rD   r  r  r   r  rm   rm   rn   r    s    

z DatagramProtocol.connection_mader   c                 C  s   | j   | j  d S r   )r  r   r  r  rm   rm   rn   r    s    
z DatagramProtocol.connection_lostr  rN   )r  addrr~   c                 C  s&   t |}| j||f | j  d S r   )r?   r  rG  r  r   )r{   r  r  rm   rm   rn   datagram_received  s    z"DatagramProtocol.datagram_receivedr   c                 C  s
   || _ d S r   )r   r  rm   rm   rn   error_received  s    zDatagramProtocol.error_receivedr}   c                 C  s   | j   d S r   )r  clearr   rm   rm   rn   r    s    zDatagramProtocol.pause_writingc                 C  s   | j   d S r   r  r   rm   rm   rn   r    s    zDatagramProtocol.resume_writing)rg   rh   ri   r  r   r  r  r  r  r  r  rm   rm   rm   rn   r    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  	_protocolrG   _receive_guard_send_guard_closedr{   r  r  rm   rm   rn   r|     s
    

zSocketStream.__init__socket.socketr}   c                 C  s   | j dS Nsocketr  get_extra_infor   rm   rm   rn   _raw_socket  s    zSocketStream._raw_socketr  r;  r  r  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y   | jrtd n| jjr| jjd ntd Y n0 t||kr|d | ||d   }}| jj| | jjs| jj  W d    n1 s0    Y  |S r   )r  r  r  is_setr  
is_closingr  resume_readingr   pause_readingrH  r  r  popleft
IndexErrorr  r;   r   r<   len
appendleftr  )r{   r  chunkleftoverrm   rm   rn   r    s2    

,zSocketStream.receiver   r  c                   s   | j  t I d H  | jr"tn| jjd ur6| jjz| j| W n8 t	y~ } z | j
 rht|n W Y d }~n
d }~0 0 | jj I d H  W d    n1 s0    Y  d S r   )r  rH  r  r  r;   r  r   r  r  r   r  r9   r  r   )r{   ru  r   rm   rm   rn   r    s    
zSocketStream.sendc                   s&   z| j   W n ty    Y n0 d S r   )r  	write_eofOSErrorr   rm   rm   rn   send_eof  s    zSocketStream.send_eofc                   sX   | j  sTd| _z| j   W n ty0   Y n0 | j   tdI d H  | j   d S NTr   )r  r  r  r  r  r   r	   abortr   rm   rm   rn   r    s    

zSocketStream.acloseN)r  )
rg   rh   ri   r|   r0  r  r  r  r  r  rm   rm   rm   rn   r    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 )_RawSocketMixinNrN  _receive_future_send_futureFr  
raw_socketc                 C  s   || _ td| _td| _d S )Nr  r  )_RawSocketMixin__raw_socketrG   r  r  r{   r  rm   rm   rn   r|   $  s    
z_RawSocketMixin.__init__r}   c                 C  s   | j S r   )r  r   rm   rm   rn   r  )  s    z_RawSocketMixin._raw_socketasyncio.AbstractEventLoopr:  r   c                   sD   ddd fdd}t   }_ j|jd  || |S )Nr   r   rv  c                   s   `  j d S r   )r  remove_readerr  rw  r   r{   rm   rn   callback.  s    z6_RawSocketMixin._wait_until_readable.<locals>.callback)r   r   r  
add_readerr  r   r\  r{   r   r  rw  rm   r  rn   _wait_until_readable-  s
    
z$_RawSocketMixin._wait_until_readablec                   sD   ddd fdd}t   }_ j|jd  || |S )Nr   r   rv  c                   s   `  j d S r   )r  remove_writerr  r  r  rm   rn   r  8  s    z6_RawSocketMixin._wait_until_writable.<locals>.callback)r   r   r  
add_writerr  r   r\  r  rm   r  rn   _wait_until_writable7  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   rm   rm   rn   r  A  s    
z_RawSocketMixin.aclose)rg   rh   ri   r  r  r  r  r|   r0  r  r  r  r  rm   rm   rm   rn   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   r}   c                   s8   | j  | jtj W d    n1 s*0    Y  d S r   )r  r  r   r  SHUT_WRr   rm   rm   rn   r  N  s    zUNIXSocketStream.send_eofr  r;  r  r  c                   s   t  }t I d H  | j z| j|}W nX tyN   | |I d H  Y q ty } z | j	rjt
d nt|W Y d }~qd }~0 0 |st|W  d    S qW d    n1 s0    Y  d S r   )r   rH  r  r  r  recvBlockingIOErrorr  r  r  r;   r9   r<   )r{   r  r   r  r   rm   rm   rn   r  R  s    zUNIXSocketStream.receiver  c                   s   t  }t I d H  | j t|}|rz| j|}W nX tyZ   | |I d H  Y q$ t	y } z | j
rvtd nt|W Y d }~q$d }~0 0 ||d  }q$W d    n1 s0    Y  d S r   )r   rH  r  r  
memoryviewr  r  r  r  r  r  r;   r9   )r{   ru  r   viewZ
bytes_sentr   rm   rm   rn   r  f  s    zUNIXSocketStream.sendztuple[bytes, list[int]])msglenmaxfdsr~   c                   s|  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y   | |I d H  Y qZ ty }	 z | jrtd nt|	W Y d }	~	qZd }	~	0 0 |s|stqqZW d    n1 s0    Y  |D ]b\}
}}|
t
jks.|t
jkrHt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   arrayrH  r  r  r  recvmsgr  CMSG_LENitemsizer  r  r  r  r;   r9   r<   
SOL_SOCKET
SCM_RIGHTSr   	frombytesr  list)r{   r  r  r   fdsr   ancdataflagsr  r   
cmsg_level	cmsg_type	cmsg_datarm   rm   rn   receive_fdsx  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y   | |I d H  Y q| ty } z | jrtd nt|W Y d }~q|d }~0 0 q|W d    n1 s0    Y  d S )Nzmessage must not be emptyzfds must not be emptyr  )r   r   r   r;  rG  r!   r  r	  rH  r  r  r  sendmsgr  r  r  r  r  r  r  r;   r9   )r{   r   r  r   ZfilenosfdZfdarrayr   rm   rm   rn   send_fds  s2    

zUNIXSocketStream.send_fdsN)r  )rg   rh   ri   r  r  r  r  r  rm   rm   rm   rn   r   M  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 )TCPSocketListenerNr5  _accept_scopeFr  r  c                 C  s$   || _ ttjt | _td| _d S )Naccepting connections from)_TCPSocketListener__raw_socketr/   r   BaseEventLoopr   rw   rG   _accept_guardr  rm   rm   rn   r|     s    zTCPSocketListener.__init__r}   c                 C  s   | j S r   )r  r   rm   rm   rn   r    s    zTCPSocketListener._raw_socketabc.SocketStreamc                   s  | j r
t| j t I d H  t | _ztz| j| j	I d H \}}W nL t
jy   z| j| j	 W n ttfy   Y n0 | j rtd  Y n0 W d | _nd | _0 W d    n1 s0    Y  W d    n1 s0    Y  |tjtjd | jt|I d H \}}t||S Nr   )r  r;   r   rH  r  rL   r  rw   sock_acceptr  r   r   r  r   r  
setsockoptr  IPPROTO_TCPTCP_NODELAYconnect_accepted_socketr  r  )r{   client_sockZ_addrr  r  rm   rm   rn   accept  s*    

LzTCPSocketListener.acceptr   c              	     sf   | j r
d S d| _ | jrXz| j| j W n ttfy>   Y n0 | j  tdI d H  | j	  d S r  )
r  r  rw   r  r  r   r  r   r	   r   r   rm   rm   rn   r    s    
zTCPSocketListener.aclose)rg   rh   ri   r  r  r  r|   r0  r  r)  r  rm   rm   rm   rn   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   rw   rG   r   r  r  rm   rm   rn   r|     s    
zUNIXSocketListener.__init__r!  r}   c                   s   t  I d H   j z0 j \}}|d t|W W  d    S  ty   t	 } j
 j|jd  | fdd |I d H  Y q ty } z  jrtd nt|W Y d }~qd }~0 0 qW d    n1 s0    Y  d S )NFc                   s    j  jS r   )rw   r  r+  _r   rm   rn   r     r   z+UNIXSocketListener.accept.<locals>.<lambda>)rH  r  r   r+  r)  setblockingr   r  r   r   rw   r  r   r\  r  r  r;   r9   )r{   r(  r-  rw  r   rm   r   rn   r)    s"    

zUNIXSocketListener.acceptr   c                   s   d| _ | j  d S r+  )r  r+  r   r   rm   rm   rn   r    s    zUNIXSocketListener.aclosec                 C  s   | j S r   )r+  r   rm   rm   rn   r    s    zUNIXSocketListener._raw_socketN)rg   rh   ri   r|   r)  r  r0  r  rm   rm   rm   rn   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  rm   rm   rn   r|   #  s
    

zUDPSocket.__init__r  r}   c                 C  s   | j dS r  r  r   rm   rm   rn   r  ,  s    zUDPSocket._raw_socketr   c                   s   | j  sd| _| j   d S r+  r  r  r  r   r   rm   rm   rn   r  0  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  d    S  ty   | jr~td ntd Y n0 W d    n1 s0    Y  d S r   r  rH  r  r  r  r  r  r  r  r   r  r  r  r;   r9   r   rm   rm   rn   r  5  s    zUDPSocket.receiverP   r  c                   sr   | j X t I d H  | jj I d H  | jr4tn| j	 rDt
n| jj|  W d    n1 sd0    Y  d S r   r  rH  r  r  r  r   r  r;   r  r  r9   sendtor  rm   rm   rn   r  F  s    
zUDPSocket.sendN	rg   rh   ri   r|   r0  r  r  r  r  rm   rm   rm   rn   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 )ConnectedUDPSocketr0  r  r  c                 C  s*   || _ || _td| _td| _d| _d S r  r  r  rm   rm   rn   r|   S  s
    

zConnectedUDPSocket.__init__r  r}   c                 C  s   | j dS r  r  r   rm   rm   rn   r  \  s    zConnectedUDPSocket._raw_socketr   c                   s   | j  sd| _| j   d S r+  r1  r   rm   rm   rn   r  `  s    
zConnectedUDPSocket.acloser  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y|   | jrrtd ntd Y n0 |d W  d    S 1 s0    Y  d S r  r2  )r{   packetrm   rm   rn   r  e  s    zConnectedUDPSocket.receiver  c                   sr   | j X t I d H  | jj I d H  | jr4tn| j	 rDt
n| j| W d    n1 sd0    Y  d S r   r3  r  rm   rm   rn   r  x  s    
zConnectedUDPSocket.sendNr5  rm   rm   rm   rn   r6  R  s   	r6  c                   @  s*   e Zd ZddddZdddddZd	S )
UNIXDatagramSocketrQ   r}   c                   s   t  }t I d H  | j z| jd}W nX tyN   | |I d H  Y q ty } z | j	rjt
d nt|W Y d }~qd }~0 0 |W  d    S qW d    n1 s0    Y  d S Nr  )r   rH  r  r  r  recvfromr  r  r  r  r;   r9   r{   r   r  r   rm   rm   rn   r    s    zUNIXDatagramSocket.receiver   r  c                   s   t  }t I d H  | j z| jj|  W nX tyN   | |I d H  Y q ty } z | j	rjt
d nt|W Y d }~qd }~0 0 W d    d S qW d    n1 s0    Y  d S r   )r   rH  r  r  r  r4  r  r  r  r  r;   r9   r{   ru  r   r   rm   rm   rn   r    s    zUNIXDatagramSocket.sendNrg   rh   ri   r  r  rm   rm   rm   rn   r8    s   r8  c                   @  s*   e Zd ZddddZdddddZd	S )
ConnectedUNIXDatagramSocketr  r}   c                   s   t  }t I d H  | j z| jd}W nX tyN   | |I d H  Y q ty } z | j	rjt
d nt|W Y d }~qd }~0 0 |W  d    S qW d    n1 s0    Y  d S r9  )r   rH  r  r  r  r  r  r  r  r  r;   r9   r;  rm   rm   rn   r    s    z#ConnectedUNIXDatagramSocket.receiver   r  c                   s   t  }t I d H  | j z| j| W nX tyN   | |I d H  Y q ty } z | j	rjt
d nt|W Y d }~qd }~0 0 W d    d S qW d    n1 s0    Y  d S r   )r   rH  r  r  r  r  r  r  r  r  r;   r9   r<  rm   rm   rn   r    s    z ConnectedUNIXDatagramSocket.sendNr=  rm   rm   rm   rn   r>    s   r>  read_eventsz RunVar[dict[int, 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 )rD   r}   c                 C  s
   t | S r   r   r  rm   rm   rn   r     s    zEvent.__new__r   c                 C  s   t  | _d S r   )r   rD   _eventr   rm   rm   rn   r|     s    zEvent.__init__c                 C  s   | j   d S r   )rC  r   r   rm   rm   rn   r     s    z	Event.setr   c                 C  s
   | j  S r   )rC  r  r   rm   rm   rn   r    s    zEvent.is_setc                   s,   |   rt I d H  n| j I d H  d S r   )r  rH  r  rC  r   r   rm   rm   rn   r     s    z
Event.waitr3   c                 C  s   t t| jjS r   )r3   r  rC  _waitersr   rm   rm   rn   
statistics  s    zEvent.statisticsN)	rg   rh   ri   r   r|   r   r  r   rE  rm   rm   rm   rn   rD     s   rD   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 )rF   Ffast_acquirer   rG  r~   c                C  s
   t | S r   r   r  rG  rm   rm   rn   r     s    zLock.__new__r   c                C  s   || _ d | _t | _d S r   )_fast_acquire_owner_taskr   rD  )r{   rG  rm   rm   rn   r|     s    zLock.__init__r}   c                   s   t tjt }| jd u rl| jslt I d H  || _| jshzt	 I d H  W n t
yf   |    Y n0 d S | j|kr~tdt }||f}| j| z|I d H  W n2 t
y   | j| | j|u r|    Y n0 | j| d S Nz)Attempted to acquire an already held Lock)r/   r   r   r   rK  rD  rH  checkpoint_if_cancelledrJ  rI  r   releaser   r   rG  r  )r{   r   futru  rm   rm   rn   acquire  s0    

zLock.acquirec                 C  sB   t tjt }| jd u r(| js(|| _d S | j|u r:tdtd S rL  )r/   r   r   r   rK  rD  r   r=   )r{   r   rm   rm   rn   acquire_nowait  s    
zLock.acquire_nowaitc                 C  s
   | j d uS r   )rK  r   rm   rm   rn   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)rK  r   r   rD  r   r   )r{   r   rO  rm   rm   rn   rN  %  s    
zLock.releaser4   c                 C  s*   | j rt| j nd }t|  |t| jS r   )rK  AsyncIOTaskInfor4   rR  r  rD  )r{   Z	task_inform   rm   rn   rE  1  s    zLock.statisticsN)
rg   rh   ri   r   r|   rP  rQ  rR  rN  rE  rm   rm   rm   rn   rF     s   "rF   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 )rJ   NF	max_valuerG  r;  r4  r   initial_valuerU  rG  r~   c                C  s
   t | S r   r   r  rW  rU  rG  rm   rm   rn   r   7  s    zSemaphore.__new__)rW  rU  rG  c                  s.   t  j||d || _|| _|| _t | _d S )N)rU  )rg  r|   _value
_max_valuerJ  r   rD  )r{   rW  rU  rG  rl  rm   rn   r|   @  s
    zSemaphore.__init__r   r}   c                   s   | j dkrf| jsft I d H  |  j d8  _ | jsbzt I d H  W n ty`   |    Y n0 d S t	 }| j
| z|I d H  W n@ ty   z| j| W n ty   |   Y n0  Y n0 d S Nr   r   )rY  rD  rH  rM  rJ  rI  r   rN  r   r   rG  r  r   r{   rO  rm   rm   rn   rP  M  s(    zSemaphore.acquirec                 C  s    | j dkrt|  j d8  _ d S r[  )rY  r=   r   rm   rm   rn   rQ  i  s    
zSemaphore.acquire_nowaitc                 C  s`   | j d ur| j| j krtd| jD ](}| s$|d  | j|  d S q$|  jd7  _d S )Nz!semaphore released too many timesr   )rZ  rY  r   rD  r   r   r  r\  rm   rm   rn   rN  o  s    

zSemaphore.releasec                 C  s   | j S r   )rY  r   rm   rm   rn   r-  {  s    zSemaphore.valuec                 C  s   | j S r   )rZ  r   rm   rm   rn   rU    s    zSemaphore.max_valuerH   c                 C  s   t t| jS r   )rH   r  rD  r   rm   rm   rn   rE    s    zSemaphore.statistics)rg   rh   ri   r   r|   rP  rQ  rN  r0  r-  rU  rE  r{  rm   rm   rl  rn   rJ   6  s   rJ   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 )/rB   r   r   _total_tokenstotal_tokensr~   c                 C  s
   t | S r   r   r  r_  rm   rm   rn   r     s    zCapacityLimiter.__new__)r_  c                 C  s   t  | _t | _|| _d S r   )r   
_borrowersr   _wait_queuer_  )r{   r_  rm   rm   rn   r|     s    zCapacityLimiter.__init__r   r}   c                   s   |   I d H  d S r   )rP  r   rm   rm   rn   rF    s    zCapacityLimiter.__aenter__r  r  r  r   c                   s   |    d S r   )rN  r   rm   rm   rn   rL    s    zCapacityLimiter.__aexit__c                 C  s   | j S r   )r]  r   rm   rm   rn   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last)r   r;  r  isinfrY  r   maxr]  rb  popitemr   )r{   r-  Zwaiters_to_notifyeventrm   rm   rn   r_    s    
r;  c                 C  s
   t | jS r   )r  ra  r   rm   rm   rn   borrowed_tokens  s    zCapacityLimiter.borrowed_tokensc                 C  s   | j t| j S r   )r]  r  ra  r   rm   rm   rn   available_tokens  s    z CapacityLimiter.available_tokensc                 C  s   |  t  d S r   )acquire_on_behalf_of_nowaitr   r   rm   rm   rn   rQ    s    zCapacityLimiter.acquire_nowaitr   )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)ra  r   rb  r  r]  r=   r  )r{   rl  rm   rm   rn   rk    s    
z+CapacityLimiter.acquire_on_behalf_of_nowaitc                   s   |  t I d H S r   )acquire_on_behalf_ofr   r   rm   rm   rn   rP    s    zCapacityLimiter.acquirec                   s   t  I d H  z| | W nf ty   t }|| j|< z| I d H  W n" typ   | j	|d   Y n0 | j
| Y n20 zt  I d H  W n ty   |    Y n0 d S r   )rH  rM  rk  r=   r   rD   rb  r   r   popra  r  rI  rN  r{   rl  rh  rm   rm   rn   rm    s"    
z$CapacityLimiter.acquire_on_behalf_ofc                 C  s   |  t  d S r   )release_on_behalf_ofr   r   rm   rm   rn   rN    s    zCapacityLimiter.releasec                 C  sb   z| j | W n ty,   tdd Y n0 | 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 tokensFrc  r   )	ra  r  r  r   rb  r  r]  rg  r   ro  rm   rm   rn   rp    s    z$CapacityLimiter.release_on_behalf_ofr2   c                 C  s   t | j| jt| jt| jS r   )r2   ri  r_  tuplera  r  rb  r   rm   rm   rn   rE    s    zCapacityLimiter.statisticsN)rg   rh   ri   r]  r  r   r|   rF  rL  r0  r_  r1  ri  rj  rQ  rk  rP  rm  rN  rp  rE  rm   rm   rm   rn   rB     s(   
rB   _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   rw   r   _signal_queuer   r   r<  r   _handled_signals)r{   rt  rm   rm   rn   r|     s
    
z_SignalReceiver.__init__r$   r   )r   r~   c                 C  s&   | j | | j s"| jd  d S r   )rv  rG  r<  r   r   )r{   r   rm   rm   rn   _deliver	  s    
z_SignalReceiver._deliverr}   c                 C  s2   t | jD ]"}| j|| j| | j| q
| S r   )r   ru  rw   add_signal_handlerrx  rw  r  )r{   sigrm   rm   rn   r     s    z_SignalReceiver.__enter__r  r  r  r   c                 C  s   | j D ]}| j| qd S r   )rw  rw   remove_signal_handler)r{   r   r   r   rz  rm   rm   rn   r     s    
z_SignalReceiver.__exit__c                 C  s   | S r   rm   r   rm   rm   rn   	__aiter__  s    z_SignalReceiver.__aiter__c                   s4   t  I d H  | js*t | _| jI d H  | j S r   )rH  r  rv  r   r   r<  r  r   rm   rm   rn   	__anext__!  s
    
z_SignalReceiver.__anext__N)	rg   rh   ri   r|   rx  r   r   r|  r}  rm   rm   rm   rn   rs    s   	rs  c                      s0   e Zd Zdd fddZddddZ  ZS )	rS  r   r   c                   s`   t |}|d u rd }n|j}| }|d us6J dt t||| | t	|| _
d S )Nz&created TaskInfo from a completed Task)r   r   r2  r   rg  r|   r$  get_nameweakrefrefrQ  )r{   r   r  r2  r   rl  rm   rn   r|   0  s    
zAsyncIOTaskInfo.__init__r   r}   c                 C  sX   |    }sdS |jrdS t|jtjr6|j r6dS t| }rT|j	 }rT|j
S dS )NFT)rQ  r"  r   r#  r   r   r   r   r   r   r  )r{   r   r  r   rm   rm   rn   has_pending_cancellation<  s    
z(AsyncIOTaskInfo.has_pending_cancellation)rg   rh   ri   r|   r  r{  rm   rm   rl  rn   rS  /  s   rS  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)rp   
use_uvlooprq   rr   r   rs   r   )rp   r  rq   r~   c                C  s8   |r|d u rdd l }|j}t||d| _g | _d | _d S )Nr   ro   )uvloopr   r\   _runnerrD  _runner_task)r{   rp   r  rq   r  rm   rm   rn   r|   S  s    zTestRunner.__init__r}   c                 C  s   | j   |  | j | S r   )r  r   r   set_exception_handler_exception_handlerr   rm   rm   rn   r   c  s    
zTestRunner.__enter__r  r  r  r   c                 C  s   | j ||| d S r   )r  r   r   rm   rm   rn   r   h  s    zTestRunner.__exit__r   c                 C  s
   | j  S r   )r  r   r   rm   rm   rn   r   p  s    zTestRunner.get_loopr  r  )r   r   r~   c                 C  s0   t |dtr"| j|d  n
|| d S )Nr   )r   r   r   rD  rG  default_exception_handler)r{   r   r   rm   rm   rn   r  s  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)rD  r  rc   )r{   ra   rm   rm   rn   _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 n~ tyv } z"| s`|j|j   W Y d }~qd }~0  ty } z.| s|| t	|t
|fs W Y d }~qd }~0 0 | s|| q6 W d    n1 s0    Y  W d    n1 s0    Y  d S )Nr   )OutcomeException)Z_pytest.outcomesr  r  r   r   r   r   r   r   r   r   r   )r{   r  r  r   r   retvalr   rm   rm   rn   _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                   sp   | j s<tttt tjf  d\| _}|  	| 
|| _ ||i |}|   }| j||f |I d H S r"  )r  r@   rq  r   r,   r   r   r  r   r   r  r   Zsend_nowait)r{   r   r   r]  r  r   r   rm   rm   rn   _call_in_runner_task  s    
zTestRunner._call_in_runner_taskz,Callable[..., AsyncGenerator[T_Retval, Any]]zIterable[T_Retval])fixture_funcr]  r~   c                 c  s   |f i |}|   | |jd }|   |V  z|   | |jd  W n tyj   |   Y n0 |   |  tdd S )Nz$Async generator fixture did not stop)r   r   r  asendr  StopAsyncIterationr  r   )r{   r  r]  asyncgenZfixturevaluerm   rm   rn   run_asyncgen_fixture  s    zTestRunner.run_asyncgen_fixturez,Callable[..., Coroutine[Any, Any, T_Retval]]c                 C  s(   |   | j|fi |}|   |S r   )r   r   r  r  )r{   r  r]  r  rm   rm   rn   run_fixture  s
    zTestRunner.run_fixturez'Callable[..., Coroutine[Any, Any, Any]])	test_funcr]  r~   c              
   C  s^   z |   | j|fi | W n0 tyP } z| j| W Y d }~n
d }~0 0 |   d S r   )r   r   r  r   rD  rG  r  )r{   r  r]  r   rm   rm   rn   run_test  s    "zTestRunner.run_test)rg   rh   ri   r  r|   r   r   r   r  r  r  r  r  r  r  rm   rm   rm   rn   r  P  s   
r  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dddddZ$eddd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 )rH  z1Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]]rM  r  r   )r   r   r]  optionsr~   c           
        s   t dd fdd}|dd }|dd }|d u rV|ddrVd	d l}|j}t||d
}	|	| W  d    S 1 s0    Y  d S )Nr   r}   c                    sN   t tjt } | t td d t| < z  I d H W t| = S t| = 0 d S r   )r/   r   r   r   set_namer   r  r   r~  r   r   rm   rn   wrapper  s    z#AsyncIOBackend.run.<locals>.wrapperrp   rq   r  Fr   ro   )r   r   r  r   r\   r   )
r  r   r   r]  r  r  rp   rq   r  runnerrm   r  rn   r     s    
zAsyncIOBackend.runr   r}   c                 C  s   t  S r   )r   r  rm   rm   rn   current_token	  s    zAsyncIOBackend.current_tokenr   c                 C  s
   t   S r   )r   r  r  rm   rm   rn   ri  	  s    zAsyncIOBackend.current_timer   c                 C  s   t S r   )r   r  rm   rm   rn   cancelled_exception_class		  s    z(AsyncIOBackend.cancelled_exception_classr   c                   s   t dI d H  d S r  r	   r  rm   rm   rn   r  	  s    zAsyncIOBackend.checkpointc                   sf   t  }|d u rd S zt| j}W n ty4   Y d S 0 |rb|jrPtdI d H  q6|jrZqbq6|j}q6d S r  )r   r   r   r  r%  r	   r   r   )r  r   r   rm   rm   rn   rM  	  s    z&AsyncIOBackend.checkpoint_if_cancelledc                   s<   t dd tdI d H  W d    n1 s.0    Y  d S )NTrc  r   )rL   r	   r  rm   rm   rn   rI  $	  s    z)AsyncIOBackend.cancel_shielded_checkpoint)delayr~   c                   s   t |I d H  d S r   r  )r  r  rm   rm   rn   r	   )	  s    zAsyncIOBackend.sleepFr   r   rL   r   c                C  s   t ||dS )Nr   rK   r  rm   rm   rn   create_cancel_scope-	  s    z"AsyncIOBackend.create_cancel_scopec                 C  sz   t   }d u rtjS zt| j}W n ty:   tj Y S 0 tj}|rvt||j}|jrdtj }qvqB|j	rnqvqB|j
}qB|S r   )r   r  r  r   r   r  minr   r  r   r   )r  r   r   r   rm   rm   rn   current_effective_deadline3	  s     z)AsyncIOBackend.current_effective_deadlinezabc.TaskGroupc                 C  s   t  S r   )rC  r  rm   rm   rn   create_task_groupJ	  s    z AsyncIOBackend.create_task_groupz	abc.Eventc                 C  s   t  S r   rC   r  rm   rm   rn   create_eventN	  s    zAsyncIOBackend.create_eventzabc.LockrH  c                C  s
   t |dS )NrF  rE   rI  rm   rm   rn   create_lockR	  s    zAsyncIOBackend.create_lockNrT  r;  r4  zabc.SemaphorerV  c                C  s   t |||dS )NrT  rI   rX  rm   rm   rn   create_semaphoreV	  s    zAsyncIOBackend.create_semaphorezabc.CapacityLimiterr^  c                 C  s   t |S r   rA   r`  rm   rm   rn   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 n2 tyT   t }t }t| t| Y n0 |p`|  4 I d H @ t| d}t	j
t  }t }	|st|	||}
|
  ||
 |	|
j nN| }
|  }|r||d j tjk rq| }|j|j |  qt }|tjjd  |s6|jd u r<|}n|j}|
j|||||f |I d H W  d    W  d   I d H  S 1 s0    Y  W d   I d H  q1 I d H s0    Y  d S )Nrc  r   ) r  r|  r   r}  LookupErrorr   r   current_default_thread_limiterrL   r   r   r   r   rd  r   r  r\  ry  rn  ri  rj  rz  r  r   remove_done_callbackr   r   sniffiocurrent_async_library_cvarr   rh  rx  )r  r   r   r  r  rf  re  r)  r   r   ZworkernowZexpired_workerr   Zworker_scoperm   rm   rn   run_sync_in_worker_threadd	  sL    


z(AsyncIOBackend.run_sync_in_worker_threadc                 C  s>   t j}|d ur:|jr(tdt|d|jr2d S |j}qd S )Nr   r   )r8   rs  r%  r   r$  r   r   )r  r)  rm   rm   rn   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 )NrL   r   )r)  r~   c              
     s   d}t tjt }td | t|< | j| zfz  I d H W W | j| S  t	y } zt
j	t|d W Y d }~n
d }~0 0 W | j| n| j| 0 d S r+  )r/   r   r   r   r  r   r  r  r  r   
concurrentfuturesr   )r)  Z__tracebackhide__r   r   r  rm   rn   task_wrapper	  s    *z:AsyncIOBackend.run_async_from_thread.<locals>.task_wrapperr   )r/   r   r   r   r  r  r   r8   rs  r   run_coroutine_threadsafern  )	r  r   r   r  r  r   r   r  rw  rm   r  rn   run_async_from_thread	  s    

z$AsyncIOBackend.run_async_from_threadc                   s@   t dd fdd}t tt|}||  S )Nr   r}   c               
     s^   zt jd    W n: tyX }  z"|  t| tsD W Y d } ~ n
d } ~ 0 0 d S )Nr   )r  r  r   r   r   r   r   r   r   r   rw  r   rm   rn   r  	  s    

z4AsyncIOBackend.run_sync_from_thread.<locals>.wrapper)r   r   r/   r   r   rn  )r  r   r   r  r  r   rm   r  rn   r  	  s    	

z#AsyncIOBackend.run_sync_from_threadzabc.BlockingPortalc                 C  s   t  S r   )r~  r  rm   rm   rn   create_blocking_portal	  s    z%AsyncIOBackend.create_blocking_portalz)StrOrBytesPath | Sequence[StrOrBytesPath]zint | IO[Any] | Noner,   r  )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  )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  Zstdin_streamZstdout_streamZstderr_streamrm   rm   rn   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 taskrX  )r   r  r   r\  r   r  )r  re  rm   rm   rn   #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/   rq  r   r  r  r   create_connectionr  r  )r  r  r  r  r  r  rm   rm   rn   connect_tcp
  s    
zAsyncIOBackend.connect_tcpzstr | byteszabc.UNIXSocketStream)pathr~   c                   s   |   I d H  t  ttjd z| W nb ty   t } 	|j
d  | fdd |I d H  Y q* ty      Y q*0 tS q*d S )NFc                   s
     S r   r  r,  r   r  rm   rn   r   (
  r   z-AsyncIOBackend.connect_unix.<locals>.<lambda>)r  r   r  AF_UNIXr.  connectr  r   r   r  r   r\  r   r   r   )r  r  rw  rm   r  rn   connect_unix
  s    
zAsyncIOBackend.connect_unixr  rO   )sockr~   c                 C  s   t |S r   )r  r  r  rm   rm   rn   create_tcp_listener0
  s    z"AsyncIOBackend.create_tcp_listenerc                 C  s   t |S r   )r*  r  rm   rm   rn   create_unix_listener4
  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  remote_addrr  r  )r   create_datagram_endpointr  r   r   r/  r6  )r  r  r  r  r  r  r  rm   rm   rn   create_udp_socket8
  s    
z AsyncIOBackend.create_udp_socketzstr | bytes | Nonez8abc.UNIXDatagramSocket | abc.ConnectedUNIXDatagramSocket)r  remote_pathr~   c                   s   |   I d H  t  |rz| W nb tyn   t } |jd  | fdd |I d H  Y q t	y   
   Y q0 tS qntS d S )Nc                   s
     S r   r  r,  r  rm   rn   r   ^
  r   z<AsyncIOBackend.create_unix_datagram_socket.<locals>.<lambda>)r  r   r  r  r   r   r  r   r\  r   r   r>  r8  )r  r  r  rw  rm   r  rn   create_unix_datagram_socketP
  s    z*AsyncIOBackend.create_unix_datagram_socketr   r  rJ  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  rJ  r  r  r~   c                  s   t  j||||||dI d H S )Nr  )r   getaddrinfo)r  r  r  r  rJ  r  r  rm   rm   rn   r  h
  s    zAsyncIOBackend.getaddrinforN   ztuple[str, str])sockaddrr  r~   c                   s   t  ||I d H S r   )r   getnameinfo)r  r  r  rm   rm   rn   r  
  s    zAsyncIOBackend.getnameinforV   )objr~   c                   s   |   I d H  zt }W n  ty:   i }t| Y n0 t|tsN| }||r`tdt	 }t
 }z|||j W n8 ty   ddlm} | }|||j |j}Y n0 |j}|||< z | I d H  W || ||= n|| ||= 0 d S )Nr  r   get_selector)r  r@  r   r  r   r   r;  r  r:   r   r   rD   r  r  $anyio._core._asyncio_selector_threadr  r  r   )r  r  r?  r   rh  r  selectorr  rm   rm   rn   wait_readable
  s6    

zAsyncIOBackend.wait_readablec                   s   |   I d H  zt }W n  ty:   i }t| Y n0 t|tsN| }||r`tdt	 }t
 }z|||j W n8 ty   ddlm} | }|||j |j}Y n0 |j}|||< z | I d H  W ||= || n||= || 0 d S )Nr  r   r  )r  rB  r   r  r   r   r;  r  r:   r   r   rD   r  r  r  r  r  r   )r  r  rA  r   rh  r  r  r  rm   rm   rn   wait_writable
  s6    


zAsyncIOBackend.wait_writablerB   c                 C  s8   z
t  W S  ty2   td}t | | Y S 0 d S )N(   )rr  r   r  rB   r   )r  r  rm   rm   rn   r  
  s    

z-AsyncIOBackend.current_default_thread_limiterr$   z.AbstractContextManager[AsyncIterator[Signals]])rt  r~   c                 G  s   t |S r   )rs  )r  rt  rm   rm   rn   open_signal_receiver
  s    z#AsyncIOBackend.open_signal_receiverr5   c                 C  s
   t t S r   )rS  r   r  rm   rm   rn   get_current_task
  s    zAsyncIOBackend.get_current_taskzSequence[TaskInfo]c                 C  s   dd t  D S )Nc                 S  s   g | ]}|  st|qS rm   )r   rS  )r   r   rm   rm   rn   r   
  r   z4AsyncIOBackend.get_running_tasks.<locals>.<listcomp>)r   r  rm   rm   rn   get_running_tasks
  s    z AsyncIOBackend.get_running_tasksc                   s\   |   I d H  t }t D ]6}||u r(q|j}|d u s>| rtdI d H   qqd S qd S )Ng?)r  r   r   r#  r   r	   )r  Z	this_taskr   r(  rm   rm   rn   wait_all_tasks_blocked
  s    
z%AsyncIOBackend.wait_all_tasks_blockedr  )r  r~   c                 C  s   t f i |S r   )r  )r  r  rm   rm   rn   create_test_runner
  s    z!AsyncIOBackend.create_test_runner)FN)N)r   ),rg   rh   ri   classmethodr   r  ri  r  r  rM  rI  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  rm   rm   rm   rn   rH    s   	  :#	   ""rH  )
__future__r   r	  r   concurrent.futuresr  r  r  r  r  r   r  r   r   r   r   r   r   r	   Zasyncio.base_eventsr
   collectionsr   r   collections.abcr   r   r   r   r   r   r   r   r   
contextlibr   r   r   r   r   dataclassesr   	functoolsr   r   inspectr   r   r   r    ior!   r"   rh  r#   r   r$   r%   r&   r'   typesr(   r)   typingr*   r+   r,   r-   r.   r/   r0   r  rU  r2   r3   r4   r5   r6   Z_core._eventloopr7   r8   Z_core._exceptionsr9   r:   r;   r<   r=   r>   Z_core._socketsr?   Z_core._streamsr@   Z_core._synchronizationrB   ZBaseCapacityLimiterrD   Z	BaseEventrF   ZBaseLockrG   rH   rJ   ZBaseSemaphoreZ_core._tasksrL   ZBaseCancelScoperM   rN   rO   rP   rQ   Zabc._eventlooprR   ZlowlevelrS   Zstreams.memoryrT   rU   Z	_typeshedrV   r   r  rY   Ztyping_extensionsr\   r]   r^   enumr_   r`   ra   rb   Zexceptiongrouprc   Enumrd   r   r   r   r   r   r   r   r  r   r   r   r   r   r  r   Z
TaskStatusr9  Zeager_task_factoryrV  rB  rC  rq  r   Z_Retval_Queue_Typerd  r|  r}  r~  ZByteReceiveStreamr  ZByteSendStreamr  r  r  r  Protocolr  r  r  r  r   r  r*  r/  r6  r8  r>  r@  rB  rr  rs  rS  r  rH  Zbackend_classrm   rm   rm   rn   <module>   s   $	(
   
   FK9'U.t<%02$$JQr.!     