o
    tBh-                     @   sf  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 ddl	m
Z
 d dlmZ d dlmZ g dZz ejd	k rIdd
lmZ ddlmZ nd d
lmZ d dlmZ W n eya   edw ejdd dk rmeZeed\ZZejjZG dd deZG dd deZG dd deZG dd deZG dd deZ G dd deZ!G dd deZ"dS )    N)time   )assert_spawning)resource_tracker)process)util)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.   )r   r   c                   @   s^   e Zd Ze ZdddZedd Zdd Z	dd	 Z
d
d Zdd Zdd Zedd ZdS )r   Nc              	   C   s   d}|d u r*t dD ]}zt|||t || _W n	 ty"   Y q
w  ntdn	t|||||| _|| _td| jj	| jf  | 
  dd }t| | t| jjd tj| tj| jjfdd	 d S )
NFd   zcannot find name for semaphorez,created semlock with handle %s and name "%s"c                 S   s   | j   d S N)_semlock_after_fork)obj r   /var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/joblib/externals/loky/backend/synchronize.pyr   Y   s   z%SemLock.__init__.<locals>._after_forksemlockr   )exitpriority)range_SemLockr   
_make_namer   FileExistsErrornamer   debughandle_make_methodsregister_after_forkr   registerFinalize_cleanup)selfkindvaluemaxvaluer    
unlink_nowir   r   r   r   __init__?   s6   


zSemLock.__init__c                 C   s   t |  t| d d S )Nr   )r   r   
unregister)r    r   r   r   r'   d   s   zSemLock._cleanupc                 C      | j j| _| j j| _d S r   )r   acquirereleaser(   r   r   r   r#   i      
zSemLock._make_methodsc                 C   
   | j  S r   )r   r1   r3   r   r   r   	__enter__m      
zSemLock.__enter__c                 G   r5   r   )r   r2   r(   argsr   r   r   __exit__p   r7   zSemLock.__exit__c                 C   s&   t |  | j}|j}||j|j|jfS r   )r   r   r"   r)   r+   r    )r(   slhr   r   r   __getstate__s   s   zSemLock.__getstate__c                 C   s2   t j| | _td|d |d f  |   d S )Nz.recreated blocker with handle %r and name "%s"r   r   )r   _rebuildr   r   r!   r#   r(   stater   r   r   __setstate__y   s
   zSemLock.__setstate__c                   C   s   dt  ttjf S )Nz/loky-%i-%s)osgetpidnextr   _randr   r   r   r   r      s   zSemLock._make_namer   )__name__
__module____qualname__tempfile_RandomNameSequencerE   r.   staticmethodr'   r#   r6   r:   r=   rA   r   r   r   r   r   r   ;   s    
%
r   c                   @   s&   e Zd Zd	ddZdd Zdd ZdS )
r
   r   c                 C   s   t | t|t d S r   )r   r.   	SEMAPHORESEM_VALUE_MAXr(   r*   r   r   r   r.         zSemaphore.__init__c                 C   s   t jdkr	td| j S )Ndarwinz#OSX does not implement sem_getvalue)sysplatformNotImplementedErrorr   
_get_valuer3   r   r   r   	get_value   s   

zSemaphore.get_valuec                 C   s6   z| j  }W n ty   d}Y nw d| jj|f S )Nunknownz<%s(value=%s)>)r   rT   	Exception	__class__rF   rN   r   r   r   __repr__   s   zSemaphore.__repr__Nr   )rF   rG   rH   r.   rU   rY   r   r   r   r   r
      s    
r
   c                   @   s   e Zd ZdddZdd ZdS )r   r   c                 C   s   t | t|| d S r   )r   r.   rL   rN   r   r   r   r.      rO   zBoundedSemaphore.__init__c                 C   s<   z| j  }W n ty   d}Y nw d| jj|| j jf S )NrV   z<%s(value=%s, maxvalue=%s)>)r   rT   rW   rX   rF   r+   rN   r   r   r   rY      s   zBoundedSemaphore.__repr__NrZ   )rF   rG   rH   r.   rY   r   r   r   r   r      s    
