U
    -e
                     @   s6   d dl Z d dlZddlmZ dgZG dd deZdS )    N   )utilPopenc                   @   s`   e Zd ZdZdd Zdd ZejfddZdd	d
Z	dd Z
dd Zdd Zdd Zdd ZdS )r   forkc                 C   s"   t   d | _d | _| | d S N)r   Z_flush_std_streams
returncode	finalizer_launch)selfprocess_obj r   X/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/multiprocess/popen_fork.py__init__   s    zPopen.__init__c                 C   s   |S r   r   )r
   fdr   r   r   duplicate_for_child   s    zPopen.duplicate_for_childc              
   C   s   | j d krzt| j|\}}W n( tk
rH } z
W Y d S d }~X Y nX || jkrt|rnt| | _ n$t|std	|t
|| _ | j S )NzStatus is {:n})r   oswaitpidpidOSErrorWIFSIGNALEDWTERMSIG	WIFEXITEDAssertionErrorformatWEXITSTATUS)r
   flagr   stser   r   r   poll   s    


z
Popen.pollNc                 C   sN   | j d krH|d k	r0ddlm} || jg|s0d S | |dkrBtjndS | j S )Nr   )waitg        )r   Zmultiprocess.connectionr   sentinelr   r   WNOHANG)r
   timeoutr   r   r   r   r   (   s    
z
Popen.waitc                 C   sZ   | j d krVzt| j| W n8 tk
r0   Y n& tk
rT   | jddd krP Y nX d S )Ng?)r"   )r   r   killr   ProcessLookupErrorr   r   )r
   sigr   r   r   _send_signal2   s    
zPopen._send_signalc                 C   s   |  tj d S r   )r&   signalSIGTERMr
   r   r   r   	terminate<   s    zPopen.terminatec                 C   s   |  tj d S r   )r&   r'   SIGKILLr)   r   r   r   r#   ?   s    z
Popen.killc              	   C   s   d}t  \}}t  \}}t  | _| jdkrdz$t | t | |j|d}W 5 t | X n0t | t | t| tj	||f| _
|| _d S )Nr   r   )Zparent_sentinel)r   piper   r   _exitclose
_bootstrapr   ZFinalize	close_fdsr   r    )r
   r   codeZparent_rZchild_wZchild_rZparent_wr   r   r   r	   B   s     






zPopen._launchc                 C   s   | j d k	r|    d S r   )r   r)   r   r   r   r.   U   s    
zPopen.close)N)__name__
__module____qualname__methodr   r   r   r!   r   r   r&   r*   r#   r	   r.   r   r   r   r   r      s   


)r   r'    r   __all__objectr   r   r   r   r   <module>   s   