
    ܙdE                        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 d dl	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                     dS dS )    N)TestCase)compile_isolated)jittyped)typesutils)TypingErrorLoweringError)_header_lead)numpy_version)tag_32bitcaptured_stdoutc                 P    d t          |           D             }d}|D ]}||z  }|S )Nc                     g | ]}|S  r   .0is     >lib/python3.11/site-packages/numba/tests/test_comprehension.py
<listcomp>zcomp_list.<locals>.<listcomp>   s    q    r   range)nlsr   s       r   	comp_listr      s?    E!HHA	A  	QHr   c                        e Zd Zd Zd Zd ZdS )TestListComprehensionc                 H   t           }t          |t          j        g          }|j        }|                      |d           |d                     |                      |d           |d                     |                      |d           |d                     d S )N   r   )r   r   r   intpentry_pointassertEqual)selfpyfunccrescfuncs       r   test_comp_listz$TestListComprehension.test_comp_list!   s    55 q66!99---q66!99---rFF2JJ/////r   c                 2   ! 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 ]}	  t          d          |          }|                      ||           ||                     E# t          $ rF 	 t          j                             ||           ||                     n# t          $ r  w xY wY w xY w|                     t                    5 } t          d          |          } ||           ddd           n# 1 swxY w Y   t          j
        d k    rd!}dS d"}dS )#z3 Tests the large number of use cases defined below Tnopythonc                 N    | dk     r| S  | dz
             | dz
            z   S )N      r   )r   fib3s    r   r2   z7TestListComprehension.test_bulk_use_cases.<locals>.fib3-   s4    1uu4A;;a!e,,r   c                 V    d t          dt          |           dz
            D             S )z Test basic list comprehension c                     g | ]}|S r   r   r   s     r   r   zLTestListComprehension.test_bulk_use_cases.<locals>.list1.<locals>.<listcomp>5   s    444!A444r   r1   )r   lenxs    r   list1z8TestListComprehension.test_bulk_use_cases.<locals>.list13   s*    44uQA
