
    d6                     N   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	 g dZ
d ZdZdZdZd	Zd
ZdZdadad Zd Zd Zd Zd Zd*dZd Zd Z e            Zd Zd Z ej                    Z  ej!                    Z"d Z#d Z$i Z% ej!                    Z& G d de'          Z(d*dZ)d Z*da+eee)e	j,        e	j-        fdZ. ej/        e.            G d de'          Z0 G d  d!ej1                  Z2	  e j3        d"          Z4n# e5$ r d#Z4Y nw xY wd$ Z6d% Z7d& Z8d' Z9d( Z:d) Z;dS )+    N)_args_from_interpreter_flags   )process)	sub_debugdebuginfosub_warning
get_loggerlog_to_stderrget_temp_dirregister_after_fork
is_exitingFinalizeForkAwareThreadLockForkAwareLocalclose_all_fds_exceptSUBDEBUG
SUBWARNING   
         multiprocessingz+[%(levelname)s/%(processName)s] %(message)sFc                 H    t           rt          j        t          | g|R   d S d S N)_loggerlogr   msgargss     &  /croot/python-split_1694437901252/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/lib/python3.11/multiprocessing/util.pyr   r   ,   s4     *Hc)D))))))* *    c                 H    t           rt          j        t          | g|R   d S d S r   )r   r   DEBUGr   s     r!   r   r   0   s4     'E3&&&&&&&' 'r"   c                 H    t           rt          j        t          | g|R   d S d S r   )r   r   INFOr   s     r!   r   r   4   s4     &D#%%%%%%%& &r"   c                 H    t           rt          j        t          | g|R   d S d S r   )r   r   r   r   s     r!   r	   r	   8   s4     ,J+d++++++, ,r"   c                  $   ddl } |                                  	 t          s|                     t                    adt          _        t          t          d          r3t          j        t                     t          j
        t                     nNt          j                            t          di f           t          j                            t          di f           |                                  n# |                                  w xY wt          S )z0
    Returns logger used by multiprocessing
    r   N
unregister )logging_acquireLockr   	getLoggerLOGGER_NAME	propagatehasattratexitr)   _exit_functionregister_exithandlersremoveappend_releaseLock)r+   s    r!   r
   r
   <   s    
 NNN 	F''44G !G v|,, F!.111////$++^R,DEEE$++^R,DEEE 	Ns   CC2 2Dc                    ddl }t                      }|                    t                    }|                                }|                    |           |                    |           | r|                    |            dat          S )zB
    Turn on logging and add a handler which prints to stderr
    r   NT)
r+   r
   	FormatterDEFAULT_LOGGING_FORMATStreamHandlersetFormatter
addHandlersetLevel_log_to_stderrr   )levelr+   logger	formatterhandlers        r!   r   r   W   s    
 NNN\\F!!"899I##%%G###
g NNr"   c                  X    t           j        dk    rdS t          t           d          rdS dS )NlinuxTgetandroidapilevelF)sysplatformr0   r*   r"   r!   #_platform_supports_abstract_socketsrI   l   s1    
|wts()) t5r"   c                     | sdS t          | t                    r| d         dk    S t          | t                    r| d         dk    S t          d| d          )NFr    zaddress type of z unrecognized)
isinstancebytesstr	TypeError)addresss    r!   is_abstract_socket_namespacerQ   t   sj     u'5!! "qzQ	GS	!	! "qzT!!
?w???
@
@@r"   c                 ^     | |           t          j                    }|d |j        d<   d S d S )Ntempdir)r   current_process_config)rmtreerS   rT   s      r!   _remove_temp_dirrW      s@    
F7OOO-//O "-1	*** #"r"   c                  0   t          j                    j                            d          } | hdd l}dd l}|                    d          } t          d|            t          d t          |j
        | fd           | t          j                    j        d<   | S )NrS   r   zpymp-)prefixzcreated temp directory %si)r    exitpriority)r   rT   rU   getshutiltempfilemkdtempr   r   rW   rV   )rS   r\   r]   s      r!   r   r      s    %''/33I>>G""'"22('222 	'v}g.F"	$ 	$ 	$ 	$7>!!))4Nr"   c                      t          t                                                    } |                                  | D ]<\  \  }}}}	  ||           # t          $ r}t          d|           Y d }~5d }~ww xY wd S )Nz after forker raised exception %s)list_afterfork_registryitemssort	Exceptionr   )rb   indexidentfuncobjes         r!   _run_after_forkersrj      s    $**,,--E	JJLLL%* 8 8!tc	8DIIII 	8 	8 	83Q77777777	88 8s   A
A7A22A7c                 ^    | t           t          t                    t          |           |f<   d S r   )ra   next_afterfork_counterid)rh   rg   s     r!   r   r      s)    EH0112c77DABBBr"   c                   F    e Zd ZdZd	dZdeeej        fdZ	d Z
d Zd ZdS )
r   zA
    Class which supports object finalization using weakrefs
    r*   Nc                    |Et          |t                    s0t          d                    |t	          |                              |t          j        ||           | _        n|t          d          || _	        || _
        |pi | _        |t          t                    f| _        t          j                    | _        | t$          | j        <   d S )Nz3Exitpriority ({0!r}) must be None or int, not {1!s}z+Without object, exitpriority cannot be None)rL   intrO   formattypeweakrefref_weakref
