
    iC                        d dl Z d dlmZ d dlmZ d dlZd dlmZmZ d dlm	Z	 d dlm
Z
 d dlmZmZ d dlmZ d dlmZ  G d	 d
          Z G d d          Z G d deee          Z G d deee          Z G d de          Z G d dee          Z G d dee          Z G d de          Z G d dee          Z G d de          Z G d de          Z G d d e          Z G d! d"e          Z G d# d$e          Z  G d% d&e           Z! G d' d(e           Z" G d) d*e           Z# G d+ d,e           Z$ G d- d.e          Z%[e&d/k    r ej'                     dS dS )0    N)TestCase)get_hubLoopExit)utilqueue)EmptyFullAsyncResult)AbstractGenericGetTestCasec                   *    e Zd ZdZd Zd Zd Zd ZdS )UsesOnlyOneItemMixinTc                 j   g |                      d          }fd}t                      j        j        } ||t	          j        t          |j                  d            ||t	          j        t          |j                  d           t          j	        d           | 
                    t                    d           | j        r|                     d                    n'|                     d         t          j                   |                     d         t          j                   d S )N   c                 8                          | |            d S Nappendfuncargsresults     C/usr/local/lib/python3.11/dist-packages/gevent/tests/test__queue.pystore_resultzAUsesOnlyOneItemMixin.test_put_nowait_simple.<locals>.store_result   !    MM$$+&&&&&          r   )_makeOner   looprun_callbackr   wrap_errorsr
   
put_nowaitgeventsleepassertEquallen SUPPORTS_PUTTING_WITHOUT_GETTINGassertIsNoneassertIsInstancer   selfqr   r"   r   s       @r   test_put_nowait_simplez+UsesOnlyOneItemMixin.test_put_nowait_simple   s   MM!	' 	' 	' 	' 	' yy~2\4#3D!,#G#GKKK\4#3D!,#G#GKKKQVa(((0 	AfQi0000!!&)UZ@@@fQiV<<<<<r   c                    g |                                  }t          j        |j                  }fd}|                     |                                |           | j        r| j        }n| j        } ||                                |           t          j	        d           |                     |                                |            ||                                |           t                      j                            ||j        d           |                     |                                |           t          j	        d           |                     d g           |                     |                                |            ||                                |           |                     |                                |           d S )Nc                 8                          | |            d S r   r   r   s     r   r   zAUsesOnlyOneItemMixin.test_put_nowait_unlock.<locals>.store_result.   r   r   MbP?
   )r    r%   spawnget
assertTrueemptyr)   assertFalsefullr&   r   r!   r"   r$   readyr'   )r-   r.   pr   
assertFullr   s        @r   test_put_nowait_unlockz+UsesOnlyOneItemMixin.test_put_nowait_unlock)   s   MMOOL	' 	' 	' 	' 	' 			1%%%0 	))JJJ
16688QU		1%%%
16688Q		##L!,CCCA&&&U$(((		1%%%
16688Q		1%%%%%r   c                                                       } fd}t          j        ||          }t          j        d           |                    d           t          j        d           |                    d          dk    sJ d S )Nc                     t          j        t          j        sdnd          5                      |                                 d           d d d            n# 1 swxY w Y   dS )N皙?g      ?hi2OK)r%   Timeout	greentestRUNNING_ON_APPVEYORr'   r5   r.   r-   s    r   waiterz3UsesOnlyOneItemMixin.test_send_last.<locals>.waiterJ   s    9+H QcRR 1 1  %0001 1 1 1 1 1 1 1 1 1 1 1 1 1 14s   )AA A{Gz?rA   r   timeoutrB   )r    r%   r4   r&   putr5   )r-   r.   rG   r;   s   `   r   test_send_lastz#UsesOnlyOneItemMixin.test_send_lastG   s    MMOO	 	 	 	 	
 L##T	eTuuQu4''''''r   c                    | j         s|                     d            G d d|                                           } |            }|                    d           |                     |                                d           |                     |j        d           |                     |j        d           |                     |j	                   d S )NzNeeds to be able to put and getc                   >     e Zd ZdZdZdZ fdZ fdZ fdZ xZ	S )@UsesOnlyOneItemMixin.test_init_and_bottleneck_methods.<locals>.XNr   c                 X    t                                          |           d| _        d S NT)super_initinitted)r-   maxsize	__class__s     r   rS   zFUsesOnlyOneItemMixin.test_init_and_bottleneck_methods.<locals>.X._init`   s$    g&&&#r   c                 d    | xj         dz  c_         t                                                      S Nr   )	get_countrR   _getr-   rV   s    r   rZ   zEUsesOnlyOneItemMixin.test_init_and_bottleneck_methods.<locals>.X._getd   s%    !#ww||~~%r   c                 f    | xj         dz  c_         t                                          |          S rX   )	put_countrR   _put)r-   itemrV   s     r   r^   zEUsesOnlyOneItemMixin.test_init_and_bottleneck_methods.<locals>.X._puth   s)    !#ww||D)))r   )
