
     h3                        d dl mZ d dlZd dlZd dlZd dlZddlmZ g ZdZ	ddl
mZmZmZmZmZmZmZ  G d de          Z G d	 d
ej                  Z G d de          Z ed  ee          D                       e_        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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 )$    )absolute_importN   )processzIforce_execv is not supported as the billiard C extension is not installed)ProcessErrorBufferTooShortTimeoutErrorAuthenticationErrorTimeLimitExceededSoftTimeLimitExceededWorkerLostErrorc                   b   e Zd ZeZeZeZeZeZeZe	Z	 e
ej                  Z e
ej                  Z eed          rd Zn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 Z d Z!d Z"d Z#d(dZ$d Z%d Z&d  Z'd(d!Z(d-d"Z)d(d#Z*d$ Z+d% Z,d& Z-d
S ).BaseContext	cpu_countc                 N    t          j                    }|t          d          |S )z(Returns the number of CPUs in the systemNcannot determine number of cpus)osr   NotImplementedError)selfnums     L/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/billiard/context.pyr   zBaseContext.cpu_count4   s&    ,..C{)*KLLL
    c                 Z   t           j        dk    r:	 t          t          j        d                   }n# t
          t          f$ r d}Y nw xY wdt           j        v st           j        dk    rxd}t           j        dk    rd|z   }	 t          j        |          5 }t          |                                          }d d d            n# 1 swxY w Y   nG# t
          $ r d}Y n9w xY w	 t          j	        d          }n# t
          t          t          f$ r d}Y nw xY w|d	k    r|S t          d
          )Nwin32NUMBER_OF_PROCESSORSr   bsddarwinz/sbin/sysctl -n hw.ncpuz/usrSC_NPROCESSORS_ONLNr   r   )sysplatformintr   environ
ValueErrorKeyErrorpopenreadsysconfOSErrorAttributeErrorr   )r   r   commps       r   r   zBaseContext.cpu_count<   s   |w&&bj)?@AACC"H-   CCC#,&&#,(*B*B0<8++!D=D$ ,1!!&&((mm, , , , , , , , , , , , , , ,!   CCC*%:;;CC"G^<   CCC axx
)*KLLLsW   2 AAC "C7C CC 
CC CC"C7 7DDc                 v    ddl m}  ||                                           }|                                 |S )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   ManagerzBaseContext.ManagerV   sF     	*)))))KD,,..///				r   TFc                 (    ddl m}  ||||          S )z1Returns two connection object connected by a piper   )Pipe)
connectionr5   )r   duplex	rnonblock	wnonblockr5   s        r   r5   zBaseContext.Pipea   s(    $$$$$$tFIy111r   c                 J    ddl m}  ||                                           S )z#Returns a non-recursive lock objectr   )Lockr-   )synchronizer;   r0   )r   r;   s     r   r;   zBaseContext.Lockf   s3    %%%%%%t((**++++r   c                 J    ddl m}  ||                                           S )zReturns a recursive lock objectr   )RLockr-   )r<   r>   r0   )r   r>   s     r   r>   zBaseContext.RLockk   3    &&&&&&u))++,,,,r   Nc                 L    ddl m}  |||                                           S )zReturns a condition objectr   )	Conditionr-   )r<   rA   r0   )r   lockrA   s      r   rA   zBaseContext.Conditionp   s5    ******y4#3#3#5#56666r   r   c                 L    ddl m}  |||                                           S )zReturns a semaphore objectr   )	Semaphorer-   )r<   rD   r0   )r   valuerD   s      r   rD   zBaseContext.Semaphoreu   s5    ******yD$4$4$6$67777r   c                 L    ddl m}  |||                                           S )z"Returns a bounded semaphore objectr   )BoundedSemaphorer-   )r<   rG   r0   )r   rE   rG   s      r   rG   zBaseContext.BoundedSemaphorez   s6    1111114+;+;+=+=>>>>r   c                 J    ddl m}  ||                                           S )zReturns an event objectr   )Eventr-   )r<   rI   r0   )r   rI   s     r   rI   zBaseContext.Event   r?   r   c                 P    ddl m}  |||||                                           S )zReturns a barrier objectr   )Barrierr-   )r<   rK   r0   )r   partiesactiontimeoutrK   s        r   rK   zBaseContext.Barrier   s9    ((((((wwT5E5E5G5GHHHHr   r   c                 L    ddl m}  |||                                           S )Returns a queue objectr   )Queuer-   )queuesrQ   r0   )r   maxsizerQ   s      r   rQ   zBaseContext.Queue   s5    !!!!!!uW$"2"2"4"45555r   c                 L    ddl m}  |||                                           S )rP   r   )JoinableQueuer-   )rR   rU   r0   )r   rS   rU   s      r   rU   zBaseContext.JoinableQueue   s5    ))))))}W$*:*:*<*<====r   c                 J    ddl m}  ||                                           S )rP   r   )SimpleQueuer-   )rR   rW   r0   )r   rW   s     r   rW   zBaseContext.SimpleQueue   s3    ''''''{t//112222r    c                 l    ddl m}  ||||||||||	|
||||||||                                           S )zReturns a process pool objectr   )Pool)context)poolrZ   r0   )r   	processesinitializerinitargsmaxtasksperchildrN   soft_timeoutlost_worker_timeoutmax_restartsmax_restart_freqon_process_upon_process_downon_timeout_seton_timeout_cancelthreads	semaphoreputlocksallow_restartrZ   s                      r   rZ   zBaseContext.Pool   sh     	tI{H6F\+> "2M#^5FY- ,,..0 0 0 	0r   c                      ddl m}  ||g|R  S )zReturns a shared objectr   )RawValue)sharedctypesrn   )r   typecode_or_typeargsrn   s       r   rn   zBaseContext.RawValue   s-    ******x(040000r   c                 &    ddl m}  |||          S )zReturns a shared arrayr   )RawArray)ro   rs   )r   rp   size_or_initializerrs   s       r   rs   zBaseContext.RawArray   s(    ******x(*=>>>r   c                 x    ddl m} |                    dd          } ||g|R ||                                 dS )z$Returns a synchronized shared objectr   )ValuerB   TrB   r.   )ro   rv   getr0   )r   rp   rq   kwargsrv   rB   s         r   rv   zBaseContext.Value   se    ''''''zz&$''u% - - -4))++- - - 	-r   c                 |    ddl m} |                    dd          } |||||                                           S )z#Returns a synchronized shared arrayr   )ArrayrB   Trw   )ro   r{   rx   r0   )r   rp   rt   rq   ry   r{   rB   s          r   r{   zBaseContext.Array   sW    ''''''zz&$''u%':))++- - - 	-r   c                 z    t           j        dk    r(t          t           dd          rddlm}  |             dS dS dS )zCheck whether this is a fake forked process in a frozen executable.
        If so then run code specified by commandline and exit.
        r   frozenFr   )freeze_supportN)r   r   getattrspawnr~   )r   r~   s     r   r~   zBaseContext.freeze_support   sV     <7""wsHe'D'D"------N #"""r   c                 "    ddl m}  |            S )zZReturn package logger -- if it does not already exist then
        it is created.
        r   )
