
    ܲe>                      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jn        d#k    rd d$l7moZo nd d$lpmoZo ejn        d%k    rd d&lmqZq d d'l7mrZrmsZs nNd dlZd dltZtd dl0Z0d d(lmuZumvZvmwZwmxZx d d)lymzZz d d'lpmrZrmsZs  G d* d+etj{                  Z| G d, d-          Zqdd2Z}dd3Z~ eDd4          Z eDd5d67          Z erd8          Z eod9          Z ejd:          Zd;ed:<   dd=ZddAZ eG            ZdBedC<   ddFZ G dG dHec          Zb G dI dJ          Z eG            Z G dK dLeMj                  ZddPZ G dQ dReMj                  ZeCeAe         eAe         f         Z G dS dTe4          Z ejdU          ZdVedU<    ejdW          ZdXedW<    G dY dZeMj                  Z e!d[\           G d] d^eMj                              Z e!d[\           G d_ d`eMj                              Z e!d[\           G da dbeMj                              ZddgZddiZ G dj dkej                  Z G dl dmej                  Z G dn doeMj                  Z G dp dq          Z G dr dseeMj                  Z G dt dueMjf                  Z G dv dweMjf                  Z G dx dyeMj                  Z G dz d{eMj                  Z G d| d}eeMj                  Z G d~ deeMj                  Z ejd          Zded<    ejd          Zded<    G d de_          Z^ G d de]          Z\ ejd          Zded<    G d d          ZddZ G d deMj                  Z G d 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rP      )Runner)TypeVarTupleUnpack)
coroutinesevents
exceptionstasks)BaseExceptionGroupc                      e Zd ZdZdZdZdS )_StatecreatedinitializedclosedN)__name__
__module____qualname__CREATEDINITIALIZEDCLOSED     8lib/python3.11/site-packages/anyio/_backends/_asyncio.pyr^   r^   f   s        #ri   r^   c                  \    e Zd ZdddddZdd	Zd dZd!dZd"dZddd#dZd!dZ	d$dZ
dS )%rU   Ndebugloop_factoryrm   bool | Nonern   &Callable[[], AbstractEventLoop] | Nonec               |    t           j        | _        || _        || _        d | _        d | _        d| _        d| _        d S )Nr   F)	r^   re   _state_debug_loop_factory_loop_context_interrupt_count_set_event_loop)selfrm   rn   s      rj   __init__zRunner.__init__m   s@     !.DKDK!-D37DJ DM$%D!#(D   ri   returnc                .    |                                   | S N)
_lazy_initry   s    rj   	__enter__zRunner.__enter__{   s    OOKri   exc_typetype[BaseException]exc_valBaseExceptionexc_tbr#   Nonec                .    |                                   d S r}   )closery   r   r   r   s       rj   __exit__zRunner.__exit__   s     JJLLLLLri   c                   | j         t          j        urdS 	 | j        }t	          |           |                    |                                           t          |d          r(|                    |                                           n"|                    t          |                     | j
        rt          j        d           |                                 d| _        t          j        | _         dS # | j
        rt          j        d           |                                 d| _        t          j        | _         w xY w)zShutdown and close event loop.Nshutdown_default_executor)rr   r^   rf   ru   _cancel_all_tasksrun_until_completeshutdown_asyncgenshasattrr   _shutdown_default_executorrx   rY   set_event_loopr   rg   ry   loops     rj   r   zRunner.close   s*   {&"444,z!$'''''(?(?(A(ABBB4!<== N++D,J,J,L,LMMMM++,Ft,L,LMMM' 0)$///

!
$m	 ' 0)$///

!
$m++++s   BC7 7A	E r   c                8    |                                   | j        S )zReturn embedded event loop.)r~   ru   r   s    rj   get_loopzRunner.get_loop   s    OO:ri   )contextcoroCoroutine[T_Retval]T_Retvalc               `   t          j        |          st          d|          t          j                    t          d          |                                  || j        }|                    | j	        j
        |          }t          j                    t          j                    u rst          j        t          j                  t          j        u rIt%          | j        |          }	 t          j        t          j        |           n# t          $ r d}Y nw xY wd}d| _        	 | j	                            |          |Jt          j        t          j                  |u r+t          j        t          j        t          j                   S S S # t,          j        $ r< | j        dk    r/t1          |dd          }| |            dk    rt3                       w xY w# |Jt          j        t          j                  |u r+t          j        t          j        t          j                   w w w xY w)z/Run a coroutine inside the embedded event loop.za coroutine was expected, got Nz7Runner.run() cannot be called from a running event loop)	main_taskr   uncancel)rX   r   
ValueErrorrY   _get_running_loopRuntimeErrorr~   rv   runru   r   	threadingcurrent_threadmain_threadsignal	getsignalSIGINTdefault_int_handlerr   
_on_sigintrw   r   rZ   r   getattrKeyboardInterrupt)ry   r   r   tasksigint_handlerr   s         rj   r   z
Runner.run   s)   )$// L !J$!J!JKKK'))5"M   OO-;;tz5t<<D (**i.C.E.EEE$V]33v7QQQ!(D!I!I!I*M&-@@@@! * * * &*NNN	* "&$%D!Mz44T:: #.(77>IIM&-1KLLLL /I ,   (1,,&tZ>>H+

a/111 #.(77>IIM&-1KLLLL /Is,   -D DD)F AGG AH-c                   | j         t          j        u rt          d          | j         t          j        u rd S | j        @t          j                    | _        | j	        s t          j
        | j                   d| _	        n|                                 | _        | j        | j                            | j                   t          j                    | _        t          j        | _         d S )NzRunner is closedT)rr   r^   rg   r   rf   rt   rY   new_event_loopru   rx   r   rs   	set_debugcontextvarsr   rv   r   s    rj   r~   zRunner._lazy_init   s    {fm++"#5666{f000!)#244
+ 0 )$*555+/D(!//11
{&
$$T[111'466DM ,DKKKri   r   asyncio.Taskc                    | xj         dz  c_         | j         dk    rE|                                s1|                                 | j                            d            d S t                      )N   c                     d S r}   rh   rh   ri   rj   <lambda>z#Runner._on_sigint.<locals>.<lambda>   s     ri   )rw   donecancelru   call_soon_threadsafer   )ry   signumframer   s       rj   r   zRunner._on_sigint   sn    !!Q&!!$)))..2B2B)  """
//===#%%%ri   )rm   ro   rn   rp   )r{   rU   )r   r   r   r   r   r#   r{   r   r{   r   r{   r   )r   r   r{   r   )r   r   r{   r   )rb   rc   rd   rz   r   r   r   r   r   r~   r   rh   ri   rj   rU   rU   k   s        
 "&CG		) 	) 	) 	) 	) 	)	 	 	 		 	 	 		, 	, 	, 	,&	 	 	 	
 =A .	M .	M .	M .	M .	M .	M`	- 	- 	- 	-&	& 	& 	& 	& 	& 	&ri   rU   r   r   r{   r   c                b   t          j        |           }|sd S |D ]}|                                 |                     t          j        |ddi           |D ]V}|                                r|                                +|                     d|                                |d           Wd S )Nreturn_exceptionsTz1unhandled exception during asyncio.run() shutdown)message	exceptionr   )r[   r   r   r   gather	cancelledr   call_exception_handler)r   	to_cancelr   s      rj   r   r      s    OD))	 	F 	 	DKKMMMMi P4 P PQQQ 
	 
	D~~ ~~+++#V%)^^%5%5 $   	
	 
	ri   c                "   K   d	 fd}d _          j        dS                                  }t          j        ||f          }|                                 	 | d{V  |                                 dS # |                                 w xY w)
z.Schedule the shutdown of the default executor.futureasyncio.futures.Futurer{   r   c                    	 j                             d                               | j        d            d S # t          $ r&}                    | j        |           Y d }~d S d }~ww xY w)NT)wait)_default_executorshutdownr   
set_result	Exceptionset_exception)r   exr   s     rj   _do_shutdownz0_shutdown_default_executor.<locals>._do_shutdown  s    D&//T/:::))&*;TBBBBB D D D))&*>CCCCCCCCCDs   6; 
A+A&&A+TN)targetargs)r   r   r{   r   )_executor_shutdown_calledr   create_futurer   r"   startjoin)r   r   r   threads   `   rj   r   r     s      	D 	D 	D 	D 	D 	D *.&!)F##%%!VIFFF	LLLLLLLKKMMMMMFKKMMMMs   A8 8Br   T_contraT)contravariantPosArgsTP
_root_taskzRunVar[asyncio.Task | None]r   c                 p   t                               d           } | |                                 s| S t                      D ]q}|j        rh|                                sTd |j        D             }|D ]@}|t
          u st          |dd           dk    r t                               |           |c c S Art          t          j
        t                                }t                              |          }|rA|j        }|r|j        |j        }|r|j        |t          t          j
        |j                  S |S )Nc                    g | ]\  }}|S rh   rh   ).0cbr   s      rj   
<listcomp>z"find_root_task.<locals>.<listcomp>'  s    ???G???ri   rc   zuvloop.loop)r   getr   r   
_callbacksr   r   setr1   asyncioTaskr   _task_statescancel_scope_parent_scope
_host_task)	root_taskr   	callbacksr   stater   s         rj   find_root_taskr     sO   t$$IY^^%5%5  	  	 ? 	 499;; 	 ??t???I    000r<66-GGNN4(((KKKKK H lnn--DT""E ?) 	6|9E'5L  	6|9E #l&=>>>Kri   funcr(   strc                    t          | dd           }t          | dd           }d                    d ||fD                       S )Nrc   rd   .c                    g | ]}||S rh   rh   )r   xs     rj   r   z%get_callable_name.<locals>.<listcomp>A  s    8881a8Q888ri   )r   r   )r   modulequalnames      rj   get_callable_namer   >  sJ    T<..Ft^T22H8888 2888999ri   z1WeakKeyDictionary[asyncio.AbstractEventLoop, Any]	_run_varsr   boolc                    	 t          |                                           t          t          fv S # t          $ r t          d|  d          dw xY w)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   s    rj   _task_startedr   K  sd    Y 11lN5SSS Y Y YMDMMMNNTXXYs	   .1 Ac                  $   e Zd Zej        ddd%dZej        dfd&d	Zd'd
Zd(dZd)dZ	d*dZ
d+dZd*dZd,dZd*dZed-d            Zej        d.d            Zed,d             Zed,d!            Zed,d"            Zej        d/d#            Zd$S )0rG   Fdeadlineshieldr  floatr  r   r{   c               6    t                               |           S r}   object__new__clsr  r  s      rj   r  zCancelScope.__new__Z  s     ~~c"""ri   c                    || _         || _        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)ry   r  r  s      rj   rz   zCancelScope.__init___  ss    !15/2uu#!&;?59),/3"#'+ri   c                   | j         rt          d          t          t          j        t                                x| _        }| j                            |           	 t          |         }|j
        | _        | |_
        | j        >| j        j                            |            | j        j                            |           n*# t          $ r t          d |           }|t          |<   Y nw xY w|                                  d| _         t"          j        dk    r| j                                        | _        | j        r|                     |            | S )Nz;Each CancelScope may only be used for a single 'with' blockTrS   )r  r   r1   r   r   r   r   r  addr   r   r   r  removeKeyError	TaskState_timeoutsysversion_info
cancellingr  r  _deliver_cancellation)ry   	host_task
task_states      rj   r   zCancelScope.__enter__n  sQ   < 	M   '+7<&H&HH)	"""
	<%i0J
 ",!8D&*J#!-"044T:::")00;;;  	1 	1 	1"4..J&0L###	1 	w&&#99;;D  	-&&t,,,s   C $C,+C,r   type[BaseException] | Noner   BaseException | Noner   TracebackType | Nonero   c                    | j         st          d          t                      | j        urt          d          | j        J t                              | j                  }|	|j        | urt          d          d| _         | j        r | j                                         d | _        | j	        
                    | j                   | j        C| j        j        
                    |            | j        j	                            | j                   | j        |_        |                                  | j        rS|Qt!          |          D ]:}t#          |t$                    r#|                     |          | _        | j        r n;| 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   r   r   r   r  r   r  r  r   r  r  _restart_cancellation_in_parentr  iterate_exceptions
