
    ⾙h2                     "   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	m
Z
 d dlmZ g dZ e
         e ed	            \  ZZe	j$                  j&                  Z	 e	j$                  j(                  Zd 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 eed      r G d dej@                        Z y G d d      Z y# e$ r 	 d d
lmZ n# e$ r dZY nw xY wY w xY w)    N   )context)process)util)	_billiardensure_SemLock)	monotonic)LockRLock	SemaphoreBoundedSemaphore	ConditionEvent   )
sem_unlinkc                 :    	 | j                   S # t        $ r Y y w xY wN)nameAttributeError)sls    P/var/www/Befach/backend/env/lib/python3.12/site-packages/billiard/synchronize.py_semnamer   4   s"    ww s    	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)SemLockNc                    |t         j                  j                         }|j                         }t        j
                  dk(  xs |dk(  }t        rbt        d      D ]2  }	 t        j                  |||| j                         |      x}| _         nA t        d      }	t        j                   |	_        |	t        j                  |||      x}| _        t#        j$                  d|j&                         | j)                          t        rt        j
                  dk7  rd }
t#        j*                  | |
       t-        | j                        _dd	lm}  || j                  j2                         t#        j4                  | t        j6                  | j                  j2                  fd
       y y y # t        t        f$ r*}	t        |	dd       t        j                   k7  r Y d }	~	d }	~	ww xY w)Nwin32forkd   errnozcannot find file for semaphorezcreated semlock with handle %sc                 8    | j                   j                          y r   )_semlock_after_fork)objs    r   r"   z%SemLock.__init__.<locals>._after_fork[   s    LL,,.    r   )registerr   )exitpriority)r   _default_contextget_contextget_start_methodsysplatformr   ranger   r   
_make_namer!   OSErrorIOErrorgetattrr   EEXISTr   debughandle_make_methodsregister_after_forkr   semaphore_trackerr%   r   Finalize_cleanup)selfkindvaluemaxvaluectxr   
unlink_nowir   excr"   r%   s               r   __init__zSemLock.__init__>   s   ;**668C##%\\W,>
3Z)2):):eXt/@** B    >?!LL		!*!2!24!IIB

3RYY?||w&/(({;&2 8++,dG$4$4t}}7I7I6K+,. 3   ) sGT2ellB Cs    .F))G"8GG"c                 6    ddl m} t        |         ||        y )Nr   )
unregister)r6   rC   r   )r   rC   s     r   r8   zSemLock._cleanuph   s    144r$   c                 p    | j                   j                  | _        | j                   j                  | _        y r   )r!   acquirereleaser9   s    r   r4   zSemLock._make_methodsn   s$    }},,}},,r$   c                 6    | j                   j                         S r   )r!   	__enter__rG   s    r   rI   zSemLock.__enter__r   s    }}&&((r$   c                 4     | j                   j                  | S r   )r!   __exit__r9   argss     r   rK   zSemLock.__exit__u   s    %t}}%%t,,r$   c                 V   t        j                  |        | j                  }t        j                  dk(  r.t        j
                         j                  |j                        }n|j                  }||j                  |j                  f}	 ||j                  fz  }|S # t        $ r Y |S w xY w)Nr   )r   assert_spawningr!   r*   r+   get_spawning_popenduplicate_for_childr3   r:   r<   r   r   )r9   r   hstates       r   __getstate__zSemLock.__getstate__x   s    %]]<<7"**,@@KA		ABGGR[[)	bgg[ E   		s   	B 	B('B(c                     t        j                  j                  | | _        t	        j
                  d|d          | j                          y )Nz recreated blocker with handle %rr   )r   r   _rebuildr!   r   r2   r4   r9   rS   s     r   __setstate__zSemLock.__setstate__   s9    !))22E:

5uQx@r$   c                  |    t        j                         j                  d   dt        t        j
                        S )N	semprefix-)r   current_process_confignextr   _rand r$   r   r-   zSemLock._make_name   s/    !113;;KHw}}-/ 	/r$   r   )__name__
