+
    Bi&                        ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHtHt ^ RIH	t	 ^ RIH
t
 ]
P                  ! RR7       ]	P                  ! RR.R	7      t]	P                  ! RR.R
7      t]P                  ! ]R4      t^tR t ! R R]P&                  4      t ! R R4      t ! R R]4      t ! R R]4      t ! R R]]P0                  4      t] ! R R]]P0                  4      4       t ! R R]4      t ! R R]]P0                  4      t] ! R R]]P0                  4      4       t ! R R ]4      t ! R! R"]]P0                  4      t] ! R# R$]]P0                  4      4       t  ! R% R&]!4      t" ! R' R(]4      t# ! R) R*]#]P0                  4      t$] ! R+ R,]#]P0                  4      4       t% ! R- R.4      t& ! R/ R0]&]P0                  4      t'] ! R1 R2]&]P0                  4      4       t(])R38X  d   ]PT                  ! 4        R# R# )4    N)
gc_collect
bigmemtest)import_helper)threading_helperT)modulequeue_queue)blocked)freshzNo _queue module foundc                 j    V P                   ^ 8  ;'       d    V P                  4       V P                   8H  # )r   )maxsizeqsizeqs   &&/usr/lib/python3.14/test/test_queue.pyqfullr      s'    99q=33QWWY!))33    c                   ,   a  ] tR t^t o R tR tRtV tR# )_TriggerThreadc                    Wn         W n        \        P                  ! 4       V n        \        P
                  P                  V 4       R # N)fnargs	threadingEventstartedEventThread__init__)selfr   r   s   &&&r   r   _TriggerThread.__init__   s/    	%OO-!!$'r   c                    \         P                  ! R 4       V P                  P                  4        V P                  ! V P
                  !   R# )皙?N)timesleepr   setr   r   r   s   &r   run_TriggerThread.run!   s1     	

3r   )r   r   r   N)__name__
__module____qualname____firstlineno__r   r'   __static_attributes____classdictcell____classdict__s   @r   r   r      s     ( r   r   c                   ,   a  ] tR t^:t o R tR tRtV tR# )BlockingTestMixinc                :   \        W44      pVP                  4         V! V!  V n        VP                  P	                  4       '       g   V P                  R V,          4       V P                  \        P                  ! V4       #   \        P                  ! T4       i ; i)z*blocking function %r appeared not to block)r   startresultr   is_setfailr   join_thread)r   
block_func
block_argstrigger_functrigger_argsthreads   &&&&& r   do_blocking_test"BlockingTestMixin.do_blocking_test<   sw    ;	1$j1DK&&--//		F$% &;;((0((0s   AB Bc                   \        W44      pVP                  4          V! V!   V P                  R V,          4        \        P                  ! T4       TP
                  P                  4       '       g   T P                  R4       R# R#   T d    h i ; i  \        P                  ! T4       TP
                  P                  4       '       g   T P                  R4       i i ; i)zexpected exception of kind %rz(trigger thread ended but event never setN)r   r4   r7   r   r8   r   r6   )r   r9   r:   r;   r<   expected_exception_classr=   s   &&&&&& r   do_exceptional_blocking_test.BlockingTestMixin.do_exceptional_blocking_testJ   s    ;	F;J' 		9!9: ; ((0&&--//		DE 0 ,  ((0&&--//		DE 0s   B B 	BB A
C)r5   N)r)   r*   r+   r,   r>   rB   r-   r.   r/   s   @r   r2   r2   :   s     1F Fr   r2   c                   :  a  ] tR t^\t o R tR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR0R ltR tR tR0R ltR t R0R lt!R t"R  t#R! t$R" t%R# t&R$ t'R% t(R& t)R' t*R( t+R) t,R* t-R+ t.R, t/R- t0R.t1V t2R/# )1BaseQueueTestMixinc                H    ^ V n         \        P                  ! 4       V n        R# r   N)cumr   Lockcumlockr&   s   &r   setUpBaseQueueTestMixin.setUp]   s     ~~'r   c                   VP                  4       '       d   \        R 4      hV P                  VP                  4       4       V P	                  VP                  4       4       VP                  ^o4       VP                  R4       VP                  ^4       \        . RO. RO. ROR7      pVP                  4       VP                  4       VP                  4       .pV P                  W2VP                  P                  ,          R4       \        \        ^,
          4       F4  pVP                  V4       V P                  VP                  4       R4       K6  	  V P                  \        V4      '       * R4       ^\        ,          p^\        ,          pVP                  V4       V P                  \        V4      R4       V P	                  VP                  4       4       V P                  VP                  4       4        VP                  V^ R7       V P                  R4        VP                  VR	R
7       V P                  R4       V P%                  VP                  V3VP                  R4       V P%                  VP                  VR^
3VP                  R4       \        \        4       F  pVP                  4        K  	  V P                  VP                  4       '       * R4        VP                  ^ R7       V P                  R4        VP                  R	R
7       V P                  R4       V P%                  VP                  RVP                  R4       V P%                  VP                  RVP                  R4       R#   T P                   P"                   d     EL|i ; i  T P                   P"                   d     ELyi ; i  T P                   P&                   d     Li ; i  T P                   P&                   d     Li ; i)&Call this function with an empty queueM  )Queue	LifoQueuePriorityQueuez&Didn't seem to queue the correct data!Queue should not be emptyQueue should not be fullQueue should be fullblockz(Didn't appear to block with a full queueg{Gz?timeoutz+Didn't appear to time-out with a full queueTQueue should be emptyz*Didn't appear to block with an empty queuez-Didn't appear to time-out with an empty queueN)o   rO      )r\   rO   r[   )r[   r\   rO    empty)T
   )r   RuntimeError