334444r   c                     d | D             S )z% Test conditional list comprehension c                     g | ]
}|d k     |S r0   r   r   ys     r   r   zLTestListComprehension.test_bulk_use_cases.<locals>.list2.<locals>.<listcomp>9   s    ***!AEEAEEEr   r   r6   s    r   list2z8TestListComprehension.test_bulk_use_cases.<locals>.list27   s    **q****r   c                     d | D             S )z! Test ternary list comprehension c                 "    g | ]}|d k     r|ndS )r0   r#   r   r<   s     r   r   zLTestListComprehension.test_bulk_use_cases.<locals>.list3.<locals>.<listcomp>=   s$    2221QAAB222r   r   r6   s    r   list3z8TestListComprehension.test_bulk_use_cases.<locals>.list3;   s    222222r   c                 .    t          j        g d          S )z* Test list comprehension to np.array ctor r1   r0      nparrayr6   s    r   list4z8TestListComprehension.test_bulk_use_cases.<locals>.list4?   s    8III&&&r   c                 D     t          j         fd D                       S )z1 Test nested list comprehension to np.array ctor c                 L    g | ] }t          j        d  D                       !S )c                     g | ]}|S r   r   r   zs     r   r   zWTestListComprehension.test_bulk_use_cases.<locals>.list5.<locals>.<listcomp>.<listcomp>F   s    nnnQqnnnr   rE   )r   r=   r7   s     r   r   zLTestListComprehension.test_bulk_use_cases.<locals>.list5.<locals>.<listcomp>F   s-    AAA!RXnn!nnn55AAAr   rE   r6   s   `r   list5z8TestListComprehension.test_bulk_use_cases.<locals>.list5D   s(    8AAAAqAAABBBr   c                 &    d fd| D             S )z2 Test use of inner function in list comprehension c                     | dz   S Nr1   r   r6   s    r   innerzGTestListComprehension.test_bulk_use_cases.<locals>.list6.<locals>.innerJ   s    1ur   c                 &    g | ]} |          S r   r   r   rM   rR   s     r   r   zLTestListComprehension.test_bulk_use_cases.<locals>.list6.<locals>.<listcomp>L   !    (((EE!HH(((r   r   )r7   rR   s    @r   list6z8TestListComprehension.test_bulk_use_cases.<locals>.list6H   s,      ((((a((((r   c                 0    dfdfd| D             S )z+ Test use of closure in list comprehension rD   c                     | z   S )Nr   )r7   r=   s    r   rR   zGTestListComprehension.test_bulk_use_cases.<locals>.list7.<locals>.innerR   s    1ur   c                 &    g | ]} |          S r   r   rT   s     r   r   zLTestListComprehension.test_bulk_use_cases.<locals>.list7.<locals>.<listcomp>T   rU   r   r   )r7   rR   r=   s    @@r   list7z8TestListComprehension.test_bulk_use_cases.<locals>.list7N   s<    A    ((((a((((r   c                 :    d | D             }d } ||          }|S )z9 Test use of list comprehension as arg to inner function c                     g | ]}|d z   S r1   r   rL   s     r   r   zLTestListComprehension.test_bulk_use_cases.<locals>.list8.<locals>.<listcomp>X       """1Q"""r   c                     | d         dz   S Nr   r1   r   r6   s    r   rR   zGTestListComprehension.test_bulk_use_cases.<locals>.list8.<locals>.innerZ   s    taxr   r   )r7   r   rR   qs       r   list8z8TestListComprehension.test_bulk_use_cases.<locals>.list8V   s6    """""A     aAHr   c                 <    d | D             fd} ||           S )z2 Test use of list comprehension access in closure c                     g | ]}|d z   S r]   r   rL   s     r   r   zLTestListComprehension.test_bulk_use_cases.<locals>.list9.<locals>.<listcomp>a   r^   r   c                 &    | d         d         z   S r`   r   r7   r   s    r   rR   zGTestListComprehension.test_bulk_use_cases.<locals>.list9.<locals>.innerc   s    tad{"r   r   r7   rR   r   s     @r   list9z8TestListComprehension.test_bulk_use_cases.<locals>.list9_   s<    """""A# # # # #588Or   c                 <    d | D             fd} |          S )z= Test use of list comprehension access in closure and as arg c                     g | ]}|d z   S r]   r   rL   s     r   r   zMTestListComprehension.test_bulk_use_cases.<locals>.list10.<locals>.<listcomp>i   r^   r   c                      fd| D             S )Nc                 &    g | ]}|d          z   S )r   r   )r   r=   r   s     r   r   z\TestListComprehension.test_bulk_use_cases.<locals>.list10.<locals>.inner.<locals>.<listcomp>l   s!    ,,,QAaD,,,r   r   rf   s    r   rR   zHTestListComprehension.test_bulk_use_cases.<locals>.list10.<locals>.innerk   s    ,,,,!,,,,r   r   rg   s     @r   list10z9TestListComprehension.test_bulk_use_cases.<locals>.list10g   s<    """""A- - - - -588Or   c                     d | D             }|S )z6 Test scalar array construction in list comprehension c                 6    g | ]}t          j        |          S r   rE   rL   s     r   r   zMTestListComprehension.test_bulk_use_cases.<locals>.list11.<locals>.<listcomp>q   s     (((!(((r   r   rf   s     r   list11z9TestListComprehension.test_bulk_use_cases.<locals>.list11o   s    ((a(((AHr   c                     d | D             }|S )z@ Test scalar type conversion construction in list comprehension c                 6    g | ]}t          j        |          S r   )rF   float64rL   s     r   r   zMTestListComprehension.test_bulk_use_cases.<locals>.list12.<locals>.<listcomp>v   s     ***1A***r   r   rf   s     r   list12z9TestListComprehension.test_bulk_use_cases.<locals>.list12t   s    *****AHr   c                     d | D             }|S )zH Test use of explicit numpy scalar ctor reference in list comprehension c                 6    g | ]}t          j        |          S r   )numpyrs   rL   s     r   r   zMTestListComprehension.test_bulk_use_cases.<locals>.list13.<locals>.<listcomp>{   s"    ---aq!!---r   r   rf   s     r   list13z9TestListComprehension.test_bulk_use_cases.<locals>.list13y   s    --1---AHr   c                     d | D             }|S )z@ Test use of python scalar ctor reference in list comprehension c                 ,    g | ]}t          |          S r   floatrL   s     r   r   zMTestListComprehension.test_bulk_use_cases.<locals>.list14.<locals>.<listcomp>       %%%aq%%%r   r   rf   s     r   list14z9TestListComprehension.test_bulk_use_cases.<locals>.list14~   s    %%1%%%AHr   c                 B    d | D             }t          j        |          S )zo Test use of python scalar ctor reference in list comprehension followed by np array construction from the listc                 ,    g | ]}t          |          S r   r{   rL   s     r   r   zMTestListComprehension.test_bulk_use_cases.<locals>.list15.<locals>.<listcomp>   r}   r   rE   rf   s     r   list15z9TestListComprehension.test_bulk_use_cases.<locals>.list15   s#    %%1%%%A8A;;r   c                     d | D             }d | D             }t          j        |          }t          j        |          }||z   S )zH Test type unification from np array ctors consuming list comprehension c                 ,    g | ]}t          |          S r   r{   rL   s     r   r   zMTestListComprehension.test_bulk_use_cases.<locals>.list16.<locals>.<listcomp>   s    &&&q%((&&&r   c                     g | ]}|S r   r   rL   s     r   r   zMTestListComprehension.test_bulk_use_cases.<locals>.list16.<locals>.<listcomp>   s    !r   rE   )r7   l1l2zeoes        r   list16z9TestListComprehension.test_bulk_use_cases.<locals>.list16   sG    &&A&&&BQB"B"B7Nr   c                        fd D             S )z6 Test complex list comprehension including math calls c           	      p    g | ]2}D ]-}D ](}t          j        |d z  |d z  z             |k    #|||f).3S r;   )rF   sqrt)r   abcr7   s       r   r   zMTestListComprehension.test_bulk_use_cases.<locals>.list17.<locals>.<listcomp>   su     S S SS S#$1S S./1q!t8L8LPQ8Q8Q 1I8Q8Q8Q8Q8Qr   r   r6   s   `r   list17z9TestListComprehension.test_bulk_use_cases.<locals>.list17   s6    S S S SS S S Sr   	   c                 L    g }| D ]}|k     r|                     |           |S )z3 Test loop list with outer scope var as conditionalappend)r7   rM   r   _OUTER_SCOPE_VARs      r   list18z9TestListComprehension.test_bulk_use_cases.<locals>.list18   s8    A    '''HHQKKKHr   c                      fd| D             S )z8 Test list comprehension with outer scope as conditionalc                      g | ]
}|k     |S r   r   )r   r   r   s     r   r   zMTestListComprehension.test_bulk_use_cases.<locals>.list19.<locals>.<listcomp>   s$    999!A(8$8$8A$8$8$8r   r   )r7   r   s    r   list19z9TestListComprehension.test_bulk_use_cases.<locals>.list19   s    9999q9999r   c                     d | D             S )z Test return empty list c                     g | ]
}|d k    |S )ir   r   s     r   r   zMTestListComprehension.test_bulk_use_cases.<locals>.list20.<locals>.<listcomp>   s    ///!AJJAJJJr   r   r6   s    r   list20z9TestListComprehension.test_bulk_use_cases.<locals>.list20   s    //q////r   c                      fd| D             S )z5 Test call a jitted function in a list comprehension c                 &    g | ]} |          S r   r   )r   r   r2   s     r   r   zMTestListComprehension.test_bulk_use_cases.<locals>.list21.<locals>.<listcomp>   s!    '''DDGG'''r   r   )r7   r2   s    r   list21z9TestListComprehension.test_bulk_use_cases.<locals>.list21   s    ''''Q''''r   c                 P    d | D             }d | D             fd|D             S )zH Test create two lists comprehensions and a third walking the first two c                     g | ]}|d z
  S r]   r   r<   s     r   r   zMTestListComprehension.test_bulk_use_cases.<locals>.list22.<locals>.<listcomp>   r^   r   c                     g | ]}|d z   S r]   r   r<   s     r   r   zMTestListComprehension.test_bulk_use_cases.<locals>.list22.<locals>.<listcomp>   r^   r   c                 *    g | ]}D ]
}||k    |S r   r   )r   r7   r=   r   s      r   r   zMTestListComprehension.test_bulk_use_cases.<locals>.list22.<locals>.<listcomp>   s*    666!!66QqAvvAvvvvr   r   )r7   r   r   s     @r   list22z9TestListComprehension.test_bulk_use_cases.<locals>.list22   sC    """""A"""""A6666q6666r   c                 H    d | D             }|                     d           |S )z0 Test operation on comprehension generated list c                     g | ]}|S r   r   r<   s     r   r   zMTestListComprehension.test_bulk_use_cases.<locals>.list23.<locals>.<listcomp>   s    qr   r1   r   r7   rM   s     r   list23z9TestListComprehension.test_bulk_use_cases.<locals>.list23   s%    AAHHQKKKHr   c                     d | D             }|S )z Test type promotion c                 <    g | ]}|d k    rt          |          n|S )rD   r{   r<   s     r   r   zMTestListComprehension.test_bulk_use_cases.<locals>.list24.<locals>.<listcomp>   s*    555aQUUq555r   r   r   s     r   list24z9TestListComprehension.test_bulk_use_cases.<locals>.list24   s    551555AHr   c                 j    t          j        g d          fdt          d          D             }|S )N)r1   r0         c                 6    g | ]}|t                    v|S r   )list)r   r   includeds     r   r   zMTestListComprehension.test_bulk_use_cases.<locals>.list25.<locals>.<listcomp>   s)    LLL!AT(^^4K4KA4K4K4Kr   
   rF   rG   r   )r7   not_includedr   s     @r   list25z9TestListComprehension.test_bulk_use_cases.<locals>.list25   s=    
 x--HLLLLuRyyLLLLr   r1   r0   rD      r"   Nl        @       )r   r&   
ValueErrorrF   testingassert_allclose	ExceptionassertRaisesr	   sysmaxsize)"r'   r8   r>   rA   rH   rN   rV   rZ   rb   rh   rm   rp   rt   rx   r~   r   r   r   r   r   r   r   r   r   r   r   fvarrefr*   raisesbitsr   r2   s"                                   @@r   test_bulk_use_casesz)TestListComprehension.test_bulk_use_cases)   s    
d				- 	- 	- 	- 
		-
	5 	5 	5	+ 	+ 	+	3 	3 	3	' 	' 	'
	C 	C 	C	) 	) 	)	) 	) 	)	 	 		 	 		 	 		 	 	
	 	 	
	 	 	
	 	 	
	 	 	
	 	 		S 	S 	S
 	 	 	 	 	 	: 	: 	: 	: 	:	0 	0 	0	( 	( 	( 	( 	(	7 	7 	7	 	 		 	 	
	  	  	  E5%E5%VVVVVVVVVVV	5 oo 	 	C*T***3//  sSSXX6666   J..uuSzz33s88DDDD     ED {++ 	v&C&&&u--EE#JJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ;  DDDDDDs=   AC
D(#2DD(D""D('D(%E66E:=E:c                     d } t          d          |          }g d} ||          } ||          }|                     ||           d S )Nc                 :    t                      }d | D             }|S )Nc                     g | ]}|S r   r   r   r7   s     r   r   zUTestListComprehension.test_objmode_inlining.<locals>.objmode_func.<locals>.<listcomp>   s    nnnQqnnnr   )object)r=   rM   inlineds      r   objmode_funczATestListComprehension.test_objmode_inlining.<locals>.objmode_func   s    A$n!nnnGNr   T)forceobjrC   )r   assertPreciseEqual)r'   r   r*   texpectedgots         r   test_objmode_inliningz+TestListComprehension.test_objmode_inlining   sl    	 	 	
 #T"""<00II<??eAhh#.....r   N)__name__
__module____qualname__r+   r   r   r   r   r   r    r       sE        0 0 0z z 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 dS )TestArrayComprehensionFc                    |                     dd          }|                     dd          }|                     dd          } t          d|          |          } || } || }	t          j                            ||	           |r!|                     |	d         j        |           |r5|                     d|                    |j	        d	                              n4| 
                    d|                    |j	        d	                              |r6|                     d
|                    |j	        d	                              dS dS )z^A generic check function that run both pyfunc, and jitted pyfunc,
        and compare results.run_parallelFassert_allocate_listassert_dtypeT)r.   parallelr1   zallocate listr   z@do_schedulingN)getr   rF   r   assert_array_equalr&   dtypeassertIninspect_llvm
signaturesassertNotIn)
r'   r(   argskwargsr   r   r   r*   pyresr)   s
             r   checkzTestArrayComprehension.check   sW    zz.%88%zz*@%HHzz.%888T<888@@ud|

%%eT222 	:T!W]L999 	WMM/5+=+=e>Nq>Q+R+RSSSS_e.@.@AQRSAT.U.UVVV 	UMM*E,>,>u?OPQ?R,S,STTTTT	U 	Ur   c                 z    d }|                      |d           t          r|                      |dd           d S d S )Nc                 l    | dz  t          j        fdt          |           D                       }|S )Nr0   c                     g | ]}|z   S r   r   r   r   ms     r   r   z\TestArrayComprehension.test_comp_with_array_1.<locals>.comp_with_array_1.<locals>.<listcomp>      222A!a%222r   r   r   r   r   s     @r   comp_with_array_1zHTestArrayComprehension.test_comp_with_array_1.<locals>.comp_with_array_1
  ;    AA2222q22233AHr   r"   Tr   r   PARALLEL_SUPPORTED)r'   r   s     r   test_comp_with_array_1z-TestArrayComprehension.test_comp_with_array_1	  s\    	 	 	
 	

$a((( 	@JJ(!$J?????	@ 	@r   c                 :    d }|                      |dd           d S )Nc                 p    t          j        |  |           }t          j        fd|D                       S )Nc                 0    g | ]}|k     r||z  n|d z  S r;   r   )r   r7   	thresholds     r   r   z\TestArrayComprehension.test_comp_with_array_2.<locals>.comp_with_array_2.<locals>.<listcomp>  s-    LLLAq9}}a!ee!a%LLLr   )rF   arangerG   )r   r   As    ` r   comp_with_array_2zHTestArrayComprehension.test_comp_with_array_2.<locals>.comp_with_array_2  s;    	1"a  A8LLLLLLLMMMr   r"   r   r   )r'   r   s     r   test_comp_with_array_2z-TestArrayComprehension.test_comp_with_array_2  s3    	N 	N 	N 	

$a+++++r   c                     d }dd l mc m} 	 d|_        |                     |dd           d|_        d S # d|_        w xY w)Nc                 l    | dz  t          j        fdt          |           D                       }|S )Nr0   c                     g | ]}|z   S r   r   r   s     r   r   zjTestArrayComprehension.test_comp_with_array_noinline.<locals>.comp_with_array_noinline.<locals>.<listcomp>  r   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  sv    	 	 	
 	322222222	.).B&JJ/JNNN)-B&&&B&----   6 	?c                 <    d }|                      |dd           d S )Nc                     dg}t          |           D ]}|                    |           t          j        |          }|S )Nr   )r   r   rF   rG   )r   lstr   r   s       r   r  zaTestArrayComprehension.test_comp_with_array_noinline_issue_6053.<locals>.comp_with_array_noinline(  sA    #C1XX  

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'  s2    	 	 	 	

+QT
JJJJJr   c                 z    d }|                      |d           t          r|                      |dd           d S d S )Nc                 b     t          j         fdt                     D                       }|S )Nc                 H    g | ]fd t                    D             S )c                     g | ]}|z  S r   r   r   jr   s     r   r   zmTestArrayComprehension.test_comp_nest_with_array.<locals>.comp_nest_with_array.<locals>.<listcomp>.<listcomp>3      333Q1q5333r   r   r   r   r   s    @r   r   zbTestArrayComprehension.test_comp_nest_with_array.<locals>.comp_nest_with_array.<locals>.<listcomp>3  5    FFF3333%((333FFFr   r   r   r   s   ` r   comp_nest_with_arrayzNTestArrayComprehension.test_comp_nest_with_array.<locals>.comp_nest_with_array2  2    FFFFU1XXFFFGGAHr   r"   Tr   r   )r'   r  s     r   test_comp_nest_with_arrayz0TestArrayComprehension.test_comp_nest_with_array1  s\    	 	 	 	

'+++ 	CJJ+QTJBBBBB	C 	Cr   c                 z    d }|                      |d           t          r|                      |dd           d S d S )Nc                 b     t          j         fdt                     D                       }|S )Nc                 J    g | ]fd t                    D             S )c                 J    g | ]fd t                    D             S )c                      g | ]
}z  |z  S r   r   )r   kr   r  s     r   r   z|TestArrayComprehension.test_comp_nest_with_array_3.<locals>.comp_nest_with_array_3.<locals>.<listcomp>.<listcomp>.<listcomp><  s!    888!AEAI888r   r   )r   r  r   r   s    @r   r   zqTestArrayComprehension.test_comp_nest_with_array_3.<locals>.comp_nest_with_array_3.<locals>.<listcomp>.<listcomp><  s8    KKKQ88888uQxx888KKKr   r   r  s    @r   r   zfTestArrayComprehension.test_comp_nest_with_array_3.<locals>.comp_nest_with_array_3.<locals>.<listcomp><  s9    ^^^PQKKKKK%((KKK^^^r   r   r  s   ` r   comp_nest_with_array_3zRTestArrayComprehension.test_comp_nest_with_array_3.<locals>.comp_nest_with_array_3;  s6    ^^^^UZ[\U]U]^^^__AHr   r"   Tr   r   )r'   r#  s     r   test_comp_nest_with_array_3z2TestArrayComprehension.test_comp_nest_with_array_3:  s\    	 	 	 	

)1--- 	EJJ-qtJDDDDD	E 	Er   c                     d }dd l mc m} 	 d|_        |                     |dd           d|_        d S # d|_        w xY w)Nc                 b     t          j         fdt                     D                       }|S )Nc                 H    g | ]fd t                    D             S )c                     g | ]}|z  S r   r   r  s     r   r   zTestArrayComprehension.test_comp_nest_with_array_noinline.<locals>.comp_nest_with_array_noinline.<locals>.<listcomp>.<listcomp>E  r  r   r   r  s    @r   r   ztTestArrayComprehension.test_comp_nest_with_array_noinline.<locals>.comp_nest_with_array_noinline.<locals>.<listcomp>E  r  r   r   r  s   ` r   comp_nest_with_array_noinlinez`TestArrayComprehension.test_comp_nest_with_array_noinline.<locals>.comp_nest_with_array_noinlineD  r  r   r   Fr"   Tr  r  )r'   r)  r	  s      r   "test_comp_nest_with_array_noinlinez9TestArrayComprehension.test_comp_nest_with_array_noinlineC  s    	 	 	 	322222222	.).B&JJ4a,0  2 2 2 *.B&&&B&----r  c                 :    d }|                      |dd           d S )Nc                 ^    t          j        d t          | |          D                       }|S )Nc                     g | ]}|S r   r   r   s     r   r   zdTestArrayComprehension.test_comp_with_array_range.<locals>.comp_with_array_range.<locals>.<listcomp>R  s    111!111r   r   r   r   r   s      r   comp_with_array_rangezPTestArrayComprehension.test_comp_with_array_range.<locals>.comp_with_array_rangeQ  s-    11U1a[[11122AHr   r"   r   r   )r'   r/  s     r   test_comp_with_array_rangez1TestArrayComprehension.test_comp_with_array_rangeP  s0    	 	 	 	

(!R00000r   c                 :    d }|                      |dd           d S )Nc                 `    t          j        d t          | |d          D                       }|S )Nc                     g | ]}|S r   r   r   s     r   r   zvTestArrayComprehension.test_comp_with_array_range_and_step.<locals>.comp_with_array_range_and_step.<locals>.<listcomp>Y  s    444!444r   r0   r   r.  s      r   comp_with_array_range_and_stepzbTestArrayComprehension.test_comp_with_array_range_and_step.<locals>.comp_with_array_range_and_stepX  s/    44U1a^^44455AHr   r"   r   r   )r'   r4  s     r   #test_comp_with_array_range_and_stepz:TestArrayComprehension.test_comp_with_array_range_and_stepW  s0    	 	 	 	

11b99999r   c                 <    d }|                      |dd           d S )Nc                 \    t          j        d t          |           D                       }|S )Nc                 $    g | ]}|d z  dk    |S )r0   r1   r   r   s     r   r   zpTestArrayComprehension.test_comp_with_array_conditional.<locals>.comp_with_array_conditional.<locals>.<listcomp>`  s!    <<<Q!!r   r   r  s     r   comp_with_array_conditionalz\TestArrayComprehension.test_comp_with_array_conditional.<locals>.comp_with_array_conditional_  s+    <<U1XX<<<==AHr   r   Tr  r   )r'   r9  s     r    test_comp_with_array_conditionalz7TestArrayComprehension.test_comp_with_array_conditional^  s2    	 	 	 	

.
NNNNNr   c                 <    d }|                      |dd           d S )Nc                 b     t          j         fdt                     D                       }|S )Nc                 Z    g | ]&d z  dk    fdt                    D             'S )r0   r1   c                     g | ]}|z  S r   r   r  s     r   r   zTestArrayComprehension.test_comp_nest_with_array_conditional.<locals>.comp_nest_with_array_conditional.<locals>.<listcomp>.<listcomp>g  r  r   r   r  s    @r   r   zzTestArrayComprehension.test_comp_nest_with_array_conditional.<locals>.comp_nest_with_array_conditional.<locals>.<listcomp>g  s?    TTTQRS3333%((333r   r   r  s   ` r    comp_nest_with_array_conditionalzfTestArrayComprehension.test_comp_nest_with_array_conditional.<locals>.comp_nest_with_array_conditionalf  s2    TTTTU1XXTTTUUAHr   r"   Tr  r   )r'   r?  s     r   %test_comp_nest_with_array_conditionalz<TestArrayComprehension.test_comp_nest_with_array_conditionale  s@    	 	 	 	

3Q(, 	 	. 	. 	. 	. 	.r   )r1      zASetting an array element with a sequence is removed in NumPy 1.24c                 F   d }|                      t                    5 }|                     |d           d d d            n# 1 swxY w Y   |                     t          t          |j                             |                     dt          |j                             d S )Nc                 \    t          j        d t          |           D                       }|S )Nc                 L    g | ] fd t          dz             D             !S )c                     g | ]}|z  S r   r   r  s     r   r   zwTestArrayComprehension.test_comp_nest_with_dependency.<locals>.comp_nest_with_dependency.<locals>.<listcomp>.<listcomp>q  s    555Q1q5555r   r1   r   r   s    @r   r   zlTestArrayComprehension.test_comp_nest_with_dependency.<locals>.comp_nest_with_dependency.<locals>.<listcomp>q  s8    HHH!5555%!**555HHHr   r   r  s     r   comp_nest_with_dependencyzXTestArrayComprehension.test_comp_nest_with_dependency.<locals>.comp_nest_with_dependencyp  s+    HHuQxxHHHIIAHr   r"   zarray(undefined,r   r	   r   r   r   str	exception)r'   rF  r   s      r   test_comp_nest_with_dependencyz5TestArrayComprehension.test_comp_nest_with_dependencyl  s    	 	 	 {++ 	5vJJ0!444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5lC(8$9$9:::(#f.>*?*?@@@@@s   AAAc                 D   d }|                      t                    5 }|                     |           d d d            n# 1 swxY w Y   |                     t          t          |j                             |                     dt          |j                             d S )Nc                  f    t          g dg d          } t          j        d | D                       S )NrC   )r   r"   r   c                     g | ]\  }}|S r   r   )r   r   r   s      r   r   zdTestArrayComprehension.test_comp_unsupported_iter.<locals>.comp_unsupported_iter.<locals>.<listcomp>|  s    ///41aQ///r   )ziprF   rG   )vals    r   comp_unsupported_iterzPTestArrayComprehension.test_comp_unsupported_iter.<locals>.comp_unsupported_iterz  s8    iii++C8//3///000r   z1Unsupported iterator found in array comprehensionrG  )r'   rP  r   s      r   test_comp_unsupported_iterz1TestArrayComprehension.test_comp_unsupported_itery  s    	1 	1 	1 {++ 	.vJJ,---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.lC(8$9$9:::I&*++	- 	- 	- 	- 	-s   A  AAc                 r    d }|                      |dd           d }|                      |dd           d S )Nc                 6    g d}t          j        |          }|S )Nr1   r0   rD   r   rE   r   r   r   s      r   no_array_comp1zATestArrayComprehension.test_no_array_comp.<locals>.no_array_comp1  s    		AAHr   r   Fr  c                 `    g d}t          j        |          }|                    d           |S )NrT  r"   )rF   rG   r   rU  s      r   no_array_comp2zATestArrayComprehension.test_no_array_comp.<locals>.no_array_comp2  s,    		AAHHQKKKHr   Tr   )r'   rV  rX  s      r   test_no_array_compz)TestArrayComprehension.test_no_array_comp  sZ    	 	 	
 	

>2E
BBB	 	 	
 	

>2D
AAAAAr   c                 8    d }|                      |d           d S )Nc                 b     t          j         fdt                     D                       }|S )Nc                 f    g | ]-}t          j        d  t                    D                       .S )c                     g | ]}|S r   r   r   s     r   r   z]TestArrayComprehension.test_nested_array.<locals>.nested_array.<locals>.<listcomp>.<listcomp>      $9$9$91Q$9$9$9r   r   )r   r=   r   s     r   r   zRTestArrayComprehension.test_nested_array.<locals>.nested_array.<locals>.<listcomp>  s8    MMMq28$9$9a$9$9$9::MMMr   r   r  s   ` r   nested_arrayz>TestArrayComprehension.test_nested_array.<locals>.nested_array  s2    MMMME!HHMMMNNAHr   r   r   r'   r_  s     r   test_nested_arrayz(TestArrayComprehension.test_nested_array  s-    	 	 	 	

<$$$$$r   c                 8    d }|                      |d           d S )Nc                 \    t          j        d t          d          D                       }|S )Nc                 d    g | ]-}t          j        d  t          d          D                       .S )c                     g | ]}|S r   r   r   s     r   r   zhTestArrayComprehension.test_nested_array_with_const.<locals>.nested_array.<locals>.<listcomp>.<listcomp>  r^  r   rD   r   r<   s     r   r   z]TestArrayComprehension.test_nested_array_with_const.<locals>.nested_array.<locals>.<listcomp>  s7    MMMq28$9$9a$9$9$9::MMMr   r   r   r  s     r   r_  zITestArrayComprehension.test_nested_array_with_const.<locals>.nested_array  s+    MME!HHMMMNNAHr   r   r   r`  s     r   test_nested_array_with_constz3TestArrayComprehension.test_nested_array_with_const  s-    	 	 	 	

<#####r   c                 &   d }g d}|                      ||           |                      |t          j        |                     |                      |t          |                     |                      |t	          j        |                     d S )Nc                 B    t          j        d | D                       }|S )Nc                     g | ]}||z  S r   r   r   s     r   r   zXTestArrayComprehension.test_array_comp_with_iter.<locals>.array_comp.<locals>.<listcomp>  s    ---Q1q5---r   rE   )r   r   s     r   
array_compzDTestArrayComprehension.test_array_comp_with_iter.<locals>.array_comp  s%    --!---..AHr   r   )r   rF   rG   tupler   List)r'   rj  r   s      r   test_array_comp_with_iterz0TestArrayComprehension.test_array_comp_with_iter  s    	 	 	 KK

:q!!!

:rx{{+++

:uQxx(((

:uz!}}-----r   c                 P    d }|                      |dt          j                   d S )Nc                 t    t          j        d t          |           D             t           j                  }|S )Nc                     g | ]}|S r   r   r   s     r   r   zYTestArrayComprehension.test_array_comp_with_dtype.<locals>.array_comp.<locals>.<listcomp>  s    ...!...r   )r   )rF   rG   r   	complex64r  s     r   rj  zETestArrayComprehension.test_array_comp_with_dtype.<locals>.array_comp  s2    ..U1XX...blCCCAHr   r   r   )r   rF   rq  r'   rj  s     r   test_array_comp_with_dtypez1TestArrayComprehension.test_array_comp_with_dtype  s3    	 	 	 	

:r
=====r   c                 8    d }|                      |d           d S )Nc                 \    t          j        d t          |           D                       }|S )Nc                     g | ]}|d z  S )y              ?r   r   s     r   r   z]TestArrayComprehension.test_array_comp_inferred_dtype.<locals>.array_comp.<locals>.<listcomp>  s    333Q!b&333r   r   r  s     r   rj  zITestArrayComprehension.test_array_comp_inferred_dtype.<locals>.array_comp  s+    33%((33344AHr   r   r   rs  s     r   test_array_comp_inferred_dtypez5TestArrayComprehension.test_array_comp_inferred_dtype  -    	 	 	 	

:r"""""r   c                 8    d }|                      |d           d S )Nc                 b     t          j         fdt                     D                       }|S )Nc                 H    g | ]fd t                    D             S )c                     g | ]}|z  S r   r   r  s     r   r   zoTestArrayComprehension.test_array_comp_inferred_dtype_nested.<locals>.array_comp.<locals>.<listcomp>.<listcomp>  r  r   r   r  s    @r   r   zdTestArrayComprehension.test_array_comp_inferred_dtype_nested.<locals>.array_comp.<locals>.<listcomp>  r  r   r   r  s   ` r   rj  zPTestArrayComprehension.test_array_comp_inferred_dtype_nested.<locals>.array_comp  r  r   r   r   rs  s     r   %test_array_comp_inferred_dtype_nestedz<TestArrayComprehension.test_array_comp_inferred_dtype_nested  ry  r   c                 8    d }|                      |d           d S )Nc                 b     t          j         fdt                     D                       }|S )Nc                 H    g | ]fd t                    D             S )c                     g | ]}|z  S r   r   r  s     r   r   zsTestArrayComprehension.test_array_comp_inferred_dtype_nested_sum.<locals>.array_comp.<locals>.<listcomp>.<listcomp>  r  r   r   r  s    @r   r   zhTestArrayComprehension.test_array_comp_inferred_dtype_nested_sum.<locals>.array_comp.<locals>.<listcomp>  r  r   r   r  s   ` r   rj  zTTestArrayComprehension.test_array_comp_inferred_dtype_nested_sum.<locals>.array_comp  s2    FFFFU1XXFFFGGAHr   r   r   rs  s     r   )test_array_comp_inferred_dtype_nested_sumz@TestArrayComprehension.test_array_comp_inferred_dtype_nested_sum  s-    	 	 	
 	

:r"""""r   c                 (   d }d}|                      |d|t          j                   |                     t                    5 } t          d          |          } |dd           d d d            n# 1 swxY w Y   |                     t          d                    t          j
                  z   t          |j                             |                     d	                    t          j                  t          |j                             d S )
Nc                 f    t          j        d t          |           D                       }||d<   |S )Nc                     g | ]}|S r   r   r   s     r   r   zmTestArrayComprehension.test_array_comp_inferred_dtype_outside_setitem.<locals>.array_comp.<locals>.<listcomp>  s    000!A000r   r   r   )r   varrs      r   rj  zYTestArrayComprehension.test_array_comp_inferred_dtype_outside_setitem.<locals>.array_comp  s4    (00uQxx00011CCFJr   g333333?r   rr  Tr-   y        ffffff@z Function({})z/(array({}, 1d, C), Literal[int](0), complex128))r   rF   r$   r   r	   r   r   r   formatoperatorsetitemrH  rI  r   )r'   rj  r  r   r*   s        r   .test_array_comp_inferred_dtype_outside_setitemzETestArrayComprehension.test_array_comp_inferred_dtype_outside_setitem  sE   	 	 	 

:r127
;;;{++ 	v&C&&&z22EE"dOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	?11(2BCCC !!	
 	
 	
 	=DDUZPP !!	
 	
 	
 	
 	
s   &A55A9<A9c           	      N   dt          d          fd            }t                      5 } |             d d d            n# 1 swxY w Y   |                                                                }t                      5 }t	          t          j        d t                    D                                  d d d            n# 1 swxY w Y   |                                                                }|                     ||           | 	                    |d           d S )Nd   Tr-   c                      t          j        d t                    D                       } t           j                            |            t          |            d S )Nc                     g | ]}|S r   r   r   s     r   r   zZTestArrayComprehension.test_array_comp_shuffle_sideeffect.<locals>.foo.<locals>.<listcomp>  s    888a888r   )rF   rG   r   randomshuffleprint)numbersnelems    r   foozFTestArrayComprehension.test_array_comp_shuffle_sideeffect.<locals>.foo  sL    h885<<88899GIg&&&'NNNNNr   c                     g | ]}|S r   r   r   s     r   r   zMTestArrayComprehension.test_array_comp_shuffle_sideeffect.<locals>.<listcomp>  s    444!A444r   z\[(\s*\d+)+\])
r   r   getvaluestripr  rF   rG   r   assertNotEqualassertRegexpMatches)r'   r  gotbufr   	expectbufexpectr  s         @r   "test_array_comp_shuffle_sideeffectz9TestArrayComprehension.test_array_comp_shuffle_sideeffect  s   	d				 	 	 	 
		
  	&CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	oo%%'' 	7)"(44uU||44455666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7##%%++-- 	C(((  &677777s#   AAA9CCCc                 <    d }|                      |dd           d S )Nc                     g }t          j        dg          }t           j                            |d          }|                    | |z              |S rQ   )rF   rG   r  choicer   )r7   r   myListr   s       r   r   z=TestArrayComprehension.test_empty_list_not_removed.<locals>.f  sE    AXqc]]F	  ++AHHQUOOOHr   r"   Tr  r   )r'   r   s     r   test_empty_list_not_removedz2TestArrayComprehension.test_empty_list_not_removed  s1    	 	 	 	

1ad
33333r   c                 <    d }|                      |dd           dS )z Test issue 3742 c                     d t          d          D              t          j        |           }t          |           D ]}t          j        |           }|||<   |S )Nc                     g | ]}|S r   r   r   s     r   r   zOTestArrayComprehension.test_reuse_of_array_var.<locals>.foo.<locals>.<listcomp>  s    !!!1Q!!!r   r1   )r   rF   emptyzeros)r   rM   r   s      r   r  z;TestArrayComprehension.test_reuse_of_array_var.<locals>.foo  s]     "!a!!!!A1XX  HQKK!Hr   r   Tr  Nr   )r'   r  s     r   test_reuse_of_array_varz.TestArrayComprehension.test_reuse_of_array_var  s1    		 		 		 	

3
66666r   N)!r   r   r   _numba_parallel_test_r   r   r   r
  r  r  r$  r*  r0  r5  r:  r@  unittest
skipUnlessr   rJ  rQ  rY  ra  rf  rm  rt  rx  r~  r  r  r  r  r  r   r   r   r   r      s       !U U U&@ @ @, , ,. . .K K KC C CE E E. . .1 1 1: : :O O O. . . X0)* *A A* *A- - -B B B% % %$ $ $. . .> > ># # ## # ## # #
 
 
.8 8 8,4 4 47 7 7 7 7r   r   __main__)r  numba.tests.supportr   r   r  rw   rF   numba.core.compilerr   numbar   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>r     s    ( ( ( ( ( ( 



       0 0 0 0 0 0         # # # # # # # # 8 8 8 8 8 8 8 8 3 3 3 3 3 3 0 0 0 0 0 0 < < < < < < < < < <  Z   P/ P/ P/ P/ P/H P/ P/ P/f]7 ]7 ]7 ]7 ]7X. ]7 ]7 ]7@	 zHMOOOOO r   