
    Oj                   	   U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlmZmZmZmZmZmZmZ d dlmZ d dlmZmZ d dlmZmZmZmZmZmZmZm Z  d dlm!Z! d dl"m#Z#m$Z$ d d	l%m&Z&m'Z' d d
l(m)Z)m*Z* d dl+m,Z,m-Z- d dl.m/Z/m0Z0m1Z1 d dl2m3Z3 d dlm4Z4 d dl5m6Z6 d dl7m8Z8 d dlm9Z9m:Z: d dl
m;Z; d dl<m=Z=m>Z> d dl?m@Z@mAZAmBZBmCZCmDZDmEZEmFZF d dlmGZG ddlHmIZImJZJmKZKmLZLmMZM ddlNmOZOmPZPmQZQ ddlRmSZSmTZTmUZUmVZVmWZWmXZX ddlYmZZZ ddl[m\Z\ ddl]m^Z_ ddl]m`Za ddl]mbZc ddl]mdZdmeZe dd l]mfZg dd!lhmiZj dd"lhmkZk dd#lMmlZlmmZmmnZnmoZompZp dd$lqmrZrmsZsmtZt dd%lumvZvmwZw eArd d&lxmyZy dd'lzm{Z{ dd(l|m}Z}m~Z~ neZye	j                   d)k\  rd d*lmZ d d+l?mZmZmZ nPd dl%Z%d dlZd dl7Z7d d,lmZmZmZmZ d d-lmZ d d+lmZmZmZ  G d. d/ej                        Z G d0 d1      Zdd2Zdd3Z eEd4      Z eEd5d67      Z eEd8d69      Z ed:      Z eDd;      Z evd<      Zd=ed<<   dd>Zdd?Zdd@Z G dA dBej      Zi G dC dD      Z eG       ZdEedF<    G dG dHeMj:                  e         Ze	j                   dIk\  rej>                  j@                  ZdJedK<   ndZ G dL dMeMjD                        Zeedz  edz  f   Z G dN dOe;      Z evdP      ZdQedP<    evdR      ZdSedR<    e)dTU       G dV dWeMjR                               Z e)dTU       G dX dYeMjV                               Z e)dTU       G dZ d[eMjZ                               Z	 	 	 	 	 	 dd\Zdd]Z G d^ d_ej`                        Z G d` daejd                        Z G db dceMjf                        Z G dd de      Z G df dgeeMjj                        Z G dh dieMj                        Z G dj dkeMj                        Z G dl dmeMjp                        Z G dn doeMjr                        Z G dp dqeeMjt                        Z G dr dseeMjv                        Z evdt      Zduedv<    evdw      Zduedx<    G dy dzea      Z` G d{ d|ec      Zb G d} d~eg      Zf G d de_      Z^ evd      Zded<    G d d      Z G d deL      Z G d deMj                        Z G d dej                  j                        Z G d del      ZeZy)    )annotationsN)AbstractEventLoopCancelledError	all_taskscreate_taskcurrent_taskget_running_loopsleep)_run_until_complete_cb)OrderedDictdeque)AsyncGeneratorAsyncIterator	AwaitableCallable
Collection	CoroutineIterableSequence)Future)AbstractContextManagersuppress)Contextcopy_context)	dataclassfield)partialwraps)CORO_RUNNINGCORO_SUSPENDEDgetcoroutinestate)IOBase)PathLike)Queue)Signals)AddressFamily
SocketKind)Thread)CodeTypeTracebackType)IOTYPE_CHECKINGAnyLiteral	ParamSpecTypeVarcast)WeakKeyDictionary   )CapacityLimiterStatisticsEventStatisticsLockStatisticsTaskInfoabc)claim_worker_threadset_current_async_librarythreadlocals)BrokenResourceErrorBusyResourceErrorClosedResourceErrorEndOfStreamRunFinishedError
WouldBlock)convert_ipv6_sockaddr)create_memory_object_streamCapacityLimiterEventLock)ResourceGuardSemaphoreStatistics	SemaphoreCancelScope)
TaskHandle)AsyncBackendIPSockAddrTypeSocketListenerUDPPacketTypeUNIXDatagramPacketType)call_for_coroutineget_callable_nameget_coro_name)RunVar	_run_vars)FileDescriptorLike)StrOrBytesPath)MemoryObjectReceiveStreamMemoryObjectSendStream      )Runner)SelfTypeVarTupleUnpack)
coroutinesevents
exceptionstasks)BaseExceptionGroupc                      e Zd ZdZdZdZy)_StatecreatedinitializedclosedN)__name__
__module____qualname__CREATEDINITIALIZEDCLOSED     o/var/www/origus_pro_usr/data/www/origus.pro/core/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.pyrl   rl   }   s    #rw   rl   c                  p    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
y)rb   Ndebugloop_factoryc                   t         j                  | _        || _        || _        d | _        d | _        d| _        d| _        y )Nr   F)	rl   rs   _state_debug_loop_factory_loop_context_interrupt_count_set_event_loop)selfr{   r|   s      rx   __init__zRunner.__init__   s<     !..DKDK!-D37DJ DM$%D!#(D rw   c                &    | j                          | S N)
_lazy_initr   s    rx   	__enter__zRunner.__enter__   s    OOKrw   c                $    | j                          y r   )closer   exc_typeexc_valexc_tbs       rx   __exit__zRunner.__exit__   s     JJLrw   c                z   | j                   }| j                  t        j                  us|y	 t	        |       |j                  |j                                t        |d      r |j                  |j                                n|j                  t        |             | j                  rt        j                  d       |j                          d| _         t        j                  | _        y# | j                  rt        j                  d       |j                          d| _         t        j                  | _        w xY w)zShutdown and close event loop.Nshutdown_default_executor)r   r~   rl   rt   _cancel_all_tasksrun_until_completeshutdown_asyncgenshasattrr   _shutdown_default_executorr   rg   set_event_loopr   ru   r   loops     rx   r   zRunner.close   s    ::D{{&"4"44,!$'''(?(?(AB4!<=++D,J,J,LM++,Ft,LM''))$/

!
$mm	 ''))$/

!
$mms   A0C+ +AD:c                :    | j                          | j                  S )zReturn embedded event loop.)r   r   r   s    rx   get_loopzRunner.get_loop   s    OO::rw   contextc                  t        j                  |      st        d|      t        j                         t        d      | j                          || j                  }|j                  | j                  j                  |      }t        j                         t        j                         u rpt        j                  t        j                         t        j"                  u r=t%        | j&                  |      }	 t        j                  t        j                   |       nd}d| _        	 | j                  j+                  |      |Yt        j                  t        j                         |u r3t        j                  t        j                   t        j"                         S S S # t        $ r d}Y w xY w# t,        j.                  $ r0 | j(                  dkD  rt1        |dd      }| |       dk(  rt2         w xY w# |Yt        j                  t        j                         |u r3t        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)rf   iscoroutine
ValueErrorrg   _get_running_loopRuntimeErrorr   r   runr   r   	threadingcurrent_threadmain_threadsignal	getsignalSIGINTdefault_int_handlerr   
_on_sigintr   r   rh   r   getattrKeyboardInterrupt)r   coror   tasksigint_handlerr   s         rx   r   z
Runner.run   s   ))$/ #A$!JKK'')5"M  OO--;;tzz55t<D ((*i.C.C.EE$$V]]3v7Q7QQ!(D!I*MM&--@ "&$%D!Mzz44T: #.((7>IMM&--1K1KL J /' " * &*N	* ,, ((1,&tZ>H+
a// #.((7>IMM&--1K1KL J /s,   :$F )F0 F-,F-0AG33G6 6AIc                $   | j                   t        j                  u rt        d      | j                   t        j                  u ry | j
                  Lt        j                         | _        | j                  s<t        j                  | j                         d| _	        n| j                         | _        | j                  %| j                  j                  | j                         t        j                         | _        t        j                  | _         y )NzRunner is closedT)r~   rl   ru   r   rt   r   rg   new_event_loopr   r   r   r   	set_debugcontextvarsr   r   r   s    rx   r   zRunner._lazy_init   s    {{fmm+"#566{{f000!!)#224
++ ))$**5+/D(!//1
{{&

$$T[[1'446DM ,,DKrw   c                    | xj                   dz  c_         | j                   dk(  r=|j                         s-|j                          | j                  j	                  d        y t               )N   c                      y r   rv   rv   rw   rx   <lambda>z#Runner._on_sigint.<locals>.<lambda>   s    rw   )r   donecancelr   call_soon_threadsafer   )r   signumframer   s       rx   r   zRunner._on_sigint   sT    !!Q&!$$))..2B  "

//=#%%rw   )r{   bool | Noner|   &Callable[[], AbstractEventLoop] | Nonereturnrc   r   type[BaseException] | Noner   BaseException | Noner   TracebackType | Noner   Noner   r   r   r   )r   zCoroutine[T_Retval]r   T_Retval)r   asyncio.Taskr   r   )rp   rq   rr   r   r   r   r   r   r   r   r   rv   rw   rx   rb   rb      su    
 "&CG		) 	) A		)		0	 *	 )		
 		,&	
 =A .	M`	-&	&rw   rb   c                B   t        j                  |       }|sy |D ]  }|j                           | j                  t        j                  |ddi       |D ]G  }|j                         r|j                         %| j                  d|j                         |d       I y )Nreturn_exceptionsTz1unhandled exception during asyncio.run() shutdown)message	exceptionr   )ri   r   r   r   gather	cancelledr   call_exception_handler)r   	to_cancelr   s      rx   r   r     s    OOD)	 	DKKM	 	i P4 PQ 
	D~~~~+++#V%)^^%5 $	
	rw   c                   K   d fd}d _          j                  y j                         }t        j                  ||f      }|j                          	 | d{    |j                          y7 # |j                          w xY ww)z.Schedule the shutdown of the default executor.c                    	 j                   j                  d       j                  | j                  d        y # t        $ r&}j                  | j
                  |       Y d }~y d }~ww xY w)NT)wait)_default_executorshutdownr   
set_result	Exceptionset_exception)futureexr   s     rx   _do_shutdownz0_shutdown_default_executor.<locals>._do_shutdown  sa    D&&//T/:))&*;*;TB D))&*>*>CCDs   8< 	A+A&&A+TN)targetargs)r   zasyncio.futures.Futurer   r   )_executor_shutdown_calledr   create_futurer   r(   startjoin)r   r   r   threads   `   rx   r   r     su     	D *.&!!)##%!!VIF	LLKKM KKMs0   AB	A4 A2A4 !B	2A4 4BB	r   T_coT)	covariantT_contra)contravariantPosArgsTP
_root_taskz RunVar[asyncio.Task[Any] | None]c                    t         j                  d       } | | j                         s| S t               D ]~  }|j                  s|j                         r!|j                  D ]O  \  }}|t
        u st        |dd       dk(  st         j                  |       dd}|j                  ||       |c c S   t        t        j                  t                     }t        j                  |      }|r[|j                  }|r'|j                  |j                  }|r|j                  |$t        t        j                  |j                         S |S )Nrq   zuvloop.loopc                |    t        j                  | j                               x}r|j                  t        d        y y r   )rZ   getr   popr   )tvarss     rx   _unsetzfind_root_task.<locals>._unsetF  s/    #,==#>>4> HHZ6 ?rw   r   )r   zasyncio.Task[Any]r   r   )r   r   r   r   
_callbacksr   r   setadd_done_callbackr1   asyncioTaskr   _task_statescancel_scope_parent_scope
_host_task)	root_taskr   cbr   r   stater   s          rx   find_root_taskr  7  s"   t$IY^^%5   ??499;#  G00r<6-GNN4(7 **67*CK!  * ln-DT"E))|99E'55L |99E #l&=&=>>Krw   c                X    | j                         }|J t        |      t        t        fv S )zBReturn ``True`` if the task has been started and has not finished.)get_coror!   r   r    )r   r   s     rx   _task_startedr  _  s0     ==?DT"|^&DDDrw   c                    	 | j                   r<t        | j                   d   t              r| j                   d   j                  d      ryt        | j                  t
              r| j                  } py)NTr   Cancelled via cancel scope F)r   
isinstancestr
startswith__context__r   excs    rx   is_anyio_cancellationr  m  sW     HH388A;,&&'DEcoo~6//Crw   c                  X   e Zd ZdZej
                  ddddZej
                  dfddZddZ	 	 	 	 	 	 	 	 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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y)#rO   )_active_cancel_called_cancel_handle_cancel_reason_cancelled_caught_child_scopes	_deadliner   r   _pending_uncancellations_shield_tasks_timeout_handleFdeadlineshieldc               ,    t         j                  |       S r   object__new__clsr  r  s      rx   r#  zCancelScope.__new__      ~~c""rw   c                   || _         || _        d | _        t               | _        d| _        d | _        d| _        d| _        d | _	        d | _
        t               | _        d | _        t        j                  dk\  rd| _        y d | _        y )NFr_   r   )r  r  r   r   r  r  r  r  r  r  r  r  r   sysversion_infor  )r   r  r  s      rx   r   zCancelScope.__init__  s    !15/2u#*.!&;?59),/3w&89D),0D)rw   c                ^   | j                   rt        d      t        t        j                  t                     x| _        }| j                  j                  |       	 t        |   }|j                  | _        | |_
        | j                  K| j                  j                  j                  |        | j                  j                  j                  |       	 | j!                          d| _         | j"                  r| j%                  |        | S # t        $ r t        d |       }|t        |<   Y Vw xY w)Nz;Each CancelScope may only be used for a single 'with' blockT)r  r   r1   r   r   r   r   r  addr   r   r   r  discardKeyError	TaskState_timeoutr  _deliver_cancellation)r   	host_task
