Ë
    òT•jµ7  ã                   ód  — 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jB                  «       Z"d„ Z#d„ Z$i Z% ejB                  «       Z& G d„ de'«      Z(d*d„Z)d„ Z*da+eee)e	jX                  e	jZ                  fd„Z. ej^                  e.«        G d„ de'«      Z0 G d „ d!ejb                  «      Z2	  e jf                  d"«      Z4d$„ Z6d%„ Z7d&„ Z8d'„ Z9d(„ Z:d)„ Z;y# e5$ r d#Z4Y Œw xY w)+é    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                 óN   — t         rt        j                  t        | g|¢­ddiŽ y y ©NÚ
stacklevelé   )Ú_loggerÚlogr   ©ÚmsgÚargss     ú+/usr/lib/python3.12/multiprocessing/util.pyr   r   ,   s"   € ÝÜ�‰”H˜cÐ7 DÒ7°QÓ7ð ó    c                 óN   — t         rt        j                  t        | g|¢­ddiŽ y y r   )r   r   ÚDEBUGr    s     r#   r   r   0   s"   € ÝÜ�‰”E˜3Ð4 Ò4°!Ó4ð r$   c                 óN   — t         rt        j                  t        | g|¢­ddiŽ y y r   )r   r   ÚINFOr    s     r#   r   r   4   s"   € ÝÜ�‰”D˜#Ð3 Ò3°Ó3ð r$   c                 óN   — t         rt        j                  t        | g|¢­ddiŽ y y r   )r   r   r   r    s     r#   r	   r	   8   s"   € ÝÜ�‰”J Ð9 dÒ9°qÓ9ð r$   c                  óì  — ddl } | j                  «        	 t        s¯| j                  t        «      adt        _        t        t        d«      r3t        j                  t        «       t        j                  t        «       nLt        j                  j                  t        di f«       t        j                  j                  t        di f«       | j                  «        t        S # | j                  «        w xY w)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²   € ó
 à×ÑÔðÝà×'Ñ'¬Ó4ˆGØ !ŒGÔô ”v˜|Ô,Ü×!Ñ!¤.Ô1Ü—‘¤Õ/ä×$Ñ$×+Ñ+¬^¸RÀÐ,DÔEÜ×$Ñ$×+Ñ+¬^¸RÀÐ,DÔEð 	×ÑÔä€Nøð 	×ÑÕús   –B5C! Ã!C3c                 óâ   — ddl }t        «       }|j                  t        «      }|j	                  «       }|j                  |«       |j                  |«       | r|j                  | «       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   sb   € ó
 ä‹\€FØ×!Ñ!Ô"8Ó9€IØ×#Ñ#Ó%€GØ×Ñ˜Ô#Ø
