Ë
    òT•j™-  ã                   óÞ  — d dl Z d dlZd dlZddlmZ ddlmZ dZ G d„ de«      Z G d„ d	e«      Z	 G d
„ de«      Z
 G d„ de«      Z G d„ de«      Z G d„ dej                  «      Z G d„ de«      Zej"                  dk7  rœ G d„ dej                  «      Z G d„ dej                  «      Z G d„ dej                  «      Z G d„ de«      Z G d„ de«      Z G d„ d e«      Z e«        e«        e«       d!œZej"                  d"k(  r eed#   «      Zn@ eed$   «      Zn4 G d%„ dej                  «      Z G d&„ de«      Zd# e«       iZ eed#   «      Zd'„ Z ej6                  «       Zd(„ Zd)„ Zd*„ Zy)+é    Né   )Úprocess)Ú	reduction© c                   ó   — e Zd Zy)ÚProcessErrorN©Ú__name__Ú
__module__Ú__qualname__r   ó    ú./usr/lib/python3.12/multiprocessing/context.pyr   r      ó   „ Ør   r   c                   ó   — e Zd Zy)ÚBufferTooShortNr	   r   r   r   r   r      r   r   r   c                   ó   — e Zd Zy)ÚTimeoutErrorNr	   r   r   r   r   r      r   r   r   c                   ó   — e Zd Zy)ÚAuthenticationErrorNr	   r   r   r   r   r      r   r   r   c                   óŒ  — e Zd ZeZeZeZeZ eej                  «      Z	 eej                  «      Z
 eej                  «      Zd„ Zd„ Zd"d„Zd„ Zd„ Zd#d„Zd$d	„Zd$d
„Zd„ Zd%d„Zd&d„Zd&d„Zd„ Z	 	 d'd„Zd„ Zd„ Zddœd„Zddœd„Zd„ Zd„ Zd#d„Z d„ Z!d„ Z"d„ Z#d#d„Z$d(d„Z%d(d„Z&e'd„ «       Z(e(jR                  d „ «       Z(d!„ Z*y))ÚBaseContextc                 óH   — t        j                  «       }|€t        d«      ‚|S )z(Returns the number of CPUs in the systemzcannot determine number of cpus)ÚosÚ	cpu_countÚNotImplementedError)ÚselfÚnums     r   r   zBaseContext.cpu_count)   s#   € ä�l‰l‹nˆØˆ;Ü%Ð&GÓHÐHàˆJr   c                 ó`   — ddl m}  || j                  «       ¬«      }|j                  «        |S )z½Returns a manager associated with a running server process

        The managers methods such as `Lock()`, `Condition()` and `Queue()`
        can be used to create shared objects.
        r   )ÚSyncManager©Úctx)Úmanagersr   Úget_contextÚstart)r   r   Úms      r   ÚManagerzBaseContext.Manager1   s(   € õ 	*Ù˜D×,Ñ,Ó.Ô/ˆØ	�‰Œ	Øˆr   Tc                 ó   — ddl m}  ||«      S )z1Returns two connection object connected by a piper   )ÚPipe)Ú
