
    b@h\(                        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 ddlmZ g dZ e	ed          Z
ej        ej        fZdd iZe j        d	k    rLd dlZd dlZ e	ed
          re                    dej        i           e                    dej        i            G d de          Z G d de          Z e            Zej        Zej        Zej        Zej        Zd ZdS )    N   )spawn)util)ensure_runningregister
unregisterpthread_sigmasknoopc                      d S N r       2  /home/conda/feedstock_root/build_artifacts/python-split_1749047345446/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehol/lib/python3.11/multiprocessing/resource_tracker.py<lambda>r   !   s    D r   posix
sem_unlink	semaphoreshared_memoryc                       e Zd ZdS )ReentrantCallErrorN)__name__
__module____qualname__r   r   r   r   r   6   s        Dr   r   c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )ResourceTrackerc                 R    t          j                    | _        d | _        d | _        d S r   )	threadingRLock_lock_fd_pidselfs    r   __init__zResourceTracker.__init__<   s#    _&&
			r   c                      t          d          )Nz8Reentrant call into the multiprocessing resource tracker)r   r"   s    r   _reentrant_call_errorz%ResourceTracker._reentrant_call_errorA   s    
 !FH H 	Hr   c                 l   | j         5  | j                                         dk    r |                                 cd d d            S | j        	 d d d            d S t	          j        | j                   d | _        t	          j        | j        d           d | _        d d d            d S # 1 swxY w Y   d S )Nr   r   )r   _recursion_countr&   r    osclosewaitpidr!   r"   s    r   _stopzResourceTracker._stopI   s+   Z 	 	 z**,,q001133		 	 	 	 	 	 	 	
 x	 	 	 	 	 	 	 	 HTXDHJty!$$$DI	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   1B)B)AB))B-0B-c                 8    |                                   | j        S r   )r   r    r"   s    r   getfdzResourceTracker.getfdZ   s    xr   c                 ,   | j         5  | j                                         dk    r |                                 cddd           S | j        |                                 r	 ddd           dS t          j        | j                   	 | j        t          j        | j        d           n# t          $ r Y nw xY wd| _        d| _        t          j        d           g }	 |                    t          j                                                   n# t           $ r Y nw xY wd}t          j                    \  }}	 |                    |           t%          j                    }|gt)          j                    z   }|d||z  gz  }	 t,          r$t/          j        t.          j        t4                     t)          j        |||          }t,          r$t/          j        t.          j        t4                     n1# t,          r%t/          j        t.          j        t4                     w w xY w|| _        || _        n#  t          j        |            xY w	 t          j        |           n# t          j        |           w xY w	 ddd           dS # 1 swxY w Y   dS )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   Nr   zUresource_tracker: process died unexpectedly, relaunching.  Some resources might leak.z:from multiprocessing.resource_tracker import main;main(%d)z-c)r   r(   r&   r    _check_aliver)   r*   r!   r+   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   zResourceTracker.ensure_running^   s   
 Z <	 <	z**,,q001133<	 <	 <	 <	 <	 <	 <	 <	 x#$$&& <	 <	 <	 <	 <	 <	 <	 <	 """ y,
49a000(   D   	 I J J J K""3:#4#4#6#67777   NC799DAq""1%%%*,,ut@BBBsQw'U$ S.v/?AQRRR-c4EEC$ U.v/ACSTTT % U.v/ACSTTTTU 		 y<	 <	 <	 <	 <	 <	 <	 <	 <	 <	 <	 <	 <	 <	 <	 <	 <	 <	s   1J	J	/J		!B+*J	+
B85J	7B88'J	 1DJ	
DJ	DJ	;A	H2AG2,H22.H  H2#I"2I		I"J	"I88J		JJc                 ^    	 t          j        | j        d           dS # t          $ r Y dS w xY w)z;Check that the pipe has not been closed by sending a probe.s   PROBE:0:noop
TF)r)   writer    OSErrorr"   s    r   r0   zResourceTracker._check_alive   sI    	 HTX0111 4  	 	 	55	s    
,,c                 4    |                      d||           dS )z0Register name of resource with resource tracker.REGISTERN_sendr#   namertypes      r   r   zResourceTracker.register   s    

:tU+++++r   c                 4    |                      d||           dS )z2Unregister name of resource with resource tracker.
UNREGISTERNrN   rP   s      r   r   zResourceTracker.unregister   s    