assertTruer_   assertFalsefullputdictgetassertEqual	__class__r)   range
QUEUE_SIZEr   r7   r   Fullr>   Empty)r   r   target_orderactual_orderilastrd   s   &&     r   basic_queue_test#BaseQueueTestMixin.basic_queue_testa   s   7799GHH	""	c
	c
	c
O(7,;= !%%'2AKK4H4H'IA	Cz!|$AEE!HOOAGGI'BC % 	E!H&@A:~z!	da"89#!	EE$aE II@A	EE$E%IICD 	aeedWaeeR8aeedD"%5quubAz"AEEG #AGGI'>?	EEENIIBC	EE$EIIEF 	aeeR
;aeeZ
C5 zz 		
 zz 		 zz 		
 zz 		sH   6$M8 $N #N< #O 8NNN98N9<OOO;:O;c                    VP                  4       pV^ 8  d   VP                  4        R# V P                  ;_uu_ 4        V ;P                  V,          un        RRR4       VP                  4        Kr    + '       g   i     L"; iTN)rg   	task_donerJ   rH   )r   r   xs   && r   workerBaseQueueTestMixin.worker   sO    A1uA KKM s   A33B	c                   ^ V n         . pR FG  p\        P                  ! V P                  V3R7      pVP	                  4        VP                  V4       KI  	  \        ^d4       F  pVP                  V4       K  	  VP                  4        V P                  V P                   \        \        ^d4      4      R4       R F  pVP                  R4       K  	  VP                  4        V F  pVP                  4        K  	  R# )r   targetr   z0q.join() did not block until all tasks were doneN)r      )rH   r   r   rx   r4   appendrj   re   joinrh   sum)r   r   threadsrp   r=   s   &&   r   queue_join_test"BaseQueueTestMixin.queue_join_test   s    A%%T[[tDFLLNNN6"  sAEE!H 	3uSz?K	MAEE"I 	FKKM r   c                    V P                  4       p VP                  4        V P                  R 4       R#   \         d     R# i ; iz(Did not detect task count going negativeN)	type2testrv   r7   
ValueErrorr   r   s   & r   test_queue_task_done'BaseQueueTestMixin.test_queue_task_done   s@    NN	BKKM II@A  		s   5 AAc                    V P                  4       pV P                  V4       V P                  V4        VP                  4        V P                  R 4       R#   \         d     R# i ; ir   )r   r   rv   r7   r   r   s   & r   test_queue_join"BaseQueueTestMixin.test_queue_join   s^     NNQQ	BKKM II@A  		s   A A&%A&c                t    V P                  \        4      pV P                  V4       V P                  V4       R # r   )r   rk   rr   r   s   & r   
test_basicBaseQueueTestMixin.test_basic   s.     NN:&a a r   c                b   V P                  \        4      pV P                  \        4      ;_uu_ 4        VP	                  ^RR7       RRR4       V P                  \        4      ;_uu_ 4        VP                  ^RR7       RRR4       R#   + '       g   i     LK; i  + '       g   i     R# ; ir}   rX   Nr~   )r   rk   assertRaisesr   re   rg   r   s   & r   &test_negative_timeout_raises_exception9BaseQueueTestMixin.test_negative_timeout_raises_exception   sr    NN:&z**EE!RE  +z**EE!RE  +* +****s   B
,B
B	B.	c                2   V P                  \        4      p\        \        4       F  pVP                  ^4       K  	  V P	                  V P
                  P                  4      ;_uu_ 4        VP                  ^4       RRR4       \        \        4       F  pVP                  4        K  	  V P	                  V P
                  P                  4      ;_uu_ 4        VP                  4        RRR4       R#   + '       g   i     L~; i  + '       g   i     R# ; i)r}   N)	r   rk   rj   
put_nowaitr   r   rl   
get_nowaitrm   r   r   rp   s   &  r   test_nowaitBaseQueueTestMixin.test_nowait   s    NN:&z"ALLO #tzz//LLO 0 z"ALLN #tzz//00LLN 10 0/
 100s   *C2D2D	D	c                F   V P                  ^4      pVP                  ^4       VP                  ^4       VP                  ^4       V P                  V P                  P                  4      ;_uu_ 4        VP                  ^4       RRR4       V P                  VP                  4       ^4       ^Vn        V P                  V P                  P                  4      ;_uu_ 4        VP                  ^4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)   N)	r   re   r   r   rl   r   rh   r   r   r   s   & r   test_shrinking_queue'BaseQueueTestMixin.test_shrinking_queue   s    NN1	a	a	atzz//LLO 0A&	tzz//LLO 0/	 0/ 0//s   2C< D<D	D 	c                   V P                  4       pVP                  4        V P                  V P                  P                  4      ;_uu_ 4        VP                  R 4       RRR4       V P                  V P                  P                  4      ;_uu_ 4        VP                  4        RRR4       R#   + '       g   i     LX; i  + '       g   i     R# ; idataN)r   shutdownr   r   ShutDownre   rg   r   s   & r   test_shutdown_empty&BaseQueueTestMixin.test_shutdown_empty   s    NN	

tzz2233EE&M 4tzz2233EEG 43 43333s   B0C0C 	C	c                <   V P                  4       pVP                  R 4       VP                  4        VP                  4        V P	                  V P
                  P                  4      ;_uu_ 4        VP                  4        RRR4       R#   + '       g   i     R# ; ir   )r   re   r   rg   r   r   r   r   s   & r   test_shutdown_nonempty)BaseQueueTestMixin.test_shutdown_nonempty   s^    NN	f	

	tzz2233EEG 4333s   /B

