o ?Og6@sddlZddlZddlZddlZddlZddlZddlmZddlm Z gdZ dZ dZ dZ dZd Zd Zd Zdad ad dZddZddZddZddZd?ddZddZddZeZddZdd ZeZ e!Z"d!d"Z#d#d$Z$iZ%e!Z&Gd%d&d&e'Z(d?d'd(Z)d)d*Z*d a+eee)e j,e j-fd+d,Z.e/e.Gd-d.d.e'Z0Gd/d0d0ej1Z2ze3d1Z4Wn e5yd2Z4Ynwd3d4Z6d5d6Z7d7d8Z8d9d:Z9d;d<Z:d=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)sFcG trtjt|g|RdSdSN)_loggerlogrmsgargsr ;/opt/alt/python310/lib64/python3.10/multiprocessing/util.pyr,rcGrr)rrDEBUGrr r r!r0r"rcGrr)rrINFOrr r r!r4r"rcGrr)rrrrr r r!r8r"rcCs ddl}|zAts=|tadt_ttdr$tt t t n tj t diftj t difW|tSW|tSW|tS|w)Nr unregisterr )loggingZ _acquireLockrZ getLogger LOGGER_NAMEZ propagatehasattratexitr%_exit_functionregisterZ _exithandlersremoveappendZ _releaseLock)r&r r r!r <s*     r cCsL ddl}t}|t}|}|||||r"||dat S)NrT) r&r Z FormatterDEFAULT_LOGGING_FORMATZ StreamHandlerZ setFormatterZ addHandlerZsetLevel_log_to_stderrr)levelr&ZloggerZ formatterZhandlerr r r!r Ws    r cCs tjdkrdSttdrdSdS)NZlinuxTZgetandroidapilevelF)sysplatformr(r r r r!#_platform_supports_abstract_socketsls  r3cCsD|sdSt|tr|ddkSt|tr|ddkStd|d)NFrzaddress type of z unrecognized) isinstancebytesstr TypeError)Zaddressr r r!is_abstract_socket_namespacets    r9cCs*||t}|durd|jd<dSdS)Ntempdir)rcurrent_process_config)rmtreer:r;r r r!_remove_temp_dirs r>cCsftjd}|dur1ddl}ddl}|jdd}td|tdt |j |fdd|tjd<|S)Nr:rzpymp-)prefixzcreated temp directory %si)r exitpriority) rr;r<getshutiltempfileZmkdtemprrr>r=)r:rBrCr r r!r s  r c Csftt}||D]$\\}}}}z||Wq ty0}z td|WYd}~q d}~wwdS)Nz after forker raised exception %s)list_afterfork_registryitemssort Exceptionr)rFindexZidentfuncobjer r r!_run_after_forkerss  rMcCs|tttt||f<dSr)rEnext_afterfork_counterid)rKrJr r r!r sr c@sDeZdZ d ddZdeeejfddZddZ d d Z d d Z dS)rr NcCs|durt|tstd|t||durt|||_n|dur'td||_ ||_ |p0i|_ |t t f|_t|_|t|j<dS)Nz3Exitpriority ({0!r}) must be None or int, not {1!s}z+Without object, exitpriority cannot be None)r5intr8formattypeweakrefref_weakref ValueError _callback_args_kwargsrN_finalizer_counter_keyosgetpid_pid_finalizer_registry)selfrKcallbackrkwargsr@r r r!__init__s   zFinalize.__init__cCs z||j=Wnty|dYdSw|j|kr#|dd}n|d|j|j|j|j|ji|j}d|_|_|_|_|_|S)Nzfinalizer no longer registeredz+finalizer ignored because different processz/finalizer calling %s with args %s and kwargs %s)r\KeyErrorr_rXrYrZrV)raZwrr`rr^resr r r!__call__s"    zFinalize.__call__cCsF zt|j=Wn tyYdSwd|_|_|_|_|_dSr)r`r\rerVrXrYrZrar r r!cancels   zFinalize.cancelcCs |jtvSr)r\r`rhr r r! still_actives zFinalize.still_activec Csz|}Wn ttfyd}Ynw|durd|jjSd|jjt|jd|jf}|jr8|dt|j7}|j rD|dt|j 7}|j ddurV|dt|j d7}|dS) Nz<%s object, dead>z<%s object, callback=%s__name__z, args=z , kwargs=rz, exitpriority=>) rVAttributeErrorr8 __class__rkgetattrrXrYr7rZr\)rarKxr r r!__repr__s$  zFinalize.__repr__)r NN) rk __module__ __qualname__rdr`rr]r^rgrirjrqr r r r!rs   rc s tdurdSdurddnfddfddttD}|jdd|D]'}t|}|durPtd|z|Wq)tyOd dl}|Yq)wq)dur[tdSdS) NcSs |dduSNrr pr r r!s z!_run_finalizers..cs|dduo |dkSrtr ru) minpriorityr r!rwcsg|]}|r|qSr r ).0key)fr r! #ryz#_run_finalizers..T)reversez calling %sr) r`rDrGrArrH traceback print_excclear)rxkeysr{ finalizerrr )r|rxr!_run_finalizers s,         rcCs tptduSr)_exitingr r r r!r 8s r cCstsBda|d|d|d|dur9|D]}|jr(|d|j|jq|D] }|d|j|q,|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)rZdaemonnameZ_popenZ terminatejoin)rrractive_childrenr;rvr r r!r*@s"         r*c@s,eZdZddZddZddZddZd S) rcCs.t|_|jj|_|jj|_t|tjdSr) threadingZLock_lockacquirereleaser r_at_fork_reinitrhr r r!rdqs   zForkAwareThreadLock.__init__cCs|jdSr)rrrhr r r!rwsz#ForkAwareThreadLock._at_fork_reinitcC |jSr)r __enter__rhr r r!rzs zForkAwareThreadLock.__enter__cGs |jj|Sr)r__exit__)rarr r r!r} zForkAwareThreadLock.__exit__N)rkrrrsrdrrrr r r r!rps  rc@seZdZddZddZdS)rcCst|dddS)NcSrr)__dict__r)rKr r r!rws z)ForkAwareLocal.__init__..)r rhr r r!rdszForkAwareLocal.__init__cCs t|dfS)Nr )rSrhr r r! __reduce__rzForkAwareLocal.__reduce__N)rkrrrsrdrr r r r!rs r SC_OPEN_MAXcCsNt|dtg}|tt|dD]}t||d||dqdS)Nr)rDMAXFDrGrangelenr] closerange)fdsir r r!rs rc CstjdurdSztjWn ttfyYnwzttjtj}z t|dddt_WWdSt|ttfyDYdSw)Nzutf-8F)encodingclosefd) r1stdincloseOSErrorrWr]opendevnullO_RDONLY)fdr r r! _close_stdins"  rc CsPztjWn ttfyYnwztjWdSttfy'YdSwr)r1stdoutflushrmrWstderrr r r r!_flush_std_streamssrcCsddl}tttt|}t\}}z(||t|gd|dddddddd||dddddddWt |t |St |t |w)NrTrF) _posixsubprocesstuplesortedmaprQr]pipeZ fork_execfsencoder)pathrZpassfdsrZ errpipe_readZ errpipe_writer r r!spawnv_passfdss    rcGs |D]}t|qdSr)r]r)rrr r r! close_fdss rcCs\ ddlm}tddlm}|jddlm}|j t | | dS)Nr)support) forkserver)resource_tracker) testrrZ_cleanuprrZ _forkserverZ_stoprZ_resource_trackerrZ gc_collectZ reap_children)rrrr r r!_cleanup_testss      rr)r ZWeakValueDictionaryrEcountrOrMr r`r[objectrrr rrr;r*r+rZlocalrsysconfrrHrrrrrrr r r r!sr         V, *