
    h(                        S SK r S SKrS SKrS SKrS SKrSSKJr  SSKJr  / SQr\	" \S5      r
\R                  \R                  4rSS 0r\ R                  S	:X  aQ   S SKrS SKr\	" \S
5      (       a  \R)                  S\R*                  05        \R)                  S\R,                  05         " S S\5      r " S S\5      r\" 5       r\R8                  r\R:                  r\R<                  r\R>                  rS r g! \ a    S SKr Nf = f)    N   )spawn)util)ensure_runningregister
unregisterpthread_sigmasknoopc                      g N r       W/home/james-whalen/.local/lib/python3.13/site-packages/multiprocess/resource_tracker.py<lambda>r   !   s    Dr   posix
sem_unlink	semaphoreshared_memoryc                       \ rS rSrSrg)ReentrantCallError9   r   N)__name__
__module____qualname____firstlineno____static_attributes__r   r   r   r   r   9   s    r   r   c                   J    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)ResourceTracker=   c                 T    [         R                  " 5       U l        S U l        S U l        g r   )	threadingRLock_lock_fd_pidselfs    r   __init__ResourceTracker.__init__?   s    __&
	r   c                     [        S5      e)Nz8Reentrant call into the multiprocessing resource tracker)r   r&   s    r   _reentrant_call_error%ResourceTracker._reentrant_call_errorD   s    
 !FH 	Hr   c                    U R                      [        U R                   S[        5      " 5       S:  a  U R                  5       sS S S 5        $ U R                  c
   S S S 5        g [
        R                  " U R                  5        S U l        [
        R                  " U R                  S5        S U l        S S S 5        g ! , (       d  f       g = f)N_recursion_countr   r   )	r#   getattrintr+   r$   osclosewaitpidr%   r&   s    r   _stopResourceTracker._stopL   s    ZZ tzz#5s;=A113	 Z
 xx Z HHTXXDHJJtyy!$DI ZZs   4B:B:"AB::
Cc                 :    U R                  5         U R                  $ r   )r   r$   r&   s    r   getfdResourceTracker.getfd]   s    xxr   c                    U R                      [        U R                   S[        5      " 5       S:  a  U R                  5       sSSS5        $ U R                  b  U R                  5       (       a
   SSS5        g[        R                  " U R                  5         U R                  b!  [        R                  " U R                  S5        SU l        SU l        [        R                  " S5        / n UR                  [        R                  R!                  5       5        Sn[        R$                  " 5       u  p4 UR                  U5        [&        R(                  " 5       nU/[*        R,                  " 5       -   nUSX#-  /-  n [.        (       a)  [0        R2                  " [0        R4                  [6        5        [*        R8                  " XVU5      n[.        (       a)  [0        R2                  " [0        R:                  [6        5        X@l        Xpl         [        R                  " U5         SSS5        g! [         a     GNpf = f! ["         a     GN-f = f! [.        (       a*  [0        R2                  " [0        R:                  [6        5        f f = f!   [        R                  " U5        e = f! [        R                  " U5        f = f! , (       d  f       g= f)zMake sure that resource tracker process is running.

This can be run from any process.  Usually a child process will use
the resource created by its parent.r.   r   Nr   zUresource_tracker: process died unexpectedly, relaunching.  Some resources might leak.z7from multiprocess.resource_tracker import main;main(%d)z-c)r#   r/   r0   r+   r$   _check_aliver1   r2   r%   r3   ChildProcessErrorwarningswarnappendsysstderrfileno	Exceptionpiper   get_executabler   _args_from_interpreter_flags_HAVE_SIGMASKsignalr	   	SIG_BLOCK_IGNORED_SIGNALSspawnv_passfdsSIG_UNBLOCK)r'   fds_to_passcmdrwexeargspids           r   r   ResourceTracker.ensure_runninga   s   
 ZZtzz#5s;=A113 Z xx#$$&& Z " yy,

499a0   	 I J K""3::#4#4#67 LC779DA""1%**,ut@@BBsw'U$}..v/?/?AQR--cEC$}..v/A/ACST
 	y Z$ )   * %}..v/A/ACST %
 y Zs   4J<#J<7 J<.H)&J<--H:J<4AJ=AI4J<J!	J<)
H73J<6H77J<:
IJ<IJ<7JJJJ!!J99J<<
K
c                 h     [         R                  " U R                  S5        g! [         a     gf = f)z;Check that the pipe has not been closed by sending a probe.s   PROBE:0:noop
TF)r1   writer$   OSErrorr&   s    r   r:   ResourceTracker._check_alive   s5    	 HHTXX01   		s   !$ 
11c                 (    U R                  SX5        g)z0Register name of resource with resource tracker.REGISTERN_sendr'   namertypes      r   r   ResourceTracker.register   s    

:t+r   c                 (    U R                  SX5        g)z2Unregister name of resource with resource tracker.
UNREGISTERNrZ   r\   s      r   r   ResourceTracker.unregister   s    

<-r   c                     U R                  5         SR	                  XU5      R                  S5      n[        U5      S:  a  [        S5      e[        R                  " U R                  U5      nU[        U5      :X  d    SR	                  U[        U5      5      5       eg ! [         a!    [        R                  " SU SU< S35         Nf = f)	NzSResourceTracker called reentrantly for resource cleanup, which is unsupported. The z object z might leak.z{0}:{1}:{2}
asciii   zmsg too longznbytes {0:n} but len(msg) {1:n})r   r   r<   r=   formatencodelen
ValueErrorr1   rU   r$   )r'   rM   r]   r^   msgnbytess         r   r[   ResourceTracker._send   s    
	<! $$S6==gFs8c> ^,,$((C(S! 	#D#K#KCH$ 	! " 	<
 MMgXdX\;<	<s   B (C	C	)r$   r#   r%   N)r   r   r   r   r(   r+   r4   r7   r   r:   r   r   r[   r   r   r   r   r   r   =   s2    
H"AF	,.r   r   c                    [         R                   " [         R                  [         R                  5        [         R                   " [         R                  [         R                  5        [        (       a)  [         R
                  " [         R                  [        5        [        R                  [        R                  4 H  n UR                  5         M     [        R                  5        Vs0 s H  o"[        5       _M     nn [!        U S5       nU H  n UR#                  5       R%                  S5      R'                  S5      u  pVn[        R)                  US5      nUc  [+        SU SU 35      eUS:X  a  X2   R-                  U5        Mz  US:X  a  X2   R/                  U5        M  US	:X  a  M  [1        S
U-  5      e   SSS5        UR7                  5        HK  u  p(U(       a%   [8        R:                  " S[=        U5      U4-  5        U H  n  [        U   " U5        M     MM     g! [         a     GMw  f = fs  snf ! [         a6     [        R2                  " [        R4                  " 5       6    GMa  !     GMh  = ff = f! , (       d  f       N= f! [         a     Nf = f! [         a(  n	[8        R:                  " SU< SU	< 35         Sn	A	NSn	A	ff = f! f = f! UR7                  5        H  u  p(U(       a6   [8        R:                  " S[=        U5      U4-  5        O! [         a     Of = fU HO  n  [        U   " U5        O5! [         a(  n	[8        R:                  " SU< SU	< 35         Sn	A	OSn	A	ff = fML  ! f = f   M     f = f)zRun resource tracker.rbrd   :NzCannot register z. for automatic cleanup: unknown resource type rY   ra   PROBEzunrecognized command %rzQresource_tracker: There appear to be %d leaked %s objects to clean up at shutdownzresource_tracker: z: )rG   SIGINTSIG_IGNSIGTERMrF   r	   rK   rI   r?   stdinstdoutr2   rB   _CLEANUP_FUNCSkeyssetopenstripdecodesplitgetrh   addremoveRuntimeError
excepthookexc_infoitemsr<   r=   rg   )
fdfr^   cachelinerM   r]   cleanup_funcrtype_cachees
             r   mainr      s    MM&--0
MM&..&..1}v113CDii$	GGI % (6':':'<='<eCE\'<E=-"d^q'+zz|':':7'C'I'I#'N$Cu#1#5#5eT#BL#+(.tf 555:G=> > j(((.,++D1*+Ds+JKK!  2 #(++-EMM #N#&{#3U";#< =
 $N&u-d3  $ #0?  		 >* ! 7	% ^> !  % N D!&LMMN % #(++-EMM #N#&{#3U";#< = ! #N&u-d3$ N D!&LMMN D $ #0s9  ?H$)H6 K I>A4H;I>	H;"I>$H;*I>,H;:I><K !$JJ$
H32H3;
I;&I0,I>0I7	2I;3I>7I;;I>>
JK 
JJ
K)KKKKKN7$LN
L)	&N(L)	)N3MM:
M5M0+M:0M55M:8N:M<<
N)!r1   rG   r?   r!   r<    r   r   __all__hasattrrF   rp   rr   rI   ru   r]   _multiprocess_multiprocessingImportError_posixshmemupdater   
shm_unlinkr   r   objectr   _resource_trackerr   r   r   r7   r   r   r   r   <module>r      s%  $ 
  
    
6 12MM6>>2  L 77g 0  ..)44
 	 // 
	 	Mf M` $% "11%%))
<[    s   C= =
D
	D
