
    <e:                        	 d dl Z d dlZd dlmZ d Z G d dej                  Z G d dej                  Z G d d	ej                  Z G d
 dej                  Z	 G d dej                  Z
 G d d          Z G d deej                  Z G d deej                  Z G d deej                  Zedk    r ej                     dS dS )    N)GenericAliasc                  .    t          j        d            d S N)asyncioset_event_loop_policy     4/usr/lib/python3.11/test/test_asyncio/test_queues.pytearDownModuler      s    !$'''''r	   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
QueueBasicTestsc                 ~  K   	 t          j                    }|                      ||                              d           ||                     t	          t          |                     ||          v }|                     ||           t          j                    }t          j                    4 d {V }|                    |	                                          }t          j
        d           d {V  |                     d ||          v            |                    d           d d d           d {V  n# 1 d {V swxY w Y   |                     d| d {V            t          j        d          }t          j                    4 d {V }|                    d           |                    |                    d                    }t          j
        d           d {V  |                     d ||          v            |                                 d d d           d {V  n# 1 d {V swxY w Y   |                     |                                           t          j                    }|                    d           |                     d ||          v            d S )	Nz<Queuer   z_getters[1]   maxsize   z_putters[1]z
_queue=[1])r   Queue
assertTrue
startswithhexidassertEqual	TaskGroupcreate_taskgetsleep
put_nowaitput
get_nowaitdone)selffn	expect_idqid_is_presenttggetterputters           r
   _test_repr_or_strz!QueueBasicTests._test_repr_or_str   su     	
 MOO1((22BBqEE:::BqEE

bbee+M222 MOO$&& 	 	 	 	 	 	 	"^^AEEGG,,F-"""""""""OOMRRUU2333LLOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	&LLLLLL))) M!$$$$&& 	 	 	 	 	 	 	"LLOOO^^AEE!HH--F-"""""""""OOMRRUU2333LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	&&&MOO	Q1-.....s&   ;A7E
EEBH==
I
Ic                 L   K   |                      t          d           d {V  d S NT)r)   reprr!   s    r
   	test_reprzQueueBasicTests.test_repr8   s4      $$T400000000000r	   c                 L   K   |                      t          d           d {V  d S )NF)r)   strr-   s    r
   test_strzQueueBasicTests.test_str;   s4      $$S%00000000000r	   c                     t           j        t                   }|                     |j        t          f           |                     |t                     d S r   )r   r   intr   __args__assertIsInstancer   r!   r$   s     r
   test_generic_aliasz"QueueBasicTests.test_generic_alias>   sD    M#cV,,,a.....r	   c                   K   t          j                    }|                     |                                           |                    d           d {V  |                     |                                           |                     d|                                 d {V            |                     |                                           d S Nr   )r   r   r   emptyr   assertFalser   r   r6   s     r
   
test_emptyzQueueBasicTests.test_emptyC   s      MOO		"""eeAhh###!%%''MMMMMM***		"""""r	   c                 ,  K   t          j                    }|                     |                                           t          j        d          }|                    d           d {V  |                     |                                           d S )Nr   r   )r   r   r;   fullr   r   r6   s     r
   	test_fullzQueueBasicTests.test_fullK   sz      MOO"""M!$$$eeAhh!!!!!r	   c                    K   t          j                    dD ]}                    |           d {V  fdt          d          D              d {V }|                     g d|           d S )Nr      r   c                 H   K   g | ]}                                  d {V S r   r   .0_r$   s     r
   
<listcomp>z.QueueBasicTests.test_order.<locals>.<listcomp>X   1      1111quuww111r	   rB   )r   r   r   ranger   r!   iitemsr$   s      @r
   
test_orderzQueueBasicTests.test_orderS   s      MOO 	 	A%%((NNNNNNNN1111a111111111E*****r	   c                 R  K   t          j        d          |                     dj                   g fd}t          j         |                      }t          d          D ]}t          j        d           d {V  |                     ddg           |                     d                                 d {V            t          j        d           d {V  |                     g d           |                     d                                 d {V            |                     d                                 d {V            |                     |	                                           |                     |
                                           d S )Nr   r   c                     K   t          d          D ]2}                     |            d {V                      |            3dS )NrB   T)rJ   r   append)rL   have_been_putr$   s    r
   r(   z,QueueBasicTests.test_maxsize.<locals>.putter`   sS      1XX ( (eeAhh$$Q''''4r	   r   r   )r   r   r   )r   r   r   r   r   rJ   r   r   r   r    result)r!   r(   trL   rR   r$   s       @@r
   test_maxsizezQueueBasicTests.test_maxsize[   s     M!$$$AI&&&	 	 	 	 	 	 ))q 	# 	#A-"""""""""" 	!Q///!%%''MMMMMM*** mAM222!%%''MMMMMM***!%%''MMMMMM***!!!