isinstancer   	_uncancelr  )ry   r   r   r   host_task_stateexcs         rj   r   zCancelScope.__exit__  s    | 	B@AAA>>00  
 ***&**4?;;"o&B$&N&N'  
  	( '')))#'D 4?+++),33D999%))$/:::'+'9$ 	,,... 	*7#6)'22  c>22 -1^^C-@-@D*- ))tri   cancelled_excr   c                   t           j        dk     s| j        	d| _        dS | j        B| j        r;| xj        dz  c_        | j                                        | j        k    rdS | j        ;d| _        dt          |           d|j        v S )NrP   	   r   Tr   Cancelled by cancel scope r   )r  r  r   r  r  r   idr   )ry   r,  s     rj   r)  zCancelScope._uncancel  s    f$$(?!"D4 '$  ""a'""?++--1AAA4 $  
 8BtHH888M<NNNri   r   c                    | j         t          j        k    rht                      }|                                | j         k    r|                                  d S |                    | j         | j                  | _        d S d S r}   )	r  mathinfr	   timer   call_atr  r  r   s     rj   r  zCancelScope._timeout  sj    >TX%%#%%Dyy{{dn,,'+||DNDM'R'R$$$ &%ri   originc                x   d}t                      }| j        D ]}|j        r
d}||ur|| j        u st	          |          r|j        }t          |t          j                  r|	                                s[| xj
        dz  c_
        t          j        dk    r'|                    dt          |          d           |                                 | j        D ]'}|j        s|j        s|                    |          p|}(|| u r6|r-t'                                          | 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.  r0  r   N)r   r  _must_cancelr   r   _fut_waiterr(  r   r   r   r  r  r  r   r1  r  r  cancel_calledr  r	   	call_soonr  )ry   r7  should_retrycurrentr   waiterscopes          rj   r  z!CancelScope._deliver_cancellation  sp    ..K 	& 	&D    L7""(?(?=QUCVCV(?)!&'.99 & &&&!+&&'611$OF$O$O$OPPPP ' 	S 	SE= S)< S$::6BBRl T>> +&6&8&8&B&B.' '## '+#ri   c                    | j         }|9|j        r|j        |                    |           dS |j        rdS |j         }|7dS dS )zb
        Restart the cancellation effort in the closest directly cancelled parent scope.

        N)r   r  r  r  r  )ry   r@  s     rj   r&  z+CancelScope._restart_cancellation_in_parent  sl    
 "# '///666 } 'E ri   c                X    | j         }| |j        s|j        rdS |j         }||j        dS )NTF)r   r  r  )ry   r   s     rj   _parent_cancelledzCancelScope._parent_cancelled  sG    )&|/C&* :t+9	 &|/C& uri   c                    | j         sL| j        r | j                                         d | _        d| _         | j        |                     |            d S d S d S NT)r  r  r   r   r  r   s    rj   r   zCancelScope.cancel   sq    " 	1# ,$++---'+$"&D***400000	1 	1 +*ri   c                    | j         S r}   )r  r   s    rj   r  zCancelScope.deadline*  s
    ~ri   valuec                    t          |          | _        | j         | j                                         d | _        | j        r| j        s|                                  d S d S d S r}   )r  r  r  r   r  r  r  ry   rG  s     rj   r  zCancelScope.deadline.  sn    u+ '')))#'D < 	 3 	MMOOOOO	 	 	 	ri   c                    | j         S r}   )r  r   s    rj   r;  zCancelScope.cancel_called8  s    ""ri   c                    | j         S r}   )r  r   s    rj   cancelled_caughtzCancelScope.cancelled_caught<  s    %%ri   c                    | j         S r}   )r  r   s    rj   r  zCancelScope.shield@  
    |ri   c                ^    | j         |k    r|| _         |s|                                  d S d S d S r}   )r  r&  rI  s     rj   r  zCancelScope.shieldD  sH    <5   DL 74466666 ! 7 7ri   Nr  r  r  r   r{   rG   )r  r  r  r   )r{   rG   r   r"  r   r#  r   r$  r{   ro   )r,  r   r{   r   r   )r7  rG   r{   r   r{   r   r{   r  rG  r  r{   r   )rG  r   r{   r   )rb   rc   rd   r3  r4  r  rz   r   r   r)  r  r  r&  rC  r   propertyr  setterr;  rL  r  rh   ri   rj   rG   rG   Y  s       "&(5# # # # # #
 *.% , , , , ,   >/ / / /bO O O OS S S S+ + + +Z( ( ( (&	 	 	 	1 1 1 1    X _   _ # # # X# & & & X&    X ]7 7 7 ]7 7 7ri   rG   c                      e Zd ZdZdZ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   rY  
int | Noner   CancelScope | Nonec                "    || _         || _        d S r}   rX  )ry   rY  r   s      rj   rz   zTaskState.__init__Y  s    "(ri   N)rY  rZ  r   r[  )rb   rc   rd   __doc__	__slots__rz   rh   ri   rj   r  r  Q  s9         
 ,I) ) ) ) ) )ri   r  c                       e Zd ZddZdddZdS )_AsyncioTaskStatusr   asyncio.FuturerY  intc                "    || _         || _        d S r}   )_future
_parent_id)ry   r   rY  s      rj   rz   z_AsyncioTaskStatus.__init__g  s    #ri   NrG  T_contra | Noner{   r   c                    	 | j                             |           n## t          j        $ r t	          d          d w xY wt          t          j        t                                }| j        t          |         _
        d S )Nz.called 'started' twice on the same task status)rd  r   r   InvalidStateErrorr   r1   r   r   re  r   rY  )ry   rG  r   s      rj   startedz_AsyncioTaskStatus.startedk  s    	L##E****( 	 	 	@ 	
 GL,..11'+T$$$s     =)r   ra  rY  rb  r}   )rG  rf  r{   r   )rb   rc   rd   rz   ri  rh   ri   rj   r`  r`  f  sA        $ $ $ $	7 	7 	7 	7 	7 	7 	7ri   r`  r   r   $Generator[BaseException, None, None]c              #  ~   K   t          | t                    r!| j        D ]}t          |          E d {V  d S | V  d S r}   )r(  r\   rZ   r'  )r   r+  s     rj   r'  r'  w  si       )/00 ' 	/ 	/C)#..........	/ 	/ ri   c                  N    e Zd ZddZddZd dZ	 d!d"dZddd#dZddd$dZdS )%	TaskGroupr{   r   c                n    t                      | _        d| _        g | _        t	                      | _        d S )NF)rG   r   r  _exceptionsr   r  r   s    rj   rz   zTaskGroup.__init__  s,    )402),ri   c                J   K   | j                                          d| _        | S rE  )r   r   r  r   s    rj   
__aenter__zTaskGroup.__aenter__  s'      ##%%%ri   r   r"  r   r#  r   r$  ro   c                  K   | j                             |||          }|H| j                                          t          |t                    s| j                            |           d }| j        r\	 t          j	        | j                   d {V  n4# t          $ r'}| j                                          ||}Y d }~nd }~ww xY w| j        \d| _
        | j        rt          d| j                  |r||r||S )NFzunhandled errors in a TaskGroup)r   r   r   r(  r   ro  appendr  r   r   r  r\   )ry   r   r   r   ignore_exception!cancelled_exc_while_waiting_tasksr+  s          rj   	__aexit__zTaskGroup.__aexit__  sD       ,55hPP$$&&&g~66 1 ''000CG)k 	<<l4;//////////! < < < !((***4<8;5< k 	<  	$143C   - 	8"277s   3B 
CB??CNr   ,Callable[[Unpack[PosArgsT]], Awaitable[Any]]r   tuple[Unpack[PosArgsT]]namer  task_status_futureasyncio.Future | Noner   c                   
 d 
fd} j         st          d          i }rFt          t                                }t	          t           j        j                            |d<   nt           j        j                  } ||i |}t          |          s9t          |d          r
|j	         d	nd
}	t          d|	 |j         d|d          |t          |          nt          |          }t          ||          

                    |           t!          | j                  t"          
<    j        j                            
            j                            
           
S )N_taskr   r{   r   c                J   t           |          }|j        J | |j        j        v sJ |j        j                            |            j                                       t           | = 	 |                                 }nT# t
          $ rG}t          |j        t
                    r!|j        }t          |j        t
                    !|}Y d }~nd }~ww xY w|                                ret          |t
                    sj	        
                    |           j                                        sj                                         d S d S                     |           d S 8                                s&                    t          d                     d S d S d S )Nz2Child exited without calling task_status.started())r   r   r  r  r   r   r(  __context__r   ro  rs  rC  r   r   r   )r}  r!  r+  ery   r   rz  s       rj   	task_donez#TaskGroup._spawn.<locals>.task_done  s   %e,J*666J3:::::#*11%888Kt$$$U#oo''!    ?? &A !?? & 	 %-1C1H1H1J1J-%c>:: 5(//444,>>@@ 3)00222223 3 '44S99999#/8J8O8O8Q8Q/"00 !UVV     0///s   *A? ?
C	=CCz;This task group is not active; no new tasks can be started.task_statusrc   r    z	Expected z0() to return a coroutine, but the return value (z) is not a coroutine objectry  rX  )r}  r   r{   r   )r  r   r1  r   r`  r   r   r   r   rc   	TypeErrorrd   r   r   r   add_done_callbackr  r   r  r  )ry   r   r   ry  rz  r  kwargsrY  r   prefixr   s   `   `     @rj   _spawnzTaskGroup._spawn  s   	 	 	 	 	 	 	 	< | 	M    	9<>>**I$6"Bt'8'C$D$D% %F=!! 4,788ItT$V$$4   	.5dL.I.IQ****rFIF ID$5 I I%)I I I  
 +/, &&&CII4d+++y))) 'd.?
 
 
T 	 $$T***ri   r  Unpack[PosArgsT]c               4    |                      |||           d S r}   )r  )ry   r   ry  r   s       rj   
start_soonzTaskGroup.start_soon  s      	D$%%%%%ri   Callable[..., Awaitable[Any]]r%   c               l  K   t          j                    }|                     ||||          }	 | d {V S # t          $ rr |                                 t          d          5  t          t                    5  | d {V  d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y    w xY w)NTr  )r   r   r  r   r   rG   r   )ry   r   ry  r   r   r   s         rj   r   zTaskGroup.start  sI      ")!1!1{{4tV44	<<<<<< 	 	 	KKMMMD)))  8N+C+C  






                              	sQ   7 .B3%B&:	BB&BB&BB&B3&B*	*B3-B*	.B3r   )r{   rm  rQ  r}   )
r   rw  r   rx  ry  r  rz  r{  r{   r   )r   rw  r   r  ry  r  r{   r   )r   r  r   r  ry  r  r{   r%   )	rb   rc   rd   rz   rq  rv  r  r  r   rh   ri   rj   rm  rm    s        / / / /   
%  %  %  % X 59E E E E EV 	& & & & & & RV       ri   rm  c                  >     e Zd ZdZd fdZddZddZdddZ xZS )WorkerThreadrQ   r   r   workersset[WorkerThread]idle_workersdeque[WorkerThread]c                    t                                          d           || _        || _        || _        |j        | _        t          d          | _        t          
                                | _        d| _        d S )NzAnyIO worker threadr  r3   F)superrz   r   r  r  ru   r   r   queueAsyncIOBackendcurrent_time
idle_sincestopping)ry   r   r  r  	__class__s       rj   rz   zWorkerThread.__init__"  sr     	3444"(O	 !HH 	
 )5577ri   r   ra  resultr%   r+  r#  r{   r   c                f   t                                           | _        | j        s| j                            |            |                                s]|Dt          |t                    rt          d          }||_
        |}|                    |           d S |                    |           d S d S )Nzcoroutine raised StopIteration)r  r  r  r  r  rs  r   r(  StopIterationr   	__cause__r   r   )ry   r   r  r+  new_excs        rj   _report_resultzWorkerThread._report_result3  s     )5577} 	+$$T***!! 		*c=11 "*+KLLG(+G%!C$$S)))))!!&)))))		* 		*ri   c                "   t          t          | j                  5  	 | j                                        }|	 d d d            d S |\  }}}}}|                                sd }d }|t          _        	  |j        |g|R  }n# t          $ r}	|	}Y d }	~	nd }	~	ww xY wt          `n# t          `w xY w| j        
                                s"| j                            | j        |||           | j                                         # 1 swxY w Y   d S r}   )r8   r  r   r  r   r   r9   current_cancel_scoper   r   	is_closedr   r  r  )
