
     h1                     2   d dl mZ d dlZ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mZmZ ddlmZmZmZmZmZmZ dd	lmZ g d
Z G d de          Z e            Z G d de          Z G d de          Z G d de          Z dS )    )absolute_importN   )
connection)context)	get_errno)	monotonicEmptyFull)debugerrorinfoFinalizeregister_after_fork
is_exiting)ForkingPickler)QueueSimpleQueueJoinableQueuec                       e Zd ZdZddZd Zd Zd Zdd	Zdd
Z	d Z
d Zd Zd Zd Zd Zd Zd Zd Zed             Zed             Zed             ZdS )r   z4
    Queue type using a pipe, buffer and thread
    r   c                 D   	 |d         }n# t           $ r t          d          w xY w|dk    rddlm} || _        t          j        d          \  | _        | _        |	                                | _
        t          j                    | _        t          j        dk    rd | _        n|	                                | _        |                    |          | _        d| _        |                                  t          j        dk    rt+          | t,          j                   d S d S )	Nctxz-missing 1 required keyword-only argument: ctxr   r   )SEM_VALUE_MAXFduplexwin32)KeyError	TypeErrorsynchronizer   _maxsizer   Pipe_reader_writerLock_rlockosgetpid_opidsysplatform_wlockBoundedSemaphore_sem_ignore_epipe_after_forkr   r   selfmaxsizeargskwargsr   s        K/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/billiard/queues.py__init__zQueue.__init__#   s   	M-CC 	M 	M 	MKLLL	Ma<<======%/_E%B%B%B"dlhhjjY[[
<7""DKK((**DK((11	"<7""e&788888 #"    %c                     t          j        |            | j        | j        | j        | j        | j        | j        | j        | j	        fS N)
r   assert_spawningr-   r   r!   r"   r$   r*   r,   r'   r0   s    r4   __getstate__zQueue.__getstate__<   sB    %%%"DM4<T[$)TZA 	A    c           	          |\  | _         | _        | _        | _        | _        | _        | _        | _        |                                  d S r8   )	r-   r   r!   r"   r$   r*   r,   r'   r.   r0   states     r4   __setstate__zQueue.__setstate__A   sD    <A	:	T]DL$,	dk49djr<   c                    t          d           t          j        t          j                              | _        t          j                    | _        d | _        d | _	        d| _
        d| _        d | _        | j        j        | _        | j        j        | _        | j        j        | _        | j        j        | _        | j        j        | _        d S )NzQueue._after_fork()F)r   	threading	Conditionr#   	_notemptycollectionsdeque_buffer_thread_jointhread_joincancelled_closed_closer"   send_send_bytesr!   recv_recv
send_bytes
recv_bytes_recv_bytespoll_pollr:   s    r4   r.   zQueue._after_forkF   s    #$$$",Y^-=-=>>"(**#<,\&
<2<2\&


r<   TNc                 8   | j         rJ | j                            ||          st          | j        5  | j        |                                  | j                            |           | j        	                                 d d d            d S # 1 swxY w Y   d S r8   )
rK   r,   acquirer
   rD   rH   _start_threadrG   appendnotifyr0   objblocktimeouts       r4   putz	Queue.putU   s    <y  00 	J^ 	$ 	$|#""$$$L$$$N!!###		$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   ABBBc                    |rO|M| j         5  |                                 }d d d            n# 1 swxY w Y   | j                                         n|rt	                      |z   }| j                             ||          st          	 |r4|t	                      z
  }|dk     s|                     |          st          n|                                 st          |                                 }| j                                         | j                                          n# | j                                          w xY wt          j	        |          S )Nr   )
