
    SfZ                      L   d dl Z d dlZd dlZ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
 ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ g d
ZdZ ej        d          Z G d d          ZddZd Zd Zd Zd Z e            Zej        Zej        Zej        Zej        ZdS )    N   )
connection)process)	reduction)semaphore_tracker)spawn)util)spawnv_passfds)ensure_runningget_inherited_fdsconnect_to_new_processset_forkserver_preload   Qc                   ,    e Zd Zd Zd Zd Zd Zd ZdS )
ForkServerc                 p    d | _         d | _        d | _        t          j                    | _        dg| _        d S )N__main__)_forkserver_address_forkserver_alive_fd_inherited_fds	threadingLock_lock_preload_modulesselfs    E/var/www/html/env/lib/python3.11/site-packages/billiard/forkserver.py__init__zForkServer.__init__$   s9    #' $(!"^%%
!+    c                 n    t          d | j        D                       st          d          || _        dS )z>Set list of module names to try to load in forkserver process.c              3   B   K   | ]}t          |          t          u V  d S N)typestr).0mods     r   	<genexpr>z4ForkServer.set_forkserver_preload.<locals>.<genexpr>-   s-      EE499#EEEEEEr    z&module_names must be a list of stringsN)allr   	TypeError)r   modules_namess     r   r   z!ForkServer.set_forkserver_preload+   sB    EEt/DEEEEE 	FDEEE -r    c                     | j         S )zReturn list of fds inherited from parent process.

        This returns None if the current process was not started by fork
        server.
        )r   r   s    r   r   zForkServer.get_inherited_fds1   s     ""r    c                    |                                   t          |          dz   t          k    rt          d          t	          j        t          j                  5 }|                    | j                   t          j	                    \  }}t          j	                    \  }}||| j
        t          j                    g}||z  }	 t          j        ||           ||ft          j        |           t          j        |           cddd           S #  t          j        |           t          j        |            xY w# t          j        |           t          j        |           w xY w# 1 swxY w Y   dS )a;  Request forkserver to create a child process.

        Returns a pair of fds (status_r, data_w).  The calling process can read
        the child process's pid and (eventually) its returncode from status_r.
        The calling process should write to data_w the pickled preparation and
        process data.
           ztoo many fdsN)r   lenMAXFDS_TO_SEND
ValueErrorsocketAF_UNIXconnectr   ospiper   r   getfdr   sendfdsclose)r   fdsclientparent_rchild_wchild_rparent_wallfdss           r   r   z!ForkServer.connect_to_new_process9   s    	s88a<>))^,,,]6>** 	"fNN43444 "		Hg "		GXw(A'-//1FcMF	"!&&111) !!!!!!!	" 	" 	" 	" 	" 	" 	" 	"""""""!!!!!!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s7   A(E.D(E.+D>>E*E++E..E25E2c                   
 | j         5  t          j                     | j        	 ddd           dS d}| j        r9ddh
t          j        d          }
fd|                                D             }ni }t          j        t          j	                  5 }t          j        d          }|                    |           t          j        |d           |                                 t          j                    \  }}	 |                                |g}||                                || j        |fz  }t          j                    }|gt'          j                    z   }	|	d	|gz  }	t+          ||	|           n#  t          j        |            xY w	 t          j        |           n# t          j        |           w xY w|| _        || _        ddd           n# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )
zMake sure that a fork server is running.

        This can be called from any process.  Note that usually a child
        process will just reuse the forkserver started by its parent, so
        ensure_running() will do nothing.
        Nz<from billiard.forkserver import main; main(%d, %d, %r, **%r)	main_pathsys_pathignorec                 $    i | ]\  }}|v 	||S  rF   )r&   xydesired_keyss      r   