B	c                    V P                  4       pVP                  R 4       VP                  RR7       V P                  V P                  P
                  4      ;_uu_ 4        VP                  4        RRR4       R#   + '       g   i     R# ; i)r   T	immediateN)r   re   r   r   r   r   rg   r   s   & r   test_shutdown_immediate*BaseQueueTestMixin.test_shutdown_immediate  sZ    NN	f	

T
"tzz2233EEG 4333s   !A<<B	c                0   V P                  4       pV P                  VP                  4       VP                  4        V P	                  VP                  4       VP                  R R7       V P	                  VP                  4       VP                  RR7       R# )Tr   FN)r   rc   is_shutdownr   rb   r   s   & r   !test_shutdown_allowed_transitions4BaseQueueTestMixin.test_shutdown_allowed_transitions  se    NN'	

&	

T
"&	

U
#r   c                (   V P                  ^4      pVP                  R4       VP                  R4       VP                  V4       V P	                  V P
                  P                  4      ;_uu_ 4        VP                  R4       RRR4       V P	                  V P
                  P                  4      ;_uu_ 4        VP                  R4       RRR4       V'       d   V P	                  V P
                  P                  4      ;_uu_ 4        VP                  4        RRR4       V P	                  V P
                  P                  4      ;_uu_ 4        VP                  4        RRR4       V P	                  \        4      ;_uu_ 4        VP                  4        RRR4       VP                  4        R# V P                  VP                  4       R4       VP                  4        V P                  VP                  4       R4       VP                  4        VP                  4        V P	                  V P
                  P                  4      ;_uu_ 4        VP                  4        RRR4       V P	                  V P
                  P                  4      ;_uu_ 4        VP                  4        RRR4       V P	                  V P
                  P                  4      ;_uu_ 4        VP                  RR4       RRR4       R#   + '       g   i     ELz; i  + '       g   i     ELG; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     R# ; i)	   LOENWLOTg      ?)r   re   r   r   r   r   r   rg   r   r   rv   r   assertIn)r   r   r   s   && r   #_shutdown_all_methods_in_one_thread6BaseQueueTestMixin._shutdown_all_methods_in_one_thread  s"   NN1	c
	S	