#####r	   N)__name__
__module____qualname__r)   r.   r1   r7   r<   r?   rN   rU   r   r	   r
   r   r      s        (/ (/ (/T1 1 11 1 1/ / /
# # #" " "+ + +$ $ $ $ $r	   r   c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )QueueGetTestsc                    K   t          j                    }|                    d           |                     d|                                 d {V            d S r9   )r   r   r   r   r   r6   s     r
   test_blocking_getzQueueGetTests.test_blocking_getz   sP      MOO	Q!%%''MMMMMM*****r	   c                   K   t          j                    }t          j        d          }|                    d           d {V  |                                }|j                            |           |                     d|                                 d {V            | 	                    |
                                           |                     |                                           d S r9   )r   get_running_loopr   r   create_future_puttersrQ   r   r   r   r    assertIsNonerS   )r!   loopr$   waiters       r
   test_get_with_puttersz#QueueGetTests.test_get_with_putters   s      '))M!eeAhh##%%	
&!!!!%%''MMMMMM***&&&&--//*****r	   c                   K   t          j                    }t          j                    t          j                    dfd}t          j         |                      }                                 d {V  |                                |                    dj        d           | d {V }| 	                               | 
                    d|           d S )NFc                  l   K                                                                      d {V } d| S r+   )setr   )resfinishedr$   starteds    r
   	queue_getz7QueueGetTests.test_blocking_get_wait.<locals>.queue_get   s7      KKMMM------CHJr	   {Gz?r   )r   r^   r   Eventr   waitr;   
call_laterr   r   r   )r!   rb   rk   queue_get_taskrh   ri   r$   rj   s        @@@r
   test_blocking_get_waitz$QueueGetTests.test_blocking_get_wait   s      '))MOO-//	 	 	 	 	 	 	 !,YY[[99llnn"""alA..."""""""!!!C     r	   c                     t          j                    }|                    d           |                     d|                                           d S r9   r   r   r   r   r   r6   s     r
   test_nonblocking_getz"QueueGetTests.test_nonblocking_get   @    MOO	QALLNN+++++r	   c                 v    t          j                    }|                     t           j        |j                   d S r   )r   r   assertRaises
QueueEmptyr   r6   s     r
   test_nonblocking_get_exceptionz,QueueGetTests.test_nonblocking_get_exception   s.    MOO',al;;;;;r	   c                 H  K   t          j                    }t          j        |                                          }t          j        |                                          }t          j        d           d {V  |                                 t          j        d           d {V  |                     |                                           |                    d           d {V  t          j        d           d {V  | 	                    d| d {V            d S Nr   a)
