
    d.                        g d 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ZddlZddl	m
Z
mZ ddlZddlmZ ddlmZ ej        j        ZddlmZmZmZmZmZ  G d d	e          Z e            Z G d
 de          Z G d de          ZdS ))QueueSimpleQueueJoinableQueue    N)EmptyFull   )
connection)context)debuginfoFinalizeregister_after_fork
is_exitingc                       e Zd ZddZd Zd Zd Zd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ed             Zd	S )r   r   c                   |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 )Nr   r   )SEM_VALUE_MAXFduplexwin32)synchronizer   _maxsizer	   Pipe_reader_writerLock_rlockosgetpid_opidsysplatform_wlockBoundedSemaphore_sem_ignore_epipe_resetr   r   _after_forkselfmaxsizectxs      (  /croot/python-split_1694437901252/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/lib/python3.11/multiprocessing/queues.py__init__zQueue.__init__%   s    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    r,   __getstate__zQueue.__getstate__9   sB    %%%"DM4<T[$)TZA 	Ar.   c           	          |\  | _         | _        | _        | _        | _        | _        | _        | _        |                                  d S r0   )	r%   r   r   r   r   r"   r$   r   r&   r)   states     r,   __setstate__zQueue.__setstate__>   s=    <A	:	T]DL$,	dk49djr.   c                 P    t          d           |                     d           d S )NzQueue._after_fork()T)
after_fork)r   r&   r2   s    r,   r'   zQueue._after_forkC   s+    #$$$t$$$$$r.   Fc                 n   |r| j                                          n*t          j        t          j                              | _         t          j                    | _        d | _        d | _	        d| _
        d| _        d | _        | j        j        | _        | j        j        | _        | j        j        | _        d S NF)	_notempty_at_fork_reinit	threading	Conditionr   collectionsdeque_buffer_thread_jointhread_joincancelled_closed_closer   
send_bytes_send_bytesr   
recv_bytes_recv_bytespoll_poll)r)   r9   s     r,   r&   zQueue._resetG   s     	CN**,,,,&01A1ABBDN"(**#<2<2\&


r.   TNc                 Z   | j         rt          d| d          | j                            ||          st          | j        5  | j        |                                  | j        	                    |           | j        
                                 d d d            d S # 1 swxY w Y   d S NzQueue z
 is closed)rF   
ValueErrorr$   acquirer   r<   rC   _start_threadrB   appendnotifyr)   objblocktimeouts       r,   putz	Queue.putV   s    < 	:8d888999y  00 	J^ 	$ 	$|#""$$$L$$$N!!###		$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   AB  B$'B$c                    | j         rt          d| d          |rO|M| j        5  |                                 }d d d            n# 1 swxY w Y   | j                                         n|rt          j                    |z   }| j                            ||          st          	 |r3|t          j                    z
  }| 
                    |          st          n| 
                                st          |                                 }| j                                         | j                                         n# | j                                         w xY wt                              |          S rO   )rF   rP   r   rK   r$   releasetime	monotonicrQ   r   rM   _ForkingPicklerloads)r)   rW   rX   resdeadlines        r,   getz	Queue.getb   s   < 	:8d888999 	&W_ ) )&&(() ) ) ) ) ) ) ) ) ) ) ) ) ) )I 6>++g5;&&ug66 
&  &)9)99G::g.. $#$  K&&((	!!#####%%%%##%%%%$$S)))s   AAA'A=D> >Ec                 N    | j         | j        j                                        z
  S r0   )r   r$   _semlock
