
    <euR                        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	  e	j
        d            ej        ddg	          Z ej        ddg
          Z ej        ed          ZdZd Z G d dej                  Z G d d          Z G d de          Z G d de          Z G d deej                  Ze G d deej                              Z G d de          Z G d deej                  Ze G d deej                              Z G d  d!e          Z G d" d#eej                  Ze G d$ d%eej                              Z G d& d'e           Z! G d( d)e          Z" G d* d+e"ej                  Z#e G d, d-e"ej                              Z$ G d. d/          Z% G d0 d1e%ej                  Z&e G d2 d3e%ej                              Z'e(d4k    r ej)                     dS dS )5    N)
gc_collect)import_helper)threading_helperT)modulequeue_queue)blocked)freshzNo _queue module found   c                 R    | j         dk    o|                                 | j         k    S Nr   )maxsizeqsize)qs    &/usr/lib/python3.11/test/test_queue.pyqfullr      s"    9q=3QWWYY!)33    c                       e Zd Zd Zd ZdS )_TriggerThreadc                     || _         || _        t          j                    | _        t          j                            |            d S N)fnargs	threadingEventstartedEventThread__init__)selfr   r   s      r   r   z_TriggerThread.__init__   s=    	%O--!!$'''''r   c                 ~    t          j        d           | j                                          | j        | j          d S )N皙?)timesleepr   setr   r   r   s    r   runz_TriggerThread.run!   s=     	
3r   N)__name__
__module____qualname__r   r&    r   r   r   r      s2        ( ( (    r   r   c                       e Zd Zd Zd ZdS )BlockingTestMixinc                 *   t          ||          }|                                 	  || | _        |j                                        s|                     d|z             | j        t          j        |           S # t          j        |           w xY w)Nz*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_testz"BlockingTestMixin.do_blocking_test<   s    l;;	1$*j1DK&--// &		F$% & & &;(0000(0000s   AA< <Bc                    t          ||          }|                                 	 	  ||  |                     d|z             n
# |$ r  w xY w	 t          j        |           |j                                        s|                     d           d S d S # t          j        |           |j                                        s|                     d           w w xY w)Nzexpected exception of kind %rz(trigger thread ended but event never set)r   r.   r1   r   r2   r   r0   )r   r3   r4   r5   r6   expected_exception_classr7   s          r   do_exceptional_blocking_testz.BlockingTestMixin.do_exceptional_blocking_testJ   s   l;;	F;
J'' 		9!9: ; ; ; ; ,   ; (000&--// F		DEEEEEF F (000&--// F		DEEEEFs   A B AB ACN)r'   r(   r)   r8   r;   r*   r   r   r,   r,   :   s7        1 1 1F F F F Fr   r,   c                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )BaseQueueTestMixinc                 D    d| _         t          j                    | _        d S r   )cumr   Lockcumlockr%   s    r   setUpzBaseQueueTestMixin.setUp]   s     ~''r   c                 X   |                                 rt          d          |                     |                                           |                     |                                           |                    d           |                    d           |                    d           t          g dg dg d          }|                                |                                |                                g}| 	                    |||j
        j                 d	           t          t          d
z
            D ]?}|                    |           |                     |                                 d           @|                     t          |           d           dt          z  }dt          z  }|                    |           |                     t          |          d           |                     |                                           |                     |                                           	 |                    |d           |                     d           n# | j        j        $ r Y nw xY w	 |                    |d           |                     d           n# | j        j        $ r Y nw xY w|                     |j        |f|j        d           |                     |j        |ddf|j        d           t          t                    D ]}|                                 |                     |                                  d           	 |                    d           |                     d           n# | j        j        $ r Y nw xY w	 |                    d           |                     d           n# | j        j        $ r Y nw xY w|                     |j        d|j        d           |                     |j        d|j        d           d S )N&Call this function with an empty queueo   M     )rE   rF   rG   )rG   rF   rE   )rE   rG   rF   )Queue	LifoQueuePriorityQueuez&Didn't seem to queue the correct data!   Queue should not be emptyQueue should not be full      Queue should be fullr   blockz(Didn't appear to block with a full queueg{Gz?timeoutz+Didn't appear to time-out with a full queuer*   T
   Queue should be emptyz*Didn't appear to block with an empty queuez-Didn't appear to time-out with an empty queueempty)TrU   )r   RuntimeError
