o
    Df                     @   sv   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gZG d	d
 d
Z	G dd dej
Z
dS )    N   )	reduction)context)
forkserver)
popen_fork)spawnPopenc                   @   s   e Zd Zdd Zdd ZdS )_DupFdc                 C   s
   || _ d S N)ind)selfr    r   R/home/ubuntu/webapp/venv/lib/python3.10/site-packages/billiard/popen_forkserver.py__init__   s   
z_DupFd.__init__c                 C   s   t  | j S r
   )r   get_inherited_fdsr   )r   r   r   r   detach   s   z_DupFd.detachN)__name__
__module____qualname__r   r   r   r   r   r   r	      s    r	   c                       sB   e Zd ZdZeZ fddZdd Zdd Ze	j
f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 | t| j d S )Nr   )r   appendlen)r   fdr   r   r   duplicate_for_child&   s   zPopen.duplicate_for_childc              	   C   s   t |j}t }t|  zt|| t|| W td  ntd  w t	
| j\| _}tj|ddd}||  W d    n1 sLw   Y  t	| j| _d S )NwbT)closefd)r   get_preparation_data_nameioBytesIOr   set_spawning_popenr   dumpr   connect_to_new_processr   sentinelopenwrite	getbufferread_unsignedpid)r   r   	prep_databufwfr   r   r   _launch*   s   
zPopen._launchc              	   C   sx   | j d u r9ddlm} |tjkrdnd }|| jg|sd S zt| j| _ W | j S  tt	fy8   d| _ Y | j S w | j S )Nr   )waitr      )

returncode
connectionr2   osWNOHANGr'   r   r+   OSErrorEOFError)r   flagr2   timeoutr   r   r   poll9   s   
z
Popen.poll)r   r   r   methodr	   DupFdr   r   r1   r6   r7   r<   __classcell__r   r   r   r   r      s    )r"   r6    r   r   r   r   r   __all__r	   r   r   r   r   r   <module>   s    