
    =Ogk/                     &   g d 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 	 ej        	                     ej
                              Zn# e$ r dZY nw xY wd Zd Zd Zd Z G d d	e          Z G d
 de          Z G d de          Z G d de          Zda e            a ej        d          a e            a[i Z eej                                                   D ] \  Z!Z"e!dd         dk    rde!vr	de! ee" <   ![![" e            Z#dS ))BaseProcesscurrent_processactive_childrenparent_process    N)WeakSetc                      	 t           S N)_current_process     0/usr/lib64/python3.11/multiprocessing/process.pyr   r   %   s     r   c                  H    	 t                       t          t                    S r	   )_cleanuplist	_childrenr   r   r   r   r   +   s     JJJ	??r   c                      	 t           S r	   )_parent_processr   r   r   r   r   3   s     r   c                      t          t                    D ]9} | j        x}r.|                                t                              |            :d S r	   )r   r   _popenpolldiscard)pchild_popens     r   r   r   =   sV    )__ ! !8#K 	!)9)9););)Ga   ! !r   c                   l   e Zd Z	 d Zddddi fdd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d ZddZed             ZdS )r   c                     t           r	   )NotImplementedErrorselfs    r   _PopenzBaseProcess._PopenM   s    !!r   Nr   )daemonc                6   t          t                    }t          j        |fz   | _        t          j                                        | _        t          j                    | _        t          j	        | _
        d | _        d| _        || _        t          |          | _        t!          |          | _        |p;t%          |           j        dz   d                    d | j        D                       z   | _        ||| _        t.                              |            d S )NF-:c              3   4   K   | ]}t          |          V  d S r	   )str).0is     r   	<genexpr>z'BaseProcess.__init__.<locals>.<genexpr>^   s(      ==c!ff======r   )next_process_counterr
   	_identity_configcopyosgetpid_parent_pidname_parent_namer   _closed_targettuple_argsdict_kwargstype__name__join_namer    	_danglingadd)r   grouptargetr1   argskwargsr    counts           r   __init__zBaseProcess.__init__P   s     %&&)3uh>'/44669;;,14[[
F|| >T$ZZ036XX==dn=====>
 DKdr   c                 2    | j         rt          d          d S )Nzprocess object is closed)r3   
ValueErrorr   s    r   _check_closedzBaseProcess._check_closedc   s%    < 	97888	9 	9r   c                 H    	 | j         r | j         | j        i | j         d S d S r	   )r4   r6   r8   r   s    r   runzBaseProcess.rung   s>    	 < 	6DL$*555555	6 	6r   c                     	 |                                   t                       |                     |           | _        | j        j        | _        | `| `| `t          
                    |            d S r	   )rG   r   r   r   sentinel	_sentinelr4   r6   r8   r   r>   r   s    r   startzBaseProcess.startn   sl    	 	 	


kk$''- L$*dldr   c                 b    	 |                                   | j                                         d S r	   )rG   r   	terminater   s    r   rO   zBaseProcess.terminate   s5    	 	r   c                 b    	 |                                   | j                                         d S r	   )rG   r   killr   s    r   rQ   zBaseProcess.kill   s5    	 	r   c                     	 |                                   | j                            |          }|t                              |            d S d S r	   )rG   r   waitr   r   )r   timeoutress      r   r;   zBaseProcess.join   sX    	 	 kw''?d##### ?r   c                     	 |                                   | t          u rdS | j        dS | j                                        }|dS t                              |            dS )NTF)rG   r
   r   r   r   r   )r   
returncodes     r   is_alivezBaseProcess.is_alive   sr    	 	###4 ;5[%%''
4d###5r   c                     	 | j         d| j                                         t          d          | j                                          d | _         | `t
                              |            d| _        d S )Nz^Cannot close a process while it is still running. You should first call join() or terminate().T)r   r   rF   closerL   r   r   r3   r   s    r   rZ   zBaseProcess.close   s    	 ;"{!!)  "P Q Q QKDKd###r   c                     | j         S r	   r<   r   s    r   r1   zBaseProcess.name   s
    zr   c                     || _         d S r	   r\   )r   r1   s     r   r1   zBaseProcess.name   s     


r   c                 :    	 | j                             dd          S )Nr    F)r,   getr   s    r   r    zBaseProcess.daemon   s!    	 |%000r   c                     	 || j         d<   d S )Nr    r,   )r   daemonics     r   r    zBaseProcess.daemon   s    	 "*Xr   c                     | j         d         S Nauthkeyra   r   s    r   re   zBaseProcess.authkey   s    |I&&r   c                 6    	 t          |          | j        d<   d S rd   )AuthenticationStringr,   )r   re   s     r   re   zBaseProcess.authkey   s#    	 #7w"?"?Yr   c                 z    	 |                                   | j        | j        S | j                                        S r	   )rG   r   r   r   s    r   exitcodezBaseProcess.exitcode   s?    	 	;;{!!!r   c                     	 |                                   | t          u rt          j                    S | j        o| j        j        S r	   )rG   r
   r.   r/   r   pidr   s    r   identzBaseProcess.ident   sD    	 	###9;;;24;?2r   c                 x    	 |                                   	 | j        S # t          $ r t          d          d w xY w)Nzprocess not started)rG   rL   AttributeErrorrF   r   s    r   rK   zBaseProcess.sentinel   sT    	 		>>! 	> 	> 	>233=	>s    9c                    d }| t           u rd}nS| j        rd}nI| j        t          j                    k    rd}n*| j        d}n | j                                        }|d}nd}t          |           j        d| j	        z  g}| j        "|
                    d| j        j        z             |
                    d| j        z             |
                    |           |3t                              ||          }|
                    d	|z             | j        r|
                    d
           dd                    |          z  S )Nstartedclosedunknowninitialstoppedzname=%rzpid=%sz	parent=%szexitcode=%sr    z<%s> )r
   r3   r0   r.   r/   r   r   r9   r:   r<   appendrk   _exitcode_to_namer_   r    r;   )r   ri   statusinfos       r   __repr__zBaseProcess.__repr__  sF   ###FF\ 	#FF,,FF[ FF{''))H#""T

