
    xKg4E                        d dl Z d dlmZ d dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
 d dlmZm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mZ e Zd	 Z G d
 de      Z G d de j                        Zedk(  r e j:                          yy)    N)TestCase)jitnjittyped)typesutils)TypingErrorLoweringError)_header_lead)numpy_version)tag_32bitcaptured_stdoutc                 \    t        |       D cg c]  }| }}d}|D ]  }||z  }	 |S c c}w Nr   )range)nilss       b/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_comprehension.py	comp_listr      s<    !HHqHA	A	Q H	 	s   	)c                       e Zd Zd Zd Zd Zy)TestListComprehensionc                    t         } t        t        j                  f      |      }| j	                   |d       |d             | j	                   |d       |d             | j	                   |d       |d             y )N   r   )r   r   r   intpassertEqual)selfpyfunccfuncs      r   test_comp_listz$TestListComprehension.test_comp_list    sf    #ejj]#F+q6!9-q6!9-rF2J/    c                    ! t        d      !fd       !d }d }d }d }d }d	 }d
 }d }d }	d }
d }d }d }d }d }d }d }d  fd}d  fd}d }!fd}d }d }d }d }||||||||	|
|||||||||||||||g}g d}|D ]3  }	  t        d      |      }| j                   ||       ||             5 | j                  t              5 } t        d      |      } ||       ddd       t        j                  d kD  rd!}yd"}y# t        $ r? 	 t        j                  j                   |       ||             n# t        $ r  w xY wY w xY w# 1 sw Y   mxY w)#z3 Tests the large number of use cases defined below Tnopythonc                 @    | dk  r| S  | dz
         | dz
        z   S N       )r   fib3s    r   r-   z7TestListComprehension.test_bulk_use_cases.<locals>.fib3+   s*    1uA;a!e,,r$   c                 X    t        dt        |       dz
        D cg c]  }| c}S c c}w )z Test basic list comprehension r+   )r   lenxr   s     r   list1z8TestListComprehension.test_bulk_use_cases.<locals>.list11   s+    $QA
343!A3444s   	'c                 8    | D cg c]
  }|dk  s	| c}S c c}w )z% Test conditional list comprehension r*   r,   r1   ys     r   list2z8TestListComprehension.test_bulk_use_cases.<locals>.list25   s      *q!AEAq***   
c                 :    | D cg c]  }|dk  r|nd c}S c c}w )z! Test ternary list comprehension r*   r   r,   r4   s     r   list3z8TestListComprehension.test_bulk_use_cases.<locals>.list39   s%    0121QAB&222s   c                 0    t        j                  g d      S )z* Test list comprehension to np.array ctor r+   r*      nparrayr1   s    r   list4z8TestListComprehension.test_bulk_use_cases.<locals>.list4=   s    88I&&r$   c                     t        j                  | D cg c]%  }t        j                  | D cg c]  }| c}      ' c}}      S c c}w c c}}w )z1 Test nested list comprehension to np.array ctor r=   r1   r5   zs      r   list5z8TestListComprehension.test_bulk_use_cases.<locals>.list5B   s;    88qAq!RXX!n!Qq!n5qABBnAs   A
	A	A