9tzz2233EE#J 4tzz2233LL 4""4::#6#677 8""4::#6#677 8"":.. /FFHMM!%%'4(KKMMM!%%'4(KKMFFH ""4::#6#677 8""4::#6#677 8""4::#6#677dC  871 433333 877777... 87777777s`   2K59L	LL1MMM-N 5L		L	L.	1M	M	M*	-M=	 N	c                $    V P                  R 4      # Fr   r&   s   &r   'test_shutdown_all_methods_in_one_thread:BaseQueueTestMixin.test_shutdown_all_methods_in_one_thread9  s    77>>r   c                $    V P                  R 4      # Tr   r&   s   &r   1test_shutdown_immediate_all_methods_in_one_threadDBaseQueueTestMixin.test_shutdown_immediate_all_methods_in_one_thread<  s    77==r   c                   \        ^ V^,          4       F  pVP                  VR34       K  	  VP                  4        \        V^,          V4       FX  p VP                  VR34       Yt8X  g   K  TP                  4       '       d   K7  TP                  4        TP                  R4       KZ  	  R#   T P                  P                   d    TP                  R4         R# i ; i)r   LOYDYDLOFTN)rj   re   waitr   r   r   r6   r%   )r   r   nresultsi_when_exec_shutdownevent_shutdownbarrier_startrp   s   &&&&&&& r   _write_msg_thread$BaseQueueTestMixin._write_msg_thread?  s    
 q.12AEE1f+ 3 	+Q.2Aq&k" (%,,.."&&(NN4( 3 ::&& u%s   B//,C C c                N   VP                  R 4       VP                  4        VP                  4          VP                  R4       VP                  4        K%    T P                  P                   d    TP                  R 4        R# T P                  P                   d     Kq  i ; i)TFN)rg   rv   r   r   r   r   rm   )r   r   r   r   s   &&&&r   _read_msg_thread#BaseQueueTestMixin._read_msg_threadW  s{    	d	e::&& t$::## s   !A ,B$B$B$#B$c                    VP                  4        VP                  V4       VP                  VP                  4       ^ 8H  4       R# rG   )r   r   r   r   )r   r   r   	event_endr   s   &&&&&r   _shutdown_thread#BaseQueueTestMixin._shutdown_threadg  s.    	

9qwwyA~&r   c                F    VP                  4        VP                  4        R # r   )r   r   )r   r   r   s   &&&r   _join_threadBaseQueueTestMixin._join_threadl  s    	r   c           	     n   V P                  4       p. p. p. p. p^p^p^p	Rp
W,          pV^,          pWx,           pV'       d	   W,          p\        P                  ! V4      p\        P                  ! 4       pV P                  WrWWV33V P
                  WW^33V P                  ^W&W33.pV'       d    VP                  V P                  WV334       V FW  w  ppp\        V4       FA  pVP                  \        P                  ! VVR7      4       VR,          P                  4        KC  	  KY  	  V F  pVP                  4        K  	  V P                  RV9   4       V P                  VP                  R4      V4       V'       d5   V P!                  VR.4       V P                  VP#                  4       4       R# R# )   r{   TNi   r~   )r   r   Barrierr   r   r   r   r   r   rj   r   r4   r   rb   rh   countassertListEqualr_   )r   r   r   psres_putsres_getsres_shutdownwrite_threadsread_threadsjoin_threadsnb_msgs	nb_msgs_wwhen_exec_shutdownnpartiesr   ev_exec_shutdownlprocsfuncr   r   rp   r=   s   &&                    r   %_shutdown_all_methods_in_many_threads8BaseQueueTestMixin._shutdown_all_methods_in_many_threadsq  s    NN,	&!^ !/$H!))(3$??,##]	,>,95; < ""Lh2NO""A9I'UV MM4,,l<NOP#MD!T1X		)**$TBC2  $ FKKM  	()-|<  v6OOAGGI& r   c                $    V P                  R 4      # r   r   r&   s   &r   )test_shutdown_all_methods_in_many_threads<BaseQueueTestMixin.test_shutdown_all_methods_in_many_threads  s    99%@@r   c                $    V P                  R 4      # r   r   r&   s   &r   3test_shutdown_immediate_all_methods_in_many_threadsFBaseQueueTestMixin.test_shutdown_immediate_all_methods_in_many_threads  s    99$??r   c                    VP                  4         VP                  4       pVP                  V'       * 4       V'       * #   T P                  P                   d    TP                  T4       Tu # i ; ir   )r   rg   r   r   r   )r   r   gor   r   msgs   &&&&& r   _getBaseQueueTestMixin._get  s[    
		%%'CNNx<(<zz"" 	NN8$O	s   ,? .A0/A0c                (    V P                  WVR 4      # r   )r   )r   r   r   r   s   &&&&r   _get_shutdown BaseQueueTestMixin._get_shutdown  s    yy..r   c                    VP                  4         VP                  4       pVP                  4        VP                  R 4       V#   T P                  P
                   d    TP                  R4        R# i ; i)TF)r   rg   rv   r   r   r   )r   r   r   r   r   s   &&&& r   _get_task_done!BaseQueueTestMixin._get_task_done  s]    
		%%'CKKMNN4 Jzz"" 	NN5!	s   2A ,A54A5c                    VP                  4         VP                  V4       VP                  V'       * 4       V'       * #   T P                  P                   d    TP                  T4       Tu # i ; ir   )r   re   r   r   r   )r   r   r   r   r   r   s   &&&&&&r   _putBaseQueueTestMixin._put  s[    
		EE#JNNx<(<zz"" 	NN8$O	s   -A   .A10A1c                (    V P                  WW4R 4      # r   )r  )r   r   r   r   r   s   &&&&&r   _put_shutdown BaseQueueTestMixin._put_shutdown  s    yyd33r   c                     VP                  4        VP                  V'       * 4       V'       * #   T P                  P                   d    TP                  T4       Tu # i ; ir   )r   r   r   r   )r   r   r   r   s   &&&&r   _joinBaseQueueTestMixin._join  sP    	FFHNNx<(<zz"" 	NN8$O	s   ,/ .A A c                &    V P                  WR 4      # r   )r
  )r   r   r   s   &&&r   _join_shutdown!BaseQueueTestMixin._join_shutdown  s    zz!d++r   c                   V P                  ^4      p. p\        P                  ! 4       pVP                  R4       VP                  R4       V'       d"   V P                  W$V33V P                  W$V333pM/V P
                  W$V33V P
                  W$V33V P
                  W$V333p. pV FB  w  rxVP                  \        P                  ! WxR7      4       VR,          P                  4        KD  	  VP                  V4       VP                  4        V F  p	V	P                  4        K  	  V'       d   V P                  VRR.4       R# V P                  \        V4      R.R.\        V4      ^,
          ,          ,           4       R# )r   YDr{   TFNr~   )r   r   r   re   r   r   r   r   r4   r   r%   r   r   sortedlen
r   r   r   r   r   thrdsr   r   paramsts
   &&        r   _shutdown_get BaseQueueTestMixin._shutdown_get  sJ   NN1__	c
	c
 ##aW%56##aW%56E QG,-QG,-QG,-E !LDNN9++4EFBK " 	


9
AFFH   4,7  5'TFCJqL<Q2QRr   c                $    V P                  R 4      # r   r  r&   s   &r   test_shutdown_get$BaseQueueTestMixin.test_shutdown_get      !!%((r   c                $    V P                  R 4      # r   r  r&   s   &r   test_shutdown_immediate_get.BaseQueueTestMixin.test_shutdown_immediate_get      !!$''r   c                *   V P                  ^4      p. p\        P                  ! 4       pVP                  R4       VP                  R4       V P                  VRWC33V P                  VRWC333p. pV FB  w  rxVP                  \        P                  ! WxR7      4       VR,          P                  4        KD  	  VP                  4        VP                  4        V F  p	V	P                  4        K  	  V P                  VR.\        V4      ,          4       R# )	r   r  r  r   r   r{   TNr~   )r   r   r   re   r  r   r   r4   r   r%   r   rh   r  r  s
   &&        r   _shutdown_put BaseQueueTestMixin._shutdown_put   s    NN1__	c
	c
 !S"!67!S"!67
 !LDNN9++4EFBK " 	



AFFH  	4&U"34r   c                $    V P                  R 4      # r   r$  r&   s   &r   test_shutdown_put$BaseQueueTestMixin.test_shutdown_put  r  r   c                $    V P                  R 4      # r   r'  r&   s   &r   test_shutdown_immediate_put.BaseQueueTestMixin.test_shutdown_immediate_put  r"  r   c           	        V P                  4       p. pVP                  R 4       \        P                  ! 4       pVP	                  4       pV P
                  W#33V P
                  W#333p. pV FB  w  rVP                  \        P                  ! WR7      4       VR,          P                  4        KD  	  V'       g_   . p
\        V4       FM  pVP                  \        P                  ! V P                  W$V
3R7      4       VR,          P                  4        KO  	  VP                  V4       VP                  4        V F  pVP                  4        K  	  V P                  VR.\        V4      ,          4       R# )r  r{   TNr~   )r   re   r   r   r   r
  r   r   r4   rj   r  r   r%   r   rh   r  )r   r   r   r   r   nbr  r   r   r  resrp   r  s   &&           r   _shutdown_join!BaseQueueTestMixin._shutdown_join  s)   NN	c
