+
    ~jqL                      a  0 t $ ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIHtHt ^ RIHtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIt^R	IHt ^R
IH t  ^RI!H"t"H#t#H$t$ ^RI%H&t& ^RI'H(t(H)t) ^RI*H+t+ ^ s,]	PZ                  s.R]/R&   ]P`                  R R l4       t1] ! R R4      4       t2 ! R R]4      t3R# )    )annotationsN)ABCabstractmethod)Callable	Generator)	dataclass)BaseContext)	FrameType)Anylogger)metrics)aiolog_exceptionstime_ms)duplex_unix)channelproto)LogQueueListenerz3Callable[[int, FrameType | None], Any] | int | None_mask_ctrl_c_originalc                   V ^8  d   QhRR/# )   returnzGenerator[None, None, None] )formats   "w/Users/mitch_tango/dev/rabbit-r1-livekit/agent/.venv/lib/python3.14/site-packages/livekit/agents/ipc/supervised_proc.py__annotate__r   "   s     @ @1 @    c               #  &  "   \         P                  ! 4       \         P                  ! 4       Jd   Rx  R# \        ^ 8X  d4   \        P                  ! \        P
                  \        P                  4      s\        ^,          s Rx  \        ^,          s\        ^ 8X  d,   \        P                  ! \        P
                  \        4       R# R#   \        ^,          s\        ^ 8X  d+   \        P                  ! \        P
                  \        4       i i ; i5i)u  Temporarily ignore SIGINT so forked/spawned children inherit SIG_IGN.

Unlike pthread_sigmask (per-thread), signal.signal is process-wide and
SIG_IGN is preserved across exec() per POSIX — so children start with
SIGINT ignored regardless of which thread performs the fork.

Uses refcounting so concurrent async callers (e.g. proc pool warming
multiple processes) don't clobber each other's saved handler.

signal.signal() can only be called from the main thread.
Keep the critical section *tiny* (just around Process.start()).
N)	threadingcurrent_threadmain_thread_mask_ctrl_c_refcountsignalSIGINTSIG_IGNr   r   r   r   _mask_ctrl_cr'   !   s       !)>)>)@@! &fmmV^^ LQ@" A%MM&--)>? & 	" A%MM&--)>? &s    A>DC
 AD
ADDc                  h    ] tR t^@t$ R]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R	]R
&   RtR# )	_ProcOptsfloatinitialize_timeoutclose_timeoutmemory_warn_mbmemory_limit_mbping_intervalping_timeouthigh_ping_threshold
str | None
http_proxyr   N)__name__
__module____qualname____firstlineno____annotations____static_attributes__r   r   r   r)   r)   @   s2    r   r)   c                     ] tR t^LtR R lt]R R l4       t]R R l4       t]R R l4       t	]R	 R
 l4       t
]R R l4       t]R R l4       t]R R l4       tR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R  lt]! ]R!7      R" R# l4       t]! ]R!7      R$ R% l4       t]! ]R!7      R& R' l4       t]! ]R!7      R( R) l4       tR* R+ ltR,tR-# ).SupervisedProcc               D    V ^8  d   QhRRRRRRRRRRRRRRR	R
RRRRRR/# )r   r+   r*   r,   r-   r.   r/   r0   r1   r3   r2   mp_ctxr	   loopzasyncio.AbstractEventLoopr   Noner   )r   s   "r   r   SupervisedProc.__annotate__M   sz     $9 $9 "$9 	$9
 $9 $9 $9 $9 #$9 $9 $9 ($9 
$9r   c       
        	   Wn         Wn        \        VVVVVVVVR 7      V n        RV n        RV n        RV n        RV n        RV n        \        P                  R,          ! 4       V n        \        P                  ! 4       V n        \        P                  R,          ! 4       V n        \        P                  R,          ! 4       V n        R# ))r+   r,   r-   r.   r/   r0   r1   r3   NF)_loop_mp_ctxr)   _opts	_exitcode_pid_supervise_atask_closing
