U
    	f0@                    @  s6  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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 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@mAZAmBZBmCZCmDZDmEZE d dlFmGZG d dlHZHddlImJZJmKZKmLZLmMZM ddlNmOZOmPZP ddlQmRZRmSZSmTZTmUZUmVZV ddlWmXZX ddlYmZZZ ddl[m\Z] ddl[m^Z_ ddl[m`Z` ddlambZc dd lMmdZdmeZemfZfmgZgmhZh dd!limjZj dd"lkmlZlmmZm ejnd#krd d$l7moZo nd d$lpmoZo ejnd%krd d&lmqZq d d'l7mrZrmsZs nd dlZd dltZtd dl0Z0d d(lmuZumvZvmwZwmxZx d d)lymzZz d d'lpmrZrmsZs G d*d+ d+etj{Z|G d,d- d-Zqd.d/d0d1d2Z}d.d/d0d3d4Z~eDd5ZeDd6d7d8Zerd9Zeod:Zejd;Zd<ed;< d=d>d?d@ZdAdBdCdDdEZeG ZdFedG< d=dHdIdJdKZG dLdM dMecZbG dNdO dOZeG ZG dPdQ dQeMjZdRdSdTdUdVZG dWdX dXeMjZeCeAe eAe f ZG dYdZ dZe4Zejd[Zd\ed[< ejd]Zd^ed]< G d_d` d`eMjZe!dadbG dcdd ddeMjZe!dadbG dedf dfeMjZe!dadbG dgdh dheMjZdidjd/dkdldmZdnd/dodpdqZG drds dsejZG dtdu duejZG dvdw dweMjZG dxdy dyZG dzd{ d{eeMjZG d|d} d}eMjfZG d~d deMjfZG dd deMjZG dd deMjZG dd deeMjZG dd deeMjZejdZded< ejdZded< G dd de_Z^G dd de]Z\ejdZded< G dd dZd=ddIddZG dd deMjZG dd dedZeZdS )    )annotationsN)AbstractEventLoopCancelledError	all_taskscreate_taskcurrent_taskget_running_loopsleep)_run_until_complete_cb)OrderedDictdeque)AsyncIterator	Generator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MappingOptionalSequenceTupleTypeVarcast)WeakKeyDictionary   )CapacityLimiterStatisticsEventStatisticsTaskInfoabc)claim_worker_threadthreadlocals)BrokenResourceErrorBusyResourceErrorClosedResourceErrorEndOfStream
WouldBlock)convert_ipv6_sockaddr)create_memory_object_streamCapacityLimiterEvent)ResourceGuardCancelScope)AsyncBackendIPSockAddrTypeSocketListenerUDPPacketTypeUNIXDatagramPacketType)RunVar)MemoryObjectReceiveStreamMemoryObjectSendStream)   
   )	ParamSpecrO      )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 re   re   [/var/www/html/apigroqsegura/apigroq/lib/python3.8/site-packages/anyio/_backends/_asyncio.pyr\   f   s   r\   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 )"rT   Ndebugloop_factorybool | None&Callable[[], AbstractEventLoop] | Nonec                C  s0   t j| _|| _|| _d | _d | _d| _d| _d S )Nr   F)	r\   rb   _state_debug_loop_factory_loop_context_interrupt_count_set_event_loop)selfrh   ri   re   re   rf   __init__m   s    zRunner.__init__returnc                 C  s   |    | S N)
_lazy_initrs   re   re   rf   	__enter__{   s    zRunner.__enter__type[BaseException]BaseExceptionr"   Noneexc_typeexc_valexc_tbrv   c                 C  s   |    d S rw   )closers   r   r   r   re   re   rf   __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)rl   r\   rc   rr   rX   set_event_loopr   ro   rd   _cancel_all_tasksrun_until_completeshutdown_asyncgenshasattrr   _shutdown_default_executorrs   loopre   re   rf   r      s    

zRunner.closer   c                 C  s   |    | jS )zReturn embedded event loop.)rx   ro   ry   re   re   rf   get_loop   s    zRunner.get_loop)contextzCoroutine[T_Retval]T_Retval)cororv   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)rW   r   
ValueErrorrX   _get_running_loopRuntimeErrorrx   rp   runro   r   	threadingcurrent_threadmain_threadsignal	getsignalSIGINTdefault_int_handlerr   
_on_sigintrq   r   rY   r   getattrKeyboardInterrupt)rs   r   r   taskZsigint_handlerr   re   re   rf   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)rl   r\   rd   r   rc   rn   rX   new_event_loopro   rr   r   rm   	set_debugcontextvarsr   rp   ry   re   re   rf   rx      s    




zRunner._lazy_initasyncio.Task)r   rv   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 rw   re   re   re   re   rf   <lambda>       z#Runner._on_sigint.<locals>.<lambda>)rq   donecancelro   call_soon_threadsafer   )rs   signumframer   re   re   rf   r      s    zRunner._on_sigint)r_   r`   ra   rt   rz   r   r   r   r   rx   r   re   re   re   rf   rT   k   s   0rT   r   r}   r   rv   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 )Nreturn_exceptionsTz1unhandled exception during asyncio.run() shutdown)message	exceptionr   )rZ   r   r   r   gather	cancelledr   call_exception_handler)r   	to_cancelr   re   re   rf   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}   )futurerv   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   re   rf   _do_shutdown  s
    z0_shutdown_default_executor.<locals>._do_shutdownTN)targetargs)Z_executor_shutdown_calledr   create_futurer   r!   startjoin)r   r   r   threadre   r   rf   r     s    
r   r   T_contraT)contravariantPosArgsTP
_root_taskzRunVar[asyncio.Task | None]r   ru   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 re   re   ).0cbr   re   re   rf   
<listcomp>'  s     z"find_root_task.<locals>.<listcomp>r`   zuvloop.loop)r   getr   r   
_callbacksr
   r   setr0   asyncioTaskr   _task_statescancel_scope_parent_scope
