
    .Ph-                        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 n# e$ r  ed
          w xY w 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dS )    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                   ~    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dS )r   Nc                 V   d}|ct          d          D ]C}	 t          |||t                                          |          | _         n# t
          $ r Y @w xY wt          d          nt          |||||          | _        || _        t          j        d| j        j	         d| j         d           | 
                                 d }t          j        | |           t          j        | j        j        d           t          j        | t          j        | j        j        fd	
           d S )NFd   zcannot find name for semaphorezcreated semlock with handle  and name ""c                 8    | j                                          d S N)_semlock_after_fork)objs    i/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/joblib/externals/loky/backend/synchronize.pyr   z%SemLock.__init__.<locals>._after_fork[   s    L$$&&&&&    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   sv   
<3ZZ 
H 
H$,eXw/A/A/C/CZ% %DM E '   D
 &&FGGG  %T5(D*MMDM	
4=+?  	  	
 	
 	

 		' 	' 	' 	 {333 	!$-"4i@@@'"T]%7$9	
 	
 	
 	
 	
 	
s   /A
AAc                     	 t          |            n# t          $ r Y nw xY wt          j        | d           d S # t          j        | d           w xY w)Nr   )r   FileNotFoundErrorr   
unregister)r$   s    r   r+   zSemLock._cleanupg   so    	9t  	 	 	 D	
 'i88888'i8888s    9 
9 9 Ac                 J    | j         j        | _        | j         j        | _        d S r   )r   acquirereleaser,   s    r   r'   zSemLock._make_methodsr   s    },},r   c                 4    | j                                         S r   )r   r7   r9   s    r   	__enter__zSemLock.__enter__v       }$$&&&r   c                 4    | j                                         S r   )r   r8   r,   argss     r   __exit__zSemLock.__exit__y   r<   r   c                 f    t          |            | j        }|j        }||j        |j        |j        fS r   )r   r   r&   r-   r/   r$   )r,   slhs      r   __getstate__zSemLock.__getstate__|   s3    ]I27BK11r   c                     t          j        | | _        t          j        d|d         d|d          d           |                                  d S )Nzrecreated blocker with handle r   r      r   )r!   _rebuildr   r   r%   r'   r,   states     r   __setstate__zSemLock.__setstate__   s]     )51
OU1XOOE!HOOO	
 	
 	
 	r   c                  b    dt          j                     dt          t          j                   S )Nz/loky--)osgetpidnextr   _rand r   r   r"   zSemLock._make_name   s*     <	;;d7=&9&9;;;r   r   )__name__
__module____qualname__tempfile_RandomNameSequencerP   r2   staticmethodr+   r'   r;   r@   rD   rJ   r"   rQ   r   r   r   r   =   s        (H(**E$
 $
 $
 $
L 9 9 \9- - -' ' '' ' '2 2 2   < < \< < <r   r   c                   "    e Zd ZddZd Zd ZdS )r   r   c                 T    t                               | t          |t                     d S 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                                        S )Ndarwinz#OSX does not implement sem_getvalue)sysplatformNotImplementedErrorr   
_get_valuer9   s    r   	get_valuezSemaphore.get_value   s2    <8##%&KLLL}'')))r   c                     	 | j                                         }n# t          $ r d}Y nw xY wd| j        j         d| dS )Nunknown<(value=)>)r   rb   	Exception	__class__rR   r\   s     r   __repr__zSemaphore.__repr__   s^    	M,,..EE 	 	 	EEE	<4>*<<5<<<<    ++Nr   )rR   rS   rT   r2   rc   rk   rQ   r   r   r   r      sJ        @ @ @ @* * *
= = = = =r   r   c                       e Zd ZddZd ZdS )r   r   c                 J    t                               | t          ||           d S r   )r   r2   rZ   r\   s     r   r2   zBoundedSemaphore.__init__   s"    y%77777r   c                     	 | j                                         }n# t          $ r d}Y nw xY wd| j        j         d| d| j         j         dS )Nre   rf   rg   z, maxvalue=rh   )r   rb   ri   rj   rR   r/   r\   s     r   rk   zBoundedSemaphore.__repr__   s~    	M,,..EE 	 	 	EEE	3' 3 3 3 3.3 3 3	
rl   Nrm   )rR   rS   rT   r2   rk   rQ   r   r   r   r      s7        8 8 8 8
 
 
 
 
r   r   c                   $     e Zd Z fdZd Z xZS )r	   c                 X    t                                          t          dd           d S Nr   )superr2   rZ   r,   rj   s    r   r2   zLock.__init__   s%    Aq)))))r   c                    	 | j                                         rRt          j                    j        }t          j                    j        dk    r| dt          j                    j         }nB| j                                         dk    rd}n"| j                                         dk    rd}nd}n# t          $ r d}Y nw xY wd	| j
        j         d
| dS )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05+--2lBB"FFY%=%?%?%DFFD))++q00%%''!++() 	 	 	DDD	;4>*;;4;;;;s   B-B0 0B?>B?rR   rS   rT   r2   rk   __classcell__rj   s   @r   r	   r	      sG        * * * * *< < < < < < <r   r	   c                   $     e Zd Z fdZd Z xZS )r
   c                 X    t                                          t          dd           d S rs   )rt   r2   RECURSIVE_MUTEXru   s    r   r2   zRLock.__init__   s%    !Q/////r   c                    	 | j                                         rkt          j                    j        }t          j                    j        dk    r| dt          j                    j         }| j                                         }nK| j                                         dk    rd\  }}n(| j                                         dk    rd\  }}nd\  }}n# t          $ r d\  }}Y nw xY wd	| j
        j         d
