
    Sf2                     D   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n # e$ r 	 d d
lmZ n# e$ r dZY nw xY wY nw xY w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 dS  G d d          Z dS )    N   )context)process)util)	_billiardensure_SemLock)	monotonic)LockRLock	SemaphoreBoundedSemaphore	ConditionEvent   )
sem_unlinkc                 4    	 | j         S # t          $ r Y d S w xY wN)nameAttributeError)sls    F/var/www/html/env/lib/python3.11/site-packages/billiard/synchronize.py_semnamer   4   s0    w   s   	 
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 )SemLockNc                    |t           j                                        }|                                }t          j        dk    p|dk    }t          rt          d          D ]s}	 t          j	        |||| 
                                |          x}| _         n`# t          t          f$ r*}	t          |	dd           t          j        k    r Y d }	~	ld }	~	ww xY wt          d          }	t          j        |	_        |	nt          j	        |||          x}| _        t#          j        d|j                   |                                  t          rt          j        dk    rd }
t#          j        | |
           t-          | j                  Ldd	lm}  || j        j                   t#          j        | t          j        | j        j        fd
           d S d S d S )Nwin32forkd   errnozcannot find file for semaphorezcreated semlock with handle %sc                 8    | j                                          d S r   )_semlock_after_fork)objs    r   r"   z%SemLock.__init__.<locals>._after_fork[   s    L,,.....    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88C##%%\W,>
 	J3ZZ  )2):eXt/@/@** * B E	  )   sGT22elBB CBBBB >??!L			  "+!24!I!IIB
3RY??? 	.|w&&/ / /({;;;&&2 877777+,,,dG$4t}7I6K+,. . . . . .	. 	. 32s   $1BC( CCc                 F    ddl m} t          |             ||            d S )Nr   )
unregister)r6   rC   r   )r   rC   s     r   r8   zSemLock._cleanuph   s8    1111114
4r$   c                 J    | j         j        | _        | j         j        | _        d S r   )r!   acquirereleaser9   s    r   r4   zSemLock._make_methodsn   s    },},r$   c                 4    | j                                         S r   )r!   	__enter__rG   s    r   rI   zSemLock.__enter__r   s    }&&(((r$   c                       | j         j        | S r   )r!   __exit__r9   argss     r   rK   zSemLock.__exit__u   s    %t}%t,,r$   c                    t          j        |            | j        }t          j        dk    r,t          j                                        |j                  }n|j        }||j        |j	        f}	 ||j
        fz  }n# t          $ r Y nw xY w|S )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""*,,@@KKAA	ABGR[)	bg[ EE 	 	 	D	s   /A; ;
BBc                     t          j        j        | | _        t	          j        d|d                    |                                  d S )Nz recreated blocker with handle %rr   )r   r   _rebuildr!   r   r2   r4   r9   rS   s     r   __setstate__zSemLock.__setstate__   sC    !)2E:
5uQx@@@r$   c                  v    t          j                    j        d         dt          t          j                  S )N	semprefix-)r   current_process_confignextr   _rand r$   r   r-   zSemLock._make_name   s6    !133;KHHHw}---/ 	/r$   r   )__name__
__module____qualname__tempfile_RandomNameSequencer_   rA   staticmethodr8   r4   rI   rK   rT   rX   r-   r`   r$   r   r   r   ;   s        (H(**E(. (. (. (.T   \
- - -) ) )- - -    
 / / \/ / /r$   r   c                   "    e Zd ZddZd Zd ZdS )r   r   Nc                 X    t                               | t          |t          |           d S Nr=   )r   rA   	SEMAPHORESEM_VALUE_MAXr9   r;   r=   s      r   rA   zSemaphore.__init__   s'    y%CHHHHHr$   c                 4    | j                                         S r   )r!   
_get_valuerG   s    r   	get_valuezSemaphore.get_value   s    }'')))r$   c                     	 | j                                         }n# t          $ r d}Y nw xY wd| j        j        d|dS )Nunknown<(value=)>)r!   ro   	Exception	__class__ra   r9   r;   s     r   __repr__zSemaphore.__repr__   s[    	M,,..EE 	 	 	EEE	#'>#:#:#:EEEBB    ++r   N)ra   rb   rc   rA   rp   ry   r`   r$   r   r   r      sO        I I I I* * *C C C C Cr$   r   c                       e Zd ZddZd ZdS )r   r   Nc                 N    t                               | t          |||           d S ri   r   rA   rk   rm   s      r   rA   zBoundedSemaphore.__init__   s'    y%C@@@@@r$   c                     	 | j                                         }n# t          $ r d}Y nw xY wd| j        j        d|d| j         j        dS )Nrr   rs   rt   z, maxvalue=ru   )r!   ro   rv   rw   ra   r<   rx   s     r   ry   zBoundedSemaphore.__repr__   sp    	M,,..EE 	 	 	EEE	 N###UUUDM,B,B,BD 	Drz   r{   )ra   rb   rc   rA   ry   r`   r$   r   r   r      s@        A A A AD D D D Dr$   r   c                        e Zd ZdZddZd ZdS )r
   z
    Non-recursive lock.
    Nc                 N    t                               | t          dd|           d S Nr   rj   r~   r9   r=   s     r   rA   zLock.__init__   s'    y!QC88888r$   c                    	 | j                                         rSt          j                    j        }t          j                    j        dk    r|dt          j                    j        z   z  }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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05+--2lBBC)":"<"<"AAAD))++q00%%''!++() 	 	 	DDD	#'>#:#:#:DDDAAs   B.B1 1C ?C r   ra   rb   rc   __doc__rA   ry   r`   r$   r   r
   r
      sF         9 9 9 9B B B B Br$   r
   c                        e Zd ZdZddZd ZdS )r   z
    Recursive lock
    Nc                 N    t                               | t          dd|           d S r   )r   rA   RECURSIVE_MUTEXr   s     r   rA   zRLock.__init__   s'    1#>>>>>r$   c                    	 | j                                         rlt          j                    j        }t          j                    j        dk    r|dt          j                    j        z   z  }| 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 )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05+--2lBBC)":"<"<"AAAD,,..))++q00'ee%%''!++:ee;e 	/ 	/ 	/.KD%%%	/!%!8!8!8$$$FFs   CC C%$C%r   r   r`   r$   r   r   r      sF         ? ? ? ?G G G G Gr$   r   c                   Z    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dS )r   z
    Condition variable
    Nc                    |sJ |p|                                 | _        |                    d          | _        |                    d          | _        |                    d          | _        |                                  d S Nr   )r   _lockr   _sleeping_count_woken_count_wait_semaphorer4   )r9   lockr=   s      r   rA   zCondition.__init__   ss    

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__   s2    %%%
D0!4#79 	9r$   c                 d    |\  | _         | _        | _        | _        |                                  d S r   )r   r   r   r   r4   rW   s     r   rX   zCondition.__setstate__   s6    49	2T)		D0r$   c                 4    | j                                         S r   )r   rI   rG   s    r   rI   zCondition.__enter__   s    z##%%%r$   c                       | j         j        | S r   )r   rK   rL   s     r   rK   zCondition.__exit__   s    "tz"D))r$   c                 J    | j         j        | _        | j         j        | _        d S r   )r   rE   rF   rG   s    r   r4   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 )Nrr   rs   r   r   ru   )r   r!   ro   r   rv   rw   ra   r   )r9   num_waiterss     r   ry   zCondition.__repr__  s    	$/8CCEE,5@@BBCKK 	$ 	$ 	$#KKK	$ N###TZZZ> 	>s   =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   rF   r   r,   r   rE   r   )r9   timeoutr   r?   s       r   waitzCondition.wait  s>   z"++-- 	; 	;:	; 	;- 	$$&&& 
#**,,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   rE   r   r   rF   )r9   ress     r   notifyzCondition.notify#  s   z"++--BB/BBB-'//66666 ''.. 	&..u55CJJ3 ''.. 	 ''.. 	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   rE   r   r   rF   r,   )r9   r   sleepersr?   s       r   
notify_allzCondition.notify_all4  s   z"++--BB/BBB-'//66666 ''.. 	&..u55CJJ3 ''.. 	 "**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   )r	   r   )r9   	predicater   resultendtimewaittimes         r   wait_forzCondition.wait_forK  s     	MkkG+GGGH 	!""Y[[0q==IIhY[[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 9 9
  
& & &* * ** * *> > >% % % %.0 0 0"  .     r$   r   c                   0    e Zd ZddZd Zd Zd ZddZdS )r   Nc                     |sJ |                     |                                          | _        |                    d          | _        d S r   )r   r
   _condr   _flagr   s     r   rA   zEvent.__init__`  s=    

