
    7Th-                     |   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J	r	  S SK
Jr  SSKJr  / SQr S SKJr  S S	KJr  \" S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g! \ a	    \" S
5      ef = f)    N)time)processutil)assert_spawning   )resource_tracker)LockRLock	SemaphoreBoundedSemaphore	ConditionEvent)SemLock)
sem_unlinkzThis platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770.   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)r   =   Nc                 z   SnUcC  [        S5       H)  n [        XU[        R                  5       U5      U l          O   [        S5      e[        XX4U5      U l        X@l        [        R                  " SU R                  R                   SU R                   S35        U R                  5         S n[        R                  " X5        [        R                  " U R                  R                  S5        [        R                  " U [        R                  U R                  R                  4S	S
9  g ! [
         a     GM(  f = f)NFd   zcannot find name for semaphorezcreated semlock with handle  and name ""c                 8    U R                   R                  5         g N)_semlock_after_fork)objs    a/var/www/auris/envauris/lib/python3.13/site-packages/joblib/externals/loky/backend/synchronize.pyr   %SemLock.__init__.<locals>._after_fork[   s    LL$$&    semlockr   )exitpriority)range_SemLockr   
_make_namer   FileExistsErrornamer   debughandle_make_methodsregister_after_forkr   registerFinalize_cleanup)selfkindvaluemaxvaluer&   
unlink_now_r   s           r   __init__SemLock.__init__A   s   
<3Z$,Xw/A/A/CZ%DM    &&FGG$T(*MDM	

*4==+?+?*@ A		{!	

 		' 	  3 	!!$--"4"4i@'""T]]%7%7$9	
1 ' s   %D++
D:9D:c                      [        U 5        [        R                  " U S5        g ! [         a     N$f = f! [        R                  " U S5        f = f)Nr    )r   FileNotFoundErrorr   
unregister)r&   s    r   r-   SemLock._cleanupg   sJ    	9t ''i8 ! 	 	
 ''i8s   % 
25 25 Ac                 p    U R                   R                  U l        U R                   R                  U l        g r   )r   acquirereleaser.   s    r   r)   SemLock._make_methodsr   s$    }},,}},,r   c                 6    U R                   R                  5       $ r   )r   r;   r=   s    r   	__enter__SemLock.__enter__v       }}$$&&r   c                 6    U R                   R                  5       $ r   )r   r<   r.   argss     r   __exit__SemLock.__exit__y   rB   r   c                     [        U 5        U R                  nUR                  nX!R                  UR                  UR
                  4$ r   )r   r   r(   r/   r1   r&   )r.   slhs      r   __getstate__SemLock.__getstate__|   s5    ]]II77BKK11r   c                     [         R                  " U6 U l        [        R                  " SUS   < SUS    S35        U R                  5         g )Nzrecreated blocker with handle r   r      r   )r#   _rebuildr   r   r'   r)   r.   states     r   __setstate__SemLock.__setstate__   sH     ))51

,U1XLE!H:QO	
 	r   c                  f    S[         R                  " 5        S[        [        R                  5       3$ )Nz/loky--)osgetpidnextr   _rand r   r   r$   SemLock._make_name   s'     		}Ad7==&9%:;;r   )r   r;   r&   r<   r   )__name__
__module____qualname____firstlineno__tempfile_RandomNameSequencerY   r4   staticmethodr-   r)   r@   rF   rK   rR   r$   __static_attributes__rZ   r   r   r   r   =   sW    ((*E$
L 9 9-''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[        5        g r   )r   r4   	SEMAPHORESEM_VALUE_MAXr.   r0   s     r   r4   Semaphore.__init__   s    y%?r   c                 t    [         R                  S:X  a  [        S5      eU R                  R	                  5       $ )Ndarwinz#OSX does not implement sem_getvalue)sysplatformNotImplementedErrorr   
_get_valuer=   s    r   	get_valueSemaphore.get_value   s-    <<8#%&KLL}}''))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   rp   	Exception	__class__r\   ri   s     r   __repr__Semaphore.__repr__   sQ    	MM,,.E 4>>**+75'<<  	E	s   9 AArZ   Nr   )r\   r]   r^   r_   r4   rq   rz   rc   rZ   r   r   r   r      s    @*
=r   r   c                   $    \ rS rSrSS jrS rSrg)r      c                 :    [         R                  U [        X5        g r   )r   r4   rg   ri   s     r   r4   BoundedSemaphore.__init__   s    y%7r   c                      U R                   R                  5       nSU R                  R                   SU SU R                   R
                   S3$ ! [         a    Sn NBf = f)Nrt   ru   rv   z, maxvalue=rw   )r   rp   rx   ry   r\   r1   ri   s     r   rz   BoundedSemaphore.__repr__   sj    	MM,,.E ''(w 7../r3	
  	E	s   A AArZ   Nr|   )r\   r]   r^   r_   r4   rz   rc   rZ   r   r   r   r      s    8
r   r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )r	      c                 0   > [         TU ]  [        SS5        g Nr   )superr4   rg   r.   ry   s    r   r4   Lock.__init__   s    Aq)r   c                     U R                   R                  5       (       ag  [        R                  " 5       R                  n[
        R                  " 5       R                  S:w  a$  U S[
        R                  " 5       R                   3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SomeOtherProcessrt   ru   z(owner=rw   )r   _is_miner   current_processr&   	threadingcurrent_threadrp   _countrx   ry   r\   )r.   r&   s     r   rz   Lock.__repr__   s    	}}%%''..055++-22lB"V1Y%=%=%?%D%D$EFD))+q0%%'!+() 4>>**+74&;;  	D	s$   BC*  C* ) C* 
