
    Sf/+                     
   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
 	 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          Z G d de          Z G d de          Z e            a ej        d          a e            a[eZi Z ej!        "                                D ]\  Z#Z$e#dd         dk    r
de#vre#e e$ <    e            Z%dS )    N)WeakSetprocess)BaseProcessProcesscurrent_processactive_childrenc                      t           S )z@
    Return process object representing the current process
    )_current_process     B/var/www/html/env/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   /   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!   6   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	   =   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 analogous to `threading.Thread`
    c                     t                      r   )r   selfs    r   _PopenzBaseProcess._PopenP   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>`   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kwargsrB   _kwcounts	            r   __init__zBaseProcess.__init__S   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)r9   r;   r=   r&   s    r   runzBaseProcess.runi   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   r8   r6   r7   r   r(   sentinel	_sentinelr   rD   r&   s    r   startzBaseProcess.startp   s     {""$B"""29;;...H /..


kk$''-dr   c                 J    | j         | j                                          d S d S r   )r   closer&   s    r   rU   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   rW   zBaseProcess.terminate   s     	r   c                 <    d| _         |                                  d S )NT)rE   rW   r&   s    r   terminate_controlledz BaseProcess.terminate_controlled   s     '+$r   c                    | j         t          j                    k    s
J d            | j        
J d            | j                            |          }|0t
                              |            |                                  dS dS )z5
        Wait until child process terminates
        zcan only join a child processNzcan only join a started process)r8   r6   r7   r   waitr   r   rU   )r'   timeoutress      r   r@   zBaseProcess.join   s     29;;...0O...{&&(I&&&kw''?d###JJLLLLL ?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   r8   r6   r7   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   )rA   r&   s    r   rH   zBaseProcess.name   s
    zr   c                 R    t          |t                    s
J d            || _        d S )Nzname must be a string)
isinstancer-   rA   )r'   rH   s     r   rH   zBaseProcess.name   s,    $$$==&===$


r   c                 8    | j                             dd          S )z4
        Return whether process is a daemon
        rB   Fr4   getr&   s    r   rB   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 startedrB   )r   r4   )r'   daemonics     r   rB   zBaseProcess.daemon   s-    
 {""$A"""!)Xr   c                     | j         d         S )Nauthkey)r4   r&   s    r   rm   zBaseProcess.authkey   s    |I&&r   c                 4    t          |          | j        d<   dS )z2
        Set authorization key of process
        rm   N)AuthenticationStringr4   )r'   rm   s     r   rm   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
        rb   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   r6   r7   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)rR   r   
ValueErrorr&   s    r   rQ   zBaseProcess.sentinel   s9    	4>! 	4 	4 	42333	4s   	 #c                     t           S r   )r2   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   )rm   r&   s    r   _authkeyzBaseProcess._authkey   s     |r   c                     | j         S r   )rB   r&   s    r   	_daemoniczBaseProcess._daemonic   s     {r   c                 6    | j                             d          S )Ntempdirrh   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   r8   r6   r7   r   r   rq   r>   int_exitcode_to_nameri   r?   rA   rB   )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 )N   )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	itertoolsrL   r2   setr   sysstdinrU   openr6   devnullr   OSErrorrv   r   r   loggingLoggermanager
loggerDictr   keysappendrf   PlaceHolder	getLoggerhandlers
createLock	threadingRLock_lock_finalizer_registryclear_run_after_forkersinfors   rO   _exit_function
SystemExitrI   r   stderrwriter-   r!   errorrH   	traceback	print_excstdout)r'   r   r   old_processr   logger_namesrH   handlerrq   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   )r?   
__module____qualname____doc__r(   rM   rO   rS   rU   rW   rY   r@   r`   rc   propertyrH   setterrB   rm   rq   rt   rs   rQ   rx   r   r{   r}   r   r   r   r   r   r   r   r   I   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 )ro   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#   ro   bytes)r'   r   s     r   
__reduce__zAuthenticationString.__reduce__e  sO    //////'23 3 3 $eDkk^33r   N)r?   r   r   r   r   r   r   ro   ro   c  s#        4 4 4 4 4r   ro   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)rm   	semprefix)r3   rA   r8   r   ro   r6   urandomr4   r&   s    r   rM   z_MainProcess.__init__u  sG    "
#7
2#G#G%*, ,r   N)r?   r   r   rM   r   r   r   r   r   s  s#        , , , , ,r   r   r      SIG_)&r6   r   signalr   r   r   _weakrefsetr   multiprocessingr   r   pathabspathgetcwdORIGINAL_DIRr   __all__r   r   r   r!   r	   r   r   ro   r   r   rL   r2   r   r   r   r   __dict__itemsrH   signumrC   r   r   r   <module>r      s-   
			 



                 - - - - - -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	   O))++ * *LD&BQBx5S__%)6'" GII			s   'A AA