
    F\h-                        S SK r S SKrS SKrSSKJr  SSKJr  Sr " S S\5      r " S S	\5      r	 " S
 S\5      r
 " S S\5      r " S S\5      r " S S\R                  5      r " S S\5      r\R"                  S:w  a   " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r " S S\5      r " S S\5      r " S S \5      r\" 5       \" 5       \" 5       S!.r\R"                  S":X  a  \" \S#   5      rO@\" \S$   5      rO4 " S% S\R                  5      r " S& S\5      rS#\" 5       0r\" \S#   5      rS' r\R6                  " 5       rS( rS) rS* rg)+    N   )process)	reduction c                       \ rS rSrSrg)ProcessError   r   N__name__
__module____qualname____firstlineno____static_attributes__r       ./usr/lib/python3.13/multiprocessing/context.pyr   r          r   r   c                       \ rS rSrSrg)BufferTooShort   r   Nr
   r   r   r   r   r      r   r   r   c                       \ rS rSrSrg)TimeoutError   r   Nr
   r   r   r   r   r      r   r   r   c                       \ rS rSrSrg)AuthenticationError   r   Nr
   r   r   r   r   r      r   r   r   c                      \ rS rSr\r\r\r\r\" \	R                  5      r
\" \	R                  5      r\" \	R                  5      rS rS rS$S jrS rS rS%S	 jrS&S
 jrS&S jrS rS'S jrS(S jrS(S jrS r  S)S jrS rS rSS.S jrSS.S jrS rS r S%S jr!S r"S r#S r$S%S jr%S*S jr&S*S  jr'\(S! 5       r)\)RT                  S" 5       r)S# r+Sr,g)+BaseContext   c                 L    [         R                  " 5       nUc  [        S5      eU$ )z(Returns the number of CPUs in the systemzcannot determine number of cpus)os	cpu_countNotImplementedError)selfnums     r   r!   BaseContext.cpu_count)   s#    lln;%&GHHJr   c                 Z    SSK Jn  U" U R                  5       S9nUR                  5         U$ )zReturns 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   ManagerBaseContext.Manager1   s(     	*D,,./		r   Tc                     SSK Jn  U" U5      $ )z1Returns two connection object connected by a piper   )Pipe)
