
    sKg-                     z   d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZm	Z	 d dl
mZ ddlmZ g dZ	 d dlmZ d d	lmZ  ed      \  ZZej                  j,                  Z G d d      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d      Z G d d      Zy# e$ r	  ed
      w xY w)    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                   t    e Zd Z ej                         Zd
dZed        Zd Z	d Z
d Zd Zd Zed	        Zy)r   Nc                 z   d}|Ct        d      D ]*  }	 t        |||t        j                         |      | _         n  t        d      t        |||||      | _        || _        t        j                  d| j                  j                   d| j                   d       | j                          d }t        j                  | |       t        j                  | j                  j                  d       t        j                  | t        j                  | j                  j                  fd	
       y # t
        $ r Y )w xY w)NFd   zcannot find name for semaphorezcreated semlock with handle  and name ""c                 8    | j                   j                          y N)_semlock_after_fork)objs    m/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/joblib/externals/loky/backend/synchronize.pyr   z%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__zSemLock.__init__A   s   
<3Z$,eXw/A/A/CZ%DM    &&FGG$T5(D*MDM	

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

 		' 	  {3 	!!$--"4"4i@'""T]]%7%7$9	
1 ' s   &D--	D:9D:c                     	 t        |        t        j                  | d       y # t        $ r Y "w xY w# t        j                  | d       w xY w)Nr   )r   FileNotFoundErrorr   
unregister)r$   s    r   r+   zSemLock._cleanupg   sJ    	9t ''i8 ! 	 	
 ''i8s   $ 	03 03 Ac                 p    | j                   j                  | _        | j                   j                  | _        y r   )r   acquirereleaser,   s    r   r'   zSemLock._make_methodsr   s$    }},,}},,r   c                 6    | j                   j                         S r   )r   r7   r9   s    r   	__enter__zSemLock.__enter__v       }}$$&&r   c                 6    | j                   j                         S r   )r   r8   r,   argss     r   __exit__zSemLock.__exit__y   r<   r   c                     t        |        | j                  }|j                  }||j                  |j                  |j
                  fS r   )r   r   r&   r-   r/   r$   )r,   slhs      r   __getstate__zSemLock.__getstate__|   s7    ]]II277BKK11r   c                     t        j                  | | _        t        j                  d|d   d|d    d       | j                          y )Nzrecreated blocker with handle r   r      r   )r!   _rebuildr   r   r%   r'   r,   states     r   __setstate__zSemLock.__setstate__   sH     ))51

,U1XLE!H:QO	
 	r   c                  d    dt        j                          dt        t        j                         S )Nz/loky--)osgetpidnextr   _rand r   r   r"   zSemLock._make_name   s'     		}Ad7==&9%:;;r   r   )__name__
__module____qualname__tempfile_RandomNameSequencerP   r2   staticmethodr+   r'   r;   r@   rD   rJ   r"   rQ   r   r   r   r   =   sY    (H((*E$
L 9 9-''2 < <r   r   c                        e Zd ZddZd Zd Zy)r   c                 D    t         j                  | t        |t               y r   )r   r2   	SEMAPHORESEM_VALUE_MAXr,   r.   s     r   r2   zSemaphore.__init__   s    y%?r   c                 r    t         j                  dk(  rt        d      | j                  j	                         S )Ndarwinz#OSX does not implement sem_getvalue)sysplatformNotImplementedErrorr   
_get_valuer9   s    r   	get_valuezSemaphore.get_value   s-    <<8#%&KLL}}''))r   c                     	 | j                   j                         }d| j                  j                   d| dS # t        $ r d}Y *w xY w)Nunknown<(value=)>)r   rb   	Exception	__class__rR   r\   s     r   __repr__zSemaphore.__repr__   sQ    	MM,,.E 4>>**+75'<<  	E	s   9 AANr   )rR   rS   rT   r2   rc   rk   rQ   r   r   r   r      s    @*
=r   r   c                       e Zd ZddZd Zy)r   c                 <    t         j                  | t        ||       y r   )r   r2   rZ   r\   s     r   r2   zBoundedSemaphore.__init__   s    y%7r   c                     	 | j                   j                         }d| j                  j                   d| d| j                   j
                   dS # t        $ r d}Y Aw xY w)Nre   rf   rg   z, maxvalue=rh   )r   rb   ri   rj   rR   r/   r\   s     r   rk   zBoundedSemaphore.__repr__   sj    	MM,,.E ''(w 7../r3	
  	E	s   A AANrl   )rR   rS   rT   r2   rk   rQ   r   r   r   r      s    8