<dictcomp>z-ForkServer.ensure_running.<locals>.<dictcomp>h   s0       #aqL7H7HAq7H7H7Hr    r3   i  z-c)r   r   r   r   r   r   get_preparation_dataitemsr2   r3   r   arbitrary_addressbindr5   chmodlistenr6   filenoget_executabler	   _args_from_interpreter_flagsr
   r9   r   )r   cmddatalisteneraddressalive_ralive_wfds_to_passexeargsrI   s             @r   r   zForkServer.ensure_runningV   s    Z (	4 (	4,...(4(	4 (	4 (	4 (	4 (	4 (	4 (	4 (	4
,C $  +Z81(;;   '+zz||   v~.. 4($6yAAg&&&%(((!!! $&799 &#+??#4#4g">KHOO--w8M " "C.00C54#D#F#FFDT3K'D"3k::::HW%%% ;
 HW%%%%BHW%%%%+2(,3)/4 4 4 4 4 4 4 4 4 4 4 4 4 4 4#(	4 (	4 (	4 (	4 (	4 (	4 (	4 (	4 (	4 (	4 (	4 (	4 (	4 (	4 (	4 (	4 (	4 (	4sg   G2A"G2A)G>A8E76F'7FF'G'F==GG2G	G2!G	"G22G69G6N)__name__
__module____qualname__r   r   r   r   r   rF   r    r   r   r   "   s_        - - -. . .# # #" " ":/4 /4 /4 /4 /4r    r   c           	      R   |rd|v r[|Ydt          j                    _        	 t          j        |           t          j                    `n# t          j                    `w xY w|D ]"}	 t          |           # t          $ r Y w xY wt          j        Z	 t          j        	                                 t          t          j                  t          _        n# t          t          f$ r Y nw xY wt          j        t          j        t          j                  }t%          j        t$          j        |           5 }t)          j                    5 }|                                t.          _        |                    |t(          j                   |                    |t(          j                   	 	 	 d |                                D             }	|	rn"||	v r"t          j        |d          dk    sJ t:          ||	v sJ |                                d         5 }
d}t          j                    dk    r	 tA          |
|||           nM# tB          $ r@ t          j"        t          j#                      t          j$        %                                 Y nw xY wt          j&        |           n# t          j&        |           w xY wddd           n# 1 swxY w Y   n-# t          $ r }|j'        tN          j(        k    r Y d}~nd}~ww xY wZ# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )	zRun forkserver.r   NT)rQ   c                 "    g | ]\  }}|j         S rF   )fileobj)r&   keyeventss      r   
<listcomp>zmain.<locals>.<listcomp>   s    OOOMS&CKOOOr    r   r    r   ))r   current_process_inheritingr   import_main_path
__import__ImportErrorsysstdinr9   openr5   devnullOSErrorr1   signalSIGCHLDSIG_IGNr2   r3   	selectorsDefaultSelectorgetsockname_forkserverr   register
EVENT_READselectread
SystemExitacceptfork
_serve_one	Exception
excepthookexc_infostderrflush_exiterrnoECONNABORTED)listener_fdrX   preloadrB   rC   modnamehandlerrV   selectorrfdsscodees                r   mainr      s      Y%:48G#%%1:&y111+--99G+--99999 	 	G7####    y	IOORZ((CII$ 	 	 	D	 mFNFN;;G	v~k	:	:	: h%''+3*2*>*>*@*@'(I$8999'9#7888	OOX__=N=NOOOD 
 d??77A..#5555$$4''''__&&q) 	+QDwyyA~~+&q(GWEEEE( / / /NCLNN;;J,,...../ HTNNNNBHTNNNN	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+    7e000 10000/	                         s   A
 
A'A77
BBAC C*)C*6L
A L+A)KK	/IJ$AJ		J$J	J$K	$J:	:K	=K	KKKKL
K?K:5L:K??LL	LL	LL #L c                     | ||||fS r#   rF   )r>   r=   alivestfd	inheriteds        r   __unpack_fdsr      s    GUD)33r    c                 h   |                                  t          j         |           t          j        t          j        |           t	          j        | t          dz             }|                                   t          |          t          k    sJ t          | \  }}t          _
        }t          _        |t          j        _        t          |t          j                               dt"          j        v rdd l}|                                 t+          j        |          }	t          ||	           d S )Nr   randomr   )r9   r5   rp   rq   r   recvfdsr0   r/   r   rv   r   r   r   _semaphore_tracker_fdwrite_unsignedgetpidrk   modulesr   seedr   _main)
r   rV   rX   r   r:   r>   r=   r   r   r   s
             r   r~   r~      s   NNHW
M&.'*** 
A~1
2
2CGGIIIs88~%%%% *6s);'Wg{7	;%/3(, 7BIKK((( 3; ;wD 7D!!!!!r    c                     d}t           j        }t          |          |k     rNt          j        | |t          |          z
            }|st          d          ||z  }t          |          |k     Nt                               |          d         S )Nr    zunexpected EOFr   )UNSIGNED_STRUCTsizer/   r5   rz   EOFErrorunpack)fdrU   lengthr   s       r   read_unsignedr      s    D!F
d))f

GBT*++ 	-+,,,		 d))f


 !!$''**r    c                     t                               |          }|r8t          j        | |          }|dk    rt	          d          ||d          }|6d S d S )Nr   zshould not get here)r   packr5   writeRuntimeError)r   nmsgnbytess       r   r   r      sq    


q
!
!C
 "c""Q;;4555&''l	      r    )NN) r   r5   rs   rp   r2   structrk   r    r   r   r   r   r   r	   compatr
   __all__r0   Structr   r   r   r   r~   r   r   rv   r   r   r   r   rF   r    r   <module>r      s    				        



                                         " " " " " "% % % &-$$c4 c4 c4 c4 c4 c4 c4 c4T8 8 8 8v4 4 4" " "D+ + +   jll+1 $; $;   r    