assertTruerX   assertFalsefullputdictgetassertEqual	__class__r'   range
QUEUE_SIZEr   r1   r   Fullr8   Empty)r   r   target_orderactual_orderilastr\   s          r   basic_queue_testz#BaseQueueTestMixin.basic_queue_testa   s   7799 	IGHHH		""""""	c


	c


	c


OOO(7,;OO= = = !%%''2|AK4H'IA	C 	C 	Cz!|$$ 	D 	DAEE!HHHOOAGGII'BCCCCE!HH&@AAA:~z!	da"8999###!!!	EE$aE   II@AAAAz 	 	 	D		EE$E%%%IICDDDDz 	 	 	D	 	aedWaeR888aedD"%5qubAAAz"" 	 	AEEGGGGAGGII'>???	EEENNNIIBCCCCz 	 	 	D		EE$EIIEFFFFz 	 	 	D	 	aeR
;;;aeZ
CCCCCsH   ,I. .J ?J ,J1 1KK#+N N! N!%+O O#"O#c                     	 |                                 }|dk     r|                                 d S | j        5  | xj        |z  c_        d d d            n# 1 swxY w Y   |                                 t)NTr   )r_   	task_donerA   r?   )r   r   xs      r   workerzBaseQueueTestMixin.worker   s    	A1uu  A              KKMMM	s   AAAc                    d| _         g }dD ]G}t          j        | j        |f          }|                                 |                    |           Ht          d          D ]}|                    |           |                                 | 	                    | j         t          t          d                    d           dD ]}|                    d           |                                 |D ]}|                                 d S )Nr   )r   rK   targetr   d   z0q.join() did not block until all tasks were done)r?   r   r   rn   r.   appendrb   r]   joinr`   sum)r   r   threadsrh   r7   s        r   queue_join_testz"BaseQueueTestMixin.queue_join_test   s    	# 	#A%T[tDDDFLLNNNNN6""""s 	 	AEE!HHHH	3uSzz??K	M 	M 	M 	 	AEE"IIII	 	 	FKKMMMM	 	r   c                     |                                  }	 |                                 |                     d           d S # t          $ r Y d S w xY wNz(Did not detect task count going negative)	type2testrl   r1   
ValueErrorr   r   s     r   test_queue_task_donez'BaseQueueTestMixin.test_queue_task_done   sc    NN	BKKMMM II@AAAAA  	 	 	DD	s   A 
AAc                     |                                  }|                     |           |                     |           	 |                                 |                     d           d S # t          $ r Y d S w xY wrz   )r{   rx   rl   r1   r|   r}   s     r   test_queue_joinz"BaseQueueTestMixin.test_queue_join   s     NNQQ	BKKMMM II@AAAAA  	 	 	DD	s    A+ +
A98A9c                     |                      t                    }|                     |           |                     |           d S r   )r{   rc   rj   r}   s     r   
test_basiczBaseQueueTestMixin.test_basic   sC     NN:&&a   a     r   c                 `   |                      t                    }|                     t                    5  |                    dd           d d d            n# 1 swxY w Y   |                     t                    5  |                    dd           d d d            d S # 1 swxY w Y   d S NrK   rs   rS   )r{   rc   assertRaisesr|   r]   r_   r}   s     r   &test_negative_timeout_raises_exceptionz9BaseQueueTestMixin.test_negative_timeout_raises_exception   s    NN:&&z** 	! 	!EE!RE   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!z** 	! 	!EE!RE   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s#   AA A>B##B'*B'c                    |                      t                    }t          t                    D ]}|                    d           |                     | j        j                  5  |                    d           d d d            n# 1 swxY w Y   t          t                    D ]}|                                 |                     | j        j                  5  |                                 d d d            d S # 1 swxY w Y   d S )NrK   )	r{   rc   rb   
put_nowaitr   r   rd   
get_nowaitre   r   r   rh   s      r   test_nowaitzBaseQueueTestMixin.test_nowait   si   NN:&&z"" 	 	ALLOOOOtz// 	 	LLOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 z"" 	 	ALLNNNNtz/00 	 	LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   &BBBC??DDc                 >   |                      d          }|                    d           |                    d           |                    d           |                     | j        j                  5  |                    d           d d d            n# 1 swxY w Y   |                     |                                d           d|_        |                     | j        j                  5  |                    d           d d d            d S # 1 swxY w Y   d S )N   rK   rN      )	r{   r]   r   r   rd   r   r`   r   r   r}   s     r   test_shrinking_queuez'BaseQueueTestMixin.test_shrinking_queue   sl   NN1	a	a	atz// 	 	LLOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	A&&&	tz// 	 	LLOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   4BBB/DDDN)r'   r(   r)   rB   rj   rn   rx   r~   r   r   r   r   r   r*   r   r   r=   r=   \   s        ( ( (6D 6D 6Dr    $B B BB B B! ! !! ! !
 
 
    r   r=   c                        e Zd Z fdZ xZS )	QueueTestc                 j    | j         j        | _        t                                                       d S r   )r   rH   r{   superrB   r   ra   s    r   rB   zQueueTest.setUp   s$    )r   r'   r(   r)   rB   __classcell__ra   s   @r   r   r      8                r   r   c                       e Zd ZeZdS )PyQueueTestNr'   r(   r)   py_queuer   r*   r   r   r   r              EEEr   r   c                       e Zd ZeZdS )
