
     h2                     \   d dl m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mZ ddlmZ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e          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z  G d de          Z! e"ed          r G d dej#                  Z#dS  G d de          Z#dS )    )absolute_importN   )context)process)util)	_billiardensure_SemLock)range	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    P/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/billiard/synchronize.py_semnamer   5   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   r
   r   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)r7   rD   r   )r   rD   s     r   r9   zSemLock._cleanupi   s8    1111114
4r&   c                 J    | j         j        | _        | j         j        | _        d S r   )r#   acquirereleaser:   s    r   r5   zSemLock._make_methodso   s    },},r&   c                 4    | j                                         S r   )r#   	__enter__rH   s    r   rJ   zSemLock.__enter__s   s    }&&(((r&   c                       | j         j        | S r   )r#   __exit__r:   argss     r   rL   zSemLock.__exit__v   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_childr4   r;   r=   r   r   )r:   r   hstates       r   __getstate__zSemLock.__getstate__y   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   r3   r5   r:   rT   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`   rB   staticmethodr9   r5   rJ   rL   rU   rY   r.   ra   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   rB   	SEMAPHORESEM_VALUE_MAXr:   r<   r>   s      r   rB   zSemaphore.__init__   s'    y%CHHHHHr&   c                 4    | j                                         S r   )r#   
_get_valuerH   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#   rp   	Exception	__class__rb   r:   r<   s     r   __repr__zSemaphore.__repr__   s[    	M,,..EE 	 	 	EEE	#'>#:#:#:EEEBB    ++r   N)rb   rc   rd   rB   rq   rz   ra   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 rj   r   rB   rl   rn   s      r   rB   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 )Nrs   rt   ru   z, maxvalue=rv   )r#   rp   rw   rx   rb   r=   ry   s     r   rz   zBoundedSemaphore.__repr__   sp    	M,,..EE 	 	 	EEE	 N###UUUDM,B,B,BD 	Dr{   r|   )rb   rc   rd   rB   rz   ra   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   rk   r   r:   r>   s     r   rB   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SomeOtherProcessrs   rt   z(owner=rv   )r#   _is_miner   r]   r   	threadingcurrent_threadrp   _countrw   rx   rb   )r:   r   s     r   rz   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   rb   rc   rd   __doc__rB   rz   ra   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   rB   RECURSIVE_MUTEXr   s     r   rB   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   )rs   rs   rt   (, rv   )r#   r   r   r]   r   r   r   r   rp   rw   rx   rb   )r:   r   counts      r   rz   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   ra   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_semaphorer5   )r:   lockr>   s      r   rB   zCondition.__init__   ss    

s(SYY[[
"}}Q//MM!,,"}}Q//r&   c                 ^    t          j        |            | j        | j        | j        | j        fS r   )r   rP   r   r   r   r   rH   s    r   rU   zCondition.__getstate__   s2    %%%
D0!4#79 	9r&   c                 d    |\  | _         | _        | _        | _        |                                  d S r   )r   r   r   r   r5   rX   s     r   rY   zCondition.__setstate__   s6    49	2T)		D0r&   c                 4    | j                                         S r   )r   rJ   rH   s    r   rJ   zCondition.__enter__   s    z##%%%r&   c                       | j         j        | S r   )r   rL   rM   s     r   rL   zCondition.__exit__   s    "tz"D))r&   c                 J    | j         j        | _        | j         j        | _        d S r   )r   rF   rG   rH   s    r   r5   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 )Nrs   rt   r   r   rv   )r   r#   rp   r   rw   rx   rb   r   )r:   num_waiterss     r   rz   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   rG   r   r
   r   rF   r   )r:   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   rF   r   r   rG   )r:   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   rF   r   r   rG   r
   )r:   r   sleepersr@   s       r   
notify_allzCondition.notify_all5  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   )r:   	predicater   resultendtimewaittimes         r   wait_forzCondition.wait_forL  s     	MkkG+GGGH 	!""Y[[0q==IIhY[[F  	! r&   )NNr   )rb   rc   rd   r   rB   rU   rY   rJ   rL   r5   rz   r   r   r   r   ra   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   rB   zEvent.__init__a  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   rF   rG   rH   s    r   is_setzEvent.is_setf  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   rF   rG   r   rH   s    r   setz	Event.setm  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   rF   rH   s    r   clearzEvent.clears  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   rF   rG   r   )r:   r   s     r   r   z
Event.waitw  s   Z 		 		z!!%(( )
""$$$$
(((z!!%(( 
""$$$		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		s   BB&B&&B*-B*r   )rb   rc   rd   rB   r   r   r   r   ra   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   rY   _stater   )	r:   partiesactionr   r>   r   r   wrapperconds	            r   rB   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_arrayrX   s     r   rY   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   rH   s    r   rU   zBarrier.__getstate__  s"    M4<J/ /r&   c                     | j         d         S r   r   rH   s    r   r   zBarrier._state      ;q>!r&   c                     || j         d<   d S r   r   ry   s     r   r   zBarrier._state      "DKNNNr&   c                     | j         d         S Nr   r   rH   s    r   r   zBarrier._count  r   r&   c                     || j         d<   d S r   r   ry   s     r   r   zBarrier._count  r   r&   )NNN)
rb   rc   rd   rB   rY   rU   propertyr   setterr   ra   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)r:   rN   kwargss      r   rB   zBarrier.__init__  s    %&EFFFr&   N)rb   rc   rd   rB   ra   r&   r   r   r     s(        	G 	G 	G 	G 	Gr&   )$
__future__r   r!   r,   re   r    r   r   r   _extr   r	   fiver
   r   __all__listr   rl   r   rm   r   r   _multiprocessingImportErrorr   objectr   r   r   r   r   r   hasattrr   ra   r&   r   <module>r      sP   ' & & & & &  



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


	  S/ S/ S/ S/ S/f 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" " " " "F " " "R 79i   -G## ## ## ## ##)# ## ## ## ## ##PG G G G G& G G G G Gs6   +A8 8B>BBBBBBB