
    3hh]^                     X   S SK r S SKrS SKrS SKJr  S SKrS SKrS SKJrJ	r	  \R                  " S5      rS SKJr  S SKJrJr  SSKJrJr  \R(                  \R*                     rS	 r " S
 S\5      r " S S\5      r " S S\5      r " S S\5      r\S:X  a  \R8                  " 5         gg)    N)dedent)import_helperPy_DEBUG_interpqueues)interpreters)queues_crossinterp   )_run_outputTestBasec                  <    [        [        R                  5       5      $ N)len_queueslist_all     K/opt/python-3.13.8/usr/lib/python3.13/test/test_interpreters/test_queues.pyget_num_queuesr      s    w!""r   c                       \ rS rSrS rSrg)r      c                     [         R                  5        H  u  n  n [         R                  U5        M     g ! [         a     M/  f = fr   )r   r   destroy	Exception)selfqid_s      r   tearDownTestBase.tearDown   s@     ))+ICA$ ,  s   7
AAr   N)__name__
__module____qualname____firstlineno__r   __static_attributes__r   r   r   r   r      s    r   r   c                   ,    \ rS rSrS rS rS rS rSrg)LowLevelTests    c                 8    [         R                  " [        5        g r   )	importlibreloadr   r   s    r   test_highlevel_reloaded%LowLevelTests.test_highlevel_reloaded)   s     r   c                    [         R                  SS[        5      n[         R                  U5        U R	                  [        5       S5        U R                  [        R                  5         [         R                  U5        S S S 5        U R                  [        R                  5         [         R                  U5        S S S 5        g ! , (       d  f       NL= f! , (       d  f       g = f)N   r   )
r   createREPLACEr   assertEqualr   assertRaisesr   QueueNotFoundErrorgetr   r   s     r   test_create_destroy!LowLevelTests.test_create_destroy-   s    nnQ7+)1-v889KK :v889OOC  :9 :999s   *C'C
C
C%c           
          U R                  S[        S[        R                   S[         S35      5      u  pU R                  US5        [        (       a  U R                  US5        g U R                  US5        g )Nz-cz
                import z1 as _queues
                _queues.create(2, 0, )
                 )assert_python_okr   r   r    r1   r2   r   assertNotEqual)r   stdoutstderrs      r   test_not_destroyed LowLevelTests.test_not_destroyed6   s{    .. (() *&&-Y / 
 	$8+VR(r   c                    U R                  S5         [        R                  SS[        5      n[        R	                  U5        [        R                  U5        U R                  [        5       S5        S S S 5        U R                  S5         [        R                  SS[        5      n[        R	                  U5        [        R	                  U5        [        R                  U5        [        R                  U5        U R                  [        5       S5        S S S 5        U R                  S5         [        R                  SS[        5      n[        R	                  U5        [        R	                  U5        [        R                  U5        [        R                  U5        U R                  [        5       S5        S S S 5        U R                  S5         [        R                  SS[        5      nU R                  [        R                  5         [        R                  U5        S S S 5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN7= f! , (       d  f       N= f! , (       d  f       NL= f! , (       d  f       g = f)Ntypicalr/   r   zbind too muchnestedzrelease without binding)subTestr   r0   r1   bindreleaser2   r   r   r3   r   
QueueErrorr6   s     r   test_bind_releaseLowLevelTests.test_bind_releaseE   s   \\)$..Aw/CLLOOC ^-q1	 % \\/*..Aw/CLLLLOOC OOC ^-q1 + \\(#..Aw/CLLLLOOC OOC ^-q1 $ \\34..Aw/C""6#4#45$ 6 54- %$ +* $# 65 54sJ   A H3B
I.B
I;I9I("I93
I
I
I%(
I6	2I99
Jr   N)	r    r!   r"   r#   r,   r7   r@   rI   r$   r   r   r   r&   r&       s    !!)%r   r&   c                   J    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)
QueueTestsb   c                    U R                  S5         [        R                  " 5       nU R                  UR                  S5        S S S 5        U R                  S5         [        R                  " S5      nU R                  UR                  S5        S S S 5        U R                  S5         [        R                  " S5      nU R                  UR                  S5        S S S 5        U R                  S5         [        R                  " S5      nU R                  UR                  S5        S S S 5        U R                  S5         [        R                  " S	5      nU R                  UR                  S	5        S S S 5        U R                  S
5         U R                  [        5         [        R                  " S5        S S S 5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GNT= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       No= f! , (       d  f       g = f)Nvanillar   zsmall maxsize   zbig maxsized   z
no maxsizeznegative maxsizezbad maxsize1)rE   r   r0   r2   maxsizer3   	TypeErrorr   queues     r   test_createQueueTests.test_created   s{   \\)$MMOEU]]A. % \\/*MM!$EU]]A. + \\-(MM#&EU]]C0 ) \\,'MM!$EU]]A. ( \\,-MM#&EU]]C0 . \\-(""9-c" . )() %$ +* )( (' .-
 .- )(s_   2G3G)3G/53H3HH4#H#:H4
G
G,/
G>
H
H #
H1	-H44
Ic                    [         R                  " 5       n[        R                  " 5       nUR                  [	        SUR
                   S35      5        U R                  S5         [         R                  " 5       nUR                  USS9  UR                  5       nU R                  XC5        S S S 5        U R                  S5         [         R                  " 5       nUR                  USS9  [        U[	        S5      5      n[        U5      nU R                  XuR
                  5        S S S 5        U R                  S5         [        U[	        S	5      5      n[        U5      nUR                  5       nU R                  UR
                  U5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)
Nz\
            from test.support.interpreters import queues
            queue1 = queues.Queue(z)
            zsame interpreterTsyncobjzfrom current interpreterzX
                queue4 = queue1.get()
                print(queue4.id)
                zfrom subinterpreterz
                queue5 = queues.create()
                queue1.put(queue5, syncobj=True)
                print(queue5.id)
                )r   r0   r   execr   idrE   putr5   assertIsr   intr2   )	r   queue1interpqueue2queue3queue4outr   queue5s	            r   test_shareableQueueTests.test_shareable}   sd   $$&F  ##)99+ .  	
 \\,-]]_FJJvtJ,ZZ\FMM&)	 . \\45]]_FJJvtJ,ff . ' C c(CS)), 6 \\/0ff . ' C
 c(CZZ\FVYY, 10! .- 65 10s'   $AFA!F%>AF6
F"%
F36
Gc                 n    [         R                  " 5       nU R                  UR                  [        5        g r   )r   r0   assertIsInstancer^   ra   rV   s     r   test_id_typeQueueTests.test_id_type   s!    ehh,r   c                     U R                  [        R                  5         [        R                  " S5        S S S 5        g ! , (       d  f       g = fN@B )r3   r   r4   Queuer+   s    r   test_custom_idQueueTests.test_custom_id   s.    v889LL# :99s   A  
Ac                     [         R                  " 5       nU R                  [        5         SUl        S S S 5        g ! , (       d  f       g = frp   )r   r0   r3   AttributeErrorr^   rV   s     r   test_id_readonlyQueueTests.test_id_readonly   s.    ~. EH /..s	   <
A
c                     [         R                  " S5      nU R                  [        5         SUl        S S S 5        g ! , (       d  f       g = f)N
   rq   )r   r0   r3   rv   rT   rV   s     r   test_maxsize_readonly QueueTests.test_maxsize_readonly   s1    b!~.%EM /..s	   =
Ac                     [         R                  " 5       n[        UR                  5      n[        U5      nU R	                  X25        g r   )r   r0   hashr^   r2   )r   rW   expectedactuals       r   test_hashableQueueTests.test_hashable   s1    >e*r   c                     [         R                  " 5       n[         R                  " 5       nU R                  X5        U R                  X5        g r   )r   r0   r2   r=   )r   rb   rd   s      r   test_equalityQueueTests.test_equality   s4    (F+r   c                     [         R                  " 5       n[        R                  " U5      n[        R                  " U5      nU R                  X15        g r   )r   r0   pickledumpsloadsr2   )r   rW   data	unpickleds       r   test_pickleQueueTests.test_pickle   s7    ||E"LL&	*r   r   N)r    r!   r"   r#   rX   ri   rm   rs   rw   r{   r   r   r   r$   r   r   r   rL   rL   b   s0    #2!-F-$!
&
+,+r   rL   c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rSrg)TestQueueOps   c                 :   [         R                  " 5       nUR                  5       nUR                  S SS9  UR                  5       nUR	                  5         UR                  5       nU R                  US5        U R                  US5        U R                  US5        g )NTr[   F)r   r0   emptyr_   r5   r`   )r   rW   beforeduringafters        r   
test_emptyTestQueueOps.test_empty   sq    		$	%		fd#fe$eT"r   c                    S GH  nU R                  SU 35         UnS/US-  S-   -  nSX1'   SX1S-   '   [        R                  " U5      n/ nUR                  5       /n[	        U5       H3  nUR                  UR                  5       5        UR                  S 5        M5     UR                  UR                  5       5        U R                  [        R                  5         UR                  S 5        S S S 5        UR                  UR                  5       5        [	        U5       H2  nUR                  UR                  5       5        UR                  5         M4     UR                  UR                  5       5        U R                  [        R                  5         UR                  5         S S S 5        UR                  UR                  5       5        UR                  UR                  5       5        U R                  XS5        U R                  U/ SQ5        S S S 5        GM     S	 GH  nU R                  U(       a  SUS
    3OS5         SnS/US-  S-   -  n[        R                  " U6 n/ nUR                  5       /n[	        U5       H3  nUR                  UR                  5       5        UR                  S 5        M5     UR                  UR                  5       5        UR                  UR                  5       5        [	        U5       H2  nUR                  UR                  5       5        UR                  5         M4     UR                  UR                  5       5        U R                  [        R                  5         UR                  5         S S S 5        UR                  UR                  5       5        UR                  UR                  5       5        U R                  XS5        U R                  U/ SQ5        S S S 5        GM     g ! , (       d  f       GN= f! , (       d  f       GNu= f! , (       d  f       GM4  = f! , (       d  f       N= f! , (       d  f       GM:  = f)N)r
   rP      zmaxsize=Fr/   rP   Tr
   )TFT)r   )r   ))rR   r   z	<default>   )rE   r   r0   r   rangeappendfull
put_nowaitr3   	QueueFull
get_nowait
QueueEmptyr2   )	r   rT   
num_to_addr   rW   r   r   r   argss	            r   	test_fullTestQueueOps.test_full   s2   !G	23$
!7j1nq&89$(!(,1%g.z*AMM%**,/$$T* + ejjl+&&v'7'78$$T* 9U[[]+z*AMM%**,/$$& + ejjl+&&v'8'89$$& :ejjl+U[[]+  2  (;<9 43 "@ .Dda	2L
!7j1nq&89t,z*AMM%**,/$$T* + ejjl+U[[]+z*AMM%**,/$$& + ejjl+&&v'8'89$$& :ejjl+U[[]+  2  (;<1 ML .# 98 :9- 43d :9% MLsd   CP'P0B&P'P'A+P'D4Q9P:
A+Q
PP'
P$P''
P7	:
QQ
Q	c                    / SQn/ n[         R                  " 5       n[        S5       H2  nUR                  UR	                  5       5        UR                  S SS9  M4     UR                  UR	                  5       5        UR                  5         UR                  UR	                  5       5        UR                  S SS9  UR                  UR	                  5       5        [        S5       H2  nUR                  5         UR                  UR	                  5       5        M4     UR                  S SS9  UR                  UR	                  5       5        UR                  5         UR                  UR	                  5       5        U R                  X!5        g )N)r   r
   r/   rP   r/   rP   r/   r
   r   r
   r   rP   Tr[   )r   r0   r   r   qsizer_   r5   r2   )r   r   r   rW   r   s        r   
test_qsizeTestQueueOps.test_qsize  s   4qAMM%++-(IIdDI)  	ekkm$		ekkm$		$	%ekkm$qAIIKMM%++-(  			$	%ekkm$		ekkm$*r   c                    [        [        S5      5      nS H  n[        US9nU R                  SU 35         [        R
                  " 5       n[        S5       H  nUR                  " U40 UD6  M     [        S5       Vs/ s H  odR                  5       PM     nnU R                  Xq5        S S S 5        M     g s  snf ! , (       d  f       M  = f)N   TFr[   syncobj=)	listr   dictrE   r   r0   r_   r5   r2   )r   r   r\   kwdsrW   ir   r   s           r   test_put_get_mainTestQueueOps.test_put_get_main%  s    b	?$G(D	23rAIIa(4( #/4Ry9y!))+y9  2 43 % :	 43s   AB=?B8B=8B==
C	c                    S H  n[        US9nU R                  SU 35         [        R                  " S5      nUR                  " S0 UD6  UR                  " S0 UD6  U R                  [        R                  5         UR                  " SSS0UD6  S S S 5        UR                  5         UR                  " S0 UD6  S S S 5        M     g ! , (       d  f       N== f! , (       d  f       M  = f)Nr   r[   r   r/   timeout皙?r   )r   rE   r   r0   r_   r3   r   r5   r   r\   r   rW   s       r   test_put_timeoutTestQueueOps.test_put_timeout1  s    $G(D	23a(		'$'		'$'&&v'7'78II8C848 9				'$' 43 % 98	 43s$   AC=C	*C	
CC
C)	c                    S H  n[        US9nU R                  SU 35         [        R                  " S5      nUR                  " S0 UD6  UR                  " S0 UD6  U R                  [        R                  5         UR                  " S0 UD6  S S S 5        UR                  5         UR                  " S0 UD6  S S S 5        M     g ! , (       d  f       N== f! , (       d  f       M  = f)Nr   r[   r   r/   r   )r   rE   r   r0   r   r3   r   r5   r   s       r   test_put_nowaitTestQueueOps.test_put_nowait=  s    $G(D	23a(  ..  ..&&v'7'78$$2T2 9		  .. 43 % 98	 43s$   AC=C*C
CC
C'	c                    S H  nU R                  [        U5      5         [        R                  " 5       nUR	                  USS9  UR                  5       nU R                  X15        UR	                  USS9  UR                  5       nU R                  X15        S S S 5        M     / SQSSS.4 Hs  nU R                  [        U5      5         [        R                  " 5       nU R                  [        R                  5         UR	                  USS9  S S S 5        S S S 5        Mu     g ! , (       d  f       GM2  = f! , (       d  f       N.= f! , (       d  f       M  = f)N)NTrz   spam   spamr   aTr[   r
   r/   rP   r      r   b)rE   reprr   r0   r_   r5   r2   r   r3   r   NotShareableErrorr   objrW   obj2s       r   test_put_syncobjTestQueueOps.test_put_syncobjI  s   
C d3i(		#t	,yy{  +		#t	,'')  + )(
( 2
C d3i(&&|'E'EFIIc4I0 G )(	
 )(" GF )(s0   A8D%
5E	?D8E	%
D5	8
EE		
E	c           
         S SSSSS/ SQSSS	.4 H  nU R                  [        U5      5         [        R                  " 5       nUR	                  US
S9  UR                  5       nU R                  X15        UR	                  US
S9  UR                  5       nU R                  X15        S S S 5        M     g ! , (       d  f       M  = f)NTrz   r   r   r   r   r   r   r   Fr[   )rE   r   r   r0   r_   r5   r2   r   r   s       r   test_put_not_syncobj!TestQueueOps.test_put_not_syncobjf  s    2

C d3i(		#u	-yy{  +		#u	-'')  + )(

 )(s   A8B22
C	c                     [         R                  " 5       nU R                  [         R                  5         UR	                  SS9  S S S 5        g ! , (       d  f       g = f)Nr   r   )r   r0   r3   r   r5   rV   s     r   test_get_timeoutTestQueueOps.test_get_timeout}  s;    v001IIcI" 211s   A
Ac                     [         R                  " 5       nU R                  [         R                  5         UR	                  5         S S S 5        g ! , (       d  f       g = fr   )r   r0   r3   r   r   rV   s     r   test_get_nowaitTestQueueOps.test_get_nowait  s9    v001 211s   A
Ac                 &   [        [        S5      5      n[        R                  " SS9nS H~  nU R	                  U S35         [        X#5      n[        S5       H  nUR                  U5        M     [        S5       Vs/ s H	  od" 5       PM     nnU R                  Xq5        S S S 5        M     / SQnU R                  [        R                  5         UR                  U5        S S S 5        g s  snf ! , (       d  f       M  = f! , (       d  f       g = f)Nr   Tr[   r5   r   ()r   )r   r   r   r0   rE   getattrr_   r2   r3   r   r   )	r   r   rW   methnamer5   r   r   r   r   s	            r   test_put_get_default_syncobj)TestQueueOps.test_put_get_default_syncobj  s    b	?d+-H
"o.e.rAIIaL #).r3A#%3  2 /. . |==>IIcN ?>	 4	 /. ?>s*   <C0>C+C0D+C00
C?	
Dc                    [        [        S5      5      n[        R                  " SS9nS H  nU R	                  U S35         [        X#5      n[        S5       H  nUR                  U5        M     [        S5       Vs/ s H	  od" 5       PM     nnU R                  Xq5        / SQnUR                  U5        U" 5       n	U R                  X5        U R                  X5        S S S 5        M     g s  snf ! , (       d  f       M  = f)Nr   Fr[   r   r   r   )	r   r   r   r0   rE   r   r_   r2   assertIsNot)
r   r   rW   r   r5   r   r   r   r   r   s
             r    test_put_get_default_not_syncobj-TestQueueOps.test_put_get_default_not_syncobj  s    b	?e,-H
"o.e.rAIIaL #).r3A#%3  2		#u  +  + /. . 4 /.s   <C1>C,AC1,C11
D 	c           	         [         R                  " 5       nUR                  [        S5      5        S H>  nU R	                  U S35         UR                  [        SU S35      5        S S S 5        M@     g ! , (       d  f       MR  = f)Nzj
            from test.support.interpreters import queues
            queue = queues.create()
            r   r   zv
                    orig = b'spam'
                    queue.put(orig, syncobj=True)
                    obj = queue.z()
                    assert obj == orig, 'expected: obj == orig'
                    assert obj is not orig, 'expected: obj is not orig'
                    )r   r0   r]   r   rE   )r   rc   r   s      r   test_put_get_same_interpreter*TestQueueOps.test_put_get_same_interpreter  s~    $$&F   	 .H
"o.F (! "*
 +$   /. ...s   	A55
B	c                 b   [         R                  " 5       n[        R                  " 5       n[        R                  " 5       nU R                  [	        [        R
                  " 5       5      S5        S GH(  nU R                  U S35         SnUR                  USS9  [        U[        SUR                   SUR                   S	U S
[        U5       S3	5      5      nU R                  [	        [        R
                  " 5       5      S5        U R                  UR                  5       S5        U R                  UR                  5       S5        [        X45      nU" 5       nU R                  US5        U R                  [        U5      [        U5      5        S S S 5        GM+     g ! , (       d  f       GM>  = f)Nr/   r   r   r   Tr[   zt
                        from test.support.interpreters import queues
                        queue1 = queues.Queue(z0)
                        queue2 = queues.Queue(z{)
                        assert queue1.qsize() == 1, 'expected: queue1.qsize() == 1'
                        obj = queue1.a  ()
                        assert queue1.qsize() == 0, 'expected: queue1.qsize() == 0'
                        assert obj == b'spam', 'expected: obj == obj1'
                        # When going to another interpreter we get a copy.
                        assert id(obj) != ad  , 'expected: obj is not obj1'
                        obj2 = b'eggs'
                        print(id(obj2))
                        assert queue2.qsize() == 0, 'expected: queue2.qsize() == 0'
                        queue2.put(obj2, syncobj=True)
                        assert queue2.qsize() == 1, 'expected: queue2.qsize() == 1'
                        r   r
   s   eggs)r   r0   r   r2   r   r   rE   r_   r   r   r^   r   r   r=   ra   )	r   rc   rb   rd   r   obj1rg   r5   r   s	            r   #test_put_get_different_interpreters0TestQueueOps.test_put_get_different_interpreters  sZ   $$&V__./3-H
"o.

4
.!  //5yyk ://5yyk :&&.Z 0+ ,.d8* 5 $   V__%6!7;  3  3f/u  w/##BtHc#h7; /. ...s   DF
F.	c                 
  ^  SU 4S jjnT R                  S5         [        R                  " 5       nU" U5      nAUR                  5       nT R	                  U[        R
                  5        T R                  UR                  5       S5        T R                  [        R                  5         UR                  5         S S S 5        S S S 5        T R                  S5         [        R                  " 5       nU" U[        R
                  5      nAUR                  5       nT R	                  U[        R
                  5        T R                  UR                  5       S5        T R                  [        R                  5         UR                  5         S S S 5        S S S 5        T R                  S5         [        R                  " 5       nU" U[        R                  5      nAT R                  UR                  5       S5        T R                  [        R                  5         UR                  5         S S S 5        T R                  UR                  5       S5        T R                  [        R                  5         UR                  5         S S S 5        S S S 5        T R                  S5         [        R                  " 5       nU" U[        R                  5      nAT R                  UR                  5       S5        T R                  [        R                  5         UR                  5         S S S 5        UR                  S[        R                  S	9  T R                  UR                  5       S5        U" U[        R                  S5      nT R                  UR                  5       S
5        UR                  S[        R                  S	9  T R                  UR                  5       S5        AT R                  UR                  5       S5        UR                  5       nUR                  5       nT R                  US5        T R                  US5        T R                  UR                  5       S5        T R                  [        R                  5         UR                  5         S S S 5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNC= f! , (       d  f       GNM= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f)Nr   c                    > U(       d  SnOVU[         R                  L a  SnO@U[         R                  L a  SnO*U[         R                  L a  SnO[	        [        U5      5      e[        R                  " 5       n[        U[        SU R                   SU SU S35      5        TR                  U R                  5       US	-   5        US
:X  aE  U R                  5       nTR                  US5        TR                  U R                  5       US-   5        U$ )Nr;   z, unbound=queues.UNBOUNDz, unbound=queues.UNBOUND_ERRORz, unbound=queues.UNBOUND_REMOVEzc
                from test.support.interpreters import queues
                queue = queues.Queue(zl)
                obj1 = b'spam'
                obj2 = b'eggs'
                queue.put(obj1, syncobj=Truez.)
                queue.put(obj2, syncobj=Truer:   r/   r   r   r
   )r   UNBOUNDUNBOUND_ERRORUNBOUND_REMOVENotImplementedErrorr   r   r0   r   r   r^   r2   r   r5   )rW   unboundpresize	extraargsrc   r   r   s         r   commonATestQueueOps.test_put_cleared_with_subinterpreter.<locals>.common  s    	FNN*6	F000<	F111=	)$w-88!((*F ,&&+hhZ 0- .7K 8--6K 8( !  U[[]GaK8!|yy{  w/  !<Mr   defaultr   r   r
   r   s   ham)r   rP   *      r/   )Nr   )rE   r   r0   r5   r`   r   r2   r   r3   r   r   r   ItemInterpreterDestroyedr   r_   )r   r   rW   rc   r   r   s   `     r   $test_put_cleared_with_subinterpreter1TestQueueOps.test_put_cleared_with_subinterpreter  s   	< \\)$MMOEE]F99;DMM$/U[[]A.""6#4#45  " 6 % \\)$MMOEE6>>2F99;DMM$/U[[]A.""6#4#45  " 6 % \\/*MMOEE6#7#78FU[[]A.""6#B#BC		 D U[[]A.""6#4#45  " 6 + \\*+MMOEE6#8#89FU[[]A.""6#4#45  " 6 IIff&;&;I<U[[]A.E6#8#8!<FU[[]A.IIb&"7"7I8U[[]A.U[[]A.99;D99;DT6*T2&U[[]A.""6#4#45  " 6- ,+5 65 %$" 65 %$  DC 65 +*& 65  65- ,+s   BR3)R!:R3BS8S	S*A-TS)(AT/S; T!A-UTE U?T1U!
R0	+R33
S
S	S
S&)
S8	3T;
T
	T
T
T.	)U1
T?	;U
Uc                    [         R                  " 5       n[        R                  " 5       n[        U[	        SUR
                   S35      5        U R                  UR                  5       S5        AU R                  UR                  5       S5        UR                  5       nU R                  U[         R                  5        U R                  UR                  5       S5        U R                  [         R                  5         UR                  5         S S S 5        U R                  UR                  5       S5        UR                  5       nU R                  U[         R                  5        U R                  UR                  5       S5        UR                  5       nU R                  U[         R                  5        U R                  UR                  5       S5        g ! , (       d  f       N= f)	N[
            from test.support.interpreters import queues
            queue = queues.Queue(a>  )
            queue.put(1, syncobj=True, unbound=queues.UNBOUND)
            queue.put(2, syncobj=True, unbound=queues.UNBOUND_ERROR)
            queue.put(3, syncobj=True)
            queue.put(4, syncobj=True, unbound=queues.UNBOUND_REMOVE)
            queue.put(5, syncobj=True, unbound=queues.UNBOUND)
               r   rP   r/   r
   r   )r   r0   r   r   r   r^   r2   r   r5   r`   r   r3   r   )r   rW   rc   r   r   obj3s         r   *test_put_cleared_with_subinterpreter_mixed7TestQueueOps.test_put_cleared_with_subinterpreter_mixed7  sQ   $$&FF (""'(( ,$  	 	**yy{dFNN+*v>>?IIK @*yy{dFNN+*yy{dFNN+* @?s   >G
G&c                    [         R                  " 5       n[        R                  " 5       n[        R                  " 5       nUR                  SSS9  [	        U[        SUR                   S35      5        [	        U[        SUR                   S35      5        U R                  UR                  5       S5        UR                  S5        [	        U[        S	5      5        [	        U[        S
5      5        [	        U[        S5      5        U R                  UR                  5       S5        UR                  5       nU R                  US5        U R                  UR                  5       S5        UR                  5       nU R                  US5        U R                  UR                  5       S5        AU R                  UR                  5       S5        UR                  5       nU R                  U[         R                  5        U R                  UR                  5       S5        UR                  5       nU R                  US5        U R                  UR                  5       S5        AU R                  UR                  5       S5        U R                  [         R                  5         UR                  5         S S S 5        U R                  UR                  5       S5        UR                  5       nU R                  U[         R                  5        U R                  UR                  5       S5        UR                  5       n	U R                  U	[         R                  5        U R                  UR                  5       S5        g ! , (       d  f       N= f)Nr
   Tr[   r   z)
            obj1 = queue.get()
            queue.put(2, syncobj=True, unbound=queues.UNBOUND)
            queue.put(obj1, syncobj=True, unbound=queues.UNBOUND_REMOVE)
            zL)
            obj2 = queue.get()
            obj1 = queue.get()
            r   rP   z
            queue.put(4, syncobj=True, unbound=queues.UNBOUND)
            # interp closed here
            queue.put(5, syncobj=True, unbound=queues.UNBOUND_REMOVE)
            queue.put(6, syncobj=True, unbound=queues.UNBOUND)
            aC  
            queue.put(7, syncobj=True, unbound=queues.UNBOUND_ERROR)
            # interp closed here
            queue.put(obj1, syncobj=True, unbound=queues.UNBOUND_ERROR)
            queue.put(obj2, syncobj=True, unbound=queues.UNBOUND_REMOVE)
            queue.put(8, syncobj=True, unbound=queues.UNBOUND)
            z
            queue.put(9, syncobj=True, unbound=queues.UNBOUND_REMOVE)
            queue.put(10, syncobj=True, unbound=queues.UNBOUND)
            rz   	   r         r      r/   )r   r0   r   r_   r   r   r^   r2   r   r5   r`   r   r3   r   )
r   rW   interp1interp2r   obj4obj6obj7obj8obj10s
             r   -test_put_cleared_with_subinterpreter_multiple:TestQueueOps.test_put_cleared_with_subinterpreter_multipleX  s   %%'%%'		!T	"GV )""'(( ,%  	 	GV )""'(( ,%  	 	*		!GV %  	 	GV %  	 	GV %  	 	+yy{q!*yy{q!** yy{dFNN+*yy{q!** v>>?IIK @* yy{dFNN+* 		eV^^,* @?s   M77
Nc                 Z  ^^ [         R                  " 5       m[         R                  " 5       mUU4S jn[        R                  " US9nUR	                  5         SnTR                  USS9  TR                  5       nUR                  5         U R                  XC5        U R                  XC5        g )Nc                     >   TR                  SS9n  TR                  U SS9  g ! [        R                   a     M:  f = f)NTr   r   r[   )r5   r   r   r_   )r   rb   rd   s    r   f6TestQueueOps.test_put_get_different_threads.<locals>.f  sJ     **S*1C JJsDJ) (( s   % ==)targetr   Tr[   )
r   r0   	threadingThreadstartr_   r5   joinr2   r   )r   r  torigr   rb   rd   s        @@r   test_put_get_different_threads+TestQueueOps.test_put_get_different_threads  s~    	* A&		

4
&jjl	##r   r   N)r    r!   r"   r#   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r$   r   r   r   r   r      sc    
#:=x+,
3
(
/1:,.#

,$ $8LW#r+BO+b$r   r   __main__)r)   r   r  textwrapr   unittesttimetest.supportr   r   import_moduler   r   test.support.interpretersr   r	   utilsr   r   	_TestBase_UNBOUND_CONSTANT_TO_FLAGr   r1   r   r&   rL   r   r    mainr   r   r   <module>r'     s          0

%
%o
6 % : 5 
0
01E1E
F#y ?%H ?%D`+ `+Fy$8 y$x zMMO r   