ry   itemr   r   r   r   r   r  r   r+  s
             rj   r   zWorkerThread.runE  s    ;; 	' 	''z~~''<	' 	' 	' 	' 	' 	' 	' 	' =A9tV\'')) !F6:I8DL5>!,T!9D!9!9!9( ( ( ($'						( )==L=====9..00 	66 /   
$$&&&/'	' 	' 	' 	' 	' 	' 	' 	' 	' 	'sT   D,D3BB#
BBB#BB#D#	B,,ADDDNfasyncio.Task | Nonec                    d| _         | j                            d            | j                            |            	 | j                            |            d S # t          $ r Y d S w xY wrE  )r  r  
put_nowaitr  discardr  r  r   )ry   r  s     rj   stopzWorkerThread.stop`  sy    
d###T"""	$$T***** 	 	 	DD	s   A 
A'&A')r   r   r  r  r  r  )r   ra  r  r%   r+  r#  r{   r   r   r}   )r  r  r{   r   )	rb   rc   rd   MAX_IDLE_TIMErz   r  r   r  __classcell__r  s   @rj   r  r    s        M     "* * * *$' ' ' '6        ri   r  _threadpool_idle_workerszRunVar[deque[WorkerThread]]_threadpool_workerszRunVar[set[WorkerThread]]c                  0     e Zd ZddZd fdZddZ xZS )BlockingPortalr{   c                6    t                               |           S r}   r  r	  s    rj   r  zBlockingPortal.__new__q      ~~c"""ri   r   c                n    t                                                       t                      | _        d S r}   )r  rz   r	   ru   )ry   r  s    rj   rz   zBlockingPortal.__init__t  s*    %''


ri   r   <Callable[[Unpack[PosArgsT]], Awaitable[T_Retval] | T_Retval]r   rx  r  dict[str, Any]ry  r  r   Future[T_Retval]c                    t                               t          | j        j        |          | j        ||||f| j                   d S )Nr  )r  run_sync_from_threadr   _task_groupr  
_call_funcru   )ry   r   r   r  ry  r   s         rj   _spawn_task_from_threadz&BlockingPortal._spawn_task_from_threadx  sQ     	++D$/d;;;_dD&&9J	
 	
 	
 	
 	
ri   )r{   r  r   )r   r  r   rx  r  r  ry  r  r   r  r{   r   )rb   rc   rd   r  rz   r  r  r  s   @rj   r  r  p  se        # # # #( ( ( ( ( (
 
 
 
 
 
 
 
ri   r  F)eqc                  ,    e Zd ZU ded<   dddZdd
ZdS )StreamReaderWrapperzasyncio.StreamReader_stream   	max_bytesrb  r{   bytesc                \   K   | j                             |           d {V }|r|S t          r}   )r  readr=   )ry   r  datas      rj   receivezStreamReaderWrapper.receive  s@      \&&y11111111 	Kri   r   c                <   K   | j                                          d S r}   )r  feed_eofr   s    rj   aclosezStreamReaderWrapper.aclose  s       ri   Nr  r  rb  r{   r  r   )rb   rc   rd   __annotations__r  r  rh   ri   rj   r  r    sO         !!!!               ri   r  c                  *    e Zd ZU ded<   d
dZddZd	S )StreamWriterWrapperzasyncio.StreamWriterr  r  r  r{   r   c                |   K   | j                             |           | j                                          d {V  d S r}   )r  writedrainry   r  s     rj   sendzStreamWriterWrapper.send  sH      4   l  """""""""""ri   c                <   K   | j                                          d S r}   )r  r   r   s    rj   r  zStreamWriterWrapper.aclose  s       ri   Nr  r  r{   r   r   )rb   rc   rd   r  r  r  rh   ri   rj   r  r    sJ         !!!!# # # #     ri   r  c                      e Zd ZU ded<   ded<   ded<   ded<   dd
ZddZddZddZddZe	dd            Z
e	dd            Ze	dd            Ze	dd            Ze	dd            ZdS ) Processzasyncio.subprocess.Process_processzStreamWriterWrapper | None_stdinzStreamReaderWrapper | None_stdout_stderrr{   r   c                "  K   | j         r| j                                          d {V  | j        r| j                                         d {V  | j        r| j                                         d {V  |                                  d {V  d S r}   )r  r  r  r  r   r   s    rj   r  zProcess.aclose  s      ; 	'+$$&&&&&&&&&< 	(,%%'''''''''< 	(,%%'''''''''iikkri   rb  c                D   K   | j                                          d {V S r}   )r  r   r   s    rj   r   zProcess.wait  s,      ]'')))))))))ri   c                8    | j                                          d S r}   )r  	terminater   s    rj   r  zProcess.terminate  s    !!!!!ri   c                8    | j                                          d S r}   )r  killr   s    rj   r  zProcess.kill  s    ri   r   c                :    | j                             |           d S r}   )r  send_signal)ry   r   s     rj   r  zProcess.send_signal  s    !!&)))))ri   c                    | j         j        S r}   )r  pidr   s    rj   r  zProcess.pid  s    }  ri   rZ  c                    | j         j        S r}   )r  
returncoder   s    rj   r  zProcess.returncode  s    }''ri   abc.ByteSendStream | Nonec                    | j         S r}   )r  r   s    rj   stdinzProcess.stdin  s
    {ri   abc.ByteReceiveStream | Nonec                    | j         S r}   )r  r   s    rj   stdoutzProcess.stdout  rN  ri   c                    | j         S r}   )r  r   s    rj   stderrzProcess.stderr  rN  ri   Nr   r{   rb  )r   rb  r{   r   )r{   rZ  )r{   r  )r{   r  )rb   rc   rd   r  r  r   r  r  r  rU  r  r  r  r  r  rh   ri   rj   r  r    sJ        ((((&&&&''''''''   * * * *" " " "   * * * * ! ! ! X! ( ( ( X(    X    X    X  ri   r  r  set[Process]r}  r  c                   d}t           j        dk     r7	 t          j                                                    }n# t
          $ r Y nw xY w| D ]}|j        
|j        j        j	        
                                 |j        j        j	        
                                 |j        j        j	        
                                 |                                 |r|                    |j                   dS )zG
    Forcibly shuts down worker processes belonging to this event loop.N)rP      )r  r  r   get_event_loop_policyget_child_watcherNotImplementedErrorr  r  r  
_transportr   r  r  r  remove_child_handlerr  )r  r}  child_watcherprocesss       rj   '_forcibly_shutdown_process_pool_on_exitr     s    
 :>M
'!!	#9;;MMOOMM" 	 	 	D	  	< 	<%)//111*00222*00222 	<..w{;;;	< 	<s   %: 
AAset[abc.Process]c                   K   	 t          t          j                   d{V  dS # t          j        $ rC | D ]}|j        |                                 | D ]}|                                 d{V  Y dS w xY w)z
    Shuts down worker processes belonging to this event loop.

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

    N)r
   r3  r4  r   r   r  r  r  )r  r  s     rj   _shutdown_process_pool_on_exitr    s      #DHoo! # # # 	 	G!) 	# 	#G..""""""""""	# 	# 	##s   % AA76A7c                  l    e Zd ZU ded<   ded<   ded<   dZded<   ddZddZddZddZddZ	ddZ
dS )StreamProtocolzdeque[bytes]
read_queueasyncio.Event
read_eventwrite_eventNException | Noner   	transportasyncio.BaseTransportr{   r   c                   t                      | _        t          j                    | _        t          j                    | _        | j                                         t          t          j        |          	                    d           d S Nr   )
r   r  r   rD   r  r	  r   r1   	Transportset_write_buffer_limitsry   r  s     rj   connection_madezStreamProtocol.connection_made  sd    ''!-//"=??W	**BB1EEEEEri   r+  c                    |rt                      | _        || j        _        | j                                         | j                                         d S r}   )r:   r   r  r  r   r	  ry   r+  s     rj   connection_lostzStreamProtocol.connection_lost  sP     	+022DN'*DN$ri   r  r  c                l    | j                             |           | j                                         d S r}   )r  rs  r  r   )ry   r  s     rj   data_receivedzStreamProtocol.data_received   s2    t$$$ri   ro   c                8    | j                                          dS rE  )r  r   r   s    rj   eof_receivedzStreamProtocol.eof_received$  s    tri   c                6    t          j                    | _        d S r}   )r   rD   r	  r   s    rj   pause_writingzStreamProtocol.pause_writing(  s    "=??ri   c                8    | j                                          d S r}   r	  r   r   s    rj   resume_writingzStreamProtocol.resume_writing+      ri   r  r  r{   r   r+  r
  r{   r   )r  r  r{   r   )r{   ro   r   )rb   rc   rd   r  r   r  r  r  r  r  r  rh   ri   rj   r  r    s         "&I&&&&F F F F         + + + +     ri   r  c                  l    e Zd ZU ded<   ded<   ded<   dZded<   ddZddZddZddZddZ	ddZ
dS )DatagramProtocolz#deque[tuple[bytes, IPSockAddrType]]r  r  r  r	  Nr
  r   r  r  r{   r   c                    t          d          | _        t          j                    | _        t          j                    | _        | j                                         d S )Nd   )maxlen)r   r  r   rD   r  r	  r   r  s     rj   r  z DatagramProtocol.connection_made5  sJ    s+++!-//"=??ri   r+  c                j    | j                                          | j                                         d S r}   )r  r   r	  r  s     rj   r  z DatagramProtocol.connection_lost;  s1    ri   r  r  addrrI   c                    t          |          }| j                            ||f           | j                                         d S r}   )r?   r  rs  r  r   )ry   r  r(  s      rj   datagram_receivedz"DatagramProtocol.datagram_received?  sC    $T**d|,,,ri   r   c                    || _         d S r}   )r   r  s     rj   error_receivedzDatagramProtocol.error_receivedD  s    ri   c                8    | j                                          d S r}   )r	  clearr   s    rj   r  zDatagramProtocol.pause_writingG  s         ri   c                8    | j                                          d S r}   r  r   s    rj   r  zDatagramProtocol.resume_writingJ  r  ri   r   r!  )r  r  r(  rI   r{   r   )r+  r   r{   r   r   )rb   rc   rd   r  r   r  r  r*  r,  r  r  rh   ri   rj   r#  r#  /  s         3333"&I&&&&         
   ! ! ! !     ri   r#  c                  P    e Zd ZddZedd            ZdddZddZddZddZ	dS )SocketStreamr  asyncio.Transportprotocolr  c                    || _         || _        t          d          | _        t          d          | _        d| _        d S Nreading from
writing toFr  	_protocolrE   _receive_guard_send_guard_closedry   r  r3  s      rj   rz   zSocketStream.__init__O  s;    #!+N;;(66ri   r{   socket.socketc                6    | j                             d          S Nsocketr  get_extra_infor   s    rj   _raw_socketzSocketStream._raw_socketV      --h777ri   r  r  rb  r  c                <  K   | j         5  t                                           d {V  | j        j                                        so| j                                        sV| j                                         | j        j        	                                 d {V  | j        
                                 	 | j        j                                        }n># t          $ r1 | j        rt          d | j        j        r| j        j        d t"          d w xY wt%          |          |k    r3|d |         ||d          }}| j        j                            |           | j        j        s| j        j                                         d d d            n# 1 swxY w Y   |S r}   )r:  r  
checkpointr9  r  is_setr  
is_closingresume_readingr   pause_readingr  popleft
IndexErrorr<  r<   r   r=   len
appendleftr.  )ry   r  chunkleftovers       rj   r  zSocketStream.receiveZ  s       	2 	2 ++--------- N-4466022440 ..000n/44666666666--///0199;; 0 0 0< 0-47^- 0.2<%4/0 5zzI%%"'

"3U9::5Fx)44X>>> >, 2)//111;	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2> s+   B-F8CF;DA3FFFr  r   c                  K   | j         5  t                                           d {V  | j        rt          | j        j        | j        j        	 | j                            |           n4# t          $ r'}| j        
                                rt          | d }~ww xY w| j        j                                         d {V  d d d            d S # 1 swxY w Y   d S r}   )r;  r  rG  r<  r<   r9  r   r  r  r   rI  r:   r	  r   )ry   r  r+  s      rj   r  zSocketStream.send|  sF      	4 	4 ++---------| /)))5n..%%d++++   ?--// -36	 .,11333333333!	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s6   ACA,+C,
B6"BB'CCCc                `   K   	 | j                                          d S # t          $ r Y d S w xY wr}   )r  	write_eofOSErrorr   s    rj   send_eofzSocketStream.send_eof  sG      	O%%''''' 	 	 	DD	s    
--c                2  K   | j                                         s{d| _        	 | j                                          n# t          $ r Y nw xY w| j                                          t          d           d {V  | j                                          d S d S NTr   )r  rI  r<  rT  rU  r   r
   abortr   s    rj   r  zSocketStream.aclose  s      ))++ 		$DL))++++    O!!###((NNNNNNNO!!#####		$ 		$s   > 