A
c                 >    d }| D cg c]
  } ||       c}S c c}w )z2 Test use of inner function in list comprehension c                     | dz   S Nr+   r,   r@   s    r   innerzGTestListComprehension.test_bulk_use_cases.<locals>.list6.<locals>.innerH   s    1ur$   r,   )r1   rI   rD   s      r   list6z8TestListComprehension.test_bulk_use_cases.<locals>.list6F   s#    &'(aE!Ha(((s   c                 H    dfd}| D cg c]
  } ||       c}S c c}w )z+ Test use of closure in list comprehension r<   c                     | z   S Nr,   r4   s    r   rI   zGTestListComprehension.test_bulk_use_cases.<locals>.list7.<locals>.innerP   s    1ur$   r,   )r1   rI   rD   r5   s      @r   list7z8TestListComprehension.test_bulk_use_cases.<locals>.list7L   s)    A&'(aE!Ha(((s   c                 J    | D cg c]  }|dz   	 }}d } ||      }|S c c}w )z9 Test use of list comprehension as arg to inner function r+   c                     | d   dz   S Nr   r+   r,   r@   s    r   rI   zGTestListComprehension.test_bulk_use_cases.<locals>.list8.<locals>.innerX   s    taxr$   r,   )r1   rD   r   rI   qs        r   list8z8TestListComprehension.test_bulk_use_cases.<locals>.list8T   s2     !"1QA" aAH #s    c                 N    | D cg c]  }|dz   	 c}fd} ||       S c c}w )z2 Test use of list comprehension access in closure r+   c                     | d   d   z   S rQ   r,   )r1   r   s    r   rI   zGTestListComprehension.test_bulk_use_cases.<locals>.list9.<locals>.innera   s    tad{"r$   r,   r1   rD   rI   r   s      @r   list9z8TestListComprehension.test_bulk_use_cases.<locals>.list9]   s.     !"1Q"A#8O	 #   "c                 N    | D cg c]  }|dz   	 c}fd} |      S c c}w )z= Test use of list comprehension access in closure and as arg r+   c                 :    | D cg c]
  }|d   z    c}S c c}w r   r,   )r1   r5   r   s     r   rI   zHTestListComprehension.test_bulk_use_cases.<locals>.list10.<locals>.inneri   s#    *+,!QAaD!,,,   r,   rV   s      @r   list10z9TestListComprehension.test_bulk_use_cases.<locals>.list10e   s.     !"1Q"A-8O	 #rX   c                 T    | D cg c]  }t        j                  |       }}|S c c}w )z6 Test scalar array construction in list comprehension r=   r1   rD   r   s      r   list11z9TestListComprehension.test_bulk_use_cases.<locals>.list11m   s(    &'(a!aA(H )   %c                 T    | D cg c]  }t        j                  |       }}|S c c}w )z@ Test scalar type conversion construction in list comprehension )r>   float64r^   s      r   list12z9TestListComprehension.test_bulk_use_cases.<locals>.list12r   s(    ()*1AA*H +r`   c                 T    | D cg c]  }t        j                  |       }}|S c c}w )zH Test use of explicit numpy scalar ctor reference in list comprehension )numpyrb   r^   s      r   list13z9TestListComprehension.test_bulk_use_cases.<locals>.list13w   s)    +,-1aq!1A-H .r`   c                 @    | D cg c]  }t        |       }}|S c c}w )z@ Test use of python scalar ctor reference in list comprehension floatr^   s      r   list14z9TestListComprehension.test_bulk_use_cases.<locals>.list14|   s$    #$%1aq1A%H &s   c                 f    | D cg c]  }t        |       }}t        j                  |      S c c}w )zo Test use of python scalar ctor reference in list comprehension followed by np array construction from the listri   r>   r?   r^   s      r   list15z9TestListComprehension.test_bulk_use_cases.<locals>.list15   s-    #$%1aq1A%88A; &s   .c                     | D cg c]  }t        |       }}| D cg c]  }| }}t        j                  |      }t        j                  |      }||z   S c c}w c c}w )zH Test type unification from np array ctors consuming list comprehension rl   )r1   rD   l1l2zeoes         r   list16z9TestListComprehension.test_bulk_use_cases.<locals>.list16   sW    $%&Aq%(AB&Q!QB"B"B7N	 's
   A	Ac                     | D cg c]6  }| D ]/  }| D ](  }t        j                  |dz  |dz  z         |k(  r|||f* 1 8 c}}}S c c}}}w )z6 Test complex list comprehension including math calls r*   )r>   sqrt)r1   abcs       r   list17z9TestListComprehension.test_bulk_use_cases.<locals>.list17   sh     S11a1q!t8LPQ8Q 1I34 () S S Ss   ;A	   c                 H    g }| D ]  }|k  s	|j                  |        |S )z3 Test loop list with outer scope var as conditionalappend)r1   rD   r   _OUTER_SCOPE_VARs      r   list18z9TestListComprehension.test_bulk_use_cases.<locals>.list18   s-    A''HHQK  Hr$   c                 :    | D cg c]
  }|k  s	| c}S c c}w )z8 Test list comprehension with outer scope as conditionalr,   )r1   r   r~   s     r   list19z9TestListComprehension.test_bulk_use_cases.<locals>.list19   s#     9q!A(8$8Aq999s   
