f7NddlZddlZddlZddlZddlZddlZddlmZddlm Z gdZ dZ dZ dZ dZd Zd Zd Zdad ad ZdZdZdZdZd*dZdZdZeZdZdZejZ ej!Z"dZ#dZ$iZ%ej!Z&Gdde'Z(d*dZ)dZ*d a+eee)e j,e j-fdZ.ej/e.Gdde'Z0Gd d!ej1Z2 ej3d"Z4n #e5$rd#Z4YnwxYwd$Z6d%Z7d&Z8d'Z9d(Z:d)Z;dS)+N)_args_from_interpreter_flags)process) sub_debugdebuginfo sub_warning get_logger log_to_stderr get_temp_dirregister_after_fork is_exitingFinalizeForkAwareThreadLockForkAwareLocalclose_all_fds_exceptSUBDEBUG SUBWARNING multiprocessingz+[%(levelname)s/%(processName)s] %(message)sFcNtrtjt|g|RddidSdSN stacklevel)_loggerlogrmsgargss ;/opt/alt/python311/lib64/python3.11/multiprocessing/util.pyrr,s<8 Hc7D777Q7777788cNtrtjt|g|RddidSdSr)rrDEBUGr s r#rr0s<5 E34444!4444455r$cNtrtjt|g|RddidSdSr)rrINFOr s r#rr4s<4 D#33333333344r$cNtrtjt|g|RddidSdSr)rrrr s r#r r 8s<: J9d999q99999::r$c$ddl}| ts|tadt_t tdr3tjttj tnNtj tdiftj tdif|n#|wxYwtS)z0 Returns logger used by multiprocessing rN unregister)logging _acquireLockr getLogger LOGGER_NAME propagatehasattratexitr+_exit_functionregister _exithandlersremoveappend _releaseLock)r-s r#r r <s NNN  F'' 44G !G v|,, F!.111////$++^R,DEEE$++^R,DEEE  Ns CC22Dcddl}t}|t}|}|||||r||datS)zB Turn on logging and add a handler which prints to stderr rNT) r-r FormatterDEFAULT_LOGGING_FORMAT StreamHandler setFormatter addHandlersetLevel_log_to_stderrr)levelr-logger formatterhandlers r#r r Ws NNN \\F!!"899I##%%G ### g N Nr$cXtjdkrdSttdrdSdS)NlinuxTgetandroidapilevelF)sysplatformr2r,r$r##_platform_supports_abstract_socketsrKls1 |wts())t 5r$c|sdSt|tr |ddkSt|tr |ddkStd|d)NFrzaddress type of z unrecognized) isinstancebytesstr TypeError)addresss r#is_abstract_socket_namespacerStsj u'5!!"qzQ GS ! !"qzT!! ?w??? @ @@r$chd}|||tj}| d|jd<dSdS)Nc>t|dtsdSNr) issubclassFileNotFoundError)funcpatherr_infos r#onerrorz!_remove_temp_dir..onerrors&(1+'899    r$)r\tempdir)rcurrent_process_config)rmtreer]r\r^s r#_remove_temp_dirrasY F7G$$$$-//O"-1 ***#"r$c0tjjd}|hddl}ddl}|d}td|tdt|j |fd|tjjd<|S)Nr]rzpymp-)prefixzcreated temp directory %si)r" exitpriority) rr^r_getshutiltempfilemkdtemprrrar`)r]rfrgs r#r r s%''/33I>>G""'"22 ('222 'v}g.F" $ $ $ $7>!!))4 Nr$ctt}||D]<\\}}}} ||#t$r}t d|Yd}~5d}~wwxYwdS)Nz after forker raised exception %s)list_afterfork_registryitemssort Exceptionr)rlindexidentrYobjes r#_run_after_forkersrss $**,, - -E JJLLL%*88!tc 8 DIIII 8 8 8 3Q 7 7 7 7 7 7 7 7 888s A A7A22A7c^|tttt||f<dSN)rknext_afterfork_counterid)rqrYs r#r r s)EH0112c77DABBBr$cFeZdZdZd dZdeeejfdZ dZ dZ dZ dS) rzA Class which supports object finalization using weakrefs r,Nc|Et|ts0td|t ||t j|||_n|td||_ ||_ |pi|_ |ttf|_tj|_|t$|j<dS)Nz3Exitpriority ({0!r}) must be None or int, not {1!s}z+Without object, exitpriority cannot be None)rNintrQformattypeweakrefref_weakref ValueError _callback_args_kwargsrv_finalizer_counter_keyosgetpid_pid_finalizer_registry)selfrqcallbackr"kwargsrds r#__init__zFinalize.__init__s  $jc.J.J $ELL $|"4"46677 7 ?#KT22DMM  !JKK K! | !4(:#;#;< IKK )-DI&&&r$c@ ||j=|j|kr|dd}n4|d|j|j|j|j|ji|j}dx|_x|_x|_x|_|_|S#t $r|dYdSwxYw)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 %szfinalizer no longer registered)rrrrrrKeyError)rwrrrrress r#__call__zFinalize.__call__s #DI.yFFHH$$ GHHH K.$*dlDDD$dndjADLAA7; ) rAttributeErrorrQ __class__rgetattrrrrPrr)rrqxs r#__repr__zFinalize.__repr__s --//CC *   CCC  ;&)@@ @ ''' DNCCC E : - S__, ,A < 1 s4<000 0A 9Q< # "S1%6%66 6A3ws --)r,NN) r __module__ __qualname____doc__rrrrrrrrrr,r$r#rrs....&&9$RY 0 < < <000 r$rctdSdnfdfdttD}|d|D]b}t|}|Dt d| |:#t $rddl}|Y^wxYwctdSdS) 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|dduSrVr,)ps r#z!_run_finalizers..sqt4'r$c0|dduo |dkSrVr,)r minprioritys r#rz!_run_finalizers..sqt4'?AaDK,?r$c*g|]}| |Sr,r,).0keyfs r# z#_run_finalizers..&s& ? ? ?C# ?C ? ? ?r$T)reversez calling %sr) rrjrmrerrn traceback print_excclear)rkeysr finalizerrrs` @r#_run_finalizersrs "  ' ' ? ? ? ? @ ? ? ?4 344 ? ? ?DIIdI & &'++C00  lI . . . &  & & &    ##%%%%% & !!!#####s> B  "B.-B.c"tptduS)z6 Returns true if the process is shutting down N)_exitingr,r$r#rr;s  'x4''r$c|tsda|d|d|d|p|D]3}|jr*|d|j|j4|D]'}|d|j|(|d|dSdS)NTzprocess shutting downz2running all "atexit" finalizers with priority >= 0rz!calling terminate() for daemon %szcalling join() for process %sz)running the remaining "atexit" finalizers)rdaemonname_popen terminatejoin)rrractive_childrenr^rs r#r4r4Cs   $%%% BCCC ?   (%_&& ) )8)D.ss|/A/A/C/Cr$)r rs r#rzForkAwareLocal.__init__sD"C"CDDDDDr$c$t|dfS)Nr,)r}rs r# __reduce__zForkAwareLocal.__reduce__sDzz2~r$N)rrrrrr,r$r#rrs5EEEr$r SC_OPEN_MAXc(t|dtgz}||dtks Jdtt |dz D])}t j||dz||dz*dS)Nz fd too larger)rjMAXFDrmrangelenr closerange)fdsis r#rrs s))r5k !CHHJJJ r7e   ^    3s88a< ** c!fQhAaC))))**r$ctjdS tjn#ttf$rYnwxYw t jt jt j} t |ddt_dS#t j|xYw#ttf$rYdSwxYw)Nzutf-8F)encodingclosefd) rIstdincloseOSErrorrropendevnullO_RDONLY)fds r# _close_stdinrs y   Z       WRZ - - R'5AAACIII  HRLLL  Z      s3/AA)B)1BB&&B))B>=B>c tjn#ttf$rYnwxYw tjdS#ttf$rYdSwxYwru)rIstdoutflushrrstderrr,r$r#_flush_std_streamsrs   J '        J '     s!55AA.-A.cddl}ddl}ttt t |}t j\}} |||gd|dddddddd||dddddddd|j t j |t j |S#t j |t j |wxYw)NrTrF) _posixsubprocess subprocesstuplesortedmapr{rpipe fork_exec _USE_VFORKr)rZr"passfdsrr errpipe_read errpipe_writes r#spawnv_passfdsrsF3sG,,--..G"$'))L- )) 4&$t BBL- 5"dD$D  ! ##    s 0B((*Cc8|D]}tj|dS)z/Close each file descriptor given as an argumentN)rr)rrs r# close_fdsrs*  r$c ddlm}tjddlm}|jddlm}|j t| | dS)zKCleanup multiprocessing resources when multiprocessing tests completed.r)support) forkserver)resource_trackerN) testrr_cleanuprr _forkserver_stopr_resource_trackerr gc_collect reap_children)rrrs r#_cleanup_testsrs +*****  """100000&,,...  r$ru)rsD   333333          F 888555444:::6*AAAA@BB 2 2 2   $2g133$Y_&&888III$Y_&&SSSSSvSSSl&$&$&$&$X((( E?#*#:#*#:((((T *****&***"Y_ BJ} % %EE EEE***   .        s5DDD