task_states      rx   r   zCancelScope.__enter__  s   <<M  '+7<<&HH)	"	=%i0J
 ",!8!8D&*J#!!- ""0044T:""))11)< &&t,'  	1"4.J&0L#	1s   	D D,+D,c                   ~| j                   st        d      t               | j                  urt        d      | j                  J t        j                  | j                        }||j                  | urt        d      	 d| _         | j                  r!| j                  j                          d | _        | j                  j                  | j                         | j                  T| j                  j                  j                  |        | j                  j                  j                  | j                         | j                  |_        | j                          | j                  r| j                   s| j"                  r<| j                  j%                          | xj"                  dz  c_        | j"                  r<t'        |t(              rC|j+                  d       \  }}|
	 d | _        ~yd| _        |
	 d | _        ~y|j.                  }	 |t'        |t0              rt3        |      rd| _        	 d | _        ~y	 d | _        ~y| j"                  rV| j                  J | j                  j"                  J | j                  xj"                  | j"                  z  c_        d| _        	 d | _        ~y# ||_        ~w xY w# d | _        ~w xY w)	NzThis cancel scope is not activezIAttempted to exit cancel scope in a different task than it was entered inzTAttempted to exit a cancel scope that isn't the current tasks's current cancel scopeFr   c                <    t        | t              xr t        |       S r   )r
  r   r  r  s    rx   r   z&CancelScope.__exit__.<locals>.<lambda>  s    &sN; ; 5c : rw   Tr   )r  r   r   r   r   r   r   r  r   r  remover   r  r+  _restart_cancellation_in_parentr  %_parent_cancellation_is_visible_to_usr  r   r
  rj   splitr  r  r   r  )r   r   r   r   host_task_statecancelleds_caught	remainingr   s           rx   r   zCancelScope.__exit__  s    ||@AA>0 
 ***&**4??;"o&B&B$&N' 
H	 DL##$$++-'+$KKt/!!-""0077=""))--doo>+/+=+=O( 002
 ""4+U+U33OO,,.11Q61 33
 g'9:3:==40%y )0$F #DOE .2D* (#< #DO; (33G$ ( "'>:?T@ 26.# #DO  % #DO 00--999--FFRRR&&??55? 56D1"DO- 18	-#( #DOs>   D9J? ='J? .	J? J? J2 "J? A"J? 2
J<<J? ?
K	c                ^    | }|)|j                   ry|j                  ry|j                  }|)yNTF)r  r  r   )r   r   s     rx   _effectively_cancelledz"CancelScope._effectively_cancelled'  s=    +/&**""'55L & rw   c                l    | j                   d uxr% | j                   xr | j                   j                  S r   )r   r  r>  r   s    rx   r7  z1CancelScope._parent_cancellation_is_visible_to_us5  s9     d* :KK:""99	
rw   c                   | j                   t        j                  k7  ret               }|j	                         | j                   k\  r| j                  d       y |j                  | j                   | j                        | _        y y )Nzdeadline exceeded)	r  mathinfr	   timer   call_atr/  r  r   s     rx   r/  zCancelScope._timeout=  sY    >>TXX%#%Dyy{dnn,/0'+||DNNDMM'R$ &rw   c                   d}t               }| j                  D ]  }|j                         rd}|j                  r#||us(|| j                  u st        |      sB|j                  }t        |t        j                        r|j                         ry|j                  |j                         ||j                  u s|j                  |xj                  dz  c_         | j                  D ]1  }|j                  r|j                  r|j!                  |      xs |}3 || u r4|r+t#               j%                  | j                   |      | _        |S d| _        |S )aZ  
        Deliver cancellation to directly contained tasks and nested cancel scopes.

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

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

        FTNr   )r   r  r   _must_cancelr   r  _fut_waiterr
  r   r   r   r  r  r  r  cancel_calledr0  r	   	call_soonr  )r   originshould_retrycurrentr   waiterscopes          rx   r0  z!CancelScope._deliver_cancellationE  s=    .KK 	=Dyy{L   7"(?=QUCV))!&'..9KK 5 56 1 11";;G771<7%	=, '' 	SE==)<)<$::6BRl	S
 T>&6&8&B&B..'#  '+#rw   c                    | j                   }|G|j                  r|j                  |j                  |       y|j                  ry|j                   }|Fyy)zb
        Restart the cancellation effort in the closest directly cancelled parent scope.

        N)r   r  r  r0  r  )r   rN  s     rx   r6  z+CancelScope._restart_cancellation_in_parentw  sZ    
 ""##''///6 }}''E rw   c                    | j                   |u ry| j                   %| j                   j                  j                  |        || _         |j                  j                  |        | j	                          y)z
        Move this active scope from its current parent to ``new_parent``.

        Used by :meth:`TaskGroup.start` to move a task that has just called
        ``task_status.started()`` into the target task group's cancel scope.
        N)r   r  r,  r+  r6  )r   
new_parents     rx   	_reparentzCancelScope._reparent  se     +),,44T:'  $$T* 	,,.rw   Nc                f   | j                   s| j                  r!| j                  j                          d | _        d| _         dt        |       d| _        t               x}r| xj                  d| z  c_        |r| xj                  d| z  c_        | j                  | j                  |        y y y )NTr	  xz by z
; reason: )r  r  r   idr  r   r   r0  )r   reasonr   s      rx   r   zCancelScope.cancel  s    ""##$$++-'+$"&D$?4|"LD#~%t%##dV}4###F8'<<#***40 + #rw   c                    | j                   S r   )r  r   s    rx   r  zCancelScope.deadline  s    ~~rw   c                    t        |      | _        | j                  !| j                  j                          d | _        | j                  r| j
                  s| j                          y y y r   )floatr  r  r   r  r  r/  r   values     rx   r  zCancelScope.deadline  sR    u+  '')#'D << 3 3MMO !4<rw   c                    | j                   S r   )r  r   s    rx   rH  zCancelScope.cancel_called  s    """rw   c                    | j                   S r   )r  r   s    rx   cancelled_caughtzCancelScope.cancelled_caught  s    %%%rw   c                    | j                   S r   )r  r   s    rx   r  zCancelScope.shield      ||rw   c                X    | j                   |k7  r|| _         |s| j                          y y y r   )r  r6  rZ  s     rx   r  zCancelScope.shield  s.    <<5  DL446  !rw   )r  rY  r  boolr   rc   )r  rY  r  rb  r   r   r   r   r   r   r   r   rb  r   rb  r   )rJ  rO   r   rb  )rQ  rO   r   r   r   )rV  z
str | Noner   r   r   rY  r[  rY  r   r   )r[  rb  r   r   )rp   rq   rr   	__slots__rA  rB  r#  r   r   r   propertyr>  r7  r/  r0  r6  rR  r   r  setterrH  r^  r  rv   rw   rx   rO   rO     s"   I  +/((5 # *.% 1$>`,` &` %	`
 
`D   
 
S0d(&/(1"   __  # # & &   ]]7 7rw   rO   c                      e Zd ZdZdZddZy)r.  z
    Encapsulates auxiliary task information that cannot be added to the Task instance
    itself because there are no guarantees about its implementation.
    )__weakref__r   	parent_idc                     || _         || _        y r   rl  r   )r   rl  r   s      rx   r   zTaskState.__init__  s    "(rw   N)rl  
int | Noner   CancelScope | None)rp   rq   rr   __doc__rg  r   rv   rw   rx   r.  r.    s    
 ;I)rw   r.  z*WeakKeyDictionary[asyncio.Task, TaskState]r   c                  .    e Zd Z	 	 	 	 	 	 	 	 ddZdddZy)_AsyncioTaskStatusc                <    || _         || _        || _        || _        y r   )_future
_parent_id_target_scope_spawn_scope)r   r   rl  target_scopespawn_scopes        rx   r   z_AsyncioTaskStatus.__init__  s$     # *'rw   Nc                x   t        t        j                  t                     }| j                  t
        |   _        | j                  j                         r&| j                  j                         st        d      y | j                  j                  |       | j                  j                  | j                         y )Nz.called 'started' twice on the same task status)r1   r   r   r   rv  r   rl  ru  r   r   r   r   rx  rR  rw  )r   r[  r   s      rx   startedz_AsyncioTaskStatus.started  s    GLL,.1'+T$<<<<))+"#STT &##D$6$67rw   )r   asyncio.Futurerl  intry  rO   rz  rO   r   )r[  zT_contra | Noner   r   )rp   rq   rr   r   r|  rv   rw   rx   rs  rs    s2    (( ( "	(
 !(8rw   rs  r`      zCodeType | None_eager_task_factory_codec                      e Zd ZddZddZ	 	 	 	 	 	 	 	 ddZ	 d	 	 	 	 	 	 	 ddZddd	 	 	 	 	 	 	 ddZddd		 	 	 	 	 	 	 	 	 dd
Zy)	TaskGroupc                j    t               | _        d| _        g | _        t	               | _        d | _        y )NF)rO   r   _entered_exceptionsr   r  _on_completed_futr   s    rx   r   zTaskGroup.__init__  s,    )402),>Brw   c                ~   K   | j                   rt        d      d| _         | j                  j                          | S w)Nz*TaskGroup cannot be entered more than onceT)r  r   r   r   r   s    rx   
__aenter__zTaskGroup.__aenter__  s7     ==KLL##%s   ;=c                  K   	 |E| j                   j                          t        |t              s| j                  j                  |       t               }	 | j                  r^t               5 }| j                  r>|j                         | _
        	 | j                   d {    d | _
        | j                  r>d d d        nt        j                          d {    | j                  rt        d| j                        d |r|	 | j                   j#                  |||      ~~| `S 7 # t        $ rJ}d|_        | j                   j                          |t        |t              rt        |      s|}Y d }~d }~ww xY w# 1 sw Y   xY w7 # t         $ r?}| j                   j#                  t%        |      ||j&                        r	Y d }~~~| `y d }~ww xY w# ~~| `w xY ww)NTzunhandled errors in a TaskGroup)r   r   r
  r   r  appendr	   r  rO   r   r  r  r  AsyncIOBackendcancel_shielded_checkpointrj   BaseExceptionr   type__traceback__)r   r   r   r   r   
wait_scoper  s          rx   	__aexit__zTaskGroup.__aexit__   s    6	2"!!((*!'>:$$++G4#%D+;;$ :*"kk595G5G5ID22&*&<&< < <  6:D2) #kk: :2 )CCEEE##
 -94;K;K  !M  $$--hH!1Q !=#1 2 59
 1 $ 1 1 8 8 :
 $+?$.w$G,A#,F.1G2: :2 F ! $$--d3ic>O>OP !1	 	 !1s   GAG F ,"E=D'D%D'#E=7 F F	+F G  G%D''	E:0A E50E=5E::E==FF 	G0GG GGGG GGNc                2    ||j                   nd d
 fd}pt        t                     }t        j	                  t        t        j                  t                           }||j                  |j                  }n8 j                  }n+t         j                  j                        } j                  }||j                  nd }t        |||      }	t        j                         }
|	j                         }	 |
j                         x}rGt        |dd       t         u r4t        |dd       x}r%|d   j"                  } |||
|	j$                        n|
j'                  ||	j$                        t/        ||      t        <   |j0                  j3                          j0                  j3                         t4        j6                  d	k\  r@ j                  j                  *t        j8                   j                  j                         j;                  |       |	S # t(        $ rk t+        t(              5  |j-                          d d d        n# 1 sw Y   nxY wt+        t(              5  |j-                          d d d         # 1 sw Y    xY ww xY w)Nc                   t         j                  dk\  r@j                  j                  *t	        j
                  | j                  j                         t        |    }|j                  J | |j                  j                  v sJ |j                  j                  j                  |        j                  j                         t        | = j                  (j                  s	 j                  j                  d        	 | j                         }|j!                         ry j#                         r\t        |t              sj$                  j'                  |       j                  j(                  s-j                  j+                          y j-                  |       y y ,j#                         sj-                  t/        d             y y y # t        j                  $ r Y w xY w# t        $ rN}t        |j                  t              r'|j                  }t        |j                  t              r'|}Y d }~0d }~ww xY w)Nr`      z2Child exited without calling task_status.started())r(  r)  r   r   r   future_discard_from_awaited_byr   r  r5  r  r   InvalidStateErrorr   r   r
  r  r   r   r  r  r>  r   r   r   )_taskr2  r  er   r   task_status_futures       rx   	task_donez#TaskGroup._spawn.<locals>.task_donef  s   7*t/@/@/K/K/W664,,77 &e,J**666J33:::::##**11%8KKt$U#%%1$++**55d;oo'  &16H6R6R6T%-1C1H1H1J%c>:((//4,,CC))002&44S9 D $/8J8O8O8Q"00 !UV 9R/5 00 
 "  ?A !? 	s1   &G G0 G-,G-0	I9A I:II)r   __code____closure__r   )r   namer  rn  r  )r  r   r   r   )ru  rU  r   r   r   r1   r   r   r   r   rx  rP   r	   	_run_coroget_task_factoryr   r  cell_contentsr  r   r  r   r   r.  r  r+  r(  r)  future_add_to_awaited_byr   )r   r   r  task_statusr  rl  caller_stateinitial_scoperz  handler   wrapper_corofactoryclosurecustom_task_constructorr   r  s   `              @@rx   _spawnzTaskGroup._spawn^  sB    5@4K[00QU-	^ )<>*I'++D|~,NOL'L,E,E,Q , 9 9 !% 1 14,,778I --M2=2Ik..tD$[A'')'')	 11333GZ6:RR ' EEWE*1!**B*B'. t&++ ''6;;'G 'WT  &w&4+<+<+G+G+S,,T43D3D3O3OPy)#  	-( %""$% % % -( 

  	s=   <A6H" "J:I	JI	J/J	 	J	J	J)r  r   c               ^   t        |t              s"t        d|j                  j                         | j
                  r| j                  j                  s|j                          t        d      t        ||      }||j                  | j                  ||      S | j                  ||      S )Nzexpected a coroutine, got ;This task group is not active; no new tasks can be started.r  )r
  r   	TypeError	__class__rr   r  r   r  r   r   rX   r   r  )r   r   r  r   