connectionr1   )r#   duplexr1   s      r   r1   BaseContext.Pipe<   s    $F|r   c                 6    SSK Jn  U" U R                  5       S9$ )z#Returns a non-recursive lock objectr   )Lockr(   )synchronizer6   r+   )r#   r6   s     r   r6   BaseContext.LockA   s    %((*++r   c                 6    SSK Jn  U" U R                  5       S9$ )zReturns a recursive lock objectr   )RLockr(   )r7   r:   r+   )r#   r:   s     r   r:   BaseContext.RLockF       &))+,,r   Nc                 6    SSK Jn  U" XR                  5       S9$ )zReturns a condition objectr   )	Conditionr(   )r7   r>   r+   )r#   lockr>   s      r   r>   BaseContext.ConditionK   s    *#3#3#566r   c                 6    SSK Jn  U" XR                  5       S9$ )zReturns a semaphore objectr   )	Semaphorer(   )r7   rB   r+   )r#   valuerB   s      r   rB   BaseContext.SemaphoreP   s    *$4$4$677r   c                 6    SSK Jn  U" XR                  5       S9$ )z"Returns a bounded semaphore objectr   )BoundedSemaphorer(   )r7   rF   r+   )r#   rC   rF   s      r   rF   BaseContext.BoundedSemaphoreU   s    1+;+;+=>>r   c                 6    SSK Jn  U" U R                  5       S9$ )zReturns an event objectr   )Eventr(   )r7   rI   r+   )r#   rI   s     r   rI   BaseContext.EventZ   r<   r   c                 8    SSK Jn  U" XX0R                  5       S9$ )zReturns a barrier objectr   )Barrierr(   )r7   rL   r+   )r#   partiesactiontimeoutrL   s        r   rL   BaseContext.Barrier_   s    (w5E5E5GHHr   c                 6    SSK Jn  U" XR                  5       S9$ )Returns a queue objectr   )Queuer(   )queuesrS   r+   )r#   maxsizerS   s      r   rS   BaseContext.Queued   s    !W"2"2"455r   c                 6    SSK Jn  U" XR                  5       S9$ )rR   r   )JoinableQueuer(   )rT   rX   r+   )r#   rU   rX   s      r   rX   BaseContext.JoinableQueuei   s    )W*:*:*<==r   c                 6    SSK Jn  U" U R                  5       S9$ )rR   r   )SimpleQueuer(   )rT   r[   r+   )r#   r[   s     r   r[   BaseContext.SimpleQueuen   s    't//122r   r   c                 :    SSK Jn  U" XX4U R                  5       S9$ )zReturns a process pool objectr   )Pool)context)poolr^   r+   )r#   	processesinitializerinitargsmaxtasksperchildr^   s         r   r^   BaseContext.Pools   s$     	IH ,,.0 	0r   c                      SSK Jn  U" U/UQ76 $ )zReturns a shared objectr   )RawValue)sharedctypesrg   )r#   typecode_or_typeargsrg   s       r   rg   BaseContext.RawValuez   s    *(0400r   c                     SSK Jn  U" X5      $ )zReturns a shared arrayr   )RawArray)rh   rm   )r#   ri   size_or_initializerrm   s       r   rm   BaseContext.RawArray   s    *(>>r   )r?   c                D    SSK Jn  U" U/UQ7UU R                  5       S.6$ )z$Returns a synchronized shared objectr   )Valuer?   r)   )rh   rq   r+   )r#   ri   r?   rj   rq   s        r   rq   BaseContext.Value   s/    '% - -4))+- 	-r   c                :    SSK Jn  U" XUU R                  5       S9$ )z#Returns a synchronized shared arrayr   )Arrayrr   )rh   ru   r+   )r#   ri   rn   r?   ru   s        r   ru   BaseContext.Array   s#    '%))+- 	-r   c                 v    U R                  5       S:X  a%  [        [        SS5      (       a  SSKJn  U" 5         ggg)z{Check whether this is a fake forked process in a frozen executable.
If so then run code specified by commandline and exit.
spawnfrozenFr   )freeze_supportN)get_start_methodgetattrsysrx   rz   )r#   rz   s     r   rz   BaseContext.freeze_support   s5       "g-'#x2O2O- 3P-r   c                     SSK Jn  U" 5       $ )zJReturn package logger -- if it does not already exist then
it is created.
r   )
get_logger)utilr   )r#   r   s     r   r   BaseContext.get_logger   s     	%|r   c                     SSK Jn  U" U5      $ )z8Turn on logging and add a handler which prints to stderrr   )log_to_stderr)r   r   )r#   levelr   s      r   r   BaseContext.log_to_stderr   s    'U##r   c                     SSK Jn  g)zFInstall support for sending connections and sockets
between processes
r   )r2   N) r2   )r#   r2   s     r   allow_connection_pickling%BaseContext.allow_connection_pickling   s     	!r   c                      SSK Jn  U" U5        g)zSets 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)rx   r   )r#   
executabler   s      r   r   BaseContext.set_executable   s    
 	*z"r   c                      SSK Jn  U" U5        g)z[Set list of module names to try to load in forkserver process.
This is really just a hint.
r   )set_forkserver_preloadN)
forkserverr   )r#   module_namesr   s      r   r   "BaseContext.set_forkserver_preload   s     	7|,r   c                 ~    Uc  U $  [         U   nUR                  5         U$ ! [         a    [        SU-  5      S ef = f)Nzcannot find context for %r)_concrete_contextsKeyError
ValueError_check_available)r#   methodr)   s      r   r+   BaseContext.get_context   sU    >K	N$V,C 	
  	N9FBCM	Ns   	" <c                     U R                   $ N)_namer#   
allow_nones     r   r{   BaseContext.get_start_method   s    zzr   c                     [        S5      e)Nz+cannot set start method of concrete context)r   r#   r   forces      r   set_start_methodBaseContext.set_start_method   s    FGGr   c                 4    [        5       R                  S5      $ )zWControls how objects will be reduced to a form that can be
shared with other processes.r   )globalsgetr#   s    r   reducerBaseContext.reducer   s     y}}[))r   c                     U[        5       S'   g )Nr   )r   )r#   r   s     r   r   r      s    !*	+r   c                     g r   r   r   s    r   r   BaseContext._check_available   s    r   )Tr   )r   )NN)r   )NNr   NF)-r   r   r   r   r   r   r   r   staticmethodr   current_processparent_processactive_childrenr!   r.   r1   r6   r:   r>   rB   rF   rI   rL   rS   rX   r[   r^   rg   rm   rq   ru   rz   r   r   r   r   r   r+   r{   r   propertyr   setterr   r   r   r   r   r   r      s   L#NL-"7#:#:;O!'"8"89N"7#:#:;O	
,
-
7
8
?
-
I
6
>
3
 ?A"01
?
 37 - DH -$
