
    RPf0@                      U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dlm
Z
mZmZmZmZmZmZ d dlmZ d dlmZmZ d dlmZmZmZ d dlmZ d dlmZ d d	lmZmZ d d
l m!Z! d dl"m#Z#m$Z$ d dl%m&Z&m'Z'm(Z(m)Z) d dl*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1 d dlm2Z2m3Z3 d dl	m4Z4 d dl5m6Z6 d dl7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZE d dlFmGZG d dlHZHddlImJZJmKZKmLZLmMZM ddlNmOZOmPZP ddlQmRZRmSZSmTZTmUZUmVZV ddlWmXZX ddlYmZZZ ddl[m\Z] ddl[m^Z_ ddl[m`Z` ddlambZc dd lMmdZdmeZemfZfmgZgmhZh dd!limjZj dd"lkmlZlmmZm ej                  d#k\  rd d$l7moZo nd d$lpmoZo ej                  d%k\  rd d&lmqZq d d'l7mrZrmsZs nMd dlZd dltZtd dl0Z0d d(lmuZumvZvmwZwmxZx d d)lymzZz d d'lpmrZrmsZs  G d* d+etj                        Z| G d, d-      Zqdd.Z}dd/Z~ eDd0      Z eDd1d23      Z erd4      Z eod5      Z ejd6      Zd7ed6<   dd8Zdd9Z eG       Zd:ed;<   dd<Z G d= d>ec      Zb G d? d@      Z eG       Z G dA dBeMj                        Z	 	 	 	 ddCZ G dD dEeMj                        ZeCeAe   eAe   f   Z G dF dGe4      Z ejdH      ZdIedH<    ejdJ      ZdKedJ<    G dL dMeMj(                        Z e!dNO       G dP dQeMj*                               Z e!dNO       G dR dSeMj.                               Z e!dNO       G dT dUeMj2                               Z	 	 	 	 	 	 ddVZddWZ G dX dYej8                        Z G dZ d[ej<                        Z G d\ d]eMj>                        Z G d^ d_      Z G d` daeeMjB                        Z G db dceMj                        Z G dd deeMj                        Z G df dgeMjH                        Z G dh dieMjJ                        Z G dj dkeeMjL                        Z G dl dmeeMjN                        Z ejdn      Zdoedp<    ejdq      Zdoedr<    G ds dte_      Z^ G du dve]      Z\ ejdw      Zdxedw<    G dy dz      Zdd{Z G d| d}eMjZ                        Z G d~ ded      ZeZy)    )annotationsN)AbstractEventLoopCancelledError	all_taskscreate_taskcurrent_taskget_running_loopsleep)_run_until_complete_cb)OrderedDictdeque)AsyncIterator	GeneratorIterable)Future)suppress)Contextcopy_context)	dataclass)partialwraps)CORO_RUNNINGCORO_SUSPENDEDgetcoroutinestateiscoroutine)IOBase)PathLike)Queue)Signals)AddressFamily
SocketKind)Thread)TracebackType)IOAnyAsyncGenerator	AwaitableCallable
CollectionContextManager	CoroutineMappingOptionalSequenceTupleTypeVarcast)WeakKeyDictionary   )CapacityLimiterStatisticsEventStatisticsTaskInfoabc)claim_worker_threadthreadlocals)BrokenResourceErrorBusyResourceErrorClosedResourceErrorEndOfStream
WouldBlock)convert_ipv6_sockaddr)create_memory_object_streamCapacityLimiterEvent)ResourceGuardCancelScope)AsyncBackendIPSockAddrTypeSocketListenerUDPPacketTypeUNIXDatagramPacketType)RunVar)MemoryObjectReceiveStreamMemoryObjectSendStream)   
   )	ParamSpecrP      )Runner)TypeVarTupleUnpack)
