
     h+                        d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
mZ ddlmZmZ 	 ej                             ej                              Zn# e$ r dZY nw xY wg dZd Zd	 Zd
 Zd ZefdZ G d de          Z G d de          Z G d de          Z e            a  ej!        d          a" e#            a$[eZ%i Z& eej'                  D ]\  Z(Z)e(dd         dk    r
de(vre(e&e) <    e	            Z*dS )    )absolute_importN)WeakSetprocess   )itemsstring_t)BaseProcessProcesscurrent_processactive_childrenc                      t           S )z@
    Return process object representing the current process
    )_current_process     L/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/billiard/process.pyr   r   '   s
     r   c                 "    | xa t          _         d S N)r   _mprocr   s    r   _set_current_processr   .   s    188v...r   c                      t          t                    D ]5} | j                                        t                              |            6d S r   )list	_children_popenpolldiscard)ps    r   _cleanupr   3   sF    )__ ! !8==??&a   ! !r   c                 l    	 |                                   d S # t          t          t          f$ r Y d S w xY wr   )flushAttributeErrorEnvironmentErrorNotImplementedError)fs    r   _maybe_flushr%   :   sC    						,.AB   s    33c                 f    	  |              n# t           $ r g cY S w xY wt          t                    S )zN
    Return list of process objects corresponding to live child processes
    )	TypeErrorr   r   )r   s    r   r   r   A   sF    



   			 	??s   
 c                      e Zd ZdZd Zddddi dfdZd Zd Zd Zd	 Z	d
 Z
ddZd Zd Zed             Zej        d             Zed             Zej        d             Zed             Zej        d             Zed             Zed             ZeZed             Zed             Zed             Zed             Zed             Zed             Zd Zd ZdS )r
   z
    Process objects represent activity that is run in a separate process

    The class is analagous to `threading.Thread`
    c                     t                      r   )r#   selfs    r   _PopenzBaseProcess._PopenT   s    !###r   Nr   c                 :   |
J d            t          t                    }t          j        |fz   | _        t          j                                        | _        t          j                    | _        d | _	        || _
        t          |          | _        t          |          | _        |p;t          |           j        dz   d                    d | j        D                       z   | _        ||| _        t(          t(                              |            d| _        d S )Nz#group argument must be None for now-:c              3   4   K   | ]}t          |          V  d S r   )str).0is     r   	<genexpr>z'BaseProcess.__init__.<locals>.<genexpr>d   s(      44SVV444444r   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kwargsrF   _kwcounts	            r   __init__zBaseProcess.__init__W   s    }}C}}}%&&)3ui?'/44669;;4[[
F|| 5DJJ'#-HH44T^444445 	
  DK MM$',$$$r   c                 F    | j         r | j         | j        i | j         dS dS )zQ
        Method to be run in sub-process; can be overridden in sub-class
        N)r=   r?   rA   r*   s    r   runzBaseProcess.runm   s9     < 	6DL$*555555	6 	6r   c                    | j         
J d            | j        t          j                    k    s
J d            t	                       |                     |           | _         | j         j        | _        t          	                    |            dS )z%
        Start child process
        Nzcannot start a process twicez:can only start a process object created by current process)