ValueError	_callback_args_kwargsrl   _finalizer_counter_keyosgetpid_pid_finalizer_registry)selfrh   callbackr    kwargsrZ   s         r!   __init__zFinalize.__init__   s    $jc.J.J$ELL $|"4"46 67 7 7 ?#KT22DMM!JKKK!
|!4(:#;#;<	IKK	)-DI&&&r"   c                 @   	 || j         = | j         |            k    r |d           d}n4 |d| j        | j        | j                    | j        | j        i | j        }dx| _        x| _        x| _        x| _        | _         |S # t          $ r  |d           Y dS w xY w)zQ
        Run the callback unless it has already been called or cancelled
        z+finalizer ignored because different processNz/finalizer calling %s with args %s and kwargs %szfinalizer no longer registered)r|   r   rx   ry   rz   rv   KeyError)r   wrr   r   r~   ress         r!   __call__zFinalize.__call__   s    	#DI. yFFHH$$	GHHH	K.$*dlD D D$dndjADLAA7;<DM <DN <TZ < L49J  	8 	8 	8I6777777	8s   B BBc                     	 t           | j        = dx| _        x| _        x| _        x| _        | _        dS # t          $ r Y dS w xY w)z3
        Cancel finalization of the object
        N)r   r|   rv   rx   ry   rz   r   r   s    r!   cancelzFinalize.cancel   sg    	<#DI.
 8<<DM <DN <TZ < L4999	  	 	 	DD	s   4 
AAc                     | j         t          v S )zS
        Return whether this finalizer is still waiting to invoke callback
        )r|   r   r   s    r!   still_activezFinalize.still_active   s     y///r"   c                    	 |                                  }n# t          t          f$ r d }Y nw xY w|d| j        j        z  S d| j        j        dt          | j        d| j                  }| j        r|dt          | j                  z   z  }| j	        r|dt          | j	                  z   z  }| j
        d          |dt          | j
        d                   z   z  }|d	z   S )
Nz<%s object, dead><z object, callback=__name__z, args=z	, kwargs=r   z, exitpriority=>)rv   AttributeErrorrO   	__class__r   getattrrx   ry   rN   rz   r|   )r   rh   xs      r!   __repr__zFinalize.__repr__   s   	--//CC	* 	 	 	CCC	 ;&)@@@  '''
DNCCCE : 	-S__,,A< 	1s4<0000A9Q<#"S1%6%666A3ws    --)r*   NN)r   
__module____qualname____doc__r   r   r   r}   r~   r   r   r   r   r*   r"   r!   r   r      s         . . . .&  &9$RY	   0
< 
< 
<0 0 0    r"   r   c                     t           dS  d n fdfdt          t                     D             }|                    d           |D ]b}t                               |          }|Dt	          d|           	  |             :# t
          $ r ddl}|                                 Y ^w xY wc t                                            dS dS )	z
    Run all finalizers whose exit priority is not None and at least minpriority

    Finalizers with highest priority are called first; finalizers with
    the same priority will be called in reverse order of creation.
    Nc                     | d         d uS Nr   r*   )ps    r!   <lambda>z!_run_finalizers.<locals>.<lambda>  s    qt4' r"   c                 0    | d         d uo| d         k    S r   r*   )r   minprioritys    r!   r   z!_run_finalizers.<locals>.<lambda>  s    qt4'?AaDK,? r"   c                 *    g | ]} |          |S r*   r*   ).0keyfs     r!   
<listcomp>z#_run_finalizers.<locals>.<listcomp>#  s&    ???C#?C???r"   T)reversez
calling %sr   )	r   r`   rc   r[   r   rd   	traceback	print_excclear)r   keysr   	finalizerr   r   s   `    @r!   _run_finalizersr     s     " 	''???? @???4 344???DIIdI 	& 	&'++C00	 lI...&	 & & &    ##%%%%%&	 ! !!##### s   >
B		"B.-B.c                  "    t           pt           du S )z6
    Returns true if the process is shutting down
    N)_exitingr*   r"   r!   r   r   8  s     'x4''r"   c                 |   t           sda  | d            |d            |d            |            p |            D ]3}|j        r* | d|j                   |j                                         4 |            D ]'} | d|j                   |                                 ( |d            |             d S d S )NTzprocess shutting downz2running all "atexit" finalizers with priority >= 0r   z!calling terminate() for daemon %szcalling join() for process %sz)running the remaining "atexit" finalizers)r   daemonname_popen	terminatejoin)r   r   r   active_childrenrT   r   s         r!   r2   r2   @  s     $%%%BCCC?( %_&& ) )8 )D<afEEEH&&((($_&&  4af===9:::? r"   c                   &    e Zd Zd Zd Zd Zd ZdS )r   c                     t          j                    | _        | j        j        | _        | j        j        | _        t          | t          j                   d S r   )	threadingLock_lockacquirereleaser   r   _at_fork_reinitr   s    r!   r   zForkAwareThreadLock.__init__q  sC    ^%%