_kill_sentasyncioFuture_initialize_futLock_lock_shutdown_ack_fut_shutting_down_fut)selfr+   r,   r-   r.   r/   r0   r1   r3   r=   r>   s   &$$$$$$$$$$r   __init__SupervisedProc.__init__M   s     
1')+'% 3!	

 &* $	;?&~~d35\\^
!(!5!7").."6"8r   c               $    V ^8  d   QhRRRRRR/# )r   cchzsocket.socketlog_cchr   z
mp.Processr   )r   s   "r   r   r@   t   s    \\=\=\Z\r   c                	    R # Nr   )rQ   rU   rV   s   &&&r   _create_processSupervisedProc._create_processs   s    Y\r   c                    V ^8  d   QhRRRR/# )r   ipc_chz!aio.ChanReceiver[channel.Message]r   r?   r   )r   s   "r   r   r@   w   s    VV'HVTVr   c                	   "   R # 5irX   r   )rQ   r\   s   &&r   
_main_taskSupervisedProc._main_taskv   s     SVs   c                   V ^8  d   QhRR/# r   r   boolr   )r   s   "r   r   r@   z   s     Z Z$ Zr   c                	R    \         P                  ! R R4      P                  4       R9  # )LK_DUMP_STACK_TRACES0)re   falseno)osgetenvlowerrQ   s   &r   enabled_stack_trace_dump'SupervisedProc.enabled_stack_trace_dumpy   s#    yy/5;;=EYYYr   c                   V ^8  d   QhRR/# r   r   z
int | Noner   )r   s   "r   r   r@   ~   s      * r   c                	    V P                   # rX   )rE   rk   s   &r   exitcodeSupervisedProc.exitcode}   s    ~~r   c                   V ^8  d   QhRR/# ra   r   )r   s   "r   r   r@      s       r   c                	    V P                   # rX   )rI   rk   s   &r   killedSupervisedProc.killed   s    r   c                   V ^8  d   QhRR/# ro   r   )r   s   "r   r   r@      s      Z r   c                	    V P                   # rX   )rF   rk   s   &r   pidSupervisedProc.pid   s    yyr   c                   V ^8  d   QhRR/# ra   r   )r   s   "r   r   r@      s     1 1 1r   c                	    V P                   R J# rX   )rG   rk   s   &r   startedSupervisedProc.started   s    $$D00r   c                   V ^8  d   QhRR/# r   r   r?   r   )r   s   "r   r   r@      s     , ,T ,r   c                   "   V P                   '       d   \        R4      hV P                  '       d   \        R4      h\        P                  ! V P                  4       4      G Rj  xL
  R#  L5i)zstart the supervised processzprocess already startedzprocess is closedN)r}   RuntimeErrorrH   rJ   shield_startrk   s   &r   startSupervisedProc.start   sG     <<<899===233nnT[[]+++s   /A-2A-$A+%A-c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r@      s     ;P ;Pd ;Pr   c                	  a a"   R  V 3R llpS P                   ;_uu_4       GRj  xL
  \        P                  ! 4       w  r#\        P                  ! 4       w  rEW#WE3pRpRo \        P                  P                  V4      G Rj  xL
 pVS n        \        P                  P                  V4      p\        W4      oSP                  4        S P                  W54      S n        \        4       ;_uu_ 4        S P                  P                  RS P                  P                  4      G Rj  xL
  RRR4       TP'                  4        TP'                  4        S P                  P.                  S n        \2        P4                  R,          ! 4       S n        R TT 3R llp