connectionr(   )r   Úduplexr(   s      r   r(   zBaseContext.Pipe<   s   € å$Ù�F‹|Ðr   c                 ó<   — ddl m}  || j                  «       ¬«      S )z#Returns a non-recursive lock objectr   )ÚLockr    )Úsynchronizer,   r#   )r   r,   s     r   r,   zBaseContext.LockA   s   € å%Ù˜×(Ñ(Ó*Ô+Ð+r   c                 ó<   — ddl m}  || j                  «       ¬«      S )zReturns a recursive lock objectr   )ÚRLockr    )r-   r/   r#   )r   r/   s     r   r/   zBaseContext.RLockF   ó   € å&Ù˜×)Ñ)Ó+Ô,Ð,r   Nc                 ó>   — ddl m}  ||| j                  «       ¬«      S )zReturns a condition objectr   )Ú	Conditionr    )r-   r2   r#   )r   Úlockr2   s      r   r2   zBaseContext.ConditionK   s   € å*Ù˜ 4×#3Ñ#3Ó#5Ô6Ð6r   c                 ó>   — ddl m}  ||| j                  «       ¬«      S )zReturns a semaphore objectr   )Ú	Semaphorer    )r-   r5   r#   )r   Úvaluer5   s      r   r5   zBaseContext.SemaphoreP   s   € å*Ù˜ D×$4Ñ$4Ó$6Ô7Ð7r   c                 ó>   — ddl m}  ||| j                  «       ¬«      S )z"Returns a bounded semaphore objectr   )ÚBoundedSemaphorer    )r-   r8   r#   )r   r6   r8   s      r   r8   zBaseContext.BoundedSemaphoreU   s   € å1Ù ¨4×+;Ñ+;Ó+=Ô>Ð>r   c                 ó<   — ddl m}  || j                  «       ¬«      S )zReturns an event objectr   )ÚEventr    )r-   r:   r#   )r   r:   s     r   r:   zBaseContext.EventZ   r0   r   c                 óB   — ddl m}  ||||| j                  «       ¬«      S )zReturns a barrier objectr   )ÚBarrierr    )r-   r<   r#   )r   ÚpartiesÚactionÚtimeoutr<   s        r   r<   zBaseContext.Barrier_   s   € å(Ù�w ¨°T×5EÑ5EÓ5GÔHÐHr   c                 ó>   — ddl m}  ||| j                  «       ¬«      S )úReturns a queue objectr   )ÚQueuer    )ÚqueuesrB   r#   )r   ÚmaxsizerB   s      r   rB   zBaseContext.Queued   s   € å!Ù�W $×"2Ñ"2Ó"4Ô5Ð5r   c                 ó>   — ddl m}  ||| j                  «       ¬«      S )rA   r   )ÚJoinableQueuer    )rC   rF   r#   )r   rD   rF   s      r   rF   zBaseContext.JoinableQueuei   s   € å)Ù˜W¨$×*:Ñ*:Ó*<Ô=Ð=r   c                 ó<   — ddl m}  || j                  «       ¬«      S )rA   r   )ÚSimpleQueuer    )rC   rH   r#   )r   rH   s     r   rH   zBaseContext.SimpleQueuen   s   € å'Ù˜t×/Ñ/Ó1Ô2Ð2r   c                 óD   — ddl m}  |||||| j                  «       ¬«      S )zReturns a process pool objectr   )ÚPool)Úcontext)ÚpoolrJ   r#   )r   Ú	processesÚinitializerÚinitargsÚmaxtasksperchildrJ   s         r   rJ   zBaseContext.Pools   s)   € õ 	Ù�I˜{¨HÐ6FØ ×,Ñ,Ó.ô0ð 	0r   c                 ó    — ddl m}  ||g|¢­Ž S )zReturns a shared objectr   )ÚRawValue)ÚsharedctypesrR   )r   Útypecode_or_typeÚargsrR   s       r   rR   zBaseContext.RawValuez   s   € å*ÙÐ(Ð0¨4Ò0Ð0r   c                 ó    — ddl m}  |||«      S )zReturns a shared arrayr   )ÚRawArray)rS   rW   )r   rT   Úsize_or_initializerrW   s       r   rW   zBaseContext.RawArray   s   € å*ÙÐ(Ð*=Ó>Ð>r   )r3   c                óD   — ddl m}  ||g|¢­|| j                  «       dœŽS )z$Returns a synchronized shared objectr   )ÚValue©r3   r!   )rS   rZ   r#   )r   rT   r3   rU   rZ   s        r   rZ   zBaseContext.Value„   s/   € å'ÙÐ%ð -¨ñ -°4Ø×)Ñ)Ó+ò-ð 	-r   c                óB   — ddl m}  ||||| j                  «       ¬«      S )z#Returns a synchronized shared arrayr   )ÚArrayr[   )rS   r]   r#   )r   rT   rX   r3   r]   s        r   r]   zBaseContext.ArrayŠ   s&   € å'ÙÐ%Ð':ÀØ×)Ñ)Ó+ô-ð 	-r   c                 ój   — t         j                  dk(  r t        t         dd«      rddlm}  |«        yyy)z‹Check whether this is a fake forked process in a frozen executable.
        If so then run code specified by commandline and exit.
        Úwin32ÚfrozenFr   )Úfreeze_supportN)ÚsysÚplatformÚgetattrÚspawnra   )r   ra   s     r   ra   zBaseContext.freeze_support�   s-   € ô �<‰<˜7Ò"¤w¬s°H¸eÔ'DÝ-ÙÕð (EÐ"r   c                 ó   — ddl m}  |«       S )zZReturn package logger -- if it does not already exist then
        it is created.
        r   )Ú