×Ñ�gÔáØ�‰˜ÔØ€NÜ€Nr$   c                  óN   — t         j                  dk(  ryt        t         d«      ryy)NÚlinuxTÚgetandroidapilevelF)ÚsysÚplatformr2   r,   r$   r#   Ú#_platform_supports_abstract_socketsrK   l   s"   € Ü
‡|�|�wÒØÜŒsÐ(Ô)ØØr$   c                 ó†   — | sy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_namespacerS   t   sN   € ÙØÜ�'œ5Ô!Ø�q‰z˜Q‰ÐÜ	�GœSÔ	!Ø�q‰z˜TÑ!Ð!Ü
Ð& w k°Ð?Ó
@Ð@r$   c                 ój   — d„ } | ||¬«       t        j                  «       }|�d |j                  d<   y y )Nc                 ó,   — t        |d   t        «      s‚ y ©Nr   )Ú
issubclassÚFileNotFoundError)ÚfuncÚpathÚerr_infos      r#   Úonerrorz!_remove_temp_dir.<locals>.onerror…   s   € Ü˜( 1™+Ô'8Ô9Øð :r$   )r\   Útempdir)r   Úcurrent_processÚ_config)Úrmtreer]   r\   r^   s       r#   Ú_remove_temp_dirra   „   s>   € òñ ˆ7˜GÕ$ä×-Ñ-Ó/€Oð Ð"Ø-1ˆ×Ñ 	Ò*ð #r$   c                  ó0  — t        j                  «       j                  j                  d«      } | €fdd l}dd l}|j                  d¬«      } t        d| «       t        d t        |j                  | fd¬«       | t        j                  «       j                  d<   | S )Nr]   r   zpymp-)Úprefixzcreated temp directory %siœÿÿÿ)r"   Úexitpriority)r   r^   r_   ÚgetÚshutilÚtempfileÚmkdtempr   r   ra   r`   )r]   rf   rg   s      r#   r   r   �   s‚   € ä×%Ñ%Ó'×/Ñ/×3Ñ3°IÓ>€GØ€ßØ×"Ñ"¨'Ð"Ó2ˆÜÐ(¨'Ô2ô 	�Ô'¨v¯}©}¸gÐ.FØ"õ	$à7>Œ×ÑÓ!×)Ñ)¨)Ñ4Ø€Nr$   c                  óÐ   — t        t        j                  «       «      } | j                  «        | D ]  \  \  }}}}	  ||«       Œ y # t        $ r}t        d|«       Y d }~Œ0d }~ww xY w)Nz after forker raised exception %s)ÚlistÚ_afterfork_registryÚitemsÚsortÚ	Exceptionr   )rl   ÚindexÚidentrY   ÚobjÚes         r#   Ú_run_after_forkersrs   ¥   sf   € ÜÔ$×*Ñ*Ó,Ó-€EØ	‡J�J„LØ%*ò 8Ñ!Ñˆ��t˜cð	8Ù��Iñ8øô ò 	8ÜÐ3°Q×7Ñ7ûð	8ús   »AÁ	A%ÁA Á A%c                 óH   — | t         t        t        «      t        | «      |f<   y ©N)rk   ÚnextÚ_afterfork_counterÚid)rq   rY   s     r#   r   r   ®   s   € ØEHÔœÔ0Ó1´2°c³7¸DÐAÒBr$   c                   óN   — e Zd ZdZdd„Zdeeej                  fd„Z	d„ Z
d„ Zd„ Zy)	r   zA
    Class which supports object finalization using weakrefs
    Nc                 ó|  — |�4t        |t        «      s$t        dj                  |t	        |«      «      «      ‚|�t        j                  || «      | _        n|€t        d«      ‚|| _	        || _
        |xs i | _        |t        t        «      f| _        t        j                   «       | _        | t$        | j                  <   y )Nz3Exitpriority ({0!r}) must be None or int, not {1!s}z+Without object, exitpriority cannot be None)rN   ÚintrQ   ÚformatÚtypeÚweakrefÚrefÚ_weakrefÚ
ValueErrorÚ	_callbackÚ_argsÚ_kwargsrv   Ú_finalizer_counterÚ_keyÚosÚgetpidÚ_pidÚ_finalizer_registry)Úselfrq   Úcallbackr"   Úkwargsrd   s         r#   Ú__init__zFinalize.__init__½   s¨   € ØÐ$¬j¸ÄcÔ.JÜØE×LÑLØ ¤$ |Ó"4ó6ó7ð 7ð ˆ?Ü#ŸK™K¨¨TÓ2ˆD�MØÐ!ÜÐJÓKÐKà!ˆŒØˆŒ
Ø’| ˆŒØ!¤4Ô(:Ó#;Ð<ˆŒ	Ü—I‘I“KˆŒ	à)-Ô˜DŸI™IÒ&r$   c                 ór  — 	 || j                   = | j                   |«       k7  r |d«       d}nO |d| j                  | j                  | j                  «        | j                  | j                  i | j                  ¤Ž}dx| _        x| _        x| _        x| _        | _         |S # t        $ r  |d«       Y y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‰   r‚   rƒ   r„   r€   ÚKeyError)r‹   ÚwrrŠ   r   rˆ   Úress         r#   Ú__call__zFinalize.__call__Ð   s¸   € ð	Ø# D§I¡IÐ.ð �y‰y™F›HÒ$ÙÐGÔHØ‘áÐKØŸ.™.¨$¯*©*°d·l±lôDà$�d—n‘n d§j¡jÐA°D·L±LÑA�à7;ð<ˆDŒMð <˜DœNð <¨T¬Zð <Ø œL¨4¬9ØˆJøô ò 	8ÙÐ6Ö7ð	8ús   ‚B" Â"B6Â5B6c                 óŒ   — 	 t         | j                  = dx| _        x| _        x| _        x| _        | _        y# t        $ r Y yw xY w)z3
        Cancel finalization of the object
        N)rŠ   r†   r€   r‚   rƒ   r„   r�   ©r‹   s    r#   ÚcancelzFinalize.cancelè   sU   € ð	<Ü# D§I¡IÐ.ð
 8<ð<ˆDŒMð <˜DœNð <¨T¬Zð <Ø œL¨4­9øô	 ò 	Ùð	ús   ‚7 ·	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‰yÔ/Ð/Ð/r$   c                 óþ  — 	 | j                  «       }|€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 # t        t        f$ r d }Y Œéw xY w)
