
    wi(                        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    r]	 d dlZn# e$ r d dlZY nw xY w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       u/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/multiprocess/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   9   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          )Nz5Reentrant call into the multiprocess resource tracker)r   r"   s    r   _reentrant_call_errorz%ResourceTracker._reentrant_call_errorD   s    
 !CE E 	Er   c                    | j         5   t          | j         dt                                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 )N_recursion_countr   r   )	r   getattrintr&   r    osclosewaitpidr!   r"   s    r   _stopzResourceTracker._stopL   s4   Z 	 	 <wtz#5s;;==AA1133		 	 	 	 	 	 	 	
 x	 	 	 	 	 	 	 	 HTXDHJty!$$$DI	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ;B3B3%AB33B7:B7c                 8    |                                   | j        S r   )r   r    r"   s    r   getfdzResourceTracker.getfd]   s    xr   c                 @   | j         5   t          | j         dt                                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$t1          j        t0          j        t6                     t+          j        |||          }t.          r$t1          j        t0          j        t6                     n1# t.          r%t1          j        t0          j        t6                     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(   r   Nr   zUresource_tracker: process died unexpectedly, relaunching.  Some resources might leak.z7from multiprocess.resource_tracker import main;main(%d)z-c)r   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_runninga   s(   
 Z <	 <	;wtz#5s;;==AA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   KC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   ;JJ9J!B54J5
C?JC'J*1DJ
D)&J(D))JA	H<AG<,H<<.H**H<-I,<II,J,J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   r2   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.
UNREGISTERNrP   rR   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   r4   r5   formatencodelen
ValueErrorr+   rL   r    )r#   rE   rS   rT   msgnbytess         r   rQ   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.   r0   r   r2   r   r   rQ   r   r   r   r   r   =   s          
E E E  "  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).0rT   s     r   
<dictcomp>zmain.<locals>.<dictcomp>   s    ===eUCEE===r   rbrX   :NzCannot register z. for automatic cleanup: unknown resource type rO   rV   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	   rC   rA   r7   stdinstdoutr,   r:   _CLEANUP_FUNCSkeysopenstripdecodesplitgetr\   addremoveRuntimeError
excepthookexc_infoitemsr4   r5   r[   )
fdfcachelinerE   rS   rT   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?   r7   r   r4    r   r   __all__hasattrr>   rg   ri   rA   rl   rS   _multiprocess_multiprocessingImportError_posixshmemupdater   
shm_unlinkru   r   objectr   _resource_trackerr   r   r   r0   r   r   r   r   <module>r      s  $ 
			  



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