o
    \i                  	   @   s  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mZ d dl	m
Z
 d dlmZ ddlmZmZmZ dgZG d	d
 d
ZG dd dZedkrd dlZedZejdeddd ejdeddd e Zi ZdZzuz=e ej d(Z!de" _#ze$e!Z%e&e% e$e!Z'W e" `#ne" `#w W d   n1 sw   Y  e'( ZW n' e)y   e*d e*ej+ d e*d d dl,Z,e*e,-  e*d Y nw W e!dure!.  e/e dS e!dure!.  e/e w dS )    N)BytesIO)utilprocess)wait)set_spawning_popen   )	reductionresource_trackerspawnPopenc                   @   s   e Zd Zdd Zdd ZdS )_DupFdc                 C   s   t || _d S N)r   _mk_inheritablefdselfr    r   /var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/joblib/externals/loky/backend/popen_loky_posix.py__init__   s   z_DupFd.__init__c                 C   s   | j S r   )r   r   r   r   r   detach   s   z_DupFd.detachN)__name__
__module____qualname__r   r   r   r   r   r   r      s    r   c                   @   sX   e Zd ZdZeZdd Zdd Zej	fddZ
dd	d
Zdd Zdd Zedd ZdS )r   lokyc                 C   s.   t j  t j  d | _g | _| | d S r   )sysstdoutflushstderr
returncode_fds_launch)r   process_objr   r   r   r   +   s
   

zPopen.__init__c                 C   s   | j | t|S r   )r    appendr   r   r   r   r   r   duplicate_for_child2   s   
zPopen.duplicate_for_childc                 C   s   | j d u r>	 zt| j|\}}W n
 ty   Y d S w 	 || jkr>t|r1t| | _ | j S t|s8J t|| _ | j S r   )	r   oswaitpidpidOSErrorWIFSIGNALEDWTERMSIG	WIFEXITEDWEXITSTATUS)r   flagr'   stsr   r   r   poll6   s   


z
Popen.pollNc                 C   sD   | j d u r|d urt| jg|sd S | |dkrtjS dS | j S )Ng        r   )r   r   sentinelr/   r%   WNOHANG)r   timeoutr   r   r   r   I   s   
z
Popen.waitc                 C   s^   | j d u r-zt| jtj W d S  ty   Y d S  ty,   | jddd u r) Y d S w d S )Ng?)r2   )	r   r%   killr'   signalSIGTERMProcessLookupErrorr(   r   r   r   r   r   	terminateR   s   
zPopen.terminatec                 C   s  t j }t }t|  zt|jt|dd}t	
|| t	
|| W td  ntd  w zt \}}t \}}tjg}	|	d| jg7 }	|	dt|jg7 }	|	dtt	|g7 }	t	| t	| |  j|||g7  _tjdkr}|d }
| |
 dd	lm} ||	| j|jd
}td| d|	  || _d}t||sd}t|d}|t||  W d    n1 sw   Y  || _W |d urt| tj|f ||fD ]}|d urt| qd S |d urt| tj|f ||fD ]}|d urt| qw )Ninit_main_moduleTz-m--process-name--pipeposixmp_tracker_fdr   )	fork_exec)envzlaunched python with pid z
 and cmd:
	getbuffergetvaluewb) r	   _resource_trackergetfdr   r   r
   get_preparation_data_namegetattrr   dumpr%   piper   
executabler   strnamer   r    r$   r=   r>   r   debugr0   hasattrfdopenwriter'   Finalizeclose)r   r"   
tracker_fdfp	prep_dataparent_rchild_wchild_rparent_w
cmd_pythonr<   r=   r'   methodfr   r   r   r   r!   \   sf   









zPopen._launchc                   C   s   dS )NTr   r   r   r   r   thread_is_spawning   s   zPopen.thread_is_spawningr   )r   r   r   rZ   r   DupFdr   r$   r%   r1   r/   r   r7   r!   staticmethodr\   r   r   r   r   r   '   s    
	
7__main__zCommand line parserr:   TzFile handle for the pipe)typerequiredhelpr9   z Identifier for debugging purpose)r`   defaultrb   rbzR

--------------------------------------------------------------------------------z failed with traceback: zP--------------------------------------------------------------------------------zQ
--------------------------------------------------------------------------------)0r%   r   r4   pickleior   multiprocessingr   r   multiprocessing.connectionr   multiprocessing.contextr    r   r	   r
   __all__r   r   r   argparseArgumentParserparseradd_argumentintrJ   
parse_argsargsinfoexitcoderN   rH   from_parentcurrent_process_inheritingloadrT   preparer"   
_bootstrap	Exceptionprintprocess_name	traceback
format_excrQ   exitr   r   r   r   <module>   sj   q



		