Nz<%s object, dead>ú<z object, callback=Ú__name__z, args=z	, kwargs=r   z, exitpriority=ú>)r€   ÚAttributeErrorrQ   Ú	__class__r›   Úgetattrr‚   rƒ   rP   r„   r†   )r‹   rq   Úxs      r#   Ú__repr__zFinalize.__repr__ú   sì   € ð	Ø—-‘-“/ˆCð ˆ;Ø&¨¯©×)@Ñ)@Ñ@Ð@ð ð —‘×'Ó'Ü˜Ÿ™¨
°D·N±NÔCðEˆð �:Š:Ø�œS §¡›_Ñ,Ñ,ˆAØ�<Š<Ø�œs 4§<¡<Ó0Ñ0Ñ0ˆAØ�9‰9�Q‰<Ð#ØÐ"¤S¨¯©°1©Ó%6Ñ6Ñ6ˆAØ�3‰wˆøô ¤	Ð*ò 	ØŠCð	ús   ‚C( Ã(C<Ã;C<)r,   NN)r›   Ú
__module__Ú__qualname__Ú__doc__rŽ   rŠ   r   r‡   rˆ   r“   r–   r˜   r¡   r,   r$   r#   r   r   ¹   s3   „ ñó.ð& ð &9Ø$¨R¯Y©Yó	ò0
<ò0ór$   r   c                 ó|  ‡ — t         €y‰ €d„ }nˆ fd„}t        t         «      D �cg c]  } ||«      sŒ|‘Œ }}|j                  d¬«       |D ].  }t         j                  |«      }|€Œt	        d|«       	  |«        Œ0 ‰ €t         j                  «        yyc c}w # t
        $ r ddl}|j                  «        Y Œmw xY w)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 rV   r,   )Úps    r#   ú<lambda>z!_run_finalizers.<locals>.<lambda>  s   € �q˜‘t 4Ð'€ r$   c                 ó&   •— | d   d uxr | d   ‰k\  S rV   r,   )r§   Úminprioritys    €r#   r¨   z!_run_finalizers.<locals>.<lambda>  s   ø€ �q˜‘t 4Ð'Ò?¨A¨a©D°KÑ,?€ r$   T)Úreversez