_host_task)	root_taskr   	callbacksr   stater   re   re   rf   find_root_task  s,    



r   r'   str)funcrv   c                 C  s0   t | dd }t | dd }ddd ||fD S )Nr`   ra   .c                 S  s   g | ]}|r|qS re   re   )r   xre   re   rf   r   A  s      z%get_callable_name.<locals>.<listcomp>)r   r   )r   modulequalnamere   re   rf   get_callable_name>  s    r   z1WeakKeyDictionary[asyncio.AbstractEventLoop, Any]	_run_varsbool)r   rv   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   re   re   rf   _task_startedK  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 )0rF   Fdeadlineshieldfloatr   r   r   rv   c                C  s
   t | S rw   object__new__clsr   r   re   re   rf   r   Z  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)rs   r   r   re   re   rf   rt   _  s    zCancelScope.__init__ru   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' blockTrR   )r   r   r0   r   r   r   r   r   addr   KeyError	TaskStater   r   r   remove_timeoutsysversion_info
cancellingr   r   _deliver_cancellation)rs   Z	host_task
task_statere   re   rf   rz   n  s.    



zCancelScope.__enter__type[BaseException] | NoneBaseException | NoneTracebackType | Nonerj   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   iterate_exceptions
isinstancer   	_uncancelr   )rs   r   r   r   Zhost_task_stateexcre   re   rf   r     s<    


zCancelScope.__exit__r   )cancelled_excrv   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rO   	   r   Tr   Cancelled by cancel scope r   )r  r  r   r   r   r   idr   )rs   r  re   re   rf   r    s    
zCancelScope._uncancelr}   c                 C  s@   | j tjkr<t }| | j kr*|   n|| j | j| _d S rw   )	r   mathinfr   timer   call_atr  r   r   re   re   rf   r    s
    
zCancelScope._timeout)originrv   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   _must_cancelr   r   _fut_waiterr  r   r   r   r   r  r  r   r  r   r   cancel_calledr  r   	call_soonr   )rs   r  Zshould_retrycurrentr   waiterscopere   re   rf   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   )rs   r!  re   re   rf   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   )rs   r   re   re   rf   _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  ry   re   re   rf   r      s    

zCancelScope.cancelc                 C  s   | j S rw   )r   ry   re   re   rf   r   *  s    zCancelScope.deadlinevaluerv   c                 C  s<   t || _| jd k	r$| j  d | _| jr8| js8|   d S rw   )r   r   r   r   r   r   r  rs   r%  re   re   rf   r   .  s    


c                 C  s   | j S rw   )r   ry   re   re   rf   r  8  s    zCancelScope.cancel_calledc                 C  s   | j S rw   )r   ry   re   re   rf   cancelled_caught<  s    zCancelScope.cancelled_caughtc                 C  s   | j S rw   )r   ry   re   re   rf   r   @  s    zCancelScope.shieldc                 C  s    | j |kr|| _ |s|   d S rw   )r   r  r&  re   re   rf   r   D  s    
N)r_   r`   ra   r  r  r   rt   rz   r   r  r  r  r  r"  r   propertyr   setterr  r'  r   re   re   re   rf   rF   Y  s0    1-
	rF   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   
int | NoneCancelScope | Nonec                 C  s   || _ || _d S rw   r*  )rs   r+  r   re   re   rf   rt   Y  s    zTaskState.__init__N)r_   r`   ra   __doc__	__slots__rt   re   re   re   rf   r   Q  s   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 rw   )_future
_parent_id)rs   r   r+  re   re   rf   rt   g  s    z_AsyncioTaskStatus.__init__NzT_contra | Noner}   r$  c                 C  sP   z| j | W n  tjk
r0   tdd Y nX ttjt }| jt	| _
d S )Nz.called 'started' twice on the same task status)r3  r   r   InvalidStateErrorr   r0   r   r   r4  r   r+  )rs   r%  r   re   re   rf   startedk  s    z_AsyncioTaskStatus.started)N)r_   r`   ra   rt   r6  re   re   re   rf   r0  f  s   r0  r|   z$Generator[BaseException, None, None])r   rv   c                 c  s0   t | tr&| jD ]}t|E d H  qn| V  d S rw   )r  r[   rY   r  )r   r  re   re   rf   r  w  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}   ru   c                 C  s    t  | _d| _g | _t | _d S )NF)rF   r   r   _exceptionsr   r   ry   re   re   rf   rt     s    zTaskGroup.__init__c                   s   | j   d| _| S r#  )r   rz   r   ry   re   re   rf   
__aenter__  s    
zTaskGroup.__aenter__r  r	  r
  rj   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   r8  appendr   r   r   r   r[   )rs   r   r   r   Zignore_exceptionZ!cancelled_exc_while_waiting_tasksr  re   re   rf   	__aexit__  s.    


 zTaskGroup.__aexit__Nz,Callable[[Unpack[PosArgsT]], Awaitable[Any]]tuple[Unpack[PosArgsT]]r   asyncio.Future | Noner   )r   r   nametask_status_futurerv   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}   )_taskrv   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s	 rt|ts j
|  j s܈ j  q| 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   r8  r:  r"  r   r   r   )r@  r  r  ers   r   r?  re   rf   	task_done  s.    

z#TaskGroup._spawn.<locals>.task_donez;This task group is not active; no new tasks can be started.task_statusr`   r    z	Expected z0() to return a coroutine, but the return value (z) is not a coroutine objectr>  r*  )r   r   r  r   r0  r   r   r   r   r`   	TypeErrorra   r   r   r   add_done_callbackr   r   r   r   )
rs   r   r   r>  r?  rD  kwargsr+  r   prefixre   rC  rf   _spawn  s:    
 



 
zTaskGroup._spawnrG  zUnpack[PosArgsT])r   r   r>  rv   c                G  s   |  ||| d S rw   )rL  )rs   r   r>  r   re   re   rf   
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   rL  r   r   rF   r   )rs   r   r>  r   r   r   re   re   rf   r     s    zTaskGroup.start)N)	r_   r`   ra   rt   r9  r;  rL  rM  r   re   re   re   rf   r7    s   , K	r7  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 )WorkerThreadrP   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 threadrG  r2   F)superrt   r   rQ  rR  ro   r   r   queueAsyncIOBackendcurrent_time
idle_sincestopping)rs   r   rQ  rR  	__class__re   rf   rt   "  s    
zWorkerThread.__init__r1  r$   r	  r}   )r   resultr  rv   c                 C  sb   t  | _| js| j|  | s^|d k	rTt|trHt	d}||_
|}|| n
|| d S )Nzcoroutine raised StopIteration)rU  rV  rW  rX  rR  r:  r   r  StopIterationr   	__cause__r   r   )rs   r   r[  r  new_excre   re   rf   _report_result3  s    

zWorkerThread._report_resultru   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 rw   )r7   rU  r   rT  r   r   r8   current_cancel_scoper   r|   	is_closedr   r_  rD  )
rs   itemr   r   r   r   r   r[  r   r  re   re   rf   r   E  s,    

   zWorkerThread.runNzasyncio.Task | Nonefrv   c                 C  sH   d| _ | jd  | j|  z| j|  W n tk
rB   Y nX d S r#  )rX  rT  
put_nowaitrQ  discardrR  r  r   )rs   rd  re   re   rf   stop`  s    zWorkerThread.stop)N)	r_   r`   ra   MAX_IDLE_TIMErt   r_  r   rg  __classcell__re   re   rY  rf   rP    s
   rP  _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 )BlockingPortalru   c                 C  s
   t | S rw   r   r   re   re   rf   r   q  s    zBlockingPortal.__new__r}   c                   s   t    t | _d S rw   )rS  rt   r   ro   ry   rY  re   rf   rt   t  s    
