
    hb3                        S SK r S SKrS SKrS SKrSSKJr  / rSrSSKJ	r	J
r
JrJrJrJrJr   " S S5      r " S S	\R"                  5      r " S
 S\5      r\" S \" \5       5       5      \l        \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\" \S   5      rO4 " S S\R"                  5      r " S S\5      rS\" 5       0r\" \S   5      rS r\R@                  " 5       r!S  r"S! r#S" r$g)#    N   )processzIforce_execv is not supported as the billiard C extension is not installed)ProcessErrorBufferTooShortTimeoutErrorAuthenticationErrorTimeLimitExceededSoftTimeLimitExceededWorkerLostErrorc                      \ rS rSr\r\r\r\r\r\	r	\
r
\" \R                  5      r\" \R                  5      r\" \S5      (       a  S rO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 r!S 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! r,S" r-S# r.Sr/g	)+BaseContext$   	cpu_countc                 L    [         R                  " 5       nUc  [        S5      eU$ )z(Returns the number of CPUs in the systemcannot determine number of cpus)osr   NotImplementedError)selfnums     8D:\TimeStamps\venv\Lib\site-packages\billiard/context.pyr   BaseContext.cpu_count2   s#    ,,.C{)*KLL
    c                 d   [         R                  S:X  a   [        [        R                  S   5      nOS[         R                  ;   d  [         R                  S:X  aU  Sn[         R                  S:X  a  SU-   n [        R                  " U5       n[        UR                  5       5      nS S S 5        O [        R                  " S5      nWS	:  a  U$ [        S
5      e! [
        [        4 a    Sn N'f = f! , (       d  f       N9= f! [
         a    Sn NJf = f! [
        [        [        4 a    Sn Ngf = f)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   r   :   s   ||w&bjj)?@AC #,,&#,,(*B0<<8+!D=D$1!!&&(m (
**%:;C ax
)*KLL) #H- C (! C
 #G^< CsS   C 7D C2'D 1D C/.C/2
D <D  D DDD/.D/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.ManagerT   s(     	*D,,./		r   c                      SSK Jn  U" XU5      $ )z1Returns two connection object connected by a piper   )Pipe)
connectionr7   )r   duplex	rnonblock	wnonblockr7   s        r   r7   BaseContext.Pipe_   s    $Fy11r   c                 6    SSK Jn  U" U R                  5       S9$ )z#Returns a non-recursive lock objectr   )Lockr.   )synchronizer>   r1   )r   r>   s     r   r>   BaseContext.Lockd   s    %((*++r   c                 6    SSK Jn  U" U R                  5       S9$ )zReturns a recursive lock objectr   )RLockr.   )r?   rB   r1   )r   rB   s     r   rB   BaseContext.RLocki       &))+,,r   Nc                 6    SSK Jn  U" XR                  5       S9$ )zReturns a condition objectr   )	Conditionr.   )r?   rF   r1   )r   lockrF   s      r   rF   BaseContext.Conditionn   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.   )r?   rJ   r1   )r   valuerJ   s      r   rJ   BaseContext.Semaphores   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.   )r?   rN   r1   )r   rK   rN   s      r   rN   BaseContext.BoundedSemaphorex   s    1+;+;+=>>r   c                 6    SSK Jn  U" U R                  5       S9$ )zReturns an event objectr   )Eventr.   )r?   rQ   r1   )r   rQ   s     r   rQ   BaseContext.Event}   rD   r   c                 8    SSK Jn  U" XX0R                  5       S9$ )zReturns a barrier objectr   )Barrierr.   )r?   rT   r1   )r   partiesactiontimeoutrT   s        r   rT   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.   )queuesr[   r1   )r   maxsizer[   s      r   r[   BaseContext.Queue   s    !W"2"2"455r   c                 6    SSK Jn  U" XR                  5       S9$ )rZ   r   )JoinableQueuer.   )r\   r`   r1   )r   r]   r`   s      r   r`   BaseContext.JoinableQueue   s    )W*:*:*<==r   c                 6    SSK Jn  U" U R                  5       S9$ )rZ   r   )SimpleQueuer.   )r\   rc   r1   )r   rc   s     r   rc   BaseContext.SimpleQueue   s    't//122r    c                 L    SSK Jn  U" XX4XVUXU
XUXUUU R                  5       S9$ )zReturns a process pool objectr   )Pool)context)poolrg   r1   )r   	processesinitializerinitargsmaxtasksperchildrW   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_restartrg   s                      r   rg   BaseContext.Pool   s<     	IH+> M#5F- ,,.0 	0r   c                      SSK Jn  U" U/UQ76 $ )zReturns a shared objectr   )RawValue)sharedctypesr|   )r   typecode_or_typeargsr|   s       r   r|   BaseContext.RawValue   s    *(0400r   c                     SSK Jn  U" X5      $ )zReturns a shared arrayr   )RawArray)r}   r   )r   r~   size_or_initializerr   s       r   r   BaseContext.RawArray   s    *(>>r   c                 h    SSK Jn  UR                  SS5      nU" U/UQ7UU R                  5       S.6$ )z$Returns a synchronized shared objectr   )ValuerG   TrG   r/   )r}   r   getr1   )r   r~   r   kwargsr   rG   s         r   r   BaseContext.Value   s?    'zz&$'% - -4))+- 	-r   c                 ^    SSK Jn  UR                  SS5      nU" XUU R                  5       S9$ )z#Returns a synchronized shared arrayr   )ArrayrG   Tr   )r}   r   r   r1   )r   r~   r   r   r   r   rG   s          r   r   BaseContext.Array   s3    'zz&$'%))+- 	-r   c                 v    [         R                  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.
r   frozenFr   )freeze_supportN)r   r    getattrspawnr   )r   r   s     r   r   BaseContext.freeze_support   s0     <<7"wsHe'D'D- (E"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   )r8   N) r8   )r   r8   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)r   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      ef = f)Nzcannot find context for %r)_concrete_contextsr$   r#   _check_available)r   methodr/   s      r   r1   BaseContext.get_context   sS    >K	D$V,C 	
  	D9FBCC	Ds   	" ;c                     U R                   $ N)_namer   
