+
    ~j'                    X   ^ RI Ht ^ RIt^ RIt^ RIHtHt ^ RIHt ^ RI	H
t
Ht ^RIHt ^RIHtHtHtHt ^RIHt ^R	IHt ^R
IHt ^RIHtHtHt ^RIHt ]R,          t]! ]P>                  ! ]! 4       PA                  4       4      ^4      t! ! R R]PD                  ],          4      t#R# )    )annotationsN)	AwaitableCallable)BaseContext)AnyLiteral)utils)
JobContextJobExecutorType
JobProcessRunningJobInfologger)aio)get_cpu_monitor)inference_executorjob_proc_executorjob_thread_executor)JobExecutorc                  >  a  ] tR t^tR V 3R ll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4       t]P                  ! ]R7      R R l4       t]P                  ! ]R7      R R l4       t]P                  ! ]R7      R R l4       tRtV ;t# )ProcPoolc               T    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R/# )   initialize_process_fnczCallable[[JobProcess], Any]job_entrypoint_fncz'Callable[[JobContext], Awaitable[None]]session_end_fncz.Callable[[JobContext], Awaitable[None]] | Nonenum_idle_processesintinitialize_timeoutfloatclose_timeoutsession_end_timeoutr   z+inference_executor.InferenceExecutor | Nonejob_executor_typer   mp_ctxr   memory_warn_mbmemory_limit_mb
http_proxyz
str | Noneloopzasyncio.AbstractEventLoopreturnNone )formats   "q/Users/mitch_tango/dev/rabbit-r1-livekit/agent/.venv/lib/python3.14/site-packages/livekit/agents/ipc/proc_pool.py__annotate__ProcPool.__annotate__   s     -+ -+ !<-+ D	-+
 H-+  -+ "-+ -+ #-+ H-+ +-+ -+ -+ -+ -+  (!-+" 
#-+    c               	&  < \         SV `  4        Wn        Wn        Wn        W n        W0n        W`n        Wpn        Wn	        WPn
        Wn        Wn        Wn        W@n        Wn        W@n        \"        P$                  ! \&        4      V n        \"        P*                  \,        ,          ! 4       V n        . V n        \3        4       V n        \3        4       V n        \3        4       V n        R V n        R V n        \"        P>                  ! 4       V n         ^ V n!        R# )FN)"super__init___job_executor_type_mp_ctx_initialize_process_fnc_job_entrypoint_fnc_session_end_fnc_close_timeout_session_end_timeout_inf_executor_initialize_timeout_loop_memory_limit_mb_memory_warn_mb_default_num_idle_processes_http_proxy_target_idle_processesasyncio	SemaphoreMAX_CONCURRENT_INITIALIZATIONS	_init_semQueuer   _warmed_proc_queue
_executorsset_spawn_tasks_close_tasks_monitor_tasks_started_closedEvent_idle_ready_jobs_waiting_for_process)selfr   r   r   r   r   r!   r"   r   r#   r$   r%   r&   r'   r(   	__class__s   &$$$$$$$$$$$$$$r-   r3   ProcPool.__init__   s    $ 	"3'=$#5  /+$7!/#5 
 /-+=(%&8# **+IJ")--"<">-/58U58U7:u"==?)*&r0   c                   V ^8  d   QhRR/# )r   r)   zlist[JobExecutor]r+   )r,   s   "r-   r.   r/   M   s      , r0   c                	    V P                   # N)rI   rS   s   &r-   	processesProcPool.processesL   s    r0   c                    V ^8  d   QhRRRR/# )r   job_idstrr)   zJobExecutor | Noner+   )r,   s   "r-   r.   r/   P   s     
 
C 
,> 
r0   c                	D   a \        V3R  lV P                   4       R4      # )c              3     <"   T FA  qP                   '       g   K  VP                   P                  P                  S8X  g   K=  Vx  KC  	  R # 5irX   )running_jobjobid).0xr]   s   & r-   	<genexpr>)ProcPool.get_by_job_id.<locals>.<genexpr>R   s1     \1==QQ]]=N=N=Q=QU[=[QQs   A"A
AN)nextrI   )rS   r]   s   &fr-   get_by_job_idProcPool.get_by_job_idP   s    \\
 	
r0   c                   V ^8  d   QhRR/# r   r)   r*   r+   )r,   s   "r-   r.   r/   V   s     U UT Ur0   c                	  "   V P                   '       d   R # RV n         \        P                  ! V P                  4       4      V n        V P
                  ^ 8  dM    \        P                  ! V P                  P                  4       V P                  ^,           R7      G R j  xL
  R # R #  L  \        P                   d    \        P                  ! R4        R # i ; i5i)NT)timeoutz2timed out waiting for idle processes to initialize)rN   rC   create_task