zBlockingPortal.__init__z<Callable[[Unpack[PosArgsT]], Awaitable[T_Retval] | T_Retval]r<  dict[str, Any]r   zFuture[T_Retval])r   r   rJ  r>  r   rv   c                 C  s,   t t| jj|d| j||||f| j d S )NrG  )rU  run_sync_from_threadr   _task_grouprM  
_call_funcro   )rs   r   r   rJ  r>  r   re   re   rf   _spawn_task_from_threadx  s
    z&BlockingPortal._spawn_task_from_thread)r_   r`   ra   r   rt   rr  ri  re   re   rY  rf   rl  p  s   rl  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   r2  bytes	max_bytesrv   c                   s"   | j |I d H }|r|S td S rw   )ru  readr<   )rs   ry  datare   re   rf   receive  s    zStreamReaderWrapper.receiver}   ru   c                   s   | j   t I d H  d S rw   )ru  feed_eofrU  
checkpointry   re   re   rf   aclose  s    
zStreamReaderWrapper.acloseN)rv  )r_   r`   ra   __annotations__r|  r  re   re   re   rf   rt    s   
rt  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.StreamWriterru  rw  r}   rb  rv   c                   s    | j | | j  I d H  d S rw   )ru  writedrainrs   rb  re   re   rf   send  s    zStreamWriterWrapper.sendru   c                   s   | j   t I d H  d S rw   )ru  r   rU  r~  ry   re   re   rf   r    s    
zStreamWriterWrapper.acloseN)r_   r`   ra   r  r  r  re   re   re   rf   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}   ru   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 rN  )rF   r  r  r  r  r   r|   killry   re   re   rf   r    s    zProcess.acloser2  c                   s   | j  I d H S rw   )r  r   ry   re   re   rf   r     s    zProcess.waitc                 C  s   | j   d S rw   )r  	terminatery   re   re   rf   r    s    zProcess.terminatec                 C  s   | j   d S rw   )r  r  ry   re   re   rf   r    s    zProcess.kill)r   rv   c                 C  s   | j | d S rw   )r  send_signal)rs   r   re   re   rf   r    s    zProcess.send_signalc                 C  s   | j jS rw   )r  pidry   re   re   rf   r    s    zProcess.pidr,  c                 C  s   | j jS rw   )r  
returncodery   re   re   rf   r    s    zProcess.returncodezabc.ByteSendStream | Nonec                 C  s   | j S rw   )r  ry   re   re   rf   stdin  s    zProcess.stdinzabc.ByteReceiveStream | Nonec                 C  s   | j S rw   )r  ry   re   re   rf   stdout  s    zProcess.stdoutc                 C  s   | j S rw   )r  ry   re   re   rf   stderr  s    zProcess.stderrN)r_   r`   ra   r  r  r   r  r  r  r(  r  r  r  r  r  re   re   re   rf   r    s&   
r  zset[Process]r   )rQ  r@  rv   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)rO      )r  r  r   get_event_loop_policyget_child_watcherNotImplementedErrorr  r  ru  
_transportr   r  r  r  remove_child_handlerr  )rQ  r@  Zchild_watcherprocessre   re   rf   '_forcibly_shutdown_process_pool_on_exit  s    

r  set[abc.Process]rQ  rv   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  r  )rQ  r  re   re   rf   _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	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   asyncio.BaseTransportr}   	transportrv   c                 C  s<   t  | _t | _t | _| j  ttj|	d d S Nr   )
r   r  r   rC   r  r  r   r0   	Transportset_write_buffer_limitsrs   r  re   re   rf   connection_made  s
    


zStreamProtocol.connection_mader  rv   c                 C  s,   |rt  | _|| j_| j  | j  d S rw   )r9   r   r]  r  r   r  rs   r  re   re   rf   connection_lost"  s
    
