
    h2                     0   S SK r S SKrS SKrS SKrSSKJr  SSKJr  SSKJr  SSKJ	r	J
r
  S SKJr  / SQr\
" 5         \" \" S	5      5      u  rr\	R$                  R&                  r \	R$                  R(                  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5      r " S S5      r\" \S5      (       a   " S S\R@                  5      r g " S S5      r g! \ a     S S
KJr   N! \ a    Sr  Nf = ff = f)    N   )context)process)util)	_billiardensure_SemLock)	monotonic)LockRLock	SemaphoreBoundedSemaphore	ConditionEvent   )
sem_unlinkc                 <     U R                   $ ! [         a     g f = fN)nameAttributeError)sls    <D:\TimeStamps\venv\Lib\site-packages\billiard/synchronize.py_semnamer   4   s"    ww s    
c                   ~    \ rS rSr\R
                  " 5       rSS jr\S 5       r	S r
S rS rS rS	 r\S
 5       rSrg)SemLock;   Nc                    Uc  [         R                  R                  5       nUR                  5       n[        R
                  S:H  =(       d    US:H  n[        (       aa  [        S5       H0  n [        R                  " XX0R                  5       U5      =ol          OA   [        S5      n	[        R                   U	l        U	e[        R                  " XU5      =ol        ["        R$                  " SUR&                  5        U R)                  5         [        (       a  [        R
                  S:w  a  S n
["        R*                  " X
5        [-        U R                  5      b]  SS	KJn  U" U R                  R2                  5        ["        R4                  " U [        R6                  U R                  R2                  4S
S9  g g g ! [        [        4 a,  n	[        U	SS 5      [        R                   :w  a  e  S n	A	GM  S n	A	ff = f)Nwin32forkd   errnozcannot find file for semaphorezcreated semlock with handle %sc                 8    U R                   R                  5         g r   )_semlock_after_fork)objs    r   r#   %SemLock.__init__.<locals>._after_fork[   s    LL,,.    r   )registerr   )exitpriority)r   _default_contextget_contextget_start_methodsysplatformr   ranger   r   
_make_namer"   OSErrorIOErrorgetattrr    EEXISTr   debughandle_make_methodsregister_after_forkr   semaphore_trackerr'   r   Finalize_cleanup)selfkindvaluemaxvaluectxr   
unlink_nowir   excr#   r'   s               r   __init__SemLock.__init__>   s   ;**668C##%\\W,>
:3Z)2):):X/@** B    >?!LL		!*!2!24!IIB

3RYY?:||w&/((;&2 8++,dG$4$4t}}7I7I6K+,. 3   ) sGT2ellB Cs   +,F88G4 G//G4c                 6    SSK Jn  [        U 5        U" U 5        g )Nr   )
unregister)r8   rF   r   )r   rF   s     r   r:   SemLock._cleanuph   s    144r&   c                 p    U R                   R                  U l        U R                   R                  U l        g r   r"   acquirereleaser;   s    r   r6   SemLock._make_methodsn   s$    }},,}},,r&   c                 6    U R                   R                  5       $ r   )r"   	__enter__rL   s    r   rO   SemLock.__enter__r   s    }}&&((r&   c                 4    U R                   R                  " U6 $ r   )r"   __exit__r;   argss     r   rR   SemLock.__exit__u   s    }}%%t,,r&   c                 Z   [         R                  " U 5        U R                  n[        R                  S:X  a/  [         R
                  " 5       R                  UR                  5      nOUR                  nX!R                  UR                  4n X1R                  4-  nU$ ! [         a     U$ f = f)Nr   )r   assert_spawningr"   r,   r-   get_spawning_popenduplicate_for_childr5   r<   r>   r   r   )r;   r   hstates       r   __getstate__SemLock.__getstate__x   s    %]]<<7"**,@@KA		AGGR[[)	gg[ E   		s   B 
B*)B*c                     [         R                  R                  " U6 U l        [        R
                  " SUS   5        U R                  5         g )Nz recreated blocker with handle %rr   )r   r   _rebuildr"   r   r4   r6   r;   r[   s     r   __setstate__SemLock.__setstate__   s9    !))22E:

5uQx@r&   c                      [         R                  " 5       R                  S   < S[        [        R
                  5      < 3$ )N	semprefix-)r   current_process_confignextr   _rand r&   r   r/   SemLock._make_name   s/    !113;;KHw}}-/ 	/r&   rI   r   )__name__