__module____qualname__tempfile_RandomNameSequencer_   rA   staticmethodr8   r4   rI   rK   rT   rX   r-   r`   r$   r   r   r   ;   sY    (H((*E(.T  
-)-
 / /r$   r   c                        e Zd ZddZd Zd Zy)r   Nc                 H    t         j                  | t        |t        |       y Nr=   )r   rA   	SEMAPHORESEM_VALUE_MAXr9   r;   r=   s      r   rA   zSemaphore.__init__   s    y%CHr$   c                 6    | j                   j                         S r   )r!   
_get_valuerG   s    r   	get_valuezSemaphore.get_value   s    }}''))r$   c                     	 | j                   j                         }d| j                  j                  d|dS # t        $ r d}Y *w xY w)Nunknown<(value=)>)r!   ro   	Exception	__class__ra   r9   r;   s     r   __repr__zSemaphore.__repr__   sG    	MM,,.E $(>>#:#:EBB  	E	s   9 AAr   N)ra   rb   rc   rA   rp   ry   r`   r$   r   r   r      s    I*Cr$   r   c                       e Zd ZddZd Zy)r   Nc                 @    t         j                  | t        |||       y ri   r   rA   rk   rm   s      r   rA   zBoundedSemaphore.__init__   s    y%C@r$   c                     	 | j                   j                         }d| j                  j                  d|d| j                   j
                  dS # t        $ r d}Y Aw xY w)Nrr   rs   rt   z, maxvalue=ru   )r!   ro   rv   rw   ra   r<   rx   s     r   ry   zBoundedSemaphore.__repr__   sY    	MM,,.E NN##UDMM,B,BD 	D  	E	s   A AArz   )ra   rb   rc   rA   ry   r`   r$   r   r   r      s    ADr$   r   c                       e Zd ZdZddZd Zy)r
   z
    Non-recursive lock.
    Nc                 @    t         j                  | t        dd|       y Nr   rj   r}   r9   r=   s     r   rA   zLock.__init__   s    y!QC8r$   c                    	 | j                   j                         rdt        j                         j                  }t        j                         j                  dk7  rg|dt        j                         j                  z   z  }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SomeOtherProcessrr   rs   z(owner=ru   )r!   _is_miner   r\   r   	threadingcurrent_threadro   _countrv   rw   ra   )r9   r   s     r   ry   zLock.__repr__   s    	}}%%'..055++-22lBC)":":"<"A"AAAD))+q0%%'!+() $(>>#:#:DAA  	D	s   C C C-,C-r   ra   rb   rc   __doc__rA   ry   r`   r$   r   r
   r
      s    9Br$   r
   c                       e Zd ZdZddZd Zy)r   z
    Recursive lock
    Nc                 @    t         j                  | t        dd|       y r   )r   rA   RECURSIVE_MUTEXr   s     r   rA   zRLock.__init__   s    1#>r$   c                 2   	 | j                   j                         r~t        j                         j                  }t        j                         j                  dk7  r$|dt        j                         j                  z   z  }| 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)Nr   r   r   )r   r   r   )r   nonzero)r   r   )rr   rr   rs   (, ru   )r!   r   r   r\   r   r   r   r   ro   rv   rw   ra   )r9   r   counts      r   ry   zRLock.__repr__   s    	/}}%%'..055++-22lBC)":":"<"A"AAAD,,.))+q0'e%%'!+:e;e "&!8!8$FF  	/.KD%	/s   C#D DDr   r   r`   r$   r   r   r      s    ?Gr$   r   c                   X    e Zd 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   z
    Condition variable
    Nc                     |sJ |xs |j                         | _        |j                  d      | _        |j                  d      | _        |j                  d      | _        | j                          y Nr   )r   _lockr   _sleeping_count_woken_count_wait_semaphorer4   )r9   lockr=   s      r   rA   zCondition.__init__   sZ    
s(SYY[
"}}Q/MM!,"}}Q/r$   c                     t        j                  |        | j                  | j                  | j                  | j
                  fS r   )r   rO   r   r   r   r   rG   s    r   rT   zCondition.__getstate__   s:    %

D00!!4#7#79 	9r$   c                 Z    |\  | _         | _        | _        | _        | j	                          y r   )r   r   r   r   r4   rW   s     r   rX   zCondition.__setstate__   s*    49	2T)		D0r$   c                 6    | j                   j                         S r   )r   rI   rG   s    r   rI   zCondition.__enter__   s    zz##%%r$   c                 4     | j                   j                  | S r   )r   rK   rL   s     r   rK   zCondition.__exit__   s    "tzz""D))r$   c                 p    | j                   j                  | _        | j                   j                  | _        y r   )r   rE   rF   rG   s    r   r4   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)Nrr   rs   r   r   ru   )r   r!   ro   r   rv   rw   ra   r   )r9   num_waiterss     r   ry   zCondition.__repr__  sw    	$//88CCE,,55@@BCK
 NN##TZZ> 	>  	$#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   rF   r   r,   r   rE   r   )r9   timeoutr   r?   s       r   waitzCondition.wait  s    zz""++- 	;:	;- 	$$& 