zStreamProtocol.connection_lostrw  )r{  rv   c                 C  s   | j | | j  d S rw   )r  r:  r  r   )rs   r{  re   re   rf   data_received*  s    zStreamProtocol.data_receivedrj   ru   c                 C  s   | j   dS r#  )r  r   ry   re   re   rf   eof_received.  s    
zStreamProtocol.eof_receivedc                 C  s   t  | _d S rw   )r   rC   r  ry   re   re   rf   pause_writing2  s    zStreamProtocol.pause_writingc                 C  s   | j   d S rw   r  r   ry   re   re   rf   resume_writing5  s    zStreamProtocol.resume_writing)r_   r`   ra   r  r   r  r  r  r  r  r  re   re   re   rf   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  re   re   rf   r  ?  s    

z DatagramProtocol.connection_mader  c                 C  s   | j   | j  d S rw   )r  r   r  r  re   re   rf   r  E  s    
z DatagramProtocol.connection_lostrw  rH   )r{  addrrv   c                 C  s&   t |}| j||f | j  d S rw   )r>   r  r:  r  r   )rs   r{  r  re   re   rf   datagram_receivedI  s    z"DatagramProtocol.datagram_receivedr   c                 C  s
   || _ d S rw   )r   r  re   re   rf   error_receivedN  s    zDatagramProtocol.error_receivedru   c                 C  s   | j   d S rw   )r  clearry   re   re   rf   r  Q  s    zDatagramProtocol.pause_writingc                 C  s   | j   d S rw   r  ry   re   re   rf   r  T  s    zDatagramProtocol.resume_writing)r_   r`   ra   r  r   r  r  r  r  r  r  re   re   re   rf   r  9  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  	_protocolrD   _receive_guard_send_guard_closedrs   r  r  re   re   rf   rt   Y  s
    

zSocketStream.__init__socket.socketru   c                 C  s   | j dS Nsocketr  get_extra_infory   re   re   rf   _raw_socket`  s    zSocketStream._raw_socketrv  r2  rw  rx  c              	     s   | j  t I d H  | jj sR| j sR| j  | jj	 I d H  | j
  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 rw   )r  rU  r~  r  r  is_setr  
is_closingresume_readingr   pause_readingr  popleft
IndexErrorr  r;   r   r<   len
appendleftr  )rs   ry  chunkleftoverre   re   rf   r|  d  s.    


zSocketStream.receiver}   r  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 rw   )r  rU  r~  r  r;   r  r   r  r  r   r  r9   r  r   )rs   rb  r  re   re   rf   r    s    
zSocketStream.sendc                   s(   z| j   W n tk
r"   Y nX d S rw   )r  	write_eofOSErrorry   re   re   rf   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	   abortry   re   re   rf   r    s    

zSocketStream.acloseN)rv  )
r_   r`   ra   rt   r(  r  r|  r  r  r  re   re   re   rf   r  X  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 )_RawSocketMixinNr=  _receive_future_send_futureFr  
raw_socketc                 C  s   || _ td| _td| _d S )Nr  r  )_RawSocketMixin__raw_socketrD   r  r  rs   r  re   re   rf   rt     s    
z_RawSocketMixin.__init__ru   c                 C  s   | j S rw   )r  ry   re   re   rf   r    s    z_RawSocketMixin._raw_socketasyncio.AbstractEventLoopr1  r   c                   sD   ddd fdd}t   }_ j|jd  || |S )Nr   r}   rc  c                   s   `  j d S rw   )r  remove_readerr  rd  r   rs   re   rf   callback  s    z6_RawSocketMixin._wait_until_readable.<locals>.callback)r   r   r  
add_readerr  r   rI  rs   r   r  rd  re   r  rf   _wait_until_readable  s
    
z$_RawSocketMixin._wait_until_readablec                   sD   ddd fdd}t   }_ j|jd  || |S )Nr   r}   rc  c                   s   `  j d S rw   )r  remove_writerr  r  r  re   rf   r    s    z6_RawSocketMixin._wait_until_writable.<locals>.callback)r   r   r  
add_writerr  r   rI  r  re   r  rf   _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  ry   re   re   rf   r    s    
z_RawSocketMixin.aclose)r_   r`   ra   r  r  r  r  rt   r(  r  r  r  r  re   re   re   rf   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}   ru   c              	     s$   | j  | jtj W 5 Q R X d S rw   )r  r  r   r  SHUT_WRry   re   re   rf   r    s    zUNIXSocketStream.send_eofrv  r2  rw  rx  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 rw   )r   rU  r~  r  r  recvBlockingIOErrorr  r  r  r;   r9   r<   )rs   ry  r   r{  r  re   re   rf   r|    s    zUNIXSocketStream.receiver  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 rw   )r   rU  r~  r  
memoryviewr  r  r  r  r  r  r;   r9   )rs   rb  r   viewZ
bytes_sentr  re   re   rf   r    s    zUNIXSocketStream.sendztuple[bytes, list[int]])msglenmaxfdsrv   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  r2  r   r   arrayrU  r~  r  r  recvmsgr  CMSG_LENitemsizer  r  r  r  r;   r9   r<   
SOL_SOCKET
SCM_RIGHTSr   	frombytesr  list)rs   r  r  r   fdsr   ancdataflagsr  r  
cmsg_level	cmsg_type	cmsg_datare   re   rf   receive_fds  s:    
 &zUNIXSocketStream.receive_fdszCollection[int | IOBase])r   r  rv   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  r2  r:  r   r  r  rU  r~  r  r  sendmsgr  r  r   r  r  r  r  r;   r9   )rs   r   r  r   ZfilenosfdZfdarrayr  re   re   rf   send_fds,  s4    

 zUNIXSocketStream.send_fdsN)rv  )r_   r`   ra   r  r|  r  r	  r  re   re   re   rf   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_socketr0   r   BaseEventLoopr   ro   rD   _accept_guardr  re   re   rf   rt   R  s    zTCPSocketListener.__init__ru   c                 C  s   | j S rw   )r  ry   re   re   rf   r  W  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  rU  r~  rF   r  ro   sock_acceptr  r   r   r  r   r  