__module____qualname____firstlineno__tempfile_RandomNameSequenceri   rC   staticmethodr:   r6   rO   rR   r\   ra   r/   __static_attributes__rj   r&   r   r   r   ;   sW    ((*E(.T  
-)-
 / /r&   r   c                   *    \ rS rSrSS jrS rS rSrg)r      Nc                 B    [         R                  U [        U[        US9  g Nr?   )r   rC   	SEMAPHORESEM_VALUE_MAXr;   r=   r?   s      r   rC   Semaphore.__init__   s    y%CHr&   c                 6    U R                   R                  5       $ r   )r"   
_get_valuerL   s    r   	get_valueSemaphore.get_value   s    }}''))r&   c                      U R                   R                  5       nSU R                  R                  < SU< S3$ ! [         a    Sn N-f = f)Nunknown<(value=)>)r"   r~   	Exception	__class__rl   r;   r=   s     r   __repr__Semaphore.__repr__   sG    	MM,,.E $(>>#:#:EBB  	E	s   ; A
	A
rj   r   N)rl   rm   rn   ro   rC   r   r   rs   rj   r&   r   r   r      s    I*Cr&   r   c                   $    \ rS rSrSS jrS rSrg)r      Nc                 8    [         R                  U [        XUS9  g rw   r   rC   ry   r{   s      r   rC   BoundedSemaphore.__init__   s    y%C@r&   c                      U R                   R                  5       nSU R                  R                  < SU< SU R                   R
                  < S3$ ! [         a    Sn NEf = f)Nr   r   r   z, maxvalue=r   )r"   r~   r   r   rl   r>   r   s     r   r   BoundedSemaphore.__repr__   sY    	MM,,.E NN##UDMM,B,BD 	D  	E	s   A A"!A"rj   r   )rl   rm   rn   ro   rC   r   rs   rj   r&   r   r   r      s    ADr&   r   c                   (    \ rS rSrSrSS jrS rSrg)r
      z
Non-recursive lock.
Nc                 :    [         R                  U [        SSUS9  g Nr   rx   r   r;   r?   s     r   rC   Lock.__init__   s    y!QC8r&   c                     U R                   R                  5       (       ah  [        R                  " 5       R                  n[
        R                  " 5       R                  S:w  a%  US[
        R                  " 5       R                  -   -  nOEU R                   R                  5       S:X  a  SnO$U R                   R                  5       S:  a  SnOSn S	U R                  R                  < S
U< S3$ ! [         a    Sn N-f = f)N
MainThread|r   Noner   SomeOtherThreadSomeOtherProcessr   r   z(owner=r   )r"   _is_miner   rf   r   	threadingcurrent_threadr~   _countr   r   rl   )r;   r   s     r   r   Lock.__repr__   s    	}}%%''..055++-22lBC)":":"<"A"AAAD))+q0%%'!+() $(>>#:#:DAA  	D	s$   BC- 	 C- * C- C- -C<;C<rj   r   rl   rm   rn   ro   __doc__rC   r   rs   rj   r&   r   r
   r
      s    9Br&   r
   c                   (    \ rS rSrSrSS jrS rSrg)r      z
Recursive lock
Nc                 :    [         R                  U [        SSUS9  g r   )r   rC   RECURSIVE_MUTEXr   s     r   rC   RLock.__init__   s    1#>r&   c                 J    U R                   R                  5       (       a  [        R                  " 5       R                  n[
        R                  " 5       R                  S:w  a%  US[
        R                  " 5       R                  -   -  nU R                   R                  5       nOKU R                   R                  5       S:X  a  Su  pO(U R                   R                  5       S:  a  Su  pOSu  p S	U R                  R                  < S
U< SU< S3$ ! [         a    Su  p N3f = f)Nr   r   r   )r   r   r   )r   nonzero)r   r   )r   r   r   (, r   )r"   r   r   rf   r   r   r   r   r~   r   r   rl   )r;   r   counts      r   r   RLock.__repr__   s    	/}}%%''..055++-22lBC)":":"<"A"AAAD,,.))+q0'e%%'!+:e;e "&!8!8$FF  	/.KD%	/s$   B D #"D "D )D D"!D"rj   r   r   rj   r&   r   r   r      s    ?Gr&   r   c                   f    \ rS rS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S jrSrg)r      z
Condition variable
Nc                     U(       d   eU=(       d    UR                  5       U l        UR                  S5      U l        UR                  S5      U l        UR                  S5      U l        U R                  5         g Nr   )r   _lockr   _sleeping_count_woken_count_wait_semaphorer6   )r;   lockr?   s      r   rC   Condition.__init__   sZ    
s(SYY[
"}}Q/MM!,"}}Q/r&   c                     [         R                  " U 5        U R                  U R                  U R                  U R
                  4$ r   )r   rW   r   r   r   r   rL   s    r   r\   Condition.__getstate__   s:    %