\8        P:                  ! T
RR7      pTP                  4        \2        P<                  ! S P?                  4       4      S n         RRR4      GRj  xL
  R#  EL EL{ L  + '       g   i     L; i  \         Ed    T FR  p	\         P"                  ! \$        4      ;_uu_ 4        T	P'                  4        RRR4       K@    + '       g   i     KQ  ; i	  Tec   \         P"                  ! \        P(                  4      ;_uu_ 4        TP+                  4       G Rj  xL 
  RRR4       M  + '       g   i     M; iSeZ   \         P"                  ! \        P(                  4      ;_uu_ 4        SP-                  4        RRR4       h   + '       g   i     h ; ih i ; i ELN  + GRj  xL 
 '       g   i     R# ; i5i)c                    V ^8  d   QhRRRR/# )r   recordzlogging.LogRecordr   r?   r   )r   s   "r   r   +SupervisedProc._start.<locals>.__annotate__   s     	, 	,&7 	,D 	,r   c                r   < SP                  4       pVP                  4        F  w  r#\        WV4       K  	  R # rX   )logging_extraitemssetattr)r   extrakeyvaluerQ   s   &   r   _add_proc_ctx_log0SupervisedProc._start.<locals>._add_proc_ctx_log   s-    &&(E#kkm
U+ ,r   Nc                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r      s      t r   c                    < SP                   P                  4        S P                  4         SP                  P	                  SP
                  P                  R 4       R #   \         d     R # i ; irX   )_procjoinstoprB   call_soon_threadsafe	_join_fut
set_resultr   )log_listenerrQ   s   r   	_sync_run(SupervisedProc._start.<locals>._sync_run   sR    

!!!#JJ33DNN4M4MtT# s   0A A.-A.proc_join_thread)targetname)!rN   socket
socketpairr   _AsyncDuplexopen_pch_Duplexr   r   rY   r   r'   rB   run_in_executor	Exception
contextlibsuppressOSErrorcloseDuplexClosedacloser   ry   rF   rJ   rK   r   r    Threadcreate_task_supervise_taskrG   )rQ   r   mp_pchmp_cch
mp_log_pch
mp_log_cchsocketspchlog_pchsr   threadr   s   f           @r   r   SupervisedProc._start   sN    	, 	,
 ::::#..0NF%+%6%6%8"Jz>G37C48L'4499&AA	%--22:>/K""$!11&E
 "^^**44T4::;K;KLLL $  LLN

DI$^^D13DN  %%Y=OPFLLN$+$7$78L8L8N$OD!k :: B M $^  A#,,W55	 6555 ! ?#,,[-E-EFF!jjl** GFFF  +#,,[-E-EFF$))+ G GF/ :::s   "M#G<M#7M""HG?A-H24H	&H'H	+H3B7M*M#5M6M#?HH	HHMH3M 
I%
M %I60;M +K?K K	M K8M L+"	M +L;6
M  MM#M 	M
M 	M 		M#c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r@      s     8 8D 8r   c                   "   V P                   '       g   \        R4      hV P                  '       d+   \        P                  ! V P                  4      G Rj  xL
  R# R#  L5i)zwait for the process to finishprocess not startedN)r}   r   rG   rJ   r   rk   s   &r   r   SupervisedProc.join   sF     |||455   ..!6!6777 !7s   /A #A A	A c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r@      s     / /$ /r   c                  "   \         P                  ! V P                  \        P                  ! V P
                  P                  4       V P                  P                  V P                  P                  V P                  P                  V P                  P                  ;'       g    RR7      4      G Rj  xL
   \        P                  ! RV P                  4       R7       \        P                   ! 4       p\"        P$                  ! \         P&                  ! V P                  \        P(                  4      V P                  P*                  R7      G Rj  xL
 p\-        V\        P.                  4      '       g   Q R4       hVP0                  '       d   \3        RVP0                   24      hV P4                  P7                  R4       \        P                   ! 4       V,
          p\8        P:                  ! VR	7       \        P                  ! R
/ V P                  4       CR\=        V^4      /CR7       R#  ELy L  \"        P>                   dd    T P4                  PA                  \"        P>                  ! R4      4       T PC                  4       G Rj  xL 
  T PE                  4       G Rj  xL 
  h \F         d"   pT P4                  PA                  T4       h Rp?ii ; i5i)zwinitialize the process, this is sending a InitializeRequest message and waiting for a