__WWY ZZ!&ZZ!&
 !LDNN9++4EFBK " C2Yy//t7J7JRSY\Q]^_!!#  	


9
AFFH  	4&U"34r   c                $    V P                  R 4      # r   r0  r&   s   &r   test_shutdown_immediate_join/BaseQueueTestMixin.test_shutdown_immediate_join8  s    ""4((r   c                $    V P                  R 4      # r   r3  r&   s   &r   test_shutdown_join%BaseQueueTestMixin.test_shutdown_join;  s    ""5))r   c                f   V P                  ^4      p. p\        P                  ! 4       pVP                  R4       V P                  VRWC33V P
                  W#333p. pV FB  w  rxVP                  \        P                  ! WxR7      4       VR,          P                  4        KD  	  V P                  VP                  ^4       VP                  V4       VP                  4        V'       dH   V P                  V P                  P                  4      ;_uu_ 4        VP!                  4        RRR4       M2VP#                  4       p	V P                  V	R4       VP%                  4        V F  p
V
P'                  4        K  	  V P                  VR.\)        V4      ,          4       R#   + '       g   i     LN; i)r   r  r   r{   NTr~   )r   r   r   re   r  r
  r   r   r4   rh   unfinished_tasksr   r%   r   r   r   r   rg   rv   r   r  )r   r   r   r   r   r  r   r   r  r5   r  s   &&         r   _shutdown_put_join%BaseQueueTestMixin._shutdown_put_join>  sM   NN1__	c
 !S"!67ZZ!&
 !LDNN9++4EFBK " 	++Q/	

9
""4::#6#677 87 UUWFVS)KKMAFFH  	4&U"34 87s   F  F0	c                $    V P                  R 4      # r   r;  r&   s   &r    test_shutdown_immediate_put_join3BaseQueueTestMixin.test_shutdown_immediate_put_join_  s    &&t,,r   c                $    V P                  R 4      # r   r>  r&   s   &r   test_shutdown_put_join)BaseQueueTestMixin.test_shutdown_put_joinb  s    &&u--r   c                   V P                  ^4      p. p\        P                  ! 4       pVP                  R4       VP                  R4       V P	                  VP
                  VP                  4       4       V P                  WV33V P                  WV33V P                  W33V P                  W333p. pV FB  w  rgVP                  \        P                  ! WgR7      4       VR,          P                  4        KD  	  VP                  4        VP                  R4       V F  pVP                  4        K  	  V P	                  VR.\        V4      ,          4       R# )r   r  r  r{   FTNr~   )r   r   r   re   rh   r:  r   r  r
  r   r   r4   r%   r   r   r  )	r   r   r   r   r  r   r   r  r  s	   &        r    test_shutdown_get_task_done_join3BaseQueueTestMixin.test_shutdown_get_task_done_joine  s   NN1__	c
	c
++QWWY7   1'"23  1'"23ZZ!&ZZ!&	
 !LDNN9++4EFBK " 		

5AFFH  	4&U"34r   c                  aa VV3R  lpV P                  4       o. o\        P                  ! VR7      pVP                  4        SP	                  RR7       VP                  RR7       V P                  VP                  4       4       V P                  \        S4      ^4       V P                  S^ ,          V P                  P                  4       R# )c                     <  SP                  SP                  4       4       R #   \         d   p SP                  T 4        R p ? R # R p ? ii ; ir   )r   rg   	Exception)er   r   s    r   rg   9BaseQueueTestMixin.test_shutdown_pending_get.<locals>.get  s9    "quuw' "q!!"s   $ AAA)r|   Fr   g      $@rX   N)r   r   r   r4   r   r   rc   is_aliverh   r  assertIsInstancer   r   )r   rg   
get_threadr   r   s   &  @@r   test_shutdown_pending_get,BaseQueueTestMixin.test_shutdown_pending_get~  s    	" NN%%S1
	

