
    F\h|1                        / S Qr SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	J
r
Jr  SSKJr  SSKJr  \R                  R                   rSSKJrJrJrJrJr   " S S	\5      r\" 5       r " S
 S\5      r " S S\5      rg))QueueSimpleQueueJoinableQueue    N)EmptyFull   )
connection)context)debuginfoFinalizeregister_after_fork
is_exitingc                       \ rS rSrSS jrS rS rS rSS jrSS jr	SS	 jr
S
 rS rS rS rS rS rS rS rS rS r\S 5       r\S 5       r\S 5       r\S 5       r\" \R8                  5      rSrg)r   !   c                   US::  a  SSK Jn  Xl        [        R                  " SS9u  U l        U l        UR                  5       U l        [        R                  " 5       U l        [        R                  S:X  a  S U l        OUR                  5       U l        UR                  U5      U l        SU l        U R%                  5         [        R                  S:w  a  ['        U [(        R*                  5        g g )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      -/usr/lib/python3.13/multiprocessing/queues.py__init__Queue.__init__#   s    a<=%/__E%B"dlhhjYY[
<<7"DK((*DK((1	"<<7"e&7&78 #    c                     [         R                  " U 5        U R                  U R                  U R                  U R
                  U R                  U R                  U R                  U R                  4$ N)
r
   assert_spawningr&   r   r   r   r   r#   r%   r    r*   s    r-   __getstate__Queue.__getstate__7   sP    %""DMM4<<T[[$))TZZA 	Ar0   c           	          Uu  U l         U l        U l        U l        U l        U l        U l        U l        U R                  5         g r2   )	r&   r   r   r   r   r#   r%   r    r'   r*   states     r-   __setstate__Queue.__setstate__<   s5    <A	:	T]DL$,	dk49djr0   c                 8    [        S5        U R                  SS9  g )NzQueue._after_fork()T)
after_fork)r   r'   r4   s    r-   r(   Queue._after_forkA   s    #$t$r0   c                    U(       a  U R                   R                  5         O.[        R                  " [        R                  " 5       5      U l         [
        R                  " 5       U l        S U l        S U l	        SU l
        SU l        S U l        U R                  R                  U l        U R                   R"                  U l        U R                   R&                  U l        g 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*   r=   s     r-   r'   Queue._resetE   s    NN**,&001ABDN"((*#<<22<<22\\&&
r0   Nc                    U R                   (       a  [        SU < S35      eU R                  R                  X#5      (       d  [        eU R
                     U R                  c  U R                  5         U R                  R                  U5        U R
                  R                  5         S S S 5        g ! , (       d  f       g = fNzQueue z
 is closed)rK   
ValueErrorr%   acquirer   rA   rH   _start_threadrG   appendnotifyr*   objblocktimeouts       r-   put	Queue.putT   s    <<vdXZ899yy  00J^^||#""$LL$NN!!#	 ^^s   AB00
B>c                 &   U R                   (       a  [        SU < S35      eU(       aC  Uc@  U R                     U R                  5       nS S S 5        U R                  R                  5         OU(       a  [        R                  " 5       U-   nU R                  R                  X5      (       d  [        e U(       a5  W[        R                  " 5       -
  nU R                  U5      (       d  [        eOU R                  5       (       d  [        eU R                  5       nU R                  R                  5         U R                  R                  5         [        R                  W5      $ ! , (       d  f       GN = f! U R                  R                  5         f = frU   )rK   rV   r   rP   r%   releasetime	monotonicrW   r   rR   _ForkingPicklerloads)r*   r]   r^   resdeadlines        r-   get	Queue.get`   s   <<vdXZ899W_&&( II>>+g5;;&&u66
&&)99G::g..# /K&&(		!!###%$$S))) $ ##%s   E"2BE4 "
E14Fc                 d    U R                   U R                  R                  R                  5       -
  $ r2   )r   r%   _semlock
_get_valuer4   s    r-   qsizeQueue.qsizez   s$    }}tyy11<<>>>r0   c                 ,    U R                  5       (       + $ r2   rR   r4   s    r-   emptyQueue.empty~       ::<r0   c                 J    U R                   R                  R                  5       $ r2   )r%   rl   _is_zeror4   s    r-   full
Queue.full   s    yy!!**,,r0   c                 $    U R                  S5      $ r@   )ri   r4   s    r-   
get_nowaitQueue.get_nowait   s    xxr0   c                 &    U R                  US5      $ r@   )r_   r*   r\   s     r-   
put_nowaitQueue.put_nowait   s    xxU##r0   c                 V    SU l         U R                  nU(       a  S U l        U" 5         g g )NT)rK   rL   )r*   closes     r-   r   Queue.close   s&    DKG r0   c                     [        S5        U R                  (       d   SR                  U 5      5       eU R                  (       a  U R                  5         g g )NzQueue.join_thread()zQueue {0!r} not closed)r   rK   formatrI   r4   s    r-   join_threadQueue.join_thread   sB    #$||B5<<TBB| r0   c                 ~    [        S5        SU l         U R                  R                  5         g ! [         a     g f = f)NzQueue.cancel_join_thread()T)r   rJ   rI   cancelAttributeErrorr4   s    r-   cancel_join_threadQueue.cancel_join_thread   s<    *+"	##% 		s   / 
<<c                     U R                   R                  5         [        R                  S:X  a  U R                  R                  5         U R                  5         U R                  5         g )Nr   )r   r   r!   r"   r   r   r4   s    r-   _terminate_brokenQueue._terminate_broken   sG     	 <<7"LL 

r0   c                 (   [        S5        U R                  R                  5         [        R                  " [
        R                  U R                  U R                  U R                  U R                  U R                  R                  U R                  R                  U R                  U R                  U R                  4	SSS9U l         [        S5        U R                   R#                  5         [        S5        U R$                  (       dH  ['        U R                   [
        R(                  [*        R,                  " U R                   5      /SS9U l        ['        U [
        R0                  U R                  U R                  /S	S9U l        g !   S U l        e = f)
NzQueue._start_thread()QueueFeederThreadT)targetargsnamedaemonzdoing self._thread.start()z... done self._thread.start())exitpriority
   )r   rG   clearrC   Threadr   _feedrA   rN   r#   r   r   r   r&   _on_queue_feeder_errorr%   rH   startrJ   r   _finalize_joinweakrefrefrI   _finalize_closerL   r4   s    r-   rX   Queue._start_thread   s2   %& 	 '';;,,0@0@++t||114<<3E3E$$d&A&A)) %
	./LL 12 ""'e22T\\*+ D %''\\4>>*	  DLs   0F 
Fc                 |    [        S5        U " 5       nUb  UR                  5         [        S5        g [        S5        g )Nzjoining queue threadz... queue thread joinedz... queue thread already dead)r   join)twrthreads     r-   r   Queue._finalize_join   s3    $%KKM+,12r0   c                     [        S5        U   U R                  [        5        UR                  5         S S S 5        g ! , (       d  f       g = f)Nztelling queue thread to quit)r   rY   	_sentinelrZ   )buffernotemptys     r-   r   Queue._finalize_close   s.    ,-MM)$OO XXs	   &=
Ac	                 0   [        S5        UR                  n	UR                  n
UR                  nU R                  n[
        n[        R                  S:w  a  UR                  nUR                  nOS n  U	" 5          U (       d  U" 5         U
" 5           U" 5       nUUL a  [        S5        U" 5         U" 5         g [        R                  U5      nUc	  U" U5        OU" 5          U" U5        W" 5         M`  ! U
" 5         f = f! W" 5         f = f! [         a     Of = f! [         an  nU(       a$  [        USS5      [        R                  :X  a   S nAg [        5       (       a  [!        SU5         S nAg UR                  5         U" UW5         S nAOS nAff = fGM&  )Nz$starting thread to feed data to piper   z%feeder thread got sentinel -- exitingerrnor   zerror in queue thread: %s)r   rW   rb   waitpopleftr   r!   r"   re   dumps
IndexError	Exceptiongetattrr   EPIPEr   r   )r   r   rM   	writelockreader_closewriter_closeignore_epipeonerror	queue_semnacquirenreleasenwaitbpopleftsentinelwacquirewreleaser\   es                     r-   r   Queue._feed   sf    	45####>><<7" ((H ((HH-$
!J&j(?!"IJ(N(N" .33C8#+&sO$J+ *3 (
#  J& !)
!  $GAw$:ekk$I
 <<4a8 %%'AsOO#$; sx   3D ;C2 	D &D
 8(D
 !C> )	D
 2	C;;D >	DD
 

DD DD 
F$&FF/FFc                 ,    SSK nUR                  5         g)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   r\   r   s      r-   r   Queue._on_queue_feeder_error$  s     	r0   )rG   rL   rK   r&   rJ   rI   r   rA   r    rR   r   rP   r   r%   rN   rH   r#   r   r   )FTN)__name__
__module____qualname____firstlineno__r.   r5   r:   r(   r'   r_   ri   rn   rr   rw   rz   r~   r   r   r   r   rX   staticmethodr   r   r   r   classmethodtypesGenericAlias__class_getitem____static_attributes__ r0   r-   r   r   !   s    9(A

%'
$*4? -$%N 3 3   <$ <$|   $E$6$67r0   r   c                   @    \ rS rSrS
S jrS rS rSS jrS rS r	S	r
g)r   i:  c                    [         R                  XUS9  UR                  S5      U l        UR	                  5       U l        g )N)r,   r   )r   r.   	Semaphore_unfinished_tasksrD   _condr)   s      r-   r.   JoinableQueue.__init__<  s0    t#.!$q!1]]_
r0   c                 ^    [         R                  U 5      U R                  U R                  4-   $ r2   )r   r5   r   r   r4   s    r-   r5   JoinableQueue.__getstate__A  s'    !!$'4::t7M7M*NNNr0   c                 X    [         R                  XS S 5        USS  u  U l        U l        g )N)r   r:   r   r   r8   s     r-   r:   JoinableQueue.__setstate__D  s+    4s,-223Z*
D*r0   Nc                    U R                   (       a  [        SU < S35      eU R                  R                  X#5      (       d  [        eU R
                     U R                     U R                  c  U R                  5         U R                  R                  U5        U R                  R                  5         U R
                  R                  5         S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = frU   )rK   rV   r%   rW   r   rA   r   rH   rX   rG   rY   r   rb   rZ   r[   s       r-   r_   JoinableQueue.putH  s    <<vdXZ899yy  00J^^TZZ||#""$LL$""**,NN!!# (^^ZZ^^s%   C0!A-CC0
C-	)C00
C>c                 ,   U R                      U R                  R                  S5      (       d  [        S5      eU R                  R                  R                  5       (       a  U R                   R                  5         S S S 5        g ! , (       d  f       g = f)NFz!task_done() called too many times)r   r   rW   rV   rl   rv   
notify_allr4   s    r-   	task_doneJoinableQueue.task_doneU  sa    ZZ))11%88 !DEE%%..7799

%%'	 ZZs   A/B
Bc                     U R                      U R                  R                  R                  5       (       d  U R                   R	                  5         S S S 5        g ! , (       d  f       g = fr2   )r   r   rl   rv   r   r4   s    r-   r   JoinableQueue.join\  s<    ZZ))22;;==

! ZZs   AA
A()r   r   r   r   )r   r   r   r   r.   r5   r:   r_   r   r   r   r   r0   r-   r   r   :  s!    %
O8$("r0   r   c                   b    \ rS rSrS rS rS rS rS rS r	S r
\" \R                  5      rS	rg
)r   ie  c                   [         R                  " SS9u  U l        U l        UR	                  5       U l        U R                  R                  U l        [        R                  S:X  a  S U l
        g UR	                  5       U l
        g )NFr   r   )r	   r   r   r   r   r   rQ   rR   r!   r"   r#   )r*   r,   s     r-   r.   SimpleQueue.__init__g  sW    %/__E%B"dlhhj\\&&
<<7"DK((*DKr0   c                 l    U R                   R                  5         U R                  R                  5         g r2   )r   r   r   r4   s    r-   r   SimpleQueue.closep  s"    r0   c                 ,    U R                  5       (       + $ r2   rq   r4   s    r-   rr   SimpleQueue.emptyt  rt   r0   c                     [         R                  " U 5        U R                  U R                  U R                  U R
                  4$ r2   )r
   r3   r   r   r   r#   r4   s    r-   r5   SimpleQueue.__getstate__w  s/    %dllDKKEEr0   c                 p    Uu  U l         U l        U l        U l        U R                   R                  U l        g r2   )r   r   r   r#   rQ   rR   r8   s     r-   r:   SimpleQueue.__setstate__{  s)    AF>t|T[$+\\&&
r0   c                     U R                      U R                  R                  5       nS S S 5        [        R	                  W5      $ ! , (       d  f       N#= fr2   )r   r   rO   re   rf   )r*   rg   s     r-   ri   SimpleQueue.get  s;    [[,,))+C  $$S)) [s   A
Ac                    [         R                  U5      nU R                  c  U R                  R	                  U5        g U R                     U R                  R	                  U5        S S S 5        g ! , (       d  f       g = fr2   )re   r   r#   r   rM   r}   s     r-   r_   SimpleQueue.put  sQ    ##C(;;LL##C('', s   A00
A>)rR   r   r   r#   r   N)r   r   r   r   r.   r   rr   r5   r:   ri   r_   r   r   r   r   r   r   r0   r-   r   r   e  s9    % F'*- $E$6$67r0   r   )__all__r!   r   rC   rE   rc   r   r   r   queuer   r    r	   r
   	reductionForkingPicklerre   utilr   r   r   r   r   objectr   r   r   r   r   r0   r-   <module>r      su    4 
 	         ##22 H HL8F L8^ H	%"E %"V*8& *8r0   