c                 8    | D cg c]
  }|dk(  s	| c}S c c}w )z Test return empty list ir,   r0   s     r   list20z9TestListComprehension.test_bulk_use_cases.<locals>.list20   s      /q!AJAq///r7   c                 :    | D cg c]
  } |       c}S c c}w )z5 Test call a jitted function in a list comprehension r,   )r1   r   r-   s     r   list21z9TestListComprehension.test_bulk_use_cases.<locals>.list21   s    %&'QDGQ'''r[   c                     | D cg c]  }|dz
  	 }}| D cg c]  }|dz   	 }}|D  cg c]  } |D ]
  }| |k(  s	|   c}} S c c}w c c}w c c}} w )zH Test create two lists comprehensions and a third walking the first two r+   r,   )r1   r5   rv   rw   s       r   list22z9TestListComprehension.test_bulk_use_cases.<locals>.list22   s`     !"1QA" !"1QA" 6q!!QqAvA!Aq66 #"6s   AA	AAc                 P    | D cg c]  }| }}|j                  d       |S c c}w )z0 Test operation on comprehension generated list r+   r|   rC   s      r   list23z9TestListComprehension.test_bulk_use_cases.<locals>.list23   s)    AqAAHHQKH s   	#c                 N    | D cg c]  }|dkD  rt        |      n| }}|S c c}w )z Test type promotion r<   rh   rC   s      r   list24z9TestListComprehension.test_bulk_use_cases.<locals>.list24   s/    3451aQUq)1A5H 6s   "c                     t        j                  g d      }t        d      D cg c]  }|t        |      vs| }}|S c c}w )N)r+   r*         
   )r>   r?   r   list)r1   includedr   not_includeds       r   list25z9TestListComprehension.test_bulk_use_cases.<locals>.list25   sA    
 xx-H',RyLy!AT(^4KAyLL Ms
   A A r+   r*   r<      r   Nl        @       )r   r   
ValueErrorr>   testingassert_allclose	ExceptionassertRaisesr	   sysmaxsize)"r    r2   r6   r9   rA   rE   rJ   rN   rS   rW   r\   r_   rc   rf   rj   rm   rs   ry   r   r   r   r   r   r   r   r   fvarrefr"   raisesbitsr~   r-   s"                                   @@r   test_bulk_use_casesz)TestListComprehension.test_bulk_use_cases'   s    
d		- 
	-
	5	+	3	'
	C	)	)				
	
	
	
	
		S
 	 	:	0	(	7		
	  E5%E5%VVVVVVVVVVV	5 C*T*3/  sSX6  {+v&C&u-E#J , ;; DD!  JJ..uSz3s8D   E ,+s6   0DE	E,E
	E
EEEE'c                 z    d } t        d      |      }g d} ||      } ||      }| j                  ||       y )Nc                 B    t               }| D cg c]  }| }}|S c c}w rM   )object)r5   rD   r1   inlineds       r   objmode_funczATestListComprehension.test_objmode_inlining.<locals>.objmode_func   s%    A"#n!Qq!GnN %s   	T)forceobjr;   )r   assertPreciseEqual)r    r   r"   texpectedgots         r   test_objmode_inliningz+TestListComprehension.test_objmode_inlining   sA    	
 #T"<0?Ah#.r$   N)__name__
__module____qualname__r#   r   r   r,   r$   r   r   r      s    0zx
/r$   r   c                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Z ej"                  edk  d      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 y)TestArrayComprehensionFc                 L   |j                  dd      }|j                  dd      }|j                  dd      } t        d|      |      } || } || }	t        j                  j	                  ||	       |r| j                  |	d   j                  |       |r/| j                  d|j                  |j                  d	                n.| j                  d|j                  |j                  d	                |r/| j                  d
|j                  |j                  d	                yy)z^A generic check function that run both pyfunc, and jitted pyfunc,
        and compare results.run_parallelFassert_allocate_listassert_dtypeT)r'   parallelr+   zallocate listr   z@do_schedulingN)getr   r>   r   assert_array_equalr   dtypeassertIninspect_llvm
signaturesassertNotIn)
r    r!   argskwargsr   r   r   r"   pyrescress
             r   checkzTestArrayComprehension.check   s    zz.%8%zz*@%Hzz.%88T<8@d|


%%eT2T!W]]L9MM/5+=+=e>N>Nq>Q+RS_e.@.@AQAQRSAT.UVMM*E,>,>u?O?OPQ?R,ST r$   c                 d    d }| j                  |d       t        r| j                  |dd       y y )Nc                 x    | dz  }t        j                  t        |       D cg c]  }||z   	 c}      }|S c c}w Nr*   r>   r?   r   r   mr   r   s       r   comp_with_array_1zHTestArrayComprehension.test_comp_with_array_1.<locals>.comp_with_array_1  :    AAq2A!a%23AH 3   7r   Tr   r   PARALLEL_SUPPORTED)r    r   s     r   test_comp_with_array_1z-TestArrayComprehension.test_comp_with_array_1  s3    	
 	

$a(JJ(!$J? r$   c                 0    d }| j                  |dd       y )Nc                     t        j                  |  |       }t        j                  |D cg c]  }||k  r||z  n|dz   c}      S c c}w r   )r>   aranger?   )r   	thresholdAr1   s       r   comp_with_array_2zHTestArrayComprehension.test_comp_with_array_2.<locals>.comp_with_array_2  sH    		1"a A88LAq9}a!e!a%?LMMLs   Ar   r   r   )r    r   s     r   test_comp_with_array_2z-TestArrayComprehension.test_comp_with_array_2  s    	N 	

$a+r$   c                 z    d }dd l mc m} 	 d|_        | j	                  |dd       d|_        y # d|_        w xY w)Nc                 x    | dz  }t        j                  t        |       D cg c]  }||z   	 c}      }|S c c}w r   r   r   s       r   comp_with_array_noinlinezVTestArrayComprehension.test_comp_with_array_noinline.<locals>.comp_with_array_noinline  r   r   r   Fr   Tr   numba.core.inline_closurecallcoreinline_closurecallenable_inline_arraycallr   )r    r   ics      r   test_comp_with_array_noinlinez4TestArrayComprehension.test_comp_with_array_noinline  s@    	
 	32	.).B&JJ/JN)-B&B&   1 	:c                 2    d }| j                  |dd       y )Nc                 x    dg}t        |       D ]  }|j                  |        t        j                  |      }|S r   )r   r}   r>   r?   )r   lstr   r   s       r   r   zaTestArrayComprehension.test_comp_with_array_noinline_issue_6053.<locals>.comp_with_array_noinline&  s4    #C1X

1 AHr$   r   Tr   r   )r    r   s     r   (test_comp_with_array_noinline_issue_6053z?TestArrayComprehension.test_comp_with_array_noinline_issue_6053%  s    	 	

+QT
Jr$   c                 d    d }| j                  |d       t        r| j                  |dd       y y )Nc                     t        j                  t        |       D cg c]  }t        |       D cg c]  }||z  	 c}  c}}      }|S c c}w c c}}w rM   r   r   r   jr   s       r   comp_nest_with_arrayzNTestArrayComprehension.test_comp_nest_with_array.<locals>.comp_nest_with_array0  G    U1XFX%(3(Q1q5(3XFGAH 4F   A
AA
A
r   Tr   r   )r    r   s     r   test_comp_nest_with_arrayz0TestArrayComprehension.test_comp_nest_with_array/  s3    	 	

'+JJ+QTJB r$   c                 d    d }| j                  |d       t        r| j                  |dd       y y )Nc                     t        j                  t        |       D cg c]:  }t        |       D cg c]!  }t        |       D cg c]
  }||z  |z   c}# c}}< c}}}      }|S c c}w c c}}w c c}}}w rM   r   )r   r   r   kr   s        r   comp_nest_with_array_3zRTestArrayComprehension.test_comp_nest_with_array_3.<locals>.comp_nest_with_array_39  sg    UZ[\U]^U]PQ%(K(QuQx8x!AEAIx8(KU]^_AH 9K^s(   A4A.A)A.A4)A..A4r   Tr   r   )r    r   s     r   test_comp_nest_with_array_3z2TestArrayComprehension.test_comp_nest_with_array_38  s3    	 	

)1-JJ-qtJD r$   c                 z    d }dd l mc m} 	 d|_        | j	                  |dd       d|_        y # d|_        w xY w)Nc                     t        j                  t        |       D cg c]  }t        |       D cg c]  }||z  	 c}  c}}      }|S c c}w c c}}w rM   r   r   s       r   comp_nest_with_array_noinlinez`TestArrayComprehension.test_comp_nest_with_array_noinline.<locals>.comp_nest_with_array_noinlineB  r   r   r   Fr   Tr   r   )r    r   r   s      r   "test_comp_nest_with_array_noinlinez9TestArrayComprehension.test_comp_nest_with_array_noinlineA  sH    	 	32	.).B&JJ4a,0  2 *.B&B&r   c                 0    d }| j                  |dd       y )Nc                 j    t        j                  t        | |      D cg c]  }| c}      }|S c c}w rM   r   r   r   r   r   s       r   comp_with_array_rangezPTestArrayComprehension.test_comp_with_array_range.<locals>.comp_with_array_rangeO  s/    U1a[1[![12AH 2s   	0r   r   r   )r    r   s     r   test_comp_with_array_rangez1TestArrayComprehension.test_comp_with_array_rangeN  s    	 	

