
    z%i-                        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       K/home/uftp/.pyenv/versions/3.12.0/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                 J    	 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lln;%&GHHJr   c                 b    	 ddl m}  || j                               }|j                          |S )Nr   )SyncManagerctx)managersr   get_contextstart)r   r   ms      r   ManagerzBaseContext.Manager1   s-    	
 	*D,,./		r   Tc                      	 ddl m}  ||      S )Nr   )Pipe)
connectionr(   )r   duplexr(   s      r   r(   zBaseContext.Pipe<   s    ?$F|r   c                 >    	 ddl m}  || j                               S )Nr   )Lockr    )synchronizer,   r#   )r   r,   s     r   r,   zBaseContext.LockA   s    1%((*++r   c                 >    	 ddl m}  || j                               S )Nr   )RLockr    )r-   r/   r#   )r   r/   s     r   r/   zBaseContext.RLockF   s    -&))+,,r   Nc                 @    	 ddl m}  ||| j                               S )Nr   )	Conditionr    )r-   r1   r#   )r   lockr1   s      r   r1   zBaseContext.ConditionK   s    (*4#3#3#566r   c                 @    	 ddl m}  ||| j                               S )Nr   )	Semaphorer    )r-   r4   r#   )r   valuer4   s      r   r4   zBaseContext.SemaphoreP   s    (*D$4$4$677r   c                 @    	 ddl m}  ||| j                               S )Nr   )BoundedSemaphorer    )r-   r7   r#   )r   r5   r7   s      r   r7   zBaseContext.BoundedSemaphoreU   s    014+;+;+=>>r   c                 >    	 ddl m}  || j                               S )Nr   )Eventr    )r-   r9   r#   )r   r9   s     r   r9   zBaseContext.EventZ   s    %&))+,,r   c                 D    	 ddl m}  ||||| j                               S )Nr   )Barrierr    )r-   r;   r#   )r   partiesactiontimeoutr;   s        r   r;   zBaseContext.Barrier_   s"    &(wT5E5E5GHHr   c                 @    	 ddl m}  ||| j                               S )Nr   )Queuer    )queuesr@   r#   )r   maxsizer@   s      r   r@   zBaseContext.Queued   s    $!W$"2"2"455r   c                 @    	 ddl m}  ||| j                               S )Nr   )JoinableQueuer    )rA   rD   r#   )r   rB   rD   s      r   rD   zBaseContext.JoinableQueuei   s    $)W$*:*:*<==r   c                 >    	 ddl m}  || j                               S )Nr   )SimpleQueuer    )rA   rF   r#   )r   rF   s     r   rF   zBaseContext.SimpleQueuen   s    $'t//122r   c                 F    	 ddl m}  |||||| j                               S )Nr   )Pool)context)poolrH   r#   )r   	processesinitializerinitargsmaxtasksperchildrH   s         r   rH   zBaseContext.Pools   s*    +I{H6F ,,.0 	0r   c                 "    	 ddl m}  ||g| S )Nr   )RawValue)sharedctypesrP   )r   typecode_or_typeargsrP   s       r   rP   zBaseContext.RawValuez   s    %*(0400r   c                 "    	 ddl m}  |||      S )Nr   )RawArray)rQ   rU   )r   rR   size_or_initializerrU   s       r   rU   zBaseContext.RawArray   s    $*(*=>>r   )r2   c                F    	 ddl m}  ||g||| j                         dS )Nr   )Valuer2   r!   )rQ   rX   r#   )r   rR   r2   rS   rX   s        r   rX   zBaseContext.Value   s2    2'% - -4))+- 	-r   c                D    	 ddl m}  ||||| j                               S )Nr   )ArrayrY   )rQ   r[   r#   )r   rR   rV   r2   r[   s        r   r[   zBaseContext.Array   s)    1'%':))+- 	-r   c                 l    	 t         j                  dk(  r t        t         dd      rddlm}  |        y y y )Nwin32frozenFr   )freeze_support)sysplatformgetattrspawnr_   )r   r_   s     r   r_   zBaseContext.freeze_support   s2    	 <<7"wsHe'D- (E"r   c                     	 ddl m}  |       S )Nr   )
get_logger)utilre   )r   re   s     r   re   zBaseContext.get_logger   s    	 	%|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} y )Nr   )r)   ) r)   )r   r)   s     r   allow_connection_picklingz%BaseContext.allow_connection_pickling   s    	
 	!r   c                 "    	 ddl m}  ||       y )Nr   )set_executable)rc   rn   )r   
executablern   s      r   rn   zBaseContext.set_executable   s    	 	*z"r   c                 "    	 ddl m}  ||       y )Nr   )set_forkserver_preload)
forkserverrq   )r   module_namesrq   s      r   rq   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9FBCM	Ns   	! :c                     | j                   S N)_namer   
allow_nones     r   get_start_methodzBaseContext.get_start_method   s    zz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Gr   c                 6    	 t               j                  d      S Nr   )globalsgetr   s    r   reducerzBaseContext.reducer   s    	(y}}[))r   c                     |t               d<   y r   )r   )r   r   s     r   r   zBaseContext.reducer   s    !*	+r   c                      y 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-"7#:#:;O!'"8"89N"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   rI   s     r   __init__zDefaultContext.__init__   s     '#r   c                 x    |)| j                   | j                  | _         | j                   S t        |   |      S r{   )r   r   superr#   )r   ry   	__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#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|j	                  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  sP    K<<7"9+.<<8+Cw'&RYIZG))|,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)SpawnProcessrc   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)ForkServerProcessrr   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SpawnContextrc   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)ForkServerContextrr   c                 :    t         j                  st        d      y )Nz%forkserver start method not available)r   r   rw   r   s    r   rx   z"ForkServerContext._check_available:  s    -- !HII .r   N)r
   r   r   r|   r   r   rx   r   r   r   r   r   7  s    #	Jr   r   )r   rc   rr   r   rc   r   c                   0    e Zd ZdZed        Zed        Zy)r   rc   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{   )ru   r   r   )ry   s    r   _force_start_methodr   e  s    '9&'A$r   c                  $    t        t        dd       S )Nspawning_popen)rb   _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   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|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   