
    F\h/                        / S Qr SSKr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	5      5      u  rr\R                  R"                  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 S\R2                  5      rg! \ a	    \" S5      ef = f))LockRLock	SemaphoreBoundedSemaphore	ConditionEvent    N   )context)process)util)SemLock
sem_unlinkzThis platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770.   c                   z    \ rS rSr\R
                  " 5       rS r\S 5       r	S r
S rS rS rS r\S	 5       rS
rg)r   .   c                $   Uc  [         R                  R                  5       nUR                  5       S:H  U l        [
        R                  S:H  =(       d    U R                  n[        S5       H0  n [        R                  " XX0R                  5       U5      =opl          O   [        S5      e[        R                  " SUR                  -  5        U R!                  5         [
        R                  S:w  a  S n[        R"                  " X5        U R                  R$                  b^  SSKJn	  U	" U R                  R$                  S	5        [        R*                  " U [        R,                  U R                  R$                  4S
S9  g g ! [         a     GM#  f = f)Nforkwin32d   zcannot find name for semaphorezcreated semlock with handle %sc                 8    U R                   R                  5         g N)_semlock_after_fork)objs    2/usr/lib/python3.13/multiprocessing/synchronize.pyr   %SemLock.__init__.<locals>._after_forkG   s    ((*    r	   )register	semaphorer   )exitpriority)r
   _default_contextget_contextget_start_method_is_fork_ctxsysplatformrange_multiprocessingr   
_make_namer   FileExistsErrorr   debughandle_make_methodsregister_after_forknameresource_trackerr   Finalize_cleanup)
selfkindvaluemaxvaluectx
unlink_nowislr   r   s
             r   __init__SemLock.__init__2   sA   ;**668C002f<\\W,A0A0A
sA%5%=%=??+<&   ]   ""BCC

3bii?@<<7"+$$T7==) 3T]]''5MM$ 0 04==3E3E2G'(* * # s   /,F  
FFc                 8    SSK Jn  [        U 5        U" U S5        g )Nr	   )
unregisterr   )r0   r>   r   )r/   r>   s     r   r2   SemLock._cleanupT   s    044%r   c                 p    U R                   R                  U l        U R                   R                  U l        g r   )r   acquirereleaser3   s    r   r-   SemLock._make_methodsZ   s$    }},,}},,r   c                 6    U R                   R                  5       $ r   )r   	__enter__rC   s    r   rF   SemLock.__enter__^   s    }}&&((r   c                 4    U R                   R                  " U6 $ r   )r   __exit__r3   argss     r   rI   SemLock.__exit__a   s    }}%%t,,r   c                 b   [         R                  " U 5        U R                  n[        R                  S:X  a/  [         R
                  " 5       R                  UR                  5      nO(U R                  (       a  [        S5      eUR                  nX!R                  UR                  UR                  4$ )Nr   zA SemLock created in a fork context is being shared with a process in a spawn context. This is not supported. Please use the same context to create multiprocessing objects and Process.)r
   assert_spawningr   r%   r&   get_spawning_popenduplicate_for_childr,   r$   RuntimeErrorr4   r6   r/   )r3   r:   hs      r   __getstate__SemLock.__getstate__d   s    %]]<<7"**,@@KA  " $J K K 		A77BKK11r   c                     [         R                  R                  " U6 U l        [        R
                  " SUS   -  5        U R                  5         SU l        g )Nz recreated blocker with handle %rr   F)r(   r   _rebuildr   r   r+   r-   r$   r3   states     r   __setstate__SemLock.__setstate__r   sD    (00995A

5a@A!r   c                      [         R                  " 5       R                  S   < S[        [        R
                  5      < 3$ )N	semprefix-)r   current_process_confignextr   _rand r   r   r)   SemLock._make_namey   s/    !113;;KHw}}-/ 	/r   )r$   r   rA   rB   N)__name__