##**,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   rE   r   r   rF   )r9   ress     r   notifyzCondition.notify#  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   rE   r   r   rF   r,   )r9   r   sleepersr?   s       r   
notify_allzCondition.notify_all4  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   )r	   r   )r9   	predicater   resultendtimewaittimes         r   wait_forzCondition.wait_forK  st    MkG+GGH""Y[0q=  IIh[F  r$   )NNr   )ra   rb   rc   r   rA   rT   rX   rI   rK   r4   ry   r   r   r   r   r`   r$   r   r   r      s>    9

&**>%.0".r$   r   c                   .    e Zd ZddZd Zd Zd ZddZy)r   Nc                     |sJ |j                  |j                               | _        |j                  d      | _        y r   )r   r
   _condr   _flagr   s     r   rA   zEvent.__init__`  s/    
s]]388:.
]]1%
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   rE   rF   rG   s    r   is_setzEvent.is_sete  sR    ZZ 	zz!!%(

""$	 	 		 	 	s   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   rE   rF   r   rG   s    r   setz	Event.setl  sP    ZZ 	$JJu%JJ JJ!!#	$ 	$ 	$s   AA&&A/c                 |    | j                   5  | j                  j                  d       d d d        y # 1 sw Y   y xY wr   )r   r   rE   rG   s    r   clearzEvent.clearr  s0    ZZ 	&JJu%	& 	& 	&s   2;c                 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   rE   rF   r   )r9   r   s     r   r   z
Event.waitv  s    ZZ 		zz!!%(

""$

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

""$		 		 		 		 		s   BB(B((B1r   )ra   rb   rc   rA   r   r   r   r   r`   r$   r   r   r   ^  s    &
$&
r$   r   Barrierc                       e Zd Zd	dZd Zd Zed        Zej                  d        Zed        Z	e	j                  d        Z	y)
r   Nc                     |sJ dd l }ddlm}  ||j                  d      dz        }|j	                         }| j                  |||||f       d| _        d| _        y )Nr   r   )BufferWrapperr?   r   )structheapr   calcsizer   rX   _stater   )	r9   partiesactionr   r=   r   r   wrapperconds	            r   rA   zBarrier.__init__  sY    J3+#FOOC$81$<=G==?DwwGHDKDKr$   c                     |\  | _         | _        | _        | _        | _        | j                  j                         j                  d      | _        y )Nr?   )_parties_action_timeoutr   _wrappercreate_memoryviewcast_arrayrW   s     r   rX   zBarrier.__setstate__  s>    */(T]DL$-Z--99;@@EDKr$   c                 t    | j                   | j                  | j                  | j                  | j                  fS r   )r   r   r   r   r   rG   s    r   rT   zBarrier.__getstate__  s,    MM4<<JJ/ /r$   c                      | j                   d   S r   r   rG   s    r   r   zBarrier._state      ;;q>!r$   c                 "    || j                   d<   y r   r   rx   s     r   r   zBarrier._state      "DKKNr$   c                      | j                   d   S Nr   r   rG   s    r   r   zBarrier._count  r   r$   c                 "    || j                   d<   y r   r   rx   s     r   r   zBarrier._count  r   r$   )NNN)
ra   rb   rc   rA   rX   rT   propertyr   setterr   r`   r$   r   r   r     sj    		F
	/ 
	" 
	" 
	# 
	# 
	" 
	" 
	# 
	#r$   c                       e Zd Zd Zy)r   c                     t        d      )NzBarrier only supported on Py3)NotImplementedError)r9   rM   kwargss      r   rA   zBarrier.__init__  s    %&EFFr$   N)ra   rb   rc   rA   r`   r$   r   r   r     s    	Gr$   )!r   r*   rd   r    r   r   r   _extr   r   timer	   __all__listr,   r   rk   r   rl   r   r   _multiprocessingImportErrorr   r   r   r
   r   r   r   hasattrr   r`   r$   r   <module>r      s'    
      +    "%(^ !!//""--JS/ S/lC C Dy DB7 B2GG G4y yx" "R 9i ##)## ##PG GS  / 
	s6   $C1 1D7C>=D>DDDDD