calling %sr   )	rŠ   rj   rm   re   r   rn   Ú	tracebackÚ	print_excÚclear)rª   ÚfÚkeyÚkeysÚ	finalizerr¬   s   `     r#   Ú_run_finalizersr³     sÇ   ø€ ô Ð"ð 	àÐÙ'‰ã?ˆô  Ô 3Ó4Ö?�C¹¸#½ŠCÐ?€DÐ?Ø‡I�I�d€IÔàò 	&ˆÜ'×+Ñ+¨CÓ0ˆ	àÑ Ü�l IÔ.ð&Ù•ð	&ð ÐÜ×!Ñ!Õ#ð ùò @øô ò &Û Ø×#Ñ#Ö%ð&ús   ¥B³BÁ5BÂB;Â:B;c                  ó"   — t         xs t         du S )z6
    Returns true if the process is shutting down
    N)Ú_exitingr,   r$   r#   r   r   ;  s   € ô Ò'”x 4Ð'Ð'r$   c                 ó\  — t         s¦da  | d«        |d«        |d«        |«       �u |«       D ]<  }|j                  sŒ | d|j                  «       |j                  j	                  «        Œ>  |«       D ]%  } | d|j                  «       |j                  «        Œ'  |d«        |«        y y )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_childrenr^   r§   s         r#   r4   r4   C  s«   € õ ØˆáÐ$Ô%ÙÐBÔCÙ˜ÔáÓÐ(ñ %Ó&ò )�Ø—8“8ÙÐ<¸a¿f¹fÔEØ—H‘H×&Ñ&Õ(ð)ñ
 %Ó&ò �ÙÐ4°a·f±fÔ=Ø—‘•ðñ 	Ð9Ô:ÙÕð? r$   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)r   c                 óÖ   — t        j                  «       | _        | j                  j                  | _        | j                  j                  | _        t        | t        j                  «       y ru   )Ú	threadingÚLockÚ_lockÚacquireÚreleaser   r   Ú_at_fork_reinitr•   s    r#   rŽ   zForkAwareThreadLock.__init__t  sC   € Ü—^‘^Ó%ˆŒ
Ø—z‘z×)Ñ)ˆŒØ—z‘z×)Ñ)ˆŒÜ˜DÔ"5×"EÑ"EÕFr$   c                 ó8   — | j                   j                  «        y ru   )rÁ   rÄ   r•   s    r#   rÄ   z#ForkAwareThreadLock._at_fork_reinitz  s   € Ø�
‰
×"Ñ"Õ$r$   c                 ó6   — | j                   j                  «       S ru   )rÁ   Ú	__enter__r•   s    r#   rÇ   zForkAwareThreadLock.__enter__}  s   € Ø�z‰z×#Ñ#Ó%Ð%r$   c                 ó4   —  | j                   j                  |Ž S ru   )rÁ   Ú__exit__)r‹   r"   s     r#   rÉ   zForkAwareThreadLock.__exit__€  s   € Ø"ˆt�z‰z×"Ñ" DÐ)Ð)r$   N)r›   r¢   r£   rŽ   rÄ   rÇ   rÉ   r,   r$   r#   r   r   s  s   „ òGò%ò&ó*r$   r   c                   ó   — e Zd Zd„ Zd„ Zy)r   c                 ó   — t        | d„ «       y )Nc                 ó6   — | j                   j                  «       S ru   )Ú__dict__r®   )rq   s    r#   r¨   z)ForkAwareLocal.__init__.<locals>.<lambda>†  s   € ¨s¯|©|×/AÑ/AÓ/C€ r$   )r   r•   s    r#   rŽ   zForkAwareLocal.__init__…  s   € Ü˜DÑ"CÕDr$   c                 ó   — t        | «      dfS )Nr,   )r}   r•   s    r#   Ú
__reduce__zForkAwareLocal.__reduce__‡  s   € Ü�D‹z˜2ˆ~Ðr$   N)r›   r¢   r£   rŽ   rÏ   r,   r$   r#   r   r   „  s   „ òEór$   r   ÚSC_OPEN_MAXé   c                 óî   — t        | «      dt        gz   } | j                  «        | d   t        k(  sJ d«       ‚t        t	        | «      dz
  «      D ]$  }t        j                  | |   dz   | |dz      «       Œ& y )Néÿÿÿÿzfd too larger   )rj   ÚMAXFDrm   ÚrangeÚlenr‡   Ú
closerange)ÚfdsÚis     r#   r   r   “  sn   € Ü
ˆs‹)�rœ5�kÑ
!€CØ‡H�H„JØˆr‰7”eÒÐ+˜^Ó+ÐÜ”3�s“8˜a‘<Ó ò *ˆÜ
�‰�c˜!‘f˜Q‘h  A a¡C¡Õ)ñ*r$   c                  ó„  — t         j                  €y 	 t         j                  j                  «        	 t        j                  t
        j                  t
        j                  «      } 	 t        | dd¬«      t         _        y # t        t        f$ r Y Œ]w xY w#  t        j                  | «       ‚ xY w# t        t        f$ r Y y w xY w)Nzutf-8F)ÚencodingÚclosefd)	rI   ÚstdinÚcloseÚOSErrorr�   r‡   ÚopenÚdevnullÚO_RDONLY)Úfds    r#   Ú_close_stdinrä   �  s—   € Ü
‡y�yÐØðÜ�	‰	�‰ÔðÜ�W‰W”R—Z‘Z¤§¡Ó-ˆð	Ü˜R¨'¸5ÔAŒC�Iøô ”ZÐ ò Ùðûð	Ü�H‰H�RŒLØûÜ”ZÐ ò Ùðús4   “A= ²2B- Á%B Á=BÂBÂB*Â*B- Â-B?Â>B?c                  óÔ   — 	 t         j                  j                  «        	 t         j
                  j                  «        y # t        t        f$ r Y Œ1w xY w# t        t        f$ r Y y w xY wru   )rI   ÚstdoutÚflushr�   r�   Ústderrr,   r$   r#   Ú_flush_std_streamsré   ´  s]   € ðÜ�
‰
×ÑÔðÜ�
‰
×ÑÕøô œJÐ'ò Ùðûô œJÐ'ò Ùðús"   ‚A  ¡A Á AÁAÁA'Á&A'c                 óœ  — dd l }dd l}t        t        t	        t
        |«      «      «      }t        j                  «       \  }}	 |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Úmapr{   r‡   ÚpipeÚ	fork_execÚ
_USE_VFORKrÞ   )rZ   r"   Úpassfdsrë   rì   Úerrpipe_readÚerrpipe_writes          r#   Úspawnv_passfdsrö   Â  s±   € ÛÛÜ”Fœ3œs GÓ,Ó-Ó.€GÜ"$§'¡'£)Ñ€L�-ð Ø×)Ñ)Ø�4�&˜$ ¨¨tØ��B˜˜B  L°-Ø�5˜"˜d D¨$°°DØ×!Ñ!ó	#ô 	�‰�ÔÜ
�‰�Õøô 	�‰�ÔÜ
�‰�Õús   Á1B Â,Cc                  ó<   — | D ]  }t        j                  |«       Œ y)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                  j                  «        ddlm} |j                  j                  «        t        «        | j                  «        | j                  «        y)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  Ø  sc   € õ ô ×ÑÔõ +Ø×Ñ× Ñ Ô"õ 1Ø×&Ñ&×,Ñ,Ô.ô ÔØ×ÑÔà×ÑÕr$   ru   )<r‡   Ú	itertoolsrI   r~   r3   r¿   rì   r   Ú r   Ú__all__ÚNOTSETr   r&   r(   r   r0   r<   r   rA   r   r   r   r	   r
   r   rK   rS   Úabstract_sockets_supportedra   r   ÚWeakValueDictionaryrk   Úcountrw   rs   r   rŠ   r…   Úobjectr   r³   r   rµ   r¼   r^   r4   r5   r   Úlocalr   ÚsysconfrÔ   rn   r   rä   ré   rö   rø   r  r,   r$   r#   ú<module>r     s�  ðó 
Û Û 
Û Û Û å 3å ò€ð 
€Ø€Ø
€Ø	€Ø€
à€ØFÐ à
€Ø€ò8ò5ò4ò:òó6ò*òAñ AÓBÐ ò
2òð$ 2�g×1Ñ1Ó3Ð Ø$�Y—_‘_Ó&Ð ò8òIð Ð Ø$�Y—_‘_Ó&Ð ôSˆvô Sól&$òX(ð €à E¸?Ø#*×#:Ñ#:Ø#*×#:Ñ#:ó(ðT €‡��Ô ô*˜&ô *ô"�Y—_‘_ô ðØˆB�J‰J�}Ó%€Eò*òò.ò ò óøðQ ò Ø‚Eðús   Ä D% Ä%D/Ä.D/