setsockoptr  IPPROTO_TCPTCP_NODELAYconnect_accepted_socketr  r  )rs   client_sockZ_addrr  r  re   re   rf   accept[  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  ro   r  r  r   r  r   r	   r   ry   re   re   rf   r  x  s    
zTCPSocketListener.aclose)r_   r`   ra   r  r  r  rt   r(  r  r  r  re   re   re   rf   r  N  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   ro   rD   r  r  r  re   re   rf   rt     s    
zUNIXSocketListener.__init__r  ru   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 rw   )ro   r  r  _ry   re   rf   r     r   z+UNIXSocketListener.accept.<locals>.<lambda>)rU  r~  r  r  r  setblockingr  r  r   r   ro   r  r   rI  r  r  r;   r9   )rs   r  r  rd  r  re   ry   rf   r    s"    

zUNIXSocketListener.acceptr}   c                   s   d| _ | j  d S r#  )r  r  r   ry   re   re   rf   r    s    zUNIXSocketListener.aclosec                 C  s   | j S rw   )r  ry   re   re   rf   r    s    zUNIXSocketListener._raw_socketN)r_   r`   ra   rt   r  r  r(  r  re   re   re   rf   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  re   re   rf   rt     s
    

zUDPSocket.__init__r  ru   c                 C  s   | j dS r  r  ry   re   re   rf   r    s    zUDPSocket._raw_socketr}   c                   s   | j  sd| _| j   d S r#  r  r  r  r   ry   re   re   rf   r    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 rw   r  rU  r~  r  r  r  r  r  r  r   r  r  r  r;   r9   ry   re   re   rf   r|    s    zUDPSocket.receiverJ   r  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 rw   r  rU  r~  r  r  r   r  r;   r  r  r9   sendtor  re   re   rf   r    s    
zUDPSocket.sendN	r_   r`   ra   rt   r(  r  r  r|  r  re   re   re   rf   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  re   re   rf   rt     s
    

zConnectedUDPSocket.__init__r  ru   c                 C  s   | j dS r  r  ry   re   re   rf   r    s    zConnectedUDPSocket._raw_socketr}   c                   s   | j  sd| _| j   d S r#  r#  ry   re   re   rf   r    s    
zConnectedUDPSocket.acloserw  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$  )rs   packetre   re   rf   r|    s    zConnectedUDPSocket.receiver  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 rw   r%  r  re   re   rf   r    s    
zConnectedUDPSocket.sendNr'  re   re   re   rf   r(    s   	r(  c                   @  s*   e Zd ZddddZdddddZd	S )
UNIXDatagramSocketrK   ru   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 Nrv  )r   rU  r~  r  r  recvfromr  r  r  r  r;   r9   rs   r   r{  r  re   re   rf   r|    s    zUNIXDatagramSocket.receiver}   r  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 rw   )r   rU  r~  r  r  r&  r  r  r  r  r;   r9   rs   rb  r   r  re   re   rf   r  #  s    zUNIXDatagramSocket.sendNr_   r`   ra   r|  r  re   re   re   rf   r*    s   r*  c                   @  s*   e Zd ZddddZdddddZd	S )
ConnectedUNIXDatagramSocketrw  ru   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   rU  r~  r  r  r  r  r  r  r  r;   r9   r-  re   re   rf   r|  6  s    z#ConnectedUNIXDatagramSocket.receiver}   r  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 rw   )r   rU  r~  r  r  r  r  r  r  r  r;   r9   r.  re   re   rf   r  G  s    z ConnectedUNIXDatagramSocket.sendNr/  re   re   re   rf   r0  5  s   r0  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   ru   c                 C  s
   t | S rw   r   rm  re   re   rf   r   c  s    zEvent.__new__r}   c                 C  s   t  | _d S rw   )r   rC   _eventry   re   re   rf   rt   f  s    zEvent.__init__c                 C  s   | j   d S rw   )r5  r   ry   re   re   rf   r   i  s    z	Event.setr   c                 C  s
   | j  S rw   )r5  r  ry   re   re   rf   r  l  s    zEvent.is_setc                   s,   |   rt I d H  n| j I d H  d S rw   )r  rU  r~  r5  r   ry   re   re   rf   r   o  s    z