final_names        rx   r   zTaskGroup.create_task  s     $	*89T9T8UVWW}}D$5$5$=$=JJLM  #4.
;;t{{Dz;BB;;t*;55rw   F)r  return_handlec                 K   | j                   r| j                  j                  st        d      t	        j
                         }t        ||      }t        |t        | j                  j                        | j                  t                     }t        |||      }| j                  |||      }		 | d {    |r|j)                         |	_        |	S |j)                         S 7 -# t        $ rs |	j                  t        j                   j"                  u rK|	j%                          t        d      5  |	j'                          d {  7   d d d         # 1 sw Y    xY w w xY ww)Nr  )r  Tr  )r  r   r  r   r   r   rW   rs  rU  r   rO   rV   r  r  statusrP   StatusPENDINGr   r   result_start_value)
r   funcr  r  r   r   r  r  r   r  s
             rx   r   zTaskGroup.start  s,     }}D$5$5$=$=M  ")!1&tT2
/ABt((334d6G6G0
 "$+FT:{;		LL "(--/FM==?"  	}}
 1 1 9 99 - ( ++-''( ( E	sU   B,E#/C$ 4C"5C$ 9)E#"C$ $AE /EEE		E E		E  E#r   r   rc  r   )r   Coroutine[Any, Any, T_co]r  r"  r  z_AsyncioTaskStatus | Noner   TaskHandle[T_co])r   r  r  r"  r   zContext | Noner   r  )
r  7Callable[[Unpack[PosArgsT]], Coroutine[Any, Any, T_co]]r   zUnpack[PosArgsT]r  r"  r  zLiteral[False, True]r   r-   )	rp   rq   rr   r   r  r  r  r   r   rv   rw   rx   r  r    s    C<2,<2 &<2 %	<2
 
<2D 26	d'd d /	d
 
dT "&6'6 	6
  6 
66 .3/#E/#  /# 	/#
 ,/# 
/#rw   r  c                  Z     e Zd ZdZ	 	 	 	 	 	 d fdZ	 	 	 	 	 	 	 	 ddZddZd	d
dZ xZS )WorkerThread
   c                   i }t         j                  dk\  rt               |d<   t        |   dddi| || _        || _        || _        |j                  | _	        t        d      | _        t        j                         | _        d| _        y )Nr  r   r  zAnyIO worker threadr3   Frv   )r(  r)  r   superr   r  workersidle_workersr   r   r$   queuer  current_time
idle_sincestopping)r   r  r  r  kwargsr  s        rx   r   zWorkerThread.__init__  s     "$w& '	F9>3>v>"(OO	 !H 	
 )557rw   c                8   t         j                         | _        | j                  s| j                  j                  |        |j                         sJ|6t        |t              rt        d      }||_
        |}|j                  |       y |j                  |       y y )Nzcoroutine raised StopIteration)r  r  r  r  r  r  r   r
  StopIterationr   	__cause__r   r   )r   r   r  r  new_excs        rx   _report_resultzWorkerThread._report_result,  s     )557}}$$T*!c=1*+KLG(+G%!C$$S)!!&) "rw   c                R   t        t        | j                        5  	 | j                  j	                         }|
	 d d d        y |\  }}}}}|j                         sTd }d }|t        _        	  |j                  |g| }t        `	 | j                  j                  | j                  |||       ~~| j                  j                          ~~~~~~# t        $ r}	|	}Y d }	~	bd }	~	ww xY w# t        `w xY w# t        $ r | j                  j                         s Y lw xY w# 1 sw Y   y xY wr   )r9   r  r   r  r   r   r;   current_cancel_scoper   r  r   r  r   	is_closedr  )
r   itemr   r  r   r   r   r  r   r  s
             rx   r   zWorkerThread.run>  s4    ; 	Dzz~~'<	D 	D =A9tV\'')!F6:I8DL5>!,T!9D!9 )="		66 // 	

$$&'4v|;  ) ($'	( )= ( "#yy224!  5"/	D 	Dsk   D'D+C>D(C3-#D	C%C C( C%%C((C00D3$DDDDD&c                    d| _         | j                  j                  d        | j                  j	                  |        	 | j
                  j                  |        y # t        $ r Y y w xY wNT)r  r  
put_nowaitr  r,  r  r5  r   )r   fs     rx   stopzWorkerThread.stop_  sX    

d#T"	$$T* 		s   A 	A'&A')r  r   r  zset[WorkerThread]r  zdeque[WorkerThread])r   r}  r  r-   r  r   r   r   r   r   )r  zasyncio.Task | Noner   r   )	rp   rq   rr   MAX_IDLE_TIMEr   r  r   r  __classcell__r  s   @rx   r  r    s_    M # *	**$*.1*8L*	*$DB rw   r  _threadpool_idle_workerszRunVar[deque[WorkerThread]]_threadpool_workerszRunVar[set[WorkerThread]]F)eqc                  *    e Zd ZU ded<   dddZddZy)	StreamReaderWrapperzasyncio.StreamReader_streamc                   K   |dk  rt        d      | j                  j                  |       d {   }|r|S t        7 wNr   z$max_bytes must be a positive integer)r   r  readr?   )r   	max_bytesdatas      rx   receivezStreamReaderWrapper.receivex  sC     q=CDD\\&&y11K	 2s   /AA Ac                   K   | j                   j                  t                      t        j	                          d {    y 7 wr   )r  r   r>   r  
checkpointr   s    rx   aclosezStreamReaderWrapper.aclose  s.     ""#6#89'')))s   ;AAAN   r  r~  r   bytesr   )rp   rq   rr   __annotations__r  r  rv   rw   rx   r  r  t  s    !!*rw   r  c                  F    e Zd ZU ded<    edd      Zded<   d
dZddZy	)StreamWriterWrapperzasyncio.StreamWriterr  F)initdefaultrb  _closedc                  K   t         j                          d {    | j                  j                  j                  }	 | j                  j                  |       | j                  j                          d {    |st         j                          d {    y y 7 7 &# t        t        t        f$ r:}| j                  rt        || j                  j                         rt        | d }~ww xY w7 [wr   )r  checkpoint_if_cancelledr  	_protocol_pausedwritedrainConnectionResetErrorBrokenPipeErrorr   r  r>   
is_closingr<   r  )r   r  stream_pausedr  s       rx   sendzStreamWriterWrapper.send  s     44666..66	LLt$,,$$&&&  ;;=== ! 	7 '$o|D 		 ||)s2((*)s2		 >sQ   C4B$C4 8B! 8B9B! =C4C2C4B! !C/55C**C//C4c                   K   d| _         | j                  j                          t        j	                          d {    y 7 wr  )r  r  r   r  r  r   s    rx   r  zStreamWriterWrapper.aclose  s/     '')))s   9AAANr  r  r   r   r   )rp   rq   rr   r  r   r  r  r  rv   rw   rx   r  r    s#    !!ue4GT4>(*rw   r  c                      e Zd ZU ded<   ded<   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y)Processzasyncio.subprocess.Process_processzStreamWriterWrapper | None_stdinzStreamReaderWrapper | None_stdout_stderrasyncio.Event_exitedzasyncio.SubprocessTransport
_transportc                T  K   t        d      5 }| j                  rO| j                  j                          d {    | j                  j	                  d      x}r|j                          | j                  rO| j                  j                          d {    | j                  j	                  d      x}r|j                          | j                  rO| j                  j                          d {    | j                  j	                  d      x}r|j                          d|_        	 | j                          d {    	 d d d        y 7 7 7 `7 # t        $ r< d|_        | j                  j                          | j                          d {  7    w xY w# 1 sw Y   y xY ww)NTr  r   r   r3   F)rO   r  r  r
  get_pipe_transportr   r  r  r  r   r  )r   rN  pipes      rx   r  zProcess.aclose  sU    % 	 {{kk((***??==a@@4@JJL||ll))+++??==a@@4@JJL||ll))+++??==a@@4@JJL ELiik!!%	 	 + , , "  #%%'iik!!'	 	s   F(*FEAFEAF/E08F)E<E=E	F(FFFE=FFFFF%!F(c                   K   | j                   j                          d {    | j                  j                  J | j                  j                  S 7 2wr   )r	  r   r  
returncoder   s    rx   r   zProcess.wait  sG     ll!!!}}''333}}''' 	"s   AA3Ac                8    | j                   j                          y r   )r  	terminater   s    rx   r  zProcess.terminate  s    !rw   c                8    | j                   j                          y r   )r  killr   s    rx   r  zProcess.kill  s    rw   c                :    | j                   j                  |       y r   )r  send_signal)r   r   s     rx   r  zProcess.send_signal  s    !!&)rw   c                .    | j                   j                  S r   )r  pidr   s    rx   r  zProcess.pid  s    }}   rw   c                .    | j                   j                  S r   )r  r  r   s    rx   r  zProcess.returncode  s    }}'''rw   c                    | j                   S r   )r  r   s    rx   stdinzProcess.stdin      {{rw   c                    | j                   S r   )r  r   s    rx   stdoutzProcess.stdout  r`  rw   c                    | j                   S r   )r  r   s    rx   stderrzProcess.stderr  r`  rw   Nr   r   r~  )r   r~  r   r   r   ro  )r   zabc.ByteSendStream | None)r   zabc.ByteReceiveStream | None)rp   rq   rr   r  r  r   r  r  r  rh  r  r  r  r  r  rv   rw   rx   r  r    s    ((&&''''++6(
"* ! ! ( (      rw   r  c                F   d}t         j                  dk  r#	 t        j                         j	                         }| j                         D ]  }|j                  |j                  j                  j                  j                          |j                  j                  j                  j                          |j                  j                  j                  j                          |j                          |s|j                  |j                           y# t
        $ r Y w xY w)zG
    Forcibly shuts down worker processes belonging to this event loop.Nr  )r(  r)  r   get_event_loop_policyget_child_watcherNotImplementedErrorcopyr  r  r  r
  r   r  r  r  remove_child_handlerr  )r  r  child_watcherprocesss       rx   '_forcibly_shutdown_process_pool_on_exitr*    s    
 :>M
'!	#99;MMOM
 <<> 	<)))//1**002**002..w{{;	<	 # 		s   "D 	D D c                .  K   	 t        t        j                         d{    y7 # t        j                  $ rW | j                         } | D ]  }|j                  |j                          ! | D ]  }|j                          d{  7    Y yw xY w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
   rA  rB  r   r   r&  r  r  r  )r  r)  s     rx   _shutdown_process_pool_on_exitr,    s     	#DHHo!! #,,. 	G!!)	  	#G.."""	##sC   B( &( B( 4B*BB
BBBBc                  x    e Zd ZU ded<   ded<   ded<   dZded<   d	Zd
ed<   ddZddZddZddZ	ddZ
ddZy)StreamProtocolzdeque[bytes]
read_queuer  
read_eventwrite_eventNException | Noner   Frb  	is_at_eofc                   t               | _        t        j                         | _        t        j                         | _        | j
                  j                          t        t        j                  |      j                  d       y Nr   )
r   r/  r   rG   r0  r1  r   r1   	Transportset_write_buffer_limitsr   	transports     rx   connection_madezStreamProtocol.connection_made'  sS    '!--/"==?W	*BB1Erw   c                ~    |r|| _         | j                  j                          | j                  j                          y r   )r   r0  r   r1  r   r  s     rx   connection_lostzStreamProtocol.connection_lost.  s.     DNrw   c                    | j                   j                  t        |             | j                  j	                          y r   )r/  r  r  r0  r   )r   r  s     rx   data_receivedzStreamProtocol.data_received5  s(    uT{+rw   c                F    d| _         | j                  j                          yr  )r3  r0  r   r   s    rx   eof_receivedzStreamProtocol.eof_received:  s    rw   c                6    t        j                         | _        y r   )r   rG   r1  r   s    rx   pause_writingzStreamProtocol.pause_writing?  s    "==?rw   c                8    | j                   j                          y r   r1  r   r   s    rx   resume_writingzStreamProtocol.resume_writingB      rw   r9  zasyncio.BaseTransportr   r   r  r2  r   r   )r  r  r   r   )r   r   r   )rp   rq   rr   r  r   r3  r:  r=  r?  rA  rC  rF  rv   rw   rx   r.  r.     sH    "&I&ItF

+rw   r.  c                  t    e Zd ZU ded<   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
y)DatagramProtocolz#deque[tuple[bytes, IPSockAddrType]]r/  r  r0  r1  closed_eventNr2  r   c                    t        d      | _        t        j                         | _        t        j                         | _        t        j                         | _        | j
                  j                          y )Nd   )maxlen)r   r/  r   rG   r0  r1  rL  r   r8  s     rx   r:  z DatagramProtocol.connection_madeM  sI    s+!--/"==?#MMOrw   c                    | j                   j                          | j                  j                          | j                  j                          y r   )r0  r   r1  rL  r<  s     rx   r=  z DatagramProtocol.connection_lostT  s6    rw   c                    t        |      }| j                  j                  ||f       | j                  j	                          y r   )rB   r/  r  r0  r   )r   r  addrs      rx   datagram_receivedz"DatagramProtocol.datagram_receivedY  s2    $T*d|,rw   c                    || _         y r   )r   r<  s     rx   error_receivedzDatagramProtocol.error_received^  s	    rw   c                8    | j                   j                          y r   )r1  clearr   s    rx   rC  zDatagramProtocol.pause_writinga  s     rw   c                8    | j                   j                          y r   rE  r   s    rx   rF  zDatagramProtocol.resume_writingd  rG  rw   rH  rI  )r  r  rR  rR   r   r   )r  r   r   r   r   )rp   rq   rr   r  r   r:  r=  rS  rU  rC  rF  rv   rw   rx   rK  rK  F  sC    33"&I& 

!rw   rK  c                  H    e Zd ZddZed	d       Zd
ddZddZddZddZ	y)SocketStreamc                n    || _         || _        t        d      | _        t        d      | _        d| _        y Nreading from
writing toFr
  r  rJ   _receive_guard_send_guardr  r   r9  protocols      rx   r   zSocketStream.__init__i  s1    #!+N;(6rw   c                8    | j                   j                  d      S Nsocketr
  get_extra_infor   s    rx   _raw_socketzSocketStream._raw_socketp      --h77rw   c                  K   |dk  rt        d      | j                  5  | j                  j                  j	                         s| j
                  j                         sw| j                  j                  sa| j
                  j                          | j                  j                  j                          d {    | j
                  j                          nt        j                          d {    	 | j                  j                  j                         }t+        |      |kD  r/|d | ||d  }}| j                  j                  j-                  |       | j                  j                  s$| j                  j                  j/                          d d d        |S 7 7 # t        $ rL | j                   rt"        d | j                  j$                  rt&        | j                  j$                  t(        d w xY w# 1 sw Y   S xY wwr  )r   r`  r  r0  is_setr
  r  r3  resume_readingr   pause_readingr  r  r/  popleft