__module____qualname____firstlineno__tempfile_RandomNameSequencera   r;   staticmethodr2   r-   rF   rI   rS   rY   r)   __static_attributes__rb   r   r   r   r   .   sW    ((*E *D & &
-)-2" / /r   r   c                   *    \ rS rSrSS jrS rS rSrg)r      c                D    [         R                  " U [        U[        US9  g Nr7   )r   r;   	SEMAPHORESEM_VALUE_MAXr3   r5   r7   s      r   r;   Semaphore.__init__   s    y%CHr   c                 6    U R                   R                  5       $ r   )r   
_get_valuerC   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   rv   	Exception	__class__rd   r3   r5   s     r   __repr__Semaphore.__repr__   sG    	MM,,.E $(>>#:#:EBB  	E	s   ; A
	A
rb   Nr	   )rd   re   rf   rg   r;   rw   r   rk   rb   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      c                :    [         R                  " U [        XUS9  g ro   r   r;   rq   rs   s      r   r;   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)Nrz   r{   r|   z, maxvalue=r}   )r   rv   r~   r   rd   r6   r   s     r   r   BoundedSemaphore.__repr__   sY    	MM,,.E ''0F0FH 	H  	E	s   A A"!A"rb   Nr   rd   re   rf   rg   r;   r   rk   rb   r   r   r   r      s    AHr   r   c                        \ rS rSrS rS rSrg)r      c                <    [         R                  " U [        SSUS9  g Nr	   rp   r   r3   r7   s     r   r;   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OFU R                   R                  5       (       d  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|Noner   SomeOtherThreadSomeOtherProcessrz   r{   z(owner=r}   )r   _is_miner   r^   r/   	threadingcurrent_thread_is_zero_countr~   r   rd   )r3   r/   s     r   r   Lock.__repr__   s    	}}%%''..055++-22lBC)":":"<"A"AAAD]]++--%%'!+() $(>>#:#:DAA  	D	s$   BC. 	!C. + C. C. .C=<C=rb   Nr   rb   r   r   r   r      s    9Br   r   c                        \ rS rSrS rS rSrg)r      c                <    [         R                  " U [        SSUS9  g r   )r   r;   RECURSIVE_MUTEXr   s     r   r;   RLock.__init__   s    1#>r   c                 L    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OLU R                   R                  5       (       d  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   nonzero)r   r   )rz   rz   r{   (, r}   )r   r   r   r^   r/   r   r   r   r   r~   r   rd   )r3   r/   counts      r   r   RLock.__repr__   s    	/}}%%''..055++-22lBC)":":"<"A"AAAD,,.]]++--'e%%'!+:e;e "&!8!8$FF  	/.KD%	/s$   B D ##D "D *D D#"D#rb   Nr   rb   r   r   r   r      s    ?Gr   r   c                   f    \ 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S jrS rSS jrSrg)r      Nc                    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_semaphorer-   )r3   lockr7   s      r   r;   Condition.__init__   sS    (SYY[
"}}Q/MM!,"}}Q/r   c                     [         R                  " U 5        U R                  U R                  U R                  U R
                  4$ r   )r
   rN   r   r   r   r   rC   s    r   rS   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   r-   rW   s     r   rY   Condition.__setstate__   s*    49	2T)		D0r   c                 6    U R                   R                  5       $ r   )r   rF   rC   s    r   rF   Condition.__enter__   s    zz##%%r   c                 4    U R                   R                  " U6 $ r   )r   rI   rJ   s     r   rI   Condition.__exit__   s    zz""D))r   c                 p    U R                   R                  U l        U R                   R                  U l        g r   )r   rA   rB   rC   s    r   r-   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)Nrz   r{   r   r   r}   )r   r   rv   r   r~   r   rd   r   )r3   num_waiterss     r   r   Condition.__repr__   ss    	$//88CCE,,55@@BCK "&!8!8$**kRR  	$#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   rB   r   r'   r   rA   r   )r3   timeoutr   r9   s       r   waitCondition.wait   s    zz""++-- 	>=	>- 	$$& 

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

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