#Y%;<;"KK4;?2333K$"22333F(,,Xx@@HKK0111; 	"KK!!!&&r   c                    ddl m}m} 	 | j        |                    | j                   t          j        d          at                      a	|
                                 t          }| at          | j        | j        |          at           j        r%t!          j                                                     	 |                                  ~n# ~w xY w|                    d           	 |                                  d}|                                 n# |                                 w xY wn# t0          $ rl}|j        d}nXt5          |j        t6                    r|j        }n6t8          j                            t?          |j                  dz              d}Y d }~nKd }~w d}dd l }t8          j                            d| j!        z             |"                                 Y nxY wt!          j#                     |                    d|z             |$                                 nD# t!          j#                     |                    d|z             |$                                 w xY w|S )N   )utilcontextz child process calling self.run()r   
zProcess %s:
z process exiting with exitcode %d)% r}   r~   _start_method_force_start_method	itertoolsrC   r*   setr   _close_stdinr
   _ParentProcessr2   r0   r   	threading_HAVE_THREAD_NATIVE_IDmain_thread_set_native_id_after_forkry   rI   _exit_function
SystemExitcode
isinstanceintsysstderrwriter%   	tracebackr1   	print_exc	_shutdown_flush_std_streams)r   parent_sentinelr}   r~   old_processri   er   s           r   
_bootstrapzBaseProcess._bootstrap"  s|   ########(	&!-++D,>???(q11I*K#,!4#3_F FO/ 9%''66888   """  KKII8999&


##%%%%##%%%%% 	 	 	v~AFC(( 6
  QVt!3444	"HJ_ty8999!!!!!!!!II88CDDD##%%%% !!!II88CDDD##%%%%sc   B,D. 7C D. CD. )D ?D. D**D. -H* .
G'8A"FH* AG'%H* *AI+c                  l    ddl m}  | j                                         |                                  d S )Nr|   r}   )r   r}   _finalizer_registryclear_run_after_forkersr   s    r   r   zBaseProcess._after_forkR  sA     &&(((!!!!!r   r	   )r:   
__module____qualname__r   rD   rG   rI   rM   rO   rQ   r;   rX   rZ   propertyr1   setterr    re   ri   rl   rk   rK   rz   r   staticmethodr   r   r   r   r   r   G   s       
" " " "$T2     &9 9 96 6 6  $       	$ 	$ 	$ 	$  &  "   X 
[  [ 1 1 X1 ]* * ]* ' ' X' ^@ @ ^@ " " X" 3 3 X3 C	> 	> X	>' ' '>. . . .` " " \" " "r   r   c                       e Zd Zd ZdS )rg   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   	TypeErrorrg   bytes)r   r   s     r   
__reduce__zAuthenticationString.__reduce__^  sO    //////'2   $eDkk^33r   N)r:   r   r   r   r   r   r   rg   rg   ]  s#        4 4 4 4 4r   rg   c                   <    e Zd Zd Zd Zed             ZddZeZdS )r   c                 v    d| _         || _        || _        d | _        d | _        d| _        || _        i | _        d S )Nr   F)r+   r<   _pidr0   r   r3   rL   r,   )r   r1   rk   rK   s       r   rD   z_ParentProcess.__init__n  s?    
	!r   c                 6    ddl m}  || j        gd           S Nr   )rS   )rT   multiprocessing.connectionrS   rL   )r   rS   s     r   rX   z_ParentProcess.is_alivex  s1    3333334(!44444r   c                     | j         S r	   )r   r   s    r   rl   z_ParentProcess.ident|  s
    yr   Nc                 :    	 ddl m}  || j        g|           d S r   r   )r   rT   rS   s      r   r;   z_ParentProcess.join  s;    	 	433333dnw//////r   r	   )	r:   r   r   rD   rX   r   rl   r;   rk   r   r   r   r   r   l  sb          5 5 5   X0 0 0 0 CCCr   r   c                       e Zd Zd Zd ZdS )_MainProcessc                     d| _         d| _        d | _        d | _        d| _        t          t          j        d                    dd| _        d S )Nr   MainProcessF    z/mp)re   	semprefix)	r+   r<   r0   r   r3   rg   r.   urandomr,   r   s    r   rD   z_MainProcess.__init__  sN    "
#7
2#G#G%*, ,r   c                     d S r	   r   r   s    r   rZ   z_MainProcess.close  s    r   N)r:   r   r   rD   rZ   r   r   r   r   r     s2        , , ,$    r   r   r|      SIG_r"   )$__all__r.   r   signalr   r   _weakrefsetr   pathabspathgetcwdORIGINAL_DIROSErrorr   r   r   r   objectr   r   rg   r   r   r   r
   rC   r*   r   r   rw   r   __dict__itemsr1   signumr=   r   r   r   <module>r      s:     
			 



               7??929;;//LL   LLL      ! ! !O" O" O" O" O"& O" O" O"l4 4 4 4 45 4 4 4    [   B    ;   0 <>> "9?1%% CEE	  D..0011 0 0LD&BQBx3d??%/ZZ6'"& GII			s   'A AA