U
#%,,./Wq)gaj$***=*=>r   )rH   rJ   Nr   )3r)   r*   r+   r,   rK   rr   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r
  r  r  r  r   r$  r(  r+  r0  r4  r7  r;  r?  rB  rE  rO  r-   r.   r/   s   @r   rE   rE   \   s     (6Dr$BB!!
$!B?>)0 '

.'`A@/	4, SD)(5.)(56)*5B-.52? ?r   rE   c                   2   a a ] tR tRt oV 3R ltRtVtV ;t# )	QueueTesti  c                Z   < V P                   P                  V n        \        SV `  4        R # r   )r   rP   r   superrK   r   ri   s   &r   rK   QueueTest.setUp  s    ))r   r   r)   r*   r+   r,   rK   r-   r.   __classcell__ri   r0   s   @@r   rR  rR          r   rR  c                       ] tR tRt]tRtR# )PyQueueTesti  r]   Nr)   r*   r+   r,   py_queuer   r-   r]   r   r   r]  r]        Er   r]  c                       ] tR tRt]tRtR# )
CQueueTesti  r]   Nr)   r*   r+   r,   c_queuer   r-   r]   r   r   rb  rb        Er   rb  c                   2   a a ] tR tRt oV 3R ltRtVtV ;t# )LifoQueueTesti  c                Z   < V P                   P                  V n        \        SV `  4        R # r   )r   rQ   r   rT  rK   rU  s   &r   rK   LifoQueueTest.setUp  s    --r   rW  rX  rZ  s   @@r   rg  rg    r[  r   rg  c                       ] tR tRt]tRtR# )PyLifoQueueTesti  r]   Nr^  r]   r   r   rk  rk    r`  r   rk  c                       ] tR tRt]tRtR# )CLifoQueueTesti  r]   Nrc  r]   r   r   rm  rm    re  r   rm  c                   2   a a ] tR tRt oV 3R ltRtVtV ;t# )PriorityQueueTesti  c                Z   < V P                   P                  V n        \        SV `  4        R # r   )r   rR   r   rT  rK   rU  s   &r   rK   PriorityQueueTest.setUp  s    11r   rW  rX  rZ  s   @@r   ro  ro    r[  r   ro  c                       ] tR tRt]tRtR# )PyPriorityQueueTesti  r]   Nr^  r]   r   r   rs  rs    r`  r   rs  c                       ] tR tRt]tRtR# )CPriorityQueueTesti  r]   Nrc  r]   r   r   ru  ru    re  r   ru  c                       ] tR tRtRtR# )FailingQueueExceptioni  r]   Nr)   r*   r+   r,   r-   r]   r   r   rw  rw    s    r   rw  c                   >   a a ] tR tRt oV 3R ltR tR tRtVtV ;t	# )FailingQueueTesti  c                z   <a V P                   P                  o ! V3R  lRS4      pWn        \        SV `  4        R# )c                   F   <a  ] tR tRt o V3R ltV3R ltV3R ltRtV tR# ),FailingQueueTest.setUp.<locals>.FailingQueuei  c                L   < R V n         R V n        SP                  ! V .VO5!   R# )FN)fail_next_putfail_next_getr   )r   r   rP   s   &*r   r   5FailingQueueTest.setUp.<locals>.FailingQueue.__init__  s$    %*"%*"t+d+r   c                n   < V P                   '       d   R V n         \        R4      hSP                  W4      # FzYou Lose)r  rw  r  )r   itemrP   s   &&r   r  1FailingQueueTest.setUp.<locals>.FailingQueue._put  s1    %%%).D&/
;;zz$--r   c                n   < V P                   '       d   R V n         \        R4      hSP                  V 4      # r  )r  rw  r   )r   rP   s   &r   r   1FailingQueueTest.setUp.<locals>.FailingQueue._get  s1    %%%).D&/
;;zz$''r   )r  r  N)	r)   r*   r+   r,   r   r  r   r-   r.   )r0   rP   s   @r   FailingQueuer}    s     ,.
( (r   r  N)r   rP   r  rT  rK   )r   r  rP   ri   s   & @r   rK   FailingQueueTest.setUp  s/    

  	(5 	(  )r   c                   VP                  4       '       d   \        R 4      h\        \        ^,
          4       F  pVP	                  V4       K  	  RVn         VP	                  R^ R7       V P                  R4       RVn         VP	                  RRR7       V P                  R4       VP	                  R4       V P                  \        V4      R4       RVn         V P                  VP                  RVP                  R4       V P                  R4       VP	                  R4       RVn         V P                  VP                  RVP                  R\        4       V P                  R4       VP	                  R4       V P                  \        V4      R4       VP                  4        V P                  \        V4      '       * R	4       VP	                  R4       V P                  \        V4      R4       V P                  VP                  RVP                  R4       \        \        4       F  pVP                  4        K  	  V P                  VP                  4       '       * R
4       VP	                  R4       RVn         VP                  4        V P                  R4       V P                  VP                  4       R4       RVn         VP                  RR7       V P                  R4       V P                  VP                  4       R4       VP                  4        V P                  VP                  4       '       * R
4       RVn         V P                  VP                  RVP                  R\        4       V P                  R4       V P                  VP                  4       R4       VP                  4        V P                  VP                  4       '       * R
4       R#   \         d     ELpi ; i  \         d     ELVi ; i  \         d     ELi ; i  \         d     ELi ; i  \         d     ELi ; i  \         d     ELZi ; i  \         d     Li ; i)rN   ToopsrV   z)The queue didn't fail when it should haver"   rX   rq   rU   rT   rZ   firstrS   N)rd   r]   )rd   Tr`   r^   )r   ra   rj   rk   re   r  r7   rw  rb   r   r>   rg   rB   r  r   s   && r   failing_queue_test#FailingQueueTest.failing_queue_test  sn   7799GHHz!|$AEE!H % 	EE&E"IIAB 	EE&#E&IIAB 	
fa"89	!!!%%AEE2>IIAB
 	
f	--aee5GPR.CEIIAB
 	
fa"89	E!H&@A	fa"89aeeYr:z"AEEG #AGGI'>?	g	EEGIIAB 		#>?	EE#EIIAB 		#>?	AGGI'>?	--aeeR
.CEIIAB 		#>?	AGGI'>?K % 		 % 		 % 		 % 		* % 		 % 		 % 		s~   $O $O0 9P .>P  !P& 	#P8 	>Q
 O-,O-0O?>O?PPP#"P#&P54P58QQ
QQc                t    V P                  \        4      pV P                  V4       V P                  V4       R # r   )r  rk   r  r   s   & r   test_failing_queue#FailingQueueTest.test_failing_queue.  s0     j)""r   )r  )
r)   r*   r+   r,   rK   r  r  r-   r.   rY  rZ  s   @@r   rz  rz    s     0O@b# #r   rz  c                       ] tR tRt]tRtR# )PyFailingQueueTesti8  r]   Nr^  r]   r   r   r  r  8  r`  r   r  c                       ] tR tRt]tRtR# )CFailingQueueTesti<  r]   Nrc  r]   r   r   r  r  <  re  r   r  c                      a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 t]! ^2RRR7      R 4       t]! ^2RRR7      R 4       t]! ^2RRR7      R 4       tR tRtV tR# )BaseSimpleQueueTestiA  c                0    V P                  4       V n        R # r   )r   r   r&   s   &r   rK   BaseSimpleQueueTest.setUpC  s    !r   c                     VP                  4       pTP                  T4       TP                  4       R8  g   K:  \        P
                  ! TP                  4       R,          4       Kg    \         d    TP                  T4        R# i ; i)TNg      ?MbP?)pop