r   r   c                   $     e Zd Z fdZd Z xZS )r	   c                 0    t         |   t        dd       y Nr   )superr2   rZ   r,   rj   s    r   r2   zLock.__init__   s    Aq)r   c                    	 | j                   j                         rct        j                         j                  }t        j                         j                  dk7  rf| dt        j                         j                   }nB| j                   j                         dk(  rd}n"| j                   j                         dkD  rd}nd}d	| j                  j                   d
| dS # t        $ r d}Y *w xY w)N
MainThread|r   Noner   SomeOtherThreadSomeOtherProcessre   rf   z(owner=rh   )r   _is_miner   current_processr$   	threadingcurrent_threadrb   _countri   rj   rR   )r,   r$   s     r   rk   zLock.__repr__   s    	}}%%'..055++-22lB"V1Y%=%=%?%D%D$EFD))+q0%%'!+() 4>>**+74&;;  	D	s   B?C C,+C,rR   rS   rT   r2   rk   __classcell__rj   s   @r   r	   r	      s    *<r   r	   c                   $     e Zd Z fdZd Z xZS )r
   c                 0    t         |   t        dd       y rr   )rs   r2   RECURSIVE_MUTEXrt   s    r   r2   zRLock.__init__   s    !Q/r   c                 0   	 | j                   j                         r}t        j                         j                  }t        j                         j                  dk7  r#| dt        j                         j                   }| j                   j                         }nK| j                   j                         dk(  rd\  }}n(| j                   j                         dkD  rd\  }}nd\  }}d	| j                  j                   d
| d| dS # t        $ r d\  }}Y 0w xY w)Nrv   rw   r   )rx   r   r   )ry   nonzero)rz   r   )re   re   rf   (, rh   )r   r{   r   r|   r$   r}   r~   r   rb   ri   rj   rR   )r,   r$   counts      r   rk   zRLock.__repr__   s    	/}}%%'..055++-22lB"V1Y%=%=%?%D%D$EFD,,.))+q0'e%%'!+:e;e 4>>**+1TF"UG2>>  	/.KD%	/s   C"D DDr   r   s   @r   r
   r
      s    0?r   r
   c                   T    e 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dZy)r   Nc                     |xs
 t               | _        t        d      | _        t        d      | _        t        d      | _        | j                          y Nr   )r
   _lockr   _sleeping_count_woken_count_wait_semaphorer'   )r,   locks     r   r2   zCondition.__init__   s?    _UW
(|%aL(|r   c                 t    t        |        | j                  | j                  | j                  | j                  fS r   )r   r   r   r   r   r9   s    r   rD   zCondition.__getstate__   s6    JJ    	
 	
r   c                 Z    |\  | _         | _        | _        | _        | j	                          y r   )r   r   r   r   r'   rH   s     r   rJ   zCondition.__setstate__  s/     	
J  r   c                 6    | j                   j                         S r   )r   r;   r9   s    r   r;   zCondition.__enter__  s    zz##%%r   c                 4     | j                   j                  | S r   )r   r@   r>   s     r   r@   zCondition.__exit__  s    "tzz""D))r   c                 p    | j                   j                  | _        | j                   j                  | _        y r   )r   r7   r8   r9   s    r   r'   zCondition._make_methods  s$    zz))zz))r   c                    	 | j                   j                  j                         | j                  j                  j                         z
  }d| j
                  j                   d| j                   d| dS # t        $ r d}Y 7w xY w)Nre   rf   r   r   rh   )r   r   rb   r   ri   rj   rR   r   )r,   num_waiterss     r   rk   zCondition.__repr__  s    	$$$--88:##,,779:  4>>**+1TZZL;-rJJ  	$#K	$s   A	A5 5BBc                 |   | j                   j                  j                         sJ d       | j                  j	                          | j                   j                  j                         }t        |      D ]  }| j                   j	                           	 | j                  j                  d|      | j                  j	                          t        |      D ]  }| j                   j                           S # | j                  j	                          t        |      D ]  }| j                   j                           w xY w)Nz,must acquire() condition before using wait()T)