get_logger)utilr   )r   r   s     r   r   zBaseContext.get_logger   s"     	%$$$$$z||r   c                 $    ddl m}  ||          S )z8Turn on logging and add a handler which prints to stderrr   )log_to_stderr)r   r   )r   levelr   s      r   r   zBaseContext.log_to_stderr   s$    ''''''}U###r   c                     ddl m} dS )zVInstall support for sending connections and sockets
        between processes
        r   )r6   N) r6   )r   r6   s     r   allow_connection_picklingz%BaseContext.allow_connection_pickling   s     	!       r   c                 (    ddl m}  ||           dS )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)r   r   )r   
executabler   s      r   r   zBaseContext.set_executable   s,    
 	*)))))z"""""r   c                 (    ddl m}  ||           dS )zkSet 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   z"BaseContext.set_forkserver_preload   s-     	766666|,,,,,r   c                     || S 	 t           |         }n # t          $ r t          d|z            w xY w|                                 |S )Nzcannot find context for %r)_concrete_contextsr#   r"   _check_available)r   methodr.   s      r   r0   zBaseContext.get_context   sh    >K	D$V,CC 	D 	D 	D9FBCCC	D
s    1c                     | 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)r"   )r   r   s     r   set_start_methodzBaseContext.set_start_method   s    FGGGr   c                 6    |                                  pddk    S )Nfork)r   r   s    r   forking_is_enabledzBaseContext.forking_is_enabled   s    %%''16f<<r   c                     |sIddl m} |r|                     dd           d S t          j        t          t                               d S d S )Nr   )supports_execr   T)force)_extr   r   warningswarnRuntimeWarning
W_NO_EXECV)r   rE   r   s      r   forking_enablezBaseContext.forking_enable   sk     	:++++++ :%%gT%:::::nZ8899999	: 	:r   c                     d S r   rX   r   s    r   r   zBaseContext._check_available  s    r   )TFFr   )r   )NN)r   )NNrX   NNNNNr   NNNNTNFFF).__name__
__module____qualname__r   r   r   r	   r
   r   r   staticmethodr   current_processactive_childrenhasattrr   r   r3   r5   r;   r>   rA   rD   rG   rI   rK   rQ   rU   rW   rZ   rn   rs   rv   r{   r~   r   r   r   r   r   r0   r   r   r   r   r   rX   r   r   r   r   &   s       L#NL-)1%O"l7#:;;O"l7#:;;Owr; !M	 	 	 		M 	M 	M4	 	 	2 2 2 2
, , ,
- - -
7 7 7 7
8 8 8 8
? ? ? ?
- - -
I I I I
6 6 6 6
> > > >
3 3 3
 ?A?C48EIBF;@0 0 0 01 1 1
? ? ?
- - -- - -    $ $ $ $
! ! !# # #- - -      H H H H= = =: : :    r   r   c                   (    e Zd ZdZed             ZdS )ProcessNc                 d    t                                           j                            |           S r   )_default_contextr0   r   _Popen)process_objs    r   r   zProcess._Popen  s%    ++--5<<[IIIr   r   r   r   _start_methodr   r   rX   r   r   r   r     s7        MJ J \J J J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   r[   s     r   __init__zDefaultContext.__init__  s     '#r   Nc                     || j         | j        | _         | j         S t          t          |                               |          S r   )r   r   superr   r0   )r   r   	__class__s     r   r0   zDefaultContext.get_context  sC    >#+'+'<$''..::6BBBr   Fc                     | j         |st          d          ||r	d | _         d S |                     |          | _         d S )Nzcontext has already been set)r   RuntimeErrorr0   )r   r   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                 R    t           j        dk    rdgS ddlm} |j        rg dS ddgS )Nr   r   r   	reductionr   r   r   r   )r   r   r   r   HAVE_SEND_HANDLEr   r   s     r   get_all_start_methodsz$DefaultContext.get_all_start_methods5  sK    <7""9######) )6666((r   r   r   )
r   r   r   r   r   r0   r   r   r   __classcell__)r   s   @r   r   r     s        G$ $ $C C C C C C8 8 8 8* * * *) ) ) ) ) ) )r   r   c              #   2   K   | ]}|d          dk    |V  dS )r   _NrX   ).0xs     r   	<genexpr>r   ?  s*      LLA!aLLr   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._PopenJ  s$    ))))))5%%%r   Nr   rX   r   r   r   r   G  s2        		& 	& 
	& 	& 	&r   r   c                   (    e Zd ZdZed             ZdS )SpawnProcessr   c                 $    ddl m}  ||           S r   )popen_spawn_posixr   r   s     r   r   zSpawnProcess._PopenR  $    0000005%%%r   Nr   rX   r   r   r   r   O  2        		& 	& 
	& 	& 	&r   r   c                   (    e Zd ZdZed             ZdS )ForkServerProcessr   c                 $    ddl m}  ||           S r   )popen_forkserverr   r   s     r   r   zForkServerProcess._PopenZ  s$    //////5%%%r   Nr   rX   r   r   r   r   W  s2        $		& 	& 
	& 	& 	&r   r   c                       e Zd ZdZeZdS )ForkContextr   N)r   r   r   r   r   r   rX   r   r   r   r   _  s        r   r   c                       e Zd ZdZeZdS SpawnContextr   Nr   r   r   r   r   r   rX   r   r   r   r   c          r   r   c                       e Zd ZdZeZd ZdS )ForkServerContextr   c                 >    ddl m} |j        st          d          d S )Nr   r   z%forkserver start method not available)r   r   r   r"   r   s     r   r   z"ForkServerContext._check_availablek  s;    ######- J !HIIIJ Jr   N)r   r   r   r   r   r   r   rX   r   r   r   r   g  s2        #	J 	J 	J 	J 	Jr   r   r   r   c                   (    e Zd ZdZed             ZdS )r   r   c                 $    ddl m}  ||           S r   )popen_spawn_win32r   r   s     r   r   zSpawnProcess._Popen|  r   r   Nr   rX   r   r   r   r   y  r   r   c                       e Zd ZdZeZdS r   r   rX   r   r   r   r     r   r   r   c                 4    t           |          t          _        d S r   )r   r   r   )r   s    r   _force_start_methodr     s    '9&'A$$$r   c                  .    t          t          dd           S )Nspawning_popen)r   _tlsrX   r   r   get_spawning_popenr     s    4)4000r   c                     | t           _        d S r   )r   r   )r$   s    r   set_spawning_popenr     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>    ##%)#YY%78
 
 	
 $#r   )(
__future__r   r   r   	threadingr   r   r   __all__r   
exceptionsr   r   r   r	   r
   r   r   objectr   BaseProcessr   r   listdirr   r   r   r   r   r   r   r   r   r   localr   r   r   r   rX   r   r   <module>r     s   & & & & & & 				 



           

                 b b b b b& b b bRJ J J J Jg! J J J&) &) &) &) &)[ &) &) &)P LL^)<)<LLLLL  <7& & & & &g) & & && & & & &w* & & && & & & &G/ & & &    k       {   J J J J JK J J J '')) 
 &~&8&@AA& & & & &w* & & &    {   
 	 &~&8&ABBB B B y1 1 1     
 
 
 
 
r   