r   r<   r:   r;   r   r,   sentinel	_sentinelr   rH   r*   s    r   startzBaseProcess.startt   s     {""$B"""29;;...H /..


kk$''-dr   c                 J    | j         | j                                          d S d S r   )r   closer*   s    r   rY   zBaseProcess.close   s,    ;"K #"r   c                 8    | j                                          dS )zT
        Terminate process; sends SIGTERM signal or uses TerminateProcess()
        N)r   	terminater*   s    r   r[   zBaseProcess.terminate   s     	r   c                 <    d| _         |                                  d S )NT)rI   r[   r*   s    r   terminate_controlledz BaseProcess.terminate_controlled   s     '+$r   c                    | j         t          j                    k    s
J d            | j        
J d            | j                            |          }|t
                              |            |                                  dS )z5
        Wait until child process terminates
        zcan only join a child processNzcan only join a started process)r<   r:   r;   r   waitr   r   rY   )r+   timeoutress      r   rD   zBaseProcess.join   s}     29;;...0O...{&&(I&&&kw''?d###

r   c                     | t           u rdS | j        t          j                    k    s
J d            | j        dS | j                                         | j        j        du S )z1
        Return whether process is alive
        Tzcan only test a child processNF)r   r<   r:   r;   r   r   
returncoder*   s    r   is_alivezBaseProcess.is_alive   si     ###429;;...0O...;5{%--r   c                 J    | j         dS | j                                         d u S )NFr   r   r*   s    r   	_is_alivezBaseProcess._is_alive   s(    ;5{!!T))r   c                     | j         S r   )rE   r*   s    r   rL   zBaseProcess.name   s
    zr   c                 R    t          |t                    s
J d            || _        d S )Nzname must be a string)
isinstancer	   rE   )r+   rL   s     r   rL   zBaseProcess.name   s,    $))BB+BBB)


r   c                 8    | j                             dd          S )z4
        Return whether process is a daemon
        rF   Fr8   getr*   s    r   rF   zBaseProcess.daemon   s    
 |%000r   c                 <    | j         
J d            || j        d<   dS )z1
        Set whether process is a daemon
        Nzprocess has already startedrF   )r   r8   )r+   daemonics     r   rF   zBaseProcess.daemon   s-    
 {""$A"""!)Xr   c                     | j         d         S )Nauthkey)r8   r*   s    r   rq   zBaseProcess.authkey   s    |I&&r   c                 4    t          |          | j        d<   dS )z2
        Set authorization key of process
        rq   N)AuthenticationStringr8   )r+   rq   s     r   rq   zBaseProcess.authkey   s    
 #7w"?"?Yr   c                 P    | j         | j         S | j                                         S )zM
        Return exit code of process or `None` if it has yet to stop
        rf   r*   s    r   exitcodezBaseProcess.exitcode   s(    
 ;;{!!!r   c                 `    | t           u rt          j                    S | j        o| j        j        S )zU
        Return identifier (PID) of process or `None` if it has yet to start
        )r   r:   r;   r   pidr*   s    r   identzBaseProcess.ident   s-    
 ###9;;;24;?2r   c                 L    	 | j         S # t          $ r t          d          w xY w)z{
        Return a file descriptor (Unix) or handle (Windows) suitable for
        waiting for process termination.
        zprocess not started)rV   r!   
ValueErrorr*   s    r   rU   zBaseProcess.sentinel   s9    	4>! 	4 	4 	42333	4s   	 #c                     t           S r   )r6   r*   s    r   _counterzBaseProcess._counter   s
      r   c                     t           S r   )r   r*   s    r   r   zBaseProcess._children   s
     r   c                     | j         S r   )rq   r*   s    r   _authkeyzBaseProcess._authkey   s     |r   c                     | j         S r   )rF   r*   s    r   	_daemoniczBaseProcess._daemonic   s     {r   c                 6    | j                             d          S )Ntempdirrl   r*   s    r   _tempdirzBaseProcess._tempdir  s     |	***r   c                    | t           u rd}nL| j        t          j                    k    rd}n-| j        d}n#| j                                        | j        }nd}t          |          t          u r'|dk    rd}ndt          
                    ||          z  }dt          |           j        d| j        d	|| j        rd
pddS )Nstartedunknowninitialr   stoppedzstopped[%s]<(z, z daemon z)>)r   r<   r:   r;   r   r   ru   rB   int_exitcode_to_namerm   rC   rE   rF   )r+   statuss     r   __repr__zBaseProcess.__repr__  s    ###FF,,FF[ FF{!!-"<<3{{"&):)>)>vv)N)NN#'::#6#6#6


#)64;+D9+J+J+JL 	Lr   c                    ddl m}m} 	 | j        |                    | j                   t          j        d          at                      a	t          j        `	 t          j                                         t          t          j                  t          _        n# t           t"          t$          f$ r Y nw xY wt&          }t)          |            t*          j        j        j        }t3          |                                          }|                    d            |D ]T}|r t9          ||         t*          j                  s0t+          j        |          j        D ]}|                                  UtC          j"                    t*          _#        	 |j$        %                                 |&                                 ~n# ~w xY w|'                    d| j(                   	 | )                                 d}|*                                 n# |*                                 w xY wn&# tV          $ r}	|	j,        sd}nt9          |	j,        d         tZ                    r|	j,        d         }nwt          j.        /                    ta          |	j,        d                   dz              tc          t          j.                   t9          |	j,        d         t`                    rdnd}Y d }	~	nhd }	~	w d}|2                    d| j3        d          s?dd l4}
t          j.        /                    d	| j3        z             |
5                                 Y nxY w|'                    d
| j(        |           tc          t          j6                   tc          t          j.                   nS# |'                    d
| j(        |           tc          t          j6                   tc          t          j.                   w xY w|S )Nr   )utilcontextz#child process %s calling self.run()r   
z
Process %sT)exc_infozProcess %s:
z#process %s exiting with exitcode %d)7r   r   r   _start_method_force_start_method	itertoolsrP   r6   setr   sysstdinrY   openr:   devnullr"   OSErrorrz   r   r   loggingLoggermanager
loggerDictr   keysappendrj   PlaceHolder	getLoggerhandlers
createLock	threadingRLock_lock_finalizer_registryclear_run_after_forkersinforw   rS   _exit_function
SystemExitrM   r   stderrwriter1   r%   errorrL   	traceback	print_excstdout)r+   r   r   old_processr   logger_namesrL   handlerru   excr   s              r   
_bootstrapzBaseProcess._bootstrap  s   ########<	%!-++D,>???(q11Iy$IOO%%% $RZ 0 0CII(':>   D*K &&& !/:J
 1 122L%%%$ - - -:j.>.5.A$C $C -#*#4T#:#:#C - -**,,,,%O--GM (..000'')))  KKII;TXFFF&