| d| dS )Nrw   rx   r   )ry   r   r   )rz   nonzero)r{   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05+--2lBB"FFY%=%?%?%DFFD,,..))++q00'ee%%''!++:ee;e 	/ 	/ 	/.KD%%%	/>4>*>>T>>U>>>>s   CC C$#C$r   r   s   @r   r
   r
      sG        0 0 0 0 0? ? ? ? ? ? ?r   r
   c                   V    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dS )r   Nc                     |pt                      | _        t          d          | _        t          d          | _        t          d          | _        |                                  d S Nr   )r
   _lockr   _sleeping_count_woken_count_wait_semaphorer'   )r,   locks     r   r2   zCondition.__init__   sS    _UWW
(||%aLL(||r   c                 T    t          |            | j        | j        | j        | j        fS r   )r   r   r   r   r   r9   s    r   rD   zCondition.__getstate__   s1    J  	
 	
r   c                 d    |\  | _         | _        | _        | _        |                                  d S r   )r   r   r   r   r'   rH   s     r   rJ   zCondition.__setstate__  s;     	
J  r   c                 4    | j                                         S r   )r   r;   r9   s    r   r;   zCondition.__enter__  s    z##%%%r   c                       | j         j        | S r   )r   r@   r>   s     r   r@   zCondition.__exit__  s    "tz"D))r   c                 J    | j         j        | _        | j         j        | _        d S r   )r   r7   r8   r9   s    r   r'   zCondition._make_methods  s    z)z)r   c                     	 | j         j                                        | j        j                                        z
  }n# t          $ r d}Y nw xY wd| j        j         d| j         d| dS )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9: K  	$ 	$ 	$#KKK	$J4>*JJTZJJ;JJJJs   =A   AAc                 h   | j         j                                        s
J d            | j                                         | j         j                                        }t          |          D ]}| j                                          	 | j                            d|          | j	                                         t          |          D ]}| j                                          S # | j	                                         t          |          D ]}| 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@   J((**	: 	:9	: 	: 	:
 	$$&&& 
#**,,u 	! 	!AJ    		%'//g>> %%''' 5\\ % %
""$$$$% %%''' 5\\ % %
""$$$$%s   C+ +AD1c                    | j         j                                        s
J d            | j                            d          rJ | j                            d          r8| j                            d          }|sJ | j                            d          8| j                            d          rN| j                                         | j                                         | j                            d           d S d S )Nlock is not ownedF)r   r   r|   r   r7   r   r   r8   )r,   ress     r   notifyzCondition.notify9  s   z"++--BB/BBBB'//66666 ''.. 	&..u55CJJJ ''.. 	 ''.. 	0 ((***%%'''  ((/////	0 	0r   c                    | j         j                                        s
J d            | j                            d          rJ | j                            d          r8| j                            d          }|sJ | j                            d          8d}| j                            d          r8| j                                         |dz  }| j                            d          8|rbt          |          D ]}| j                                         | j                            d          r	 | j                            d          d S d S d S )Nr   Fr   r   )	r   r   r|   r   r7   r   r   r8   r    )r,   r   sleepersr1   s       r   
notify_allzCondition.notify_allJ  s   z"++--BB/BBBB'//66666 ''.. 	&..u55CJJJ ''.. 	 "**511 	 ((***MH "**511 	  	8__ , ,!))++++ &..u55  &..u55   	 	
 r   c                      |            }|r|S |t                      |z   }nd }d }|s;||t                      z
  }|dk    rn!|                     |            |            }|;|S r   )_timer   )r,   	predicater   resultendtimewaittimes         r   wait_forzCondition.wait_fora  s     	Mgg'GGGH 	!""UWW,q==IIhY[[F  	! r   r   )rR   rS   rT   r2   rD   rJ   r;   r@   r'   rk   r   r   r   r   rQ   r   r   r   r      s           
 
 
  & & &* * ** * *K K K% % % %00 0 0"  .     r   r   c                   .    e Zd Zd Zd Zd Zd ZddZdS )r   c                 n    t          t                                | _        t          d          | _        d S r   )r   r	   _condr   _flagr9   s    r   r2   zEvent.__init__z  s&    tvv&&
q\\


r   c                     | j         5  | j                            d          r'| j                                         	 d d d            dS 	 d d d            dS # 1 swxY w Y   d S NFT)r   r   r7   r8   r9   s    r   is_setzEvent.is_set~  s    Z 	 	z!!%(( 
""$$$	 	 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   5A
AAAc                     | j         5  | j                            d           | j                                         | j                                          d d d            d S # 1 swxY w Y   d S NF)r   r   r7   r8   r   r9   s    r   setz	Event.set  s    Z 	$ 	$Ju%%%J   J!!###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   AA""A&)A&c                 z    | j         5  | j                            d           d d d            d S # 1 swxY w Y   d S r   )r   r   r7   r9   s    r   clearzEvent.clear  s    Z 	& 	&Ju%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   044Nc                 f   | j         5  | j                            d          r| j                                         n| j                             |           | j                            d          r'| j                                         	 d d d            dS 	 d d d            dS # 1 swxY w Y   d S r   )r   r   r7   r8   r   )r,   r   s     r   r   z
Event.wait  s   Z 		 		z!!%(( )
""$$$$
(((z!!%(( 
""$$$		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		s   BB&B&&B*-B*r   )rR   rS   rT   r2   r   r   r   r   rQ   r   r   r   r   y  sd        " " "  $ $ $& & &
 
 
 
 
 
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      sT   
			 



                ) ) ) ) ) ) ) ) 3 3 3 3 3 3        	444444+++++++   
+	%   #U1XX  (6O< O< O< O< O< O< O< O<n= = = = = = = =,
 
 
 
 
y 
 
 
(< < < < <7 < < <4? ? ? ? ?G ? ? ?6~ ~ ~ ~ ~ ~ ~ ~L                   s   A A