get_logger)Úutilrg   )r   rg   s     r   rg   zBaseContext.get_logger˜   s   € õ 	%Ù‹|Ðr   c                 ó   — ddl m}  ||«      S )z8Turn on logging and add a handler which prints to stderrr   )Úlog_to_stderr)rh   rj   )r   Úlevelrj   s      r   rj   zBaseContext.log_to_stderrŸ   s   € å'Ù˜UÓ#Ð#r   c                 ó   — ddl m} y)zVInstall support for sending connections and sockets
        between processes
        r   )r)   N)Ú r)   )r   r)   s     r   Úallow_connection_picklingz%BaseContext.allow_connection_pickling¤   s   € ö 	!r   c                 ó    — ddl m}  ||«       y)zÌSets the path to a python.exe or pythonw.exe binary used to run
        child processes instead of sys.executable when using the 'spawn'
        start method.  Useful for people embedding Python.
        r   )Úset_executableN)re   rp   )r   Ú
executablerp   s      r   rp   zBaseContext.set_executable¬   s   € õ
 	*Ù�zÕ"r   c                 ó    — ddl m}  ||«       y)zkSet list of module names to try to load in forkserver process.
        This is really just a hint.
        r   )Úset_forkserver_preloadN)Ú
forkserverrs   )r   Úmodule_namesrs   s      r   rs   z"BaseContext.set_forkserver_preload´   s   € õ 	7Ù˜|Õ,r   c                 óz   — |€| S 	 t         |   }|j                  «        |S # t        $ r t        d|z  «      d ‚w xY w)Nzcannot find context for %r)Ú_concrete_contextsÚKeyErrorÚ
ValueErrorÚ_check_available)r   Úmethodr!   s      r   r#   zBaseContext.get_context»   sU   € Øˆ>ØˆKð	NÜ$ VÑ,ˆCð 	×ÑÔØˆ
øô ò 	NÜÐ9¸FÑBÓCÈÐMð	Nús   †	! ¡:c                 ó   — | j                   S ©N)Ú_name©r   Ú
allow_nones     r   Úget_start_methodzBaseContext.get_start_methodÅ   s   € Ø�z‰zÐr   c                 ó   — t        d«      ‚)Nz+cannot set start method of concrete context)ry   ©r   r{   Úforces      r   Úset_start_methodzBaseContext.set_start_methodÈ   s   € ÜÐFÓGÐGr   c                 ó4   — t        «       j                  d«      S )z_Controls how objects will be reduced to a form that can be
        shared with other processes.r   )ÚglobalsÚget©r   s    r   ÚreducerzBaseContext.reducerË   s   € ô ‹y�}‰}˜[Ó)Ð)r   c                 ó   — |t        «       d<   y )Nr   )r‡   )r   r   s     r   rŠ   zBaseContext.reducerÑ   s   € à!*Œ‹	�+Òr   c                  ó   — y r}   r   r‰   s    r   rz   zBaseContext._check_availableÕ   s   € Ør   )Tr}   )r   )NN)r   )NNr   N©F)+r
   r   r   r   r   r   r   Ústaticmethodr   Úcurrent_processÚparent_processÚactive_childrenr   r&   r(   r,   r/   r2   r5   r8   r:   r<   rB   rF   rH   rJ   rR   rW   rZ   r]   ra   rg   rj   rn   rp   rs   r#   r�   r…   ÚpropertyrŠ   Úsetterrz   r   r   r   r   r      s  „ à€LØ#€NØ€LØ-Ðá" 7×#:Ñ#:Ó;€OÙ! '×"8Ñ"8Ó9€NÙ" 7×#:Ñ#:Ó;€Oòò	óò
,ò
-ó
7ó
8ó
?ò
-ó
Ió
6ó
>ò
3ð
 ?AØ"ó0ò1ò
?ð
 37ô -ð DHô -òòó$ò