##%%%%##%%%%% 	D 	D 	D8 DCHQK-- D8A;
  SXa[!1!1D!8999SZ((( *38A; < <C11!	&H::lDI:EE &    
  49!<===##%%%II;h* * *$$$$$$$ II;h* * *$$$$$$$s   AH' AB H' B63H' 5B66CH' -F? =H' ?GH' !H 7H' H""H' %N '
M
1B/K% N %A#M
N AO,r   )rC   
__module____qualname____doc__r,   rQ   rS   rW   rY   r[   r]   rD   rd   rg   propertyrL   setterrF   rq   ru   rx   rw   rU   r|   r   r   r   r   r   r   r   r   r   r
   r
   M   s|        $ $ $ "$TD- - - -,6 6 6
 
 
            	 	 	 	
. 
. 
.* * *
   X 
[  [ 1 1 X1 ]* * ]* ' ' X' ^@ @ ^@ " " X" 3 3 X3 C4 4 X4     X    X   X   X + + X+L L L0B B B B Br   r
   c                       e Zd Zd ZdS )rs   c                 n    ddl m}  |            t          d          t          t	          |           ffS )Nr   )get_spawning_popenzJPickling an AuthenticationString object is disallowed for security reasons)r   r   r'   rs   bytes)r+   r   s     r   
__reduce__zAuthenticationString.__reduce__i  sO    //////'23 3 3 $eDkk^33r   N)rC   r   r   r   r   r   r   rs   rs   g  s#        4 4 4 4 4r   rs   c                       e Zd Zd ZdS )_MainProcessc                     d| _         d| _        d | _        d | _        t	          t          j        d                    dd| _        d S )Nr   MainProcess    z/mp)rq   	semprefix)r7   rE   r<   r   rs   r:   urandomr8   r*   s    r   rQ   z_MainProcess.__init__y  sG    "
#7
2#G#G%*, ,r   N)rC   r   r   rQ   r   r   r   r   r   w  s#        , , , , ,r   r      SIG_)+
__future__r   r:   r   signalr   r   r   _weakrefsetr   multiprocessingr   r   fiver   r	   pathabspathgetcwdORIGINAL_DIRr   __all__r   r   r   r%   r   objectr
   r   rs   r   r   rP   r6   r   r   r   r   __dict__rL   signumrG   r   r   r   <module>r      sY   ' & & & & & 
			 



                 - - - - - - ! ! ! ! ! ! ! !7??929;;//LL   LLL K
J
J  9 9 9
! ! !   & 	 	 	 	S S S S S& S S St	4 	4 	4 	4 	45 	4 	4 	4 , , , , ,; , , ,  <>> "9?1%% CEE	   E&/** * *LD&BQBx5S__%)6'" GII			s   'A A&%A&