
    =OgM-                     0   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k    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nP eed$                   Zn> G d% dej                  Z G d& de          Zd# e            iZ eed#                   Zd' Z ej                    Zd( Zd) Zd* ZdS )+    N   )process)	reduction c                       e Zd ZdS )ProcessErrorN__name__
__module____qualname__r       0/usr/lib64/python3.11/multiprocessing/context.pyr   r              Dr   r   c                       e Zd ZdS )BufferTooShortNr	   r   r   r   r   r      r   r   r   c                       e Zd ZdS )TimeoutErrorNr	   r   r   r   r   r      r   r   r   c                       e Zd ZdS )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(j)        d$             Z(d% Z*dS )-BaseContextc                 P    	 t          j                    }|t          d          |S )Nzcannot determine number of cpus)os	cpu_countNotImplementedError)selfnums     r   r   zBaseContext.cpu_count)   s)    6lnn;%&GHHHJr   c                 x    	 ddl m}  ||                                           }|                                 |S )Nr   )SyncManagerctx)managersr   get_contextstart)r   r   ms      r   ManagerzBaseContext.Manager1   sK    	
 	*)))))KD,,..///				r   Tc                 &    	 ddl m}  ||          S )Nr   )Pipe)
connectionr(   )r   duplexr(   s      r   r(   zBaseContext.Pipe<   s%    ?$$$$$$tF||r   c                 L    	 ddl m}  ||                                           S )Nr   )Lockr    )synchronizer,   r#   )r   r,   s     r   r,   zBaseContext.LockA   s6    1%%%%%%t((**++++r   c                 L    	 ddl m}  ||                                           S )Nr   )RLockr    )r-   r/   r#   )r   r/   s     r   r/   zBaseContext.RLockF   s6    -&&&&&&u))++,,,,r   Nc                 N    	 ddl m}  |||                                           S )Nr   )	Conditionr    )r-   r1   r#   )r   lockr1   s      r   r1   zBaseContext.ConditionK   s8    (******y4#3#3#5#56666r   r   c                 N    	 ddl m}  |||                                           S )Nr   )	Semaphorer    )r-   r4   r#   )r   valuer4   s      r   r4   zBaseContext.SemaphoreP   s8    (******yD$4$4$6$67777r   c                 N    	 ddl m}  |||                                           S )Nr   )BoundedSemaphorer    )r-   r7   r#   )r   r5   r7   s      r   r7   zBaseContext.BoundedSemaphoreU   s9    01111114+;+;+=+=>>>>r   c                 L    	 ddl m}  ||                                           S )Nr   )Eventr    )r-   r9   r#   )r   r9   s     r   r9   zBaseContext.EventZ   s6    %&&&&&&u))++,,,,r   c                 R    	 ddl m}  |||||                                           S )Nr   )Barrierr    )r-   r;   r#   )r   partiesactiontimeoutr;   s        r   r;   zBaseContext.Barrier_   s<    &((((((wwT5E5E5G5GHHHHr   r   c                 N    	 ddl m}  |||                                           S )Nr   )Queuer    )queuesr@   r#   )r   maxsizer@   s      r   r@   zBaseContext.Queued   s8    $!!!!!!uW$"2"2"4"45555r   c                 N    	 ddl m}  |||                                           S )Nr   )JoinableQueuer    )rA   rD   r#   )r   rB   rD   s      r   rD   zBaseContext.JoinableQueuei   s8    $))))))}W$*:*:*<*<====r   c                 L    	 ddl m}  ||                                           S )Nr   )SimpleQueuer    )rA   rF   r#   )r   rF   s     r   rF   zBaseContext.SimpleQueuen   s6    $''''''{t//112222r   r   c                 T    	 ddl m}  ||||||                                           S )Nr   )Pool)context)poolrH   r#   )r   	processesinitializerinitargsmaxtasksperchildrH   s         r   rH   zBaseContext.Pools   sH    +tI{H6F ,,..0 0 0 	0r   c                 "    	 ddl m}  ||g|R  S )Nr   )RawValue)sharedctypesrP   )r   typecode_or_typeargsrP   s       r   rP   zBaseContext.RawValuez   s0    %******x(040000r   c                 (    	 ddl m}  |||          S )Nr   )RawArray)rQ   rU   )r   rR   size_or_initializerrU   s       r   rU   zBaseContext.RawArray   s+    $******x(*=>>>r   )r2   c                N    	 ddl m}  ||g|R ||                                 dS )Nr   )Valuer2   r!   )rQ   rX   r#   )r   rR   r2   rS   rX   s        r   rX   zBaseContext.Value   sU    2''''''u% - - -4))++- - - 	-r   c                R    	 ddl m}  |||||                                           S )Nr   )ArrayrY   )rQ   r[   r#   )r   rR   rV   r2   r[   s        r   r[   zBaseContext.Array   sG    1''''''u%':))++- - - 	-r   c                 |    	 t           j        dk    r(t          t           dd          rddlm}  |             d S d S d S )Nwin32frozenFr   )freeze_support)sysplatformgetattrspawnr_   )r   r_   s     r   r_   zBaseContext.freeze_support   s[    	 <7""wsHe'D'D"------N #"""r   c                 $    	 ddl m}  |            S )Nr   )
get_logger)utilre   )r   re   s     r   re   zBaseContext.get_logger   s'    	 	%$$$$$z||r   c                 &    	 ddl m}  ||          S )Nr   )log_to_stderr)rf   rh   )r   levelrh   s      r   rh   zBaseContext.log_to_stderr   s'    F''''''}U###r   c                     	 ddl m} d S )Nr   )r)   ) r)   )r   r)   s     r   allow_connection_picklingz%BaseContext.allow_connection_pickling   s!    	
 	!       r   c                 *    	 ddl m}  ||           d S )Nr   )set_executable)rc   rn   )r   