_get_valuer2   s    r,   qsizezQueue.qsize|   s     }ty1<<>>>>r.   c                 ,    |                                   S r0   rM   r2   s    r,   emptyzQueue.empty       ::<<r.   c                 >    | j         j                                        S r0   )r$   rd   _is_zeror2   s    r,   fullz
Queue.full   s    y!**,,,r.   c                 ,    |                      d          S r;   )rb   r2   s    r,   
get_nowaitzQueue.get_nowait   s    xxr.   c                 .    |                      |d          S r;   )rY   r)   rV   s     r,   
put_nowaitzQueue.put_nowait   s    xxU###r.   c                 L    d| _         | j        }|rd | _         |             d S d S )NT)rF   rG   )r)   closes     r,   rt   zQueue.close   s8     	DKEGGGGG	 	r.   c                     t          d           | j        sJ d                    |                       | j        r|                                  d S d S )NzQueue.join_thread()zQueue {0!r} not closed)r   rF   formatrD   r2   s    r,   join_threadzQueue.join_thread   sc    #$$$|BB5<<TBBBBB 		 	r.   c                     t          d           d| _        	 | j                                         d S # t          $ r Y d S w xY w)NzQueue.cancel_join_thread()T)r   rE   rD   cancelAttributeErrorr2   s    r,   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        j        | j        | j        | j        f	d          | _        d| j        _        t          d           | j                                         t          d           | j        s?t)          | j        t
          j        t-          j        | j                  gd          | _        t)          | t
          j        | j        | j        gd	          | _        d S )
NzQueue._start_thread()QueueFeederThread)targetargsnameTzdoing self._thread.start()z... done self._thread.start())exitpriority
   )r   rB   clearr>   Threadr   _feedr<   rI   r"   r   rt   r   r%   _on_queue_feeder_errorr$   rC   daemonstartrE   r   _finalize_joinweakrefrefrD   _finalize_closerG   r2   s    r,   rR   zQueue._start_thread   s2   %&&& 	 ';,0@+t|14<3E$d&A) %
 
 
 #*+++-..." 	'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     r,   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   rS   	_sentinelrT   )buffernotemptys     r,   r   zQueue._finalize_close   s    ,--- 	 	MM)$$$OO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   /AAAc	                 T   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          	                    |          }| ||           n0 |             	  ||            |             n#  |             w xY w# t          $ r Y nw xY wn# t          $ ru}|r%t          |dd          t          j        k    rY d }~d S t                      rt!          d|           Y d }~d S |                                  |||           Y d }~nd }~ww xY wU)Nz$starting thread to feed data to piper   r   z%feeder thread got sentinel -- exitingerrnor   zerror in queue thread: %s)r   rQ   r[   waitpopleftr   r    r!   r^   dumps
IndexError	Exceptiongetattrr   EPIPEr   r   )r   r   rH   	writelockreader_closewriter_closeignore_epipeonerror	queue_semnacquirenreleasenwaitbpopleftsentinelwacquirewreleaserV   es                     r,   r   zQueue._feed   s$    	4555##><7"" (H (HHH.	$-$