D00!!4#7#79 	9r&   c                 Z    Uu  U l         U l        U l        U l        U R	                  5         g r   )r   r   r   r   r6   r`   s     r   ra   Condition.__setstate__   s*    49	2T)		D0r&   c                 6    U R                   R                  5       $ r   )r   rO   rL   s    r   rO   Condition.__enter__   s    zz##%%r&   c                 4    U R                   R                  " U6 $ r   )r   rR   rS   s     r   rR   Condition.__exit__   s    zz""D))r&   c                 p    U R                   R                  U l        U R                   R                  U l        g r   )r   rJ   rK   rL   s    r   r6   Condition._make_methods   s$    zz))zz))r&   c                     U R                   R                  R                  5       U R                  R                  R                  5       -
  nSU R
                  R                  < SU R                  < SU< S3$ ! [         a    Sn N;f = f)Nr   r   r   r   r   )r   r"   r~   r   r   r   rl   r   )r;   num_waiterss     r   r   Condition.__repr__  sw    	$//88CCE,,55@@BCK
 NN##TZZ> 	>  	$#K	$s   A	A8 8BBc                    U R                   R                  R                  5       (       d   S5       eU R                  R	                  5         U R                   R                  R                  5       n[        U5       H  nU R                   R	                  5         M      U R                  R                  SU5      U R                  R	                  5         [        U5       H  nU R                   R                  5         M     $ ! U R                  R	                  5         [        U5       H  nU R                   R                  5         M     f = f)Nz,must acquire() condition before using wait()T)
r   r"   r   r   rK   r   r.   r   rJ   r   )r;   timeoutr   rA   s       r   waitCondition.wait  s    zz""++-- 	;:	;- 	$$& 

##**,uAJJ  		%''//g> %%' 5\

""$ " %%' 5\

