
    ⾙h/+                        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                  j                   e j                               Z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j6                  d      a e       a[eZi Z ejB                  jE                         D ]  \  Z#Z$e#dd dk(  sde#vse#e e$ <     e       Z%y# e$ r dZY w xY w)    N)WeakSetprocess)BaseProcessProcesscurrent_processactive_childrenc                      t         S )z@
    Return process object representing the current process
    )_current_process     L/var/www/Befach/backend/env/lib/python3.12/site-packages/billiard/process.pyr   r   #   s
     r   c                     | xa t        _         y N)r   _mprocr   s    r   _set_current_processr   *   s    188v.r   c                      t        t              D ]2  } | j                  j                         t        j	                  |        4 y r   )list	_children_popenpolldiscard)ps    r   _cleanupr   /   s.    )_88==?&a  r   c                 Z    	 | j                          y # t        t        t        f$ r Y y w xY wr   )flushAttributeErrorEnvironmentErrorNotImplementedError)fs    r   _maybe_flushr!   6   s+    		,.AB s    **c                 R    	  |         t        t              S # t         $ r g cY S w xY w)zN
    Return list of process objects corresponding to live child processes
    )	TypeErrorr   r   )r   s    r   r	   r	   =   s.    
 	?  	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y)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                  j                         | _        t        j                         | _        d | _	        || _
        t        |      | _        t        |      | _        |xs; t        |       j                   dz   dj#                  d | j                  D              z   | _        ||| _        t(        t(        j+                  |        d| _        y )Nz#group argument must be None for now-:c              3   2   K   | ]  }t        |        y wr   )str).0is     r   	<genexpr>z'BaseProcess.__init__.<locals>.<genexpr>`   s     4SV4s   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CC}%&)33ui?'//44699;4[
F| 5DJ''#-HH4T^^445 	
  DK MM$',$r   c                 j    | j                   r' | j                   | j                  i | j                   yy)zQ
        Method to be run in sub-process; can be overridden in sub-class
        N)r9   r;   r=   r&   s    r   runzBaseProcess.runi   s+     <<DLL$**55 r   c                    | j                   J d       | j                  t        j                         k(  sJ d       t	                | j                  |       | _         | j                   j                  | _        t        j                  |        y)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   sr     {{"B$BB"299;. 	IH	I.
kk$'--dr   c                 R    | j                   | j                   j                          y y r   )r   closer&   s    r   rU   zBaseProcess.close|   s!    ;;"KK #r   c                 8    | j                   j                          y)zT
        Terminate process; sends SIGTERM signal or uses TerminateProcess()
        N)r   	terminater&   s    r   rW   zBaseProcess.terminate   s     	r   c                 2    d| _         | j                          y )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                  j	                  |      }|&t
        j                  |        | j                          yy)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   so     299;.O0OO.{{&I(II&kkw'?d#JJL r   c                     | t         u ry| j                  t        j                         k(  sJ d       | j                  y| j                  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   sb     ##299;.O0OO.;;{{%%--r   c                 T    | j                   y| j                   j                         d u S )NFr   r   r&   s    r   	_is_alivezBaseProcess._is_alive   s'    ;;{{!T))r   c                     | j                   S r   )rA   r&   s    r   rH   zBaseProcess.name   s    zzr   c                 @    t        |t              sJ d       || _        y )Nzname must be a string)
isinstancer-   rA   )r'   rH   s     r   rH   zBaseProcess.name   s    $$=&==$
r   c                 :    | j                   j                  dd      S )z4
        Return whether process is a daemon
        rB   Fr4   getr&   s    r   rB   zBaseProcess.daemon   s    
 ||%00r   c                 H    | j                   J d       || j                  d<   y)z1
        Set whether process is a daemon
        Nzprocess has already startedrB   )r   r4   )r'   daemonics     r   rB   zBaseProcess.daemon   s(    
 {{"A$A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<   y)z2
        Set authorization key of process
        rm   N)AuthenticationStringr4   )r'   rm   s     r   rm   zBaseProcess.authkey   s    
 #7w"?Yr   c                 f    | j                   | j                   S | j                   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                  xr | 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   s0    
 ##99;;;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   s,    	4>>! 	42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                 8    | j                   j                  d      S )Ntempdirrh   r&   s    r   _tempdirzBaseProcess._tempdir   s     ||	**r   c                    | t         u rd}n\| j                  t        j                         k7  rd}n8| j                  d}n)| j                  j                         | j                  }nd}t        |      t        u r!|dk(  rd}ndt        j                  ||      z  }dt        |       j                  d| j                  d	|| j                  xr d
xs 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    ##F,F[[ F{{!-"<3{"&):)>)>vv)NN#':#6#6

#)4;;+D9+J+JL 	Lr   c                    ddl m}m} 	 | j                  |j	                  | j                         t        j                  d      at               a	t        j                  A	 t        j                  j                          t        t        j                        t        _        t&        }t)        |        t*        j,                  j.                  j0                  }t3        |j5                               }|j7                  d        |D ]V  }|rt9        ||   t*        j:                        r#t+        j<                  |      j>                  D ]  }|jA                           X tC        jD                         t*        _#        	 |jH                  jK                          |jM                          ~|jO                  d| jP                         	 | jS                          d}|jU                          	 |jO                  d
| jP                  |       tc        t        jl                         tc        t        j\                         |S # t         t"        t$        f$ r Y w xY w# ~w xY w# |jU                          w xY w# tV        $ r}	|	jX                  sd}nt9        |	jX                  d   tZ              r|	jX                  d   }nrt        j\                  j_                  ta        |	jX                  d         dz          tc        t        j\                         t9        |	jX                  d   t`              rdnd}Y d }	~	Dd }	~	w d}|je                  d| jf                  d      s@dd l4}
t        j\                  j_                  d	| jf                  z         |
jk                          Y xY w# |jO                  d
| jP                         tc        t        jl                         tc        t        j\                         w xY 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)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Iyy$IIOO% $RZZ 0CI +K & !//::J
 12L%$:j.>.5.A.A$C#*#4#4T#:#C#C**, $D %
 &OO-GM ((..0'')  II;TXXF&
##%" II;hh*$$k )':> 2   ##% 	D88CHHQK-88A;

  SXXa[!1D!89SZZ( *388A; <1!	&H::lDII:E 

  499!<=##%II;hh*$$s   AI+ !A H5 !BI+ %AI+ 9*I #I+ I I+ #N 5I	I+ II+ II+ I((I+ +	N4B.L("N (A%N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
  	
.*
   
[[  1 1 ]]* * ' ' ^^@ @ " " 3 3 C4 4           + +L0Br   r   c                       e Zd Zd Zy)ro   c                 V    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  s3    /'23 3 $eDk^33r   N)r?   r   r   r   r   r   r   ro   ro   c  s    4r   ro   c                       e Zd Zd Zy)_MainProcessc                     d| _         d| _        d | _        d | _        t	        t        j                  d            dd| _        y )Nr   MainProcess    z/mp)rm   	semprefix)r3   rA   r8   r   ro   r6   urandomr4   r&   s    r   rM   z_MainProcess.__init__u  s;    "
#7

2#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   
 
      -77??9299;/L K9
! & 	S St	45 	4 ,; ,  > "9??1% E	   OO))+LD&BQx5S_%)6'" ,
 I	o  Ls   *C( (C21C2