r   r   r{   r   r8   r   r    r   r7   r   )r,   timeoutr   r1   s       r   waitzCondition.wait!  s    JJ((*	:9	:* 	$$& 

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

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

""$ "s   C5 5AD;c                    | j                   j                  j                         sJ d       | j                  j	                  d      rJ | j
                  j	                  d      r;| j                  j	                  d      }|sJ | j
                  j	                  d      r;| j                  j	                  d      rP| j                  j                          | j
                  j	                          | j                  j	                  d       y y )Nlock is not ownedF)r   r   r{   r   r7   r   r   r8   )r,   ress     r   notifyzCondition.notify9  s    zz""++-B/BB-''//666 ''.&&..u5CJ3 ''. ''.  ((*%%'   ((/ /r   c                    | j                   j                  j                         sJ d       | j                  j	                  d      rJ | j
                  j	                  d      r;| j                  j	                  d      }|sJ | j
                  j	                  d      r;d}| j                  j	                  d      r;| j                  j                          |dz  }| j                  j	                  d      r;|rdt        |      D ]  }| j
                  j	                           | j                  j	                  d      r	 | j                  j	                  d      ry y y )Nr   Fr   r   )	r   r   r{   r   r7   r   r   r8   r    )r,   r   sleepersr1   s       r   
notify_allzCondition.notify_allJ  s,   zz""++-B/BB-''//666 ''.&&..u5CJ3 ''. ""**51  ((*MH ""**51 8_!!))+ % &&..u5 &&..u5 r   c                      |       }|r|S |t               |z   }nd }d }|s2||t               z
  }|dk  r	 |S | j                          |       }|s2|S r   )_timer   )r,   	predicater   resultendtimewaittimes         r   wait_forzCondition.wait_fora  st    Mg'GGH""UW,q=  IIh[F  r   r   )rR   rS   rT   r2   rD   rJ   r;   r@   r'   rk   r   r   r   r   rQ   r   r   r   r      s:    
&**K%00".r   r   c                   ,    e Zd Zd Zd Zd Zd ZddZy)r   c                 T    t        t                     | _        t        d      | _        y r   )r   r	   _condr   _flagr9   s    r   r2   zEvent.__init__z  s    tv&
q\
r   c                     | j                   5  | j                  j                  d      r$| j                  j                          	 d d d        y	 d d d        y# 1 sw Y   y xY wNFT)r   r   r7   r8   r9   s    r   is_setzEvent.is_set~  sD    ZZzz!!%(

""$ Z 	 ZZs   7AAA c                     | j                   5  | j                  j                  d       | j                  j                          | j                   j	                          d d d        y # 1 sw Y   y xY wNF)r   r   r7   r8   r   r9   s    r   setz	Event.set  sE    ZZJJu%JJ JJ!!# ZZs   AA&&A/c                 |    | j                   5  | j                  j                  d       d d d        y # 1 sw Y   y xY wr   )r   r   r7   r9   s    r   clearzEvent.clear  s%    ZZJJu% ZZs   2;Nc                 h   | j                   5  | j                  j                  d      r| j                  j                          n| j                   j	                  |       | j                  j                  d      r$| j                  j                          	 d d d        y	 d d d        y# 1 sw Y   y xY wr   )r   r   r7   r8   r   )r,   r   s     r   r   z
Event.wait  sv    ZZzz!!%(

""$

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

""$ Z  ZZs   BB(B((B1r   )rR   rS   rT   r2   r   r   r   r   rQ   r   r   r   r   y  s    "$&
r   r   )rM   r_   rU   r}   _multiprocessingr   r   multiprocessingr   r   multiprocessing.contextr    r   __all__r   r!   r   ImportErrorr    r   rZ   r[   r   r   r	   r
   r   r   rQ   r   r   <module>r      s    
 
     ) 3 	4+ #1X  ((66O< O<n= =,
y 
(<7 <4?G ?6~ ~L   c
  
	% s   B, ,B: