
    Sf1                     *   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 d dl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          Z e            Z G d de          Z G d d          Z G d de          ZdS )    N   )
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        A/var/www/html/env/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&   r/   s    r3   __getstate__zQueue.__getstate__<   sB    %%%"DM4<T[$)TZA 	A    c           	          |\  | _         | _        | _        | _        | _        | _        | _        | _        |                                  d S r7   )	r,   r   r    r!   r#   r)   r+   r&   r-   r/   states     r3   __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_pollr9   s    r3   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 r7   )
rJ   r+   acquirer	   rC   rG   _start_threadrF   appendnotifyr/   objblocktimeouts       r3   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#   rR   r+   releaser   rV   r   rT   r   loads)r/   r\   r]   resdeadlines        r3   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 r7   )r   r+   _semlock
_get_valuer9   s    r3   qsizezQueue.qsizey   s"     }ty1<<>>>>r;   c                 ,    |                                   S r7   rT   r9   s    r3   emptyzQueue.empty~       ::<<r;   c                 >    | j         j                                        S r7   )r+   rf   _is_zeror9   s    r3   fullz
Queue.full   s    y!**,,,r;   c                 ,    |                      d          S NF)rd   r9   s    r3   
get_nowaitzQueue.get_nowait   s    xxr;   c                 .    |                      |d          S rq   )r^   r/   r[   s     r3   
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)rJ   r    closerK   )r/   rw   s     r3   rw   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
   rJ   rH   r9   s    r3   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
   rI   rH   cancelAttributeErrorr9   s    r3   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)targetr1   nameTzdoing self._thread.start()z... done self._thread.start())exitpriority
   )r
   rF   clearrA   Threadr   _feedrC   rM   r)   r!   rw   r,   rG   daemonstartr&   r$   r%   rI   r   _finalize_joinweakrefrefrH   _finalize_closerK   )r/   created_by_this_processs     r3   rW   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     r3   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
   rX   	_sentinelrY   )buffernotemptys     r3   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
   rV   r`   waitpopleftr   r'   r(   r   dumps
IndexError	Exceptionr   errnoEPIPEr   r   r   	traceback	print_exc)r   r   rP   	writelockrw   ignore_epipenacquirenreleasenwaitbpopleftsentinelwacquirewreleaser[   excr   s                   r3   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__r4   r:   r?   r-   r^   rd   rh   rk   ro   rr   ru   rw   ry   r}   rW   staticmethodr   r   r    r;   r3   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   r4   	Semaphore_unfinished_tasksrB   _condr.   s        r3   r4   zJoinableQueue.__init__"  s    	H-CC 	H 	H 	HFGGG	HtW#...!$q!1!1]]__


r5   c                 T    t                               |           | j        | j        fz   S r7   )r   r:   r   r   r9   s    r3   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     r3   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 r7   )rJ   r+   rV   r	   rC   r   rG   rW   rF   rX   r   r`   rY   rZ   s       r3   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   rV   
ValueErrorrf   rn   
notify_allr9   s    r3   	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 r7   )r   r   rf   rn   r   r9   s    r3   r   zJoinableQueue.joinF  s    Z 	" 	")2;;== "
!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   8AAAr   r   )
r   r   r   r   r4   r:   r?   r^   r   r   r   r;   r3   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!   rS   rT   r#   r)   )r/   r   r   r   s       r3   r4   z_SimpleQueue.__init__Q  sH    %/_I&
 &
 &
"dl \&
$((dkkkr;   c                 ,    |                                   S r7   rj   r9   s    r3   rk   z_SimpleQueue.emptyX  rl   r;   c                 ^    t          j        |            | j        | j        | j        | j        fS r7   )r   r8   r    r!   r#   r)   r9   s    r3   r:   z_SimpleQueue.__getstate__[  s*    %%%dlDKEEr;   c                 <    |\  | _         | _        | _        | _        d S r7   )r    r!   r#   r)   r=   s     r3   r?   z_SimpleQueue.__setstate___  s    AF>t|T[$+++r;   c                 4    | j                                         S r7   )r    rQ   r9   s    r3   get_payloadz_SimpleQueue.get_payloadb  s    |&&(((r;   c                 :    | j                             |           d S r7   )r!   rP   r/   values     r3   send_payloadz_SimpleQueue.send_payloade  s    &&&&&r;   c                 N    t          j        |                                           S r7   )r   ra   r   r9   s    r3   rd   z_SimpleQueue.geth  s    #D$4$4$6$6777r;   c                 T    |                      t          j        |                     d S r7   )r   r   r   rt   s     r3   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 r7   )r    rw   r!   r9   s    r3   rw   z_SimpleQueue.closep  s    <#$""$$$#t####<#$""$$$#t####	 $#s   * 	3A   	A))FFN)r   r   r   r   r4   rk   r:   r?   r   r   rd   r^   rw   r   r;   r3   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)   )r/   r1   r2   r   s       r3   r4   zSimpleQueue.__init__  s    	F-CC 	F 	F 	FDEEE	F%/_E%B%B%B"dlhhjj$'LG$;$;chhjjjr5   c                 v    | j         5  | j                                        cd d d            S # 1 swxY w Y   d S r7   )r#   r    rQ   r9   s    r3   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 r7   )r)   r!   rP   r   s     r3   r   zSimpleQueue.send_payload  s    ;L##E***** / /''.../ / / / / / / / / / / / / / / / / /s   AAAN)r   r   r   r4   r   r   r   r;   r3   r   r   ~  sD        F F F- - -/ / / / /r;   r   ) r'   r$   rA   rD   r   r    r   r   compatr   timer   queuer   r	   utilr
   r   r   r   r   r   	reductionr   __all__r   objectr   r   r   r   r   r;   r3   <module>r      s   


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