CQueueTestNr'   r(   r)   c_queuer   r*   r   r   r   r              EEEr   r   c                        e Zd Z fdZ xZS )LifoQueueTestc                 j    | j         j        | _        t                                                       d S r   )r   rI   r{   r   rB   r   s    r   rB   zLifoQueueTest.setUp  s$    -r   r   r   s   @r   r   r     r   r   r   c                       e Zd ZeZdS )PyLifoQueueTestNr   r*   r   r   r   r   
  r   r   r   c                       e Zd ZeZdS )CLifoQueueTestNr   r*   r   r   r   r     r   r   r   c                        e Zd Z fdZ xZS )PriorityQueueTestc                 j    | j         j        | _        t                                                       d S r   )r   rJ   r{   r   rB   r   s    r   rB   zPriorityQueueTest.setUp  s$    1r   r   r   s   @r   r   r     r   r   r   c                       e Zd ZeZdS )PyPriorityQueueTestNr   r*   r   r   r   r     r   r   r   c                       e Zd ZeZdS )CPriorityQueueTestNr   r*   r   r   r   r     r   r   r   c                       e Zd ZdS )FailingQueueExceptionNr'   r(   r)   r*   r   r   r   r   $  s          r   r   c                   *     e Zd Z fdZd Zd Z xZS )FailingQueueTestc                     | j         j         G fdd          }|| _        t                                                       d S )Nc                   .    e Zd Z fdZ fdZ fdZdS ),FailingQueueTest.setUp.<locals>.FailingQueuec                 @    d| _         d| _         j        | g|R   d S )NF)fail_next_putfail_next_getr   )r   r   rH   s     r   r   z5FailingQueueTest.setUp.<locals>.FailingQueue.__init__.  s3    %*"%*"t+d++++++r   c                 j    | j         rd| _         t          d                              | |          S NFzYou Lose)r   r   _put)r   itemrH   s     r   r   z1FailingQueueTest.setUp.<locals>.FailingQueue._put2  s8    % <).D&/