coroutinesevents
exceptionstasks)BaseExceptionGroupc                      e Zd ZdZdZdZy)_StatecreatedinitializedclosedN)__name__
__module____qualname__CREATEDINITIALIZEDCLOSED     R/var/www/fastapitest/venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.pyr^   r^   f   s    #ri   r^   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)rU   Ndebugloop_factoryc                   t         j                  | _        || _        || _        d | _        d | _        d| _        d| _        y )Nr   F)	r^   re   _state_debug_loop_factory_loop_context_interrupt_count_set_event_loop)selfrm   rn   s      rj   __init__zRunner.__init__m   s<     !..DKDK!-D37DJ DM$%D!#(D ri   c                &    | j                          | S N)
_lazy_initrw   s    rj   	__enter__zRunner.__enter__{   s    OOKri   c                $    | j                          y rz   )closerw   exc_typeexc_valexc_tbs       rj   __exit__zRunner.__exit__   s     JJLri   c                v   | j                   t        j                  ury	 | j                  }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)rp   r^   rf   rs   _cancel_all_tasksrun_until_completeshutdown_asyncgenshasattrr   _shutdown_default_executorrv   rY   set_event_loopr   rg   rw   loops     rj   r   zRunner.close   s    {{&"4"44,zz!$'''(?(?(AB4!<=++D,J,J,LM++,Ft,LM''))$/

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

!
$mms   A<C) )AD8c                :    | j                          | j                  S )zReturn embedded event loop.)r{   rs   r|   s    rj   get_loopzRunner.get_loop   s    OO::ri   )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.                  $ r4 | j(                  dkD  r#t1        |dd      }| |       dk(  r
t3                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)rX   r   
ValueErrorrY   _get_running_loopRuntimeErrorr{   rt   runrs   r   	threadingcurrent_threadmain_threadsignal	getsignalSIGINTdefault_int_handlerr   
_on_sigintru   r   rZ   r   getattrKeyboardInterrupt)rw   coror   tasksigint_handlerr   s         rj   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/11 #.((7>IMM&--1K1KL J /s,   :$F )F0 F-,F-0AG77G: :A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)rp   r^   rg   r   rf   rr   rY   new_event_looprs   rv   r   rq   	set_debugcontextvarsr   rt   r|   s    rj   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 ,,DKri   c                    | xj                   dz  c_         | j                   dk(  r=|j                         s-|j                          | j                  j	                  d        y t               )N   c                      y rz   rh   rh   ri   rj   <lambda>z#Runner._on_sigint.<locals>.<lambda>   s    ri   )ru   donecancelrs   call_soon_threadsafer   )rw   signumframer   s       rj   r   zRunner._on_sigint   sT    !!Q&!$$))..2B  "

//=#%%ri   )rm   bool | Nonern   &Callable[[], AbstractEventLoop] | None)returnrU   )r   type[BaseException]r   BaseExceptionr   r#   r   Noner   r   r   r   )r   zCoroutine[T_Retval]r   T_Retval)r   asyncio.Taskr   r   )rb   rc   rd   rx   r}   r   r   r   r   r{   r   rh   ri   rj   rU   rU   k   su    
 "&CG		) 	) A		)		)	 #	 "		
 		,&	
 =A .	M`	-&	&ri   rU   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   )r[   r   r   r   gather	cancelledr   call_exception_handler)r   	to_cancelr   s      rj   r   r      s    OOD)	 	DKKM	 	i P4 PQ 
	D~~~~+++#V%)^^%5 $	
	ri   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     rj   _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   `   rj   r   r     su     	D *.&!!)##%!!VIF	LLKKM KKMs0   AB	A4 A2A4 !B	2A4 4BB	r   T_contraT)contravariantPosArgsTP
_root_taskzRunVar[asyncio.Task | None]c                    t         j                  d       } | | j                         s| S t               D ]x  }|j                  s|j                         r!|j                  D cg c]  \  }}|	 }}}|D ]5  }|t
        u st        |dd       dk(  st         j                  |       |c c S  z t        t        j                  t                     }t        j                  |      }|r[|j                  }|r'|j                  |j                  }|r|j                  |$t        t        j                  |j                        S |S c c}}w )Nrc   zuvloop.loop)r   getr   r   
_callbacksr   r   setr1   asyncioTaskr   _task_statescancel_scope_parent_scope
_host_task)	root_taskr   cbr   	callbacksstater   s          rj   find_root_taskr     s!   t$IY^^%5  	 ??499;/3?G?I?  00r<6-GNN4(K 	  ln-DT"E))|99E'55L |99E #l&=&=>>K) @s   $Ec                    t        | dd       }t        | dd       }dj                  ||fD cg c]  }|s|	 c}      S c c}w )Nrc   rd   .)r   r   )funcmodulequalnamexs       rj   get_callable_namer   >  sB    T<.Ft^T2H88 281aQ8998s   ??z1WeakKeyDictionary[asyncio.AbstractEventLoop, Any]	_run_varsc                    	 t        | j                               t        t        fv S # t        $ r t        d|  d      dw xY w)zBReturn ``True`` if the task has been started and has not finished.zCannot determine if task z has started or notN)r   get_coror   r   AttributeErrorr   )r   s    rj   _task_startedr   K  sM    Y 1lN5SSS Y3D69LMNTXXYs	   $' Ac                  @   e Zd Zej                  dd	 	 	 	 	 ddZej                  dfddZddZ	 	 	 	 	 	 	 	 ddZddZ	ddZ
dd	Zdd
ZddZddZedd       Zej"                  dd       Zedd       Zedd       Zedd       Zej"                  dd       Zy)rG   Fdeadlineshieldc               ,    t         j                  |       S rz   object__new__clsr   r   s      rj   r   zCancelScope.__new__Z  s     ~~c""ri   c                    || _         || _        d | _        t               | _        d| _        d| _        d| _        d | _        d | _	        t               | _
        d | _        d| _        d | _        y )NFr   )	_deadline_shieldr   r   _child_scopes_cancel_called_cancelled_caught_active_timeout_handle_cancel_handle_tasksr   _cancel_calls_cancelling)rw   r   r   s      rj   rx   zCancelScope.__init___  si    !15/2u#!&;?59),/3"#'+ri   c                   | j                   rt        d      t        t        j                  t                     x| _        }| j                  j                  |       	 t        |   }|j                  | _        | |_
        | j                  K| j                  j                  j                  |        | j                  j                  j                  |       	 | j!                          d| _         t"        j$                  dk\  r| j                  j'                         | _        | j*                  r| j-                  |        | S # t        $ r t        d |       }|t        |<   Y w xY w)Nz;Each CancelScope may only be used for a single 'with' blockTrS   )r  r   r1   r   r   r   r   r
  addr   r   r   r  removeKeyError	TaskState_timeoutsysversion_info
cancellingr  r  _deliver_cancellation)rw   	host_task
task_states      rj   r}   zCancelScope.__enter__n  s#   <<M  '+7<<&HH)	"
	<%i0J
 ",!8!8D&*J#!!-""0044T:""))00;w&#99;D &&t,'  	1"4.J&0L#	1s   	D= =EE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^|\t!        |      D ]B  }t#        |t$              s| j'                  |      | _        | j(                  s7 | j(                  S  | j(                  S y )NzThis cancel scope is not activezIAttempted to exit cancel scope in a different task than it was entered inzTAttempted to exit a cancel scope that isn't the current tasks's current cancel scopeF)r  r   r   r   r   r   r   r  r   r
  r  r   r  r  _restart_cancellation_in_parentr  iterate_exceptions
isinstancer   	_uncancelr  )rw   r   r   r   host_task_stateexcs         rj   r   zCancelScope.__exit__  s    ||@AA>0 
 ***&**4??;"o&B&B$&N' 
   '')#'D 4??+),,33D9%%))$//:'+'9'9$ 	,,.7#6)'2 c>2-1^^C-@D*--))) )))ri   c                X   t         j                  dk  s| j                  d| _        y| j                  V| j                  rJ| xj                  dz  c_        | j                  j                         | j                  k  ry| j                  rJd| _        dt        |       d|j                  v S )NrP   	   r   Tr   Cancelled by cancel scope r   )r  r  r   r  r  r   idr   )rw   cancelled_excs     rj   r  zCancelScope._uncancel  s    f$(?!"D '$$""a'"??++-1A1AA $$
 +BtHQ<8M<N<NNNri   c                   | j                   t        j                  k7  rdt               }|j	                         | j                   k\  r| j                          y |j                  | j                   | j                        | _        y y rz   )	r  mathinfr	   timer   call_atr  r  r   s     rj   r  zCancelScope._timeout  sU    >>TXX%#%Dyy{dnn,'+||DNNDMM'R$ &ri   c                   d}t               }| j                  D ]  }|j                  rd}||us|| j                  u st	        |      s1|j
                  }t        |t        j                        r|j                         rh| xj                  dz  c_
        t        j                  dk\  r|j                  dt        |      d       |j                           | 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

        FTr   r!  r#  r   N)r   r
  _must_cancelr   r   _fut_waiterr  r   r   r   r  r  r  r   r$  r  r  cancel_calledr  r	   	call_soonr	  )rw   originshould_retrycurrentr   waiterscopes          rj   r  z!CancelScope._deliver_cancellation  s6    .KK 	&D    L7"(?=QUCV))!&'..9&&!+&''61&@FA$OP	&" '' 	SE==)<)<$::6BRl	S
 T>&6&8&B&B..'#  '+#ri   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	  r  r  )rw   r4  s     rj   r  z+CancelScope._restart_cancellation_in_parent  sZ    
 ""##''///6 }}''E ri   c                    | j                   }|4|j                  s(|j                  ry|j                   }||j                  s(y)NTF)r   r  r  )rw   r   s     rj   _parent_cancelledzCancelScope._parent_cancelled  sG    ))&|/C/C**+99	 &|/C/C ri   c                    | j                   sS| j                  r!| j                  j                          d | _        d| _         | j                  | j	                  |        y y y NT)r  r  r   r   r  r|   s    rj   r   zCancelScope.cancel   sX    ""##$$++-'+$"&D***40 + #ri   c                    | j                   S rz   )r  r|   s    rj   r   zCancelScope.deadline*  s    ~~ri   c                    t        |      | _        | j                  !| j                  j                          d | _        | j                  r| j
                  s| j                          y y y rz   )floatr  r  r   r  r  r  rw   values     rj   r   zCancelScope.deadline.  sR    u+  '')#'D << 3 3MMO !4<ri   c                    | j                   S rz   )r  r|   s    rj   r.  zCancelScope.cancel_called8  s    """ri   c                    | j                   S rz   )r  r|   s    rj   cancelled_caughtzCancelScope.cancelled_caught<  s    %%%ri   c                    | j                   S rz   )r  r|   s    rj   r   zCancelScope.shield@      ||ri   c                X    | j                   |k7  r|| _         |s| j                          y y y rz   )r  r  r=  s     rj   r   zCancelScope.shieldD  s.    <<5  DL446  !ri   Nr   r<  r   boolr   rG   )r   r<  r   rF  )r   rG   r   type[BaseException] | Noner   BaseException | Noner   TracebackType | Noner   r   )r%  r   r   rF  r   )r0  rG   r   rF  r   rF  r   r<  r>  r<  r   r   )r>  rF  r   r   )rb   rc   rd   r'  r(  r   rx   r}   r   r  r  r  r  r7  r   propertyr   setterr.  rA  r   rh   ri   rj   rG   rG   Y  s
   "&((5##48#	#
 *.% ,>/,/ &/ %	/
 
/bOS+Z(&	1   __  # # & &   ]]7 7ri   rG   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.
    	parent_idr   c                     || _         || _        y rz   rQ  )rw   rR  r   s      rj   rx   zTaskState.__init__Y  s    "(ri   N)rR  
int | Noner   CancelScope | None)rb   rc   rd   __doc__	__slots__rx   rh   ri   rj   r  r  Q  s    
 ,I)ri   r  c                      e Zd ZddZdddZy)_AsyncioTaskStatusc                     || _         || _        y rz   )_future
_parent_id)rw   r   rR  s      rj   rx   z_AsyncioTaskStatus.__init__g  s    #ri   Nc                    	 | j                   j                  |       t        t        j                  t                     }| j                  t        |   _
        y # t        j                  $ r t	        d      d w xY w)Nz.called 'started' twice on the same task status)r[  r   r   InvalidStateErrorr   r1   r   r   r\  r   rR  )rw   r>  r   s      rj   startedz_AsyncioTaskStatus.startedk  sh    	LL##E* GLL,.1'+T$ (( 	@	s   A  A8)r   asyncio.FuturerR  intrz   )r>  zT_contra | Noner   r   )rb   rc   rd   rx   r_  rh   ri   rj   rY  rY  f  s    $	7ri   rY  c              #     K   t        | t              r%| j                  D ]  }t        |      E d {     y |  y 7 wrz   )r  r\   rZ   r  )r   r  s     rj   r  r  w  sB      )/0'' 	/C)#...	/  /s   .?=?c                      e Zd Zd	dZd
dZ	 	 	 	 	 	 	 	 ddZ	 d	 	 	 	 	 	 	 	 	 ddZdd	 	 	 	 	 	 	 ddZdd	 	 	 	 	 	 	 ddZy)	TaskGroupc                \    t               | _        d| _        g | _        t	               | _        y )NF)rG   r   r  _exceptionsr   r
  r|   s    rj   rx   zTaskGroup.__init__  s$    )402),ri   c                P   K   | j                   j                          d| _        | S wr9  )r   r}   r  r|   s    rj   
__aenter__zTaskGroup.__aenter__  s$     ##%s   $&c                *  K   | j                   j                  |||      }|E| j                   j                          t        |t              s| j
                  j                  |       d }| j                  r5	 t        j                  | j                         d {    | j                  r5d| _
        | j
                  rt        d| j
                        |r||r||S 7 D# t        $ r(}| j                   j                          ||}Y d }~nd }~ww xY ww)NFzunhandled errors in a TaskGroup)r   r   r   r  r   rf  appendr
  r   r   r  r\   )rw   r   r   r   ignore_exception!cancelled_exc_while_waiting_tasksr  s          rj   	__aexit__zTaskGroup.__aexit__  s      ,,55hP$$&g~6  ''0CG)kk<ll4;;/// kk $143C3C  -"277- 0! < !!((*4<8;5<sH   A3D6"C CC D*3DC 	D(DDDDNc                   
 d 
fd} j                   st        d      i }r@t        t                     }t	        t         j
                  j                              |d<   nt         j
                  j                        } ||i |}t        |      s;t        |d      r|j                   dnd}	t        d|	 |j                   d|d	      |t        |      n
t        |      }t        ||
      

j                  |       t!        | j
                        t"        
<    j
                  j$                  j'                  
        j$                  j'                  
       
S )Nc                6   t         |    }|j                  J | |j                  j                  v sJ |j                  j                  j                  |        j                  j                         t         | = 	 | j	                         }|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
        $ rN}t        |j                  t
              r'|j                  }t        |j                  t
              r'|}Y d }~d }~ww xY w)Nz2Child exited without calling task_status.started())r   r   r
  r  r   r   r  __context__r   rf  rj  r7  r   r   r   )_taskr  r  erw   r   task_status_futures       rj   	task_donez#TaskGroup._spawn.<locals>.task_done  sa   %e,J**666J33:::::##**11%8KKt$U#oo' %-1C1H1H1J%c>:((//4,,>>@))002&44S9 A $/8J8O8O8Q"00 !UV 9R/ "  ?A !? 	s   ;E 	F
A FFFz;This task group is not active; no new tasks can be started.task_statusrc   r    z	Expected z0() to return a coroutine, but the return value (z) is not a coroutine objectnamerQ  )rq  r   r   r   )r  r   r$  r   rY  r   r   r   r   rc   	TypeErrorrd   r   strr   add_done_callbackr  r   r
  r  )rw   r   r   rx  rs  rt  kwargsrR  r   prefixr   s   `   `     @rj   _spawnzTaskGroup._spawn  sW   	< ||M  <>*I$6"Bt'8'8'C'C$D%F=! 4,,778IT$V$4 .5dL.I(*rFF8D$5$5#6 7%%)H,GI 
 +/, &CI4d+y) 'd.?.?
T 	  $$T*ri   rw  c               *    | j                  |||       y rz   )r~  )rw   r   rx  r   s       rj   
start_soonzTaskGroup.start_soon  s     	D$%ri   c               R  K   t        j                         }| j                  ||||      }	 | d {   S 7 # t        $ rc |j	                          t        d      5  t        t              5  | d {  7   d d d        n# 1 sw Y   nxY wd d d         # 1 sw Y    xY ww xY wwNTr   )r   r   r~  r   r   rG   r   )rw   r   rx  r   r   r   s         rj   r   zTaskGroup.start  s      ")!1{{4tV4	<< 	KKMD) 8N+C 

     	sa   )B'8 68 B'8 %B$B-B3A6
4B9	BBB	B$B 	B$$B'r   )r   rd  rG  rz   )
r   ,Callable[[Unpack[PosArgsT]], Awaitable[Any]]r   tuple[Unpack[PosArgsT]]rx  r   rs  asyncio.Future | Noner   r   )r   r  r   zUnpack[PosArgsT]rx  r   r   r   )r   zCallable[..., Awaitable[Any]]r   r   rx  r   r   r%   )	rb   rc   rd   rx   rh  rm  r~  r  r   rh   ri   rj   rd  rd    s    /
% ,%  &%  %	% 
 
% X 59E:E &E 	E
 2E 
EV 	&:&  & 	&
 
& RV1:@HN	ri   rd  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 )WorkerThreadrQ   c                    t         |   d       || _        || _        || _        |j
                  | _        t        d      | _        t        j                         | _        d| _        y )NzAnyIO worker threadrw  r3   F)superrx   r   workersidle_workersrs   r   r   queueAsyncIOBackendcurrent_time
idle_sincestopping)rw   r   r  r  	__class__s       rj   rx   zWorkerThread.__init__"  s`     	34"(OO	 !H 	
 )557ri   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  rj  r   r  StopIterationr   	__cause__r   r   )rw   r   resultr  new_excs        rj   _report_resultzWorkerThread._report_result3  s     )557}}$$T*!c=1*+KLG(+G%!C$$S)!!&) "ri   c                    t        t        | j                        5  	 | j                  j	                         }|
	 d d d        y |\  }}}}}|j                         skd }d }|t        _        	  |j                  |g| }t        `| j                  j                         s(| j                  j                  | j                  |||       | j                  j                          # t        $ r}	|	}Y d }	~	sd }	~	ww xY w# t        `w xY w# 1 sw Y   y xY wrz   )r8   r  r   r  r   r   r9   current_cancel_scoper   r   	is_closedr   r  rt  )
rw   itemr   r   r   r   r   r  r   r  s
             rj   r   zWorkerThread.runE  s     ; 	'zz~~'<	' 	' =A9tV\'')!F6:I8DL5>!,T!9D!9 )=99..0		66 // 

$$&/  ) ($'	( )=#	' 	'sH   D'D+C!>A#D!	C6*C1,C91C66C99DDDc                    d| _         | j                  j                  d        | j                  j	                  |        	 | j
                  j                  |        y # t        $ r Y y w xY wr9  )r  r  
put_nowaitr  discardr  r  r   )rw   fs     rj   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  rI  r   r   r   rz   )r  zasyncio.Task | Noner   r   )	rb   rc   rd   MAX_IDLE_TIMErx   r  r   r  __classcell__r  s   @rj   r  r    s]    M # *	"*$*.1*8L*	*$'6 ri   r  _threadpool_idle_workerszRunVar[deque[WorkerThread]]_threadpool_workerszRunVar[set[WorkerThread]]c                  H     e Zd ZddZd fdZ	 	 	 	 	 	 	 	 	 	 	 	 ddZ xZS )BlockingPortalc                ,    t         j                  |       S rz   r   r   s    rj   r   zBlockingPortal.__new__q      ~~c""ri   c                @    t         |           t               | _        y rz   )r  rx   r	   rs   )rw   r  s    rj   rx   zBlockingPortal.__init__t  s    %'
ri   c                    t         j                  t        | j                  j                  |      | j
                  ||||f| j                         y )Nrw  )r  run_sync_from_threadr   _task_groupr  
_call_funcrs   )rw   r   r   r|  rx  r   s         rj   _spawn_task_from_threadz&BlockingPortal._spawn_task_from_threadx  sA     	++D$$//d;__dD&&9JJ	
ri   )r   r  r   )r   z<Callable[[Unpack[PosArgsT]], Awaitable[T_Retval] | T_Retval]r   r  r|  dict[str, Any]rx  r   r   zFuture[T_Retval]r   r   )rb   rc   rd   r   rx   r  r  r  s   @rj   r  r  p  sL    #(
J
 &
 	

 
 !
 

ri   r  F)eqc                  *    e Zd ZU ded<   dddZddZy)	StreamReaderWrapperzasyncio.StreamReader_streamc                h   K   | j                   j                  |       d {   }|r|S t        7 wrz   )r  readr=   )rw   	max_bytesdatas      rj   receivezStreamReaderWrapper.receive  s0     \\&&y11K	 2s   202c                |   K   | j                   j                          t        j                          d {    y 7 wrz   )r  feed_eofr  
checkpointr|   s    rj   aclosezStreamReaderWrapper.aclose  s(     '')))   2<:<N   r  ra  r   bytesr   )rb   rc   rd   __annotations__r  r  rh   ri   rj   r  r    s    !!*ri   r  c                  (    e Zd ZU ded<   ddZddZy)StreamWriterWrapperzasyncio.StreamWriterr  c                   K   | j                   j                  |       | j                   j                          d {    y 7 wrz   )r  writedrainrw   r  s     rj   sendzStreamWriterWrapper.send  s.     4 ll  """s   9AAAc                |   K   | j                   j                          t        j                          d {    y 7 wrz   )r  r   r  r  r|   s    rj   r  zStreamWriterWrapper.aclose  s(     '')))r  Nr  r  r   r   r   )rb   rc   rd   r  r  r  rh   ri   rj   r  r    s    !!#*ri   r  c                      e Zd ZU ded<   ded<   ded<   ded<   ddZdd	Zdd
ZddZddZe	dd       Z
e	dd       Ze	dd       Ze	dd       Ze	dd       Zy)Processzasyncio.subprocess.Process_processzStreamWriterWrapper | None_stdinzStreamReaderWrapper | None_stdout_stderrc                T  K   t        d      5  | j                  r"| j                  j                          d {    | j                  r"| j                  j                          d {    | j                  r"| j                  j                          d {    d d d        	 | j                          d {    y 7 7 V7 *# 1 sw Y   )xY w7 # t        $ rL | j                          t        d      5  | j                          d {  7   d d d         # 1 sw Y    xY ww xY wwr  )rG   r  r  r  r  r   r   killr|   s    rj   r  zProcess.aclose  s     % 	,{{kk((***||ll))+++||ll))+++	,	))+ +++	, 	,  	IIKD) "iik!!" " 	s   D(*CB<-C'B>(-CC CD(#C 6C7C ;D(<C>C CCD(C %D%5D	D
D	D%D!	D%%D(c                R   K   | j                   j                          d {   S 7 wrz   )r  r   r|   s    rj   r   zProcess.wait  s     ]]''))))   '%'c                8    | j                   j                          y rz   )r  	terminater|   s    rj   r  zProcess.terminate  s    !ri   c                8    | j                   j                          y rz   )r  r  r|   s    rj   r  zProcess.kill  s    ri   c                :    | j                   j                  |       y rz   )r  send_signal)rw   r   s     rj   r  zProcess.send_signal  s    !!&)ri   c                .    | j                   j                  S rz   )r  pidr|   s    rj   r  zProcess.pid  s    }}   ri   c                .    | j                   j                  S rz   )r  
returncoder|   s    rj   r  zProcess.returncode  s    }}'''ri   c                    | j                   S rz   )r  r|   s    rj   stdinzProcess.stdin  s    {{ri   c                    | j                   S rz   )r  r|   s    rj   stdoutzProcess.stdout  rC  ri   c                    | j                   S rz   )r  r|   s    rj   stderrzProcess.stderr  rC  ri   Nr   r   ra  )r   ra  r   r   )r   rT  )r   zabc.ByteSendStream | None)r   zabc.ByteReceiveStream | None)rb   rc   rd   r  r  r   r  r  r  rN  r  r  r  r  r  rh   ri   rj   r  r    s    ((&&''''$*"* ! ! ( (      ri   r  c                *   d}t         j                  dk  r#	 t        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.N)rP      )r  r  r   get_event_loop_policyget_child_watcherNotImplementedErrorr  r  r  
_transportr   r  r  r  remove_child_handlerr  )r  rq  child_watcherprocesss       rj   '_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                  $ rG | 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
   r'  r(  r   r   r  r  r  )r  r  s     rj   _shutdown_process_pool_on_exitr    su     #DHHo!! # 	G!!)	  	#G.."""	##sC   B( &( B( $B*B7A:8B?BBBc                  j    e Zd ZU ded<   ded<   ded<   dZded<   dd	Zdd
ZddZddZddZ	ddZ
y)StreamProtocolzdeque[bytes]
read_queueasyncio.Event
read_eventwrite_eventNException | Noner   c                   t               | _        t        j                         | _        t        j                         | _        | j
                  j                          t        t        j                  |      j                  d       y Nr   )
r   r  r   rD   r  r  r   r1   	Transportset_write_buffer_limitsrw   	transports     rj   connection_madezStreamProtocol.connection_made  sS    '!--/"==?W	*BB1Eri   c                    |r t               | _        || j                  _        | j                  j	                          | j
                  j	                          y rz   )r:   r   r  r  r   r  rw   r  s     rj   connection_lostzStreamProtocol.connection_lost"  s=    02DN'*DNN$ri   c                n    | j                   j                  |       | j                  j                          y rz   )r  rj  r  r   )rw   r  s     rj   data_receivedzStreamProtocol.data_received*  s$    t$ri   c                8    | j                   j                          yr9  )r  r   r|   s    rj   eof_receivedzStreamProtocol.eof_received.  s    ri   c                6    t        j                         | _        y rz   )r   rD   r  r|   s    rj   pause_writingzStreamProtocol.pause_writing2  s    "==?ri   c                8    | j                   j                          y rz   r  r   r|   s    rj   resume_writingzStreamProtocol.resume_writing5      ri   r  zasyncio.BaseTransportr   r   r  r  r   r   )r  r  r   r   )r   r   r   )rb   rc   rd   r  r   r  r  r  r	  r  r  rh   ri   rj   r  r    s>    "&I&F+ri   r  c                  j    e Zd ZU ded<   ded<   ded<   dZded<   dd	Zdd
ZddZddZddZ	ddZ
y)DatagramProtocolz#deque[tuple[bytes, IPSockAddrType]]r  r  r  r  Nr  r   c                    t        d      | _        t        j                         | _        t        j                         | _        | j
                  j                          y )Nd   )maxlen)r   r  r   rD   r  r  r   r   s     rj   r  z DatagramProtocol.connection_made?  s;    s+!--/"==?ri   c                l    | j                   j                          | j                  j                          y rz   )r  r   r  r  s     rj   r  z DatagramProtocol.connection_lostE  s$    ri   c                    t        |      }| j                  j                  ||f       | j                  j	                          y rz   )r?   r  rj  r  r   )rw   r  addrs      rj   datagram_receivedz"DatagramProtocol.datagram_receivedI  s2    $T*d|,ri   c                    || _         y rz   )r   r  s     rj   error_receivedzDatagramProtocol.error_receivedN  s	    ri   c                8    | j                   j                          y rz   )r  clearr|   s    rj   r  zDatagramProtocol.pause_writingQ  s     ri   c                8    | j                   j                          y rz   r  r|   s    rj   r  zDatagramProtocol.resume_writingT  r  ri   r  r  )r  r  r  rI   r   r   )r  r   r   r   r   )rb   rc   rd   r  r   r  r  r  r  r  r  rh   ri   rj   r  r  9  s=    33"&I&
!ri   r  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  	_protocolrE   _receive_guard_send_guard_closedrw   r  protocols      rj   rx   zSocketStream.__init__Y  s1    #!+N;(6ri   c                8    | j                   j                  d      S Nsocketr  get_extra_infor|   s    rj   _raw_socketzSocketStream._raw_socket`      --h77ri   c                  K   | j                   5  t        j                          d {    | j                  j                  j                         sz| j                  j                         s`| j                  j                          | j                  j                  j                          d {    | j                  j                          	 | j                  j                  j                         }t%        |      |kD  r/|d | ||d  }}| j                  j                  j'                  |       | j                  j                  s$| j                  j                  j)                          d d d        |S 7 I7 # t        $ rH | j                  rt        d | j                  j                   r| j                  j                   d t"        d w xY w# 1 sw Y   S xY wwrz   )r(  r  r  r'  r  is_setr  
is_closingresume_readingr   pause_readingr  popleft
IndexErrorr*  r<   r   r=   len
appendleftr  )rw   r  chunkleftovers       rj   r  zSocketStream.received  ss       	2 ++--- NN--446224..0nn//44666--/01199; 5zI%"'
"3U9:5Fx))44X> >>,,))//1;	2> = . 7
  0<<-47^^--..22<%4/0	2> sY   GG	E0BG	+E3,G	$E5/A7G	&
G0G	3G	5AGG		GGc                   K   | j                   5  t        j                          d {    | j                  rt        | j
                  j                  | 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rz   )r)  r  r  r*  r<   r'  r   r  r  r   r6  r:   r  r   )rw   r  r  s      rj   r  zSocketStream.send  s      	4 ++---||))))5nn...%%d+ ..,,11333!	4 	4-   ??--/-36	 4!	4 	4s]   C>C2B;AC2+B='C2-C0.C22	C>;C2=	C-"C((C--C22C;7C>c                `   K   	 | j                   j                          y # t        $ r Y y w xY wwrz   )r  	write_eofOSErrorr|   s    rj   send_eofzSocketStream.send_eof  s,     	OO%%' 		s   . .	+.+.c                6  K   | j                   j                         sjd| _        	 | j                   j                          | j                   j                          t        d       d {    | j                   j                          y y # t        $ r Y Tw xY w7 /wNTr   )r  r6  r*  rA  rB  r   r
   abortr|   s    rj   r  zSocketStream.aclose  s}     ))+DL))+ OO!!#(NNOO!!# ,   s3   "BB (B'B( B	BBBBN)r  zasyncio.Transportr,  r  r   socket.socketr  r  r  r   )
rb   rc   rd   rx   rN  r2  r  r  rC  r  rh   ri   rj   r!  r!  X  s0     8 8 D4&
$ri   r!  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)_RawSocketMixinNr  _receive_future_send_futureFc                R    || _         t        d      | _        t        d      | _        y )Nr$  r%  )_RawSocketMixin__raw_socketrE   r(  r)  rw   
raw_sockets     rj   rx   z_RawSocketMixin.__init__  s$    &+N;(6ri   c                    | j                   S rz   )rN  r|   s    rj   r2  z_RawSocketMixin._raw_socket         ri   c                     d fd}t        j                         x} _        j                   j                  |j
                  d        |j                  |       |S )Nc                @    ` j                  j                         y rz   )rK  remove_readerrN  r  r   rw   s    rj   callbackz6_RawSocketMixin._wait_until_readable.<locals>.callback  s    $t001ri   r  r   r   r   )r   r   rK  
add_readerrN  r   r{  rw   r   rW  r  s   ``  rj   _wait_until_readablez$_RawSocketMixin._wait_until_readable  sK    	2 $+>>#33D ))1<<>	H%ri   c                     d fd}t        j                         x} _        j                   j                  |j
                  d        |j                  |       |S )Nc                @    ` j                  j                         y rz   )rL  remove_writerrN  rV  s    rj   rW  z6_RawSocketMixin._wait_until_writable.<locals>.callback  s    !t001ri   rX  )r   r   rL  
add_writerrN  r   r{  rZ  s   ``  rj   _wait_until_writablez$_RawSocketMixin._wait_until_writable  sK    	2 !( 00D))1<<>	H%ri   c                @  K   | j                   sd| _         | j                  j                         dk7  r| j                  j                          | j                  r| j                  j                  d        | j                  r| j                  j                  d        y y y w)NT)_closingrN  filenor   rK  r   rL  r|   s    rj   r  z_RawSocketMixin.aclose  s     }} DM  '')R/!!'')##$$//5  !!,,T2 ! s   BBrP  rH  rG  )r   asyncio.AbstractEventLoopr   r`  r   )rb   rc   rd   rK  r  rL  rc  rx   rN  r2  r[  r`  r  rh   ri   rj   rJ  rJ    sE    -1O*1*.L'.H7
 ! !	3ri   rJ  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rz   )r)  r2  r   r/  SHUT_WRr|   s    rj   rC  zUNIXSocketStream.send_eof  s;      	6%%fnn5	6 	6 	6s   A*A	AAAc                  K   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rz   )r	   r  r  r(  r2  recvr=   BlockingIOErrorr[  rB  rc  r<   r:   )rw   r  r   r  r  s        rj   r  zUNIXSocketStream.receive  s     !'')))   	  ++00;D  ))	  	  	*
 ' :33D999 ;}}1t;1s:	; 	  	 sa   "CA&CB8A(	B8C(B4BB4B8B4B//B44B88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rz   )r	   r  r  r)  
memoryviewr2  r  rm  r`  rB  rc  r<   r:   )rw   r  r   view
bytes_sentr  s         rj   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  ra  r   r	   arrayr  r  r(  r2  recvmsgr/  CMSG_LENitemsizer=   rm  r[  rB  rc  r<   r:   
SOL_SOCKET
SCM_RIGHTSr   	frombytesr;  list)rw   msglenmaxfdsr   fdsr   ancdataflagsr  r  
cmsg_level	cmsg_type	cmsg_datas                rj   receive_fdszUNIXSocketStream.receive_fds  s    &#&&1*DEE&#&&1*@AA!kk#'')))   	484D4D4L4L0E F51GWeT #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 emptyrs  )r   r	   r  ra  rj  r   rd  rt  r  r  r)  r2  sendmsgr/  rx  ry  rm  r`  rB  rc  r<   r:   )rw   r   r~  r   filenosfdfdarrayr  s           rj   send_fdszUNIXSocketStream.send_fds,  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|  ra  r}  ra  r   ztuple[bytes, list[int]])r   r  r~  zCollection[int | IOBase]r   r   )rb   rc   rd   rC  r  r  r  r  rh   ri   rj   rh  rh    s    6 (-$%"N;ri   rh  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)TCPSocketListenerNrU  _accept_scopeFc                    || _         t        t        j                  t	                     | _        t        d      | _        y )Naccepting connections from)_TCPSocketListener__raw_socketr1   r   BaseEventLoopr	   rs   rE   _accept_guardrO  s     rj   rx   zTCPSocketListener.__init__R  s0    &'//1A1CD
*+GHri   c                    | j                   S rz   )r  r|   s    rj   r2  zTCPSocketListener._raw_socketW  rR  ri   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  rG   r  rs   sock_acceptr2  r   r   rU  r   r  
setsockoptr/  IPPROTO_TCPTCP_NODELAYconnect_accepted_socketr  r!  )rw   client_sock_addrr  r,  s        rj   acceptzTCPSocketListener.accept[  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rE  )
r*  r  rs   rU  r2  r   r  r   r
   r   r|   s    rj   r  zTCPSocketListener.aclosex  s     <<

(()9)9: %%'(NN   34  s4   !B(%B 	(B(1B&2B(B# B("B##B(re  rG  r   abc.SocketStreamr   )rb   rc   rd   r  r  r*  rx   rN  r2  r  r  rh   ri   rj   r  r  N  s6    (,M%,GI
 ! !1:!ri   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	   rs   rE   r  r*  rO  s     rj   rx   zUNIXSocketListener.__init__  s)    &%'
*+GHri   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 rz   )rs   rU  r  )_rw   s    rj   r   z+UNIXSocketListener.accept.<locals>.<lambda>  s    $**":":4;L;L"M ri   )r  r  r  r  r  setblockingrh  rm  r   r   rs   rY  r   r{  rB  r*  r<   r:   )rw   r  r  r  r  s   `    rj   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r9  )r*  r  r   r|   s    rj   r  zUNIXSocketListener.aclose  s     !s   #%c                    | j                   S rz   )r  r|   s    rj   r2  zUNIXSocketListener._raw_socket  rR  ri   Nre  r  r   rG  )rb   rc   rd   rx   r  r  rN  r2  rh   ri   rj   r  r    s%    ;*" ! !ri   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&  r+  s      rj   rx   zUDPSocket.__init__  3     $!+N;(6ri   c                8    | j                   j                  d      S r.  r0  r|   s    rj   r2  zUDPSocket._raw_socket  r3  ri   c                   K   | j                   j                         s"d| _        | j                   j                          y y wr9  r  r6  r*  r   r|   s    rj   r  zUDPSocket.aclose  2     ))+DLOO!!# ,   >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rz   r(  r  r  r'  r  r  r6  r  r  r   r9  r:  r*  r<   r:   r|   s    rj   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rz   r)  r  r  r'  r  r   r*  r<   r  r6  r:   sendtor  s     rj   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r  zasyncio.DatagramTransportr,  r  rG  r   )r   ztuple[bytes, IPSockAddrType])r  rK   r   r   	rb   rc   rd   rx   rN  r2  r  r  r  rh   ri   rj   r  r    s:    2>N 8 8$
8"	.ri   r  c                  F    e Zd Z	 	 	 	 ddZedd       Zd	dZd
dZddZy)ConnectedUDPSocketc                n    || _         || _        t        d      | _        t        d      | _        d| _        y r#  r&  r+  s      rj   rx   zConnectedUDPSocket.__init__  r  ri   c                8    | j                   j                  d      S r.  r0  r|   s    rj   r2  zConnectedUDPSocket._raw_socket  r3  ri   c                   K   | j                   j                         s"d| _        | j                   j                          y y wr9  r  r|   s    rj   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r  r  )rw   packets     rj   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rz   r  r  s     rj   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  rG  r   r   r  r  r  rh   ri   rj   r  r    s:    2>N 8 8$
&	-ri   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(  r2  recvfromrm  r[  rB  rc  r<   r:   rw   r   r  r  s       rj   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rz   )r	   r  r  r)  r2  r  rm  r`  rB  rc  r<   r:   rw   r  r   r  s       rj   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   rL   )r  rL   r   r   rb   rc   rd   r  r  rh   ri   rj   r  r         "ri   r  c                      e Zd ZddZddZ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(  r2  rl  rm  r[  rB  rc  r<   r:   r  s       rj   r  z#ConnectedUNIXDatagramSocket.receive6  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rz   )r	   r  r  r)  r2  r  rm  r`  rB  rc  r<   r:   r  s       rj   r  z ConnectedUNIXDatagramSocket.sendG  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  rh   ri   rj   r  r  5  r  ri   r  read_eventsz RunVar[dict[Any, asyncio.Event]]_read_eventswrite_events_write_eventsc                  <    e Zd ZddZd	dZd	dZd
dZd	dZddZy)rD   c                ,    t         j                  |       S rz   r   r  s    rj   r   zEvent.__new__c  r  ri   c                6    t        j                         | _        y rz   )r   rD   _eventr|   s    rj   rx   zEvent.__init__f  s    mmori   c                8    | j                   j                          y rz   )r  r   r|   s    rj   r   z	Event.seti  s    ri   c                6    | j                   j                         S rz   )r  r5  r|   s    rj   r5  zEvent.is_setl  s    {{!!##ri   c                   K   | j                         rt        j                          d {    y | j                  j	                          d {    y 7 (7 wrz   )r5  r  r  r  r   r|   s    rj   r   z
Event.waito  s@     ;;= ++---++""$$$ .$s!   (AA"AAAAc                R    t        t        | j                  j                              S rz   )r5   r;  r  _waitersr|   s    rj   
statisticszEvent.statisticsu  s    s4;;#7#7899ri   N)r   rD   r   rK  )r   r5   )	rb   rc   rd   r   rx   r   r5  r   r  rh   ri   rj   rD   rD   b  s     #&$%:ri   rD   c                      e Zd ZU dZded<   ddZddZddZ	 	 	 	 	 	 	 	 ddZe	dd       Z
e
j                  dd	       Z
e	dd
       Ze	dd       ZddZddZddZddZddZddZddZy)rB   r   r<  _total_tokensc                ,    t         j                  |       S rz   r   r   total_tokenss     rj   r   zCapacityLimiter.__new__|  r  ri   c                N    t               | _        t               | _        || _        y rz   )r   
_borrowersr   _wait_queuer  )rw   r  s     rj   rx   zCapacityLimiter.__init__  s    $'E<GM(ri   c                @   K   | j                          d {    y 7 wrz   )acquirer|   s    rj   rh  zCapacityLimiter.__aenter__  s     llns   c                ,   K   | j                          y wrz   )releaser   s       rj   rm  zCapacityLimiter.__aexit__  s      	s   c                    | j                   S rz   )r  r|   s    rj   r  zCapacityLimiter.total_tokens  s    !!!ri   c                l   t        |t              s t        j                  |      st	        d      |dk  rt        d      t        || j                  z
  d      }|| _        | j                  rH|rE| j                  j                  d      d   }|j                          |dz  }| j                  r|rCy y y y )Nz'total_tokens must be an int or math.infr   ztotal_tokens must be >= 1r   Flast)r  ra  r'  isinfry  r   maxr  r  popitemr   )rw   r>  waiters_to_notifyevents       rj   r  zCapacityLimiter.total_tokens  s    %%djj.?EFF19899(:(: :A>" #4$$,,%,8;EIIK" #4#4ri   c                ,    t        | j                        S rz   )r;  r  r|   s    rj   borrowed_tokenszCapacityLimiter.borrowed_tokens  s    4??##ri   c                F    | j                   t        | j                        z
  S rz   )r  r;  r  r|   s    rj   available_tokensz CapacityLimiter.available_tokens  s    !!C$888ri   c                6    | j                  t                      y rz   )acquire_on_behalf_of_nowaitr   r|   s    rj   acquire_nowaitzCapacityLimiter.acquire_nowait  s    ((8ri   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   r  r;  r  r>   r  )rw   borrowers     rj   r  z+CapacityLimiter.acquire_on_behalf_of_nowait  sY    t& 
 s4??3t7I7IIH%ri   c                P   K   | j                  t                      d {   S 7 wrz   )acquire_on_behalf_ofr   r|   s    rj   r  zCapacityLimiter.acquire  s     ..|~>>>>s   &$&c                
  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   n*# t        $ r | j                  j                  |d         w xY w| j                  j                  |       Y y w xY wwrz   )r  checkpoint_if_cancelledr  cancel_shielded_checkpointr   r  r>   r   rD   r  r   popr  r  rw   r  r  s      rj   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)		*sy   DADA1 A 	A
A DA A..D1,D B81B42B87D 8'CD =D?D  Dc                6    | j                  t                      y rz   )release_on_behalf_ofr   r|   s    rj   r  zCapacityLimiter.release  s    !!,.1ri   c                ,   	 | j                   j                  |       | j                  rSt        | j                         | j                  k  r0| j                  j                  d      d   }|j                          y y y # t        $ r t        d      d w xY w)Nz@this borrower isn't holding any of this CapacityLimiter's tokensFr  r   )	r  r  r  r   r  r;  r  r  r   r  s      rj   r  z$CapacityLimiter.release_on_behalf_of  s    	OO""8, DOO 4t7I7I I$$,,%,8;EIIK !J  	U	s   A= =Bc                    t        | j                  | j                  t        | j                        t        | j                              S rz   )r4   r  r  tupler  r;  r  r|   s    rj   r  zCapacityLimiter.statistics  s;    (  $//"  !	
 	
ri   N)r  r<  r   rB   )r  r<  r   r   rH  r   rI  r   rJ  r   r   rL  rM  r  )r  r   r   r   )r   r4   )rb   rc   rd   r  r  r   rx   rh  rm  rN  r  rO  r  r  r  r  r  r   r  r  r  rh   ri   rj   rB   rB   y  s    M5#)
, & %	
 
 " " # # $ $ 9 99
&?*2
ri   rB   _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 rz   )
_signalsr	   rs   r   _signal_queuer   r   r[  r   _handled_signals)rw   signalss     rj   rx   z_SignalReceiver.__init__  s5    %'
-2W'.~~'7.1eri   c                    | j                   j                  |       | j                  j                         s| j                  j	                  d        y y rz   )r  rj  r[  r   r   )rw   r   s     rj   _deliverz_SignalReceiver._deliver  s=    !!&)||  "LL##D) #ri   c                    t        | j                        D ]D  }| j                  j                  || j                  |       | j
                  j                  |       F | S rz   )r   r  rs   add_signal_handlerr  r  r  )rw   sigs     rj   r}   z_SignalReceiver.__enter__   sO    t}}% 	+CJJ))#t}}cB!!%%c*	+ ri   c                \    | j                   D ]  }| j                  j                  |        y rz   )r  rs   remove_signal_handler)rw   r   r   r   r  s        rj   r   z_SignalReceiver.__exit__  s.     (( 	2CJJ,,S1	2ri   c                    | S rz   rh   r|   s    rj   	__aiter__z_SignalReceiver.__aiter__  s    ri   c                   K   t         j                          d {    | j                  s-t        j                         | _        | j
                   d {    | j                  j                         S 7 W7  wrz   )r  r  r  r   r   r[  r9  r|   s    rj   	__anext__z_SignalReceiver.__anext__  s\     '')))!!">>+DL,,!!))++ 	* s!   A6A28A6A4A64A6N)r  ztuple[Signals, ...])r   r   r   r   )r   r  rG  )r   r   )	rb   rc   rd   rx   r  r}   r   r  r  rh   ri   rj   r  r    sF    4*
, & %	
 
,ri   r  c                    t         j                  |       }|d }n|j                  }t        t	        |       || j                         | j                               S rz   )r   r   rR  r6   r$  get_namer   )r   r  rR  s      rj   _create_task_infor!  "  sI    !!$'J	((	BtHi$--/JJri   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	e
	 	 	 	 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)rm   
use_uvlooprn   c               l    |r|dd l }|j                  }t        ||      | _        g | _        d | _        y )Nr   rl   )uvloopr   rU   _runnerrf  _runner_task)rw   rm   r%  rn   r'  s        rj   rx   zTestRunner.__init__/  s8     ,.!00LEE0215ri   c                    | j                   j                          | j                         j                  | j                         | S rz   )r(  r}   r   set_exception_handler_exception_handlerr|   s    rj   r}   zTestRunner.__enter__?  s1     --d.E.EFri   c                >    | j                   j                  |||       y rz   )r(  r   r   s       rj   r   zTestRunner.__exit__D  s     	h8ri   c                6    | j                   j                         S rz   )r(  r   r|   s    rj   r   zTestRunner.get_loopL  s    ||$$&&ri   c                    t        |j                  d      t              r| j                  j	                  |d          y |j                  |       y )Nr   )r  r   r   rf  rj  default_exception_handler)rw   r   r   s      rj   r,  zTestRunner._exception_handlerO  s>     gkk+.	:##GK$89**73ri   c                    | j                   r6| j                   g c}| _         t        |      dk(  r|d   |rt        d|      y y )Nr   r   z6Multiple exceptions occurred in asynchronous callbacks)rf  r;  r\   )rw   rZ   s     rj   _raise_async_exceptionsz"TestRunner._raise_async_exceptionsW  sU    +/+;+;R(J(:!# m#(Lj  	 ri   c                ,  K   | 5  | 2 3 d {   \  }}	 | d {   }|j                         r(|j                  |       :7 57 )# t        $ r+}|j                         s|j                  |       Y d }~md }~ww xY w6 	 d d d        y # 1 sw Y   y xY wwrz   )r   r   r   r   )receive_streamr   r   retvalr  s        rj   _run_tests_and_fixturesz"TestRunner._run_tests_and_fixturesb  s       		2&4 2 2ldF2#'ZF
 "++-))&12'$ 2!++-,,S12 '5		2 		2 		2ss   BBA=AA=BAAABBA=A	A:!A50B5A::B?	BBB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)  r@   r/   r'   r%   r   r   r$  r   r   r6  r   send_nowait)rw   r   r   r|  r4  r   r   s          rj   _call_in_runner_taskzTestRunner._call_in_runner_tasks  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 stoprh   )r   r   r9  asendr2  r  r   StopAsyncIteration)rw   fixture_funcr|  asyncgenfixturevalues        rj   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 rz   )r   r   r9  r2  )rw   r=  r|  r5  s       rj   run_fixturezTestRunner.run_fixture  sB    
 33%D%%l=f=
 	$$&ri   c                    	 | j                         j                   | j                  |fi |       | j                          y # t        $ r%}| j                  j                  |       Y d }~:d }~ww xY wrz   )r   r   r9  r   rf  rj  r2  )rw   	test_funcr|  r  s       rj   run_testzTestRunner.run_test  sg    	)MMO..))))>v> 	$$&  	)##C((	)s   0A 	A1A,,A1)rm   r   r%  rF  rn   r   r   r   )r   r#  r  r   )r   rf  r   r  r   r   r   )r4  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   )rD  z'Callable[..., Coroutine[Any, Any, Any]]r|  r  r   r   )rb   rc   rd   r  rx   r}   r   r   r,  r2  staticmethodr6  r9  r@  rB  rE  rh   ri   rj   r#  r#  ,  sM   TT
 " ?C6 6 	6
 =6 
6 
9,9 &9 %	9
 
9'4-48F4	4	 2
2 
	2 2 .  	
 
&GBG G 
	G.	B	 	 
		
'@
'JX
'	
'ri   r#  c                     e Zd Ze	 	 	 	 	 	 	 	 	 	 d+d       Zed,d       Zed-d       Zed.d       Zed/d       Zed/d       Z	ed/d       Z
ed0d       Zeej                  d	d
	 	 	 	 	 d1d       Zed-d       Zed2d       Zed3d       Zed4d       Ze	 	 d5	 	 	 	 	 	 	 	 	 d6d       Zed/d       Ze	 	 	 	 	 	 	 	 d7d       Ze	 	 	 	 	 	 	 	 d8d       Zed9d       Zeddd	d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d:d       Zed;d       Ze	 d<	 	 	 	 	 	 	 d=d       Zed>d       Zed?d       Zed?d       Ze	 	 	 	 	 	 	 	 	 	 d@d       Ze	 	 	 	 	 	 dAd       Zeddddd 	 	 	 	 	 	 	 	 	 	 	 	 	 dBd!       Z e	 dC	 	 	 	 	 dDd"       Z!edEd#       Z"edEd$       Z#edFd%       Z$e	 	 	 	 dGd&       Z%edHd'       Z&edId(       Z'ed/d)       Z(edJd*       Z)y)Kr  c                2   t              dfd       }|j                  dd      }|j                  dd       }|"|j                  dd      r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rz   )r1   r   r   r   set_namer   r  r   )r   r   r   s    rj   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rm   Frn   r%  r   rl   )r   r   )r   r   r'  r   rU   r   )
r   r   r   r|  optionsrK  rm   rn   r'  runners
    ``       rj   r   zAsyncIOBackend.run  s     
t	' 
	' GU+{{>48GKKe$D!00L%l; 	)v::gi(	) 	) 	)s   -BBc                    t               S rz   )r	   r  s    rj   current_tokenzAsyncIOBackend.current_token  s    !!ri   c                2    t               j                         S rz   )r	   r)  r  s    rj   r  zAsyncIOBackend.current_time  s    !&&((ri   c                    t         S rz   )r   r  s    rj   cancelled_exception_classz(AsyncIOBackend.cancelled_exception_class  s    ri   c                6   K   t        d       d {    y 7 wr  r
   r  s    rj   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r  )r   r   r   r  r.  r
   r   r   )r   r   r   s      rj   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   )rG   r
   r  s    rj   r  z)AsyncIOBackend.cancel_shielded_checkpoint  s6     % 	(NN	 		 	s    :.,.	:.7:c                6   K   t        |       d {    y 7 wrz   rT  )r   delays     rj   r
   zAsyncIOBackend.sleep  s     ElrU  Fr   c                   t        ||      S )Nr   rF   r   s      rj   create_cancel_scopez"AsyncIOBackend.create_cancel_scope  s     HV<<ri   c                H   	 t         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rz   )r   r   r   r  r'  r(  minr   r  r   r   )r   r   r   s      rj   current_effective_deadlinez)AsyncIOBackend.current_effective_deadline  s    	'l  888\%:%:;H** HH9  $$   ,99    	88O	s   B B! B!c                    t               S rz   )rd  r  s    rj   create_task_groupz AsyncIOBackend.create_task_group  s
    {ri   c                    t               S rz   rC   r  s    rj   create_eventzAsyncIOBackend.create_event  s	    wri   c                    t        |      S rz   rA   r  s     rj   create_capacity_limiterz&AsyncIOBackend.create_capacity_limiter#  s    |,,ri   Nc           	       K   | j                          d {    	 t        j                         }t        j                         }|xs | j                         4 d {    t        |       5 }t        j                         }t               }	|sJt        |	||      }
|
j                          |j                  |
       |	j                  |
j                          n|j#                         }
| j%                         }|rl||d   j&                  z
  t        j(                  k  rnH|j+                         }|j,                  j/                  |j                          |j!                          |rlt1               }|j3                  t4        j6                  j                  d        |s|j8                  |}n|j8                  }|
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  LookupErrorr   r   current_default_thread_limiterrG   r   r   r   r  r   r  r{  r  r  r  r  r  r9  r   remove_done_callbackr   r   sniffiocurrent_async_library_cvarr   r  r  )r   r   r   abandon_on_cancellimiterr  r  r4  r   r   workernowexpired_workerr   worker_scopes                  rj   run_sync_in_worker_threadz(AsyncIOBackend.run_sync_in_worker_thread'  s.     nn	-3779L)--/G Bc@@B $	$ $	$(9$9: #$e)0)9*,	#))WlKFLLNKK'//<)--/F **,C&,q/"<"<<*889 ")5)=)=)?&00EE*// '++- ' '.G>>BBDI$(;(;(C#(L#(#6#6L''$fl(ST#|G#$ #$$	$ $	$ $	$ 	  	- 7LeG$((6##G,		-$	$H $I$	$#$ #$$	$ $	$ $	$ $	$ $	$s   JG<J(G? JIJ I2.C8I'A6III!	I2*J6I7J?AI
J	I

JIJI	I2 J+I.,J2J8I;9J Jc                    t         j                  }|A|j                  rt        dt	        |      d      |j
                  ry |j                  }|@y y )Nr#  r   )r9   r  r.  r   r$  r   r   )r   r4  s     rj   check_cancelledzAsyncIOBackend.check_cancelledb  sR    $0$E$E""$'A"U)A%OPP||''E ri   c                *   dfd}t        t        |      }t               }|j                  t        j
                  j                  d        |t        j                        }|j                  t        j                  ||      }|j                         S )Nc                  K   d}t        t        j                  t                     }t	        d |       t
        |<   | j                  j                  |       	    d {   | j                  j                  |       S 7 # t        $ r.}t        j                  j                  t        |            d d }~ww xY w# | j                  j                  |       w xY wwr9  )r1   r   r   r   r  r   r
  r  r  r   
concurrentfuturesrz  )r4  __tracebackhide__r   r  r   r   s       rj   task_wrapperz:AsyncIOBackend.run_async_from_thread.<locals>.task_wrapperu  s      $ln5D!*4!7LLLT"+!4[( $$T*	 )! L ((77CAtKL $$T*sH   ACB A? B #C?B 	B8
)B33B88B; ;CCr   )r4  rG   r   r   )r1   r   r   r   ri  rj  r   r9   r  r   run_coroutine_threadsafer  )	r   r   r   tokenry  r   r   rK  r  s	    ``      rj   run_async_from_threadz$AsyncIOBackend.run_async_from_threadn  sq    
	+ %u-.G66::IF|@@A18,,gt2
 xxzri   c                    t              dfd       }t               t        t        |      }|j	                  |       j                         S )Nc                     	 t         j                  j                  d       j                           y # t        $ r,} j                  |        t        | t              s Y d } ~ y d } ~ ww xY w)Nr   )ri  rj  r   r   r   r   r  r   )r  r   r  r   s    rj   rK  z4AsyncIOBackend.run_sync_from_thread.<locals>.wrapper  sZ    2266yAT4[)  $!#y1 2s   37 	A, "A''A,r   )r   r   r1   r   r   r  )r   r   r   r{  rK  r   r  s    ``   @rj   r  z#AsyncIOBackend.run_sync_from_thread  sK     
t	 
	 28%u-!!'*xxzri   c                    t               S rz   )r  r  s    rj   create_blocking_portalz%AsyncIOBackend.create_blocking_portal  s    ri   )cwdenvstart_new_sessionc          
       K   | j                          d {    |r/t        j                  t        d|      ||||||       d {   }	n"t        j                  |||||||d d {   }	|	j
                  rt        |	j
                        nd }
|	j                  rt        |	j                        nd }|	j                  rt        |	j                        nd }t        |	|
||      S 7 7 7 w)Nstr | bytes)r  r  r  r  r  r  )r  r   create_subprocess_shellr1   create_subprocess_execr  r  r  r  r  r  )r   commandshellr  r  r  r  r  r  r  stdin_streamstdout_streamstderr_streams                rj   open_processzAsyncIOBackend.open_process  s      nn#;;]G,"3 G $::"3 G >E]]*7==9PT?F~~+GNN;SW?F~~+GNN;SWwm]KK3 	s4   C+C%/C+C'"C+)C)*A<C+'C+)C+c                ~    t        t        |      d       t               j                  t	        t
        |             y )Nz AnyIO process pool shutdown taskrw  )r   r  r   r{  r   r  )r   r  s     rj   #setup_process_pool_exit_at_shutdownz2AsyncIOBackend.setup_process_pool_exit_at_shutdown  s3    *733	
 	**;WE	
ri   c           	        K   t        t        t        j                  t        f   t               j                  t        |||       d {         \  }}|j                          t        ||      S 7 'w)N)
local_addr)	r1   r/   r   r  r  r	   create_connectionr8  r!  )r   hostportlocal_addressr  r,  s         rj   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 rz   r^  r  r   rP  s    rj   r   z-AsyncIOBackend.connect_unix.<locals>.<lambda>  s    d.@.@.L ri   )r  r	   r/  AF_UNIXr  connectrh  rm  r   r   r_  r   r{  r   r   )r   pathr  r   rP  s      @@rj   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 rz   )r  r   socks     rj   create_tcp_listenerz"AsyncIOBackend.create_tcp_listener  s     &&ri   c                    t        |      S rz   )r  r  s     rj   create_unix_listenerz#AsyncIOBackend.create_unix_listener  s    !$''ri   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_endpointr  r   r   r  r  )r   r  r  remote_addressr  r  r,  s          rj   create_udp_socketz AsyncIOBackend.create_udp_socket  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 rz   r  r  s    rj   r   z<AsyncIOBackend.create_unix_datagram_socket.<locals>.<lambda>%	  s    $2D2DZ2P ri   )r  r	   r  r  rm  r   r   r_  r   r{  r   r   r  )r   rP  remote_pathr  r   s    `  @rj   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  typeprotor  c               \   K   t               j                  ||||||       d {   S 7 w)Nr  )r	   getaddrinfo)r   r  r  r  r  r  r  s          rj   r  zAsyncIOBackend.getaddrinfo/	  s:     & &'33$vDU 4 
 
 	
 
s   #,*,c                R   K   t               j                  ||       d {   S 7 wrz   )r	   getnameinfo)r   sockaddrr  s      rj   r  zAsyncIOBackend.getnameinfoF	  s$      &'33HeDDDDr  c                `  K   | j                          d {    	 t        j                         }|j                  |      rt        d      d t               }t        j                         x}||<   |j                  ||j                         	 |j                          d {    |j                  |d       |j                  |       d}nd}	 |st        y 7 # t        $ r i }t        j	                  |       Y w xY w7 ^# |j                  |d       |j                  |       d}w d}w xY ww)Nr$  TF)r  r  r   rf  r   r;   r	   r   rD   rY  r   r  rU  r<   )r   r  r  r   r  readables         rj   wait_socket_readablez#AsyncIOBackend.wait_socket_readableL	  s    nn	*&**,K
 ??4 #N3=!$+MMO3D!eii(	!**,tT*6""4( %% - 	  	*K[)	* tT*6""4( s\   D.CD.C AD.D  C?!D %3D. C<9D.;C<<D.?D *D++D.c                |  K   | j                          d {    	 t        j                         }|j                  |      rt        d      d t               }t        j                         x}||<   |j                  |j                         |j                         	 |j                          d {    |j                  |d       |j                  |       d}nd}	 |st        y 7 # t        $ r i }t        j	                  |       Y w xY w7 ^# |j                  |d       |j                  |       d}w d}w xY ww)Nr%  TF)r  r  r   rf  r   r;   r	   r   rD   r_  rd  r   r  r^  r<   )r   r  r  r   r  writables         rj   wait_socket_writablez#AsyncIOBackend.wait_socket_writableg	  s"    nn	,(,,.L
 D!#L1t;!%,]]_4T"uyy1	!**,d+7""4( %% - 	  	,Ll+	, d+7""4( s\   D<C%D<C' A*D<D .D/D 33D<' D
D<	D

D<D *D99D<c                    	 t         j                         S # t        $ r% t        d      }t         j	                  |       |cY S w xY w)N(   )r  r   rf  rB   r   )r   rl  s     rj   rg  z-AsyncIOBackend.current_default_thread_limiter	  sB    	*..00 	%b)G#''0N	s    +AAc                    t        |      S rz   )r  )r   r  s     rj   open_signal_receiverz#AsyncIOBackend.open_signal_receiver	  s     w''ri   c                (    t        t                     S rz   )r!  r   r  s    rj   get_current_taskzAsyncIOBackend.get_current_task	  s     00ri   c                p    t               D cg c]  }|j                         rt        |        c}S c c}w rz   )r   r   r!  )r   r   s     rj   get_running_tasksz AsyncIOBackend.get_running_tasks	  s&    4=KSDtyy{!$'SSSs   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   r-  r   r
   )r   	this_taskr   r3  s       rj   wait_all_tasks_blockedz%AsyncIOBackend.wait_all_tasks_blocked	  sy     nn N	! 	9$))>V[[]*$$	   	 %s'   A3A/?A3A3%A1&
A31A3c                    t        di |S )Nrh   )r#  )r   rL  s     rj   create_test_runnerz!AsyncIOBackend.create_test_runner	  s    $G$$ri   )
r   1Callable[[Unpack[PosArgsT]], Awaitable[T_Retval]]r   r  r|  r  rL  r  r   r   )r   r   rL  )r   r   r   )rY  r<  r   r   rE  )r   zabc.TaskGroup)r   z	abc.Event)r  r<  r   zabc.CapacityLimiter)FN)
r   &Callable[[Unpack[PosArgsT]], T_Retval]r   r  rk  rF  rl  zabc.CapacityLimiter | Noner   r   )r   r  r   r  r{  r   r   r   )r   r  r   r  r{  r   r   r   )r   zabc.BlockingPortal)r  z#str | bytes | Sequence[str | bytes]r  rF  r  int | IO[Any] | Noner  r  r  r  r  zstr | bytes | PathLike | Noner  zMapping[str, str] | Noner  rF  r   r  r  zset[abc.Process]r   r   rz   )r  rz  r  ra  r  IPSockAddrType | Noner   r  )r  r  r   zabc.UNIXSocketStream)r  rH  r   rJ   )
r  r    r  r  r  r  r  rF  r   zUDPSocket | ConnectedUDPSocket)rP  rH  r  zstr | bytes | Noner   z8abc.UNIXDatagramSocket | abc.ConnectedUNIXDatagramSocket)r  zbytes | str | Noner  zstr | int | Noner  zint | AddressFamilyr  zint | SocketKindr  ra  r  ra  r   z]list[tuple[AddressFamily, SocketKind, int, str, tuple[str, int] | tuple[str, int, int, int]]])r   )r  rI   r  ra  r   ztuple[str, str])r  rH  r   r   )r   rB   )r  r   r   z&ContextManager[AsyncIterator[Signals]])r   r6   )r   zlist[TaskInfo])rL  r  r   r#  )*rb   rc   rd   classmethodr   rO  r  rR  r  r  r  r
   r'  r(  r[  r^  r`  rb  rd  rq  rs  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rg  r  r  r  r  r  rh   ri   rj   r  r    s   )?) &) 	)
  ) 
) )8 " " ) )     : :$     "&((5==48=	= =
  *     - - 
 #(.28$48$ &8$  	8$
 ,8$ 
8$ 8$t 	( 	( ? & 	
 
 6 4 & 	
 
 *      .2(,"'%L4%L 	%L
 $%L %%L %%L +%L &%L  %L 
%L %LN 
 
 JN
1
1!
12G
1	
1 
1 4 4& ' ' ( ( ;; -; .	;
 ; 
(; ;. 2&25G2	A2 2.  '(!"
 
 

 $
 
 
 


 
, 45E%E.1E	E E
 & &4 & &4   ((	/( (
 1 1 T T   % %ri   r  )r   r   r   r   )r   r   )r   r(   r   rz  )r   r   r   rF  )r   r   r   z$Generator[BaseException, None, None])r  zset[Process]rq  r   r   r   r  )r   r   r   r6   )
__future__r   rt  r   concurrent.futuresrv  r'  r/  r  r   r   r   r   r   r   r	   r
   asyncio.base_eventsr   collectionsr   r   collections.abcr   r   r   r   
contextlibr   r   r   r   dataclassesr   	functoolsr   r   inspectr   r   r   r   ior   osr   r  r   r   r   r    r!   r"   typesr#   typingr$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   weakrefr2   ri  rv  r4   r5   r6   r7   _core._eventloopr8   r9   _core._exceptionsr:   r;   r<   r=   r>   _core._socketsr?   _core._streamsr@   _core._synchronizationrB   BaseCapacityLimiterrD   	BaseEventrE   _core._tasksrG   BaseCancelScoperH   rI   rJ   rK   rL   lowlevelrM   streams.memoryrN   rO   r  rR   typing_extensionsrU   rV   rW   enumrX   rY   rZ   r[   exceptiongroupr\   Enumr^   r   r   r   r   r   r   r   r  r   r   r   r   r  r   
TaskStatusrY  r  rd  r   _Retval_Queue_Typer  r  r  r  ByteReceiveStreamr  ByteSendStreamr  r  r  r  Protocolr  r  r!  rJ  rh  r  r  r  r  r  r  r  r  r  r  r!  r#  r  backend_classrh   ri   rj   <module>r     s6   "      
    7 * > > %  - ! $      ,       &  H H @  3 8 K 7 2 9   Nw +w++==16 
~& ~&@,, ::T2
#cN*0*>
' >>: @Q?R	< RYp7/ p7p
) 
) !"7 7")T Tv 8H-x/FFG H6 HV 9?9 5  288M1N . N
S'' 
8 e*#// * * e	*#,, 	* 	* e6ckk 6 6r<<"(<	<2#2!W%% !Hw// >Q$3## Q$h+3 +3\q;(<(< q;h9!** 9!x"!++ "!J-. -.`/-// /-d!#*@*@ !H!/33R3R !H 281F. F282H/ H:I :.o
) o
d 4::S3T 0 T', ',^KF' F'Rv%\ v%r ri   