!  HJJJJHHJJJJ+&hjj(??!"IJJJ(LNNN(LNNN"F .33C88#+&JsOOOO$HJJJ+ *
3 (







#+$ "   D $ $ $ GAw$:$:ek$I$IFFFFF
 << 
$4a888FFFFF %%'''GAsOOOOOOOO#$;.	$sx   
D& !A8 -D& 8BD& 2D <2D /D :D DD 
D"D& !D""D& &
F%0!F F ; F  F%c                 6    ddl }|                                 dS )z
        Private API hook called when feeding data in the background thread
        raises an exception.  For overriding by concurrent.futures.
        r   N)	traceback	print_exc)r   rV   r   s      r,   r   zQueue._on_queue_feeder_error  s(     	r.   r   )FTN)__name__
__module____qualname__r-   r3   r7   r'   r&   rY   rb   rf   ri   rm   ro   rr   rt   rw   r{   rR   staticmethodr   r   r   r    r.   r,   r   r   #   s       9 9 9 9(A A A
  
% % %' ' ' '
$ 
$ 
$ 
$* * * *4? ? ?     - - -  $ $ $        B 3 3 \3   \ <$ <$ \<$|   \  r.   r   c                   6    e Zd Zd
dZd Zd ZddZd Zd	 ZdS )r   r   c                    t                               | ||           |                    d          | _        |                                | _        d S )N)r+   r   )r   r-   	Semaphore_unfinished_tasksr?   _condr(   s      r,   r-   zJoinableQueue.__init__(  sA    tW#...!$q!1!1]]__


r.   c                 T    t                               |           | j        | j        fz   S r0   )r   r3   r   r   r2   s    r,   r3   zJoinableQueue.__getstate__-  s%    !!$''4:t7M*NNNr.   c                 z    t                               | |d d                    |dd          \  | _        | _        d S )N)r   r7   r   r   r5   s     r,   r7   zJoinableQueue.__setstate__0  s=    4ss,,,-2233Z*
D***r.   TNc                    | j         rt          d| d          | 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 rO   )rF   rP   r$   rQ   r   r<   r   rC   rR   rB   rS   r   r[   rT   rU   s       r,   rY   zJoinableQueue.put4  sf   < 	:8d888999y  00 	J^ 	$ 	$TZ 	$ 	$|#""$$$L$$$"**,,,N!!###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s7   CA(C 4C C	CC	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   rQ   rP   rd   rl   
notify_allr2   s    r,   	task_donezJoinableQueue.task_doneA  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 r0   )r   r   rd   rl   r   r2   s    r,   r   zJoinableQueue.joinH  s    Z 	" 	")2;;== "
!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   8AAAr   r   )	r   r   r   r-   r3   r7   rY   r   r   r   r.   r,   r   r   &  s{        % % % %
O O O8 8 8$ $ $ $( ( (" " " " "r.   r   c                   X    e Zd Zd Zd Zd Zd Zd Zd Zd Z	 e
ej                  ZdS )	r   c                   t          j        d          \  | _        | _        |                                | _        | j        j        | _        t          j	        dk    r	d | _
        d S |                                | _
        d S )NFr   r   )r	   r   r   r   r   r   rL   rM   r    r!   r"   )r)   r+   s     r,   r-   zSimpleQueue.__init__S  sc    %/_E%B%B%B"dlhhjj\&
<7""DKKK((**DKKKr.   c                 j    | j                                          | j                                         d S r0   )r   rt   r   r2   s    r,   rt   zSimpleQueue.close\  s0    r.   c                 ,    |                                   S r0   rh   r2   s    r,   ri   zSimpleQueue.empty`  rj   r.   c                 ^    t          j        |            | j        | j        | j        | j        fS r0   )r
   r1   r   r   r   r"   r2   s    r,   r3   zSimpleQueue.__getstate__c  s*    %%%dlDKEEr.   c                 ^    |\  | _         | _        | _        | _        | j         j        | _        d S r0   )r   r   r   r"   rL   rM   r5   s     r,   r7   zSimpleQueue.__setstate__g  s(    AF>t|T[$+\&


r.   c                     | j         5  | j                                        }d d d            n# 1 swxY w Y   t                              |          S r0   )r   r   rJ   r^   r_   )r)   r`   s     r,   rb   zSimpleQueue.getk  s    [ 	, 	,,))++C	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, $$S)))s   .22c                     t                               |          }| j        | j                            |           d S | j        5  | j                            |           d d d            d S # 1 swxY w Y   d S r0   )r^   r   r"   r   rH   rq   s     r,   rY   zSimpleQueue.putq  s    ##C((;L##C((((( - -'',,,- - - - - - - - - - - - - - - - - -s   A--A14A1N)r   r   r   r-   rt   ri   r3   r7   rb   rY   classmethodtypesGenericAlias__class_getitem__r   r.   r,   r   r   Q  s        % % %       F F F' ' '* * *- - - $E$677r.   r   )__all__r    r   r>   r@   r\   r   r   r   queuer   r   _multiprocessing r	   r
   	reductionForkingPicklerr^   utilr   r   r   r   r   objectr   r   r   r   r   r.   r,   <module>r      s|   4
3
3 



 				                                    #2 H H H H H H H H H H H H H Hv v v v vF v v vr FHH	%" %" %" %" %"E %" %" %"V*8 *8 *8 *8 *8& *8 *8 *8 *8 *8r.   