IndexErrorr  r>   r   r<   r?   len
appendleftrW  )r   r  chunkleftovers       rx   r  zSocketStream.receivet  s    q=CDD   	2NN--44622400..0nn//44666--/$//11101199; 5zI%"'
"3U9:5Fx))44X> >>,,))//1=	2@ 3 7 2  0<<-47^^---4>>3K3KK%4/0	2@ s[   H BG35F66G3,F-G32$FA7G3
H G3G3AG00G33G=8H c                
  K   | j                   5  t        j                          d {    | j                  rt        | j
                  j                  t        | j
                  j                  	 | j                  j                  |       | j
                  j                  j                          d {    d d d        y 7 # t        $ r'}| j                  j                         rt        | d }~ww xY w7 B# 1 sw Y   y xY wwr   )ra  r  r  r  r>   r  r   r<   r
  r  r   r  r1  r   )r   r  r  s      rx   r  zSocketStream.send  s      	4 ++---||))))5)t~~/G/GG%%d+ ..,,11333!	4 	4-   ??--/-36	 4!	4 	4s]   DC7C AC70C'C72C53C77	D C7	C2"C--C22C77D <Dc                `   K   	 | j                   j                          y # t        $ r Y y w xY wwr   )r
  	write_eofOSErrorr   s    rx   send_eofzSocketStream.send_eof  s,     	OO%%' 		s   . .	+.+.c                6  K   d| _         | j                  j                         sc	 | j                  j                          | j                  j                          t        d       d {    | j                  j                          y y # t        $ r Y Tw xY w7 /wNTr   )r  r
  r  rw  rx  r   r
   abortr   s    rx   r  zSocketStream.aclose  s}     ))+))+ OO!!#(NNOO!!# ,   s3   "BB (B'B( B	BBBBN)r9  zasyncio.Transportrc  r.  r   socket.socketr  r  r  r   )
rp   rq   rr   r   rh  ri  r  r  ry  r  rv   rw   rx   rZ  rZ  h  s0     8 8$L4&
$rw   rZ  c                  `    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y)_RawSocketMixinNzasyncio.Future | None_receive_future_send_futureFc                R    || _         t        d      | _        t        d      | _        y )Nr]  r^  )_RawSocketMixin__raw_socketrJ   r`  ra  r   
raw_sockets     rx   r   z_RawSocketMixin.__init__  s$    &+N;(6rw   c                    | j                   S r   )r  r   s    rx   ri  z_RawSocketMixin._raw_socket         rw   c                     d fd}t        j                         x} _        j                   j                  |j
                  d        |j                  |       |S )Nc                @    ` j                  j                         y r   )r  remove_readerr  r  r   r   s    rx   callbackz6_RawSocketMixin._wait_until_readable.<locals>.callback  s    $t001rw   r  r"  r   r   )r   r   r  
add_readerr  r   r   r   r   r  r  s   ``  rx   _wait_until_readablez$_RawSocketMixin._wait_until_readable  sK    	2 $+>>#33D ))1<<>	H%rw   c                     d fd}t        j                         x} _        j                   j                  |j
                  d        |j                  |       |S )Nc                @    ` j                  j                         y r   )r  remove_writerr  r  s    rx   r  z6_RawSocketMixin._wait_until_writable.<locals>.callback  s    !t001rw   r  )r   r   r  
add_writerr  r   r   r  s   ``  rx   _wait_until_writablez$_RawSocketMixin._wait_until_writable  sK    	2 !( 00D))1<<>	H%rw   c                  K   | j                   sd| _         | j                  j                         dk7  r| j                  j                          | j                  r5| j                  j                         s| j                  j                  d        | j                  r7| j                  j                         s| j                  j                  d        y y y y w)NT)_closingr  filenor   r  r   r   r  r   s    rx   r  z_RawSocketMixin.aclose  s     }} DM  '')R/!!'')##D,@,@,E,E,G$$//5  ):):)?)?)A!!,,T2 *B  s   CCr  r~  r}  )r   asyncio.AbstractEventLoopr   r}  r   )rp   rq   rr   r  r  r  r  r   rh  ri  r  r  r  rv   rw   rx   r  r    sE    -1O*1*.L'.H7
 ! !	3rw   r  c                  6    e Zd ZddZdd	dZd
dZddZddZy)UNIXSocketStreamc                   K   | j                   5  | j                  j                  t        j                         d d d        y # 1 sw Y   y xY wwr   )ra  ri  r   rf  SHUT_WRr   s    rx   ry  zUNIXSocketStream.send_eof  s;      	6%%fnn5	6 	6 	6s   A*A	AAAc                  K   |dk  rt        d      t               }t        j                          d {    | j                  5  	 	 | j
                  j                  |      }|st        |cd d d        S 7 A# t        $ r | j                  |       d {  7   Y n*t        $ r}| j                  rt        d t        |d }~ww xY w# 1 sw Y   y xY wwr  )r   r	   r  r  r`  ri  recvr?   BlockingIOErrorr  rx  r  r>   r<   )r   r  r   r  r  s        rx   r  zUNIXSocketStream.receive  s     q=CDD!'')))   	  ++00;D  ))	  	  	*
 ' :33D999 ;}}1t;1s:	; 	  	 sc   2CA6CCA8#	C,C8CBCCC%B??CCCCc                  K   t               }t        j                          d {    | j                  5  t	        |      }|r$	 | j
                  j                  |      }||d  }|r$d d d        y 7 K# t        $ r | j                  |       d {  7   Y 3t        $ r}| j                  rt        d t        |d }~ww xY w# 1 sw Y   y xY wwr   )r	   r  r  ra  
memoryviewri  r  r  r  rx  r  r>   r<   )r   r  r   view
bytes_sentr  s         rx   r  zUNIXSocketStream.send
  s     !''))) 	-d#D
-!%!1!1!6!6t!<J  
,D 	- 	- 	* ' :33D999 ;}}1t;1s:	;	- 	-sb   "CA0CCA2C'
C2B>BB>CB>B99B>>CC
Cc           	       K   t        |t              r|dk  rt        d      t        |t              r|dk  rt        d      t               }t	        j                  d      }t
        j                          d {    | j                  5  	 	 | j                  j                  |t        j                  ||j                  z              \  }}}}|s|st        	 d d d        D ]v  \  }
}}|
t        j(                  k7  s|t        j*                  k7  rt-        dd|
 d|       |j/                  |d t1        |      t1        |      |j                  z  z
          x t3        |      fS 7 # t        $ r | j                  |       d {  7   Y n*t         $ r}	| j"                  rt$        d t&        |	d }	~	ww xY w0# 1 sw Y   xY ww)	Nr   z%msglen must be a non-negative integerr   z!maxfds must be a positive integeriz.Received unexpected ancillary data; message = z, cmsg_level = z, cmsg_type = )r
  r~  r   r	   arrayr  r  r`  ri  recvmsgrf  CMSG_LENitemsizer?   r  r  rx  r  r>   r<   
SOL_SOCKET
SCM_RIGHTSr   	frombytesrq  list)r   msglenmaxfdsr   fdsr   ancdata_flags_addrr  
cmsg_level	cmsg_type	cmsg_datas                rx   receive_fdszUNIXSocketStream.receive_fds  s    &#&&1*DEE&#&&1*@AA!kk#'')))   	6:6F6F6N6N0E F73GWfe #7))#	& 18 	Y,J	9V...)v?P?P2P"DWK P$$.<~i[J 
 MM)$Vc)nI8U&VWX	Y S	!!; 	* ' :33D999 ;}}1t;1s:	; 	 	sh   A7G9E):G
F<AE+
F<BG+F7F	F7F<F7F22F77F<<GGc                  K   |st        d      |st        d      t               }g }|D ]T  }t        |t              r|j	                  |       %t        |t
              s6|j	                  |j                                V t        j                  d|      }t        j                          d {    | j                  5  	 	 | j                  j                  |gt        j                  t        j                  |fg       	 d d d        y 7 Z# t         $ r | j#                  |       d {  7   Y n*t$        $ r}| j&                  rt(        d t*        |d }~ww xY w# 1 sw Y   y xY ww)Nzmessage must not be emptyzfds must not be emptyr  )r   r	   r
  r~  r  r"   r  r  r  r  ra  ri  sendmsgrf  r  r  r  r  rx  r  r>   r<   )r   r   r  r   filenosfdfdarrayr  s           rx   send_fdszUNIXSocketStream.send_fdsC  sG    899455! 	,B"c"r"B'ryy{+		, ++c7+''))) 	;; $$,, 	V%6%68I8I7$S#T 	; 	; 	* ' :33D999 ;}}1t;1s:	; 	; 	;sg   AE(!AE(/D
0E( E=D
E(E)D,*E/E1E9EEEE%!E(Nr   r  r  r  )r  r~  r  r~  r   ztuple[bytes, list[int]])r   r  r  zCollection[int | IOBase]r   r   )rp   rq   rr   ry  r  r  r  r  rv   rw   rx   r  r    s    6 .-$%"N;rw   r  c                  J    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
y)TCPSocketListenerNrp  _accept_scopeFc                    || _         t        t        j                  t	                     | _        t        d      | _        y )Naccepting connections from)_TCPSocketListener__raw_socketr1   r   BaseEventLoopr	   r   rJ   _accept_guardr  s     rx   r   zTCPSocketListener.__init__i  s0    &'//1A1CD
*+GHrw   c                    | j                   S r   )r  r   s    rx   ri  zTCPSocketListener._raw_socketn  r  rw   c                "  K   | j                   rt        | j                  5  t        j	                          d {    t               5 | _        	 | j                  j                  | j                         d {   \  }}	 d | _        	 d d d        d d d        j                  t         j"                  t         j$                  d       | j                  j'                  t(        |       d {   \  }}t+        ||      S 7 7 # t        j                  $ rQ 	 | j                  j                  | j                         n# t        t        f$ r Y nw xY w| j                   rt        d  w xY w# d | _        w xY w# 1 sw Y   xY w# 1 sw Y   xY w7 wNr   )r  r>   r  r  r  rO   r  r   sock_acceptri  r   r   r  r   r%  
setsockoptrf  IPPROTO_TCPTCP_NODELAYconnect_accepted_socketr.  rZ  )r   client_sockr  r9  rc  s        rx   acceptzTCPSocketListener.acceptr  s_    <<%% 	. ++--- .$"4./3zz/E/EdFVFV/W)W&K *.D&.	.& 	v1163E3EqI$(JJ$F$FK%
 
	8 Ix00- . *X-- 


001A1AB&(;<  ||1t;
 *.D&. .	. 	.(
s   FFC>FE5(D7D 8D E5FAF*F+F>F DE&%D<;E&<E	E&E	E&&E))	E22E55E>	:FF
Fc                T  K   | j                   ry d| _         | j                  rS	 | j                  j                  | j                         | j                  j                          t        d       d {    | j                  j                          y # t
        t        f$ r Y Yw xY w7 4wr{  )
r  r  r   r  ri  r   r%  r   r
   r   r   s    rx   r  zTCPSocketListener.aclose  s     <<

(()9)9: %%'(NN   34  s4   !B(%B 	(B(1B&2B(B# B("B##B(r  r}  r   abc.SocketStreamr   )rp   rq   rr   r  r  r  r   rh  ri  r  r  rv   rw   rx   r  r  e  s6    (,M%,GI
 ! !1:!rw   r  c                  6    e Zd ZddZddZddZed	d       Zy)
UNIXSocketListenerc                ^    || _         t               | _        t        d      | _        d| _        y )Nr  F)_UNIXSocketListener__raw_socketr	   r   rJ   r  r  r  s     rx   r   zUNIXSocketListener.__init__  s)    &%'
*+GHrw   c                6   K   t         j                          d {     j                  5  	 	  j                  j	                         \  }}|j                  d       t        |      cd d d        S 7 U# t        $ rg t        j                         } j                  j                   j                  |j                  d        |j                   fd       | d {  7   Y n*t        $ r} j                  rt         d t"        |d }~ww xY w# 1 sw Y   y xY ww)NFc                N    j                   j                  j                        S r   )r   r  r  )_r   s    rx   r   z+UNIXSocketListener.accept.<locals>.<lambda>  s    $**":":4;L;L"M rw   )r  r  r  r  r  setblockingr  r  r   r   r   r  r   r   rx  r  r>   r<   )r   r  r  r  r  s   `    rx   r  zUNIXSocketListener.accept  s     ''))) 	;;%)%6%6%=%=%?NK++E2+K8	; 	; 	* ' (/(8AJJ))$*;*;Q\\4P''M GG ;||1t;1s:	; 	; 	;s\   DA1DD8A3'D3A'D	CD	 D"D	*DD		DDDc                N   K   d| _         | j                  j                          y wr  )r  r  r   r   s    rx   r  zUNIXSocketListener.aclose  s     !s   #%c                    | j                   S r   )r  r   s    rx   ri  zUNIXSocketListener._raw_socket  r  rw   Nr  r  r   r}  )rp   rq   rr   r   r  r  rh  ri  rv   rw   rx   r  r    s%    ;*" ! !rw   r  c                  F    e Zd Z	 	 	 	 ddZedd       Zd	dZd
dZddZy)	UDPSocketc                n    || _         || _        t        d      | _        t        d      | _        d| _        y r\  r_  rb  s      rx   r   zUDPSocket.__init__  3     $!+N;(6rw   c                8    | j                   j                  d      S re  rg  r   s    rx   ri  zUDPSocket._raw_socket  rj  rw   c                   K   d| _         | j                  j                         s| j                  j                          | j                  j
                  j                          d {    y 7 wr  r  r
  r  r   r  rL  r   r   s    rx   r  zUDPSocket.aclose  I     ))+OO!!#nn))..000   A#A-%A+&A-c                &  K   | j                   5  t        j                          d {    | j                  j                  sj| j
                  j                         sP| j                  j                  j                          | j                  j                  j                          d {    	 | j                  j                  j                         cd d d        S 7 7 4# t        $ r | j                  rt        d t        d w xY w# 1 sw Y   y xY wwr   r`  r  r  r  r/  r
  r  r0  rW  r   ro  rp  r  r>   r<   r   s    rx   r  zUDPSocket.receive  s        	8 ++--- >>,,T__5O5O5Q))//1nn//446668~~0088:	8 	8-
 7  8<<-47-47	8	8 	8sQ   DDCA?D'C(D-#C