r   r   r   r   r   cancelr   r    r   r   )r!   r$   t1t2s       r
   test_get_cancelled_racez%QueueGetTests.test_get_cancelled_race   s     MOO )) ))mA
		mA		"""eeCjjmABhhhhhh'''''r	   c                   K   t          j        d          }t          j        |                    d                     t          j        |                    d                     |                     |                                 d {V d           |                     |                                 d {V d           d S )Nr   r   r|   b)r   r   r   r   r   r   r6   s     r
   test_get_with_waiting_puttersz+QueueGetTests.test_get_with_waiting_putters   s      M!$$$AEE#JJ'''AEE#JJ'''quuww,,,quuww,,,,,r	   c                 :  K   d }d }d}t          j        d          }t          j                    4 d {V }|                     |||                     |                     |||                     d d d           d {V  d S # 1 d {V swxY w Y   d S )Nc                 b   K   t          |          D ]}|                                  d {V  d S r   )rJ   r   )queuenum_expectedrG   s      r
   consumerz<QueueGetTests.test_why_are_getters_waiting.<locals>.consumer   sJ      <(( " "iikk!!!!!!!!" "r	   c                 d   K   t          |          D ]}|                     |           d {V  d S r   )rJ   r   )r   	num_itemsrL   s      r
   producerz<QueueGetTests.test_why_are_getters_waiting.<locals>.producer   sL      9%% # #iill""""""""# #r	      r   r   r   r   r   )r!   r   r   producer_num_itemsr$   r&   s         r
   test_why_are_getters_waitingz*QueueGetTests.test_why_are_getters_waiting   sC     	" 	" 	"	# 	# 	# M!$&& 	< 	< 	< 	< 	< 	< 	<"NN88A'9::;;;NN88A'9::;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   ?B


BBc                 B  K   t          j        d          }|                     t                    5  t          j        |                                d           d {V  d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )Nr   r   g?r   )	r   r   rw   TimeoutErrorwait_forr   r   len_getters)r!   r   s     r
   5test_cancelled_getters_not_being_held_in_self_getterszCQueueGetTests.test_cancelled_getters_not_being_held_in_self_getters   s      a(((|,, 	5 	5"599;;444444444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	U^,,a00000s   .A,,A03A0N)rV   rW   rX   r\   rd   rq   rt   ry   r   r   r   r   r   r	   r
   rZ   rZ   x   s        + + ++ + +! ! !*, , ,
< < <( ( (- - -< < < 1 1 1 1 1r	   rZ   c                   b    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 ZdS )QueuePutTestsc                    K   t          j                    }|                    d           d {V  |                     d|                                 d {V            d S r9   )r   r   r   r   r   r6   s     r
   test_blocking_putzQueuePutTests.test_blocking_put   s^      MOO eeAhh!%%''MMMMMM*****r	   c                   K   t          j        d          t          j                    dfd}t          j                    }|                    dj                   t          j         |                      }                                 d {V  |                                | d {V  | 	                               d S )Nr   r   Fc                     K                                                         d           d {V                      d           d {V  d d S )Nr   r   T)rg   r   )ri   r$   rj   s   r
   	queue_putz7QueuePutTests.test_blocking_put_wait.<locals>.queue_put   sS      KKMMM%%((NNNNNNN%%((NNNNNNNHHHr	   rl   )
r   r   rm   r^   ro   r   r   rn   r;   r   )r!   r   rb   queue_put_taskri   r$   rj   s       @@@r
   test_blocking_put_waitz$QueuePutTests.test_blocking_put_wait   s      M!$$$-//	 	 	 	 	 	 	 '))al+++ ,YY[[99llnn"""!!!!!r	   c                     t          j                    }|                    d           |                     d|                                           d S r9   rs   r6   s     r
   test_nonblocking_putz"QueuePutTests.test_nonblocking_put   ru   r	   c                   K   t          j                    }t          j        |                                          }t          j        d           d {V  |                    d           |                    d           |                                 	 | d {V  nC# t           j        $ r1 t          j        |                                          }| d {V  Y nw xY w|                                }| 	                    d|           d S Nr   r   r   )