<u-----r   c                    	 |                                   n+# t          $ r t          j        d| d|d           Y nw xY wd                    |||                              d          }t          |          dk    rt          d          t          j	        | j
        |          }|t          |          k    s+J d                    |t          |                                d S )	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   r2   r3   formatencodelen
ValueErrorr)   rJ   r    )r#   rC   rQ   rR   msgnbytess         r   rO   zResourceTracker._send   s   
	<!!!!! 	< 	< 	<
 M;; ;&*; ; ;< < < < <	< $$S$66==gFFs88c>> ^,,,$(C((S!!!#D#K#KCHH$ $!!!!!s    %??N)r   r   r   r$   r&   r,   r.   r   r0   r   r   rO   r   r   r   r   r   :   s          
H H H  "  A A AF	 	 	, , ,. . .    r   r   c                    t          j         t           j        t           j                   t          j         t           j        t           j                   t          r$t          j        t           j        t                     t          j	        t          j
        fD ]'}	 |                                 # t          $ r Y $w xY wd t                                          D             }	 t          | d          5 }|D ]	}	 |                                                    d                              d          \  }}}t                              |d          }|t)          d| d|           |dk    r||                             |           n;|d	k    r||                             |           n|d
k    rnt/          d|z            # t          $ r, 	 t          j        t          j                      n#  Y nxY wY w xY w	 ddd           n# 1 swxY w Y   |                                D ]\  }}|r8	 t7          j        dt;          |          |fz             n# t          $ r Y nw xY w|D ]P}	 	 t          |         |           n1# t          $ r$}	t7          j        d|d|	           Y d}	~	nd}	~	ww xY wL# w xY wdS # |                                D ]\  }}|r8	 t7          j        dt;          |          |fz             n# t          $ r Y nw xY w|D ]P}	 	 t          |         |           n1# t          $ r$}	t7          j        d|d|	           Y d}	~	nd}	~	ww xY wL# w xY ww xY w)zRun resource tracker.c                 ,    i | ]}|t                      S r   )set).0rR   s     r   
<dictcomp>zmain.<locals>.<dictcomp>   s    ===eUCEE===r   rbrV   :NzCannot register z. for automatic cleanup: unknown resource type rM   rT   PROBEzunrecognized command %rzQresource_tracker: There appear to be %d leaked %s objects to clean up at shutdownzresource_tracker: z: )r=   SIGINTSIG_IGNSIGTERMr<   r	   rA   r?   r5   stdinstdoutr*   r8   _CLEANUP_FUNCSkeysopenstripdecodesplitgetrZ   addremoveRuntimeError
excepthookexc_infoitemsr2   r3   rY   )
fdfcachelinerC   rQ   rR   cleanup_funcrtype_cachees
             r   mainr~      s    M&-000
M&.&.111 Ev13CDDDi$  	GGIIII 	 	 	D	 >=~':':'<'<===E-"d^^ 	q  '+zz||':':7'C'C'I'I#'N'N$Cu#1#5#5eT#B#BL#+(=t = =5:= => > > j((e((....,,e++D1111*+Ds+JKKK    777	#	 	 	 	 	 	 	 	 	 	 	 	 	 	 	2 #(++-- 	 	E; M #N#&{#3#3U";#< = = = = !   D# 
 
N&u-d3333$ N N N DDD!!&LMMMMMMMMN DDDD
	 	%++-- 	 	E; M #N#&{#3#3U";#< = = = = !   D# 
 
N&u-d3333$ N N N DDD!!&LMMMMMMMMN DDDD
	s!  B..
B;:B;"K 2H9CGH
G=G21G=2G6	4G=9H<G==HK HK HK 4&I
I('I(1JJ9
J5J0+J90J55J99J;M*&LM*
L	M*L	M*L10M#1
M;MM#MM#"M*#M%%M*)r)   r=   r5   r   r2    r   r   __all__hasattrr<   re   rg   r?   rj   rQ   _multiprocessing_posixshmemupdater   
shm_unlinkrs   r   objectr   _resource_trackerr   r   r   r.   r~   r   r   r   <module>r      s  $ 
			  



                 
6
6
6 122M6>2  LL 7g w.. )4
 	 	 	 /   
	 	 	 	 	 	 	 	M M M M Mf M M M` $O%% "1%)
< < < < <r   