!ò#ò-óóóHð ñ*ó ð*ð
 ‡^�^ñ+ó ð+ór   r   c                   ó0   — e Zd ZdZed„ «       Zed„ «       Zy)ÚProcessNc                 ó\   — t         j                  «       j                  j                  | «      S r}   )Ú_default_contextr#   r•   Ú_Popen)Úprocess_objs    r   r˜   zProcess._PopenÞ   s"   € ä×+Ñ+Ó-×5Ñ5×<Ñ<¸[ÓIÐIr   c                  óZ   — t         j                  «       j                  j                  «       S r}   )r—   r#   r•   Ú_after_forkr   r   r   r›   zProcess._after_forkâ   s    € ä×+Ñ+Ó-×5Ñ5×AÑAÓCÐCr   ©r
   r   r   Ú_start_methodrŽ   r˜   r›   r   r   r   r•   r•   Ü   s1   „ Ø€MØñJó ðJð ñDó ñDr   r•   c                   ó@   ‡ — e Zd ZeZd„ Zdˆ fd„	Zdd„Zdd„Zd„ Zˆ xZ	S )ÚDefaultContextc                 ó    — || _         d | _        y r}   )r—   Ú_actual_context)r   rK   s     r   Ú__init__zDefaultContext.__init__é   s   € Ø 'ˆÔØ#ˆÕr   c                 óx   •— |€)| j                   €| j                  | _         | j                   S t        ‰| �  |«      S r}   )r¡   r—   Úsuperr#   )r   r{   Ú	__class__s     €r   r#   zDefaultContext.get_contextí   s>   ø€ Øˆ>Ø×#Ñ#Ð+Ø'+×'<Ñ'<�Ô$Ø×'Ñ'Ð'ä‘7Ñ& vÓ.Ð.r   c                 óz   — | j                   �|st        d«      ‚|€
|rd | _         y | j                  |«      | _         y )Nzcontext has already been set)r¡   ÚRuntimeErrorr#   rƒ   s      r   r…   zDefaultContext.set_start_methodõ   sA   € Ø×ÑÐ+±EÜÐ=Ó>Ð>Øˆ>™eØ#'ˆDÔ ØØ#×/Ñ/°Ó7ˆÕr   c                 ón   — | j                   €|ry | j                  | _         | j                   j                  S r}   )r¡   r—   r~   r   s     r   r�   zDefaultContext.get_start_methodý   s4   € Ø×ÑÐ'ÙØØ#'×#8Ñ#8ˆDÔ Ø×#Ñ#×)Ñ)Ð)r   c                 óª   — t         j                  dk(  rdgS t         j                  dk(  rddgnddg}t        j                  r|j	                  d«       |S )z=Returns a list of the supported start methods, default first.r_   re   ÚdarwinÚforkrt   )rb   rc   r   ÚHAVE_SEND_HANDLEÚappend)r   Úmethodss     r   Úget_all_start_methodsz$DefaultContext.get_all_start_methods  sM   € ä�<‰<˜7Ò"Ø�9Ðä+.¯<©<¸8Ò+C�w Ñ'È&ÐRYÐIZˆGÜ×)Ò)Ø—‘˜|Ô,ØˆNr   r}   r�   )
r
   r   r   r•   r¢   r#   r…   r�   r¯   Ú__classcell__)r¥   s   @r   rŸ   rŸ   æ   s!   ø„ Ø€Gò$õ/ó8ó*ör   rŸ   r_   c                   ó    — e Zd ZdZed„ «       Zy)ÚForkProcessr«   c                 ó   — ddl m}  || «      S ©Nr   )ÚPopen)Ú
popen_forkrµ   ©r™   rµ   s     r   r˜   zForkProcess._Popen  s   € å)Ù˜Ó%Ð%r   N©r
   r   r   r�   rŽ   r˜   r   r   r   r²   r²     s   „ ØˆØ	ñ	&ó 
