HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/env/lib/python3.10/site-packages/billiard/__pycache__/process.cpython-310.pyc
o

!we/+�@s6ddlZddlZddlZddlZddlZddlZddlmZddlm	Z
z
ej�e�
��ZWney9dZYnwgd�Zdd�Zdd�Zd	d
�Zdd�Zefd
d�ZGdd�d�ZGdd�de�ZGdd�de�Ze�ae�d�ae�a[eZiZ ej!�"�D]\Z#Z$e#dd�dkr�de#vr�e#e e$<q�e�Z%dS)�N)�WeakSet��process)�BaseProcess�Process�current_process�active_childrencC�tS)z@
    Return process object representing the current process
    )�_current_process�rr�I/home/arjun/projects/env/lib/python3.10/site-packages/billiard/process.pyr#srcCs|at_dS�N)r
�_mprocrrrr�_set_current_process*srcCs*tt�D]}|j��durt�|�qdSr
)�list�	_children�_popen�poll�discard)�prrr�_cleanup/s

��rc
Cs*z|��WdStttfyYdSwr
)�flush�AttributeError�EnvironmentError�NotImplementedError)�frrr�_maybe_flush6s
�rcCs(z|�Wtt�StygYSw)zN
    Return list of process objects corresponding to live child processes
    )�	TypeErrorrr)rrrrr=s��rc@s2eZdZdZdd�Zddddidfdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