IndexErrorre   randomr#   r$   )r   r   seqrndsentinelvals   &&&&& r   feedBaseSimpleQueueTest.feedF  sf    ggi EE#Jzz|c!

3::<$./  hs   A( (BBc                Z     VP                  4       pWC8X  d   R# VP                  V4       K,  ru   )rg   r   r   r   r   r  r  s   &&&& r   consumeBaseSimpleQueueTest.consumeQ  s$    %%'CNN3r   c                       VP                  RR7      p YC8X  d   R# TP                  T4       K1    T P                  P                   d    \        P                  ! R4        Kd  i ; i)TFrV   h㈵>N)rg   r   rm   r#   r$   r   r  s   &&&& r   consume_nonblock$BaseSimpleQueueTest.consume_nonblockX  s]    %%e%,C NN3 zz'' %JJt$%s   2 1A'&A'c                       VP                  RR7      p YC8X  d   R# TP                  T4       K1    T P                  P                   d     KN  i ; i)Tr  rX   N)rg   r   rm   r   r  s   &&&& r   consume_timeout#BaseSimpleQueueTest.consume_timeoute  sT    %%%-C NN3 zz'' s   2 AAc           
       a . pR pVP                  4       pVP                  4        \        P                  ! ^*4      p	. oV3R lp
\	        V4       Uu. uF#  p\
        P                  ! V
! V4      W(W3R7      NK%  	  pp\	        V4       Uu. uF#  p\
        P                  ! V
! V4      W&V3R7      NK%  	  pp\        P                  ! W,           4      ;_uu_ 4         R R R 4       V P                  S4       V P                  VP                  4       4       V P                  VP                  4       ^ 4       V# u upi u upi   + '       g   i     Ll; i)Nc                    <a  VV 3R  lpV# )c                  n   <  S! V / VB  R #   \          d   pSP                  T4        R p?R # R p?ii ; ir   )BaseExceptionr   )r   kwargsrJ  
exceptionsfs   *, r   wrapperHBaseSimpleQueueTest.run_threads.<locals>.log_exceptions.<locals>.wrapper{  s6    )t&v&$ )%%a(()s    4/4r]   )r  r  r  s   f r   log_exceptions7BaseSimpleQueueTest.run_threads.<locals>.log_exceptionsz  s    )
 Nr   r{   )copyreverser  Randomrj   r   r   r   start_threadsrc   rb   r_   rh   r   )r   	n_threadsr   inputs	feed_funcconsume_funcr   r  r  r  r  rp   feeders	consumersr  s   &&&&&&        @r   run_threadsBaseSimpleQueueTest.run_threadsr  s-   kkmmmB
	 "),.,q ##>)+D*+#)@B, 	 .
 $I.0. %%^L-I,-+AC. 	 0 ++G,?@@ A 	$	"A&.0 A@s   )D4	)D9D>>E	c                @   V P                   pV P                  VP                  4       4       V P                  VP	                  4       ^ 4       VP                  ^4       V P                  VP                  4       4       V P                  VP	                  4       ^4       VP                  ^4       VP                  ^4       VP                  ^4       V P                  VP                  4       4       V P                  VP	                  4       ^4       V P                  VP                  4       ^4       V P                  VP	                  4       ^4       V P                  VP                  4       ^4       V P                  VP	                  4       ^4       V P                  VP                  RR7      ^4       V P                  VP                  4       4       V P                  VP	                  4       ^4       V P                  VP                  RR7      ^4       V P                  VP                  4       4       V P                  VP	                  4       ^ 4       V P                  V P                  P                  4      ;_uu_ 4        VP                  RR7       RRR4       V P                  V P                  P                  4      ;_uu_ 4        VP                  RR7       RRR4       V P                  V P                  P                  4      ;_uu_ 4        VP                  4        RRR4       V P                  VP                  4       4       V P                  VP	                  4       ^ 4       R#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     Lw; i)r   FrV   r"   rX   Nr  )r   rb   r_   rh   r   re   rc   r   rg   r   r   r   rm   r   s   & r   r   BaseSimpleQueueTest.test_basic  sW   FF	"A&	a#A&	a	Q	a#A&!$A&+A&U+Q/#A&s+Q/	"A&tzz//00EEE 1tzz//00EE$E 1tzz//00LLN 1	"A& 100000s$   =M'M:N'M7	:N
	N	c                    V P                   pVP                  ^4       V P                  \        4      ;_uu_ 4        VP	                  RR7       RRR4       R#   + '       g   i     R# ; ir   )r   re   r   r   rg   r   s   & r   r   :BaseSimpleQueueTest.test_negative_timeout_raises_exception  sD    FF	az**EE"E +***s   AA)	c                    V P                   p\        \        ^d4      4      pV P                  ^WV P                  V P
                  4      pV P                  W24       R# )d   N)r   listrj   r  r  r  rh   )r   r   r  r   s   &   r   