s]]388::..
]]1%%


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   rE   rF   rG   s    r   is_setzEvent.is_sete  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   rE   rF   r   rG   s    r   setz	Event.setl  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   rE   rG   s    r   clearzEvent.clearr  s    Z 	& 	&Ju%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   044c                 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   rE   rF   r   )r9   r   s     r   r   z
Event.waitv  s   Z 		 		z!!%(( )
""$$$$
(((z!!%(( 
""$$$		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		s   BB&B&&B*-B*r   )ra   rb   rc   rA   r   r   r   r   r`   r$   r   r   r   ^  si        & & & &
  $ $ $& & &
 
 
 
 
 
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	dS )
r   Nc                     |sJ dd l }ddlm}  ||                    d          dz            }|                                }|                     |||||f           d| _        d| _        d S )Nr   r   )BufferWrapperr?   r   )structheapr   calcsizer   rX   _stater   )	r9   partiesactionr   r=   r   r   wrapperconds	            r   rA   zBarrier.__init__  s    JJ3MMM++++++#mFOOC$8$81$<==G==??DwwGHHHDKDKKKr$   c                     |\  | _         | _        | _        | _        | _        | j                                                            d          | _        d S )Nr?   )_parties_action_timeoutr   _wrappercreate_memoryviewcast_arrayrW   s     r   rX   zBarrier.__setstate__  sF    */(T]DL$-Z-99;;@@EEDKKKr$   c                 B    | j         | j        | j        | j        | j        fS r   )r   r   r   r   r   rG   s    r   rT   zBarrier.__getstate__  s"    M4<J/ /r$   c                     | j         d         S r   r   rG   s    r   r   zBarrier._state      ;q>!r$   c                     || j         d<   d S r   r   rx   s     r   r   zBarrier._state      "DKNNNr$   c                     | j         d         S Nr   r   rG   s    r   r   zBarrier._count  r   r$   c                     || j         d<   d S 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     s        	 	 	 		F 	F 	F
	/ 	/ 	/ 
	" 	" 
	" 
	# 	# 
	# 
	" 	" 
	" 
	# 	# 
	# 	# 	#r$   c                       e Zd Zd ZdS )r   c                      t          d          )NzBarrier only supported on Py3)NotImplementedError)r9   rM   kwargss      r   rA   zBarrier.__init__  s    %&EFFFr$   N)ra   rb   rc   rA   r`   r$   r   r   r     s(        	G 	G 	G 	G 	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      s0    



                        + + + + + + + +             "T%%((^^ !/"-JJ   ///////   


	  S/ S/ S/ S/ S/ S/ S/ S/lC C C C C C C C D D D D Dy D D DB B B B B7 B B B2G G G G GG G G G4y y y y y y y yx" " " " " " " "R 79i   -G## ## ## ## ##)# ## ## ## ## ##PG G G G G G G G G Gs6   #A0 0B6A=<B=BBBBB