z)z)D"5"EFFFFFr"   c                 8    | j                                          d S r   )r   r   r   s    r!   r   z#ForkAwareThreadLock._at_fork_reinitw  s    
""$$$$$r"   c                 4    | j                                         S r   )r   	__enter__r   s    r!   r   zForkAwareThreadLock.__enter__z  s    z##%%%r"   c                       | j         j        | S r   )r   __exit__)r   r    s     r!   r   zForkAwareThreadLock.__exit__}  s    "tz"D))r"   N)r   r   r   r   r   r   r   r*   r"   r!   r   r   p  sS        G G G% % %& & &* * * * *r"   r   c                       e Zd Zd Zd ZdS )r   c                 (    t          | d            d S )Nc                 4    | j                                         S r   )__dict__r   )rh   s    r!   r   z)ForkAwareLocal.__init__.<locals>.<lambda>  s    s|/A/A/C/C r"   )r   r   s    r!   r   zForkAwareLocal.__init__  s    D"C"CDDDDDr"   c                 $    t          |           dfS )Nr*   )rs   r   s    r!   
__reduce__zForkAwareLocal.__reduce__  s    Dzz2~r"   N)r   r   r   r   r   r*   r"   r!   r   r     s5        E E E    r"   r   SC_OPEN_MAX   c                 (   t          |           dt          gz   } |                                  | d         t          k    s
J d            t          t	          |           dz
            D ])}t          j        | |         dz   | |dz                       *d S )Nzfd too larger   )r`   MAXFDrc   rangelenr}   
closerange)fdsis     r!   r   r     s    
s))r5k
!CHHJJJr7e^3s88a<   * *
c!fQhAaC))))* *r"   c                     t           j        d S 	 t           j                                         n# t          t          f$ r Y nw xY w	 t          j        t
          j        t
          j                  } 	 t          | dd          t           _        d S #  t          j        |             xY w# t          t          f$ r Y d S w xY w)Nzutf-8F)encodingclosefd)	rG   stdincloseOSErrorrw   r}   opendevnullO_RDONLY)fds    r!   _close_stdinr     s    
y	Z    WRZ--	R'5AAACIII	HRLLLZ    s3   / AA)B) 1B B&&B) )B>=B>c                      	 t           j                                         n# t          t          f$ r Y nw xY w	 t           j                                         d S # t          t          f$ r Y d S w xY wr   )rG   stdoutflushr   rw   stderrr*   r"   r!   _flush_std_streamsr     s    
J'   
J'   s   ! 55A A.-A.c                    dd l }dd l}t          t          t	          t
          |                              }t          j                    \  }}	 |                    || gd|d d dddddd||dddd d d dd |j	                  t          j
        |           t          j
        |           S # t          j
        |           t          j
        |           w xY w)Nr   Tr   F)_posixsubprocess
subprocesstuplesortedmaprq   r}   pipe	fork_exec
_USE_VFORKr   )pathr    passfdsr   r   errpipe_readerrpipe_writes          r!   spawnv_passfdsr     s    F3sG,,--..G"$'))L- ))4&$tBBL-5"dD$D!	# # 	
 	
s   0B( (*Cc                  8    | D ]}t          j        |           dS )z/Close each file descriptor given as an argumentN)r}   r   )r   r   s     r!   	close_fdsr     s*      
 r"   c                      ddl m}  t          j                     ddlm} |j                                         ddlm} |j	                                         t                       |                                  |                                  dS )zKCleanup multiprocessing resources when multiprocessing tests
    completed.r   )support)
forkserver)resource_trackerN)testr   r   _cleanupr   r   _forkserver_stopr   _resource_trackerr   
gc_collectreap_children)r   r   r   s      r!   _cleanup_testsr     s       +*****  """ 100000&,,... r"   r   )<r}   	itertoolsrG   rt   r1   r   r   r    r   __all__NOTSETr   r$   r&   r   r.   r:   r   r?   r   r   r   r	   r
   r   rI   rQ   abstract_sockets_supportedrW   r   WeakValueDictionaryra   countrm   rj   r   r   r{   objectr   r   r   r   r   rT   r2   r3   r   localr   sysconfr   rd   r   r   r   r   r   r   r*   r"   r!   <module>r
     sD   
			     



       3 3 3 3 3 3         

	
F 
* * *' ' '& & &, , ,  6   *  A A A A@BB 2 2 2  $ 2g133 $Y_&& 8 8 8I I I  $Y_&& S S S S Sv S S Sl&$ &$ &$ &$X( ( ( E?#*#:#*#:( ( ( (T    * * * * *& * * *"    Y_   BJ}%%EE   EEE* * *  .              s   5D DD