_main_task_main_ataskr@   wait_forrQ   waitr<   TimeoutErrorr   warningrY   s   &r-   startProcPool.startV   s     ==="..t/@A++a/U&&$$))+ 44q8  	 0 '' USTUs=   ACAB( B&B( "C&B( (+CCCCc                   V ^8  d   QhRR/# rl   r+   )r,   s   "r-   r.   r/   h   s     4 4d 4r0   c                	   "   V P                   '       g   R # RV n        \        P                  ! V P                  4      G R j  xL
  R #  L5i)NT)rN   rO   r   cancel_and_waitrq   rY   s   &r-   acloseProcPool.acloseh   s2     }}}!!$"2"2333s   ?A
AA
c                    V ^8  d   QhRRRR/# )r   infor   r)   r*   r+   )r,   s   "r-   r.   r/   o   s     + +^ + +r0   c           
     	B  "   ^p\        V4       EF{  pV ;P                  ^,          un         V P                  P                  4       '       d   \	        V P
                  4      V P                  8  de   \        P                  ! V P                  4       4      pV P
                  P                  V4       VP                  V P
                  P                  4       V P                  P                  4       '       d/   \        P                  ! RRVP                  P                  /R7       V P                  P!                  4       G Rj  xL
 pV ;P                  ^,          un         VP#                  V4      G Rj  xL
  V P%                  RV4        R# 	  R#  LP  T ;P                  ^,          un        i ; i L=  \&         d    \        P                  ! TP)                  4       4      pT P*                  P                  T4       TP                  T P*                  P                  4       Y2^,
          8X  d1   \        P,                  ! RTRTP                  P                  /R7       h \        P                  ! RRTP                  P                  RT^,           /R7        EK  i ; i5i)	   zBno warmed process available for job, waiting for one to be createdr]   extraNprocess_job_launchedz1failed to launch job on process after %d attemptsz<failed to launch job on process, retrying with a new processattempt)rangerR   rH   emptylenrK   rC   ro   _proc_spawn_taskaddadd_done_callbackdiscardr   ru   rb   rc   get