d5dd�Zdd�Zdd�Z
edd��Zejdd��Zedd��Zejdd��Zedd��Zejd d��Zed!d"��Zed#d$��ZeZed%d&��Zed'd(��Zed)d*��Zed+d,��Zed-d.��Zed/d0��Zd1d2�Zd3d4�ZdS)6rz�
    Process objects represent activity that is run in a separate process

    The class is analogous to `threading.Thread`
    cCst��r
)r��selfrrr�_PopenPszBaseProcess._PopenNrc	Ks�|dusJd��tt�}tj|f|_tj��|_t��|_d|_	||_
t|�|_t
|�|_|pAt|�jdd�dd�|jD��|_|durJ||_tdurSt�|�d|_dS)Nz#group argument must be None for now�-�:css�|]}t|�VqdSr
)�str)�.0�irrr�	<genexpr>`s�z'BaseProcess.__init__.<locals>.<genexpr>F)�next�_process_counterr
�	_identity�_config�copy�os�getpid�_parent_pidr�_target�tuple�_args�dict�_kwargs�type�__name__�join�_name�daemon�	_dangling�add�_controlled_termination)	r�group�target�name�args�kwargsr8�_kw�countrrr�__init__Ss$


��

zBaseProcess.__init__cCs"|jr|j|ji|j��dSdS)zQ
        Method to be run in sub-process; can be overridden in sub-class
        N)r/r1r3rrrr�runis�zBaseProcess.runcCsR|jdus	Jd��|jt��ksJd��t�|�|�|_|jj|_t�	|�dS)z%
        Start child process
        Nzcannot start a process twicez:can only start a process object created by current process)
rr.r,r-rr �sentinel�	_sentinelrr:rrrr�startps�
zBaseProcess.startcCs|jdur|j��dSdSr
)r�closerrrrrH|s
�zBaseProcess.closecCs|j��dS)zT
        Terminate process; sends SIGTERM signal or uses TerminateProcess()
        N)r�	terminaterrrrrI�szBaseProcess.terminatecCsd|_|��dS)NT)r;rIrrrr�terminate_controlled�sz BaseProcess.terminate_controlledcCsV|jt��ksJd��|jdusJd��|j�|�}|dur)t�|�|��dSdS)z5
        Wait until child process terminates
        zcan only join a child processNzcan only join a started process)r.r,r-r�waitrrrH)r�timeout�resrrrr6�s
�zBaseProcess.joincCsF|turdS|jt��ksJd��|jdurdS|j��|jjduS)z1
        Return whether process is alive
        Tzcan only test a child processNF)r
r.r,r-rr�
returncoderrrr�is_alive�s

zBaseProcess.is_alivecCs|jdurdS|j��duS)NF�rrrrrr�	_is_alive�s
zBaseProcess._is_alivecC�|jSr
)r7rrrrr>�szBaseProcess.namecCst|t�s	Jd��||_dS)Nzname must be a string)�
isinstancer#r7)rr>rrrr>�s
cCs|j�dd�S)z4
        Return whether process is a daemon
        r8F�r*�getrrrrr8�szBaseProcess.daemoncCs |jdus	Jd��||jd<dS)z1
        Set whether process is a daemon
        Nzprocess has already startedr8)rr*)r�daemonicrrrr8�scCs
|jdS)N�authkey)r*rrrrrW�s
zBaseProcess.authkeycCst|�|jd<dS)z2
        Set authorization key of process
        rWN)�AuthenticationStringr*)rrWrrrrW�scCs|jdur|jS|j��S)zM
        Return exit code of process or `None` if it has yet to stop
        NrPrrrr�exitcode�s

zBaseProcess.exitcodecCs|turt��S|jo|jjS)zU
        Return identifier (PID) of process or `None` if it has yet to start
        )r
r,r-r�pidrrrr�ident�szBaseProcess.identcCs z|jWStytd��w)z{
        Return a file descriptor (Unix) or handle (Windows) suitable for
        waiting for process termination.
        zprocess not started)rFr�
ValueErrorrrrrrE�s
�zBaseProcess.sentinelcCr	r
)r(rrrr�_counter��zBaseProcess._countercCr	r
)rrrrrr�r^zBaseProcess._childrencCrRr
)rWrrrr�_authkey��zBaseProcess._authkeycCrRr
)r8rrrr�	_daemonic�r`zBaseProcess._daemoniccCs|j�d�S)N�tempdirrTrrrr�_tempdir�szBaseProcess._tempdircCs�|turd}n|jt��krd}n|jdurd}n
|j��dur$|j}nd}t|�tur;|dkr3d}ndt	�
||�}dt|�j|j||j
rHdpId	fS)
N�started�unknown�initialr�stoppedzstopped[%s]z<%s(%s, %s%s)>z daemon�)r
r.r,r-rrrYr4�int�_exitcode_to_namerUr5r7r8)r�statusrrr�__repr__s 
�zBaseProcess.__repr__cCs�ddlm}m}�z7z�|jdur|�|j�t�d�at�a	t
jdur=z
t
j��t
tj�t
_Wntttfy<Ynwt}t|�tjjj}t|���}|�d�|D]}|rat||tj�snt�|�jD]}|� �qgqUt!�"�t_#z|j$�%�|�&�W~n~w|�'d|j(�z|�)�d}W|�*�n|�*�wWnyt+y�}	z8|	j,s�d}n,t|	j,dt-�r�|	j,d}nt
j.�/t0|	j,d�d�t1t
j.�t|	j,dt0�r�dnd}WYd}	~	nOd}	~	wd}|j2d|j3dd��sddl4}
t
j.�/d	|j3�|
�5�YW|�'d
|j(|�t1t
j6�t1t
j.�|SW|�'d
|j(|�t1t
j6�t1t
j.�|SW|�'d
|j(|�t1t
j6�t1t
j.�|S|�'d
|j(|�t1t
j6�t1t
j.�w)N�)�util�contextz#child process %s calling self.run()r�
z
Process %sT)�exc_infozProcess %s:
z#process %s exiting with exitcode %d)7rhrnro�
_start_method�_force_start_method�	itertoolsrBr(�setr�sys�stdinrH�openr,�devnullr�OSErrorr\r
r�logging�Logger�manager�
loggerDictr�keys�appendrS�PlaceHolder�	getLogger�handlers�
createLock�	threading�RLock�_lock�_finalizer_registry�clear�_run_after_forkers�inforZrD�_exit_function�
SystemExitr?ri�stderr�writer#r�errorr>�	traceback�	print_exc�stdout)rrnro�old_processr~�logger_namesr>�handlerrY�excr�rrr�
_bootstraps�



�

�
�



���

��

���

��
zBaseProcess._bootstrapr
)r5�
__module__�__qualname__�__doc__r rCrDrGrHrIrJr6rOrQ�propertyr>�setterr8rWrYr[rZrEr]rr_rarcrlr�rrrrrIsZ
�








	






rc@�eZdZdd�ZdS)rXcCs,ddlm}|�durtd��tt|�ffS)Nrm)�get_spawning_popenzJPickling an AuthenticationString object is disallowed for security reasons)ror�rrX�bytes)rr�rrr�
__reduce__es
�zAuthenticationString.__reduce__N)r5r�r�r�rrrrrXc�rXc@r�)�_MainProcesscCs2d|_d|_d|_d|_tt�d��dd�|_dS)Nr�MainProcess� z/mp)rW�	semprefix)r)r7r.rrXr,�urandomr*rrrrrCus�z_MainProcess.__init__N)r5r�r�rCrrrrr�sr�r�rm��SIG�_)&r,rv�signalrtr{r��_weakrefsetr�multiprocessingrr�path�abspath�getcwd�ORIGINAL_DIRrz�__all__rrrrrrr�rXr�r
rBr(rurrrj�__dict__�itemsr>�signumr9rrrr�<module>sF�


