U
    -e                     @   sp   d dl Z d dlZddlmZmZ ddlmZ ddlmZ ddlmZ dgZ	G dd	 d	e
ZG d
d dejZdS )    N   )	reductionset_spawning_popen)
popen_fork)spawn)utilPopenc                   @   s   e Zd Zdd Zdd ZdS )_DupFdc                 C   s
   || _ d S Nfdselfr    r   _/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/multiprocess/popen_spawn_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                       s4   e Zd ZdZeZ fddZdd Zdd Z  Z	S )r   r   c                    s   g | _ t | d S r
   )_fdssuperr   )r   process_obj	__class__r   r   r      s    zPopen.__init__c                 C   s   | j | |S r
   )r   appendr   r   r   r   duplicate_for_child"   s    zPopen.duplicate_for_childc                 C   sX  ddl m} | }| j| t|j}t	 }t
|  zt|| t|| W 5 t
d  X d  } } }}	z~t \}}t \}}	tj||d}| j||g tt || j| _|| _t|	ddd}||  W 5 Q R X W 5 g }
||	fD ]}|d k	r |
| q t| tj|
| _||fD ]}|d k	r6t| q6X d S )Nr   )resource_tracker)
tracker_fdZpipe_handlewbF)closefd) r   Zgetfdr   r   r   Zget_preparation_data_nameioBytesIOr   r   dumpr   ZFinalize	close_fds	finalizerosclosepipeZget_command_lineextendZspawnv_passfdsget_executablepidsentinelopenwrite	getbuffer)r   r   r   r   Z	prep_datafpZparent_rZchild_wZchild_rZparent_wZfds_to_closer   cmdfr   r   r   _launch&   sB    

 

zPopen._launch)
r   r   r   methodr	   ZDupFdr   r   r5   __classcell__r   r   r   r   r      s
   )r#   r(   contextr   r   r!   r   r   r   __all__objectr	   r   r   r   r   r   <module>   s   