__name__
__module____qualname__rT   rY   r]   rS   rZ   r^   __classcell__rV   s   @r   XrO   [   sy        GII$ $ $ $ $& & & & &* * * * * * * * *r   re   hir   )
r)   skipTest_getFUTrK   r'   r5   r]   rY   r6   rT   )r-   re   xs      r    test_init_and_bottleneck_methodsz5UsesOnlyOneItemMixin.test_init_and_bottleneck_methodsV   s    4 	=MM;<<<	* 	* 	* 	* 	* 	* 	* 	*" ACC	d$'''a(((a(((	"""""r   N)r`   ra   rb   r)   r/   r=   rL   rj    r   r   r   r      sX        
 (,$= = =(& & &<( ( (# # # # #r   r   c                        e Zd Zd Zd Zd ZdS )SubscriptMixinc                     t           r   )NotImplementedErrorr-   s    r   rh   zSubscriptMixin._getFUTu   s    !!r   c                 6     |                                  |i |S r   )rh   )r-   r   kwargss      r   r    zSubscriptMixin._makeOnex   s    t||~~t.v...r   c                    dd l }|                                 }	 t          ||j                  }|                     ||           |                     |t                   t          |t                                        d S # t          $ r; |j        dk    sJ dd l	}|                     |t                   |j
                   Y d S w xY w)Nr   Channel)r   rh   getattrr`   assertIsNotr+   inttypeAttributeErrortypesGenericAlias)r-   stdlib_queuekindstdlib_kindrz   s        r   test_subscriptzSubscriptMixin.test_subscript{   s    $$$$||~~	E!,>>K T;///!!$s)T+c2B-C-CDDDDD  	A 	A 	A=I----LLL!!$s)U-?@@@@@@	As   B   ACCN)r`   ra   rb   rh   r    r   rk   r   r   rm   rm   t   sF        " " "/ / /E E E E Er   rm   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 )TestSimpleQueuec                     t           j        S r   )r   SimpleQueuerp   s    r   rh   zTestSimpleQueue._getFUT   s      r   c                 &   g |                      d          }|                    d           fd}t                      j        j        } ||t          j        t          |j                              ||t          j        t          |j                             t          j
        d           |                     t                    d           |                     d         d           |                     d         t                     d S )Nr      c                 8                          | |            d S r   r   r   s     r   r   z<TestSimpleQueue.test_get_nowait_simple.<locals>.store_result   r   r   r   r   )r    rK   r   r!   r"   r   r#   r	   
get_nowaitr%   r&   r'   r(   r+   r,   s       @r   test_get_nowait_simplez&TestSimpleQueue.test_get_nowait_simple   s    MM!	a	' 	' 	' 	' 	' yy~2\4#3E1<#H#HIII\4#3E1<#H#HIIIQVa(((A&&&fQi/////r   c                    g |                      d          }t          j        |j        d          }fd}|                                s
J |            t          j        d           |                                s
J |            t                      j        	                    ||j
                   t          j        d           |                                s
J |            dgk    s
J             |                                s
J |            |j        s
J |            |                                s
J |            d S )Nr      c                 8                          | |            d S r   r   r   s     r   r   z<TestSimpleQueue.test_get_nowait_unlock.<locals>.store_result   r   r   r   )r    r%   r4   rK   r7   r&   r9   r   r!   r"   r   r:   deadr-   r.   r;   r   r   s       @r   test_get_nowait_unlockz&TestSimpleQueue.test_get_nowait_unlock   s<   MM!L""	' 	' 	' 	' 	' wwyy!Qvvxx		##L!,???Qwwyy!!}}}f}}}wwyy!vqwwyy!r   c                    d| _         |                                 }|                    d           |                     |                                d           |                     |                                d           d S )NFrf   )switch_expectedr    rK   r'   peekr5   r-   r.   s     r   test_send_firstzTestSimpleQueue.test_send_first   sh    $MMOO	d4((($'''''r   c                 @                                      }                     t                    5  |                                 d d d            n# 1 swxY w Y    fd}t	          j        ||          }t	          j        d           |                                 d S )Nc                 L                         t          | j        d           d S )NrH   rI   )assertRaisesr	   r   rF   s    r   rG   z/TestSimpleQueue.test_peek_empty.<locals>.waiter   s&    eQVT:::::r   r@   )r    r   r   r   r%   r4   r&   join)r-   r.   rG   gs   `   r   test_peek_emptyzTestSimpleQueue.test_peek_empty   s    MMOOx(( 	 	FFHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 		; 	; 	; 	; 	;L##S	s   AAAc                    |                                  }t          j        |j                  }|                                 t          j        d           |                    d           |                                 |                     |j	        d u            | 
                    |                                d           d S )Nr   r   )r    r%   r4   r   startr&   rK   r   r6   	exceptionr'   )r-   r.   r   s      r   test_peek_multi_greenletz(TestSimpleQueue.test_peek_multi_greenlet   s    MMOOL  				Q	a	t+,,,1%%%%%r   c                 B   |                      d          }g fd}t          j        ||          }t          j        d           |                     ddg           |                     |                                d           t          j        d           |                     g d           |                     |                                d           |                     |                                d           |                    d          d	k    sJ d S )
Nr   c                    |                      d                               d           |                      d                               d           |                      d                               d           dS )NabcrB   )rK   r   )r.   resultss    r   putterz-TestSimpleQueue.test_max_size.<locals>.putter   sk    EE#JJJNN3EE#JJJNN3EE#JJJNN34r   r   r   r   )r   r   r   r   rI   rB   )r    r%   r4   r&   r'   r5   )r-   r.   r   r;   r   s       @r   test_max_sizezTestSimpleQueue.test_max_size   s   MM!	 	 	 	 	 L##Q3*---#&&&Q///222#&&&#&&&uuQu4''''''r   c                    |                                  }d }g d}d |D             t          |          D ]!\  }}t          j        |||                    "t          j        d           t                      fd}|                    |d                    |                      |            d           |                    |d                    |                      |            d           |                    |d                    |                    |d	                    |                      |            d
           d S )Nc                 T    |                     |                                            d S r   setr5   r.   evts     r   rG   z5TestSimpleQueue.test_multiple_waiters.<locals>.waiter   "    GGAEEGGr   )1234c                 *    g | ]}t                      S rk   r   ).0ri   s     r   
<listcomp>z9TestSimpleQueue.test_multiple_waiters.<locals>.<listcomp>   s    000!000r   rH   c                      D ]X} t          j        dd          5  |                                 }                    |           d d d            n# 1 swxY w Y   Yt	                    S )Nr2   F)r%   rC   r5   addr(   )eri   evtsr   s     r   collect_pending_resultszFTestSimpleQueue.test_multiple_waiters.<locals>.collect_pending_results   s     # #^E511 # #AKKNNN# # # # # # # # # # # # # # # w<<s   *AA	A	r   r   r   r   r   )r    	enumerater%   r4   r&   r   rK   r'   )	r-   r.   rG   sendingsi_r   r   r   s	          @@r   test_multiple_waitersz%TestSimpleQueue.test_multiple_waiters   sm   MMOO	 	 	 (''00x000h'' 	- 	-DAqLDG,,,,T%%	  	  	  	  	  	  	
hqk0022A666	hqk0022A666	hqk	hqk0022A66666r   c                 F   |                                  }d }t                      }t          j        |||           |                     |                                d           |                    d           |                     |                                d           d S )Nc                    t          j        dt                                5  	 |                                 }|                    |           n%# t          $ r |                    d           Y nw xY wd d d            d S # 1 swxY w Y   d S Nr   	timed outr%   rC   RuntimeErrorr5   r   r.   r   r   s      r   
do_receivez<TestSimpleQueue.test_waiters_that_cancel.<locals>.do_receive	      <>>22 ) ))UUWWFGGFOOOO# ) ) )GGK((((()	) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )4   B )AB A0-B /A00B  BBr   rf   )r    r   r%   r4   r'   r5   rK   )r-   r.   r   r   s       r   test_waiters_that_cancelz(TestSimpleQueue.test_waiters_that_cancel  s    MMOO	) 	) 	) mmZC(((K000	d$'''''r   c                     |                                  }d }t          j        ||           |                     |                                d           d S )Nc                 0    |                      d           d S )Nsent)rK   )r.   s    r   do_sendz6TestSimpleQueue.test_senders_that_die.<locals>.do_send  s    EE&MMMMMr   r   )r    r%   r4   r'   r5   )r-   r.   r   s      r   test_senders_that_diez%TestSimpleQueue.test_senders_that_die  sV    MMOO	 	 	 	Wa   &)))))r   c                    d }d }|                                  }t                      }t                      }t          j        |||           t          j        |||           t          j        d           |                    d           |                     |                                d           |                     |                                d           d S )Nc                 T    |                     |                                            d S r   r   r   s     r   rG   z9TestSimpleQueue.test_two_waiters_one_dies.<locals>.waiter#  r   r   c                    t          j        dt                                5  	 |                                 }|                    |           n%# t          $ r |                    d           Y nw xY wd d d            d S # 1 swxY w Y   d S r   r   r   s      r   r   z=TestSimpleQueue.test_two_waiters_one_dies.<locals>.do_receive&  r   r   r@   rf   r   r    r   r%   r4   r&   rK   r'   r5   )r-   rG   r   r.   	dying_evtwaiting_evts         r   test_two_waiters_one_diesz)TestSimpleQueue.test_two_waiters_one_dies!  s    	 	 		) 	) 	) MMOOMM	!mmZI...VQ,,,S	d+666**D11111r   c                    d }|                                  }t                      }t                      }t          j        |||           t          j        |||           t          j        d           |                    d           |                     |                                d           |                     |                                d           |                     |                                d           d S )Nc                    t          j        dt                                5  	 |                                 }|                    |           n%# t          $ r |                    d           Y nw xY wd d d            d S # 1 swxY w Y   d S r   r   r   s      r   r   z:TestSimpleQueue.test_two_bogus_waiters.<locals>.do_receive9  r   r   r@   r   r   r   )r-   r   r.   e1e2s        r   test_two_bogus_waitersz&TestSimpleQueue.test_two_bogus_waiters8  s    	) 	) 	) MMOO]]]]ZB'''ZB'''S	f;///;///&)))))r   c                    |                      t          |                                 d                     g  G fdd|                                           } |            }|                     |j                   d S )Nr   c                       e Zd Z fdZdS )5TestSimpleQueue.test_subclass_assign_queue.<locals>.Qc                     | _         d S r   r   )r-   _maxsizemy_queues     r   rS   z;TestSimpleQueue.test_subclass_assign_queue.<locals>.Q._initS  s    %


r   N)r`   ra   rb   rS   )r   s   r   Qr   R  s.        & & & & & & &r   r   )r6   hasattrr    rh   assertIsr   )r-   r   r.   r   s      @r   test_subclass_assign_queuez*TestSimpleQueue.test_subclass_assign_queueL  s     	99:::	& 	& 	& 	& 	& 	& 	& 	& 	& 	& ACCagx(((((r   N)r`   ra   rb   rh   r   r   r   r   r   r   r   r   r   r   r   r   rk   r   r   r   r      s        ! ! !0 0 0$  &( ( (
 
 
& & &( ( (.7 7 7>( ( ($* * *2 2 2.* * *() ) ) ) )r   r   c                   6    e Zd ZdZd Zd Zd Zd Zd Zd Z	dS )	TestChannelFc                     t           j        S r   )r   rt   rp   s    r   rh   zTestChannel._getFUT]  s
    }r   c                    g |                                  }t          j        |j        d          }fd}|                     |                                           |                     |                                           t          j        d           |                     |                                           |                     |                                           t                      j	        
                    ||j                   t          j        d           |                     |                                           |                     |                                           |                     dg           |                     |                                           |                     |j                   |                     |                                           d S )Nr   c                 8                          | |            d S r   r   r   s     r   r   z@TestChannel.test_get_nowait_unlock_channel.<locals>.store_resultg  r   r   r2   )r    r%   r4   rK   r6   r7   r9   r&   r   r!   r"   r   r'   r:   r   r   s       @r   test_get_nowait_unlock_channelz*TestChannel.test_get_nowait_unlock_channel`  s    MMOOL""	' 	' 	' 	' 	' 			"""!!!U		"""!!!		##L!,???U		"""!!!!%%%		"""		"""""r   c                 h   |                                  }d }d }t                      }t                      }t          j        |||          }t          j        d           |                     |                                            t          j        |||          }|                     |                                d           |                     |                                d           t          j	        d          5  t          j
        ||g           d d d            d S # 1 swxY w Y   d S )Nc                 Z    |                     d           |                     d           d S )Nrf   done)rK   r   )r   r.   s     r   senderz.TestChannel.test_zero_max_size.<locals>.sender}  s$    EE$KKKGGFOOOOOr   c                 X    |                                 }|                     |           d S r   )r5   r   )r   r.   ri   s      r   receiverz0TestChannel.test_zero_max_size.<locals>.receiver  s"    AGGAJJJJJr   r2   rf   r   r   )r    r   r%   r4   r&   r6   r:   r'   r5   rC   joinall)r-   r.   r   r   r   r   p1p2s           r   test_zero_max_sizezTestChannel.test_zero_max_sizez  sW   MMOO	 	 		 	 	 ]]]]\&"a((UBHHJJ'''\(B**4(((6***^A 	% 	%NB8$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   D''D+.D+c                    |                                  g fd}t          j        |          }                    d                               d                               d                               d                               d           |                     g d           |                                 d S )Nc                                                                                                                                                        d S r   )r   r5   channeleventss   r   another_greenletz/TestChannel.test_send.<locals>.another_greenlet  s=    MM'++--(((MM'++--(((((r   sendinghello