ñ	&r   r²   c                   ó0   — e Zd ZdZed„ «       Zed„ «       Zy)ÚSpawnProcessre   c                 ó   — ddl m}  || «      S r´   )Úpopen_spawn_posixrµ   r·   s     r   r˜   zSpawnProcess._Popen  ó   € å0Ù˜Ó%Ð%r   c                   ó   — y r}   r   r   r   r   r›   zSpawnProcess._after_fork#  ó   € ð r   Nrœ   r   r   r   rº   rº     ó-   „ ØˆØ	ñ	&ó 
ð	&ð 
ñ	ó 
ñ	r   rº   c                   ó    — e Zd ZdZed„ «       Zy)ÚForkServerProcessrt   c                 ó   — ddl m}  || «      S r´   )Úpopen_forkserverrµ   r·   s     r   r˜   zForkServerProcess._Popen*  s   € å/Ù˜Ó%Ð%r   Nr¸   r   r   r   rÂ   rÂ   (  s   „ Ø$ˆØ	ñ	&ó 
ñ	&r   rÂ   c                   ó   — e Zd ZdZeZy)ÚForkContextr«   N)r
   r   r   r~   r²   r•   r   r   r   rÆ   rÆ   /  s   „ ØˆØ‰r   rÆ   c                   ó   — e Zd ZdZeZy©ÚSpawnContextre   N©r
   r   r   r~   rº   r•   r   r   r   rÉ   rÉ   3  ó   „ ØˆØ‰r   rÉ   c                   ó   — e Zd ZdZeZd„ Zy)ÚForkServerContextrt   c                 ó:   — t         j                  st        d«      ‚y )Nz%forkserver start method not available)r   r¬   ry   r‰   s    r   rz   z"ForkServerContext._check_available:  s   € Ü×-Ò-Ü Ð!HÓIÐIð .r   N)r
   r   r   r~   rÂ   r•   rz   r   r   r   rÍ   rÍ   7  s   „ ØˆØ#ˆó	Jr   rÍ   )r«   re   rt   rª   re   r«   c                   ó0   — e Zd ZdZed„ «       Zed„ «       Zy)rº   re   c                 ó   — ddl m}  || «      S r´   )Úpopen_spawn_win32rµ   r·   s     r   r˜   zSpawnProcess._PopenN  r½   r   c                   ó   — y r}   r   r   r   r   r›   zSpawnProcess._after_forkS  r¿   r   Nrœ   r   r   r   rº   rº   L  rÀ   r   c                   ó   — e Zd ZdZeZyrÈ   rÊ   r   r   r   rÉ   rÉ   X  rË   r   c                 ó(   — t         |    t        _        y r}   )rw   r—   r¡   )r{   s    r   Ú_force_start_methodrÕ   e  s   € Ü'9¸&Ñ'AÔÕ$r   c                  ó$   — t        t        dd «      S )NÚspawning_popen)rd   Ú_tlsr   r   r   Úget_spawning_popenrÙ   n  s   € Ü”4Ð)¨4Ó0Ð0r   c                 ó   — | t         _        y r}   )rØ   r×   )Úpopens    r   Úset_spawning_popenrÜ   q  s
   € Ø„DÕr   c                 óZ   — t        «       €!t        dt        | «      j                  z  «      ‚y )NzF%s objects should only be shared between processes through inheritance)rÙ   r§   Útyper
   )Úobjs    r   Úassert_spawningrà   t  s4   € ÜÓÐ#Üð#Ü%)¨#£Y×%7Ñ%7ñ8óð 	ð $r   ) r   rb   Ú	threadingrm   r   r   Ú__all__Ú	Exceptionr   r   r   r   Úobjectr   ÚBaseProcessr•   rŸ   rc   r²   rº   rÂ   rÆ   rÉ   rÍ   rw   r—   rÕ   ÚlocalrØ   rÙ   rÜ   rà   r   r   r   ú<module>rç      s–  ðÛ 	Û 
Û å Ý à
€ô	�9ô 	ô	�\ô 	ô	�<ô 	ô	˜,ô 	ôx�&ô xô|Dˆg×!Ñ!ô Dô&�[ô &ðZ ‡<�<�7Òô&�g×)Ñ)ô &ô
�w×*Ñ*ô 
ô&˜G×/Ñ/ô &ô�kô ô�{ô ôJ˜Kô Jñ “Ù“Ù'Ó)ñÐð
 ‡|�|�xÒñ *Ð*<¸WÑ*EÓFÑá)Ð*<¸VÑ*DÓEÑô
�w×*Ñ*ô 
ô�{ô ð
 	‘“ðÐñ &Ð&8¸Ñ&AÓBÐòBð €y‡�Ó€ò1ò ór   