C* *C98C9rZ   r\   r]   r^   r_   r4   rz   rc   __classcell__ry   s   @r   r	   r	      s    *< <r   r	   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )r
      c                 0   > [         TU ]  [        SS5        g r   )r   r4   RECURSIVE_MUTEXr   s    r   r4   RLock.__init__   s    !Q/r   c                 B    U R                   R                  5       (       a  [        R                  " 5       R                  n[
        R                  " 5       R                  S:w  a$  U S[
        R                  " 5       R                   3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 N0f = f)Nr   r   r   )r   r   r   )r   nonzero)r   r   )rt   rt   ru   (, rw   )r   r   r   r   r&   r   r   r   rp   rx   ry   r\   )r.   r&   counts      r   rz   RLock.__repr__   s    	/}}%%''..055++-22lB"V1Y%=%=%?%D%D$EFD,,.))+q0'e%%'!+:e;e 4>>**+1TF"UG2>>  	/.KD%	/s$   BD ""D "D (D DDrZ   r   r   s   @r   r
   r
      s    0? ?r   r
   c                   b    \ 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      Nc                     U=(       d
    [        5       U l        [        S5      U l        [        S5      U l        [        S5      U l        U R                  5         g Nr   )r
   _lockr   _sleeping_count_woken_count_wait_semaphorer)   )r.   locks     r   r4   Condition.__init__   s?    _UW
(|%aL(|r   c                 t    [        U 5        U R                  U R                  U R                  U R                  4$ r   )r   r   r   r   r   r=   s    r   rK   Condition.__getstate__   s6    JJ    	
 	
r   c                 Z    Uu  U l         U l        U l        U l        U R	                  5         g r   )r   r   r   r   r)   rP   s     r   rR   Condition.__setstate__  s/     	
J  r   c                 6    U R                   R                  5       $ r   )r   r@   r=   s    r   r@   Condition.__enter__  s    zz##%%r   c                 4    U R                   R                  " U6 $ r   )r   rF   rD   s     r   rF   Condition.__exit__  s    zz""D))r   c                 p    U R                   R                  U l        U R                   R                  U l        g r   )r   r;   r<   r=   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 N8f = f)Nrt   ru   r   r   rw   )r   r   rp   r   rx   ry   r\   r   )r.   num_waiterss     r   rz   Condition.__repr__  s    	$$$--88:##,,779:  4>>**+1TZZL;-rJJ  	$#K	$s   A	A5 5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   r<   r   r"   r   r;   r   )r.   timeoutr   r3   s       r   waitCondition.wait!  s    JJ((**	:9	:* 	$$& 

##**,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   r;   r   r   r<   )r.   ress     r   notifyCondition.notify9  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   r;   r   r   r<   r"   )r.   r   sleepersr3   s       r   
notify_allCondition.notify_allJ  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   )_timer   )r.   	predicater   resultendtimewaittimes         r   wait_forCondition.wait_fora  sv    Mg'GGH""UW,q=  IIh[F & r   )r   r   r   r   r;   r<   r   )r\   r]   r^   r_   r4   rK   rR   r@   rF   r)   rz   r   r   r   r   rc   rZ   r   r   r   r      s:    
&**K%00".r   r   c                   6    \ rS rSrS rS rS rS rS	S jrSr	g)
r   iy  c                 T    [        [        5       5      U l        [        S5      U l        g r   )r   r	   _condr   _flagr=   s    r   r4   Event.__init__z  s    tv&
q\
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   r;   r<   r=   s    r   is_setEvent.is_set~  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   r;   r<   r   r=   s    r   set	Event.set  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   r;   r=   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   r;   r<   r   )r.   r   s     r   r   
Event.wait  s|    ZZzz!!%((

""$

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

""$ Z  ZZs   BB2(B22
C )r   r   r   )
r\   r]   r^   r_   r4   r   r   r   r   rc   rZ   r   r   r   r   y  s    "$&
r   r   )rV   rm   r`   r   _multiprocessingr   r   multiprocessingr   r   multiprocessing.contextr    r   __all__r   r#   r   ImportErrorr"   r   rg   rh   r   r   r	   r
   r   r   rZ   r   r   <module>r      s    
 
     ) 3 	4+ #1X  ((66O< O<n= =,
y 
(<7 <4?G ?6~ ~L   c
  
	% s   B, ,B;