A
AN)r  r2  r3  r  r{   r>  r  r  r  r   )
rb   rc   rd   rz   rU  rD  r  r  rV  r  rh   ri   rj   r1  r1  N  s            8 8 8 X8         D4 4 4 4&   
$ 
$ 
$ 
$ 
$ 
$ri   r1  c                  h    e Zd ZU dZded<   dZded<   dZddZedd
            Z	ddZ
ddZddZdS )_RawSocketMixinNr{  _receive_future_send_futureF
raw_socketr>  c                d    || _         t          d          | _        t          d          | _        d S )Nr6  r7  )_RawSocketMixin__raw_socketrE   r:  r;  ry   r_  s     rj   rz   z_RawSocketMixin.__init__  s0    &+N;;(66ri   r{   c                    | j         S r}   )ra  r   s    rj   rD  z_RawSocketMixin._raw_socket        ri   r   asyncio.AbstractEventLoopra  c                     d fd}t          j                    x} _                             j        |j        d            |                    |           |S )Nr  r  r{   r   c                @    `                     j                   d S r}   )r]  remove_readerra  r  r   ry   s    rj   callbackz6_RawSocketMixin._wait_until_readable.<locals>.callback  s&    $t011111ri   r  r  r{   r   )r   r   r]  
add_readerra  r   r  ry   r   rj  r  s   ``  rj   _wait_until_readablez$_RawSocketMixin._wait_until_readable  sr    	2 	2 	2 	2 	2 	2 	2 $+>#3#33D )1<>>>	H%%%ri   c                     d fd}t          j                    x} _                             j        |j        d            |                    |           |S )Nr  r  r{   r   c                @    `                     j                   d S r}   )r^  remove_writerra  ri  s    rj   rj  z6_RawSocketMixin._wait_until_writable.<locals>.callback  s&    !t011111ri   rk  )r   r   r^  
add_writerra  r   r  rm  s   ``  rj   _wait_until_writablez$_RawSocketMixin._wait_until_writable  sr    	2 	2 	2 	2 	2 	2 	2 !( 0 00D)1<>>>	H%%%ri   r   c                  K   | j         sd| _         | j                                        dk    r| j                                         | j        r| j                            d            | j        r| j                            d            d S d S d S )NT)_closingra  filenor   r]  r   r^  r   s    rj   r  z_RawSocketMixin.aclose  s      } 	3 DM ''))R//!'')))# 6$//555  3!,,T22222	3 	33 3ri   r_  r>  rZ  )r   re  r{   ra  r   )rb   rc   rd   r]  r  r^  rv  rz   rU  rD  rn  rs  r  rh   ri   rj   r\  r\    s         -1O1111*.L....H7 7 7 7
 ! ! ! X!      	3 	3 	3 	3 	3 	3ri   r\  c                  8    e Zd ZddZdddZdd
ZddZddZdS )UNIXSocketStreamr{   r   c                   K   | j         5  | j                            t          j                   d d d            d S # 1 swxY w Y   d S r}   )r;  rD  r   rA  SHUT_WRr   s    rj   rV  zUNIXSocketStream.send_eof  s       	6 	6%%fn555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s   %<A A r  r  rb  r  c                  K   t                      }t                                           d {V  | j        5  	 	 | j                            |          }|st          |cd d d            S # t          $ r |                     |           d {V  Y n(t          $ r}| j
        rt          d t          |d }~ww xY w# 1 swxY w Y   d S r}   )r	   r  rG  r:  rD  recvr=   BlockingIOErrorrn  rU  rv  r<   r:   )ry   r  r   r  r+  s        rj   r  zUNIXSocketStream.receive  sS     !!'')))))))))  	  	   +00;;D   *))	  	  	  	  	  	  	  	  ' : : :33D99999999999 ; ; ;} ;1t;1s:	; 	  	  	  	  	  	  	  	  	  	 s@   B;A+
B;+%B7B;	B7B22B77B;;B?B?r  c                  K   t                      }t                                           d {V  | j        5  t	          |          }|rw	 | j                            |          }||d          }nO# t          $ r |                     |           d {V  Y n(t          $ r}| j
        rt          d t          |d }~ww xY w|wd d d            d S # 1 swxY w Y   d S r}   )r	   r  rG  r;  
memoryviewrD  r  r  rs  rU  rv  r<   r:   )ry   r  r   view
bytes_sentr+  s         rj   r  zUNIXSocketStream.send  sg     !!''))))))))) 	- 	-d##D -
-!%!1!6!6t!<!<J  
,DD ' : : :33D99999999999 ; ; ;} ;1t;1s:	;  -	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-sA   C
A/$C/%B;C	B;B66B;;CCCmsglenmaxfdstuple[bytes, list[int]]c           	       K   t          |t                    r|dk     rt          d          t          |t                    r|dk     rt          d          t                      }t	          j        d          }t
                                           d {V  | j        5  	 	 | j        	                    |t          j        ||j        z                      \  }}}}|s	|st          nP# t          $ r |                     |           d {V  Y n(t           $ r}	| j        rt$          d t&          |	d }	~	ww xY w	 d d d            n# 1 swxY w Y   |D ]\  }
}}|
t          j        k    s|t          j        k    rt-          d|d|
 d	|           |                    |d t1          |          t1          |          |j        z  z
                      |t3          |          fS )
Nr   z%msglen must be a non-negative integerr   z!maxfds must be a positive integeriTz.Received unexpected ancillary data; message = z, cmsg_level = z, cmsg_type = )r(  rb  r   r	   arrayr  rG  r:  rD  recvmsgrA  CMSG_LENitemsizer=   r  rn  rU  rv  r<   r:   
SOL_SOCKET
SCM_RIGHTSr   	frombytesrN  list)ry   r  r  r   fdsr   ancdataflagsr(  r+  
cmsg_level	cmsg_type	cmsg_datas                rj   receive_fdszUNIXSocketStream.receive_fds  s     &#&& 	F&1**DEEE&#&& 	B&1**@AAA!!k#'')))))))))  	 	484D4L4L0E F F5 51GWeT # *7 *)) ' : : :33D99999999999 ; ; ;} ;1t;1s:	;  #	 	 	 	 	 	 	 	 	 	 	 	 	 	 	& 18 	Y 	Y,J	9V...)v?P2P2P"JW J J$.J J>GJ J  
 MM)$Vc)nnI8U&V$VWXXXXS		!!sB   E":C(E(%D4E	D4D//D44EE	E	r   r  Collection[int | IOBase]c                  K   |st          d          |st          d          t                      }g }|D ]i}t          |t                    r|                    |           -t          |t
                    r'|                    |                                           jt          j        d|          }t          	                                 d {V  | j
        5  	 	 | j                            |gt          j        t          j        |fg           nP# t           $ r |                     |           d {V  Y n(t$          $ r}| j        rt(          d t*          |d }~ww xY w	 d d d            d S # 1 swxY w Y   d S )Nzmessage must not be emptyzfds must not be emptyr  )r   r	   r(  rb  rs  r   rw  r  r  rG  r;  rD  sendmsgrA  r  r  r  rs  rU  rv  r<   r:   )ry   r   r  r   filenosfdfdarrayr+  s           rj   send_fdszUNIXSocketStream.send_fds"  s      	:8999 	64555!! 	, 	,B"c"" ,r""""B'' ,ryy{{++++c7++''))))))))) 	; 	;;; $,, 	V%68I7$S#T   & : : :33D99999999999 ; ; ;} ;1t;1s:	;; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;sB   E24DE2%E 9E2;	E EE  E22E69E6Nr   r  r  r  )r  rb  r  rb  r{   r  )r   r  r  r  r{   r   )rb   rc   rd   rV  r  r  r  r  rh   ri   rj   rz  rz    s~        6 6 6 6         (- - - -$%" %" %" %"N; ; ; ; ; ;ri   rz  c                  R    e Zd ZU dZded<   dZddZedd	            ZddZ	ddZ
dS )TCPSocketListenerNr[  _accept_scopeFr_  r>  c                    || _         t          t          j        t	                                | _        t          d          | _        d S )Naccepting connections from)_TCPSocketListener__raw_socketr1   r   BaseEventLoopr	   ru   rE   _accept_guardrb  s     rj   rz   zTCPSocketListener.__init__H  s<    &'/1A1C1CDD
*+GHHri   r{   c                    | j         S r}   )r  r   s    rj   rD  zTCPSocketListener._raw_socketM  rd  ri   abc.SocketStreamc                  K   | j         rt          | j        5  t                                           d {V  t                      5 | _        	 | j                            | j	                   d {V \  }}n[# t          j        $ rI 	 | j                            | j	                   n# t          t          f$ r Y nw xY w| j         rt          d  w xY w	 d | _        n# d | _        w xY w	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                    t           j        t           j        d           | j                            t(          |           d {V \  }}t+          ||          S Nr   )r<  r<   r  r  rG  rG   r  ru   sock_acceptrD  r   r   rh  r   r  
setsockoptrA  IPPROTO_TCPTCP_NODELAYconnect_accepted_socketr  r1  )ry   client_sock_addrr  r3  s        rj   acceptzTCPSocketListener.acceptQ  sC     < 	&%% 	. 	. ++--------- .$"4./3z/E/EdFV/W/W)W)W)W)W)W)W&K- 
 
 