Event.waitr4   c                 C  s   t t| jjS rw   )r4   r  r5  _waitersry   re   re   rf   
statisticsu  s    zEvent.statisticsN)	r_   r`   ra   r   rt   r   r  r   r7  re   re   re   rf   rC   b  s   rC   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_tokensrv   c                 C  s
   t | S rw   r   r   r:  re   re   rf   r   |  s    zCapacityLimiter.__new__)r:  c                 C  s   t  | _t | _|| _d S rw   )r   
_borrowersr   _wait_queuer:  )rs   r:  re   re   rf   rt     s    zCapacityLimiter.__init__r}   ru   c                   s   |   I d H  d S rw   )acquirery   re   re   rf   r9    s    zCapacityLimiter.__aenter__r  r	  r
  r~   c                   s   |    d S rw   )releaser   re   re   rf   r;    s    zCapacityLimiter.__aexit__c                 C  s   | j S rw   )r8  ry   re   re   rf   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  r2  r  isinfrH  r   maxr8  r=  popitemr   )rs   r%  waiters_to_notifyeventre   re   rf   r:    s    
r2  c                 C  s
   t | jS rw   )r  r<  ry   re   re   rf   borrowed_tokens  s    zCapacityLimiter.borrowed_tokensc                 C  s   | j t| j S rw   )r8  r  r<  ry   re   re   rf   available_tokens  s    z CapacityLimiter.available_tokensc                 C  s   |  t  d S rw   )acquire_on_behalf_of_nowaitr   ry   re   re   rf   acquire_nowait  s    zCapacityLimiter.acquire_nowaitr   )borrowerrv   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  r8  r=   r   )rs   rK  re   re   rf   rI    s    
z+CapacityLimiter.acquire_on_behalf_of_nowaitc                   s   |  t I d H S rw   )acquire_on_behalf_ofr   ry   re   re   rf   r>    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 rw   )rU  checkpoint_if_cancelledrI  r=   r   rC   r=  r   r|   popr<  r   cancel_shielded_checkpointr?  rs   rK  rF  re   re   rf   rL    s"    
z$CapacityLimiter.acquire_on_behalf_ofc                 C  s   |  t  d S rw   )release_on_behalf_ofr   ry   re   re   rf   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 tokensFr@  r   )	r<  r  r   r   r=  r  r8  rD  r   rP  re   re   rf   rQ    s    z$CapacityLimiter.release_on_behalf_ofr3   c                 C  s   t | j| jt| jt| jS rw   )r3   rG  r:  tupler<  r  r=  ry   re   re   rf   r7    s    zCapacityLimiter.statisticsN)r_   r`   ra   r8  r  r   rt   r9  r;  r(  r:  r)  rG  rH  rJ  rI  r>  rL  r?  rQ  r7  re   re   re   rf   rA   y  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 rw   )
_signalsr   ro   r   _signal_queuer   r   r3  r   _handled_signals)rs   rU  re   re   rf   rt     s
    
z_SignalReceiver.__init__r   r}   )r   rv   c                 C  s&   | j | | j s"| jd  d S rw   )rW  r:  r3  r   r   )rs   r   re   re   rf   _deliver  s    
z_SignalReceiver._deliverru   c                 C  s2   t | jD ]"}| j|| j| | j| q
| S rw   )r   rV  ro   add_signal_handlerrY  rX  r   )rs   sigre   re   rf   rz      s    z_SignalReceiver.__enter__r  r	  r
  rj   r~   c                 C  s   | j D ]}| j| qd S rw   )rX  ro   remove_signal_handler)rs   r   r   r   r[  re   re   rf   r     s    
z_SignalReceiver.__exit__c                 C  s   | S rw   re   ry   re   re   rf   	__aiter__  s    z_SignalReceiver.__aiter__c                   s4   t  I d H  | js*t | _| jI d H  | j S rw   )rU  r~  rW  r   r   r3  r  ry   re   re   rf   	__anext__  s
    