;;;zz$---r   c                 h    | j         rd| _         t          d                              |           S r   )r   r   _get)r   rH   s    r   r   z1FailingQueueTest.setUp.<locals>.FailingQueue._get7  s6    % <).D&/
;;;zz$'''r   N)r'   r(   r)   r   r   r   )rH   s   r   FailingQueuer   -  s`        , , , , ,. . . . .
( ( ( ( ( ( (r   r   )r   rH   r   r   rB   )r   r   rH   ra   s     @r   rB   zFailingQueueTest.setUp)  sa    
 	( 	( 	( 	( 	( 	( 	(5 	( 	( 	(  )r   c                 	   |                                 rt          d          t          t          dz
            D ]}|                    |           d|_        	 |                    dd           |                     d           n# t          $ r Y nw xY wd|_        	 |                    dd	           |                     d           n# t          $ r Y nw xY w|                    d
           |                     t          |          d           d|_        	 | 
                    |j        d|j        d           |                     d           n# t          $ r Y nw xY w|                    d
           d|_        	 |                     |j        d|j        dt                     |                     d           n# t          $ r Y nw xY w|                    d
           |                     t          |          d           |                                 |                     t          |           d           |                    d
           |                     t          |          d           | 
                    |j        d|j        d           t          t                    D ]}|                                 |                     |                                  d           |                    d           d|_        	 |                                 |                     d           n# t          $ r Y nw xY w|                     |                                 d           d|_        	 |                    d	           |                     d           n# t          $ r Y nw xY w|                     |                                 d           |                                 |                     |                                  d           d|_        	 |                     |j        d|j        dt                     |                     d           n# t          $ r Y nw xY w|                     |                                 d           |                                 |                     |                                  d           d S )NrD   rK   Toopsr   rQ   z)The queue didn't fail when it should haver!   rS   ri   rP   )r\   r*   )r\   TrU   rM   rV   firstrL   rW   )r   rY   rb   rc   r]   r   r1   r   rZ   r   r8   r_   r;   r   r   s      r   failing_queue_testz#FailingQueueTest.failing_queue_testA  s   7799 	IGHHHz!|$$ 	 	AEE!HHHH	EE&E"""IIABBBB$ 	 	 	D		EE&#E&&&IIABBBB$ 	 	 	D		fa"8999	!!!%AE2>>>IIABBBB$ 	 	 	D	 	
f	--ae5GPR.CE E EIIABBBB$ 	 	 	D	 	
fa"8999	E!HH&@AAA	fa"8999aeYr:::z"" 	 	AEEGGGGAGGII'>???	g	EEGGGIIABBBB$ 	 	 	D			#>???	EE#EIIABBBB$ 	 	 	D			#>???	AGGII'>???	--aeR
.CE E EIIABBBB$ 	 	 	D	 			#>???	AGGII'>?????s~   ,B 
BB ,C 
CC7E 
E"!E"=G   
GG)L5 5
MM5+N! !
N.-N.=Q 
Q)(Q)c                     |                      t                    }|                     |           |                     |           d S r   )r   rc   r   r}   s     r   test_failing_queuez#FailingQueueTest.test_failing_queue  sE     j))""""""""r   )r'   r(   r)   rB   r   r   r   r   s   @r   r   r   '  s]            0O@ O@ O@b# # # # # # #r   r   c                       e Zd ZeZdS )PyFailingQueueTestNr   r*   r   r   r   r     r   r   r   c                       e Zd ZeZdS )CFailingQueueTestNr   r*   r   r   r   r     r   r   r   c                   \    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd ZdS )BaseSimpleQueueTestc                 8    |                                  | _        d S r   )r{   r   r%   s    r   rB   zBaseSimpleQueueTest.setUp  s    !!r   c                 *   	 	 |                                 }n&# t          $ r |                    |           Y d S w xY w|                    |           |                                dk    r)t	          j        |                                dz             )NTg      ?MbP?)pop
IndexErrorr]   randomr"   r#   )r   r   seqrndsentinelvals         r   feedzBaseSimpleQueueTest.feed  s    	0ggii   h EE#JJJzz||c!!
3::<<$.///	0s    ;;c                 h    	 |                                 }||k    rd S |                    |           2r   )r_   rt   r   r   resultsr   r   s        r   consumezBaseSimpleQueueTest.consume  s9    	 %%''ChNN3		 r   c                     	 	 	 |                     d          }n*# | j        j        $ r t          j        d           Y nw xY wB||k    rd S |                    |           a)NTFrQ   h㈵>)r_   r   re   r"   r#   rt   r   s        r   consume_nonblockz$BaseSimpleQueueTest.consume_nonblock  s    
	 %%e%,,C  z' % % %Jt$$$$$% hNN3
	 s    #A Ac                     	 	 	 |                     d          }n# | j        j        $ r Y nw xY w.||k    rd S |                    |           M)NTr   rS   )r_   r   re   rt   r   s        r   consume_timeoutz#BaseSimpleQueueTest.consume_timeout  s|    
	 %%%--C  z'   D hNN3
	 s    --c                 L  	
 g 
d |                                                                  t          j        d          g fd		fdt	          |          D             }	
fdt	          |          D             }t          j        ||z             5  	 d d d            n# 1 swxY w Y   |                                |                     	                                           | 
                                                    d           
S )N*   c                       fd}|S )Nc                  t    	  | i | d S # t           $ r }                    |           Y d }~d S d }~ww xY wr   )BaseExceptionrt   )r   kwargse
exceptionsfs      r   wrapperzHBaseSimpleQueueTest.run_threads.<locals>.log_exceptions.<locals>.wrapper  sh    )At&v&&&&&$ ) ) )%%a((((((((()s    
727r*   )r   r   r   s   ` r   log_exceptionsz7BaseSimpleQueueTest.run_threads.<locals>.log_exceptions  s)    ) ) ) ) ) )
 Nr   c           	      V    g | ]%}t          j                   f           &S rp   r   r   ).0rh   	feed_funcr   r   r   r   r   s     r   
<listcomp>z3BaseSimpleQueueTest.run_threads.<locals>.<listcomp>  sV     . . . #>>)+D+D*+S#x)@B B B . . .r   c                 T    g | ]$}t          j                   f           %S r   r   )r   rh   consume_funcr   r   r   r   s     r   r   z3BaseSimpleQueueTest.run_threads.<locals>.<listcomp>  sT     0 0 0 %^^L-I-I,-w+AC C C 0 0 0r   r   )copyreverser   Randomrb   r   start_threadsr[   rZ   rX   r`   r   )r   	n_threadsr   inputsr   r   feeders	consumersr   r   r   r   r   r   s     ` ``  @@@@@@r   run_threadszBaseSimpleQueueTest.run_threads  s   kkmmmB
	 	 	 	 	. . . . . . . . .!),,. . .0 0 0 0 0 0 0 0#I..0 0 0	 +Gi,?@@ 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	$$$		"""A&&&s   'B55B9<B9c                 "   | j         }|                     |                                           |                     |                                d           |                    d           |                     |                                           |                     |                                d           |                    d           |                    d           |                    d           |                     |                                           |                     |                                d           |                     |                                d           |                     |                                d           |                     |	                                d           |                     |                                d           |                     |                    d          d           |                     |                                           |                     |                                d           |                     |                    d	          d           |                     |                                           |                     |                                d           | 
                    | j        j                  5  |                    d           d d d            n# 1 swxY w Y   | 
                    | j        j                  5  |                    d
	           d d d            n# 1 swxY w Y   | 
                    | j        j                  5  |	                                 d d d            n# 1 swxY w Y   |                     |                                           |                     |                                d           d S )Nr   rK   rN   r   r   FrQ   r!   rS   r   )r   rZ   rX   r`   r   r]   r[   r   r_   r   r   r   re   r}   s     r   r   zBaseSimpleQueueTest.test_basic  s   F		"""A&&&	a###A&&&	a	Q	a###A&&&!$$$A&&&+++A&&&U++Q///###A&&&s++Q///		"""A&&&tz/00 	 	EEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	tz/00 	  	 EE$E	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 tz/00 	 	LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 			"""A&&&&&s6   :LL!$L!M**M.1M.N55N9<N9c                     | j         }|                    d           |                     t                    5  |                    d           d d d            d S # 1 swxY w Y   d S r   )r   r]   r   r|   r_   r}   s     r   r   z:BaseSimpleQueueTest.test_negative_timeout_raises_exception  s    F	az** 	 	EE"E	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA"Ac                     | j         }t          t          d                    }|                     d||| j        | j                  }|                     ||           d S )Nrr   rK   )r   listrb   r   r   r   r`   )r   r   r   r   s       r   
test_orderzBaseSimpleQueueTest.test_order!  sY    FeCjj!!""1aDLII 	&)))))r   c                     d}| j         }t          t          d                    }|                     |||| j        | j                  }|                     t          |          |           d S N2   '  )r   r  rb   r   r   r   r`   sortedr   Nr   r   r   s        r   test_many_threadsz%BaseSimpleQueueTest.test_many_threads*  sd    FeEll##""1aDLII 	&11111r   c                     d}| j         }t          t          d                    }|                     |||| j        | j                  }|                     t          |          |           d S r  )r   r  rb   r   r   r   r`   r  r	  s        r   test_many_threads_nonblockz.BaseSimpleQueueTest.test_many_threads_nonblock5  sl    FeEll##""1a#'9d.CE E 	&11111r   c                     d}| j         }t          t          d                    }|                     |||| j        | j                  }|                     t          |          |           d S )Nr  i  )r   r  rb   r   r   r   r`   r  r	  s        r   test_many_threads_timeoutz-BaseSimpleQueueTest.test_many_threads_timeout?  sl    FeDkk""""1a#'9d.BD D 	&11111r   c                 V    G d d          }d}| j         }t          |          D ]}|                     |                        t          |          D ]S}t          j        |                                          }t                       |                      |                       Td S )Nc                       e Zd ZdS ).BaseSimpleQueueTest.test_references.<locals>.CNr   r*   r   r   Cr  L  s        Dr   r     )r   rb   r]   weakrefrefr_   r   assertIsNone)r   r  r
  r   rh   wrs         r   test_referencesz#BaseSimpleQueueTest.test_referencesI  s    	 	 	 	 	 	 	 	 Fq 	 	AEE!!##JJJJq 	$ 	$AQUUWW%%BLLLbbdd####	$ 	$r   N)r'   r(   r)   rB   r   r   r   r   r   r   r   r  r  r  r  r  r*   r   r   r   r     s        " " "	0 	0 	0                 @#' #' #'J  * * *	2 	2 	22 2 22 2 2$ $ $ $ $r   r   c                   "     e Zd ZeZ fdZ xZS )PySimpleQueueTestc                 j    | j         j        | _        t                                                       d S r   )r   _PySimpleQueuer{   r   rB   r   s    r   rB   zPySimpleQueueTest.setUp\  s$    2r   )r'   r(   r)   r   r   rB   r   r   s   @r   r  r  Y  s=        E        r   r  c                   .     e Zd ZeZ fdZd Zd Z xZS )CSimpleQueueTestc                 j    | j         j        | _        t                                                       d S r   )r   SimpleQueuer{   r   rB   r   s    r   rB   zCSimpleQueueTest.setUpf  s$    /r   c                     |                      | j        | j        j                   |                      | j        | j        j                   d S r   )assertIsr{   r   r!  r%   s    r   test_is_defaultz CSimpleQueueTest.test_is_defaultj  s>    dndj&<===dndj&<=====r   c           	         | j         t          j                    d}g } G fddt                    }	  |            }                    t                               ~|                                                               |d         |k    rnb|                     |t          t          |dz                                  d S )Nr  c                   "    e Zd Zd Z fdZdS )2CSimpleQueueTest.test_reentrancy.<locals>.Circularc                     | | _         d S r   )circularr%   s    r   r   z;CSimpleQueueTest.test_reentrancy.<locals>.Circular.__init__z  s     $r   c                 L                         t                               d S r   )r]   next)r   genr   s    r   __del__z:CSimpleQueueTest.test_reentrancy.<locals>.Circular.__del__}  s!    d3ii     r   N)r'   r(   r)   r   r-  )r,  r   s   r   Circularr'  y  sB        % % %! ! ! ! ! ! ! !r   r.  Trs   rK   )r   	itertoolscountobjectr]   r+  rt   r_   r`   r  rb   )r   r
  r   r.  or,  r   s        @@r   test_reentrancyz CSimpleQueueTest.test_reentrancyn  s     Fo
	! 	! 	! 	! 	! 	! 	! 	!v 	! 	! 	!	

AEE$s))NN15577###r{a	 	$uQU||"4"455555r   )	r'   r(   r)   r   r   rB   r$  r3  r   r   s   @r   r  r  a  s]         E    > > >6 6 6 6 6 6 6r   r  __main__)*r/  r   r   r"   unittestr  test.supportr   r   r   requires_working_threadingimport_fresh_moduler   r   
skipUnlessneed_c_queuerc   r   r   r   r,   r=   r   TestCaser   r   r   r   r   r   r   r   	Exceptionr   r   r   r   r   r  r  r'   mainr*   r   r   <module>r>     s               # # # # # # & & & & & & ) ) ) ) ) ) ,  +4 8 8 8 8,=,WxjIII
+-
+GH:
F
F
F"x"7,DEE
4 4 4    Y%   @F F F F F F F FDV V V V V* V V Vp    "       )X.        H-       &       mX%6        ]H$5       *       +X->        *H,=   
 - , , , ,I , , ,q# q# q# q# q#( q# q# q#j    )8+<        ((*;   q$ q$ q$ q$ q$ q$ q$ q$h    +X->    &6 &6 &6 &6 &6*H,= &6 &6 &6R zHMOOOOO r   