InitializeResponse with a timeout )asyncio_debugr/   r0   r1   r3   Nzinitializing processr   timeoutz(first message must be InitializeResponsezprocess initialization failed: )time_elapsedzprocess initializedelapsed_timez process initialization timed out)$r   asend_messager   r   InitializeRequestrB   	get_debugrD   r/   r0   r1   r3   r   infor   timeperf_counterrJ   wait_forarecv_messageIPC_MESSAGESr+   
isinstanceInitializeResponseerrorr   rL   r   r   proc_initializedroundTimeoutErrorset_exception_send_dump_signal_send_kill_signalr   )rQ   
start_timeinit_resr   es   &    r   
initializeSupervisedProc.initialize   s     ##II##"jj224"jj66!ZZ44$(JJ$B$B::0066B	
 		
 		
 	KK.d6H6H6JK**,J$--%%dii1C1CD

55 H h(@(@AA :A ~~~"%DX^^DT#UVV$$//5,,.;L$$,?KK%V++-V~u\ST?UV=		
& ## 	  ..$$%GH ((***((*** 	  ..q1	so   B0K2H+3K8BH0 H.<H0 BH0 )K.H0 0AKJ
K J#!K0K1KKKc                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r@     s     %< %<d %<r   c                >  "   V P                   '       g   R# RV n        \        P                  ! \        P
                  4      ;_uu_ 4        \        P                  ! V P                  \        P                  ! 4       4      G Rj  xL
  RRR4        \        P                  ! V P                  V P                  P                  R7      G Rj  xL
  V P,                  P/                  4       '       g   V P,                  G Rj  xL
  V P0                  '       dt   V P0                  P/                  4       '       gT    \        P                  ! \        P2                  ! V P0                  4      V P                  P                  R7      G Rj  xL
  V P4                  ;_uu_4       GRj  xL
  V P0                  '       d)   \        P2                  ! V P0                  4      G Rj  xL
  RRR4      GRj  xL
  R#  ELn  + '       g   i     ELu; i EL>  \        P                    d]    \"        P$                  ! RT P'                  4       R7       T P)                  4       G Rj  xL 
  T P+                  4       G Rj  xL 
   ELi ; i EL L  \        P                    d]    \"        P$                  ! RT P'                  4       R7       T P)                  4       G Rj  xL 
  T P+                  4       G Rj  xL 
   ELli ; i ELX EL! EL  + GRj  xL 
 '       g   i     R# ; i5i)z2attempt to gracefully close the supervised processNTr   z5process did not ack shutdown in time, killing processr   z-process did not exit in time, killing process)r}   rH   r   r   r   r   r   r   r   r   ShutdownRequestrJ   r   rO   rD   r,   r   r   r   r   r   r   rP   donerG   r   rN   rk   s   &r   r   SupervisedProc.aclose  s     |||  !9!9::''		53H3H3JKKK ;	+""4#9#94::C[C[\\\ &&++--))))   )>)>)C)C)E)E
/&&NN4#8#894::C[C[   ::::$$$nnT%:%:;;; ::9 L ;:: ]## 	+LLG((* ((***((***	+ * '' /C,,. ,,...,,.../ ; :::sA  AL
8G3G0G3L9H
 	H
H
 L.L=I>>LL5AJ JJ LK7 L#6L K:L L)K=*L0G33H	>	LH
 
AI;II;1I42I;7L:I;;LJ AK4KK4*K-+K40L3K44L:L =L L	L	
L	L		Lc                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r@   4  s     < <D <r   c                  "   V P                   '       g   \        R4      hRV n        V P                  4       G Rj  xL
  V P	                  4       G Rj  xL
  V P
                  ;_uu_4       GRj  xL
  V P                  '       d)   \        P                  ! V P                  4      G Rj  xL
  RRR4      GRj  xL
  R#  L Lo LT L L  + GRj  xL 
 '       g   i     R# ; i5i)z&forcefully kill the supervised processr   TN)	r}   r   rH   r   r   rN   rG   rJ   r   rk   s   &r   killSupervisedProc.kill4  s     |||455$$&&&$$&&&::::$$$nnT%:%:;;; :: 	'&; :::s   8C'C C'CC'/C0C'36C
)C*C
.C'9C:C'C'C'C
C'
C$	C
C$	C$		C'c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r@   A  s       r   c                	  "   V P                   '       g   R # \        \        R4      '       d   R #  \        P                  ! RV P                  4       R7       \        P                  ! V P                  \        P                  ! 4       4      G R j  xL
  \        P                  ! R4      G R j  xL
  R #  L$ L  \         d     R # i ; i5i)NSIGUSR1z0sending DumpStackTraceRequest message to processr         ?)rl   hasattrr$   r   r   r   r   r   r   r   DumpStackTraceRequestrJ   sleepr   rk   s   &r   r    SupervisedProc._send_dump_signalA  s     ,,,69%%		 KKB$J\J\J^ ''		53N3N3PQQQ--$$$ R$ 		sM   -CAB6 B2B6 +B4,B6 0C2B6 4B6 6CCCCc                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r@   S  s       r   c                ~  "    V P                   P                  4       '       g   R#  \        P                  ! RT P                  4       R7       \        P                  R8X  d=    T P                   P                  4       '       d   T P                   P                  4        M\        \        R4      '       d    \        P                  ! RT P                  4       R7       \        P                  ! T P                   P                  \        P                  4       \        P                   ! R4      G Rj  xL
   T P                   P                  4       '       d   T P                   P                  4        RT n        R#   \         d     R# i ; i  \         d     L(i ; i Lk  \"         d     Lvi ; i  \         d     LLi ; i5i)	zforcefully kill the processNzkilling processr   win32r   z!sending SIGUSR1 signal to processr   T)r   is_alive