DDD$DDD
Dc                ~  K   | j                   5  t        j                          d {    | j                  j                  j                          d {    | j                  rt        | j                  j                         rt         | j                  j                  |  	 d d d        y 7 7 [# 1 sw Y   y xY wwr   ra  r  r  r  r1  r   r  r>   r
  r  r<   sendtor   r  s     rx   r  zUDPSocket.send  s      	. ++---..,,11333||))++-))&&&-	. 	.-3	. 	.s?   B=B1B-+B1B/AB1$	B=-B1/B11B:6B=Nr9  zasyncio.DatagramTransportrc  rK  r}  r   )r   ztuple[bytes, IPSockAddrType])r  rT   r   r   	rp   rq   rr   r   rh  ri  r  r  r  rv   rw   rx   r  r    s:    2>N 8 818"	.rw   r  c                  F    e Zd Z	 	 	 	 ddZedd       Zd	dZd
dZddZy)ConnectedUDPSocketc                n    || _         || _        t        d      | _        t        d      | _        d| _        y r\  r_  rb  s      rx   r   zConnectedUDPSocket.__init__  r  rw   c                8    | j                   j                  d      S re  rg  r   s    rx   ri  zConnectedUDPSocket._raw_socket  rj  rw   c                   K   d| _         | j                  j                         s| j                  j                          | j                  j
                  j                          d {    y 7 wr  r  r   s    rx   r  zConnectedUDPSocket.aclose  r  r  c                0  K   | j                   5  t        j                          d {    | j                  j                  sj| j
                  j                         sP| j                  j                  j                          | j                  j                  j                          d {    	 | j                  j                  j                         }|d   cd d d        S 7 7 9# t        $ r | j                  rt        d t        d w xY w# 1 sw Y   y xY wwr5  r  )r   packets     rx   r  zConnectedUDPSocket.receive  s        	 ++--- >>,,T__5O5O5Q))//1nn//44666822::< !9!	 	-
 7  8<<-47-47	8	 	sW   DD
CA?D
'C!(D
-$C#D

DD
!D
#$DD

DDc                  K   | j                   5  t        j                          d {    | j                  j                  j                          d {    | j                  rt        | j                  j                         rt        | j                  j                  |       	 d d d        y 7 7 ]# 1 sw Y   y xY wwr   r  r  s     rx   r  zConnectedUDPSocket.send   s      	- ++---..,,11333||))++-))&&t,	- 	--3	- 	-s?   B?B3B/+B3B1AB3&	B?/B31B33B<8B?Nr  r}  r   r   r  r  r  rv   rw   rx   r  r    s:    2>N 8 81&	-rw   r  c                      e Zd ZddZddZy)UNIXDatagramSocketc                |  K   t               }t        j                          d {    | j                  5  	 	 | j                  j                  d      }|cd d d        S 7 9# t        $ r | j                  |       d {  7   Y n*t        $ r}| j                  rt        d t        |d }~ww xY wy# 1 sw Y   y xY wwNr  )r	   r  r  r`  ri  recvfromr  r  rx  r  r>   r<   r   r   r  r  s       rx   r  zUNIXDatagramSocket.receive-  s     !'')))   	 
 ++44U;D  	  	  	*
 ' :33D999 ;}}1t;1s:	; 	  	 a   "B<AB<B0A B0B< B,=B >B,B0B,B''B,,B00B95B<c                v  K   t               }t        j                          d {    | j                  5  	 	  | j                  j
                  |  	 d d d        y 7 6# t        $ r | j                  |       d {  7   Y n*t        $ r}| j                  rt        d t        |d }~ww xY wv# 1 sw Y   y xY wwr   )r	   r  r  ra  ri  r  r  r  rx  r  r>   r<   r   r  r   r  s       rx   r  zUNIXDatagramSocket.send>  s     !''))) 	
+D$$++T2 	 	 	*
 ' :33D999 ;}}1t;1s:	; 	 	sa   "B9AB9B-AB-
B9B):A=;B) B-B)
B$$B))B--B62B9N)r   rU   )r  rU   r   r   rp   rq   rr   r  r  rv   rw   rx   r  r  ,       "rw   r  c                      e Zd ZddZddZy)ConnectedUNIXDatagramSocketc                |  K   t               }t        j                          d {    | j                  5  	 	 | j                  j                  d      }|cd d d        S 7 9# t        $ r | j                  |       d {  7   Y n*t        $ r}| j                  rt        d t        |d }~ww xY wy# 1 sw Y   y xY wwr  )r	   r  r  r`  ri  r  r  r  rx  r  r>   r<   r   s       rx   r  z#ConnectedUNIXDatagramSocket.receiveQ  s     !'')))   	 
 ++007D  	  	  	*
 ' :33D999 ;}}1t;1s:	; 	  	 r  c                z  K   t               }t        j                          d {    | j                  5  	 	 | j                  j                  |       	 d d d        y 7 8# t        $ r | j                  |       d {  7   Y n*t        $ r}| j                  rt        d t        |d }~ww xY wx# 1 sw Y   y xY wwr   )r	   r  r  ra  ri  r  r  r  rx  r  r>   r<   r  s       rx   r  z ConnectedUNIXDatagramSocket.sendb  s     !''))) 	
$$))$/ 	 	 	*
 ' :33D999 ;}}1t;1s:	; 	 	sa   "B;AB;B/AB/
B;B+<A?=B+B/B+B&&B++B//B84B;Nr  r  r  rv   rw   rx   r  r  P  r  rw   r  read_eventsz'RunVar[dict[int, asyncio.Future[bool]]]_read_eventswrite_events_write_eventsc                  @    e Zd ZdZd	dZd
dZd
dZddZd
dZddZ	y)rG   )_eventc                ,    t         j                  |       S r   r!  r%  s    rx   r#  zEvent.__new__  r&  rw   c                6    t        j                         | _        y r   )r   rG   r  r   s    rx   r   zEvent.__init__  s    mmorw   c                8    | j                   j                          y r   )r  r   r   s    rx   r   z	Event.set  s    rw   c                6    | j                   j                         S r   )r  rl  r   s    rx   rl  zEvent.is_set  s    {{!!##rw   c                   K   | j                         rt        j                          d {    y | j                  j	                          d {    y 7 (7 wr   )rl  r  r  r  r   r   s    rx   r   z
Event.wait  s@     ;;= ++---++""$$$ .$s!   (AA"AAAAc                R    t        t        | j                  j                              S r   )r5   rq  r  _waitersr   s    rx   
statisticszEvent.statistics  s    s4;;#7#7899rw   Nr   r   rd  )r   r5   )
rp   rq   rr   rg  r#  r   r   rl  r   r  rv   rw   rx   rG   rG   }  s%    I#&$%:rw   rG   c                  T    e Zd ZdZddddZddddZddZddZddZdd	Z	dd
Z
y)rI   )_fast_acquire_owner_taskr  Ffast_acquirec               ,    t         j                  |       S r   r!  r%  r  s     rx   r#  zLock.__new__  r&  rw   c               >    || _         d | _        t               | _        y r   )r  r  r   r  )r   r  s     rx   r   zLock.__init__  s    )04DIGrw   c                  K   t        t        j                  t                     }| j                  Z| j
                  sNt        j                          d {    || _        | j                  s	 t        j                          d {    y y | j                  |k(  rt        d      t        j                         }||f}| j
                  j                  |       	 | d {    y 7 7 a# t        $ r | j                           w xY w7 '# t        $ rN |j                         r,	 | j
                  j!                  |        # t"        $ r Y  w xY w| j                           w xY wwNz)Attempted to acquire an already held Lock)r1   r   r   r   r  r  r  r  r  r  r   releaser   r   r  r   r5  r   )r   r   futr  s       rx   acquirezLock.acquire  s>    GLL,.1#DMM 88:::#D %%(CCEEE
 t#JKK$+NN$4SyT"	II+ ; F% LLN  		}}MM((.  "   		s   AE"C$E"-C( C&C( 	AE"D DD #E"&C( (DE"D E"D>=E>	E
E	E

EE"c                    t        t        j                  t                     }| j                  | j
                  s|| _        y | j                  |u rt        d      t        r"  )r1   r   r   r   r  r  r   rA   )r   r   s     rx   acquire_nowaitzLock.acquire_nowait  sQ    GLL,.1#DMM#Dt#JKKrw   c                    | j                   d uS r   )r  r   s    rx   lockedzLock.locked  s    t++rw   c                    | j                   t               k7  rt        d      | j                  rG| j                  j	                         \  }}|j                         r:|| _         |j                  d        y d | _         y )Nz)The current task is not holding this lock)r  r   r   r  ro  r   r   )r   r   r$  s      rx   r#  zLock.release  sh    |~-JKK
 mm--/ID#}}#DNN4 rw   c                    | j                   rt        | j                         nd }t        | j                         |t	        | j
                              S r   )r  AsyncIOTaskInfor6   r)  rq  r  )r   	task_infos     rx   r  zLock.statistics  s:    9=9I9IOD$4$45t	dkkmYDMM8JKKrw   N)r  rb  r   rc   )r  rb  r   r   r   rd  )r   r6   )rp   rq   rr   rg  r#  r   r%  r'  r)  r#  r  rv   rw   rx   rI   rI     s5    :I-2 # 05 L
"H	, $Lrw   rI   c                       e Zd ZdZddd	 	 	 	 	 	 	 ddZddd	 	 	 	 	 d fdZddZddZdd	Ze	dd
       Z
e	dd       ZddZ xZS )rM   )r  
_max_value_valuer  NF	max_valuer  c               ,    t         j                  |       S r   r!  r%  initial_valuer2  r  s       rx   r#  zSemaphore.__new__  s     ~~c""rw   c               p    t         |   ||       || _        || _        || _        t               | _        y )N)r2  )r  r   r0  r/  r  r   r  )r   r5  r2  r  r  s       rx   r   zSemaphore.__init__  s6     	)<##)5:Wrw   c                j  K   | j                   dkD  rh| j                  s\t        j                          d {    | xj                   dz  c_         | j                  s	 t        j                          d {    y y t        j                         }| j                  j                  |       	 | d {    y 7 7 C# t        $ r | j                           w xY w7 '# t        $ rN |j                         r,	 | j                  j                  |        # t        $ r Y  w xY w| j                           w xY wwNr   r   )r0  r  r  r  r  r  r   r#  r   r   r  r   r5  r   r   r$  s     rx   r%  zSemaphore.acquire  s    ;;?4== 88:::KK1K %%(CCEEE
 $+NN$4S!	II# ; F% LLN  		}}MM((-  "   		s   3D3B5%D3B9 3B74B9 81D3*C /C0C 4D37B9 9CD3C D03DD0	DD0DD00D3c                X    | j                   dk(  rt        | xj                   dz  c_         y r8  )r0  rA   r   s    rx   r'  zSemaphore.acquire_nowait"  s"    ;;!qrw   c                    | j                   $| j                  | j                   k(  rt        d      | j                  r=| j                  j	                         }|j                         r7|j                  d        y | xj                  dz  c_        y )Nz!semaphore released too many timesr   )r/  r0  r   r  ro  r   r   r9  s     rx   r#  zSemaphore.release(  si    ??&4;;$//+I@AAmm--'')C}}NN4 qrw   c                    | j                   S r   )r0  r   s    rx   r[  zSemaphore.value6  r  rw   c                    | j                   S r   )r/  r   s    rx   r2  zSemaphore.max_value:  s    rw   c                >    t        t        | j                              S r   )rK   rq  r  r   s    rx   r  zSemaphore.statistics>  s    "3t}}#566rw   )r5  r~  r2  ro  r  rb  r   rc   )r5  r~  r2  ro  r  rb  r   r   r!  )r   rK   )rp   rq   rr   rg  r#  r   r%  r'  r#  rh  r[  r2  r  r  r  s   @rx   rM   rM     s    CI !%"## 	#
 # 
# !%"== 	=
 =>    7rw   rM   c                      e Zd Z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dd