test_orderBaseSimpleQueueTest.test_order  sG    FFeCj!""1aDLLI 	)r   F)sizememusedry_runc                    V P                   p\        \        R 4      4      pV P                  WW0P                  V P
                  4      pV P                  \        V4      V4       R# '  N)r   r  rj   r  r  r  rh   r  r   r  r   r  r   s   &&   r   test_many_threads%BaseSimpleQueueTest.test_many_threads  sM     FFeEl#""4FIIt||L 	&1r   c                    V P                   p\        \        R 4      4      pV P                  WVV P                  V P
                  4      pV P                  \        V4      V4       R# r  )r   r  rj   r  r  r  rh   r  r  s   &&   r   test_many_threads_nonblock.BaseSimpleQueueTest.test_many_threads_nonblock  sU     FFeEl#""4F#'99d.C.CE 	&1r   c                    V P                   p\        \        R 4      4      pV P                  WVV P                  V P
                  4      pV P                  \        V4      V4       R# )  N)r   r  rj   r  r  r  rh   r  r  s   &&   r   test_many_threads_timeout-BaseSimpleQueueTest.test_many_threads_timeout  sU     FFeDk"""4F#'99d.B.BD 	&1r   c                2    ! R  R4      p^pV P                   p\        V4       F  pVP                  V! 4       4       K  	  \        V4       FG  p\        P                  ! VP                  4       4      p\        4        V P                  V! 4       4       KI  	  R# )c                       ] tR tRtRtR# ).BaseSimpleQueueTest.test_references.<locals>.Cr  r]   Nrx  r]   r   r   Cr    s    r   r  N)r   rj   re   weakrefrefrg   r   assertIsNone)r   r  Nr   rp   wrs   &     r   test_references#BaseSimpleQueueTest.test_references  sn    	 	 FFqAEE!#J qAQUUW%BLbd# r   r   Ni  @)r)   r*   r+   r,   rK   r  r  r  r  r  r   r   r  r   r  r  r  r  r-   r.   r/   s   @r   r  r  A  s     "	0   @#'J* R	592 :2 R	592 :2 R	592 :2$ $r   r  c                   6   a a ] tR tRt o]tV 3R ltRtVtV ;t	# )PySimpleQueueTesti  c                Z   < V P                   P                  V n        \        SV `  4        R # r   )r   _PySimpleQueuer   rT  rK   rU  s   &r   rK   PySimpleQueueTest.setUp  s    22r   rW  )
r)   r*   r+   r,   r_  r   rK   r-   r.   rY  rZ  s   @@r   r  r    s     E r   r  c                   B   a a ] tR tRt o]tV 3R ltR tR tRt	Vt
V ;t# )CSimpleQueueTesti  c                Z   < V P                   P                  V n        \        SV `  4        R # r   )r   SimpleQueuer   rT  rK   rU  s   &r   rK   CSimpleQueueTest.setUp  s    //r   c                    V P                  V P                  V P                  P                  4       V P                  V P                  V P                  P                  4       R # r   )assertIsr   r   r  r&   s   &r   test_is_default CSimpleQueueTest.test_is_default  s:    dnndjj&<&<=dnndjj&<&<=r   c           	     v  aa V P                   o\        P                  ! 4       oR p. p ! VV3R lR\        4      p V! 4       pSP	                  \        S4      4       ?VP                  SP                  4       4       VR,          V8  g   KR   T P                  T\        \        T^,           4      4      4       R# )r  c                   6   <a  ] tR tRt o R tVV3R ltRtV tR# )2CSimpleQueueTest.test_reentrancy.<locals>.Circulari  c                    W n         R # r   circularr&   s   &r   r   ;CSimpleQueueTest.test_reentrancy.<locals>.Circular.__init__  s     $r   c                <   < SP                  \        S4      4       R # r   )re   next)r   genr   s   &r   __del__:CSimpleQueueTest.test_reentrancy.<locals>.Circular.__del__  s    d3i r   r  N)r)   r*   r+   r,   r   r  r-   r.   )r0   r  r   s   @r   Circularr    s     %! !r   r  Nr~   )r   	itertoolsr   objectre   r  r   rg   rh   r  rj   )r   r  r   r  or  r   s   &    @@r   test_reentrancy CSimpleQueueTest.test_reentrancy
  s     FFoo
	! 	!v 	! 
AEE$s)NN1557#r{a$uQU|"45r   rW  )r)   r*   r+   r,   rd  r   rK   r  r	  r-   r.   rY  rZ  s   @@r   r  r    s       E>6 6r   r  __main__)+r  r  r   r#   unittestr  test.supportr   r   r   r   requires_working_threadingimport_fresh_moduler_  rd  
skipUnlessneed_c_queuerk   r   r   r   r2   rE   rR  TestCaser]  rb  rg  rk  rm  ro  rs  ru  rI  rw  rz  r  r  r  r  r  r)   mainr]   r   r   <module>r     s'         / & )  + +4 8,,WxjI

+
+GH:
F""7,DE
4Y%% @F FDq?* q?h" )X..  H--  & mX%6%6  ]H$5$5  * +X->->  *H,=,=  
 -I ,q#( q#j)8+<+<  ((*;*;  q$ q$h+X->->  &6*H,=,= &6 &6R zMMO r   