r   c                       $   e Zd Z fddZdd Z  ZS )r   c                       t t| tdd d S Nr   )superr   r.   rL   r3   rX   r   r   r.         zLock.__init__c                 C   s   z3| j  rt j}t jdkr|dt j 7 }n| j  dkr&d}n| j  dkr0d}nd}W n t	y>   d}Y nw d	| j
j|f S )
N
MainThread|r   Noner   SomeOtherThreadSomeOtherProcessrV   z<%s(owner=%s)>)r   _is_miner   current_processr    	threadingcurrent_threadrT   _countrW   rX   rF   )r(   r    r   r   r   rY      s    

zLock.__repr__rF   rG   rH   r.   rY   __classcell__r   r   r_   r   r          r   c                       r[   )r	   c                    r\   r]   )r^   r	   r.   RECURSIVE_MUTEXr3   r_   r   r   r.      r`   zRLock.__init__c                 C   s   z>| j  r!t j}t jdkr|dt j 7 }| j  }n| j  dkr-d\}}n| j  dkr9d\}}nd\}}W n t	yK   d\}}Y nw d	| j
j||f S )
Nra   rb   r   )rc   r   r   )rd   nonzero)re   ro   )rV   rV   <%s(%s, %s)>)r   rf   r   rg   r    rh   ri   rj   rT   rW   rX   rF   )r(   r    countr   r   r   rY      s    



zRLock.__repr__rk   r   r   r_   r   r	      rm   r	   c                   @   sj   e Zd ZdddZdd Zdd Zdd	 Zd
d Zdd Zdd Z	dddZ
dd Zdd ZdddZdS )r   Nc                 C   s6   |pt  | _td| _td| _td| _|   d S Nr   )r	   _lockr
   _sleeping_count_woken_count_wait_semaphorer#   )r(   lockr   r   r   r.      s
   


zCondition.__init__c                 C   s   t |  | j| j| j| jfS r   )r   rs   rt   ru   rv   r3   r   r   r   r=      s   zCondition.__getstate__c                 C   s    |\| _ | _| _| _|   d S r   )rs   rt   ru   rv   r#   r?   r   r   r   rA      s   
zCondition.__setstate__c                 C   r5   r   )rs   r6   r3   r   r   r   r6      r7   zCondition.__enter__c                 G   s   | j j| S r   )rs   r:   r8   r   r   r   r:      s   zCondition.__exit__c                 C   r0   r   )rs   r1   r2   r3   r   r   r   r#      r4   zCondition._make_methodsc                 C   sH   z| j j | jj  }W n ty   d}Y nw d| jj| j|f S )NrV   rp   )rt   r   rT   ru   rW   rX   rF   rs   )r(   num_waitersr   r   r   rY     s   

zCondition.__repr__c              	   C   s   | j j s
J d| j  | j j }t|D ]}| j   qz| jd|W | j	  t|D ]}| j   q2S | j	  t|D ]}| j   qDw )Nz,must acquire() condition before using wait()T)
rs   r   rf   rt   r2   rj   r   rv   r1   ru   )r(   timeoutrq   r-   r   r   r   wait  s"   


zCondition.waitc                 C   s   | j j s
J d| jdrJ | jdr(| jd}|s"J | jds| jdr@| j  | j  | jd d S d S )Nlock is not ownedF)rs   r   rf   rv   r1   ru   rt   r2   )r(   resr   r   r   notify#  s   

zCondition.notifyc                 C   s   | j j s
J d| jdrJ | jdr(| jd}|s"J | jdsd}| jdr?| j  |d7 }| jds0|r\t|D ]}| j  qE| jdr^	 | jdsSd S d S d S )Nr{   Fr   r   )	rs   r   rf   rv   r1   ru   rt   r2   r   )r(   r|   sleepersr-   r   r   r   
notify_all4  s&   
zCondition.notify_allc                 C   sf   | }|r|S |d urt  | }nd }d }|s1|d ur'|t   }|dkr'	 |S | | | }|r|S rr   )_timerz   )r(   	predicatery   resultendtimewaittimer   r   r   wait_forK  s"   

zCondition.wait_forr   )rF   rG   rH   r.   r=   rA   r6   r:   r#   rY   rz   r}   r   r   r   r   r   r   r      s    

	r   c                   @   s6   e Zd Zdd Zdd Zdd Zdd Zdd
dZd	S )r   c                 C   s   t t | _td| _d S rr   )r   r   _condr
   _flagr3   r   r   r   r.   d  s   zEvent.__init__c                 C   sV   | j  | jdr| j  	 W d    dS 	 W d    dS 1 s$w   Y  d S NFT)r   r   r1   r2   r3   r   r   r   is_seth  s   
$zEvent.is_setc                 C   sL   | j  | jd | j  | j   W d    d S 1 sw   Y  d S NF)r   r   r1   r2   r   r3   r   r   r   seto  s
   
"z	Event.setc                 C   s8   | j  | jd W d    d S 1 sw   Y  d S r   )r   r   r1   r3   r   r   r   clearu  s   "zEvent.clearNc                 C   sz   | j 0 | jdr| j  n| j | | jdr*| j  	 W d    dS 	 W d    dS 1 s6w   Y  d S r   )r   r   r1   r2   rz   )r(   ry   r   r   r   rz   y  s   
	$z
Event.waitr   )rF   rG   rH   r.   r   r   r   rz   r   r   r   r   r   b  s    r   )#rB   rQ   rI   rh   _multiprocessingr   r   contextr    r   multiprocessingr   r   __all__version_infor   r   r   r   ImportErrorOSErrorr   listr   rn   rL   rM   objectr
   r   r   r	   r   r   r   r   r   r   <module>   s@   
N|