""$ "s   C> >AEc                 R   U R                   R                  R                  5       (       d   S5       eU R                  R	                  S5      (       a   S5       eU R
                  R	                  S5      (       aK  U R                  R	                  S5      nU(       d   S5       eU R
                  R	                  S5      (       a  MK  SnX1:  af  U R                  R	                  S5      (       aF  U R                  R                  5         US-  nX1:  a"  U R                  R	                  S5      (       a  MF  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 )Nzlock is not ownedFz<notify: Should not have been able to acquire _wait_semaphorez>notify: Bug in sleeping_count.acquire- res should not be Falser   r	   )	r   r   r   r   rA   r   r   rB   r'   )r3   nressleepersr9   s        r   notifyCondition.notify  sl   zz""++--B/BB-''//  	*)	*  ''..&&..u5C 8 7 83 ''..
 lt33;;EBB  ((*MH lt33;;EBB 8_!!))+ % &&..u55 &&..u55 r   c                 >    U R                  [        R                  S9  g )N)r   )r   r%   maxsizerC   s    r   
notify_allCondition.notify_all/  s    ckk"r   c                     U" 5       nU(       a  U$ Ub  [         R                  " 5       U-   nOS nS nU(       dE  Ub!  U[         R                  " 5       -
  nUS::  a   U$ U R                  W5        U" 5       nU(       d  ME  U$ r   )time	monotonicr   )r3   	predicater   resultendtimewaittimes         r   wait_forCondition.wait_for2  s    Mnn&0GGH""T^^%55q=  IIh[F & r   )r   r   r   r   rA   rB   r   r   )rd   re   rf   rg   r;   rS   rY   rF   rI   r-   r   r   r   r   r   rk   rb   r   r   r   r      s:    9

&**S%.4#r   r   c                   <    \ rS rSrS rS rS rS rS
S jrS r	S	r
g)r   iH  c                x    UR                  UR                  5       5      U l        UR                  S5      U l        g r   )r   r   _condr   _flagr   s     r   r;   Event.__init__J  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   rA   rB   rC   s    r   is_setEvent.is_setN  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   rA   rB   r   rC   s    r   set	Event.setU  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   rA   rC   s    r   clearEvent.clear[  s%    ZZJJu% ZZs	   2
A Nc                    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   rA   rB   r   )r3   r   s     r   r   
Event.wait_  s|    ZZzz!!%((

""$

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

""$ Z  ZZs   BB2(B22
C c                     U R                  5       (       a  SOSnS[        U 5      R                   S[        U 5      S SU S3$ )Nr   unsetr{   z at z#x >)r   typerf   id)r3   
set_statuss     r   r   Event.__repr__k  s?    "kkmmU
4:**+44}Aj\KKr   )r   r   r   )rd   re   rf   rg   r;   r   r   r   r   r   rk   rb   r   r   r   r   H  s!    &$&
Lr   r   c                       \ 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)Barrierir  Nc                    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	   )BufferWrapperr9   r   )structheapr   calcsizer   rY   _stater   )	r3   partiesactionr   r7   r   r   wrapperconds	            r   r;   Barrier.__init__t  sN    ' 4q 89}}7G7CDr   c                     Uu  U l         U l        U l        U l        U l        U R                  R                  5       R                  S5      U l        g )Nr9   )_parties_action_timeoutr   _wrappercreate_memoryviewcast_arrayrW   s     r   rY   Barrier.__setstate__}  s>    &+	$dm	T]mm557<<SAr   c                 t    U R                   U R                  U R                  U R                  U R                  4$ r   )r   r   r  r   r  rC   s    r   rS   Barrier.__getstate__  s,    t||T]]

DMM+ 	+r   c                      U R                   S   $ r   r  rC   s    r   r   Barrier._state      {{1~r   c                      XR                   S'   g r   r
  r   s     r   r   r        Ar   c                      U R                   S   $ Nr	   r
  rC   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  )NN)rd   re   rf   rg   r;   rY   rS   propertyr   setterr   rk   rb   r   r   r   r   r  sj    B
+   ]]    ]] r   r   )__all__r   r%   rh   r(   r    r
   r   r   r   r   ImportErrorlistr'   r   rq   rr   objectr   r   r   r   r   r   r   rb   r   r   <module>r     s     
      
44 "%(^  ((66N/f N/hC C&Hy H"B7 B2GG G4i i^%LF %LT"i "k
 	 4
 3 4 44s   B> >C