grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a ´i¶6ã@s¾ddlZddlZddlZddlZddlZddlZddlmZddlm Z gd¢Z dZ dZ dZ dZd Zd Zd Zdad ad d„Zdd„Zdd„Zdd„Zdd„Zd?dd„Zdd„Zdd„ZeƒZdd„Zdd „Ze ¡Z 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/d0„d0ej1ƒZ2ze 3d1¡Z4Wne5�yˆd2Z4Yn0d3d4„Z6d5d6„Z7d7d8„Z8d9d:„Z9d;d<„Z:d=d>„Z;dS)Aé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)sFcGstrtjt|g|¢RŽdS©N)Ú_loggerÚlogr©ÚmsgÚargs©rú,/usr/lib64/python3.9/multiprocessing/util.pyr,srcGstrtjt|g|¢RŽdSr)rrÚDEBUGrrrr r0srcGstrtjt|g|¢RŽdSr)rrÚINFOrrrr r4srcGstrtjt|g|¢RŽdSr)rrrrrrr r8srcCs„ddl}| ¡zdtsj| t¡adt_ttdƒrFt t ¡t  t ¡n$tj   t dif¡tj   t dif¡W| ¡n | ¡0tS)NrÚ unregisterr)ÚloggingÚ _acquireLockrÚ getLoggerÚ LOGGER_NAMEÚ propagateÚhasattrÚatexitr#Ú_exit_functionÚregisterÚ _exithandlersÚremoveÚappendÚ _releaseLock)r$rrr r <s    r cCsJddl}tƒ}| t¡}| ¡}| |¡| |¡|rB| |¡dat S)NrT) r$r Ú FormatterÚDEFAULT_LOGGING_FORMATÚ StreamHandlerÚ setFormatterÚ addHandlerÚsetLevelÚ_log_to_stderrr)Úlevelr$ÚloggerÚ formatterÚhandlerrrr r Ws    r cCs tjdkrdSttdƒrdSdS)NÚlinuxTÚgetandroidapilevelF)ÚsysÚplatformr)rrrr Ú#_platform_supports_abstract_socketsls   r@cCsH|sdSt|tƒr|ddkSt|tƒr4|ddkStd|›d�ƒ‚dS)NFrúzaddress type of z unrecognized)Ú isinstanceÚbytesÚstrÚ TypeError)Úaddressrrr Úis_abstract_socket_namespacets    rGcCs&||ƒt ¡}|dur"d|jd<dS)NÚtempdir)rÚcurrent_processÚ_config)ÚrmtreerHrIrrr Ú_remove_temp_dir„srLcCsft ¡j d¡}|durbddl}ddl}|jdd�}td|ƒtdt |j |fdd�|t ¡jd<|S)NrHrzpymp-)Úprefixzcreated temp directory %siœÿÿÿ)rÚ exitpriority) rrIrJÚgetÚshutilÚtempfileÚmkdtemprrrLrK)rHrPrQrrr r �s  ÿr c Cshtt ¡ƒ}| ¡|D]J\\}}}}z ||ƒWqty`}ztd|ƒWYd}~qd}~00qdS)Nz after forker raised exception %s)ÚlistÚ_afterfork_registryÚitemsÚsortÚ Exceptionr)rUÚindexÚidentÚfuncÚobjÚerrr Ú_run_after_forkers¢s  r]cCs|tttƒt|ƒ|f<dSr)rTÚnextÚ_afterfork_counterÚid)r[rZrrr r «sr c@sBeZdZd dd„Zdeeejfdd„Zdd„Z d d „Z d d „Z dS)rrNcCsŠ|dur&t|tƒs&td |t|ƒ¡ƒ‚|dur>t ||¡|_n|durNtdƒ‚||_ ||_ |p`i|_ |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)rBÚintrEÚformatÚtypeÚweakrefÚrefÚ_weakrefÚ ValueErrorÚ _callbackÚ_argsÚ_kwargsr^Ú_finalizer_counterÚ_keyÚosÚgetpidÚ_pidÚ_finalizer_registry)Úselfr[ÚcallbackrÚkwargsrNrrr Ú__init__ºs ÿÿ  zFinalize.__init__cCs�z ||j=Wnty&|dƒYnf0|j|ƒkrB|dƒd}n(|d|j|j|jƒ|j|ji|j¤Ž}d|_|_|_|_|_|SdS)Nzfinalizer no longer registeredz+finalizer ignored because different processz/finalizer calling %s with args %s and kwargs %s)rlÚKeyErrorrorhrirjrf)rqÚwrrprrnÚresrrr Ú__call__Ís    ÿÿzFinalize.__call__cCsBz t|j=WntyYn 0d|_|_|_|_|_dSr)rprlrurfrhrirj©rqrrr Úcancelås  ÿÿzFinalize.cancelcCs |jtvSr)rlrpryrrr Ú still_activeñszFinalize.still_activec Cs´z | ¡}Wnttfy&d}Yn0|durz<%s object, callback=%sÚ__name__z, args=z , kwargs=rz, exitpriority=ú>) rfÚAttributeErrorrEÚ __class__r|ÚgetattrrhrirDrjrl)rqr[Úxrrr Ú__repr__÷s"   þzFinalize.__repr__)rNN) r|Ú __module__Ú __qualname__rtrprrmrnrxrzr{r‚rrrr r¶s ü  rc s´tdur dSˆdurdd„‰n ‡fdd„‰‡fdd„ttƒDƒ}|jdd�|D]N}t |¡}|durPtd|ƒz |ƒWqPtyœd dl}| ¡YqP0qPˆdur°t ¡dS) NcSs |dduS©Nrr©Úprrr Úóz!_run_finalizers..cs|dduo|dˆkSr…rr†)Ú minpriorityrr rˆr‰csg|]}ˆ|ƒr|‘qSrr)Ú.0Úkey)Úfrr Ú #r‰z#_run_finalizers..T)Úreversez calling %sr) rprSrVrOrrWÚ tracebackÚ print_excÚclear)rŠÚkeysrŒÚ finalizerr�r)r�rŠr Ú_run_finalizers s$       r•cCs tp tduSr)Ú_exitingrrrr r 8sr cCs„ts€da|dƒ|dƒ|dƒ|ƒdurr|ƒD] }|jr0|d|jƒ|j ¡q0|ƒD]}|d|jƒ| ¡qX|dƒ|ƒdS)NTzprocess shutting downz2running all "atexit" finalizers with priority >= 0rz!calling terminate() for daemon %szcalling join() for process %sz)running the remaining "atexit" finalizers)r–ÚdaemonÚnameÚ_popenÚ terminateÚjoin)rrr•Úactive_childrenrIr‡rrr r+@s        r+c@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) rcCs.t ¡|_|jj|_|jj|_t|tjƒdSr)Ú threadingÚLockÚ_lockÚacquireÚreleaser rÚ_at_fork_reinitryrrr rtqs   zForkAwareThreadLock.__init__cCs|j ¡dSr)rŸr¢ryrrr r¢wsz#ForkAwareThreadLock._at_fork_reinitcCs |j ¡Sr)rŸÚ __enter__ryrrr r£zszForkAwareThreadLock.__enter__cGs |jj|ŽSr)rŸÚ__exit__)rqrrrr r¤}szForkAwareThreadLock.__exit__N)r|rƒr„rtr¢r£r¤rrrr rpsrc@seZdZdd„Zdd„ZdS)rcCst|dd„ƒdS)NcSs |j ¡Sr)Ú__dict__r’)r[rrr rˆƒr‰z)ForkAwareLocal.__init__..)r ryrrr rt‚szForkAwareLocal.__init__cCs t|ƒdfS)Nr)rcryrrr Ú __reduce__„szForkAwareLocal.__reduce__N)r|rƒr„rtr¦rrrr r�srÚ SC_OPEN_MAXécCsNt|ƒdtg}| ¡tt|ƒdƒD] }t ||d||d¡q(dS)Néÿÿÿÿr)rSÚMAXFDrVÚrangeÚlenrmÚ closerange)ÚfdsÚirrr r�src Cs�tjdurdSztj ¡Wnttfy2Yn0z@t tjtj¡}zt|dd�t_Wnt |¡‚Yn0WnttfyŠYn0dS)NF)Úclosefd) r>ÚstdinÚcloseÚOSErrorrgrmÚopenÚdevnullÚO_RDONLY)Úfdrrr Ú _close_stdinšs   r¸c CsPztj ¡Wnttfy$Yn0ztj ¡WnttfyJYn0dSr)r>ÚstdoutÚflushr~rgÚstderrrrrr Ú_flush_std_streams±sr¼cCs’ddl}tttt|ƒƒƒ}t ¡\}}zP| |t |¡gd|dddddddd||ddddddd¡Wt  |¡t  |¡St  |¡t  |¡0dS)NrTr©F) Ú_posixsubprocessÚtupleÚsortedÚmaprarmÚpipeÚ fork_execÚfsencoder²)ÚpathrÚpassfdsr½Ú errpipe_readÚ errpipe_writerrr Úspawnv_passfds¿s  ý  úÿ rÈcGs|D]}t |¡qdSr)rmr²)r®r·rrr Ú close_fdsÍsrÉcCsZddlm}t ¡ddlm}|j ¡ddlm}|j  ¡t ƒ|  ¡|  ¡dS)Nr)Úsupport)Ú forkserver)Úresource_tracker) ÚtestrÊrÚ_cleanuprrËÚ _forkserverÚ_stoprÌÚ_resource_trackerr•Ú gc_collectÚ reap_children)rÊrËrÌrrr Ú_cleanup_testsÓs     rÔ)N)N)rdr*r�Ú subprocessrÚrÚ__all__ÚNOTSETrr!r"rr'r2rr7rrrrr r r@rGÚabstract_sockets_supportedrLr ÚWeakValueDictionaryrTÚcountr_r]r rprkÚobjectrr•r r–rœrIr+r,rÚlocalrÚsysconfrªrWrr¸r¼rÈrÉrÔrrrr Ú sn       V ,þ *