ZddZddZddZddZddZddZddZy)rE   )
_borrowers_total_tokens_wait_queuec                ,    t         j                  |       S r   r!  r%  total_tokenss     rx   r#  zCapacityLimiter.__new__E  r&  rw   c                \    d| _         t               | _        t               | _        || _        y r5  )rA  r   r@  r   rB  rE  )r   rE  s     rx   r   zCapacityLimiter.__init__H  s%    $%$'E<GM(rw   c                @   K   | j                          d {    y 7 wr   )r%  r   s    rx   r  zCapacityLimiter.__aenter__N  s     llns   c                ,   K   | j                          y wr   )r#  r   s       rx   r  zCapacityLimiter.__aexit__Q  s      	s   c                    | j                   S r   )rA  r   s    rx   rE  zCapacityLimiter.total_tokensY  s    !!!rw   c                   t        |t              s t        j                  |      st	        d      |dk  rt        d      || _        | j                  rt        | j                        | j                  k  r{| j                  j                  d      \  }}| j                  j                  |       |j                          | j                  r$t        | j                        | j                  k  ryy y y y )Nz'total_tokens must be an int or math.infr   ztotal_tokens must be >= 0Flast)r
  r~  rA  isinfr  r   rA  rB  rq  r@  popitemr+  r   )r   r[  borrowerevents       rx   rE  zCapacityLimiter.total_tokens]  s    %%djj.?EFF19899" 3t#7$:L:L#L"..66E6BOHeOO)IIK 3t#7$:L:L#L#Lrw   c                ,    t        | j                        S r   )rq  r@  r   s    rx   borrowed_tokenszCapacityLimiter.borrowed_tokensn  s    4??##rw   c                F    | j                   t        | j                        z
  S r   )rA  rq  r@  r   s    rx   available_tokensz CapacityLimiter.available_tokensr  s    !!C$888rw   c                    | j                   rnt        | j                        | j                  k  rK| j                   j	                  d      \  }}| j                  j                  |       |j                          yyy)z3Hand a free token to the next task in line, if any.FrK  N)rB  rq  r@  rA  rN  r+  r   r   rO  rP  s      rx   _notify_next_waiterz#CapacityLimiter._notify_next_waiterv  sb    DOO 4t7I7I I"..66E6BOHeOO)IIK !Jrw   c                6    | j                  t                      y r   )acquire_on_behalf_of_nowaitr   r   s    rx   r'  zCapacityLimiter.acquire_nowait}  s    ((8rw   c                    || j                   v rt        d      | j                  s"t        | j                         | j                  k\  rt
        | j                   j                  |       y )NzEthis borrower is already holding one of this CapacityLimiter's tokens)r@  r   rB  rq  rA  rA   r+  r   rO  s     rx   rY  z+CapacityLimiter.acquire_on_behalf_of_nowait  sW    t&W  s4??3t7I7IIH%rw   c                P   K   | j                  t                      d {   S 7 wr   )acquire_on_behalf_ofr   r   s    rx   r%  zCapacityLimiter.acquire  s     ..|~>>>>s   &$&c                H  K   t         j                          d {    	 | j                  |       	 t         j                          d {    y 7 47 # t        $ r | j                           w xY w# t        $ r t        j                         }|| j                  |<   	 |j                          d {  7   Y y # t        $ rY | j                  j                  |d        |j                         r+| j                  j                  |       | j                           w xY ww xY wwr   )r  r  rY  r  r  r#  rA   r   rG   rB  r   r   rl  r@  r,  rW  rV  s      rx   r]  z$CapacityLimiter.acquire_on_behalf_of  s     44666	,,X6$??AAA# 	7" B    	MMOE).DX&jjl""    $$Xt4<<>OO++H5,,.	sn   D"AD"A1 A 	A
A D"A A..D"1,DB91B42B97D"9A"DDD"c                6    | j                  t                      y r   )release_on_behalf_ofr   r   s    rx   r#  zCapacityLimiter.release  s    !!,.1rw   c                    	 | j                   j                  |       | j	                          y # t        $ r t        d      d w xY w)Nz@this borrower isn't holding any of this CapacityLimiter's tokens)r@  r5  r-  r   rW  r[  s     rx   r`  z$CapacityLimiter.release_on_behalf_of  sK    	OO""8, 	  "  	R	s	   . Ac                    t        | j                  | j                  t        | j                        t        | j                              S r   )r4   rR  rE  tupler@  rq  rB  r   s    rx   r  zCapacityLimiter.statistics  s;    (  $//"  !	
 	
rw   N)rE  rY  r   rc   )rE  rY  r   r   re  rf  r   )rO  r"  r   r   )r   r4   )rp   rq   rr   rg  r#  r   r  r  rh  rE  ri  rR  rT  rW  r'  rY  r%  r]  r#  r`  r  rv   rw   rx   rE   rE   B  s    <I#), & %	
 
 " "    $ $ 9 99	&?.2#
rw   rE   _default_thread_limiterzRunVar[CapacityLimiter]c                  L    e Zd ZddZd	dZd
dZ	 	 	 	 	 	 	 	 ddZddZddZy)_SignalReceiverc                    || _         t               | _        t               | _        t        j                         | _        t               | _	        y r   )
_signalsr	   r   r   _signal_queuer   r   ru  r   _handled_signals)r   signalss     rx   r   z_SignalReceiver.__init__  s5    %'
-2W'.~~'7.1erw   c                    | j                   j                  |       | j                  j                         s| j                  j	                  d        y y r   )ri  r  ru  r   r   )r   r   s     rx   _deliverz_SignalReceiver._deliver  s=    !!&)||  "LL##D) #rw   c                    t        | j                        D ]D  }| j                  j                  || j                  |       | j
                  j                  |       F | S r   )r   rh  r   add_signal_handlerrm  rj  r+  )r   sigs     rx   r   z_SignalReceiver.__enter__  sO    t}}% 	+CJJ))#t}}cB!!%%c*	+ rw   c                \    | j                   D ]  }| j                  j                  |        y r   )rj  r   remove_signal_handler)r   r   r   r   rp  s        rx   r   z_SignalReceiver.__exit__  s+     (( 	2CJJ,,S1	2rw   c                    | S r   rv   r   s    rx   	__aiter__z_SignalReceiver.__aiter__  s    rw   c                   K   t         j                          d {    | j                  s-t        j                         | _        | j
                   d {    | j                  j                         S 7 W7  wr   )r  r  ri  r   r   ru  ro  r   s    rx   	__anext__z_SignalReceiver.__anext__  s\     '')))!!">>+DL,,!!))++ 	* s!   A6A28A6A4A64A6N)rk  ztuple[Signals, ...])r   r%   r   r   r   r   )r   rf  )r   r%   )	rp   rq   rr   r   rm  r   r   rt  rv  rv   rw   rx   rf  rf    sF    4*
2,2 &2 %	2
 
2,rw   rf  c                  (     e Zd Zd fdZddZ xZS )r,  c                
   t         j                  |      }|d }n|j                  }|j                         }|J d       t        |   t        |      ||j                         |       t        j                  |      | _
        y )Nz&created TaskInfo from a completed Task)r   r   rl  r  r  r   rU  get_nameweakrefrefr  )r   r   r2  rl  r   r  s        rx   r   zAsyncIOTaskInfo.__init__  ss    !%%d+
I",,I}}I!IID9dmmotD[[&
rw   c                "   | j                         x}sy|j                  s>t        |j                  t        j
                        r|j                  j                         ryt        j                  |      x}r|j                  x}r|j                  S y)NFT)r  rF  r
  rG  r   r   r   r   r   r   r>  )r   r   r2  r   s       rx   has_pending_cancellationz(AsyncIOTaskInfo.has_pending_cancellation  s~    

$$t''8  **,%))$//:/)666|6#:::rw   )r   r   rd  )rp   rq   rr   r   r}  r  r  s   @rx   r,  r,    s    
'rw   r,  c                      e Zd ZU ded<   dddd	 	 	 	 	 	 	 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	 	 	 	 	 	 ddZ	 	 	 	 	 	 ddZ	 	 	 	 	 	 ddZy)
TestRunnerzBMemoryObjectSendStream[tuple[Awaitable[Any], asyncio.Future[Any]]]_send_streamNF)r{   
use_uvloopr|   c                   |r6|4t         j                  dk7  rdd l}|j                  }ndd l}|j                  }t        ||      | _        g | _        d | _        y )Nwin32r   rz   )	r(  platformuvloopr   winlooprb   _runnerr  _runner_task)r   r{   r  r|   r  r  s         rx   r   zTestRunner.__init__	  sR     ,.||w&%44&55EE0215rw   c                    | j                   j                          | j                         j                  | j                         | S r   )r  r   r   set_exception_handler_exception_handlerr   s    rx   r   zTestRunner.__enter__(	  s1     --d.E.EFrw   c                >    | j                   j                  |||       y r   )r  r   r   s       rx   r   zTestRunner.__exit__-	  s     	h8rw   c                6    | j                   j                         S r   )r  r   r   s    rx   r   zTestRunner.get_loop5	  s    ||$$&&rw   c                L    	 t        j                          y# t        $ r Y yw xY wr=  )r   r	   r   r   s    rx   
is_runningzTestRunner.is_running8	  s(    	$$& 		s    	##c                    t        |j                  d      t              r| j                  j	                  |d          y |j                  |       y )Nr   )r
  r   r   r  r  default_exception_handler)r   r   r   s      rx   r  zTestRunner._exception_handler?	  s>     gkk+.	:##GK$89**73rw   c                    | j                   r6| j                   g c}| _         t        |      dk(  r|d   |rt        d|      y y )Nr   r   z6Multiple exceptions occurred in asynchronous callbacks)r  rq  rj   )r   rh   s     rx   _raise_async_exceptionsz"TestRunner._raise_async_exceptionsG	  sU    +/+;+;R(J(:!# m#(Lj  	 rw   c           	       K   ddl m} |5  | j                  5  |2 3 d {   \  }}	 | d {   }|j                         r(|j	                  |       :7 57 )# t
        $ r/}|j                         s |j                  |j                     d }~wt        $ r>}|j                         s|j                  |       t        |t        |f      s Y d }~d }~ww xY w6 	 d d d        n# 1 sw Y   nxY wd d d        y # 1 sw Y   y xY wwNr   )OutcomeException)_pytest.outcomesr  r  r   r   r   r   r   r  r   r
  r   )r   receive_streamr  r   r   retvalr  s          rx   _run_tests_and_fixturesz"TestRunner._run_tests_and_fixturesR	  s      	6 	2T.. 	2&4 2 2ldF2#'ZF "++-))&1!2'% !++-%sxx0$ !++-,,S1%cI7G+HI J	 '5	2 	2 	2 	2 	2 	2s   	DC9C$CA
CC$AA
AC$C$CA	C	"*B	C	4C	C$C	C$	C9$C-	)C90	D9D>Dc                 K   | j                   skt        t        t        t           t
        j                  f      d      \  | _        }| j                         j                  | j                  |            | _          ||i |}| j                         j                         }| j                  j                  ||f       | d {   S 7 wr  )r  rC   rc  r   r-   r   r   r  r   r   r  r   send_nowait)r   r  r   r  r  r   r   s          rx   _call_in_runner_taskzTestRunner._call_in_runner_taskm	  s        0Kingnn4511-D~ !% ; ;,,^<!D T$V$+/==?+H+H+J%%tVn5||s   C C	CC	c              #    K    |di |}| j                         j                  | j                  |j                  d             }| j	                          | 	 | j                         j                  | j                  |j                  d              | j                         j                  |j                                t        d      # t        $ r | j	                          Y y w xY ww)Nz$Async generator fixture did not stoprv   )r   r   r  asendr  r  r   StopAsyncIteration)r   fixture_funcr  asyncgenfixturevalues        rx   run_asyncgen_fixturezTestRunner.run_asyncgen_fixture	  s     
  )&)!%!C!C%%hnnd;"
 	$$&	GMMO..))(..$? MMO..x/@AEFF	 " 	+((*	+s*   AC)9C
 8C)