001ABBBB&(;<    | <1t;
 "' *.D&&D&----&. . . . . . . . . . . . . . .	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.& 	v163EqIII$(J$F$FK%
 %
 
 
 
 
 
 
	8 Ix000s   .D
C3(A65C6CB&%C&B:	7C9B:	:CCC3	C##C3'D
3C7	7D
:C7	;D

DDr   c                6  K   | j         rd S d| _         | j        rf	 | j                            | j                   n# t
          t          f$ r Y nw xY w| j                                         t          d           d {V  | j        	                                 d S rX  )
r<  r  ru   rh  rD  r   r  r   r
   r   r   s    rj   r  zTCPSocketListener.aclosen  s      < 	F 	
(()9:::: 34    %%'''((NNNNNNN     s   ; AArx  rZ  r{   r  r   )rb   rc   rd   r  r  r<  rz   rU  rD  r  r  rh   ri   rj   r  r  D  s         (,M,,,,GI I I I
 ! ! ! X!1 1 1 1:! ! ! ! ! !ri   r  c                  >    e Zd ZddZddZddZedd	            Zd
S )UNIXSocketListenerr_  r>  c                p    || _         t                      | _        t          d          | _        d| _        d S )Nr  F)_UNIXSocketListener__raw_socketr	   ru   rE   r  r<  rb  s     rj   rz   zUNIXSocketListener.__init__  s3    &%''
*+GHHri   r{   r  c                (   K   t                                            d {V   j        5  	 	  j                                        \  }}|                    d           t          |          cd d d            S # t          $ r\ t          j	                    } j
                             j        |j        d            |                     fd           | d {V  Y n(t          $ r} j        rt           d t"          |d }~ww xY w# 1 swxY w Y   d S )NTFc                B    j                             j                  S r}   )ru   rh  r  )_ry   s    rj   r   z+UNIXSocketListener.accept.<locals>.<lambda>  s    $*":":4;L"M"M ri   )r  rG  r  r  r  setblockingrz  r  r   r   ru   rl  r   r  rU  r<  r<   r:   )ry   r  r  r  r+  s   `    rj   r  zUNIXSocketListener.accept  s     ''))))))))) 	; 	;;;%)%6%=%=%?%?NK++E222+K88	; 	; 	; 	; 	; 	; 	; 	; '   (/(8(8AJ))$*;Q\4PPP''MMMM   GGGGGGGGG ; ; ;| ;1t;1s:	;;	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s;   D?A99A#DD	D'C>>DDDDr   c                J   K   d| _         | j                                         d S rE  )r<  r  r   r   s    rj   r  zUNIXSocketListener.aclose  s(      !!!!!ri   c                    | j         S r}   )r  r   s    rj   rD  zUNIXSocketListener._raw_socket  rd  ri   Nrx  r  r   rZ  )rb   rc   rd   rz   r  r  rU  rD  rh   ri   rj   r  r    sp           ; ; ; ;*" " " " ! ! ! X! ! !ri   r  c                  F    e Zd ZddZedd            Zdd
ZddZddZdS )	UDPSocketr  asyncio.DatagramTransportr3  r#  c                    || _         || _        t          d          | _        t          d          | _        d| _        d S r5  r8  r=  s      rj   rz   zUDPSocket.__init__  =     $!+N;;(66ri   r{   r>  c                6    | j                             d          S r@  rB  r   s    rj   rD  zUDPSocket._raw_socket  rE  ri   r   c                   K   | j                                         s"d| _        | j                                          d S d S rE  r  rI  r<  r   r   s    rj   r  zUDPSocket.aclose  G      ))++ 	$DLO!!#####	$ 	$ri   tuple[bytes, IPSockAddrType]c                  K   | j         5  t                                           d {V  | j        j        s[| j                                        sB| j        j                                         | j        j        	                                 d {V  	 | j        j        
                                cd d d            S # t          $ r | j        rt          d t          d w xY w# 1 swxY w Y   d S r}   r:  r  rG  r9  r  r  rI  r  r.  r   rL  rM  r<  r<   r:   r   s    rj   r  zUDPSocket.receive  sK       	8 	8 ++--------- >, 7T_5O5O5Q5Q 7)//111n/446666666668~088::	8 	8 	8 	8 	8 	8 	8 	8  8 8 8< 8-47-47	8	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s$   BC!B<<"CC!!C%(C%r  rK   c                L  K   | j         5  t                                           d {V  | j        j                                         d {V  | j        rt          | j        	                                rt           | j        j        |  	 d d d            d S # 1 swxY w Y   d S r}   r;  r  rG  r9  r	  r   r<  r<   r  rI  r:   sendtor  s     rj   r  zUDPSocket.send  s      	. 	. ++---------.,11333333333| .))++-- .))&&---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s   BBB BNr  r  r3  r#  rZ  r   )r{   r  )r  rK   r{   r   	rb   rc   rd   rz   rU  rD  r  r  r  rh   ri   rj   r  r    s            8 8 8 X8$ $ $ $
8 8 8 8"	. 	. 	. 	. 	. 	.ri   r  c                  F    e Zd ZddZedd            Zdd
ZddZddZdS )ConnectedUDPSocketr  r  r3  r#  c                    || _         || _        t          d          | _        t          d          | _        d| _        d S r5  r8  r=  s      rj   rz   zConnectedUDPSocket.__init__  r  ri   r{   r>  c                6    | j                             d          S r@  rB  r   s    rj   rD  zConnectedUDPSocket._raw_socket  rE  ri   r   c                   K   | j                                         s"d| _        | j                                          d S d S rE  r  r   s    rj   r  zConnectedUDPSocket.aclose  r  ri   r  c                  K   | j         5  t                                           d {V  | j        j        s[| j                                        sB| j        j                                         | j        j        	                                 d {V  	 | j        j        
                                }n%# t          $ r | j        rt          d t          d w xY w|d         cd d d            S # 1 swxY w Y   d S r  r  )ry   packets     rj   r  zConnectedUDPSocket.receive  sV       	 	 ++--------- >, 7T_5O5O5Q5Q 7)//111n/4466666666682::<< 8 8 8< 8-47-47	8 !9!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s*   BC*B10C*1"C
C**C.1C.r  c                b  K   | j         5  t                                           d {V  | j        j                                         d {V  | j        rt          | j        	                                rt          | j                            |           	 d d d            d S # 1 swxY w Y   d S r}   r  r  s     rj   r  zConnectedUDPSocket.send  s      	- 	- ++---------.,11333333333| -))++-- -))&&t,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   BB$$B(+B(Nr  rZ  r   r{   r  r  r  rh   ri   rj   r  r    s            8 8 8 X8$ $ $ $
   &	- 	- 	- 	- 	- 	-ri   r  c                      e Zd ZddZd	dZdS )
UNIXDatagramSocketr{   rL   c                ~  K   t                      }t                                           d {V  | j        5  	 	 | j                            d          }|cd d d            S # t          $ r |                     |           d {V  Y n(t          $ r}| j	        rt          d t          |d }~ww xY wy# 1 swxY w Y   d S NTr  )r	   r  rG  r:  rD  recvfromr  rn  rU  rv  r<   r:   ry   r   r  r+  s       rj   r  zUNIXDatagramSocket.receive  sE     !!'')))))))))  	  	  
 +44U;;D  	  	  	  	  	  	  	  	  ' : : :33D99999999999 ; ; ;} ;1t;1s:	; 	  	  	  	  	  	  	  	  	  	 @   B2A"B2"%B.B2		B.B))B..B22B69B6r  r   c                h  K   t                      }t                                           d {V  | j        5  	 	  | j        j        |  	 d d d            d S # t          $ r |                     |           d {V  Y n(t          $ r}| j	        rt          d t          |d }~ww xY wn# 1 swxY w Y   d S r}   )r	   r  rG  r;  rD  r  r  rs  rU  rv  r<   r:   ry   r  r   r+  s       rj   r  zUNIXDatagramSocket.send  sB     !!''))))))))) 	 	
+D$+T22 	 	 	 	 	 	 	 	 ' : : :33D99999999999 ; ; ;} ;1t;1s:	;	 	 	 	 	 	 	 	 	 	s@   B'A	B'%B#<B'>	B#BB##B''B+.B+N)r{   rL   )r  rL   r{   r   rb   rc   rd   r  r  rh   ri   rj   r  r    <               "     ri   r  c                      e Zd ZddZd	dZdS )
ConnectedUNIXDatagramSocketr{   r  c                ~  K   t                      }t                                           d {V  | j        5  	 	 | j                            d          }|cd d d            S # t          $ r |                     |           d {V  Y n(t          $ r}| j	        rt          d t          |d }~ww xY wy# 1 swxY w Y   d S r  )r	   r  rG  r:  rD  r~  r  rn  rU  rv  r<   r:   r  s       rj   r  z#ConnectedUNIXDatagramSocket.receive,  sE     !!'')))))))))  	  	  
 +0077D  	  	  	  	  	  	  	  	  ' : : :33D99999999999 ; ; ;} ;1t;1s:	; 	  	  	  	  	  	  	  	  	  	 r  r  r   c                ~  K   t                      }t                                           d {V  | j        5  	 	 | j                            |           	 d d d            d S # t          $ r |                     |           d {V  Y n(t          $ r}| j	        rt          d t          |d }~ww xY wy# 1 swxY w Y   d S r}   )r	   r  rG  r;  rD  r  r  rs  rU  rv  r<   r:   r  s       rj   r  z ConnectedUNIXDatagramSocket.send=  sF     !!''))))))))) 	 	
$))$/// 	 	 	 	 	 	 	 	 ' : : :33D99999999999 ; ; ;} ;1t;1s:	;	 	 	 	 	 	 	 	 	 	r  Nr  r  r  rh   ri   rj   r  r  +  r  ri   r  read_eventsz RunVar[dict[Any, asyncio.Event]]_read_eventswrite_events_write_eventsc                  >    e Zd ZddZddZddZddZddZdd
ZdS )rD   r{   c                6    t                               |           S r}   r  r  s    rj   r  zEvent.__new__Y  r  ri   r   c                6    t          j                    | _        d S r}   )r   rD   _eventr   s    rj   rz   zEvent.__init__\  s    moori   c                8    | j                                          d S r}   )r  r   r   s    rj   r   z	Event.set_  s    ri   r   c                4    | j                                         S r}   )r  rH  r   s    rj   rH  zEvent.is_setb  s    {!!###ri   c                   K   |                                  r!t                                           d {V  d S | j                                         d {V  d S r}   )rH  r  rG  r  r   r   s    rj   r   z
Event.waite  sl      ;;== 	% ++-----------+""$$$$$$$$$$$ri   r5   c                N    t          t          | j        j                            S r}   )r5   rN  r  _waitersr   s    rj   
statisticszEvent.statisticsk  s    s4;#788999ri   N)r{   rD   r   rR  )r{   r5   )	rb   rc   rd   r  rz   r   rH  r   r  rh   ri   rj   rD   rD   X  s        # # # #& & & &   $ $ $ $% % % %: : : : : :ri   rD   c                      e Zd ZU dZded<   d"dZd#dZd$d	Zd%dZe	d&d            Z
e
j        d'd            Z
e	d(d            Ze	d&d            Zd$dZd)dZd$dZd)dZd$dZd)dZd*d Zd!S )+rB   r   r  _total_tokenstotal_tokensr{   c                6    t                               |           S r}   r  r	  r  s     rj   r  zCapacityLimiter.__new__r  r  ri   c                `    t                      | _        t                      | _        || _        d S r}   )r   
_borrowersr   _wait_queuer  )ry   r  s     rj   rz   zCapacityLimiter.__init__u  s'    $'EE<GMM(ri   r   c                >   K   |                                   d {V  d S r}   )acquirer   s    rj   rq  zCapacityLimiter.__aenter__z  s,      llnnri   r   r"  r   r#  r   r$  c                2   K   |                                   d S r}   )releaser   s       rj   rv  zCapacityLimiter.__aexit__}  s       	ri   c                    | j         S r}   )r  r   s    rj   r  zCapacityLimiter.total_tokens  s    !!ri   rG  c                   t          |t                    s#t          j        |          st	          d          |dk     rt          d          t          || j        z
  d          }|| _        | j        rG|rI| j        	                    d          d         }|
                                 |dz  }| j        r|Cd S d S d S d S )Nz'total_tokens must be an int or math.infr   ztotal_tokens must be >= 1r   Flast)r(  rb  r3  isinfr  r   maxr  r  popitemr   )ry   rG  waiters_to_notifyevents       rj   r  zCapacityLimiter.total_tokens  s    %%% 	Gdj.?.? 	GEFFF1998999(: :A>>"  	##4 	#$,,%,88;EIIKKK"  	##4 	# 	# 	# 	# 	# 	# 	# 	# 	#ri   rb  c                *    t          | j                  S r}   )rN  r  r   s    rj   borrowed_tokenszCapacityLimiter.borrowed_tokens  s    4?###ri   c                :    | j         t          | j                  z
  S r}   )r  rN  r  r   s    rj   available_tokensz CapacityLimiter.available_tokens  s    !C$8$888ri   c                H    |                      t                                 d S r}   )acquire_on_behalf_of_nowaitr   r   s    rj   acquire_nowaitzCapacityLimiter.acquire_nowait  s     ((88888ri   borrowerr  c                    || j         v rt          d          | j        st          | j                   | j        k    rt
          | j                             |           d S )NzEthis borrower is already holding one of this CapacityLimiter's tokens)r  r   r  rN  r  r>   r  )ry   r  s     rj   r  z+CapacityLimiter.acquire_on_behalf_of_nowait  sl    t&&  
  	s4?33t7IIIH%%%%%ri   c                T   K   |                      t                                 d {V S r}   )acquire_on_behalf_ofr   r   s    rj   r  zCapacityLimiter.acquire  s0      ..|~~>>>>>>>>>ri   c                  K   t                                            d {V  	 |                     |           	 t                                            d {V  d S # t          $ r |                                   w xY w# t          $ r t          j                    }|| j	        |<   	 |
                                 d {V  n*# t          $ r | j	                            |d             w xY w| j                            |           Y d S w xY wr}   )r  checkpoint_if_cancelledr  cancel_shielded_checkpointr   r  r>   r   rD   r  r   popr  r  ry   r  r
  s      rj   r  z$CapacityLimiter.acquire_on_behalf_of  sR     44666666666	,,X666$??AAAAAAAAAAA      		* 		* 		*MOOE).DX&jjll""""""""     $$Xt444 O))))))		*s4   A= A  A:='D%C ?D 'C''DDc                H    |                      t                                 d S r}   )release_on_behalf_ofr   r   s    rj   r  zCapacityLimiter.release  s     !!,..11111ri   c                4   	 | j                             |           n# t          $ r t          d          d w xY w| j        rTt          | j                   | j        k     r9| j                            d          d         }|                                 d S d S d S )Nz@this borrower isn't holding any of this CapacityLimiter's tokensFr  r   )	r  r  r  r   r  rN  r  r  r   r  s      rj   r  z$CapacityLimiter.release_on_behalf_of  s    	O""8,,,, 	 	 	U 	  	DO 4 4t7I I I$,,%,88;EIIKKKKK	 	 I Is    8r4   c                    t          | j        | j        t          | j                  t          | j                            S r}   )r4   r  r  tupler  rN  r  r   s    rj   r  zCapacityLimiter.statistics  s;    ( $/"" !!	
 
 	
ri   N)r  r  r{   rB   )r  r  r   r   r"  r   r#  r   r$  r{   r   rS  rT  r  )r  r  r{   r   )r{   r4   )rb   rc   rd   r  r  r  rz   rq  rv  rU  r  rV  r  r  r  r  r  r  r  r  r  rh   ri   rj   rB   rB   o  s        M# # # #) ) ) )
       " " " X" # # # # $ $ $ X$ 9 9 9 X99 9 9 9
& 
& 
& 
&? ? ? ?   *2 2 2 2   
 
 
 
 
 
ri   rB   _default_thread_limiterzRunVar[CapacityLimiter]c                  >    e Zd ZddZddZdd	ZddZddZddZdS )_SignalReceiversignalstuple[Signals, ...]c                    || _         t                      | _        t                      | _        t          j                    | _        t                      | _	        d S r}   )
_signalsr	   ru   r   _signal_queuer   r   rd  r   _handled_signals)ry   r$  s     rj   rz   z_SignalReceiver.__init__  sC    %''
-2WW'.~'7'7.1eeri   r   r   r{   r   c                    | j                             |           | j                                        s| j                            d            d S d S r}   )r(  rs  rd  r   r   )ry   r   s     rj   _deliverz_SignalReceiver._deliver  sU    !!&)))|  "" 	*L##D)))))	* 	*ri   c                    t          | j                  D ]=}| j                            || j        |           | j                            |           >| S r}   )r   r'  ru   add_signal_handlerr+  r)  r  )ry   sigs     rj   r   z_SignalReceiver.__enter__  sV    t}%% 	+ 	+CJ))#t}cBBB!%%c****ri   r   r"  r   r#  r   r$  ro   c                N    | j         D ]}| j                            |           d S r}   )r)  ru   remove_signal_handler)ry   r   r   r   r.  s        rj   r   z_SignalReceiver.__exit__  s4     ( 	2 	2CJ,,S1111tri   c                    | S r}   rh   r   s    rj   	__aiter__z_SignalReceiver.__aiter__  s    ri   c                   K   t                                            d {V  | j        s%t          j                    | _        | j         d {V  | j                                        S r}   )r  rG  r(  r   r   rd  rL  r   s    rj   	__anext__z_SignalReceiver.__anext__
  ss      '')))))))))! 	">++DL,!))+++ri   N)r$  r%  )r   r   r{   r   )r{   r#  rQ  )r{   r   )	rb   rc   rd   rz   r+  r   r   r2  r4  rh   ri   rj   r#  r#    s        4 4 4 4* * * *
         , , , , , ,ri   r#  r6   c                    t                               |           }|d }n|j        }t          t	          |           ||                                 |                                           S r}   )r   r   rY  r6   r1  get_namer   )r   r!  rY  s      rj   _create_task_infor7    sT    !!$''J		(	BtHHi$--//JJJri   c                      e Zd ZU ded<   ddddd3dZd4dZd5dZd6dZd7dZd8dZ	e
d9d!            Zd:d)Zd;d-Zd<d/Zd=d2ZdS )>
TestRunnerzBMemoryObjectSendStream[tuple[Awaitable[Any], asyncio.Future[Any]]]_send_streamNF)rm   
use_uvlooprn   rm   ro   r;  r   rn   rp   r{   r   c               l    |r|dd l }|j        }t          ||          | _        g | _        d | _        d S )Nr   rl   )uvloopr   rU   _runnerro  _runner_task)ry   rm   r;  rn   r=  s        rj   rz   zTestRunner.__init__%  sL      	1,.MMM!0LEEEE0215ri   c                    | j                                          |                                                     | j                   | S r}   )r>  r   r   set_exception_handler_exception_handlerr   s    rj   r   zTestRunner.__enter__5  s:       --d.EFFFri   r   r"  r   r#  r   r$  c                >    | j                             |||           d S r}   )r>  r   r   s       rj   r   zTestRunner.__exit__:  s$     	h88888ri   r   c                4    | j                                         S r}   )r>  r   r   s    rj   r   zTestRunner.get_loopB  s    |$$&&&ri   r   re  r   r  c                    t          |                    d          t                    r"| j                            |d                    d S |                    |           d S )Nr   )r(  r   r   ro  rs  default_exception_handler)ry   r   r   s      rj   rB  zTestRunner._exception_handlerE  s^     gkk+..	:: 	4##GK$899999**733333ri   c                    | j         r<| j         g c}| _         t          |          dk    r|d         |rt          d|          d S d S )Nr   r   z6Multiple exceptions occurred in asynchronous callbacks)ro  rN  r\   )ry   rZ   s     rj   _raise_async_exceptionsz"TestRunner._raise_async_exceptionsM  sm     	+/+;R(J(:!## m# (Lj  	 	 ri   receive_streamOMemoryObjectReceiveStream[tuple[Awaitable[T_Retval], asyncio.Future[T_Retval]]]c                B  K   | 5  | 2 3 d {V \  }}	 | d {V }|                                 s|                    |           =# t          $ r3}|                                 s|                    |           Y d }~ud }~ww xY w6 	 d d d            d S # 1 swxY w Y   d S r}   )r   r   r   r   )rI  r   r   retvalr+  s        rj   _run_tests_and_fixturesz"TestRunner._run_tests_and_fixturesX  s4       		2 		2&4 2 2 2 2 2 2 2ldF2#'ZZZZZZF
 "++-- 2))&111 % 2 2 2!++-- 2,,S1112 '5n		2 		2 		2 		2 		2 		2 		2 		2 		2 		2 		2 		2 		2 		2 		2 		2 		2 		2sC   BBBA*B
B)A=8B=BBBBr    Callable[P, Awaitable[T_Retval]]r   P.argsr  P.kwargsr   c                  K   | j         st          t          t          t                   t
          j        f                  d          \  | _        }|                                 	                    | 
                    |                    | _          ||i |}|                                                                 }| j                            ||f           | d {V S r  )r?  r@   r/   r'   r%   r   r   r:  r   r   rM  r   send_nowait)ry   r   r   r  rI  r   r   s          rj   _call_in_runner_taskzTestRunner._call_in_runner_taski  s         	0Kingn4511 1-D~ !% ; ;,,^<<! !D tT$V$$+/==??+H+H+J+J%%tVn555||||||ri   fixture_func,Callable[..., AsyncGenerator[T_Retval, Any]]Iterable[T_Retval]c              #  "  K    |di |}|                                                      |                     |j        d                     }|                                  |V  	 |                                                      |                     |j        d                      |                                                      |                                           t          d          # t          $ r |                                  Y d S w xY w)Nz$Async generator fixture did not stoprh   )r   r   rS  asendrH  r  r   StopAsyncIteration)ry   rT  r  asyncgenfixturevalues        rj   run_asyncgen_fixturezTestRunner.run_asyncgen_fixture|  s     
  <))&))!%!C!C%%hnd;;"
 "
 	$$&&&	GMMOO..))(.$??   MMOO..x/@/@AAAEFFF	 " 	+ 	+ 	+((******	+s   $A C, ,DD,Callable[..., Coroutine[Any, Any, T_Retval]]c                    |                                                       | j        |fi |          }|                                  |S r}   )r   r   rS  rH  )ry   rT  r  rL  s       rj   run_fixturezTestRunner.run_fixture  sR    
 33%D%l==f==
 
 	$$&&&ri   	test_func'Callable[..., Coroutine[Any, Any, Any]]c                    	 |                                                       | j        |fi |           n1# t          $ r$}| j                            |           Y d }~nd }~ww xY w|                                  d S r}   )r   r   rS  r   ro  rs  rH  )ry   r`  r  r+  s       rj   run_testzTestRunner.run_test  s    	)MMOO..)))>>v>>     	) 	) 	)##C((((((((	) 	$$&&&&&s   36 
A$ AA$)rm   ro   r;  r   rn   rp   r{   r   )r{   r9  r   r   )r   re  r   r  r{   r   r   )rI  rJ  r{   r   )r   rN  r   rO  r  rP  r{   r   )rT  rU  r  r  r{   rV  )rT  r]  r  r  r{   r   )r`  ra  r  r  r{   r   )rb   rc   rd   r  rz   r   r   r   rB  rH  staticmethodrM  rS  r\  r_  rc  rh   ri   rj   r9  r9  "  s#        TTTT
 " ?C6 6 6 6 6 6    
9 9 9 9' ' ' '4 4 4 4	 	 	 	 2 2 2 \2    &G G G G.	 	 	 	
' 
' 
' 
' 
' 
'ri   r9  c                     e Zd Zed~d
            Zedd            Zedd            Zedd            Zedd            Zedd            Z	edd            Z
edd            Zeej        dddd            Zedd            Zedd             Zedd"            Zedd%            Ze	 	 ddd+            Zedd,            Zedd.            Zedd/            Zedd1            Zed&d&dd2dd@            ZeddC            Ze	 dddK            ZeddO            ZeddS            ZeddT            ZeddZ            Zedd_            Zed`d`d`d`daddj            Z e	 dddn            Z!eddo            Z"eddp            Z#eddr            Z$eddv            Z%eddx            Z&eddz            Z'edd{            Z(edd}            Z)d&S )r  r   1Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]]r   rx  r  r  optionsr{   r   c                l   t                    d
fd            }|                    dd          }|                    dd           }|!|                    dd          rdd l}|j        }t	          ||	          5 }	|	                     |                      cd d d            S # 1 swxY w Y   d S )Nr{   r   c                   K   t          t          j        t                                } |                     t                               t          d d           t          | <   	    d {V 	 t          | = S # t          | = w xY wr}   )r1   r   r   r   set_namer   r  r   )r   r   r   s    rj   wrapperz#AsyncIOBackend.run.<locals>.wrapper  s      lnn55DMM+D11222!*4!6!6L'!T4[((((((( &&L&&&&&s   %
A9 9
Brm   Frn   r;  r   rl   )r{   r   )r   r   r=  r   rU   r   )
r	  r   r   r  rg  rk  rm   rn   r=  runners
    ``       rj   r   zAsyncIOBackend.run  s    
t	' 	' 	' 	' 	' 	' 
	' GU++{{>488GKKe$D$DMMM!0L%l;;; 	)v::ggii((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   ?B))B-0B-r  c                    t                      S r}   )r	   r  s    rj   current_tokenzAsyncIOBackend.current_token  s    !!!ri   r  c                B    t                                                      S r}   )r	   r5  r  s    rj   r  zAsyncIOBackend.current_time  s    !!&&(((ri   r   c                    t           S r}   )r   r  s    rj   cancelled_exception_classz(AsyncIOBackend.cancelled_exception_class  s    ri   r   c                4   K   t          d           d {V  d S r  r
   r  s    rj   rG  zAsyncIOBackend.checkpoint  s!      Ahhri   c                   K   t                      }|d S 	 t          |         j        }n# t          $ r Y d S w xY w|r1|j        rt          d           d {V  n|j        rd S |j        }|/d S d S r  )r   r   r   r  r;  r
   r  r   )r	  r   r   s      rj   r  z&AsyncIOBackend.checkpoint_if_cancelled  s      ~~<F	'-:LL 	 	 	FF	  	:) :Ahh$ :+9  	: 	: 	: 	: 	:s   ) 
77c                   K   t          d          5  t          d           d {V  d d d            d S # 1 swxY w Y   d S )NTr  r   )rG   r
   r  s    rj   r  z)AsyncIOBackend.cancel_shielded_checkpoint  s      %%% 	 	((NNNNNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   6::delayc                4   K   t          |           d {V  d S r}   rs  )r	  rv  s     rj   r
   zAsyncIOBackend.sleep  s*      Ellri   Fr   r  r  r   rG   c               $    t          ||          S )Nr   rF   r  s      rj   create_cancel_scopez"AsyncIOBackend.create_cancel_scope  s     HV<<<<ri   c                   	 t           t                               j        }n# t          $ r t          j        cY S w xY wt          j        }|r;t          ||j                  }|j        rt          j         }n|j	        rn	|j
        }|;|S r}   )r   r   r   r  r3  r4  minr  r  r  r   )r	  r   r  s      rj   current_effective_deadlinez)AsyncIOBackend.current_effective_deadline  s    	' L  	 	 	8OOO	 8 	:8\%:;;H* : H9$ :+9  	: s   ! ::abc.TaskGroupc                    t                      S r}   )rm  r  s    rj   create_task_groupz AsyncIOBackend.create_task_group  s    {{ri   	abc.Eventc                    t                      S r}   rC   r  s    rj   create_eventzAsyncIOBackend.create_event  s    wwri   r  abc.CapacityLimiterc                     t          |          S r}   rA   r  s     rj   create_capacity_limiterz&AsyncIOBackend.create_capacity_limiter  s    |,,,ri   N&Callable[[Unpack[PosArgsT]], T_Retval]abandon_on_cancellimiterabc.CapacityLimiter | Nonec           	     N  K   |                                   d {V  	 t                                          }t                                          }n`# t          $ rS t                      }t                      }t                              |           t                              |           Y nw xY w|p|                                 4 d {V  t          |           5 }t          j
                    }t                      }	|sUt          |	||          }
|
                                 |                    |
           |	                    |
j                   n|                                }
|                                 }|rh||d         j        z
  t          j        k     rnI|                                }|j                            |j                   |                                 |ht1                      }|                    t4          j        j        d            |s|j        |}n|j        }|
j                            |||||f           | d {V cd d d            cd d d           d {V  S # 1 swxY w Y   	 d d d           d {V  d S # 1 d {V swxY w Y   d S )Nr  r   )rG  r  r   r  LookupErrorr   r   current_default_thread_limiterrG   r   r   r   r  r   r  r  r  r  r  r  r  rL  r   remove_done_callbackr   r   sniffiocurrent_async_library_cvarr   r  r  )r	  r   r   r  r  r  r  r@  r   r   workernowexpired_workerr   worker_scopes                  rj   run_sync_in_worker_threadz(AsyncIOBackend.run_sync_in_worker_thread  s      nn	-37799L)--//GG 	- 	- 	- 77LeeG$((666##G,,,,,		- Bc@@BB $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$(9$9::: #$e)0)9)9*,,	# .))WlKKFLLNNNKK'''//<<<<)--//F **,,C& .,q/"<<*89 9 ")5)=)=)?)?&0EE*/   '++--- ' . '..G>BDIII$ 7(;(C#(LL#(#6L''$fl(STTT#||||||G#$ #$ #$ #$ #$ #$ #$$	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$#$ #$ #$ #$ #$ #$ #$ #$ #$$	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$ $	$sI   2A AB.-B.JE7I5J5I9	9J<I9	=J
J!Jc                    t           j        }|;|j        r t          dt	          |          d          |j        rd S |j        }|9d S d S )Nr0  r   )r9   r  r;  r   r1  r  r   )r	  r@  s     rj   check_cancelledzAsyncIOBackend.check_cancelledX  sg    $0$E" Q$%O"U))%O%O%OPPP| 'E ri   tokenc                8   dfd}t          t          |          }t                      }|                    t          j        j        d            |t          j                  }|                    t          j
        ||          }|                                S )Nr@  rG   r{   r   c                  K   d}t          t          j        t                                }t	          d |           t
          |<   | j                            |           	    d {V 	 | j                            |           S # t          $ r2}t          j        	                    t          |                    d d }~ww xY w# | j                            |           w xY wrE  )r1   r   r   r   r  r   r  r  r  r   
concurrentfuturesr   )r@  __tracebackhide__r   r+  r   r   s       rj   task_wrapperz:AsyncIOBackend.run_async_from_thread.<locals>.task_wrapperk  s       $lnn55D!*4!7!7LLT"""+!T4[((((((( $$T**** " L L L (77CAAtKL $$T****s$   
B 
C-B<<CC C r   )r@  rG   r{   r   )r1   r   r   r   r  r  r   r9   r  r   run_coroutine_threadsafer  )	r	  r   r   r  r  r   r   rk  r  s	    ``      rj   run_async_from_threadz$AsyncIOBackend.run_async_from_threadd  s    
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+ %u--..G6:IFFF,|@AA18,gt2
 2
 xxzzri   c                    t                    dfd            }t                      t          t          |          }|                    |                                           S )Nr{   r   c                     	 t           j                            d                                            d S # t          $ r6}                     |            t          | t                    s Y d } ~ d S d } ~ ww xY w)Nr   )r  r  r   r   r   r   r(  r   )r+  r   r  r   s    rj   rk  z4AsyncIOBackend.run_sync_from_thread.<locals>.wrapper  s    266yAAATT4[)))))    $$$!#y11      s   7< 
A<+A77A<r   )r   r   r1   r   r   r  )r	  r   r   r  rk  r   r  s    ``   @rj   r  z#AsyncIOBackend.run_sync_from_thread  s|     
t	 	 	 	 	 	 	 
	 28%u--!!'***xxzzri   abc.BlockingPortalc                    t                      S r}   )r  r  s    rj   create_blocking_portalz%AsyncIOBackend.create_blocking_portal  s    ri   )cwdenvstart_new_sessioncommand#str | bytes | Sequence[str | bytes]shellr  int | IO[Any] | Noner  r  r  str | bytes | PathLike | Noner  Mapping[str, str] | Noner  r  c          
       K   |                                   d {V  |r0t          j        t          d|          ||||||           d {V }	nt          j        |||||||d d {V }	|	j        rt          |	j                  nd }
|	j        rt          |	j                  nd }|	j	        rt          |	j	                  nd }t          |	|
||          S )Nstr | bytes)r  r  r  r  r  r  )rG  r   create_subprocess_shellr1   create_subprocess_execr  r  r  r  r  r  )r	  r  r  r  r  r  r  r  r  r  stdin_streamstdout_streamstderr_streams                rj   open_processzAsyncIOBackend.open_process  sB      nn 	#;]G,,"3        GG $:"3        G >E]T*7=999PT?F~W+GN;;;SW?F~W+GN;;;SWwm]KKKri   r  r  c                    t          t          |          d           t                                          t	          t
          |                     d S )Nz AnyIO process pool shutdown taskr  )r   r  r   r  r   r   )r	  r  s     rj   #setup_process_pool_exit_at_shutdownz2AsyncIOBackend.setup_process_pool_exit_at_shutdown  s_    *7333	
 	
 	
 	
 	**;WEE	
 	
 	
 	
 	
ri   hostr   portrb  local_addressIPSockAddrType | Noner  c           	       K   t          t          t          j        t          f         t                                          t          |||           d {V           \  }}|                                 t          ||          S )N)
local_addr)	r1   r/   r   r  r  r	   create_connectionrK  r1  )r	  r  r  r  r  r3  s         rj   connect_tcpzAsyncIOBackend.connect_tcp  s       #'#^34"$$66d} 7        
 
	8 	!!!Ix000ri   pathr  abc.UNIXSocketStreamc                
  K   |                                   d {V  t                      t          j        t          j                                      d           	 	                     |           t                    S # t          $ rS t          j	                    }
                    |j        d            |                    fd           | d {V  Y n"t          $ r                                   w xY w)NFTc                .                                   S r}   rq  r  r   r_  s    rj   r   z-AsyncIOBackend.connect_unix.<locals>.<lambda>  s    d.@.@.L.L ri   )rG  r	   rA  AF_UNIXr  connectrz  r  r   r   rr  r   r  r   r   )r	  r  r  r   r_  s      @@rj   connect_unixzAsyncIOBackend.connect_unix  s,     nn!!]6>22
u%%%	44""4((( (
333 #   $+N$4$4
AL$???##$L$L$L$L$LMMM      """	4s   "B AD"Dsockr>  rJ   c                     t          |          S r}   )r  r	  r  s     rj   create_tcp_listenerz"AsyncIOBackend.create_tcp_listener  s     &&&ri   c                     t          |          S r}   )r  r  s     rj   create_unix_listenerz#AsyncIOBackend.create_unix_listener  s    !$'''ri   familyr    remote_address
reuse_portUDPSocket | ConnectedUDPSocketc                   K   t                                          t          ||||           d {V \  }}|j        r|                                 |j        |st          ||          S t          ||          S )N)r  remote_addrr  r  )r	   create_datagram_endpointr#  r   r   r  r  )r	  r  r  r  r  r  r3  s          rj   create_udp_socketz AsyncIOBackend.create_udp_socket  s       %5$6$6$O$O$&! %P %
 %
 
 
 
 
 
 
	8  	%OO$$ 	;Y111%i:::ri   r_  remote_pathstr | bytes | None8abc.UNIXDatagramSocket | abc.ConnectedUNIXDatagramSocketc                  K   |                                   d {V  t                      |r	 	                     |           t                    S # t          $ rS t          j                    }                    |j        d            |	                    fd           | d {V  Y n"t          $ r                                   w xY wt                    S )NTc                .                                   S r}   r  r  s    rj   r   z<AsyncIOBackend.create_unix_datagram_socket.<locals>.<lambda>	  s    $2D2DZ2P2P ri   )rG  r	   r  r  r  r   r   rr  r   r  r   r   r  )r	  r_  r  r  r   s    `  @rj   create_unix_datagram_socketz*AsyncIOBackend.create_unix_datagram_socket	  s$      nn!! 	2CC&&{333 7zBBB '   (/(8(8AOOJdCCC''(P(P(P(P(PQQQGGGGGGGGG$   $$&&&C &j111s   A AC1Cr   r  typeprotor  bytes | str | Nonestr | int | Noneint | AddressFamilyr  int | SocketKindr  r  ]list[tuple[AddressFamily, SocketKind, int, str, tuple[str, int] | tuple[str, int, int, int]]]c               `   K   t                                          ||||||           d {V S )Nr  )r	   getaddrinfo)r	  r  r  r  r  r  r  s          rj   r  zAsyncIOBackend.getaddrinfo%	  sV      & &''33$vDU 4 
 
 
 
 
 
 
 
 	
ri   sockaddrrI   tuple[str, str]c                V   K   t                                          ||           d {V S r}   )r	   getnameinfo)r	  r  r  s      rj   r  zAsyncIOBackend.getnameinfo<	  s6       &''33HeDDDDDDDDDri   c                  K   |                                   d {V  	 t                                          }n,# t          $ r i }t                              |           Y nw xY w|                    |          rt          d          d t                      }t          j                    x}||<   |	                    ||j                   	 |
                                 d {V  |                    |d           |                    |           d}n8d}n5# |                    |d           |                    |           d}nd}w xY w|st          d S )Nr6  TF)rG  r  r   r  r   r;   r	   r   rD   rl  r   r  rh  r<   )r	  r  r  r   r
  readables         rj   wait_socket_readablez#AsyncIOBackend.wait_socket_readableB	  s     nn	*&**,,KK 	* 	* 	*K[)))))	* ??4   	>#N33=!!$+MOO3D!ei(((	!**,,tT**6""4((( 	 tT**6""4(((      	&%%	& 	&s   8 &A! A!D 2Ec                  K   |                                   d {V  	 t                                          }n,# t          $ r i }t                              |           Y nw xY w|                    |          rt          d          d t                      }t          j                    x}||<   |	                    |
                                |j                   	 |                                 d {V  |                    |d           |                    |           d}n8d}n5# |                    |d           |                    |           d}nd}w xY w|st          d S )Nr7  TF)rG  r  r   r  r   r;   r	   r   rD   rr  rw  r   r  rq  r<   )r	  r  r  r   r
  writables         rj   wait_socket_writablez#AsyncIOBackend.wait_socket_writable]	  s     nn	,(,,..LL 	, 	, 	,Ll+++++	, D!! 	<#L11t;!!%,]__4T"uy111	!**,,d++7""4((( 	 d++7""4(((      	&%%	& 	&s   8 &A! A!D( (2ErB   c                    	 t                                           S # t          $ r. t          d          }t                               |           |cY S w xY w)N(   )r!  r   r  rB   r   )r	  r  s     rj   r  z-AsyncIOBackend.current_default_thread_limiterx	  s^    	*..000 	 	 	%b))G#''000NNN	s    5AAr$  r   &ContextManager[AsyncIterator[Signals]]c                     t          |          S r}   )r#  )r	  r$  s     rj   open_signal_receiverz#AsyncIOBackend.open_signal_receiver	  s     w'''ri   r6   c                8    t          t                                S r}   )r7  r   r  s    rj   get_current_taskzAsyncIOBackend.get_current_task	  s     000ri   list[TaskInfo]c                2    d t                      D             S )Nc                T    g | ]%}|                                 t          |          &S rh   )r   r7  )r   r   s     rj   r   z4AsyncIOBackend.get_running_tasks.<locals>.<listcomp>	  s.    SSSDtyy{{S!$''SSSri   )r   r  s    rj   get_running_tasksz AsyncIOBackend.get_running_tasks	  s    SSIKKSSSSri   c                   K   |                                   d {V  t                      }	 t                      D ];}||u r|j        }||                                rt          d           d {V   n<d S M)NTg?)rG  r   r   r:  r   r
   )r	  	this_taskr   r?  s       rj   wait_all_tasks_blockedz%AsyncIOBackend.wait_all_tasks_blocked	  s      nn NN	
	! 	 	9$$)>V[[]]>**$$$$$$$E " 
	ri   r9  c                    t          di |S )Nrh   )r9  )r	  rg  s     rj   create_test_runnerz!AsyncIOBackend.create_test_runner	  s    $$G$$$ri   )