z_SignalReceiver.__anext__N)	r_   r`   ra   rt   rY  rz   r   r]  r^  re   re   re   rf   rT    s   
rT  r5   c                 C  s8   t | }|d krd }n|j}tt| ||  |  S rw   )r   r   r+  r5   r  get_namer   )r   r  r+  re   re   rf   _create_task_info"  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	e
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)rh   
use_uvloopri   rj   r   rk   r}   )rh   rc  ri   rv   c                C  s8   |r|d krdd l }|j}t||d| _g | _d | _d S )Nr   rg   )uvloopr   rT   _runnerr8  _runner_task)rs   rh   rc  ri   rd  re   re   rf   rt   /  s    zTestRunner.__init__ru   c                 C  s   | j   |  | j | S rw   )re  rz   r   set_exception_handler_exception_handlerry   re   re   rf   rz   ?  s    
zTestRunner.__enter__r  r	  r
  r~   c                 C  s   | j ||| d S rw   )re  r   r   re   re   rf   r   D  s    zTestRunner.__exit__r   c                 C  s
   | j  S rw   )re  r   ry   re   re   rf   r   L  s    zTestRunner.get_loopr  rn  )r   r   rv   c                 C  s0   t |dtr"| j|d  n
|| d S )Nr   )r  r   r   r8  r:  default_exception_handler)rs   r   r   re   re   rf   rh  O  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)r8  r  r[   )rs   rY   re   re   rf   _raise_async_exceptionsW  s    
 z"TestRunner._raise_async_exceptionszOMemoryObjectReceiveStream[tuple[Awaitable[T_Retval], asyncio.Future[T_Retval]]])receive_streamrv   c                   s   | t | 2 zf3 d H W \}}z|I d H }W n4 t k
r\ } z| sL|| W 5 d }~X Y q
X | s
|| q
6 W 5 Q R X d S rw   )r|   r   r   r   )rk  r   r   retvalr  re   re   rf   _run_tests_and_fixturesb  s    z"TestRunner._run_tests_and_fixturesz Callable[P, Awaitable[T_Retval]]zP.argszP.kwargsr   )r   r   rJ  rv   c                   sl   | j s<tttt tjf  d\| _}|  	| 
|| _ |||}|   }| j||f |I d H S r  )rf  r?   r.   r&   r$   r   r   rb  r   r   rm  r   send_nowait)rs   r   r   rJ  rk  r   r   re   re   rf   _call_in_runner_tasks  s    

zTestRunner._call_in_runner_taskz,Callable[..., AsyncGenerator[T_Retval, Any]]zIterable[T_Retval])fixture_funcrJ  rv   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   ro  asendrj  StopAsyncIterationr  r   )rs   rp  rJ  asyncgenZfixturevaluere   re   rf   run_asyncgen_fixture  s    
zTestRunner.run_asyncgen_fixturez,Callable[..., Coroutine[Any, Any, T_Retval]]c                 C  s$   |   | j|f|}|   |S rw   )r   r   ro  rj  )rs   rp  rJ  rl  re   re   rf   run_fixture  s
    zTestRunner.run_fixturez'Callable[..., Coroutine[Any, Any, Any]])	test_funcrJ  rv   c              
   C  sX   z|   | j|f| W n. tk
rJ } z| j| W 5 d }~X Y nX |   d S rw   )r   r   ro  r   r8  r:  rj  )rs   rv  rJ  r  re   re   rf   run_test  s    zTestRunner.run_test)r_   r`   ra   r  rt   rz   r   r   rh  rj  staticmethodrm  ro  rt  ru  rw  re   re   re   rf   ra  ,  s    
ra  c                   @  s   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dd0ddd1dd2d3d4Zedd	d5d6Zeddddd7d8d9Zed0dddd7d:d;Zed<d	d=d>Zed/d/dd?d@ddAdAdAdBdCddDdE	dFdGZedHddIdJdKZeddLdMdNdOdPdQdRZedSdTdUdVdWZedXdYdZd[d\ZedXdYdZd]d^Zed_dNdNdd`dadbdcZedXdddedfdgdhZedididididjdkdldmdndMdMdodpdqdrZ eddsdMdtdudvdwZ!edXddZdxdyZ"edXddZdzd{Z#ed|d	d}d~Z$edddddZ%edd	ddZ&edd	ddZ'edd	ddZ(edddddZ)d/S )rU  z1Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]]r<  rn  r   )r   r   rJ  optionsrv   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   ru   c                    sJ   t tjt } | t td d t| < z  I d H W S t| = X d S rw   )r0   r   r   r   set_namer   r   r   r   r   r   re   rf   wrapper  s    z#AsyncIOBackend.run.<locals>.wrapperrh   Fri   rc  r   rg   )r   r   rd  r   rT   r   )
r   r   r   rJ  ry  r|  rh   ri   rd  Zrunnerre   r{  rf   r     s    
zAsyncIOBackend.runr   ru   c                 C  s   t  S rw   )r   rm  re   re   rf   current_token  s    zAsyncIOBackend.current_tokenr   c                 C  s
   t   S rw   )r   r  rm  re   re   rf   rV    s    zAsyncIOBackend.current_timer{   c                 C  s   t S rw   )r   rm  re   re   rf   cancelled_exception_class  s    z(AsyncIOBackend.cancelled_exception_classr}   c                   s   t dI d H  d S r  r	   rm  re   re   rf   r~    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   re   re   rf   rM    s    z&AsyncIOBackend.checkpoint_if_cancelledc              	     s(   t dd tdI d H  W 5 Q R X d S )NTrO  r   )rF   r	   rm  re   re   rf   rO    s    z)AsyncIOBackend.cancel_shielded_checkpoint)delayrv   c                   s   t |I d H  d S rw   r  )r   r  re   re   rf   r	     s    zAsyncIOBackend.sleepFr   r   rF   r   c                C  s   t ||dS )Nr   rE   r   re   re   rf   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 rw   )r   r   r   r   r  r  minr   r   r   r   )r   r   r   re   re   rf   current_effective_deadline  s     
z)AsyncIOBackend.current_effective_deadlinezabc.TaskGroupc                 C  s   t  S rw   )r7  rm  re   re   rf   create_task_group  s    z AsyncIOBackend.create_task_groupz	abc.Eventc                 C  s   t  S rw   rB   rm  re   re   rf   create_event  s    zAsyncIOBackend.create_eventzabc.CapacityLimiterr9  c                 C  s   t |S rw   r@   r;  re   re   rf   create_capacity_limiter#  s    z&AsyncIOBackend.create_capacity_limiterNz&Callable[[Unpack[PosArgsT]], T_Retval]zabc.CapacityLimiter | None)r   r   abandon_on_cancellimiterrv   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 )NrO  r   )r~  rj  r   rk  LookupErrorr   r   current_default_thread_limiterrF   r   r   r   rP  r   r   rI  rg  rN  rV  rW  rh  r  r   remove_done_callbackr   r   sniffiocurrent_async_library_cvarr   rT  re  )r   r   r   r  r  rR  rQ  r!  r   r   ZworkernowZexpired_workerr   Zworker_scopere   re   rf   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   )r8   r`  r  r   r  r   r   )r   r!  re   re   rf   check_cancelledb  s    zAsyncIOBackend.check_cancelled)r   r   tokenrv   c           	        sX   ddd fdd}t t|}t }|tjjd |tj}|t	j
||}| S )NrF   r   )r!  rv   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#  )r0   r   r   r   r   r   r   r   rf  r   
concurrentfuturesr   )r!  __tracebackhide__r   r  r{  re   rf   task_wrapperu  s    (z:AsyncIOBackend.run_async_from_thread.<locals>.task_wrapperr   )r0   r   r   r   r  r  r   r8   r`  r   run_coroutine_threadsafer[  )	r   r   r   r  r  r   r   r|  rd  re   r{  rf   run_async_from_threadn  s    

  z$AsyncIOBackend.run_async_from_threadc                   s@   t dd fdd}t tt|}||  S )Nr}   ru   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   )r  r  r   r   r|   r   r  r   )r  r   rd  r   re   rf   r|    s    

z4AsyncIOBackend.run_sync_from_thread.<locals>.wrapper)r   r   r0   r   r   r[  )r   r   r   r  r|  r   re   r  rf   ro    s    	

z#AsyncIOBackend.run_sync_from_threadzabc.BlockingPortalc                 C  s   t  S rw   )rl  rm  re   re   rf   create_blocking_portal  s    z%AsyncIOBackend.create_blocking_portal)cwdenvstart_new_sessionz#str | bytes | Sequence[str | bytes]zint | IO[Any] | Nonezstr | bytes | PathLike | NonezMapping[str, str] | Noner  )	commandshellr  r  r  r  r  r  rv   c             	     s   |   I d H  |r8tjtd|||||||dI d H }	n tj|||||||dI d H }	|	jrht|	jnd }
|	jr|t|	jnd }|	j	rt|	j	nd }t
|	|
||S )Nstr | bytes)r  r  r  r  r  r  )r~  r   create_subprocess_shellr0   create_subprocess_execr  r  r  rt  r  r  )r   r  r  r  r  r  r  r  r  r  Zstdin_streamZstdout_streamZstderr_streamre   re   rf   open_process  s0    

zAsyncIOBackend.open_processr  r  c                 C  s&   t t|dd t tt| d S )Nz AnyIO process pool shutdown taskrG  )r   r  r   rI  r   r  )r   rQ  re   re   rf   #setup_process_pool_exit_at_shutdown  s    z2AsyncIOBackend.setup_process_pool_exit_at_shutdownr   r2  zIPSockAddrType | Noner  )hostportlocal_addressrv   c                   s@   t ttjtf t jt|||dI d H \}}|  t||S )N)
local_addr)	r0   r.   r   r  r  r   create_connectionr  r  )r   r  r  r  r  r  re   re   rf   connect_tcp  s       
zAsyncIOBackend.connect_tcpr  zabc.UNIXSocketStream)pathrv   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 rw   r  r  r   r  re   rf   r     r   z-AsyncIOBackend.connect_unix.<locals>.<lambda>)r~  r   r  AF_UNIXr   connectr  r   r   r  r   rI  r|   r   r  )r   r  rd  re   r  rf   connect_unix  s    
zAsyncIOBackend.connect_unixr  rI   )sockrv   c                 C  s   t |S rw   )r  r   r  re   re   rf   create_tcp_listener  s    z"AsyncIOBackend.create_tcp_listenerc                 C  s   t |S rw   )r  r  re   re   rf   create_unix_listener  s    z#AsyncIOBackend.create_unix_listenerr   zUDPSocket | ConnectedUDPSocket)familyr  remote_address
reuse_portrv   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!  r(  )r   r  r  r  r  r  r  re   re   rf   create_udp_socket  s    
z AsyncIOBackend.create_udp_socketzstr | bytes | Nonez8abc.UNIXDatagramSocket | abc.ConnectedUNIXDatagramSocket)r  remote_pathrv   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 rw   r  r  r  re   rf   r   %	  r   z<AsyncIOBackend.create_unix_datagram_socket.<locals>.<lambda>)r~  r   r  r  r   r   r  r   rI  r|   r   r0  r*  )r   r  r  rd  re   r  rf   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  rv   c                  s   t  j||||||dI d H S )Nr  )r   getaddrinfo)r   r  r  r  r  r  r  re   re   rf   r  /	  s         zAsyncIOBackend.getaddrinforH   ztuple[str, str])sockaddrr  rv   c                   s   t  ||I d H S rw   )r   getnameinfo)r   r  r  re   re   rf   r  F	  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)r~  r2  r   r  r   r:   r   r   rC   r  rN  r  r   r;   )r   r  r1  r   rF  readablere   re   rf   wait_socket_readableL	  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)r~  r4  r   r  r   r:   r   r   rC   r  r  rN  r  r   r;   )r   r  r3  r   rF  writablere   re   rf   wait_socket_writableg	  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(   )rS  r   r  rA   r   )r   r  re   re   rf   r  	  s    

z-AsyncIOBackend.current_default_thread_limiterr   z&ContextManager[AsyncIterator[Signals]])rU  rv   c                 G  s   t |S rw   )rT  )r   rU  re   re   rf   open_signal_receiver	  s    z#AsyncIOBackend.open_signal_receiverr5   c                 C  s
   t t S rw   )r`  r   rm  re   re   rf   get_current_task	  s    zAsyncIOBackend.get_current_taskzlist[TaskInfo]c                 C  s   dd t  D S )Nc                 S  s   g | ]}|  st|qS re   )r   r`  )r   r   re   re   rf   r   	  s      z4AsyncIOBackend.get_running_tasks.<locals>.<listcomp>)r   rm  re   re   rf   get_running_tasks	  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?)r~  r   r   r  r   r	   )r   Z	this_taskr   r   re   re   rf   wait_all_tasks_blocked	  s    
z%AsyncIOBackend.wait_all_tasks_blockedra  )ry  rv   c                 C  s
   t f |S rw   )ra  )r   ry  re   re   rf   create_test_runner	  s    z!AsyncIOBackend.create_test_runner)FN)N)r   )*r_   r`   ra   classmethodr   r}  rV  r~  r~  rM  rO  r	   r  r  r  r  r  r  r  r  r  r  ro  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  re   re   re   rf   rU    s      :	$'	   rU  )
