Your IP : 216.73.216.213


Current Path : /opt/alt/python37/lib/python3.7/site-packages/py/_process/__pycache__/
Upload File :
Current File : //opt/alt/python37/lib/python3.7/site-packages/py/_process/__pycache__/forkedfunc.cpython-37.pyc

B

���]��@sNdZddlZddlZddlZddlZdd�ZGdd�d�ZGdd�de�ZdS)	z�
    ForkedFunc provides a way to run a function in a forked process
    and get at its return value, stdout and stderr output as well
    as signals and exitstatusus.
�NcsBtt|�d��|���kr*t����|�G�fdd�d�}|�S)N�wcs$eZdZ�fdd�Z�fdd�ZdS)z$get_unbuffered_io.<locals>.AutoFlushcs��|����dS)N)�write�flush)�self�data)�f��G/opt/alt/python37/lib/python3.7/site-packages/py/_process/forkedfunc.pyrs
z*get_unbuffered_io.<locals>.AutoFlush.writecs
t�|�S)N)�getattr)r�name)rrr	�__getattr__sz0get_unbuffered_io.<locals>.AutoFlush.__getattr__N)�__name__�
__module__�__qualname__rrr)rrr	�	AutoFlushsr)�open�str�fileno�os�dup2)�fd�filenamerr)rr	�get_unbuffered_ios
rc@s@eZdZdZddd�Zdd�Zejfdd	�Zd
d�Z	dd
�Z
dS)�
ForkedFunc�Nrc	Cs�|dkrg}|dkri}||_||_||_tjj��|_}|�d�|_	|�d�|_
|�d�|_t�
�}|rt||_nd|_|�|||�dS)N�retval�stdout�stderr)�fun�args�kwargs�py�path�local�mkdtemp�tempdirZensure�RETVAL�STDOUT�STDERRr�fork�pid�_child)	rrrr �
nice_level�child_on_start�
child_on_exitr%r*rrr	�__init__s zForkedFunc.__init__c
Cs�td|j�t_}td|j�t_}|j�d�}d}z�|rDt�	|�y@|dk	rT|�|j
|j|j�}|�
t�|��|dk	r�|�Wn.tj��}	|�
t|	����|j}YnXWd|��|��|��Xt�d�t�d�t�|�dS)N���wbr)rr'�sysrr(rr&rr�nicerrr r�marshal�dumpsr!�codeZ
ExceptionInforZ
_getreprcrash�EXITSTATUS_EXCEPTION�close�_exit)
rr,r-r.rrZretvalfZ
EXITSTATUSr�excinforrr	r+4s0





zForkedFunc._childc
Cs�||jd�\}}|r:t�|�r.t�|�d}q>t�|�}nd}|d@}|s~|s~|j�d�}z|��}Wd|��Xt	�
|�}nd}|j��}|j��}	|�
�t|||||	�S)Nr���rb)r*r�WIFSIGNALED�WTERMSIG�WEXITSTATUSr&r�readr9r5�loadsr'r(�_removetemp�Result)
r�waiterr*Zsystemstatus�
exitstatus�signalrZretval_datarrrrr	�
waitfinishQs$



zForkedFunc.waitfinishcCs|j��r|j��dS)N)r%�check�remove)rrrr	rDis
zForkedFunc._removetempcCs|jdk	r|��dS)N)r*rD)rrrr	�__del__ms
zForkedFunc.__del__)NNrNN)r
rrr8r/r+r�waitpidrIrDrLrrrr	rs
rc@seZdZdd�ZdS)rEcCs"||_||_||_||_||_dS)N)rGrHr�out�err)rrGrHrrrrrr	r/ss
zResult.__init__N)r
rrr/rrrr	rErsrE)	�__doc__r!rr3r5rr�objectrErrrr	�<module>s
W