r   rf  r   rx  r  r  rg  r  r{   r   )r{   r  rS  )r{   r   r   )rv  r  r{   r   rP  )r{   r}  )r{   r  )r  r  r{   r  )FN)
r   r  r   rx  r  r   r  r  r{   r   )r   rf  r   rx  r  r  r{   r   )r   r  r   rx  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  rb  r  r  r{   r  )r  r  r{   r  )r  r>  r{   rJ   )
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  rb  r  rb  r{   r  )r   )r  rI   r  rb  r{   r  )r  r>  r{   r   )r{   rB   )r$  r   r{   r  )r{   r6   )r{   r  )rg  r  r{   r9  )*rb   rc   rd   classmethodr   rn  r  rq  rG  r  r  r
   r3  r4  ry  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   rh   ri   rj   r  r    s       ) ) ) [)8 " " " [" ) ) ) [)    [    [ : : : [:$    [    [ "&(5= = = = = [=
    [*    [    [ - - - [- 
 #(.28$ 8$ 8$ 8$ [8$t 	( 	( 	( [	(    [6    [*       [   .2(,"'%L %L %L %L %L [%LN 
 
 
 [
 JN
1 
1 
1 
1 [
1 4 4 4 [4& ' ' ' [' ( ( ( [( ; ; ; [;. 2 2 2 [2.  '(!"
 
 
 
 
 [
, 45E E E E [E
 & & & [&4 & & & [&4    [ ( ( ( [(
 1 1 1 [1 T T T [T    [ % % % [% % %ri   r  )r   r   r{   r   )r{   r   )r   r(   r{   r   )r   r   r{   r   )r   r   r{   rj  )r  r  r}  r  r{   r   r  )r   r   r{   r6   )
__future__r   r  r   concurrent.futuresr  r3  rA  r  r   r   r   r   r   r   r	   r
   asyncio.base_eventsr   collectionsr   r   collections.abcr   r   r   r   
contextlibr   r   r   r   dataclassesr   	functoolsr   r   inspectr   r   r   r   ior   osr   r  r   r   r   r    r!   r"   typesr#   typingr$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   weakrefr2   r  r  r4   r5   r6   r7   _core._eventloopr8   r9   _core._exceptionsr:   r;   r<   r=   r>   _core._socketsr?   _core._streamsr@   _core._synchronizationrB   BaseCapacityLimiterrD   	BaseEventrE   _core._tasksrG   BaseCancelScoperH   rI   rJ   rK   rL   lowlevelrM   streams.memoryrN   rO   r  rR   typing_extensionsrU   rV   rW   enumrX   rY   rZ   r[   exceptiongroupr\   Enumr^   r   r   r   r   r   r   r   r  r   r   r   r   r  r   
TaskStatusr`  r'  rm  r   _Retval_Queue_Typer  r  r  r  ByteReceiveStreamr  ByteSendStreamr  r  r   r  Protocolr  r#  r1  r\  rz  r  r  r  r  r  r  r  r  r!  r#  r7  r9  r  backend_classrh   ri   rj   <module>r&     sz   " " " " " " "         



                      7 6 6 6 6 6 * * * * * * * * > > > > > > > > > > % % % % % %       - - - - - - - - ! ! ! ! ! ! $ $ $ $ $ $ $ $                                    , , , , , , , ,                                             & % % % % %  H H H H H H H H H H H H @ @ @ @ @ @ @ @              3 2 2 2 2 2 8 8 8 8 8 8 K K K K K K 7 7 7 7 7 7 2 2 2 2 2 2 9 9 9 9 9 9                    N N N N N N N Nw       ++++++w+++++++++KKKMMM============11111166666666       
~& ~& ~& ~& ~& ~& ~& ~&@   ,   , 7:7:T222<
##IcNN*0&*>*>
 > > > >   >: : : : @Q?P?R?R	 R R R RY Y Y Yp7 p7 p7 p7 p7/ p7 p7 p7p
) 
) 
) 
) 
) 
) 
) 
) ! ""7 7 7 7 7 7 7 7"   T T T T T T T Tv 8H-x/FFG H H H H H6 H H HV 9?9 9      288M1N1N  N N N N
 
 
 
 
S' 
 
 
8 e         #/       e    #,    e. . . . .ck . . .b< < < <2# # # #2! ! ! ! !W% ! ! !H    w/   >Q$ Q$ Q$ Q$ Q$3# Q$ Q$ Q$h+3 +3 +3 +3 +3 +3 +3 +3\q; q; q; q; q;(< q; q; q;h9! 9! 9! 9! 9!* 9! 9! 9!x"! "! "! "! "!+ "! "! "!J-. -. -. -. -. -. -. -.`/- /- /- /- /-/ /- /- /-d! ! ! ! !#*@ ! ! !H! ! ! ! !/33R ! ! !H 281F1F F F F F28&2H2H H H H H: : : : :I : : :.o
 o
 o
 o
 o
) o
 o
 o
d 4:6:S3T3T  T T T T', ', ', ', ', ', ', ',^K K K KF' F' F' F' F' F' F' F'Rv% v% v% v% v%\ v% v% v%r ri   