launch_jobemit	Exceptionr{   rL   error)rS   r~   MAX_ATTEMPTSr   taskproc
close_tasks   &&     r-   r   ProcPool.launch_jobo   s    \*G**a/*4++1133D--.1O1OO #..t/D/D/FGD%%))$/**4+<+<+D+DE**0022NN\'5
 "4488::..!3.ood+++		0$73 +$ ;..!3. ,  $00?
!!%%j1,,T->->-F-FGQ..LLK$'5
 R#TXX[[)Wq[I sm   +JCF6AFFFJ F44F25F4JFF//J2F44C#JJJJc                    V ^8  d   QhRRRR/# )r   r   r   r)   r*   r+   )r,   s   "r-   r.   r/      s     9 9C 9D 9r0   c                	    Wn         R # rX   rB   )rS   r   s   &&r-   set_target_idle_processes"ProcPool.set_target_idle_processes   s    &8#r0   c                   V ^8  d   QhRR/# )r   r)   r   r+   )r,   s   "r-   r.   r/      s     + +s +r0   c                	    V P                   # rX   r   rY   s   &r-   target_idle_processesProcPool.target_idle_processes   s    ***r0   r   c                   V ^8  d   QhRR/# rl   r+   )r,   s   "r-   r.   r/      s     AD AD ADr0   c                	  "   V P                   \        P                  8X  d}   \        P                  ! V P
                  V P                  V P                  V P                  V P                  V P                  V P                  R RV P                  V P                  R7      pMV P                   \        P                  8X  d   \        P                   ! V P
                  V P                  V P                  V P                  V P                  V P                  V P                  V P"                  V P                  R ^<RV P$                  V P&                  V P                  R7      pM\)        RV P                    24      hV P*                  P-                  V4       Rp V P.                  ;_uu_4       GRj  xL
  V P0                  '       g   V P3                  RV4       VP5                  4       G Rj  xL
  V P3                  RV4       VP7                  4       G Rj  xL
  V P3                  R	V4       V P8                  P;                  V4       V P8                  P=                  4       V P>                  8  d   V P@                  PC                  4        R
pRRR4      GRj  xL
  T'       gH   T P*                  PQ                  T4       TPS                  4       G Rj  xL
  T P3                  RT4       R# \L        PT                  ! T PW                  T4      4      pT PX                  P[                  T4       TP]                  T PX                  P^                  4       R#  EL ELj ELC L  + GRj  xL 
 '       g   i     L; i  \D         d+    \F        PH                  ! RTPK                  4       R7        EL\L        PN                   d     EL(i ; i L5i)g      @g      ?)r   r   r   r   r!   r"   r   ping_intervalhigh_ping_thresholdr'   r(   )r   r   r   r   r!   r"   r   r$   r(   r   ping_timeoutr   r%   r&   r'   zunsupported job executor: FNprocess_createdprocess_startedprocess_readyTzerror initializing processr   process_closed)0r4   r   THREADr   ThreadJobExecutorr6   r7   r8   r<   r9   r:   r;   rA   r=   PROCESSr   ProcJobExecutorr5   r?   r>   
ValueErrorrI   appendrF   rO   r   rv   
initializerH   
put_nowaitqsizer@   rQ   rJ   r   r   	exceptionlogging_extrarC   CancelledErrorremover{   ro   _monitor_process_taskrM   r   r   r   )rS   r   initializedmonitor_tasks   &   r-   r   ProcPool._proc_spawn_task   s     ""o&<&<<&88'+'C'C#'#;#; $ 5 5#'#;#;"11$($=$=#'#5#5!$'++ZZD $$(?(??$44'+'C'C#'#;#; $ 5 5#'#;#;"11$($=$=#'#5#5||ZZ!$'#33 $ 5 5++D$ 9$:Q:Q9RSTTt$	~~~~|||II/6**,&&II/6//+++IIot4++66t<..446$:Z:ZZ((,,."&K &~" OO""4(++-II&-**4+E+Ed+KL-&&t':':'B'BC3 & '+ &~~~  	W9ASASAUVV%% 		
  s   FOM3 )M*M3 -8M%M&)MMA6MM3 MM3 O.OOA?OM3 MMM3 M0	M 
M0	)M0	+M3 /O0M3 31N?$O'N?:N?;O>N??Oc                    V ^8  d   QhRRRR/# )r   r   r   r)   r*   r+   )r,   s   "r-   r.   r/      s     ) ) ) )r0   c                	   "    VP                  4       G R j  xL
  V P                  RV4       V P                  P                  V4       R #  L3  T P                  P                  T4       i ; i5i)Nr   )joinr   rI   r   )rS   r   s   &&r-   r   ProcPool._monitor_process_task   sT     	)))+II&-OO""4(  OO""4(s+   A-A AA A-A A**A-c                   V ^8  d   QhRR/# rl   r+   )r,   s   "r-   r.   r/      s     7 7$ 7r0   c                	  "    V P                   '       Eg   V P                  P                  4       \        V P                  4      ,           p\        \        V P                  V P                  4      V P                  4      pW!,
          p\        V4       Fg  p\        P                  ! V P                  4       4      pV P                  P                  V4       VP                  V P                  P                   4       Ki  	  \        P"                  ! R 4      G Rj  xL
  EK  R#  L	  \        P$                   d    \&        P(                  ! T P                  !  G Rj  xL 
  \        P*                  ! T P,                   Uu. uF  qfP/                  4       NK  	  Mu upi up!  G Rj  xL 
  \        P*                  ! T P0                  !  G Rj  xL 
  \        P*                  ! T P2                  !  G Rj  xL 
   R# i ; i5i)g?N)rO   rH   r   r   rK   maxminrB   r@   rR   r   rC   ro   r   r   r   r   sleepr   r   rz   gatherrI   r{   rL   rM   )rS   current_pendingtargetto_spawn_r   r   s   &      r-   rp   ProcPool._main_task   sd    	7lll"&"9"9"?"?"ACHYHYDZ"Z33T5U5UV22 "3xA"..t/D/D/FGD%%))$/**4+<+<+D+DE )
 mmC((( # )%% 	7%%t'8'8999..T__"M_T;;=_"MNNN..$"3"3444..$"5"5666		7s|   G=D" C?D" D D" G= D" "6G:E#G:<F
G:"F%#&G:	G
&G:0G31G:6G=9G::G=)rL   r9   rO   r@   rI   rA   rQ   r;   rF   r6   r<   r7   r4   rR   r=   rq   r>   r?   rM   r5   r8   r:   rK   rN   rB   rH   )__name__
__module____qualname____firstlineno__r3   propertyrZ   ri   rv   r{   r   r   r   r	   log_exceptionsr   r   r   rp   __static_attributes____classcell__)rT   s   @r-   r   r      s    -+ -+^  
U$4+Z9 + + (AD )ADF () )) (7 )7r0   r   )r   r   r   r   r   )$
__future__r   rC   mathcollections.abcr   r   multiprocessing.contextr   typingr   r    r	   rb   r
   r   r   r   logr   r   utils.hw.cpur   r   r   r   job_executorr   
EventTypesr   ceil	cpu_countrE   EventEmitterr   r+   r0   r-   <module>r      s~    "   / /   I I   * H H %
 "%TYY/@/J/J/L%Mq!Q h7u!!*- h7r0   