r   r   r   r   r   r   r}   CancelledErrorrS   r   )r!   r$   readerrS   s       r
   'test_get_cancel_drop_one_pending_readerz5QueuePutTests.test_get_cancel_drop_one_pending_reader   s     MOO$QUUWW--mA	Q	Q	LLLLLLLL% 	 	 	(11FLLLLLLLLL	
 F#####s   B =CCc                 N  K   t          j                    }t          j                    4 d {V }|                    |                                          }|                    |                                          }|                    |                                          }t          j        d           d {V  |                    d           |                    d           |                                 |                     t           j	                  5  | d {V  d d d            n# 1 swxY w Y   | d {V  d d d           d {V  n# 1 d {V swxY w Y   | 
                    |                                |                                hddh           d S r   )r   r   r   r   r   r   r   r}   rw   r   r   rS   )r!   r$   r&   reader1reader2reader3s         r
   )test_get_cancel_drop_many_pending_readersz7QueuePutTests.test_get_cancel_drop_many_pending_readers  s2     MOO$&& 	 	 	 	 	 	 	"nnQUUWW--GnnQUUWW--GnnQUUWW--G-"""""""""LLOOOLLOOONN""7#9::                 MMMMMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	" 	'..**GNN,<,<=1vFFFFFs6   C-E	D1%E1D5	5E8D5	9E
E #E c                   K   t          j        d          }|                    d           t          j        |                    d                    }t          j        d           d {V  |                                }|                     |d           |                                 	 | d {V  nD# t           j	        $ r2 t          j        |                    d                    }| d {V  Y nw xY w|                                }|                     |d           |                     |
                                d           d S )Nr   r   r   )r   r   r   r   r   r   r   r   r}   r   qsize)r!   r$   writervalue1value2s        r
   test_put_cancel_dropz"QueuePutTests.test_put_cancel_drop'  s@     M!	Q $QUU1XX..mA###	LLLLLLLL% 	 	 	(q22FLLLLLLLLL	
 ###A&&&&&s   ,B5 5>C65C6c                     t          j        d          }|                    d           |                     t           j        |j        d           d S )Nr   r   r   )r   r   r   rw   	QueueFullr6   s     r
   test_nonblocking_put_exceptionz,QueuePutTests.test_nonblocking_put_exception?  sF    M!&&&	Q'+Q\1=====r	   c                   K   t          j        d          }|                    d           |                    d           |                     |                                           |                     t           j        |j        d           t          j        d          }|                    d           d {V  |                    d           d {V  |                     |                                           d S )Ng?r   r   r   rB   )r   r   r   r   r>   rw   r   r   r6   s     r
   test_float_maxsizez QueuePutTests.test_float_maxsizeD  s      M#(((	Q	Q!!!'+Q\1===M#(((eeAhheeAhh!!!!!r	   c                 l  K   t          j                    fd}t          j         |                      }|                     d                                 d {V            |                     |                                           |                     |                                           d S )Nc                  B   K                         d           d {V  dS )Nr   Tr   )r$   s   r
   r   z3QueuePutTests.test_put_cancelled.<locals>.queue_putT  s'      %%((NNNNNNN4r	   r   )r   r   r   r   r   r   r    rS   )r!   r   rT   r$   s      @r
   test_put_cancelledz QueuePutTests.test_put_cancelledQ  s      MOO	 	 	 	 	 		,,!%%''MMMMMM***!!!

#####r	   c                 |  K   t          j        d          }t          j        |                    d                    }t          j        |                    d                    }t          j        |                    d                    }t          j        d           d {V  |                     |                                           |                     |                                           |                                 t          j        d           d {V  |                     |                                           | 	                    |
                                d           t          j        d           d {V  | 	                    |
                                d           | d {V  d S )Nr   r   r|   r   Xr   )r   r   r   r   r   r   r    r;   r}   r   r   )r!   r$   put_aput_bput_cs        r
   test_put_cancelled_racez%QueuePutTests.test_put_cancelled_race^  sz     M!$$$#AEE#JJ//#AEE#JJ//#AEE#JJ//mA