(!R0r$   c                 0    d }| j                  |dd       y )Nc                 l    t        j                  t        | |d      D cg c]  }| c}      }|S c c}w r   r   r   s       r   comp_with_array_range_and_stepzbTestArrayComprehension.test_comp_with_array_range_and_step.<locals>.comp_with_array_range_and_stepV  s1    U1a^4^!^45AH 5s   	1r   r   r   )r    r  s     r   #test_comp_with_array_range_and_stepz:TestArrayComprehension.test_comp_with_array_range_and_stepU  s    	 	

11b9r$   c                 2    d }| j                  |dd       y )Nc                 z    t        j                  t        |       D cg c]  }|dz  dk(  s| c}      }|S c c}w r)   r   r   r   r   s      r   comp_with_array_conditionalz\TestArrayComprehension.test_comp_with_array_conditional.<locals>.comp_with_array_conditional]  s7    U1X<XQ!!X<=AH =s   88r   Tr   r   )r    r  s     r    test_comp_with_array_conditionalz7TestArrayComprehension.test_comp_with_array_conditional\  s    	 	

.
Nr$   c                 2    d }| j                  |dd       y )Nc                     t        j                  t        |       D cg c]'  }|dz  dk(  st        |       D cg c]  }||z  	 c}) c}}      }|S c c}w c c}}w r)   r   r   s       r    comp_nest_with_array_conditionalzfTestArrayComprehension.test_comp_nest_with_array_conditional.<locals>.comp_nest_with_array_conditionald  sR    U1XTXQRS%(3(Q1q5(3XTUAH 4Ts   A
A
AA
A
r   Tr   r   )r    r  s     r   %test_comp_nest_with_array_conditionalz<TestArrayComprehension.test_comp_nest_with_array_conditionalc  s"    	 	