!#-H * *
 ^^+ +r   r   c                   8    \ rS rSrSr\S 5       r\S 5       rSrg)Process   Nc                 \    [         R                  5       R                  R                  U 5      $ r   )_default_contextr+   r   _Popen)process_objs    r   r   Process._Popen   s"    ++-55<<[IIr   c                  Z    [         R                  5       R                  R                  5       $ r   )r   r+   r   _after_forkr   r   r   r   Process._after_fork   s     ++-55AACCr   r   	r   r   r   r   _start_methodr   r   r   r   r   r   r   r   r      s1    MJ J D Dr   r   c                   P   ^  \ rS rSr\rS rSU 4S jjrS	S jrS	S jrS r	Sr
U =r$ )
DefaultContext   c                     Xl         S U l        g r   )r   _actual_context)r#   r_   s     r   __init__DefaultContext.__init__   s     '#r   c                 |   > Uc*  U R                   c  U R                  U l         U R                   $ [        TU ]  U5      $ r   )r   r   superr+   )r#   r   	__class__s     r   r+   DefaultContext.get_context   s>    >##+'+'<'<$'''7&v..r   c                     U R                   b  U(       d  [        S5      eUc  U(       a  S U l         g U R                  U5      U l         g )Nzcontext has already been set)r   RuntimeErrorr+   r   s      r   r   DefaultContext.set_start_method   sA    +E=>>>e#'D #//7r   c                 z    U R                   c  U(       a  g U R                  U l         U R                   R                  $ r   )r   r   r   r   s     r   r{   DefaultContext.get_start_method   s4    '#'#8#8D ##)))r   c                     [         R                  S:X  a  S/$ [         R                  S:X  a  SS/OSS/n[        R                  (       a  UR	                  S5        U$ )z=Returns a list of the supported start methods, default first.win32rx   darwinforkr   )r}   platformr   HAVE_SEND_HANDLEappend)r#   methodss     r   get_all_start_methods$DefaultContext.get_all_start_methods  sM    <<7"9+.<<8+Cw'&RYIZG))|,Nr   )r   r   r   r   )r   r   r   r   r   r   r+   r   r{   r   r   __classcell__)r   s   @r   r   r      s&    G$/8* r   r   r   c                   (    \ rS rSrSr\S 5       rSrg)ForkProcessi  r   c                     SSK Jn  U" U 5      $ Nr   )Popen)
popen_forkr   r   r   s     r   r   ForkProcess._Popen  s    )%%r   r   Nr   r   r   r   r   r   r   r   r   r   r   r   r     s    		& 
	&r   r   c                   8    \ rS rSrSr\S 5       r\S 5       rSrg)SpawnProcessi  rx   c                     SSK Jn  U" U 5      $ r   )popen_spawn_posixr   r   s     r   r   SpawnProcess._Popen      0%%r   c                      g r   r   r   r   r   r   SpawnProcess._after_fork#       r   r   Nr   r   r   r   r   r     -    		& 
	& 
	 
	r   r   c                   (    \ rS rSrSr\S 5       rSrg)ForkServerProcessi(  r   c                     SSK Jn  U" U 5      $ r   )popen_forkserverr   r   s     r   r   ForkServerProcess._Popen*  s    /%%r   r   Nr   r   r   r   r   r   (  s    $		& 
	&r   r   c                       \ rS rSrSr\rSrg)ForkContexti/  r   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   /  s    r   r   c                       \ rS rSrSr\rSrg)SpawnContexti3  rx   r   Nr   r   r   r   r   r   r   r   r   r   r   r   r   3      r   r   c                   "    \ rS rSrSr\rS rSrg)ForkServerContexti7  r   c                 D    [         R                  (       d  [        S5      eg )Nz%forkserver start method not available)r   r   r   r   s    r   r   "ForkServerContext._check_available:  s    -- !HII .r   r   N)	r   r   r   r   r   r   r   r   r   r   r   r   r   r   7  s    #	Jr   r   )r   rx   r   r   rx   r   c                   8    \ rS rSrSr\S 5       r\S 5       rSrg)r   iL  rx   c                     SSK Jn  U" U 5      $ r   )popen_spawn_win32r   r   s     r   r   r   N  r   r   c                      g r   r   r   r   r   r   r   S  r   r   r   Nr   r   r   r   r   r   L  r   r   c                       \ rS rSrSr\rSrg)r   iX  rx   r   Nr   r   r   r   r   r   X  r   r   c                 (    [         U    [        l        g r   )r   r   r   )r   s    r   _force_start_methodr  e  s    '9&'A$r   c                  $    [        [        SS 5      $ )Nspawning_popen)r|   _tlsr   r   r   get_spawning_popenr
  n  s    4)400r   c                     U [         l        g r   )r	  r  )popens    r   set_spawning_popenr  q  s
    Dr   c                 \    [        5       c!  [        S[        U 5      R                  -  5      eg )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    r}   	threadingr   r   r   __all__	Exceptionr   r   r   r   objectr   BaseProcessr   r   r   r   r   r   r   r   r   r   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 1 r   