C&#C)%C&&C)c                    | j                         j                   | j                  |fi |      }| j                          |S r   )r   r   r  r  )r   r  r  r  s       rx   run_fixturezTestRunner.run_fixture	  sB    
 33%D%%l=f=
 	$$&rw   c                `   ddl m} 	 | j                         j                   | j                  |fi |       | j                          y # t
        $ r%}| j                  j                  |       Y d }~:d }~w|$ r  t        $ r | j                  | j                  j                         s| j                  j                          | j                  j                          	 | j                         j                  | j                         n# t        $ r Y nw xY wd | _	         # d | _	        w xY w w xY wr  )r  r  r   r   r  r   r  r  r  r  r   r   r  r   r   r  )r   	test_funcr  r  r  s        rx   run_testzTestRunner.run_test	  s    	6	MMO..))))>v>* 	$$&%  	)##C(( 	 	   ,T5F5F5K5K5M!!((*!!'')-MMO66t7H7HI%  )-D% )-D%	sN   0A	 		D-A22A+D-)DD	DDDDD-	D((D-)r{   r   r  rb  r|   r   r   r   r   r   r   rd  )r   r  r   dict[str, Any]r   r   r   )r  zOMemoryObjectReceiveStream[tuple[Awaitable[T_Retval], asyncio.Future[T_Retval]]]r   r   )r  z Callable[P, Awaitable[T_Retval]]r   zP.argsr  zP.kwargsr   r   )r  z,Callable[..., AsyncGenerator[T_Retval, Any]]r  r  r   zIterable[T_Retval])r  z,Callable[..., Coroutine[Any, Any, T_Retval]]r  r  r   r   )r  z'Callable[..., Coroutine[Any, Any, Any]]r  r  r   r   )rp   rq   rr   r  r   r   r   r   r  r  r  r  r  r  r  r  rv   rw   rx   r  r  	  sC   TT
 " ?C6 6 	6
 =6 
6*
9,9 &9 %	9
 
9'4-48F4	4	2
2
 
26. 	
  
(GBG G 
	G.	B	 	 
		'@'JX'	'rw   r  c                  0     e Zd ZdZd fdZd fdZ xZS )_ProcessStreamProtocolz
    A subprocess protocol that allows us to be notified of ``process_exited``

    asyncio's own ``Process.wait()`` only resolves once every pipe transport has
    disconnected so to get same semantics as on trio and uvloop we need this.
    c                ~    t         |   dt        j                                t        j                         | _        y )Nr  )limitr   )r  r   r   r	   rG   exitedr   r  s    rx   r   z_ProcessStreamProtocol.__init__	  s+    u7+C+C+EFmmorw   c                V    t         |           | j                  j                          y r   )r  process_exitedr  r   r  s    rx   r  z%_ProcessStreamProtocol.process_exited	  s     rw   r   )rp   rq   rr   rq  r   r  r  r  s   @rx   r  r  	  s    &
 rw   r  c                  L   e Zd Ze	 	 	 	 	 	 	 	 	 	 d4d       Zed5d       Zed6d       Zed7d       Zed8d       Zed8d       Z	ed8d       Z
ed9d       Zeej                  d	d
	 	 	 	 	 d:d       Zed6d       Zed;d       Zed<d       Zed=d       Zedd	d	 	 	 	 	 	 	 d>d       Zed?d       Ze	 	 d@	 	 	 	 	 	 	 	 	 dAd       Zed8d       Ze	 	 	 	 	 	 	 	 dBd       Ze	 	 	 	 	 	 	 	 dCd       Ze	 	 	 	 	 	 	 	 	 	 	 	 dDd       ZedEd       Ze	 dF	 	 	 	 	 	 	 dGd       ZedHd       ZedId       ZedId       Ze	 	 	 	 	 	 	 	 	 	 dJd       Ze	 	 	 	 	 	 dKd       Z ed d d d d!	 	 	 	 	 	 	 	 	 	 	 	 	 dLd"       Z!e	 dM	 	 	 	 	 dNd#       Z"edOd$       Z#edOd%       Z$edOd&       Z%edId'       Z&edPd(       Z'edQd)       Z(edRd*       Z)edSd+       Z*edTd,       Z+e	 	 	 	 dUd-       Z,edVd.       Z-e	 	 	 	 dWd/       Z.edXd0       Z/edYd1       Z0ed8d2       Z1edZd3       Z2y)[r  c                z   t              d	fd       }|j                  dd       }|j                  dd       }|F|j                  dd      r4t        j                  dk7  rdd l}|j
                  }ndd l}	|	j
                  }t        ||      5 }
|
j                   |             cd d d        S # 1 sw Y   y xY w)
Nc                    K   t        t        j                  t                     } | j	                  t                     t        d d       t        | <   	    d {   t        | = S 7 # t        | = w xY wwr   )r1   r   r   r   set_namerW   r.  r   )r   r   r  s    rx   wrapperz#AsyncIOBackend.run.<locals>.wrapper	  sa     ln5DMM+D12!*4!6L'!4[( & ) &s0   AA6A* A(A*  A6(A* *	A33A6r{   r|   r  Fr  r   rz   )r   r   )	r   r   r(  r  r  r   r  rb   r   )r%  r  r   r  optionsr  r{   r|   r  r  runners    ``        rx   r   zAsyncIOBackend.run	  s     
t	' 
	' GT*{{>48GKKe$D||w&%44&55%l; 	)v::gi(	) 	) 	)s   B11B:c                    t               S r   )r	   r  s    rx   current_tokenzAsyncIOBackend.current_token	  s    !!rw   c                2    t               j                         S r   )r	   rC  r  s    rx   r  zAsyncIOBackend.current_time	  s    !&&((rw   c                    t         S r   )r   r  s    rx   cancelled_exception_classz(AsyncIOBackend.cancelled_exception_class	  s    rw   c                6   K   t        d       d {    y 7 wr5  r
   r  s    rx   r  zAsyncIOBackend.checkpoint
  s     Ah   c                   K   t               }|y 	 t        |   j                  }|r=|j                  rt        d       d {    n|j                  ry |j                  }|r<y y # t        $ r Y y w xY w7 2wr5  )r   r   r   r-  rH  r
   r  r   )r%  r   r   s      rx   r  z&AsyncIOBackend.checkpoint_if_cancelled
  sx     ~<	'-::L ))Ah$$+99   		
 s9   A5A$ A5 A3 A5"A5$	A0-A5/A00A5c                x   K   t        d      5  t        d       d {    d d d        y 7 # 1 sw Y   y xY ww)NTr  r   )rO   r
   r  s    rx   r  z)AsyncIOBackend.cancel_shielded_checkpoint
  s6     % 	(NN	 		 	s    :.,.	:.7:c                6   K   t        |       d {    y 7 wr   r  )r%  delays     rx   r
   zAsyncIOBackend.sleep
  s     Elr  Fr  c                   t        ||      S )Nr  rN   r$  s      rx   create_cancel_scopez"AsyncIOBackend.create_cancel_scope"
  s     HV<<rw   c                p   t               x}t        j                  S 	 t        |   j                  }t        j                  }|rTt        ||j                        }|j                  rt        j                   }	 |S |j                  r	 |S |j                  }|rT|S # t
        $ r t        j                  cY S w xY wr   )r   rA  rB  r   r   r-  minr  r  r  r   )r%  r   r   r  s       rx   current_effective_deadlinez)AsyncIOBackend.current_effective_deadline(
  s     N"D+88O	'-::L 888\%:%:;H** HH9  $$   ,99    	88O	s   B B54B5c                    t               S r   )r  r  s    rx   create_task_groupz AsyncIOBackend.create_task_group?
  s
    {rw   c                    t               S r   rF   r  s    rx   create_eventzAsyncIOBackend.create_eventC
  s	    wrw   c                   t        |      S )Nr  rH   r  s     rx   create_lockzAsyncIOBackend.create_lockG
  s    ..rw   Nr1  c                   t        |||      S )Nr1  rL   r4  s       rx   create_semaphorezAsyncIOBackend.create_semaphoreK
  s     ),WWrw   c                    t        |      S r   rD   rD  s     rx   create_capacity_limiterz&AsyncIOBackend.create_capacity_limiterU
  s    |,,rw   c           	       K   | j                          d {    	 t        j                         }t        j                         }|xs | j                         4 d {    t        |       5 }t        j                  t                  }t               }	|sTt        |	||      }
|
j                          |j                  |
       |	j!                  |
j"                  t%                      n|j'                         }
| j)                         }|rl||d   j*                  z
  t        j,                  k  rnH|j/                         }|j0                  j3                  |j"                         |j#                          |rlt5               }|j7                  t8        d        |s|j:                  |}n|j:                  }|
j<                  j?                  |||||f       | d {   cd d d        cd d d       d {    S 7 # t        $ rB t               }t               }t        j                  |       t        j                  |       Y w xY w7 7 r7 [# 1 sw Y   nxY wd d d       d {  7   y # 1 d {  7  sw Y   y xY ww)Nr  r   r   ) r  r  r   r  LookupErrorr   r   current_default_thread_limiterrO   r   r   r   r  r  r   r+  r   r  r   r   r  r  r  ro  r  remove_done_callbackr   r   r:   r   r  r  )r%  r  r   abandon_on_cancellimiterr  r  rN  r   r  workernowexpired_workerr   worker_scopes                  rx   run_sync_in_worker_threadz(AsyncIOBackend.run_sync_in_worker_threadY
  s/     nn	-3779L)--/G Bc@@B $	$ $	$(9$9: #$e 13*,	#))WlKFLLNKK'//WY/O)--/F **,C&,q/"<"<<*889 ")5)=)=)?&00EE*// '++- ' '.5t<$(;(;(C#(L#(#6#6L''$fl(ST#|G#$ #$$	$ $	$ $	$ 	  	- 7LeG$((6##G,		-$	$H $I$	$#$ #$$	$ $	$ $	$ $	$ $	$s   JG9J(G< JI
J I/.D	I8A"III	I/'J3I4J<AIJIJIJI	I/J(I+)J/J5I86J=Jc                    t         j                  }|A|j                  rt        dt	        |      d      |j
                  ry |j                  }|@y y )Nr	  rT  )r;   r  rH  r   rU  r  r   )r%  rN  s     rx   check_cancelledzAsyncIOBackend.check_cancelled
  sR    $0$E$E""$'B2e9Q-%PQQ||''E rw   c                d   dfd}t        d|xs t        j                  j                        }|j	                         rt
        t               }|j                  t        d       t        t        dd       |j                  t        j                   |       |      }|j                         S )Nc                   K   d} Pt        t        j                  t                     }t	        d       t
        |<   j                  j                  |       	    d {   j                  j                         S S 7 "# t        $ r.}t        j                  j                  t        |            d d }~ww xY w# j                  j                         w w xY wwr  )r1   r   r   r   r.  r   r  r+  r,  r   
concurrentfuturesr  )__tracebackhide__r   r  r   r  rN  s      rx   task_wrapperz:AsyncIOBackend.run_async_from_thread.<locals>.task_wrapper
  s      $ GLL,.9%.tU%;T"  &/!4[( $LL((. %	 )! L ((77CAtKL $LL((. %sH   AC#B !B"B %C#B 	B=)B88B==C    C  C#r   r   r  )r   )r   r   )r1   r;   r  native_tokenr  r@   r   r   r:   r   r   run_coroutine_threadsafer  )	r%  r  r   tokenr  r   r   r  rN  s	    ``     @rx   run_async_from_threadz$AsyncIOBackend.run_async_from_thread
  s    	/ !Q,*D*D*Q*Q
 >>"".-y9&<dC-4[[,,ln4 .9 .
 xxzrw   c                   t              dfd       }t        d|xs t        j                  j                        }|j                         rt        t               |j                  |       j                         S )Nc                     	 t        d       j                           y # t        $ r,} j                  |        t	        | t
              s Y d } ~ y d } ~ ww xY w)Nr   )r:   r   r  r   r
  r   )r  r   r  r  s    rx   r  z4AsyncIOBackend.run_sync_from_thread.<locals>.wrapper
  sN    ))4T4[)  $!#y1 2s   # 	A"AAr   r   )
r   r1   r;   r  r  r  r@   r   r   r  )r%  r  r   r  r  r   r  s    ``   @rx   run_sync_from_threadz#AsyncIOBackend.run_sync_from_thread
  sp     
t	 
	 !Q,*D*D*Q*Q
 >>""17!!'*xxzrw   c                 K   | j                          d {    t        |t              rt        j                  |      }t        j                         }t        |t        t        f      r( |j                  t        |f|||d| d {   \  }}n) |j                  t        g||||d| d {   \  }}t
        j                  j                  |||      }	|	j                  rt        |	j                        nd }
|	j                   rt#        |	j                         nd }|	j$                  rt#        |	j$                        nd }t        |	|
|||j&                  |      S 7 I7 7 w)N)r  r  r  )r  r
  r#   osfspathr   r	   r  r  subprocess_shellr  subprocess_exec
subprocessr  r  r  r  r  r  r  )r%  commandr  r  r  r  r   r9  rc  r)  stdin_streamstdout_streamstderr_streams                rx   open_processzAsyncIOBackend.open_process
  se     nngx(ii(G
 '')gU|,(=(=(=&) ) ) #Ix )=(<(<&)) ) ) #Ix $$,,Y$G=D]]*7==9PT?F~~+GNN;SW?F~~+GNN;SWOO
 	
? 	##s5   E&EA2E&	E"
)E&3E$4B,E&"E&$E&c                ~    t        t        |      d       t               j                  t	        t
        |             y )Nz AnyIO process pool shutdown taskr  )r   r,  r  r   r   r*  )r%  r  s     rx   #setup_process_pool_exit_at_shutdownz2AsyncIOBackend.setup_process_pool_exit_at_shutdown  s3    *733	
 	**;WE	
rw   c           	        K   t        t        t        j                  t        f   t               j                  t        |||       d {         \  }}|j                          t        ||      S 7 'w)N)
local_addr)	r1   rc  r   r6  r.  r	   create_connectionrn  rZ  )r%  hostportlocal_addressr9  rc  s         rx   connect_tcpzAsyncIOBackend.connect_tcp  sn      #'##^34"$66d} 7  
	8 	!Ix00s   AA2A0
	(A2c                  K   | j                          d {    t               t        j                  t        j                        j	                  d       	 	 j                  |       t              S 7 `# t        $ rT t        j                         }j                  |j                  d        |j                  fd       | d {  7   Y nt        $ r j                           w xY ww)NFc                &    j                        S r   r  r  r   r  s    rx   r   z-AsyncIOBackend.connect_unix.<locals>.<lambda>3  s    d.@.@.L rw   )r  r	   rf  AF_UNIXr  connectr  r  r   r   r  r   r   r  r   )r%  pathr  r   r  s      @@rx   connect_unixzAsyncIOBackend.connect_unix'  s     nn!]]6>>2
u%4""4( (
33! 	 # $+NN$4
ALL$?##$LM    " sA   C5A9AC5A; .C5;AC1CC1C5C11C5c                    t        |      S r   )r  r%  socks     rx   create_tcp_listenerz"AsyncIOBackend.create_tcp_listener;  s     &&rw   c                    t        |      S r   )r  r  s     rx   create_unix_listenerz#AsyncIOBackend.create_unix_listener?  s    !$''rw   c                   K   t               j                  t        ||||       d {   \  }}|j                  r|j	                          |j                  |st        ||      S t        ||      S 7 Iw)N)r  remote_addrfamily
reuse_port)r	   create_datagram_endpointrK  r   r   r  r  )r%  r  r  remote_addressr  r9  rc  s          rx   create_udp_socketz AsyncIOBackend.create_udp_socketC  s}      %5$6$O$O$&! %P %
 
	8 OO$$$Y11%i::