%%%&&&mA

%%%---mA---r	   c                   K   t          j                    }t          j        |                                          }t          j        d           d {V  |                    d           d {V  |                     | d {V d           d S r{   )r   r   r   r   r   r   r   )r!   r$   rT   s      r
   test_put_with_waiting_gettersz+QueuePutTests.test_put_with_waiting_gettersr  s      MOO((mAeeCjjq#&&&&&r	   c                   K   t          j        d          fd}fd}t          j                    4 d {V }|                     |                       |                     |d                     |                     |d                     |                     |d                     |                     |d                     d d d           d {V  d S # 1 d {V swxY w Y   d S )Nr   c                 B   K                        |            d {V  d S r   r   )itemr   s    r
   r(   z:QueuePutTests.test_why_are_putters_waiting.<locals>.putter|  s/      ))D//!!!!!!!!!r	   c                     K   t          j        d           d {V                                  } t          |           D ]}                                 d S )Nr   )r   r   r   rJ   r   )numrG   r   s     r
   r'   z:QueuePutTests.test_why_are_putters_waiting.<locals>.getter  sj      -"""""""""++--C3ZZ # #  """"# #r	   r   r   rB   r   )r!   r(   r'   r&   r   s       @r
   test_why_are_putters_waitingz*QueuePutTests.test_why_are_putters_waitingy  s     a  	" 	" 	" 	" 	"	# 	# 	# 	# 	# $&& 	& 	& 	& 	& 	& 	& 	&"NN6688$$$NN66!99%%%NN66!99%%%NN66!99%%%NN66!99%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   BC$$
C.1C.c                 &  K   t          j        d          }|                    d           t          j        |                    d                    }t          j        d           d {V  |                     t          |j                  d           |	                                 | 
                    t           j                  5  | d {V  d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )Nr   r   r   )r   r   r   r   r   r   r   r   r`   r}   rw   r   r!   r   put_tasks      r
   2test_cancelled_puts_not_being_held_in_self_puttersz@QueuePutTests.test_cancelled_puts_not_being_held_in_self_putters  s?     a((( &uyy||44mA 	U^,,a000w566 	 	NNNNNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	U^,,a00000s   		CC"%C"c                   K   t          j        d          }|                    d           t          j        |                    d                    }t          j        d           d {V  |                                 |                                 |                     t           j	                  5  | d {V  d d d            d S # 1 swxY w Y   d S )Nr   r   )
r   r   r   r   r   r   r   r}   rw   r   r   s      r
   0test_cancelled_put_silence_value_error_exceptionz>QueuePutTests.test_cancelled_put_silence_value_error_exception  s     a   &uyy||44mA 	 	
 w566 	 	NNNNNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   4	C

CCN)rV   rW   rX   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r
   r   r      s        + + +" " "(, , ,
$ $ $,G G G,' ' '0> > >
" " "$ $ $  (' ' '& & &&1 1 1"    r	   r   c                       e Zd Zd ZdS )LifoQueueTestsc                    K   t          j                    dD ]}                    |           d {V  fdt          d          D              d {V }|                     g d|           d S )NrA   c                 H   K   g | ]}                                  d {V S r   rD   rE   s     r
   rH   z-LifoQueueTests.test_order.<locals>.<listcomp>  rI   r	   rB   )r   rB   r   )r   	LifoQueuer   rJ   r   rK   s      @r
   rN   zLifoQueueTests.test_order  s       	 	A%%((NNNNNNNN1111a111111111E*****r	   NrV   rW   rX   rN   r   r	   r
   r   r     #        + + + + +r	   r   c                       e Zd Zd ZdS )PriorityQueueTestsc                    K   t          j                    dD ]}                    |           d {V  fdt          d          D              d {V }|                     g d|           d S )NrA   c                 H   K   g | ]}                                  d {V S r   rD   rE   s     r
   rH   z1PriorityQueueTests.test_order.<locals>.<listcomp>  rI   r	   rB   )r   r   rB   )r   PriorityQueuer   rJ   r   rK   s      @r
   rN   zPriorityQueueTests.test_order  s      !## 	 	A%%((NNNNNNNN1111a111111111E*****r	   Nr   r   r	   r
   r   r     r   r	   r   c                   *    e Zd ZdZd Zd Zd Zd ZdS )_QueueJoinTestMixinNc                 n    |                                  }|                     t          |j                   d S r   )q_classrw   
ValueError	task_doner6   s     r
   test_task_done_underflowz,_QueueJoinTestMixin.test_task_done_underflow  s-    LLNN*ak22222r	   c                 V  K   |                                  t          d          D ]}                    |           ddfdt          j                    4 d {V fdt          d          D             }                                 d {V  |                     t          t          d                               dt          t          |                    D ]}                    d           	 d d d           d {V  d S # 1 d {V swxY w Y   d S )Nd   r   Tc                  ~   K   r7                                  d {V } | z                                   5d S d S r   )r   r   )r   accumulatorr$   runnings    r
   workerz2_QueueJoinTestMixin.test_task_done.<locals>.worker  s_        UUWW}}}}}}t#      r	   c                 J    g | ]}                                             S r   )r   )rF   indexr&   r   s     r
   rH   z6_QueueJoinTestMixin.test_task_done.<locals>.<listcomp>  s;     , , , ^^FFHH-- , , ,r	   r   F)	r   rJ   r   r   r   joinr   sumr   )r!   rL   tasksr   r$   r   r&   r   s      @@@@@r
   test_task_donez"_QueueJoinTestMixin.test_task_done  s     LLNNs 	 	ALLOOOO 	 	 	 	 	 	 	 $&& 
	  
	  
	  
	  
	  
	  
	 ", , , , ,"'((, , ,E &&((NNNNNNNSs__k::: G3u::&&    Q 
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	 s   'BD
D"%D"c                    K   |                                  }|                                 d {V  |                                 d {V  d S r   )r   r   r6   s     r
   test_join_empty_queuez)_QueueJoinTestMixin.test_join_empty_queue  sK      LLNN
 ffhhffhhr	   c                    K   |                                  }|                     |                                d           d|_        |                     |                                d           d S )Nz	maxsize=0r   zmaxsize=0 tasks=2)r   r   _format_unfinished_tasksr6   s     r
   test_formatz_QueueJoinTestMixin.test_format  s^      LLNNk222&9:::::r	   )rV   rW   rX   r   r   r   r   r   r   r	   r
   r   r     sU        G3 3 3     >  ; ; ; ; ;r	   r   c                       e Zd Zej        ZdS )QueueJoinTestsN)rV   rW   rX   r   r   r   r   r	   r
   r   r     s        mGGGr	   r   c                       e Zd Zej        ZdS )LifoQueueJoinTestsN)rV   rW   rX   r   r   r   r   r	   r
   r   r     s        GGGr	   r   c                       e Zd Zej        ZdS )PriorityQueueJoinTestsN)rV   rW   rX   r   r   r   r   r	   r
   r   r   	  s        #GGGr	   r   __main__)r   unittesttypesr   r   IsolatedAsyncioTestCaser   rZ   r   r   r   r   r   r   r   rV   mainr   r	   r
   <module>r      s           ( ( (i$ i$ i$ i$ i$h6 i$ i$ i$X^1 ^1 ^1 ^1 ^1H4 ^1 ^1 ^1BW W W W WH4 W W Wt+ + + + +X5 + + ++ + + + +9 + + +5; 5; 5; 5; 5; 5; 5; 5;p    ((*J            ,h.N      $ $ $ $ $0(2R $ $ $ zHMOOOOO r	   