ValueErrorr   r   r   sysplatform	terminater   r$   rh   r   ry   r   rJ   r   r   rI   rk   s   &r   r    SupervisedProc._send_kill_signalS  sK    	::&&(( )
 	%T-?-?-AB<<7"::&&((JJ((* vy))KK C4K]K]K_`GGDJJNNFNN;!--,,,::&&((JJOO% 1  		   -  
  s   F= E6 >F=#F F F=5A8F -F.F 3F, F, -	F=6FF=FF=FF=FF=F F)&F=(F))F=,F:7F=9F::F=r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r@   s  s     % %t %r   c                	  a"    V P                   G R j  xL
  \        P
                  ! V P                  P                  4      p\        P                  \        P                  ,          ! 4       o\        P                  ! V P                  S4      4      p\        P                  ! V P                  SV4      4      p\        P                  ! V P                  V4      4      pVP                  V3R l4       R pV P                  P                   ^ 8  g   V P                  P"                  ^ 8  d%   \        P                  ! V P%                  4       4      pV P&                  G R j  xL
  V P(                  P*                  V n        V P(                  P/                  4        \        P0                  ! WCV4      G R j  xL
  Ve   \        P0                  ! V4      G R j  xL
  \2        P4                  ! \6        P8                  4      ;_uu_ 4        V P:                  P=                  4       G R j  xL
  R R R 4       V P,                  ^ 8w  dJ   V P>                  '       g6   \@        PB                  ! RV P*                   2V PE                  4       R7       R # R # R #  ELw  \        P                   d     EL\         d     ELi ; i ELZ EL	 L L  + '       g   i     L; i5i)Nc                $   < SP                  4       # rX   )r   )_r\   s   &r   <lambda>0SupervisedProc._supervise_task.<locals>.<lambda>  s    &,,.r   z'process exited with non-zero exit code r   )#rL   rJ   r   r   r   r   rD   r0   Chanr   Messager   r^   _read_ipc_task_ping_pong_taskadd_done_callbackr.   r-   _memory_monitor_taskr   r   rq   rE   r   cancel_and_waitr   r   r   r   r   r   rI   r   r   r   )rQ   pong_timeout	main_taskread_ipc_task	ping_taskmemory_monitor_taskr\   s   &     @r   r   SupervisedProc._supervise_taskr  s    	&&&& yy!8!89'//*,''(?@	++D,?,?,UV''(<(<\(JK	''(@A9=::%%)TZZ-F-F-J")"5"5d6O6O6Q"Rnn,,

!!)IFFF*%%&9:::  !9!9::))""$$$ ; >>QtLL9$--I((* (7? '## 	 		" 	 	G ; % ;:s   KJ JJ EKJ7AK1J:2!KJ=0KK"J?#K'*K9KJ J4#K&J4/J40K3J44K:K=K?KK	Kc               $    V ^8  d   QhRRRRRR/# )r   r\   zaio.Chan[channel.Message]r	  	aio.Sleepr   r?   r   )r   s   "r   r   r@     s$     (5 (5/(5?H(5	(5r   c                	  "     \         P                  ! V P                  \        P                  4      G Rj  xL
 p\        T\        P                  4      '       d   \        4       TP                  ,
          pY@P                  P                  R,          8  d+   \        P                  ! RRT/T P                  4       CR7       \         P"                  ! \$        P&                  4      ;_uu_ 4        TP)                  4        RRR4       \        T\        P*                  4      '       d<   T P,                  P/                  4       '       g   T P,                  P1                  R4       \        T\        P2                  4      '       d<   T P4                  P/                  4       '       g   T P4                  P1                  R4       \        T\        P6                  4      '       d5   \        P8                  ! RRTP:                  /T P                  4       CR7       TP=                  T4       EK"   EL  \
        P                   d     Mi ; i  + '       g   i     ELM; iT P,                  P/                  4       '       g   T P,                  P1                  R4       T P4                  P/                  4       '       g   T P4                  P1                  R4       R# R# 5i)TNi  zprocess is unresponsivedelayr   zprocess exitingreason)r   r   r   r   r   r   r   r   PongResponser   	timestamprD   r1   r   warningr   r   r   r   SleepFinishedresetShutdownRequestAckrO   r   r   ShuttingDownrP   Exitingr   r  send_nowait)rQ   r\   r	  msgr  s   &&&  r   r  SupervisedProc._read_ipc_task  s     #11$))U=O=OPP #u1122	CMM1::99D@@NN1&F1C1C1EF
  (():):;; &&( < #u7788--2244**55d;#u1122..3355++66t<#u}}--%#SZZH43E3E3GH
 s#; Q++  <;;( %%**,,""--d3&&++--##..t4 .sk   K2H( H%H( B2K.I?AKAK"BK%H( (I =K?I  KI	(K7:K2Kc                    V ^8  d   QhRRRR/# )r   r	  r  r   r?   r   )r   s   "r   r   r@     s     . .) . .r   c                	  a aa"   \         P                  ! S P                  P                  4      o\	        \
        R 7      R VV 3R ll4       p\	        \
        R 7      R VV 3R ll4       p\        P                  ! V! 4       4      \        P                  ! V! 4       4      .p \        P                  ! V!  G Rj  xL
  \         P                  ! V!  G Rj  xL
  R#  L" L  \         P                  ! T!  G Rj  xL 
  i ; i5i)r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   4SupervisedProc._ping_pong_task.<locals>.__annotate__  s     	 	T 	r   c                   <"    S P                  4       G Rj  xL
   \        P                  ! SP                  \        P
                  ! \        4       R7      4      G Rj  xL
  Kb   LM L  \        P                   d     R# i ; i5i)TN)r  )	tickr   r   r   r   PingRequestr   r   r   )r/   rQ   s   r   _send_ping_co5SupervisedProc._ping_pong_task.<locals>._send_ping_co  sh     #((***!//		5;L;LW^W`;abbb +b"// sE   BA&BAA* A( A* $B(A* *B?BBBc                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r"    s     	+ 	+ 	+r   c                    <"   S G R j  xL
  \         P                  ! RSP                  4       R7       SP                  4       G R j  xL
  SP	                  4       G R j  xL
  R #  L\ L  L
5i)Nz(process is unresponsive, killing processr   )r   r   r   r   r   )r	  rQ   s   r   _pong_timeout_co8SupervisedProc._ping_pong_task.<locals>._pong_timeout_co  sV     LLC4K]K]K_`((***((*** **s3   A,A&=A,A(A,A* A,(A,*A,N)
r   intervalrD   r/   r   r   rJ   r   gatherr  )rQ   r	  r&  r*  tasksr/   s   ff   @r   r  SupervisedProc._ping_pong_task  s     TZZ%=%=>	v	&	 	 
'	 
v	&	+ 	+ 
'	+ $$]_5w7J7JK[K]7^_	...%(((%%u--- )-#%%u---sN   BD!C 8C9C =DCDC DC>7C:8C>>Dc                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r@     s     7# 7#D 7#r   c           	       "   V P                   '       Eg   V P                  '       Eg    V P                  '       g!   \        P                  ! ^4      G Rj  xL
  KY  \
        P                  ! V P                  4      pVP                  4       pVP                  R,          pV P                  P                  ^ 8  d   W0P                  P                  8  dr   \        P                  ! RRVRV P                  P                  /V P                  4       CR7       V P                  4       G Rj  xL
  V P                  4       G Rj  xL
  MV P                  P                   ^ 8  dq   W0P                  P                   8  dW   \        P"                  ! RRVRV P                  P                   RV P                  P                  /V P                  4       CR7       \        P                  ! ^4      G Rj  xL
  EK  R# R#  EL L L  \
        P$                  \
        P&                  3 d]   pT P                   '       g   T P                  '       d    Rp?R# \        P"                  ! RT P                  4       TR	7        Rp?R# Rp?i\(         dR    T P                   '       g   T P                  '       d    R# \        P*                  ! R
T P                  4       R7        ELi ; i L5i)zBMonitor memory usage and kill the process if it exceeds the limit.Nz.process exceeded memory limit, killing processmemory_usage_mbr.   r   zprocess memory usage is highr-   z%Failed to get memory info for process)r   exc_infozError in memory monitoring taski   )rH   rI   rF   rJ   r   psutilProcessmemory_inforssrD   r.   r   r   r   r   r   r-   r  NoSuchProcessAccessDeniedr   	exception)rQ   processr6  	memory_mbr   s   &    r   r  #SupervisedProc._memory_monitor_task  s     ---2yyy!--*** !..3%113'OO{;	::--1i**B\B\6\LLH-y-tzz/I/I #002 0022200222ZZ..2y::C\C\7\NN6-y,djj.G.G-tzz/I/I #002	< --"""k )8- +" 32 ((&*=*=> 
===DOOO;,,.  ===DOOO  5,,. 	 #s   KKG< G< G5G< KCG< 'G8(G< ?G: G< KBG< K)K*K5G< 8G< :G< <%K!#I8K'I82K8KKK*K-&KKKKc                   V ^8  d   QhRR/# )r   r   zdict[str, Any]r   )r   s   "r   r   r@     s      ~ r   c                	"    R V P                   /pV# ry   r@  )rQ   r   s   & r   r   SupervisedProc.logging_extra  s    488!
 r   )rH   rE   rL   r   rI   rN   rB   rC   rD   r   rF   r   rO   rP   rG   N)r4   r5   r6   r7   rR   r   rY   r^   propertyrl   rq   ru   ry   r}   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r9   r   r   r   r;   r;   L   s'   $9L \ \V VZ Z       1 1,;Pz8/b%<N<$> 6"% #%N 6"(5 #(5T 6". #.4 6"7# #7#r r   r;   )4__conditional_annotations__
__future__r   rJ   r   loggingmultiprocessingmprh   r$   r   r   r    r   abcr   r   collections.abcr   r   dataclassesr   multiprocessing.contextr	   typesr
   typingr   r4  logr   	telemetryr   utilsr   r   r   	utils.aior   r   r   r   	log_queuer   r#   SIG_DFLr   r8   contextmanagerr'   r)   r;   )rC  s   @r   <module>rU     s    " "     	   
   # / ! /      0 0 #  ' MS^^ J [ @ @<   SS Sr   