
    5bh/                     b   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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e      ZddZd Zd Zd Z e       Zej8                  Zej:                  Zej<                  Zej>                  Zy)    N   )
connection)process)	reduction)resource_tracker)spawn)util)ensure_runningget_inherited_fdsconnect_to_new_processset_forkserver_preload   qc                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	
ForkServerc                 ~    d | _         d | _        d | _        d | _        t	        j
                         | _        dg| _        y )N__main__)_forkserver_address_forkserver_alive_fd_forkserver_pid_inherited_fds	threadingLock_lock_preload_modulesselfs    D/opt/python-3.12.12/usr/lib/python3.12/multiprocessing/forkserver.py__init__zForkServer.__init__"   s:    #' $(!#"^^%
!+    c                 f    | j                   5  | j                          d d d        y # 1 sw Y   y xY wN)r   _stop_unlockedr   s    r   _stopzForkServer._stop*   s    ZZ! ZZs   '0c                 B   | j                   y t        j                  | j                         d | _        t        j                  | j                   d       d | _         t        j                  | j                        st        j                  | j                         d | _        y )Nr   )	r   oscloser   waitpidr	   is_abstract_socket_namespacer   unlinkr   s    r   r#   zForkServer._stop_unlocked/   sw    ' 	**+$(!


4''+#001I1IJIId../#' r    c                 N    	 t        d |D              st        d      || _        y )Nc              3   >   K   | ]  }t        |      t        u   y wr"   )typestr).0mods     r   	<genexpr>z4ForkServer.set_forkserver_preload.<locals>.<genexpr>@   s     =}49#}s   z&module_names must be a list of strings)all	TypeErrorr   )r   modules_namess     r   r   z!ForkServer.set_forkserver_preload>   s'    L=}==DEE -r    c                     	 | j                   S r"   )r   r   s    r   r   zForkServer.get_inherited_fdsD   s    	
 """r    c                    	 | j                          t        |      dz   t        k\  rt        d      t	        j                  t        j
                        5 }|j                  | 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 Y   y xY w)N   ztoo many fds)r
   lenMAXFDS_TO_SEND
ValueErrorsocketAF_UNIXconnectr   r&   piper   r   getfdr   sendfdsr'   )r   fdsclientparent_rchild_wchild_rparent_wallfdss           r   r   z!ForkServer.connect_to_new_processL   s    	 	s8a<>)^,,]]6>>*fNN4334 "	Hg "	GXw(A(A&,,.0FcMF	"!!&&1) !!! +*""!!! +*s1   A1E3D *E3-EE,E00E33E<c                 6   	 | j                   5  t        j                          | j                  qt	        j
                  | j                  t        j                        \  }}|s
	 d d d        y t	        j                  | j                         d | _	        d | _        d | _        d}| j                  rBddh}t        j                  d      }|j                         D ci c]  \  }}||v s|| }}}ni }t        j                  t        j                        5 }t!        j"                  d      }	|j%                  |	       t'        j(                  |	      st	        j*                  |	d       |j-                          t	        j.                         \  }
}	 |j1                         |
g}||j1                         |
| j                  |fz  }t        j2                         }|gt'        j4                         z   }|d|gz  }t'        j6                  |||      }	 t	        j                  |
       |	| _	        || _        || _        d d d        d d d        y c c}}w #  t	        j                  |        xY w# t	        j                  |
       w xY w# 1 sw Y   MxY w# 1 sw Y   y xY w)NzCfrom multiprocessing.forkserver import main; main(%d, %d, %r, **%r)	main_pathsys_pathignorer<   i  z-c)r   r   r
   r   r&   r(   WNOHANGr'   r   r   r   r   get_preparation_dataitemsr;   r<   r   arbitrary_addressbindr	   r)   chmodlistenr>   filenoget_executable_args_from_interpreter_flagsspawnv_passfds)r   pidstatuscmddesired_keysdataxylisteneraddressalive_ralive_wfds_to_passexeargss                  r   r
   zForkServer.ensure_runningi   s+   	 ZZ++-##/ jj)=)=rzzJV Z 223+/(,0)'+$,C $$ +Z811(;)-KAl9J1Kv~~.($66yAg&88AHHWe,! $&779 &#+??#4g">KHOO-w8M8M " "C..0C54#D#D#FFDT3K'D--c4EC
 HHW%+2(,3)'*$3 /1 Z( L,HHW%HHW%- /.1 Zsi   AJ,A.JI'I,)JA9JA=I*J7JJI&&I))J  JJ	JJN)
__name__
__module____qualname__r   r$   r#   r   r   r   r
    r    r   r   r       s%    -"
(.#":8+r    r   c           
      
   	 |rq||t         j                  d d  d|v rE|Cdt        j                         _        	 t        j                  |       t        j                         `|D ]  }	 t        |        t        j                          t        j                         \  }}t        j                  |d       t        j                  |d       d }t        j                  |t        j                   t        j"                  i}	|	j%                         D 
ci c]  \  }
}|
t        j                  |
|       }}
}t        j&                  |       i }t)        j(                  t(        j*                  |       5 }t-        j.                         5 }|j1                         t2        _        |j7                  |t,        j8                         |j7                  |t,        j8                         |j7                  |t,        j8                         	 	 	 |j;                         D cg c]  \  }}|j<                   }}}|rn0||v rt>        ||v rt        j@                  |d       	 	 t        jB                  dt        jD                        \  }}|dk(  rne|jI                  |d       }|8t        jJ                  |      }	 tM        ||       t        jP                  |       ntS        jT                  d	|z         ||v rK|jW                         d   5 }tY        jZ                  |t\        d
z         }t_        |      t\        kD  r#ta        djc                  t_        |                  |^}}}|jQ                          t        jd                         }|dk(  rld
}	 |jQ                          |jQ                          ||||g}|jg                  |ji                                tk        ||||      }t        jv                  |       nC	 tM        ||       |||<   t        jP                  |       |D ]  }t        jP                  |        d d d        <# t        j                         `w xY w# t        $ r Y w xY wc c}}
w c c}}w # tF        $ r Y w xY w# tN        $ r Y w xY w# tl        $ rF t        jn                  t        jp                           t         jr                  ju                          Y w xY w# t        jv                  |       w xY w# tN        $ r Y w xY w# 1 sw Y   xY w# tx        $ r)}|jz                  tz        j|                  k7  r Y d }~d }~ww xY w# 1 sw Y   nxY w	 d d d        y # 1 sw Y   y xY w)Nr   TFc                       y r"   rh   )_unuseds    r   sigchld_handlerzmain.<locals>.sigchld_handler   s    r    )rS   i   r   z.forkserver: waitpid returned unexpected pid %dr   zToo many ({0:n}) fds to send)?syspathr   current_process_inheritingr   import_main_path
__import__ImportErrorr	   _close_stdinr&   r>   set_blockingsignalSIGCHLDSIGINTSIG_IGNrN   set_wakeup_fdr;   r<   	selectorsDefaultSelectorgetsockname_forkserverr   register
EVENT_READselectfileobj
SystemExitreadr(   rL   ChildProcessErrorpopwaitstatus_to_exitcodewrite_signedBrokenPipeErrorr'   warningswarnacceptr   recvfdsr9   r8   RuntimeErrorformatforkextendvalues
_serve_one	Exception
excepthookexc_infostderrflush_exitOSErrorerrnoECONNABORTED)listener_fdr`   preloadrI   rJ   modnamesig_rsig_wrl   handlerssigvalold_handlers	pid_to_fdr^   selectorkeyeventsrfdsrW   stsrD   
returncodesrA   rE   code
unused_fdsfdes                                 r   mainr      s   "CHHQK Y%:48G##%1:&&y1++-9G7#  	779LE5OOE5!OOE5! 	v~~	
H '/nn&68&6
c sC00&6  8  I	v~~k	:h		"	"	$*2*>*>*@'(I$8$89'9#7#78%!5!56P=E__=NO=NMS&CKK=NDO 
 d? %$D=GGE5)"')zz"bjj'AHC !8!"+--T":".)+)B)B3)GJ% ,Wj A HHW- %MM +>@C+D E+ 0 t#!*1-'//>A3EFs8n4". > E E$'H!.#/ / 25.3	 ggi!8#$D/ ( 0 ( 0.5wu-M
 * 1 1)2B2B2D E'1'32<2>(@ !#% ,Wc : .5IcNHHW-&) " '*G .S Q ++-9  &8( P   1 "!" $3 % $%@ $- 3 # ? #

 0 0 23 !#
 $3 % $%= .-L  77e000 1m 
%	$	$ 
;	:	:s6  P> (Q!Q'2U&A;UTQ-
-,T'Q3/T1R=ATBTART2S?>6T4T<U>Q	Q$#Q$-T3	R <T?R  T	RTRTAS"	S%!S"	"S%%S<	<T?	T	TT	TTT	U$UUUUU	U&&U/c                 n   t        j                  d       |j                         D ]  \  }}t        j                   ||        |D ]  }t        j                  |        |^t
        _        t        j                  _	        t
        _
        t        j                  |       }t        j                  | |      }|S )Nrm   )rw   r{   rN   r&   r'   r   r   r   _resource_tracker_fdr   dupr   _main)	rE   rA   r   r   r   r   r   parent_sentinelr   s	            r   r   r   -  s    
NN$Sc3 %
 
 %("[%''+  ffWoO;;w0DKr    c                     d}t         j                  }t        |      |k  rCt        j                  | |t        |      z
        }|st        d      ||z  }t        |      |k  rCt         j                  |      d   S )Nr    zunexpected EOFr   )SIGNED_STRUCTsizer8   r&   r   EOFErrorunpack)r   r[   lengthr   s       r   read_signedr   D  su    DF
d)f
GGBT*++,,		 d)f

 %a((r    c                     t         j                  |      }|r/t        j                  | |      }|dk(  rt	        d      ||d  }|r.y y )Nr   zshould not get here)r   packr&   writer   )r   nmsgnbytess       r   r   r   N  sH    


Q
C
"c"Q;455&'l	 r    )NN) r   r&   r|   rw   r;   structrn   r   r    r   r   contextr   r   r   r	   __all__r9   Structr   objectr   r   r   r   r   r   r
   r   r   r   rh   r    r   <module>r      s     	     
        % c"A+ A+NCL.) l++11 $;; $;; r    