r$   rS   r,   releaser   rW   r	   rU   r   loads)r0   r]   r^   resdeadlines        r4   getz	Queue.get`   s    	&W_ ) )&&(() ) ) ) ) ) ) ) ) ) ) ) ) ) )I  1$;;0;&&ug66 
&  &4G{{$**W*=*={# #  K&&((	!!#####%%%%##%%%%#C(((s   -11A>D   D;c                 N    | j         | j        j                                        z
  S r8   )r   r,   _semlock
_get_valuer:   s    r4   qsizezQueue.qsizey   s"     }ty1<<>>>>r<   c                 ,    |                                   S r8   rU   r:   s    r4   emptyzQueue.empty~       ::<<r<   c                 >    | j         j                                        S r8   )r,   rg   _is_zeror:   s    r4   fullz
Queue.full   s    y!**,,,r<   c                 ,    |                      d          S NF)re   r:   s    r4   
get_nowaitzQueue.get_nowait   s    xxr<   c                 .    |                      |d          S rr   )r_   r0   r\   s     r4   
put_nowaitzQueue.put_nowait   s    xxU###r<   c                     d| _         	 | j                                         | j        }|rd | _         |             d S d S # | j        }|rd | _         |             w w xY w)NT)rK   r!   closerL   )r0   rx   s     r4   rx   zQueue.close   s    	L   KE "  KE "s   A   Ac                 p    t          d           | j        sJ | j        r|                                  d S d S )NzQueue.join_thread())r   rK   rI   r:   s    r4   join_threadzQueue.join_thread   sK    #$$$|| 		 	r<   c                     t          d           d| _        	 | j                                         d S # t          $ r Y d S w xY w)NzQueue.cancel_join_thread()T)r   rJ   rI   cancelAttributeErrorr:   s    r4   cancel_join_threadzQueue.cancel_join_thread   s[    *+++"	##%%%%% 	 	 	DD	s   3 
A Ac           	         t          d           | j                                         t          j        t
          j        | j        | j        | j        | j	        | j
        j        | j        fd          | _        d| j        _        t          d           | j                                         t          d           | j        t#          j                    k    }| j        sA|s?t)          | j        t
          j        t-          j        | j                  gd          | _        t)          | t
          j        | j        | j        gd	          | _        d S )
NzQueue._start_thread()QueueFeederThread)targetr2   nameTzdoing self._thread.start()z... done self._thread.start())exitpriority
   )r   rG   clearrB   Threadr   _feedrD   rN   r*   r"   rx   r-   rH   daemonstartr'   r%   r&   rJ   r   _finalize_joinweakrefrefrI   _finalize_closerL   )r0   created_by_this_processs     r4   rX   zQueue._start_thread   s<   %&&& 	 ';,0@+t|143EG$	
 
 
 #*+++-... $(:#<" 	+B 	'e2T\**+     D %'\4>*
 
 
r<   c                     t          d            |             }|%|                                 t          d           d S t          d           d S )Nzjoining queue threadz... queue thread joinedz... queue thread already dead)r   join)twrthreads     r4   r   zQueue._finalize_join   sY    $%%%KKMMM+,,,,,122222r<   c                     t          d           |5  |                     t                     |                                 d d d            d S # 1 swxY w Y   d S )Nztelling queue thread to quit)r   rY   	_sentinelrZ   )buffernotemptys     r4   r   zQueue._finalize_close   s    ,--- 	 	MM)$$$OO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   /AAAc                 l   t          d           |j        }|j        }|j        }| j        }	t
          }
t          j        dk    r|j        }|j        }nd }	 	  |             	 | s
 |              |             n#  |             w xY w	 	  |	            }||
u rt          d            |             d S t          j	        |          }| ||           n0 |             	  ||            |             n#  |             w xY w|# t          $ r Y nw xY w# t          $ r}|r#t          |          t          j        k    rY d }~d S 	 t                      rt!          d|d           n*t#          d|d          sdd l}|                                 n# t          $ r Y n
w xY wY d }~d S Y d }~d S d }~ww xY w)	Nz$starting thread to feed data to piper   r   z%feeder thread got sentinel -- exitingzerror in queue thread: %rT)exc_infor   )r   rW   ra   waitpopleftr   r(   r)   r   dumps
IndexError	Exceptionr   errnoEPIPEr   r   r   	traceback	print_exc)r   r   rQ   	writelockrx   ignore_epipenacquirenreleasenwaitbpopleftsentinelwacquirewreleaser\   excr   s                   r4   r   zQueue._feed   sU   4555##><7"" (H (HHH,	


!  HJJJJHHJJJJ+&hjj(??!"IJJJ!EGGG"F -2377#+&JsOOOO$HJJJ+ *
3 (







!+" "   D36  	 	 	 	#%+ = =
	<< .4cDIIIII !<c*.0 0 0 .((((!++---         !	s   D !A8 -D 8BD (D 2,D C5 *D 5DD 
DD DD 
F3 F.AFF.
FF.FF..F3r   TN)__name__
__module____qualname____doc__r5   r;   r@   r.   r_   re   ri   rl   rp   rs   rv   rx   rz   r~   rX   staticmethodr   r   r    r<   r4   r   r      sc        9 9 9 92A A A
  
' ' '	$ 	$ 	$ 	$) ) ) )2? ? ?
     - - -  $ $ $      $
 $
 $
L 3 3 \3   \ : : \: : :r<   r   c                   :    e Zd ZdZddZd Zd ZddZd	 Zd
 Z	dS )r   z
    A queue type which also supports join() and task_done() methods

    Note that if you do not call task_done() for each finished task then
    eventually the counter's semaphore may overflow causing Bad Things
    to happen.
    r   c                     	 |d         }n# t           $ r t          d          w xY wt                              | ||           |                    d          | _        |                                | _        d S )Nr   z(missing 1 required keyword argument: ctx)r   r   )r   r   r   r5   	Semaphore_unfinished_tasksrC   _condr/   s        r4   r5   zJoinableQueue.__init__"  s    	H-CC 	H 	H 	HFGGG	HtW#...!$q!1!1]]__


r6   c                 T    t                               |           | j        | j        fz   S r8   )r   r;   r   r   r:   s    r4   r;   zJoinableQueue.__getstate__+  s%    !!$''4:t7M*NNNr<   c                 z    t                               | |d d                    |dd          \  | _        | _        d S )N)r   r@   r   r   r>   s     r4   r@   zJoinableQueue.__setstate__.  s=    4ss,,,-2233Z*
D***r<   TNc                    | j         rJ | j                            ||          st          | j        5  | j        5  | j        |                                  | j        	                    |           | j
                                         | j                                         d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S r8   )rK   r,   rW   r
   rD   r   rH   rX   rG   rY   r   ra   rZ   r[   s       r4   r_   zJoinableQueue.put2  sQ   <y  00 	J^ 	( 	( ( (<'&&(((##C(((&..000%%'''( ( ( ( ( ( ( ( ( ( ( ( ( ( (	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s5   CA(B/#C/B3	3C6B3	7CCCc                    | j         5  | j                            d          st          d          | j        j                                        r| j                                          d d d            d S # 1 swxY w Y   d S )NFz!task_done() called too many times)r   r   rW   
ValueErrorrg   ro   
notify_allr:   s    r4   	task_donezJoinableQueue.task_done?  s    Z 	( 	()11%88 F !DEEE%.7799 (
%%'''		( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   A!A66A:=A:c                     | j         5  | j        j                                        s| j                                          d d d            d S # 1 swxY w Y   d S r8   )r   r   rg   ro   r   r:   s    r4   r   zJoinableQueue.joinF  s    Z 	" 	")2;;== "
!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   8AAAr   r   )
r   r   r   r   r5   r;   r@   r_   r   r   r   r<   r4   r   r     s         % % % %O O O8 8 8( ( ( (( ( (" " " " "r<   r   c                   J    e Zd ZdZddZd Zd Zd Zd Zd	 Z	d
 Z
d Zd ZdS )_SimpleQueuez<
    Simplified Queue type -- really just a locked pipe
    FNc                     t          j        d||          \  | _        | _        | j        j        | _        d x| _        | _        d S )NF)r   	rnonblock	wnonblock)r   r    r!   r"   rT   rU   r$   r*   )r0   r   r   r   s       r4   r5   z_SimpleQueue.__init__Q  sH    %/_I&
 &
 &
"dl \&
$((dkkkr<   c                 ,    |                                   S r8   rk   r:   s    r4   rl   z_SimpleQueue.emptyX  rm   r<   c                 ^    t          j        |            | j        | j        | j        | j        fS r8   )r   r9   r!   r"   r$   r*   r:   s    r4   r;   z_SimpleQueue.__getstate__[  s*    %%%dlDKEEr<   c                 <    |\  | _         | _        | _        | _        d S r8   )r!   r"   r$   r*   r>   s     r4   r@   z_SimpleQueue.__setstate___  s    AF>t|T[$+++r<   c                 4    | j                                         S r8   )r!   rR   r:   s    r4   get_payloadz_SimpleQueue.get_payloadb  s    |&&(((r<   c                 :    | j                             |           d S r8   )r"   rQ   r0   values     r4   send_payloadz_SimpleQueue.send_payloade  s    &&&&&r<   c                 N    t          j        |                                           S r8   )r   rb   r   r:   s    r4   re   z_SimpleQueue.geth  s    #D$4$4$6$6777r<   c                 T    |                      t          j        |                     d S r8   )r   r   r   ru   s     r4   r_   z_SimpleQueue.putl  s'    ..s3344444r<   c                     | j         .	 | j                                          d | _         n# d | _         w xY w| j        /	 | j                                         d | _        d S # d | _        w xY wd S r8   )r!   rx   r"   r:   s    r4   rx   z_SimpleQueue.closep  s    <#$""$$$#t####<#$""$$$#t####	 $#s   * 	3A   	A))FFN)r   r   r   r   r5   rl   r;   r@   r   r   re   r_   rx   r   r<   r4   r   r   L  s         ) ) ) )     F F FG G G) ) )' ' '8 8 85 5 5$ $ $ $ $r<   r   c                        e Zd Zd Zd Zd ZdS )r   c                     	 |d         }n# t           $ r t          d          w xY wt          j        d          \  | _        | _        |                                | _        t          j	        dk    r|                                nd | _
        d S )Nr   z&missing required keyword argument: ctxFr   r   )r   r   r   r    r!   r"   r#   r$   r(   r)   r*   )r0   r2   r3   r   s       r4   r5   zSimpleQueue.__init__  s    	F-CC 	F 	F 	FDEEE	F%/_E%B%B%B"dlhhjj$'LG$;$;chhjjjr6   c                 v    | j         5  | j                                        cd d d            S # 1 swxY w Y   d S r8   )r$   r!   rR   r:   s    r4   r   zSimpleQueue.get_payload  s    [ 	- 	-<**,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   .22c                     | j         | j                            |           d S | j         5  | j                            |           d d d            d S # 1 swxY w Y   d S r8   )r*   r"   rQ   r   s     r4   r   zSimpleQueue.send_payload  s    ;L##E***** / /''.../ / / / / / / / / / / / / / / / / /s   AAAN)r   r   r   r5   r   r   r   r<   r4   r   r   ~  sD        F F F- - -/ / / / /r<   r   )!
__future__r   r(   r%   rB   rE   r   r    r   r   compatr   fiver   r	   r
   utilr   r   r   r   r   r   	reductionr   __all__objectr   r   r   r   r   r   r<   r4   <module>r      s   ' & & & & & 



 				                             ( ( ( ( ( ( ( ( ( (                & % % % % %
3
3
3u u u u uF u u un FHH	0" 0" 0" 0" 0"E 0" 0" 0"f/$ /$ /$ /$ /$6 /$ /$ /$d/ / / / /, / / / / /r<   