s   &A4A2A
A4c                  K   | j                          d {    t               |r	 	 j                  |       t              S t              S 7 9# t        $ rT t        j                         }j                  |j                  d        |j                  fd       | d {  7   Y nt        $ r j                           w xY ww)Nc                &    j                        S r   r  r  s    rx   r   z<AsyncIOBackend.create_unix_datagram_socket.<locals>.<lambda>i  s    $2D2DZ2P rw   )r  r	   r  r  r  r   r   r  r   r   r  r   r  )r%  r  remote_pathr  r   s    `  @rx   create_unix_datagram_socketz*AsyncIOBackend.create_unix_datagram_socket[  s      nn!C&&{3 7zBB%j11% 	 ' (/(8AOOJdC''(PQGG$ $$& s>   CACA CAC
(B+)C
.C0C

Cr   r  r  protoflagsc               \   K   t               j                  ||||||       d {   S 7 w)Nr  )r	   getaddrinfo)r%  r  r   r  r  r  r  s          rx   r   zAsyncIOBackend.getaddrinfos  s:     & &'33$vDU 4 
 
 	
 
s   #,*,c                R   K   t               j                  ||       d {   S 7 wr   )r	   getnameinfo)r%  sockaddrr  s      rx   r"  zAsyncIOBackend.getnameinfo  s$      &'33HeDDDDs   '%'c                  	
K   	 t         j                         	t	        |t
              r|n|j                         	j                        rt        d      t               }|j                         d	
fd}	 |j                  |       |j                  
	<   	  d {   }	 	=  
       |st         y # t        $ r i 	t         j                  	       Y w xY w# t        $ r. ddlm}  |       }|j                  |       |j                  
Y w xY w7 y# t        $ r Y vw xY w# 	 	=  
       w # t        $ r Y w w xY wxY ww)Nr]  c                     	  =          	 j                  d       y # t         $ r Y w xY w# t        j                  $ r Y y w xY wr  r-  r   r   r  )r  r$  r
  r  s   rx   r  z(AsyncIOBackend.wait_readable.<locals>.cb  sW    "O b!t$   ,,    ! 0 	--AAr   get_selectorr   )r  r   r  r   r
  r~  r  r=   r	   r   r  r  r%  $anyio._core._asyncio_selector_threadr)  r-  r>   )r%  objr   r  r)  selectorsuccessr  r$  r
  r  s          @@@@rx   wait_readablezAsyncIOBackend.wait_readable  s^    	*&**,K
 sC(Scjjl??2#N33!$($6$6$8	 			/OOB# !..MB	"iG"O b!%% ]  	*K[)	*4 # 	3I#~HB'$22M	3    "O b!     EC A!E>C' E"D2 'D!(D2 -D# 0E C$!E#C$$E'4DEDE!D2 #	D/,E.D//E2E4E 7	E 	E	EEEEc                  	
K   	 t         j                         
t	        |t
              r|n|j                         
j                        rt        d      t               }|j                         d	
fd}	 |j                  |       |j                  	
<   	  d {   }	 
=  	       |st         y # t        $ r i 
t         j                  
       Y w xY w# t        $ r. ddlm}  |       }|j                  |       |j                  	Y w xY w7 y# t        $ r Y vw xY w# 	 
=  	       w # t        $ r Y w w xY wxY ww)Nr^  c                     	  =          	 j                  d       y # t         $ r Y w xY w# t        j                  $ r Y y w xY wr  r&  )r  r$  r  r  s   rx   r  z(AsyncIOBackend.wait_writable.<locals>.cb  sX    " $ b!t$   ,, 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  s          @@@@rx   wait_writablezAsyncIOBackend.wait_writable  sc    	,(,,.L
 sC(ScjjlB#L11!$($6$6$8	 			/OOB# !..MR	"iG" $ b!%% ]  	,Ll+	,4 # 	3I#~HB'$22M	3    " $ b!  r/  c                   t        |t              r|n|j                         }t               }	 t        j                         }	 |j                  |      }	 |j                  d       	 |j                  |       	 t         j                         }	 |j                  |      }	 |j                  d       	 |j#                  |       y # t        j                  $ r Y sw xY w# t        $ r ddlm}  |       j                  |       Y w xY w# t        $ r Y w xY w# t        $ r Y w xY w# t        j                  $ r Y w xY w# t        $ r ddlm}  |       j#                  |       Y y w xY w# t        $ r Y y w xY w# t        $ r Y y w xY w)NFr   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
  s           rx   notify_closingzAsyncIOBackend.notify_closing  s|   sC(Scjjl!	5(,,.L5"&&r*NN5)5&&r*	5&**,K5!oob)NN5)5&&r*5 00 
 + 5Q N0045    		@ 00 
 + 5Q N0045    		s   D D C 'C 9E9 E*  D& 2D? CC%DD	DD	D#"D#&D<;D<?%E'&E'*	E65E69	FFc                   K   t        t        d      r(|j                  t        j                  k(  rt	        |      S t        |      S w)Nr  )r   rf  r  r  r  r  r  s     rx   wrap_listener_socketz#AsyncIOBackend.wrap_listener_socket+  s5     69%$++*G%d++ &&s   AAc                z   K   t               j                  t        |       d {   \  }}t        ||      S 7 wN)r  )r	   r  r.  rZ  r%  r  r9  rc  s       rx   wrap_stream_socketz!AsyncIOBackend.wrap_stream_socket2  sB     $4$6$H$H %I %
 
	8 Ix00
   #;9;c                    K   t        |      S wr   )r  r  s     rx   wrap_unix_stream_socketz&AsyncIOBackend.wrap_unix_stream_socket9  s     %%   c                z   K   t               j                  t        |       d {   \  }}t        ||      S 7 wr8  )r	   r  rK  r  r9  s       rx   wrap_udp_socketzAsyncIOBackend.wrap_udp_socket=  sB     $4$6$O$O4 %P %
 
	8 H--
r;  c                z   K   t               j                  t        |       d {   \  }}t        ||      S 7 wr8  )r	   r  rK  r  r9  s       rx   wrap_connected_udp_socketz(AsyncIOBackend.wrap_connected_udp_socketD  sB     $4$6$O$O4 %P %
 
	8 ")X66
r;  c                    K   t        |      S wr   )r  r  s     rx   wrap_unix_datagram_socketz(AsyncIOBackend.wrap_unix_datagram_socketK  s     !$''r>  c                    K   t        |      S wr   )r  r  s     rx   #wrap_connected_unix_datagram_socketz2AsyncIOBackend.wrap_connected_unix_datagram_socketO  s      +400r>  c                    	 t         j                         S # t        $ r% t        d      }t         j	                  |       |cY S w xY w)N(   )rd  r   r  rE   r   )r%  r  s     rx   r  z-AsyncIOBackend.current_default_thread_limiterU  sB    	*..00 	%b)G#''0N	s    +AAc                    t        |      S r   )rf  )r%  rk  s     rx   open_signal_receiverz#AsyncIOBackend.open_signal_receiver^  s     w''rw   c                (    t        t                     S r   )r,  r   r  s    rx   get_current_taskzAsyncIOBackend.get_current_taskd  s    |~..rw   c                p    t               D cg c]  }|j                         rt        |        c}S c c}w r   )r   r   r,  )r%  r   s     rx   get_running_tasksz AsyncIOBackend.get_running_tasksh  s%    2;+Q$TYY[%QQQs   33c                   K   | j                          d {    t               }	 t               D ]:  }||u r|j                  }||j	                         s't        d       d {     n y I7 X7 w)Ng?)r  r   r   rG  r   r
   )r%  	this_taskr   rM  s       rx   wait_all_tasks_blockedz%AsyncIOBackend.wait_all_tasks_blockedl  sy     nn N	! 	9$))>V[[]*$$	   	 %s'   A3A/?A3A3%A1&
A31A3c                    t        di |S )Nrv   )r  )r%  r  s     rx   create_test_runnerz!AsyncIOBackend.create_test_runner|  s    $G$$rw   )
r  z1Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]]r   tuple[Unpack[PosArgsT]]r  r  r  r  r   r   )r   r"  re  )r   ztype[BaseException]r   )r  rY  r   r   )r  rY  r  rb  r   rO   )r   zabc.TaskGroup)r   	BaseEvent)r  rb  r   BaseLock)r5  r~  r2  ro  r  rb  r   BaseSemaphore)rE  rY  r   BaseCapacityLimiter)FN)
r  &Callable[[Unpack[PosArgsT]], T_Retval]r   rT  r  rb  r  zBaseCapacityLimiter | Noner   r   )r  r  r   rT  r  r"  r   r   )r  rY  r   rT  r  r"  r   r   )r  z)StrOrBytesPath | Sequence[StrOrBytesPath]r  int | IO[Any] | Noner  rZ  r  rZ  r  r-   r   r  r  zset[abc.Process]r   r   r   )r  r  r   r~  r  IPSockAddrType | Noner   r  )r	  zstr | bytesr   zabc.UNIXSocketStream)r  r~  r   rS   )
r  r&   r  r\  r  r\  r  rb  r   zUDPSocket | ConnectedUDPSocket)r  r~  r  zstr | bytes | Noner   z8abc.UNIXDatagramSocket | abc.ConnectedUNIXDatagramSocket)r  zbytes | str | Noner   zstr | int | Noner  zint | AddressFamilyr  zint | SocketKindr  r~  r  r~  r   zuSequence[tuple[AddressFamily, SocketKind, int, str, tuple[str, int] | tuple[str, int, int, int] | tuple[int, bytes]]])r   )r#  rR   r  r~  r   ztuple[str, str])r+  r[   r   r   )r  r~  r   rZ  )r  r~  r   r  )r  r~  r   r  )r  r~  r   r  )r  r~  r   r  )r  r~  r   r  )r   rE   )rk  r%   r   z.AbstractContextManager[AsyncIterator[Signals]])r   r7   )r   zSequence[TaskInfo])r  r  r   r  )3rp   rq   rr   classmethodr   r  r  r  r  r  r  r
   rA  rB  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r   r"  r.  r2  r4  r6  r:  r=  r@  rB  rD  rF  r  rJ  rL  rN  rQ  rS  rv   rw   rx   r  r  	  s   )?) &) 	)
  ) 
) )B " " ) )     : :$     "&((5==48=	= =
  ,     / / 
 !%"XX 	X
 X 
X X - - 
 #(.28$48$ &8$  	8$
 ,8$ 
8$ 8$t 	( 	(  E  &  	 
 
   D 4 & 	
 
 4 /
:/
 $	/

 %/
 %/
 /
 
/
 /
b 
 
 JN
1
1!
12G
1	
1 
1 4 4& ' ' ( ( ;; -; .	;
 ; 
(; ;. 2&25G2	A2 2.  '(!"
 
 

 $
 
 
 


 
, 45E%E.1E	E E
 2& 2&h 2& 2&h .5 .5` ' ' 1 1 & & . . 7 7 ( ( 1 1	$1 1
   ((	7( (
 / / R R   % %rw   r  )r   r   r   r   )r   r   )r   r   r   rb  )r  r   r   rb  )r  zset[Process]r  r"  r   r   r[  )
__future__r   r  r   concurrent.futuresr  rA  r  rf  r(  r   rz  r   r   r   r   r   r	   r
   asyncio.base_eventsr   collectionsr   r   collections.abcr   r   r   r   r   r   r   r   r   
contextlibr   r   r   r   r   dataclassesr   r   	functoolsr   r   inspectr   r    r!   ior"   r#   r  r$   r   r%   r&   r'   r(   typesr)   r*   typingr+   r,   r-   r.   r/   r0   r1   r2    r4   r5   r6   r7   r8   _core._eventloopr9   r:   r;   _core._exceptionsr<   r=   r>   r?   r@   rA   _core._socketsrB   _core._streamsrC   _core._synchronizationrE   rX  rG   rU  rI   rV  rJ   rK   rM   rW  _core._tasksrO   BaseCancelScoperP   rQ   rR   rS   rT   rU   
abc._tasksrV   rW   rX   lowlevelrY   rZ   	_typeshedr[   abc._eventloopr\   streams.memoryr]   r^   r"  r)  rb   rc   rd   re   enumrf   rg   rh   ri   exceptiongrouprj   typing_extensionsEnumrl   r   r   r   r   r   r   r   r   r  r  r  r  r.  r   
TaskStatusrs  eager_task_factoryr  r  r  rc  r  _Retval_Queue_Typer  r  r  ByteReceiveStreamr  ByteSendStreamr  r  r*  r,  Protocolr.  rK  rZ  r  r  r  r  r  r  r  r  r  r  rd  rf  r,  r  r  SubprocessStreamProtocolr  r  backend_classrv   rw   rx   <module>r     s   "     	  
     7 *	 	 	 & 7 - ( $ 
     ,  )   &  
  3 8 8 5 @ 9 %  N M (,/RRw11==1<< 
~& ~&@,, :v&:T2
#cN/5l/C
, C%PE&N7/ N7l

) 
) <M;N8 N81 8< w070J0J0S0SoS#{# {#D 8d?MD,@@A R6 Rj 9?9 5  288M1N . N e*#// * *$ e*#,, * *< eCckk C CL<<"(<	<2#4#W%% #Lw// DU$3## U$p+3 +3\t;(<(< t;n9!** 9!x"!++ "!J/. /.d1-// 1-h!#*@*@ !H!/33R3R !H 9?}8M5 M9?9O6 O:I :2QL8 QLhU7 U7pv
) v
r 4::S3T 0 T&, &,\h >n' n'bW//HH $k
%\ k
%\ rw   