£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
a
    XC?hn/                     @   s   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dZG dd deZdddZdd Zdd Zdd Ze ZejZejZejZejZdS )    N   )
connection)process)	reduction)resource_tracker)spawn)util)ensure_runningget_inherited_fdsconnect_to_new_processset_forkserver_preload   qc                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )
ForkServerc                 C   s.   d | _ d | _d | _d | _t | _dg| _d S )N__main__)_forkserver_address_forkserver_alive_fd_forkserver_pid_inherited_fds	threadingZLock_lock_preload_modulesself r   ?/opt/alt/python39/lib64/python3.9/multiprocessing/forkserver.py__init__"   s    
zForkServer.__init__c                 C   s2   | j  |   W d    n1 s$0    Y  d S N)r   _stop_unlockedr   r   r   r   _stop*   s    zForkServer._stopc                 C   sV   | j d u rd S t| j d | _t| j d d | _ t| jsLt| j d | _d S )Nr   )	r   oscloser   waitpidr   is_abstract_socket_namespacer   unlinkr   r   r   r   r   /   s    
zForkServer._stop_unlockedc                 C   s&   t dd | jD std|| _d S )Nc                 s   s   | ]}t |tu V  qd S r   )typestr).0modr   r   r   	<genexpr>@       z4ForkServer.set_forkserver_preload.<locals>.<genexpr>z&module_names must be a list of strings)allr   	TypeError)r   Zmodules_namesr   r   r   r   >   s    z!ForkServer.set_forkserver_preloadc                 C   s   | j S r   )r   r   r   r   r   r
   D   s    zForkServer.get_inherited_fdsc              
   C   s  |    t|d tkr tdttj}|| j t	 \}}t	 \}}||| j
t g}||7 }zvz:t|| ||fW W t| t| W  d    S    t| t|  Y n0 W t| t| nt| t| 0 W d    n1 s0    Y  d S )N   ztoo many fds)r	   lenMAXFDS_TO_SEND
ValueErrorsocketAF_UNIXZconnectr   r    piper   r   Zgetfdr   Zsendfdsr!   )r   fdsZclientZparent_rchild_wchild_rZparent_wZallfdsr   r   r   r   L   s2    







z!ForkServer.connect_to_new_processc                    s  | j  t  | jd urbt| jtj\}}|sDW d    d S t| j d | _	d | _d | _d}| j
rddh td} fdd| D }ni }ttj}td}|| t|st|d |  t \}}z~zV| |g}	|| || j
|f; }t }
|
gt  }|d	|g7 }t|
||	}W n   t|  Y n0 W t| nt| 0 || _	|| _|| _W d    n1 s0    Y  W d    n1 s0    Y  d S )
NzCfrom multiprocessing.forkserver import main; main(%d, %d, %r, **%r)	main_pathsys_pathignorec                    s   i | ]\}}| v r||qS r   r   )r'   xyZdesired_keysr   r   
<dictcomp>   r*   z-ForkServer.ensure_running.<locals>.<dictcomp>r2   i  z-c)r   r   r	   r   r    r"   WNOHANGr!   r   r   r   r   Zget_preparation_dataitemsr1   r2   r   Zarbitrary_addressZbindr   r#   chmodZlistenr3   filenoZget_executableZ_args_from_interpreter_flagsZspawnv_passfds)r   pidZstatuscmddatalistenerZaddressalive_rZalive_wZfds_to_passZexeargsr   r<   r   r	   i   sN    







zForkServer.ensure_runningN)
__name__
__module____qualname__r   r   r   r   r
   r   r	   r   r   r   r   r       s   r   c                 C   s  |rjd|v r@|d ur@dt  _zt| W t  `n
t  `0 |D ]$}zt| W qD tyf   Y qD0 qDt  t	
 \}}t	|d t	|d dd }tj|tjtji}	dd |	 D }
t| i }tjtj| d}t }| t_||tj ||tj ||tj zPd	d
 | D }|r(qHq(||v rVt||v rt	|d zt	dt	j\}}W n t y   Y qY n0 |dkrq|!|d }|d urt	"|}zt#|| W n t$y   Y n0 t	%| nt&'d|  ql||v rt|( d <}t)*|t+d }t,|t+krXt-d.t,||^}}}|%  t	/ }|dkrd}zxz<|%  |%  ||||g}|0|1  t2||||
}W n, t3y   t4j5t46   t4j78  Y n0 W t	9| nt	9| 0 nLzt#|| W n t$y*   Y n0 |||< t	%| |D ]}t	%| qBW d    n1 sj0    Y  W n6 t:y } z|j;t;j<kr W Y d }~n
d }~0 0 q$W d    n1 s0    Y  W d    n1 s0    Y  d S )Nr   TFc                  W   s   d S r   r   )Z_unusedr   r   r   sigchld_handler   s    zmain.<locals>.sigchld_handlerc                 S   s   i | ]\}}|t  ||qS r   )signal)r'   sigvalr   r   r   r=      s   zmain.<locals>.<dictcomp>)rA   c                 S   s   g | ]\}}|j qS r   )Zfileobj)r'   keyZeventsr   r   r   
<listcomp>   r*   zmain.<locals>.<listcomp>i   r   z.forkserver: waitpid returned unexpected pid %dr   zToo many ({0:n}) fds to send)=r   Zcurrent_processZ_inheritingr   Zimport_main_path
__import__ImportErrorr   Z_close_stdinr    r3   set_blockingrL   SIGCHLDSIGINTSIG_IGNr?   set_wakeup_fdr1   r2   	selectorsZDefaultSelectorZgetsockname_forkserverr   registerZ
EVENT_READZselect
SystemExitreadr"   r>   ChildProcessErrorpopwaitstatus_to_exitcodewrite_signedBrokenPipeErrorr!   warningswarnZacceptr   Zrecvfdsr/   r.   RuntimeErrorformatforkextendvalues
_serve_one	Exceptionsys
excepthookexc_infostderrflush_exitOSErrorerrnoZECONNABORTED)Zlistener_fdrF   Zpreloadr7   r8   modnameZsig_rZsig_wrK   handlersZold_handlersZ	pid_to_fdrE   ZselectorZrfdsrB   stsr5   
returncodesr4   r6   code
unused_fdsfder   r   r   main   s    












2r}   c           	      C   sh   t d | D ]\}}t  || q|D ]}t| q,|^t_tj_	t_
t| }t| |}|S )NrQ   )rL   rX   r?   r    r!   rZ   r   r   Z_resource_trackerZ_fdr   dupr   Z_main)	r6   r4   rz   ru   rM   rN   r{   Zparent_sentinelry   r   r   r   rj   +  s    

rj   c                 C   sN   d}t j}t||k r@t| |t| }|s6td||7 }q
t |d S )Nr*   zunexpected EOFr   )SIGNED_STRUCTsizer.   r    r]   EOFErrorZunpack)r{   rD   Zlengthrx   r   r   r   read_signedB  s    
r   c                 C   s<   t |}|r8t| |}|dkr*td||d  }q
d S )Nr   zshould not get here)r   Zpackr    writere   )r{   nmsgnbytesr   r   r   ra   L  s    
ra   )NN) rs   r    rY   rL   r1   Zstructrl   r   rc    r   r   contextr   r   r   r   __all__r/   ZStructr   objectr   r}   rj   r   ra   rZ   r	   r
   r   r   r   r   r   r   <module>   s:   
 
 