__future__r   r  r   concurrent.futuresr  r  r  r  r   r   r   r   r   r   r   r	   Zasyncio.base_eventsr
   collectionsr   r   collections.abcr   r   r   r   
contextlibr   r   r   r   dataclassesr   	functoolsr   r   inspectr   r   r   r   ior   osr   rT  r   r   r   r   r    r!   typesr"   typingr#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   weakrefr1   r  rF  r3   r4   r5   r6   Z_core._eventloopr7   r8   Z_core._exceptionsr9   r:   r;   r<   r=   _core._socketsr>   Z_core._streamsr?   Z_core._synchronizationrA   ZBaseCapacityLimiterrC   Z	BaseEventrD   Z_core._tasksrF   ZBaseCancelScoperG   rH   rI   rJ   rK   lowlevelrL   Zstreams.memoryrM   rN   r  rQ   typing_extensionsrT   rU   rV   enumrW   rX   rY   rZ   exceptiongroupr[   Enumr\   r   r   r   r   r   r   r   r  r   r   r   r   r   r   
TaskStatusr0  r  r7  r|   Z_Retval_Queue_TyperP  rj  rk  rl  ByteReceiveStreamrt  ByteSendStreamr  r  r  r  Protocolr  r  r  r  r  r  r  r!  r(  r*  r0  r2  r4  rS  rT  r`  ra  rU  backend_classre   re   re   rf   <module>   s    $	@ 
 y
 K9$T.t<%02$$r/
 
   |