3Q(, 	 	.r$   )r+      zASetting an array element with a sequence is removed in NumPy 1.24c                    d }| j                  t              5 }| j                  |d       d d d        | j                  t        t        j                               | j                  dt        |j                               y # 1 sw Y   XxY w)Nc                     t        j                  t        |       D cg c]!  }t        |dz         D cg c]  }||z  	 c}# c}}      }|S c c}w c c}}w rH   r   r   s       r   comp_nest_with_dependencyzXTestArrayComprehension.test_comp_nest_with_dependency.<locals>.comp_nest_with_dependencyn  sK    uQxHx!%!*5*Q1q5*5xHIAH 6Hs   A
AA
A
r   zarray(undefined,r   r	   r   r   r   str	exception)r    r  r   s      r   test_comp_nest_with_dependencyz5TestArrayComprehension.test_comp_nest_with_dependencyj  si    	 {+vJJ0!4 ,lC(8(8$9:(#f.>.>*?@ ,+s   BBc                    d }| j                  t              5 }| j                  |       d d d        | j                  t        t        j                               | j                  dt        |j                               y # 1 sw Y   XxY w)Nc                  ~    t        g dg d      } t        j                  | D cg c]  \  }}|	 c}}      S c c}}w )Nr;   )r   r   r   )zipr>   r?   )valrv   rw   s      r   comp_unsupported_iterzPTestArrayComprehension.test_comp_unsupported_iter.<locals>.comp_unsupported_iterx  s3    i+C883/341aQ3/00/s   9
z1Unsupported iterator found in array comprehensionr  )r    r  r   s      r   test_comp_unsupported_iterz1TestArrayComprehension.test_comp_unsupported_iterw  sj    	1 {+vJJ,- ,lC(8(8$9:I&**+	- ,+s   BBc                 `    d }| j                  |dd       d }| j                  |dd       y )Nc                 8    g d}t        j                  |      }|S )Nr+   r*   r<   r   r=   r   r   rv   s      r   no_array_comp1zATestArrayComprehension.test_no_array_comp.<locals>.no_array_comp1  s    AAHr$   r   Fr   c                 Z    g d}t        j                  |      }|j                  d       |S )Nr  r   )r>   r?   r}   r  s      r   no_array_comp2zATestArrayComprehension.test_no_array_comp.<locals>.no_array_comp2  s$    AAHHQKHr$   Tr   )r    r   r"  s      r   test_no_array_compz)TestArrayComprehension.test_no_array_comp  s4    	
 	

>2E
B	
 	

>2D
Ar$   c                 .    d }| j                  |d       y )Nc                     t        j                  t        |       D cg c].  }t        j                  t        |       D cg c]  }| c}      0 c}}      }|S c c}w c c}}w rM   r   r   r5   r1   r   s       r   nested_arrayz>TestArrayComprehension.test_nested_array.<locals>.nested_array  L    E!HMHq288a$91Q$9:HMNAH %:M   !A 
	A	A 
A 
r   r   r    r'  s     r   test_nested_arrayz(TestArrayComprehension.test_nested_array  s    	 	

<$r$   c                 .    d }| j                  |d       y )Nc                     t        j                  t        d      D cg c].  }t        j                  t        d      D cg c]  }| c}      0 c}}      }|S c c}w c c}}w )Nr   r<   r   r&  s       r   r'  zITestArrayComprehension.test_nested_array_with_const.<locals>.nested_array  r(  r)  r   r   r*  s     r   test_nested_array_with_constz3TestArrayComprehension.test_nested_array_with_const  s    	 	

<#r$   c                     d }g d}| j                  ||       | j                  |t        j                  |             | j                  |t        |             | j                  |t	        j
                  |             y )Nc                 \    t        j                  | D cg c]  }||z  	 c}      }|S c c}w rM   r=   )rv   r1   r   s      r   
array_compzDTestArrayComprehension.test_array_comp_with_iter.<locals>.array_comp  s-    !-!Q1q5!-.AH .s   )r   )r   r>   r?   tupler   List)r    r1  r   s      r   test_array_comp_with_iterz0TestArrayComprehension.test_array_comp_with_iter  sZ    	 

:q!

:rxx{+

:uQx(

:uzz!}-r$   c                 N    d }| j                  |dt        j                         y )Nc                     t        j                  t        |       D cg c]  }| c}t         j                        }|S c c}w )N)r   )r>   r?   r   	complex64r  s      r   r1  zETestArrayComprehension.test_array_comp_with_dtype.<locals>.array_comp  s3    U1X.X!X.bllCAH /s   	?r   r   )r   r>   r7  r    r1  s     r   test_array_comp_with_dtypez1TestArrayComprehension.test_array_comp_with_dtype  s    	 	

:r
=r$   c                 .    d }| j                  |d       y )Nc                 n    t        j                  t        |       D cg c]  }|dz  	 c}      }|S c c}w )Ny              ?r   r  s      r   r1  zITestArrayComprehension.test_array_comp_inferred_dtype.<locals>.array_comp  s1    %(3(Q!b&(34AH 4s   2r   r   r9  s     r   test_array_comp_inferred_dtypez5TestArrayComprehension.test_array_comp_inferred_dtype      	 	

:r"r$   c                 .    d }| j                  |d       y )Nc                     t        j                  t        |       D cg c]  }t        |       D cg c]  }||z  	 c}  c}}      }|S c c}w c c}}w rM   r   r   s       r   r1  zPTestArrayComprehension.test_array_comp_inferred_dtype_nested.<locals>.array_comp  r   r   r   r   r9  s     r   %test_array_comp_inferred_dtype_nestedz<TestArrayComprehension.test_array_comp_inferred_dtype_nested  r>  r$   c                 .    d }| j                  |d       y )Nc                     t        j                  t        |       D cg c]  }t        |       D cg c]  }||z  	 c}  c}}      }|S c c}w c c}}w rM   r   r   s       r   r1  zTTestArrayComprehension.test_array_comp_inferred_dtype_nested_sum.<locals>.array_comp  sG    U1XFX%(3(Q1q5(3XFGAH 4Fr   r   r   r9  s     r   )test_array_comp_inferred_dtype_nested_sumz@TestArrayComprehension.test_array_comp_inferred_dtype_nested_sum  s    	
 	

:r"r$   c                    d }d}| j                  |d|t        j                         | j                  t              5 } t        d      |      } |dd       d d d        | j                  t        dj                  t        j                        z   t        j                               | j                  d	j                  t        j                        t        |j                               y # 1 sw Y   xY w)
Nc                 r    t        j                  t        |       D cg c]  }| c}      }||d<   |S c c}w r   r   )r   vr   arrs       r   r1  zYTestArrayComprehension.test_array_comp_inferred_dtype_outside_setitem.<locals>.array_comp  s6    ((uQx0x!Ax01CCFJ 1s   	4g333333?r   r8  Tr&   y        ffffff@z Function({})z/(array({}, 1d, C), Literal[int](0), complex128))r   r>   r   r   r	   r   r   r   formatoperatorsetitemr  r  r   )r    r1  rG  r   r"   s        r   .test_array_comp_inferred_dtype_outside_setitemzETestArrayComprehension.test_array_comp_inferred_dtype_outside_setitem  s    	 

:r1277
;{+v&C&z2E"dO , 	?11(2B2BCC  !	
 	=DDUZZP  !	
 ,+s   C..C7c           	         dt        d      fd       }t               5 } |        d d d        j                         j                         }t               5 }t	        t        j                  t              D cg c]  }| c}             d d d        j                         j                         }| j                  ||       | j                  |d       y # 1 sw Y   xY wc c}w # 1 sw Y   ]xY w)Nd   Tr&   c                      t        j                  t              D  cg c]  } |  c}       }t         j                  j	                  |       t        |       y c c} w rM   )r>   r?   r   randomshuffleprint)r   numbersnelems     r   foozFTestArrayComprehension.test_array_comp_shuffle_sideeffect.<locals>.foo  sB    hh5<8<a<89GIIg&'N  9s   	Az\[(\s*\d+)+\])
r   r   getvaluestriprR  r>   r?   r   assertNotEqualassertRegex)r    rU  gotbufr   	expectbufr   expectrT  s          @r   "test_array_comp_shuffle_sideeffectz9TestArrayComprehension.test_array_comp_shuffle_sideeffect  s    	d		 
	
 &E oo%%')"((uU|4|!A|456 ##%++- 	C(./ 
 5 s)   C"C,<	C'C,C$'C,,C5c                 2    d }| j                  |dd       y )Nc                     g }t        j                  dg      }t         j                  j                  |d      }|j	                  | |z          |S rH   )r>   r?   rP  choicer}   )r1   r   myListrv   s       r   r   z=TestArrayComprehension.test_empty_list_not_removed.<locals>.f  s@    AXXqc]F		  +AHHQUOHr$   r   Tr   r   )r    r   s     r   test_empty_list_not_removedz2TestArrayComprehension.test_empty_list_not_removed  s    	 	

1ad
3r$   c                 2    d }| j                  |dd       y)z Test issue 3742 c                     t        d      D cg c]  }| c} t        j                  |       }t        |       D ]  }t        j                  |       }|||<    |S c c}w rH   )r   r>   emptyzeros)r   r   rD   s      r   rU  z;TestArrayComprehension.test_reuse_of_array_var.<locals>.foo  sW     a!1Q!A1XHHQK!  H "s   	Ar   Tr   Nr   )r    rU  s     r   test_reuse_of_array_varz.TestArrayComprehension.test_reuse_of_array_var  s    		 	

3
6r$   N)!r   r   r   _numba_parallel_test_r   r   r   r   r   r   r   r   r   r  r	  r  unittest
skipUnlessr   r  r  r#  r+  r.  r4  r:  r=  rA  rD  rL  r]  rb  rg  r,   r$   r   r   r      s    !U&@,.KCE.1:O. X0)*A*A-B%$.>###
.0,47r$   r   __main__)ri  numba.tests.supportr   r   rJ  re   r>   numbar   r   r   
numba.corer   r   numba.core.errorsr	   r
   numba.core.types.functionsr   numba.np.numpy_supportr   r   r   r   r   r   r   r   r   mainr,   r$   r   <module>rs     s|     ( 
    " " # 8 3 0 < <  Z O/H O/d]7X.. ]7@	 zHMMO r$   