sent helloworld
sent world)r   r   r   r   r   )r    r%   r4   r   rK   r'   r5   r-   r   r   r   r   s      @@r   	test_sendzTestChannel.test_send  s    --//	) 	) 	) 	) 	) 	) L)**i   Gl###Gl###RRRTZ[[[	r   c                    |                                  g fd}t          j        |          }                    d                                                                                                                                         |                     g d           t          j        d           |                     g d           |                                 d S )Nc                                           d                                d                                d                                d                                d           d S )Nsending hellor   sending worldr   r   )r   rK   r   s   r   r   z/TestChannel.test_wait.<locals>.another_greenlet  sc    MM/***KK   MM/***KK   MM,'''''r   waiting)r  r  r   r  r   r   )r  r  r   r  r   r   )r    r%   r4   r   r5   r'   r&   r   s      @@r   	test_waitzTestChannel.test_wait  s    --//	( 	( 	( 	( 	( 	( L)**i   gkkmm$$$gkkmm$$$XXXZ`aaaQfffhnooo	r   c                     |                                  }t          j        |j        t                     t          |          }|                     |g            d S r   )r    r%   r4   rK   StopIterationlistr'   )r-   r   rs      r   test_iterablezTestChannel.test_iterable  sJ    --//W[-000MMBr   N)
r`   ra   rb   r)   rh   r   r   r   r  r  rk   r   r   r   r   Z  st        ',$  # # #4% % %.  (  ,         r   r   c                   6    e Zd ZeZd Zd Zd Zd Zd Zd Z	dS )	TestQueuec                     t           j        S r   )r   Queuerp   s    r   rh   zTestQueue._getFUT  s
    {r   c                 f   |                                  }t                      }t          j        |j        |           |                                }|                     ||           |                     d|j                   |	                                 |                     d|j                   d S )Nr   r   )
r    objectr%   r4   rK   r5   r   r'   unfinished_tasks	task_done)r-   r   re   r   s       r   test_task_donezTestQueue.test_task_done  s    --//HHW[!$$$fa   G4555G455555r   c                    |                                  }|                    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   |r|                     | j        j                  5  |                                 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   |                     t                    5  |
                                 d d d            n# 1 swxY w Y   |                                 d S |                     |                                d           |
                                 |                     |                                d           |
                                 |                                 |                     | j        j                  5  |                                 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   |                     | j        j                  5  |                    dd           d d d            d S # 1 swxY w Y   d S )NLOEWLOTg      ?)r    rK   r$   shutdownr   r   ShutDownr5   r   
ValueErrorr  r   assertIn)r-   	immediater.   s      r   #_shutdown_all_methods_in_one_threadz-TestQueue._shutdown_all_methods_in_one_thread  s   MMOO	c


	S	

9tz233 	 	EE#JJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	tz233 	 	LL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	!""4:#677                ""4:#677                "":..                FFHHHHHMM!%%''4(((KKMMMMM!%%''4(((KKMMMFFHHH ""4:#677                ""4:#677                ""4:#677 ! !dC   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s   3BBB?C!!C%(C%D..D25D2E99E= E=F??GGJ,,J03J0K77K;>K;!MM	M	c                 ,    |                      d          S )NFr   rp   s    r   'test_shutdown_all_methods_in_one_threadz1TestQueue.test_shutdown_all_methods_in_one_thread  s    77>>>r   c                 ,    |                      d          S rQ   r"  rp   s    r   1test_shutdown_immediate_all_methods_in_one_threadz;TestQueue.test_shutdown_immediate_all_methods_in_one_thread  s    77===r   c                 d    d| _         |                                 }|                                 dS )zFTest that join() exits immediately if not jobs were put into the queueFN)r   r    r   r   s     r   test_issue_45zTestQueue.test_issue_45  s(    $MMOO	r   N)
r`   ra   rb   r   rh   r  r   r#  r%  r'  rk   r   r   r  r    st        E  6 6 6! ! !B? ? ?> > >    r   r  c                       e Zd Zd ZdS )TestLifoQueuec                     t           j        S r   )r   	LifoQueuerp   s    r   rh   zTestLifoQueue._getFUT  s
    r   Nr`   ra   rb   rh   rk   r   r   r)  r)    s#            r   r)  c                       e Zd Zd ZdS )TestPriorityQueuec                     t           j        S r   )r   PriorityQueuerp   s    r   rh   zTestPriorityQueue._getFUT  s    ""r   Nr,  rk   r   r   r.  r.    s#        # # # # #r   r.  c                       e Zd Zd ZdS )AbstractTestWeakRefMixinc                     dd l }|                                 }|                    |          }|                     | |                       d S )Nr   )weakrefr    refr   )r-   r4  oner5  s       r   test_weak_referencez,AbstractTestWeakRefMixin.test_weak_reference  sI    mmookk#c3355!!!!!r   N)r`   ra   rb   r7  rk   r   r   r2  r2    s#        " " " " "r   r2  c                   ,    e Zd ZeZej        Zd Zd Z	dS )TestGetInterruptc                 R    |                                                      |          S )NrI   )r    r5   r-   rJ   s     r   waitzTestGetInterrupt.wait  s!    }}""7"333r   c                 *    |                                  S r   r}   rp   s    r   r    zTestGetInterrupt._makeOne      yy{{r   N)
r`   ra   rb   r	   rC   r   r   r}   r<  r    rk   r   r   r9  r9    s?        GD4 4 4    r   r9  c                       e Zd Zej        ZdS )TestGetInterruptJoinableQueueNr`   ra   rb   r   r  r}   rk   r   r   rA  rA  !          ;DDDr   rA  c                       e Zd Zej        ZdS )TestGetInterruptLifoQueueNr`   ra   rb   r   r+  r}   rk   r   r   rE  rE  $          ?DDDr   rE  c                       e Zd Zej        ZdS )TestGetInterruptPriorityQueueNr`   ra   rb   r   r0  r}   rk   r   r   rI  rI  '          DDDr   rI  c                       e Zd Zej        ZdS )TestGetInterruptChannelN)r`   ra   rb   r   rt   r}   rk   r   r   rM  rM  *  s        =DDDr   rM  c                   <     e Zd Zej        ZeZ fdZd Z	d Z
 xZS )TestPutInterruptc                     t          t          |                                            |                                 | _        d S r   )rR   rO  setUpr    r   r[   s    r   rQ  zTestPutInterrupt.setUp2  s3    %%++---]]__


r   c                     | j                                         s3| j                             d           | j                                         3| j                             d|          S )Nr   r   rI   )r   r9   rK   r;  s     r   r<  zTestPutInterrupt.wait6  sX    *//## 	JNN1 *//## 	z~~a~111r   c                 ,    |                      d          S rX   r>  rp   s    r   r    zTestPutInterrupt._makeOne;  s    yy||r   )r`   ra   rb   r   r   r}   r
   rC   rQ  r<  r    rc   rd   s   @r   rO  rO  .  sc        DG% % % % %2 2 2
      r   rO  c                       e Zd Zej        ZdS )TestPutInterruptJoinableQueueNrB  rk   r   r   rU  rU  ?  rC  r   rU  c                       e Zd Zej        ZdS )TestPutInterruptLifoQueueNrF  rk   r   r   rW  rW  B  rG  r   rW  c                       e Zd Zej        ZdS )TestPutInterruptPriorityQueueNrJ  rk   r   r   rY  rY  E  rK  r   rY  c                   "    e Zd Zej        Zd ZdS )TestPutInterruptChannelc                 *    |                                  S r   r>  rp   s    r   r    z TestPutInterruptChannel._makeOneK  r?  r   N)r`   ra   rb   r   rt   r}   r    rk   r   r   r[  r[  H  s*        =D    r   r[  c                   *    e Zd Zej        Zd ZeZeZdS )TestGetInterruptSimpleQueuec                 *    t          j        d          )NzNot supported)unittestSkipTestrp   s    r   test_raises_timeout_Timeoutz7TestGetInterruptSimpleQueue.test_raises_timeout_TimeoutT  s    000r   N)	r`   ra   rb   r   r   r}   rb  *test_raises_timeout_Timeout_exc_customizedtest_outer_timeout_is_not_lostrk   r   r   r^  r^  Q  s6        D1 1 1 2M.%@"""r   r^  __main__)(r`  gevent.testingtestingrD   r   r%   
gevent.hubr   r   r   r   gevent.queuer	   r
   gevent.eventr   gevent.testing.timingr   r   rm   r   r   r  r)  r.  r  r2  r9  rA  rE  rI  rM  rO  rU  rW  rY  r[  r^  r`   mainrk   r   r   <module>rm     sE    " " " " " " # # # # # #  ( ( ( ( ( ( ( (             $ $ $ $ $ $ $ $ $ $ $ $ $ $ < < < < < <c# c# c# c# c# c# c# c#LE E E E E E E E*N) N) N) N) N)n&:H N) N) N)be  e  e  e  e ."6 e  e  e P= = = = = = = =@    NH   
# # # # # # # #
" " " " "v " " "
 
 
 
 
/1K 
 
 
    $4        0       $4       .       1   "    $4        0       $4       .   A A A A A"2 A A A  zIN r   