executablern   s      r   rn   zBaseContext.set_executable   s1    	 	*)))))z"""""r   c                 *    	 ddl m}  ||           d S )Nr   )set_forkserver_preload)
forkserverrq   )r   module_namesrq   s      r   rq   z"BaseContext.set_forkserver_preload   s2    	 	766666|,,,,,r   c                     || S 	 t           |         }n!# t          $ r t          d|z            d w xY w|                                 |S )Nzcannot find context for %r)_concrete_contextsKeyError
ValueError_check_available)r   methodr!   s      r   r#   zBaseContext.get_context   sj    >K	N$V,CC 	N 	N 	N9FBCCM	N
s    2Fc                     | j         S N)_namer   
allow_nones     r   get_start_methodzBaseContext.get_start_method   s
    zr   c                      t          d          )Nz+cannot set start method of concrete context)rw   r   ry   forces      r   set_start_methodzBaseContext.set_start_method   s    FGGGr   c                 F    	 t                                          d          S Nr   )globalsgetr   s    r   reducerzBaseContext.reducer   s    	(yy}}[)))r   c                 (    |t                      d<   d S r   )r   )r   r   s     r   r   zBaseContext.reducer   s    !*		+r   c                     d S r{   r   r   s    r   rx   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/   r1   r4   r7   r9   r;   r@   rD   rF   rH   rP   rU   rX   r[   r_   re   rh   rl   rn   rq   r#   r   r   propertyr   setterrx   r   r   r   r   r      s       L#NL-"l7#:;;O!\'"899N"l7#:;;O  	 	 	   
, , ,
- - -
7 7 7 7
8 8 8 8
? ? ? ?
- - -
I I I I
6 6 6 6
> > > >
3 3 3
 ?A"0 0 0 01 1 1
? ? ?
 37 - - - - - DH - - - - -    $ $ $ $
! ! !# # #- - -      H H H H * * X*
 ^+ + ^+    r   r   c                   >    e Zd ZdZed             Zed             ZdS )ProcessNc                 d    t                                           j                            |           S r{   )_default_contextr#   r   _Popen)process_objs    r   r   zProcess._Popen   s%    ++--5<<[IIIr   c                  b    t                                           j                                        S r{   )r   r#   r   _after_forkr   r   r   r   zProcess._after_fork   s#    ++--5AACCCr   r
   r   r   _start_methodr   r   r   r   r   r   r   r      sU        MJ J \J D D \D 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 | _        d S r{   )r   _actual_context)r   rI   s     r   __init__zDefaultContext.__init__   s     '#r   Nc                 ~    || j         | j        | _         | j         S t                                          |          S r{   )r   r   superr#   )r   ry   	__class__s     r   r#   zDefaultContext.get_context   s=    >#+'+'<$''77&&v...r   Fc                     | j         |st          d          ||r	d | _         d S |                     |          | _         d S )Nzcontext has already been set)r   RuntimeErrorr#   r   s      r   r   zDefaultContext.set_start_method   sQ    +E+=>>>>e>#'D F#//77r   c                 H    | j         |rd S | j        | _         | j         j        S r{   )r   r   r|   r}   s     r   r   zDefaultContext.get_start_method   s/    ' t#'#8D #))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|                    d           |S )Nr]   rc   darwinforkrr   )r`   ra   r   HAVE_SEND_HANDLEappend)r   methodss     r   get_all_start_methodsz$DefaultContext.get_all_start_methods  sZ    <7""9+.<8+C+Cw''&RYIZG) -|,,,Nr   r{   r   )
r
   r   r   r   r   r#   r   r   r   __classcell__)r   s   @r   r   r      s        G$ $ $/ / / / / /8 8 8 8* * * *      r   r   r]   c                   (    e Zd ZdZed             ZdS )ForkProcessr   c                 $    ddl m}  ||           S Nr   )Popen)
popen_forkr   r   r   s     r   r   zForkProcess._Popen  s$    ))))))5%%%r   Nr
   r   r   r   r   r   r   r   r   r   r     s2        		& 	& 
	& 	& 	&r   r   c                   >    e Zd ZdZed             Zed             ZdS )SpawnProcessrc   c                 $    ddl m}  ||           S r   )popen_spawn_posixr   r   s     r   r   zSpawnProcess._Popen  $    0000005%%%r   c                      d S r{   r   r   r   r   r   zSpawnProcess._after_fork"  	     Dr   Nr   r   r   r   r   r     M        		& 	& 
	& 
	 	 
	 	 	r   r   c                   (    e Zd ZdZed             ZdS )ForkServerProcessrr   c                 $    ddl m}  ||           S r   )popen_forkserverr   r   s     r   r   zForkServerProcess._Popen)  s$    //////5%%%r   Nr   r   r   r   r   r   '  s2        $		& 	& 
	& 	& 	&r   r   c                       e Zd ZdZeZdS )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dS SpawnContextrc   Nr
   r   r   r|   r   r   r   r   r   r   r   2          r   r   c                       e Zd ZdZeZd ZdS )ForkServerContextrr   c                 <    t           j        st          d          d S )Nz%forkserver start method not available)r   r   rw   r   s    r   rx   z"ForkServerContext._check_available9  s)    - J !HIIIJ Jr   N)r
   r   r   r|   r   r   rx   r   r   r   r   r   6  s2        #	J 	J 	J 	J 	Jr   r   )r   rc   rr   r   rc   r   c                   >    e Zd ZdZed             Zed             ZdS )r   rc   c                 $    ddl m}  ||           S r   )popen_spawn_win32r   r   s     r   r   zSpawnProcess._PopenM  r   r   c                      d S r{   r   r   r   r   r   zSpawnProcess._after_forkR  r   r   Nr   r   r   r   r   r   K  r   r   c                       e Zd ZdZeZdS r   r   r   r   r   r   r   W  r   r   c                 4    t           |          t          _        d S r{   )ru   r   r   )ry   s    r   _force_start_methodr   d  s    '9&'A$$$r   c                  .    t          t          dd           S )Nspawning_popen)rb   _tlsr   r   r   get_spawning_popenr   m  s    4)4000r   c                     | t           _        d S r{   )r   r   )popens    r   set_spawning_popenr   p  s    Dr   c                 j    t                      $t          dt          |           j        z            d S )NzF%s objects should only be shared between processes through inheritance)r   r   typer
   )objs    r   assert_spawningr   s  s>    ##%)#YY%78  	 $#r   ) r   r`   	threadingrk   r   r   __all__	Exceptionr   r   r   r   objectr   BaseProcessr   r   ra   r   r   r   r   r   r   ru   r   r   localr   r   r   r   r   r   r   <module>r      s   				 



                
	 	 	 	 	9 	 	 		 	 	 	 	\ 	 	 		 	 	 	 	< 	 	 		 	 	 	 	, 	 	 	x x x x x& x x x|D D D D Dg! D D D% % % % %[ % % %X <7& & & & &g) & & &
 
 
 
 
w* 
 
 
& & & & &G/ & & &    k       {   J J J J JK J J J '')) 
 |x *>*<W*EFF)>*<V*DEE
 
 
 
 
w* 
 
 
    {   
 	 &~&8&ABBB B B y1 1 1         r   