""$ "s   C> >AEc                 T   U R                   R                  R                  5       (       d   S5       eU R                  R	                  S5      (       a   eU R
                  R	                  S5      (       aF  U R                  R	                  S5      nU(       d   eU R
                  R	                  S5      (       a  MF  U R                  R	                  S5      (       aP  U R                  R                  5         U R
                  R	                  5         U R                  R	                  S5        g g )Nlock is not ownedF)r   r"   r   r   rJ   r   r   rK   )r;   ress     r   notifyCondition.notify#  s    zz""++--B/BB-''//6666 ''..&&..u5CJ3 ''.. ''..  ((*%%'   ((/ /r&   c                 *   U R                   R                  R                  5       (       d   S5       eU R                  R	                  S5      (       a   eU R
                  R	                  S5      (       aF  U R                  R	                  S5      nU(       d   eU R
                  R	                  S5      (       a  MF  SnU R                  R	                  S5      (       aA  U R                  R                  5         US-  nU R                  R	                  S5      (       a  MA  U(       aq  [        U5       H  nU R
                  R	                  5         M     U R                  R	                  S5      (       a$   U R                  R	                  S5      (       a  M#  g g g )Nr   Fr   r   )	r   r"   r   r   rJ   r   r   rK   r.   )r;   r   sleepersrA   s       r   
notify_allCondition.notify_all4  sD   zz""++--B/BB-''//6666 ''..&&..u5CJ3 ''.. ""**511  ((*MH ""**511 8_!!))+ % &&..u55 &&..u55 r&   c                     U" 5       nU(       a  U$ Ub  [        5       U-   nOS nS nU(       d:  Ub  U[        5       -
  nUS::  a   U$ U R                  W5        U" 5       nU(       d  M:  U$ r   )r	   r   )r;   	predicater   resultendtimewaittimes         r   wait_forCondition.wait_forK  sv    MkG+GGH""Y[0q=  IIh[F & r&   )r   r   r   r   rJ   rK   )NNr   )rl   rm   rn   ro   r   rC   r\   ra   rO   rR   r6   r   r   r   r   r   rs   rj   r&   r   r   r      s>    9

&**>%.0".r&   r   c                   :    \ rS rSrS	S jrS rS rS rS	S jrSr	g)
r   i^  Nc                     U(       d   eUR                  UR                  5       5      U l        UR                  S5      U l        g r   )r   r
   _condr   _flagr   s     r   rC   Event.__init__`  s/    
s]]388:.
]]1%
r&   c                     U R                      U R                  R                  S5      (       a$  U R                  R                  5          S S S 5        g S S S 5        g! , (       d  f       g = fNFT)r   r   rJ   rK   rL   s    r   is_setEvent.is_sete  sG    ZZzz!!%((

""$ Z 	 ZZs   <AA
A*c                     U R                      U R                  R                  S5        U R                  R                  5         U R                   R	                  5         S S S 5        g ! , (       d  f       g = fNF)r   r   rJ   rK   r   rL   s    r   set	Event.setl  sE    ZZJJu%JJ JJ!!# ZZs   AA&&
A4c                     U R                      U R                  R                  S5        S S S 5        g ! , (       d  f       g = fr   )r   r   rJ   rL   s    r   clearEvent.clearr  s%    ZZJJu% ZZs	   2
A c                    U R                      U R                  R                  S5      (       a  U R                  R                  5         OU R                   R	                  U5        U R                  R                  S5      (       a$  U R                  R                  5          S S S 5        g S S S 5        g! , (       d  f       g = fr   )r   r   rJ   rK   r   )r;   r   s     r   r   
Event.waitv  s|    ZZzz!!%((

""$

(zz!!%((

""$ Z  ZZs   BB2(B22
C )r   r   r   )
rl   rm   rn   ro   rC   r   r   r   r   rs   rj   r&   r   r   r   ^  s    &
$&
r&   r   Barrierc                       \ rS rSrSS jrS rS r\S 5       r\R                  S 5       r\S 5       r
\
R                  S	 5       r
S
rg)r   i  Nc                     U(       d   eSS K nSSKJn  U" UR                  S5      S-  5      nUR	                  5       nU R                  XX8U45        SU l        SU l        g )Nr   r   )BufferWrapperrA   r   )structheapr   calcsizer   ra   _stater   )	r;   partiesactionr   r?   r   r   wrapperconds	            r   rC   Barrier.__init__  sU    J3+#FOOC$81$<=G==?DwwGHDKDKr&   c                     Uu  U l         U l        U l        U l        U l        U R                  R                  5       R                  S5      U l        g )NrA   )_parties_action_timeoutr   _wrappercreate_memoryviewcast_arrayr`   s     r   ra   Barrier.__setstate__  s>    */(T]DL$-Z--99;@@EDKr&   c                 t    U R                   U R                  U R                  U R                  U R                  4$ r   )r   r   r   r   r   rL   s    r   r\   Barrier.__getstate__  s,    MM4<<JJ/ /r&   c                      U R                   S   $ r   r  rL   s    r   r   Barrier._state      ;;q>!r&   c                      XR                   S'   g r   r  r   s     r   r   r        "KKNr&   c                      U R                   S   $ Nr   r  rL   s    r   r   Barrier._count  r	  r&   c                      XR                   S'   g r  r  r   s     r   r   r    r  r&   )r   r  r   r   r   r   r   r   )NNN)rl   rm   rn   ro   rC   ra   r\   propertyr   setterr   rs   rj   r&   r   r   r     sj    		F
	/ 
	" 
	" 
	# 
	# 
	" 
	" 
	# 
	#r&   c                       \ rS rSrS rSrg)r   i  c                     [        S5      e)NzBarrier only supported on Py3)NotImplementedError)r;   rT   kwargss      r   rC   r     s    %&EFFr&   rj   N)rl   rm   rn   ro   rC   rs   rj   r&   r   r   r     s    	Gr&   )!r    r,   rp   r    r   r   r   _extr   r   timer	   __all__listr.   r   ry   r   rz   r   r   _multiprocessingImportErrorr   r   r   r
   r   r   r   hasattrr   rj   r&   r   <module>r     s*    
      +    "%(^ !!//""--JS/ S/lC C Dy DB7 B2GG G4y yx" "R 9i  ##)## ##PG GS  / 
	s*   $C6 6D=DDDDD