allow_nones     r   get_start_methodBaseContext.get_start_method   s    zzr   c                     [        S5      e)Nz+cannot set start method of concrete context)r#   )r   r   s     r   set_start_methodBaseContext.set_start_method   s    FGGr   c                 :    U R                  5       =(       d    SS:H  $ )Nfork)r   r   s    r   forking_is_enabledBaseContext.forking_is_enabled   s    %%'16f<<r   c                     U(       dB  SSK Jn  U(       a  U R                  SSS9  g [        R                  " [        [        5      5        g g )Nr   )supports_execr   T)force)_extr   r   warningswarnRuntimeWarning
W_NO_EXECV)r   rK   r   s      r   forking_enableBaseContext.forking_enable   s4    +%%gT%:nZ89 r   c                     g r   re   r   s    r   r   BaseContext._check_available  s    r   )TFFr   )r   )NN)r   )NNre   NNNNNr   NNNNTNFFF)0__name__
__module____qualname____firstlineno__r   r   r   r   r	   r
   r   staticmethodr   current_processactive_childrenhasattrr   r   r4   r7   r>   rB   rF   rJ   rN   rQ   rT   r[   r`   rc   rg   r|   r   r   r   r   r   r   r   r   r   r1   r   r   r   r   r   __static_attributes__re   r   r   r   r   $   s   L#NL-)1%O"7#:#:;O"7#:#:;Or;		M4	2
,
-
7
8
?
-
I
6
>
3
 ?A?C48EIBF;@01
?
--$
!#-H=:r   r   c                   (    \ rS rSrSr\S 5       rSrg)Processi  Nc                 \    [         R                  5       R                  R                  U 5      $ r   )_default_contextr1   r   _Popen)process_objs    r   r   Process._Popen  s"    ++-55<<[IIr   re   r   r   r   r   _start_methodr   r   r   re   r   r   r   r     s    MJ J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$ )
DefaultContexti  c                     Xl         S U l        g r   )r   _actual_context)r   rh   s     r   __init__DefaultContext.__init__  s     '#r   c                    > Uc*  U R                   c  U R                  U l         U R                   $ [        [        U ]  U5      $ r   )r   r   superr   r1   )r   r   	__class__s     r   r1   DefaultContext.get_context  s@    >##+'+'<'<$''':6BBr   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   RuntimeErrorr1   )r   r   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                 n    [         R                  S:X  a  S/$ SSKJn  UR                  (       a  / SQ$ SS/$ )Nr   r   r   	reductionr   r   r   r   )r   r    r   r   HAVE_SEND_HANDLEr   r   s     r   get_all_start_methods$DefaultContext.get_all_start_methods3  s3    <<7"9#))66((r   )r   r   r   r   )r   r   r   r   r   r   r1   r   r   r   r   __classcell__)r   s   @r   r   r     s'    G$C8*) )r   r   c              #   :   #    U  H  oS    S:w  d  M  Uv   M     g7f)r   _Nre   ).0xs     r   	<genexpr>r   =  s     L)<A!aa)<s   	r   c                   (    \ rS rSrSr\S 5       rSrg)ForkProcessiE  r   c                     SSK Jn  U" U 5      $ Nr   )Popen)
popen_forkr   r   r   s     r   r   ForkProcess._PopenH  s    )%%r   re   Nr   re   r   r   r   r   E  s    		& 
	&r   r   c                   (    \ rS rSrSr\S 5       rSrg)SpawnProcessiM  r   c                     SSK Jn  U" U 5      $ r   )popen_spawn_posixr   r   s     r   r   SpawnProcess._PopenP      0%%r   re   Nr   re   r   r   r  r  M      		& 
	&r   r  c                   (    \ rS rSrSr\S 5       rSrg)ForkServerProcessiU  r   c                     SSK Jn  U" U 5      $ r   )popen_forkserverr   r   s     r   r   ForkServerProcess._PopenX  s    /%%r   re   Nr   re   r   r   r	  r	  U  s    $		& 
	&r   r	  c                       \ rS rSrSr\rSrg)ForkContexti]  r   re   N)r   r   r   r   r   r   r   r   re   r   r   r  r  ]  s    r   r  c                       \ rS rSrSr\rSrg)SpawnContextia  r   re   Nr   r   r   r   r   r  r   r   re   r   r   r  r  a      r   r  c                   "    \ rS rSrSr\rS rSrg)ForkServerContextie  r   c                 H    SSK Jn  UR                  (       d  [        S5      eg )Nr   r   z%forkserver start method not available)r   r   r   r#   r   s     r   r   "ForkServerContext._check_availablei  s    #-- !HII .r   re   N)	r   r   r   r   r   r	  r   r   r   re   r   r   r  r  e  s    #	Jr   r  r   r   c                   (    \ rS rSrSr\S 5       rSrg)r  iw  r   c                     SSK Jn  U" U 5      $ r   )popen_spawn_win32r   r   s     r   r   r  z  r  r   re   Nr   re   r   r   r  r  w  r  r   c                       \ rS rSrSr\rSrg)r  i  r   re   Nr  re   r   r   r  r    r  r   r   c                 (    [         U    [        l        g r   )r   r   r   )r   s    r   _force_start_methodr    s    '9&'A$r   c                  $    [        [        SS 5      $ )Nspawning_popen)r   _tlsre   r   r   get_spawning_popenr     s    4)400r   c                     U [         l        g r   )r  r  )r%   s    r   set_spawning_popenr"    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&    s4    ##%)#Y%7%78
 	
 $r   )%r   r   	threadingr   r   r   __all__r   
exceptionsr   r   r   r   r	   r
   r   r   BaseProcessr   r   listdirr    r   r  r	  r  r  r  r   r   r  localr  r   r"  r&  re   r   r   <module>r.     ss   	 
   

  b bRJg!! J&)[ &)P L^)<LL  <<7&g)) &&w** &&G// &k { JK J ')
 &&8&@A&w** &{ 
 	 &&8&ABB 1 
r   