
    ܙd                        d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZ	d dl
mZmZ d dlmZmZmZmZmZ d dlZd dlmZ d dlmZmZmZ d dlmZmZmZ d dlmZ d d	lm Z   e            Z!d
e!_"         e            Z#d
e#_$         edd          Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5d Z6d Z7d Z8d  Z9d! Z:d" Z;d# Z<d$ Z=d% Z>d& Z?d' Z@d( ZAd) ZBd* ZCd+ ZDd, ZEd- ZFd. ZGd/ ZHd0 ZId1 ZJd2 ZKd3 ZLd4 ZMd5 ZNd6 ZOd7 ZPd8 ZQd9 ZRd: ZSd; ZTd< ZUd= ZVd> ZWd? ZXd@ ZYdA ZZdB Z[dC Z\dD Z]dE Z^dF Z_dG Z`dH ZadI ZbdJ ZcdK ZddL Ze G dM dNee          Zf G dO dPee          Zg G dQ dRee          Zh G dS dTee          Zi G dU dVei          ZjdW Zk G dX dYei          Zl G dZ d[em          Zn G d\ d]em          Zo G d^ d_ei          Zp G d` daee          Zq G db dcee          Zresddk    r ejt                     dS dS )e    )
namedtupleN)compile_isolatedFlags)jittypeofnjitliteral_unroll	literally)testing)typesutilserrors)TestCaseMemoryLeakMixintag)jitclass)overloadTPointabc                     d S N xs    6lib/python3.11/site-packages/numba/tests/test_lists.pynoopr      s    D    c                     d}| D ]}||z  }|S )z"
    Expect a list of numbers
    r   r   r   resvs      r   unbox_usecaser$      s(     C  qJr   c                 8    d}| D ]}|t          |          z  }|S )z!
    Expect a list of tuples
    r   lenr!   s      r   unbox_usecase2r(   (   s.     C  s1vvJr   c                 (    | \  }}|}|D ]}||z  }|S )z3
    Expect a (number, list of numbers) tuple.
    r   r   r   r   r"   r#   s        r   unbox_usecase3r+   1   s1     DAq
C  qJr   c                 B    | \  }}|}|D ]}|t          |          z  }|S )z2
    Expect a (number, list of tuples) tuple.
    r&   r*   s        r   unbox_usecase4r-   ;   s7     DAq
C  s1vvJr   c                     | ||gS r   r   )r   yzs      r   create_listr1   F   s    q!9r   c                     | ||g|||ggS r   r   )r   r/   r0   r   r   cs         r   create_nested_listr4   I   s    1I1ay!!r   c                  N    t          d t          d          D                       S )Nc                     g | ]}|d z  S    r   .0r   s     r   
<listcomp>z'list_comprehension1.<locals>.<listcomp>M   s    (((1(((r   
   sumranger   r   r   list_comprehension1r@   L   s%    ((eBii((()))r   c                  N    t          d t          d          D                       S )Nc                 $    g | ]}|d z  dk    |S )r8   r   r   r9   s     r   r;   z'list_comprehension2.<locals>.<listcomp>P   s!    333aA




r   r<   r=   r   r   r   list_comprehension2rC   O   s%    33599333444r   c                  N    t          d t          d          D                       S )Nc                 8    g | ]}t          j        |d           S r7   )mathpowr9   s     r   r;   z'list_comprehension3.<locals>.<listcomp>S   s"    2221A222r   r<   r=   r   r   r   list_comprehension3rH   R   s%    22b		222333r   c                  N    t          d t          d          D                       S )Nc                 <    g | ]}t          d           D ]}||z  S r<   r?   )r:   r   r/   s      r   r;   z'list_comprehension4.<locals>.<listcomp>V   s/    <<<!%))<<QA<<<<r   r<   r=   r   r   r   list_comprehension4rM   U   s%    <<uRyy<<<===r   c                  4    d t          d          D             S )Nc                     g | ]}|d z  S r7   r   r9   s     r   r;   z'list_comprehension5.<locals>.<listcomp>Y   s    %%%aAE%%%r   r<   rL   r   r   r   list_comprehension5rP   X   s    %%599%%%%r   c                  4    d t          d          D             S )Nc                 @    g | ]}d  t          |          D             S )c                     g | ]}|S r   r   r9   s     r   r;   z2list_comprehension6.<locals>.<listcomp>.<listcomp>\   s    !!!1Q!!!r   rL   )r:   r/   s     r   r;   z'list_comprehension6.<locals>.<listcomp>\   s-    444a!!a!!!444r      rL   r   r   r   list_comprehension6rU   [   s    445884444r   c                 :    t          t          |                     S r   listr?   ns    r   list_constructorr[   _   s    a>>r   c                      t                      S r   rX   r   r   r   list_constructor_emptyr^   b   s     66Mr   c                 H    t                      }|                    |           S r   )rX   append)rZ   r/   s     r   #list_constructor_empty_but_typeablera   g   s     	A88A;;r   c                     g }|                     d           t          |           D ]}|                     |           |S N*   r`   r?   rZ   lis      r   list_appendri   m   sA    
AHHRLLL1XX  	Hr   c                     g }|                     d           t          |           D ]}|                     |           |S )N      E@re   rf   s      r   list_append_heterogeneousrl   t   sA    
AHHTNNN1XX  	Hr   c                     g }|                     t          |                      |                     |d d                    |                     t          | dd                     |S )Nr   extendr?   rZ   rg   s     r   list_extendrr   {   sZ    
AHHU1XXHHQssVHHU1a__Hr   c                     g }|                     t          |                      |                     |d d                    |                     d           |                     dg           |S )Nrn   )   rd   g     ^@ro   rq   s     r   list_extend_heterogeneousru      sd    
AHHU1XXHHQssVHHWHHeWHr   c                     t          t          |                     }d}t          |          dk    r:|t          |          |                                z  z  }t          |          dk    :|S Nr   )rX   r?   r'   pop)rZ   rg   r"   s      r   	list_pop0ry      sZ    U1XXA
C
a&&1**s1vv a&&1**Jr   c                 l    t          t          |                     }|                    |          }||fS r   )rX   r?   rx   )rZ   rh   rg   r   s       r   	list_pop1r{      s+    U1XXA	aAa4Kr   c                 X    t          t          |                     }t          |          S r   rX   r?   r'   rq   s     r   list_lenr~      s    U1XXAq66Mr   c                     t          t          |                     }d}t          t          |                    D ]}||||         z  z  }t          t          |           d          D ]}||||         z  z  }|S rw   r}   rZ   rg   r"   rh   s       r   list_getitemr      s    U1XXA
C3q66]]  q1Q4xCFF7A  q1Q4xJr   c                 N   t          t          |                     }d}t          t          |                    D ]}|||         z  ||<   t          t          |           d          D ]}|||         z  ||<   t          t          |                    D ]}|||         z  }|S rw   r}   r   s       r   list_setitemr      s    U1XXA
C3q66]]  1Q4x!CFF7A  1Q4x!3q66]]  qtJr   c                 N    t          t          |                     }|||         S r   rW   rZ   startstoprg   s       r   list_getslice2r      s!    U1XXAU4Z=r   c                 P    t          t          |                     }||||         S r   rW   )rZ   r   r   steprg   s        r   list_getslice3r      s$    U1XXAU4_r   c                     t          t          |                     }t          t          dd|z                       }||||<   |S Nd   rW   )rZ   n_sourcer   r   rg   r#   s         r   list_setslice2r      s@    U1XXAU3h''((AAeDjMHr   c                     t          t          |                     }||||         }t          t          |                    D ]}||xx         dz  cc<   |||||<   |S r   r}   )rZ   r   r   r   rg   r#   rh   s          r   list_setslice3r      sj    U1XXA	%T/A3q66]]  	!AeDoHr   c                     t          t          |                     }t          t          dd|z                       ||||<   |S r   rW   )rZ   n_srcr   r   r   rg   s         r   list_setslice3_arbitraryr      s>    U1XXAeCu5566AeDoHr   c                 H    t          t          |                     }|d d = |S r   rW   rq   s     r   list_delslice0r      s#    U1XXA	!!!Hr   c                 R    t          t          |                     }||d = |d |= |S r   rW   r   s       r   list_delslice1r      s.    U1XXA	%&&		%4%Hr   c                 H    t          t          |                     }|||= |S r   rW   r   s       r   list_delslice2r      s#    U1XXA	%*Hr   c                 f    t          t          |                     }|                                 |S r   )rX   r?   clearrq   s     r   
list_clearr      s%    U1XXAGGIIIHr   c                     t          t          |                     }|                                }|                    d           ||fS rc   )rX   r?   copyr`   )rZ   rg   lls      r   	list_copyr      s8    U1XXA	
BHHRLLLb5Lr   c                 |    t          t          |                     }d}t          |          D ]\  }}|||z  z  }|S rw   )rX   r?   	enumerate)rZ   rg   r"   rh   r#   s        r   list_iterationr      sE    U1XXA
C!  1q1uJr   c           	      z    t          t          |                     }d|v d|v | dz
  |v | |v d|vd|v| dz
  |v| |vfS Nr      rW   rq   s     r   list_containsr      sW    U1XXAFAFAEQJQQJ
AENAQJ r   c                 h    t          t          | dd                    }|                    |          S Nr   rn   rX   r?   indexrZ   r#   rg   s      r   list_index1r      s)    U1a__A771::r   c                 j    t          t          | dd                    }|                    ||          S r   r   )rZ   r#   r   rg   s       r   list_index2r      s-    U1a__A771er   c                 l    t          t          | dd                    }|                    |||          S r   r   )rZ   r#   r   r   rg   s        r   list_index3r      s/    U1a__A771eT"""r   c                 r    t          t          | dz
  dd                    }|                    |           |S )Nr   rn   )rX   r?   remover   s      r   list_remover     s3    U1q5"b!!""AHHQKKKHr   c                 l    t          t          d|                     }|                    ||           |S rw   )rX   r?   insert)rZ   posr#   rg   s       r   list_insertr   	  s0    U1a[[AHHS!Hr   c                     g }t          |           D ]}|                    |dz             |                    |          S )NrT   )r?   r`   count)rZ   r#   rg   r   s       r   
list_countr     sA    
A1XX  	Q771::r   c                 f    t          t          |                     }|                                 |S r   )rX   r?   reverserq   s     r   list_reverser     s%    U1XXAIIKKKHr   c                     t          t          d|                     }t          t          dd|z                       }||z   }|                    d           |||fS )Nr   r   rd   )rX   r?   r`   )mrZ   r   r   r"   s        r   list_addr     sV    U1a[[AU3a  !!A
a%CJJrNNNa9r   c                      dg} dg}| |z   }|| z   }|                      d           |                     d           | |||fS )Nr          @rT         @r`   )r   r   r3   ds       r   list_add_heterogeneousr      sN    	
A	A	AA	AAHHQKKKHHSMMMaA:r   c                     t          t          d|                     }t          t          dd|z                       }||z  }||fS )Nr   r   rW   )r   rZ   r   r   s       r   list_add_inplacer   *  sD    U1a[[AU3a  !!AFAa4Kr   c                  *    dg} dg}| |z  } || z  }| |fS )Nr   r   r   r   s     r   list_add_inplace_heterogeneousr   0  s+    	
A	AFAFAa4Kr   c                 D    t          t          |                     }||z  S r   rW   rZ   r#   r   s      r   list_mulr   7      U1XXAq5Lr   c                 D    t          t          |                     }||z  S r   rW   r   s      r   	list_mul2r   ;  r   r   c                 H    t          t          |                     }||z  }|S r   rW   r   s      r   list_mul_inplacer   ?  s!    U1XXAFAHr   c                 d    t          t          |                     }t          |          |rdndfS )NTF)rX   r?   bool)rZ   r   s     r   	list_boolr   D  s-    U1XXA77Q)TTE**r   c                 B    t          |           t          |          k    S r   r]   r   s     r   
eq_usecaser   H      77d1ggr   c                 B    t          |           t          |          k    S r   r]   r   s     r   
ne_usecaser   K  r   r   c                 B    t          |           t          |          k    S r   r]   r   s     r   
gt_usecaser   N      77T!WWr   c                 B    t          |           t          |          k    S r   r]   r   s     r   
ge_usecaser   Q  r   r   c                 B    t          |           t          |          k     S r   r]   r   s     r   
lt_usecaser   T  r   r   c                 B    t          |           t          |          k    S r   r]   r   s     r   
le_usecaser   W  r   r   c                 n    t          t          |                     }|}|d d          }||u ||u||u ||ufS r   rW   )rZ   r   r   r3   s       r   identity_usecaser   Z  sD    U1XXA	A	!!!AFaqjAFaqj99r   c                  2    dg} d| d<   d}| D ]}||z  }| |fS )NFTr   r   )rg   r   r#   s      r   bool_list_usecaser   `  s:    	AAaDA  Ea4Kr   c                     |                                  }|                                  }d| d<   |                     |           | ||fS )Nrk   r   rx   rp   rg   r   r   r/   s       r   reflect_simpler   i  s?    	A	AAaDHHRLLLa7Nr   c                     |d         rg d} |                                  }|                                  }d| d<   |                     |           | ||fS )Nr   )g      &@g      6@g     @@g      F@rk   r   r   s       r   reflect_conditionalr   p  sV    	!u !   	A	AAaDHHRLLLa7Nr   c                 :    |                      d           t          rc   )r`   ZeroDivisionErrorrg   s    r   reflect_exceptionr   z  s    HHRLLL
r   c                 X    |                      |                                           | |u S r   )r`   rx   )rg   r   s     r   reflect_dualr   ~  s%    HHRVVXX7Nr   c                      e Zd Zd Zd ZdCdZd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d  Z!d! Z"d" Z#d# Z$d$ Z%d% Z&d& Z'd' Z(d( Z)d) Z*d* Z+d+ Z,d, Z-d- Z.d. Z/d/ Z0d0 Z1d1 Z2d2 Z3d3 Z4 e5j6        e7j8        d4k    d5          d6             Z9d7 Z:d8 Z;d9 Z<d: Z=d; Z>d< Z?d= Z@d> ZAd? ZBd@ ZCdA ZDdBS )D	TestListsc                     t           }t          |t          j        t          j        t          j        f          }|j        }|                      |ddd           |ddd                     d S )Nr   r8   rT   )r1   r   r   int32entry_pointassertEqualselfpyfunccrcfuncs       r   test_create_listzTestLists.test_create_list  s^    fu{EK&MNNq!Q1a99999r   c                 *   t           }t          |t          j        t          j        t          j        t          j        t          j        t          j        f          }|j        }|                      |dddddd           |dddddd                     d S )Nr   r8   rT      rt      )r4   r   r   r   r   r   r   s       r   test_create_nested_listz!TestLists.test_create_nested_list  s    #fu{EK',{EK'N O Oq!Q1a00&&Aq!Q2J2JKKKKKr   Tc                      t          d          |          }dD ]0}|r| j        n| j        } | ||           ||                     1d S )NTnopython)r   rT      F   i  )r   assertPreciseEqualr   )r   r   preciser  rZ   eqs         r   check_unary_with_sizezTestLists.check_unary_with_size  so    "T"""6**$ 	$ 	$A,3I((9IBBuuQxx####	$ 	$r   c                 :    |                      t                     d S r   )r  r[   r   s    r   test_constructorzTestLists.test_constructor  s    ""#344444r   c                    |                                    t          d          t                    }|                     t          j                  5 } |             d d d            n# 1 swxY w Y   t          |j                  }|                     d|           |                     d|           |                     d|           d S )NTr  z!Cannot infer the type of variablezlist(undefined)z&For Numba to be able to compile a list)	disable_leak_checkr   r^   assertRaisesr   TypingErrorstr	exceptionassertIn)r   r  raiseserrmsgs       r   test_constructor_emptyz TestLists.test_constructor_empty  s    !!!"T"""#9::v122 	fEGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	V%&&96BBB'000>GGGGGs   A))A-0A-c                    t          j        d          dddgddgt          j        dg          g}t          }|D ]G} t	          d	          |          } ||          } ||          }|                     ||           Hd S )
Nr   g      $@y      ?      @   g      1@g      ,@r<   Tr  )npr   arrayra   r   r  )r   argsr   argr  expectedgots          r   #test_constructor_empty_but_typeablez-TestLists.test_constructor_empty_but_typeable  s    S&1#Sz28RD>>J4 	3 	3C&C&&&v..Evc{{H%**C##C2222		3 	3r   c                 :    |                      t                     d S r   )r  ri   r  s    r   test_appendzTestLists.test_append      "";/////r   c                 >    |                      t          d           d S NF)r  )r  rl   r  s    r   test_append_heterogeneousz#TestLists.test_append_heterogeneous  "    ""#<e"LLLLLr   c                 :    |                      t                     d S r   )r  rr   r  s    r   test_extendzTestLists.test_extend  r(  r   c                 >    |                      t          d           d S r*  )r  ru   r  s    r   test_extend_heterogeneousz#TestLists.test_extend_heterogeneous  r,  r   c                 :    |                      t                     d S r   )r  ry   r  s    r   	test_pop0zTestLists.test_pop0      ""9-----r   c           
          t           } t          d          |          }dD ]I}dd|dz
  |dz
  dd| d	z   | dz   fD ].} |||          }|                      |||          |           /Jd S )
NTr  rt   (   r   r   r8   rn   rT   )r{   r   r  )r   r   r  rZ   rh   r#  s         r   	test_pop1zTestLists.test_pop1  s    "T"""6** 	? 	?AAE1q5"b1"q&1"q&A ? ?!6!Q<<''aX>>>>?	? 	?r   c                    |                                    t          d          t                    }|                     t                    5 } |dd           d d d            n# 1 swxY w Y   |                     t          |j                  d           |                     t                    5 } |dd           d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )NTr  r   rt   zpop from empty listr   zpop index out of range)r  r   r{   r  
IndexErrorr   r  r  )r   r  cms      r   test_pop_errorszTestLists.test_pop_errors  s`   !!!"T"""9--z** 	bE!QKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	R\**,ABBBz** 	bE!QKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	R\**,DEEEEEs$   A&&A*-A*3CCCc                     t           } t          d          |          }dD ]Q}dd|dz
  |dz
  |dz   dd| d	z   | dz
  g	}|D ]0} |||d
          }|                      |||d
          |           1Rd S )NTr  r5  r   r   r8   rn   r7  rT   rd   )r   r   r  )r   r   r  rZ   indicesrh   r#  s          r   test_insertzTestLists.test_insert  s    "T"""6** 	C 	CA!QUAE1q5"b1"q&1"q&IG C C!6!Q++''aBBBBBC	C 	Cr   c                 :    |                      t                     d S r   )r  r~   r  s    r   test_lenzTestLists.test_len  s    ""8,,,,,r   c                 :    |                      t                     d S r   )r  r   r  s    r   test_getitemzTestLists.test_getitem      ""<00000r   c                 :    |                      t                     d S r   )r  r   r  s    r   test_setitemzTestLists.test_setitem  rD  r   c           	          t          d          |          }ddg}|D ]a}dd|dz
  dd	| d
z   | dz
  | g}t          j        ||          D ]3\  }} ||||          }|                      ||||          |           4bd S NTr  rt   r6  r   r   r8   rn   r7  rT   r   	itertoolsproductr  )	r   r   r  sizesrZ   r>  r   r   r#  s	            r   check_slicing2zTestLists.check_slicing2  s    "T"""6**B 	I 	IA!QUBQBFQBFQB?G(0'BB I It!6!UD11''a(=(=xHHHHI	I 	Ir   c                 :    |                      t                     d S r   )rM  r   r  s    r   test_getslice2zTestLists.test_getslice2      N+++++r   c           
      F   t           } t          d          |          }ddg}t          j        ||          D ]f\  }}dd|dz
  dd	| d
z   | dz
  | g}t          j        ||          D ]5\  }} |||||          }	|                      |||||          |	           6gd S rH  )r   r   rJ  rK  r  )
r   r   r  rL  rZ   r   r>  r   r   r#  s
             r   test_setslice2zTestLists.test_setslice2  s    "T"""6**B!)%77 	P 	PHAu!QUBQBFQBFQB?G(0'BB P Pt!6!UE488''at(D(DhOOOOP	P 	Pr   c           
         t           } t          d          |          }dD ]i}dd|dz
  dd| d	z   | dz
  | g}g d
}t          j        |||          D ]6\  }}} |||||          }	|                      |||||          |	           7jd S NTr  rK   r   r   r8   rn   r7  rT   )r  r   rn   r8   )r   r   rJ  rK  r  
r   r   r  rZ   r>  stepsr   r   r   r#  s
             r   test_getslice3zTestLists.test_getslice3      "T"""6** 	O 	OA!QUBQBFQBFQB?G%%%E%.%6w%O%O O O!tT!6!UD$77''ad(C(CXNNNNO	O 	Or   c           
         t           } t          d          |          }dD ]i}dd|dz
  dd| d	z   | dz
  | g}g d
}t          j        |||          D ]6\  }}} |||||          }	|                      |||||          |	           7jd S rT  )r   r   rJ  rK  r  rV  s
             r   test_setslice3zTestLists.test_setslice3  rY  r   c                 ^   |                                   t          } t          d          |          } |ddddd           |                     t                    5 } |dddd	d           d d d            n# 1 swxY w Y   |                     d
t          |j                             d S )NTr  rt   r<   r   r8   r   r   rT   zcannot resize)r  r   r   r  
ValueErrorr  r  r  r   r   r  r;  s       r   test_setslice3_resizezTestLists.test_setslice3_resize  s    !!!)"T"""6**aQ1z** 	#bE!S!Q"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#os2<'8'899999s   A::A>A>c                 :    |                      t                     d S r   )r  r   r  s    r   test_delslice0zTestLists.test_delslice0      "">22222r   c                 :    |                      t                     d S r   )rM  r   r  s    r   test_delslice1zTestLists.test_delslice1  rP  r   c                 :    |                      t                     d S r   )rM  r   r  s    r   test_delslice2zTestLists.test_delslice2   rP  r   c                 >   |                                   t          } t          d          |          }|                     t                    5 } |dddd           d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )NTr  r<   r   r8   r   zslice step cannot be zero)r  r   r   r  r]  r   r  r  r^  s       r   test_invalid_slicezTestLists.test_invalid_slice#  s    !!!"T"""6**z** 	bE"aA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	R\**,GHHHHHs   A**A.1A.c                 :    |                      t                     d S r   )r  r   r  s    r   test_iterationzTestLists.test_iteration+  rb  r   c                 :    |                      t                     d S r   )r  r   r  s    r   test_reversezTestLists.test_reverse.  rD  r   c                 :    |                      t                     d S r   )r  r   r  s    r   test_containszTestLists.test_contains1  s    ""=11111r   c                     	  || }|                       || |           d S # t          $ r= |                     t                    5   ||  d d d            Y d S # 1 swxY w Y   Y d S w xY wr   )r  r]  r  )r   r   r  r!  r#  s        r   check_index_resultzTestLists.check_index_result4  s    	<vt}H
 ##EE4L(;;;;;	  	 	 	"":..  t                   	s3   " $A)AA)A	A)!A	"A)(A)c                     |                                   t          } t          d          |          }dD ]}|                     ||d|f           d S )NTr  r   r   rt   r<   ir
  )r  r   r   rp  r   r   r  r#   s       r   test_index1zTestLists.test_index1=  sk    !!!"T"""6**( 	< 	<A##FEB7;;;;	< 	<r   c                     |                                   t          } t          d          |          }d}dD ]=}dd|dz
  |dz
  |dz   dd	| d
z   | dz
  g	}|D ]}|                     ||d||f           >d S NTr  r
  rr  r   r   r8   rn   r7  rT   )r  r   r   rp  )r   r   r  rZ   r#   r>  r   s          r   test_index2zTestLists.test_index2D  s    !!!"T"""6**( 	G 	GA!QUAE1q5"b1"q&1"q&IG  G G''Au~FFFFG	G 	Gr   c                     |                                   t          } t          d          |          }d}dD ]T}dd|dz
  |dz
  |dz   dd	| d
z   | dz
  g	}t          j        ||          D ] \  }}|                     ||d|||f           !Ud S rv  )r  r   r   rJ  rK  rp  )r   r   r  rZ   r#   r>  r   r   s           r   test_index3zTestLists.test_index3N  s    !!!"T"""6**( 	M 	MA!QUAE1q5"b1"q&1"q&IG(0'BB M Mt''Aud7KLLLLM	M 	Mr   c                     t           } t          d          |          }d}|                     t          j        |          5   |dddd           d d d            d S # 1 swxY w Y   d S )NTr  zarg "start" must be an Integer.r<   r   invalidrt   r   r   assertRaisesRegexr   r  r   r   r  msgs       r   test_index_exception1zTestLists.test_index_exception1X  s    "T"""6**/##F$6<< 	' 	'E"aA&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'   AA#&A#c                     t           } t          d          |          }d}|                     t          j        |          5   |dddd           d d d            d S # 1 swxY w Y   d S )NTr  zarg "stop" must be an Integer.r<   r   r{  r|  r~  s       r   test_index_exception2zTestLists.test_index_exception2_  s    "T"""6**.##F$6<< 	' 	'E"aI&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'r  c                     t           } t          d          |          }d}dD ].} |||          }|                      |||          |           /d S )NTr  r
  )r   r   rt      )r   r   r  r   r   r  rZ   r#   r#  s         r   test_removezTestLists.test_removef  sq    "T"""6** 	; 	;Ava||H##EE!QKK::::	; 	;r   c                 :   |                                   t          } t          d          |          }|                     t                    5 } |dd           d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )NTr  r<   rd   zlist.remove(x): x not in list)r  r   r   r  r]  r   r  r  r^  s       r   test_remove_errorzTestLists.test_remove_errorn  s    !!!"T"""6**z** 	bE"bMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	R\**,KLLLLLs   A((A,/A,c                     t           } t          d          |          }t          d          D ],}|                      |d|           |d|                     -d S )NTr  rt      )r   r   r?   r  rs  s       r   
test_countzTestLists.test_countv  sq    "T"""6**q 	A 	AA##EE"aLL&&Q--@@@@	A 	Ar   c                 :    |                      t                     d S r   )r  r   r  s    r   
test_clearzTestLists.test_clear|  s    "":.....r   c                 :    |                      t                     d S r   )r  r   r  s    r   	test_copyzTestLists.test_copy  r3  r   c                      t          d          |          }g d}t          j        ||          D ]1\  }} |||          }|                      |||          |           2d S )NTr  r   rT   2   ,  rI  )r   r   r  rL  r   rZ   r#  s          r   	check_addzTestLists.check_add  s    "T"""6**%eU33 	; 	;DAqva||H##EE!QKK::::	; 	;r   c                 :    |                      t                     d S r   )r  r   r  s    r   test_addzTestLists.test_add      x     r   c                     t           } t          d          |          } |            }|                      |            |           d S NTr  )r   r   r   r   r   r  r#  s       r   test_add_heterogeneousz TestLists.test_add_heterogeneous  sN    '"T"""6**688(+++++r   c                 :    |                      t                     d S r   )r  r   r  s    r   test_add_inplacezTestLists.test_add_inplace      '(((((r   c                     t           } t          d          |          } |            }|                      |            |           d S r  )r   r   r   r  s       r   test_add_inplace_heterogeneousz(TestLists.test_add_inplace_heterogeneous  sN    /"T"""6**688(+++++r   c                      t          d          |          }dD ]3}dD ].} |||          }|                      |||          |           /4d S )NTr  r  )r   r8   rT   r   rn   ir   r  r  s         r   	check_mulzTestLists.check_mul  s{    "T"""6**  	? 	?A* ? ?!6!Q<<''aX>>>>?	? 	?r   c                 :    |                      t                     d S r   )r  r   r  s    r   test_mulzTestLists.test_mul  r  r   c                 :    |                      t                     d S r   )r  r   r  s    r   	test_mul2zTestLists.test_mul2  s    y!!!!!r   c                 :    |                      t                     d S r   )r  r   r  s    r   test_mul_inplacezTestLists.test_mul_inplace  r  r   l        z,need a 64-bit system to test for MemoryErrorc                    |                                   t          } t          d          |          }|                     t                    5   |dd           d d d            n# 1 swxY w Y   t
          j                            d          r<t          j	        d          }|
                    d                    d                     |                     t                    5   |dd	           d d d            d S # 1 swxY w Y   d S )
NTr  r   l           darwinz
libc.dylibz###Please ignore the above error message i.e. can't allocate region. It is in fact the purpose of this test to request more memory than can be provided###
zUTF-8l            )r  r   r   r  MemoryErrorsysplatform
startswithctCDLLprintfencode)r   r   r  libcs       r   test_mul_errorzTestLists.test_mul_error  s    	!!!"T"""6**{++ 	 	E!UOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	<""8,, 	@7<((DKK //5vg@ @ @ {++ 	 	E!UOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   A((A,/A,(DD	Dc                     t           } t          d          |          }dD ],} ||          }|                      ||          |           -d S )NTr  )r   r   rT   )r   r   r  )r   r   r  rZ   r#  s        r   	test_boolzTestLists.test_bool  sh    "T"""6** 	8 	8AvayyH##EE!HHh7777	8 	8r   c                     t          d          d             t          d          fd            }|                      |d          d           d S )NTr  c                 0    t          |           | d         fS Nrn   r&   )lsts    r   innerz*TestLists.test_list_passing.<locals>.inner  s    s88SW$$r   c                 R    t          t          |                     } |          S r   rW   )rZ   rg   r  s     r   outerz*TestLists.test_list_passing.<locals>.outer  s!    U1XXA588Or   rt   )rt   r  r  )r   r  r  s     @r   test_list_passingzTestLists.test_list_passing  s    	d				% 	% 
		% 
d				 	 	 	 
		 	a&11111r   c                       fd} t          d                     |d            |d            |d            |d            |d            |d	           d S )
Nc                 H                          |   |  d|            d S )Nzmismatch for arguments )assertIs)r!  r  r   r   s    r   r  z#TestLists._test_compare.<locals>.eq  sB    MM%%,9=?A A A A Ar   Tr  )r   r8   r  )r   r8   rT   r  )r  r  ))r   r8   r  r  ))      ?r         @r  ))r  r   g      @r  r   )r   r   r  r  s   `` @r   _test_comparezTestLists._test_compare  s    	A 	A 	A 	A 	A 	A 	A #T"""6**



!"""
'(((
'(((((r   c                 :    |                      t                     d S r   )r  r   r  s    r   test_eqzTestLists.test_eq      :&&&&&r   c                 :    |                      t                     d S r   )r  r   r  s    r   test_nezTestLists.test_ne  r  r   c                 :    |                      t                     d S r   )r  r   r  s    r   test_lezTestLists.test_le  r  r   c                 :    |                      t                     d S r   )r  r   r  s    r   test_ltzTestLists.test_lt  r  r   c                 :    |                      t                     d S r   )r  r   r  s    r   test_gezTestLists.test_ge  r  r   c                 :    |                      t                     d S r   )r  r   r  s    r   test_gtzTestLists.test_gt  r  r   c                     t           } t          d          |          }|                      |d           |d                     d S )NTr  rT   )r   r   r  r   r   r  s      r   test_identityzTestLists.test_identity  sM    !"T"""6**a&&))44444r   c                     t           } t          d          |          }|                      |             |                       d S r  )r   r   r  r  s      r   test_bool_listzTestLists.test_bool_list  sI    ""T"""6**22222r   N)T)E__name__
__module____qualname__r  r  r  r  r  r%  r'  r+  r.  r0  r2  r8  r<  r?  rA  rC  rF  rM  rO  rR  rX  r[  r_  ra  rd  rf  rh  rj  rl  rn  rp  rt  rw  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  unittest
skipUnlessr  maxsizer  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r     s       : : :L L L$ $ $ $5 5 5	H 	H 	H3 3 30 0 0M M M0 0 0M M M. . .? ? ?	F 	F 	FC C C- - -1 1 11 1 1I I I, , ,P P PO O OO O O
: 
: 
:3 3 3, , ,, , ,I I I3 3 31 1 12 2 2< < << < <G G GM M M' ' '' ' '; ; ;M M MA A A/ / /. . .; ; ;! ! !, , ,) ) ), , ,? ? ?! ! !" " ") ) ) X-GI I I I 8 8 82 2 2) ) )' ' '' ' '' ' '' ' '' ' '' ' '5 5 5
3 3 3 3 3r   r   c                   V    e Zd ZdZej        d             Zd Zd Zd Z	d Z
d Zd Zd	S )
TestUnboxingz@
    Test unboxing of Python lists into native Numba lists.
    c              #      K   |                      t                    5 }d V  d d d            n# 1 swxY w Y   |*|                     t          |j                  |           d S d S r   )r  	TypeErrorassertRegexpMatchesr  r  )r   r  r  s      r   assert_type_errorzTestUnboxing.assert_type_error  s      y)) 	VEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	?$$S)9%:%:C@@@@@ ?s   .22c                 L      t          d                     fd}|S )NTr  c                 `     |           } |           }                     ||           d S r   )r  )r"  r#  r$  r  r   r   s      r   checkz'TestUnboxing.check_unary.<locals>.check
  s9    vc{{H%**C##C22222r   r  )r   r   r  r  s   `` @r   check_unaryzTestUnboxing.check_unary  sI    "T"""6**	3 	3 	3 	3 	3 	3 	3 r   c                 n    |                      t                    } |ddg            |ddg           d S )Nr   r8                 ?y              @)r  r$   r   r  s     r   test_numberszTestUnboxing.test_numbers  s@      //q!fr4jr   c                     |                      t                    } |ddg            |ddg            |g d           d S )Nr  )rT   r  )r                  @)rT   y              @)r   r   r   )r  r(   r  s     r   test_tupleszTestUnboxing.test_tuples  sY      00vvw !!!lllr   c                 X    |                      t                    } |dg df           d S )Nr   )r8   rT   r  )r  r+   r  s     r   test_list_inside_tuplez#TestUnboxing.test_list_inside_tuple  s3      00q)))nr   c                 X    |                      t                    } |dddgf           d S )Nr   r7   )rT   )r  r-   r  s     r    test_list_of_tuples_inside_tuplez-TestUnboxing.test_list_of_tuples_inside_tuple  s4      00q4,     r   c                 ~   d}t           } t          d          |          }ddg}|                     |          5   ||           d d d            n# 1 swxY w Y   |                     |ddg           |                     |          5   |ddg           d d d            n# 1 swxY w Y   |                     |          5   |dddgf           d d d            n# 1 swxY w Y   |                     |          5   |t	          dddg                     d d d            n# 1 swxY w Y   ddg}|                     t                    5 } ||           d d d            n# 1 swxY w Y   d	}|                     t          |j                  |	                    t          j                             d S )
Nzcan't unbox heterogeneous listTr  r   g      @r  r   )r8   rT   zFcan't unbox heterogeneous list: UniTuple({0} x 1) != UniTuple({0} x 2))r   r   r  r   r   r  r  r  r  formatr   intp)r   r  r   r  r  r  s         r   test_errorszTestUnboxing.test_errors#  s    /"T"""6**#h##C(( 	 	E#JJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	q#h'''##C(( 	 	E1b'NNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ##C(( 	  	 E1q"g,	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 ##C(( 	% 	%E%Ar7##$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% Vny)) 	VE#JJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	9V-..

5:0F0FGGGGGsY   AAAB&&B*-B*C""C&)C&D**D.1D.E++E/2E/N)r  r  r  __doc__
contextlibcontextmanagerr  r  r  r  r  r  r  r   r   r   r  r    s          A A A    
    ! ! !H H H H Hr   r  c                   6    e Zd ZdZd Zd Zd Zd Zd Zd Z	dS )	TestListReflectionzG
    Test reflection of native Numba lists on Python list objects.
    c                     t          d          |          }g ddgfg dg dfg}|D ]\  }}t          |          }t          |          } |||          }|                     ||          5   |||          }	|                     |	|           |                     ||           |                     |d         |u |	d         |u            ~~	d d d            n# 1 swxY w Y   d S )NTr  )r  r   r  r           )g      @g      @g      @g       @g      "@r   )r   rX   assertRefCountr  r   )
r   r   r  samplesdestsrcr#  r$  pyrescress
             r   check_reflectionz#TestListReflection.check_reflectionE  sa   "T"""6**$$$rd+$$$&:&:&:; ! 		  		 ID#DzzHt**CF8S))E$$S#..    uS#''e444''#666  qX!5tAw#~FFF4                             			  		 s   0A!CC!	$C!	c                 :    |                      t                     d S r   )r	  r   r  s    r   test_reflect_simplez&TestListReflection.test_reflect_simpleU  s    n-----r   c                 :    |                      t                     d S r   )r	  r   r  s    r   test_reflect_conditionalz+TestListReflection.test_reflect_conditionalX  s    122222r   c                 T   t           } t          d          |          }g d}|                     |          5  |                     t                    5   ||           ddd           n# 1 swxY w Y   |                     |g d           ddd           dS # 1 swxY w Y   dS )ze
        When the function exits with an exception, lists should still be
        reflected.
        Tr  r  N)r   r8   rT   rd   )r   r   r  r  r   r  )r   r   r  rg   s       r   test_reflect_exceptionz)TestListReflection.test_reflect_exception[  s5   
 #"T"""6**II  ## 	6 	6""#455  a              ##A}}}555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s5   BA-!B-A1	1B4A1	5BB!$B!c                    t           } t          d          |          }g d}|dd         } |||          } |||          }|                     ||           |                     ||           |                     ||           dS )zg
        When the same list object is reflected twice, behaviour should
        be consistent.
        Tr  r  N)r   r   r  assertRefCountEqual)r   r   r  pylistclistr#  r$  s          r   test_reflect_same_listz)TestListReflection.test_reflect_same_listh  s    
 "T"""6**qqq	6&&))eE5!!#......  /////r   c                      t          d          t                    }dg}d |D             } ||           |                     d |D             |           dS )zP
        When the list wasn't mutated, no reflection should take place.
        Tr  y              )@c                 ,    g | ]}t          |          S r   idr9   s     r   r;   z9TestListReflection.test_reflect_clean.<locals>.<listcomp>~  s       r!uu   r   c                 ,    g | ]}t          |          S r   r  r9   s     r   r;   z9TestListReflection.test_reflect_clean.<locals>.<listcomp>  s    +++A"Q%%+++r   N)r   r   r   )r   r  rg   idss       r   test_reflect_cleanz%TestListReflection.test_reflect_cleanw  sp     #T"""4((G  a   a+++++S11111r   N)
r  r  r  r  r	  r  r  r  r  r  r   r   r   r   r   @  sx               . . .3 3 36 6 60 0 0	2 	2 	2 	2 	2r   r   c                       e Zd Zd ZdS )ManagedListTestCasec                     |                      t          |          t          |                     t          ||          D ]\  }}|                     ||           d S r   )r   r'   zipr  )r   expectr$  r   r   s        r   !assert_list_element_precise_equalz5ManagedListTestCase.assert_list_element_precise_equal  sd    Vc#hh///$$ 	* 	*DAq##Aq))))	* 	*r   N)r  r  r  r!  r   r   r   r  r    s#        * * * * *r   r  c                   l    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd ZdS )TestListManagedElementsz,Test list containing objects that need refctc                     t          d          |          }t          j        d                              t          j                  t          j        d                              t          j                  g}t          |          } ||           t          |          } ||           |                     ||           d S )NTr  rT   rt   r   r$  )r   r  arangeastyper  rX   r!  )r   r   r  conr   r$  s         r   _check_element_equalz,TestListManagedElements._check_element_equal  s    "T"""6**y||""27++RYq\\-@-@-I-IJcv3iic


..s 	/ 	 	 	 	 	r   c                 6    d }|                      |           d S )Nc                     d S r   r   r(  s    r   r   z=TestListManagedElements.test_reflect_passthru.<locals>.pyfunc      Dr   r)  r   r   s     r   test_reflect_passthruz-TestListManagedElements.test_reflect_passthru  s+    	 	 	!!&)))))r   c                 6    d }|                      |           d S )Nc                     |                      t          j        d                              t          j                             d S )Nr<   )r`   r  r&  r'  r  r,  s    r   r   z=TestListManagedElements.test_reflect_appended.<locals>.pyfunc  s2    JJry}}++BG4455555r   r.  r/  s     r   test_reflect_appendedz-TestListManagedElements.test_reflect_appended  s-    	6 	6 	6 	!!&)))))r   c                 6    d }|                      |           d S )Nc                 4    t          j        d          | d<   d S )Nr<   r   r  r&  r,  s    r   r   z<TestListManagedElements.test_reflect_setitem.<locals>.pyfunc  s    Yr]]CFFFr   r.  r/  s     r   test_reflect_setitemz,TestListManagedElements.test_reflect_setitem  s-    	# 	# 	# 	!!&)))))r   c                 6    d }|                      |           d S )Nc                 .    |                                   d S r   rx   r,  s    r   r   z;TestListManagedElements.test_reflect_popped.<locals>.pyfunc  s    GGIIIIIr   r.  r/  s     r   test_reflect_poppedz+TestListManagedElements.test_reflect_popped  s-    	 	 	 	!!&)))))r   c                 6    d }|                      |           dS )zQmake sure list.insert() doesn't crash for refcounted objects (see #7553)
        c                     |                      dt          j        d                              t          j                             d S )Nr   r  )r   r  r&  r'  r  r,  s    r   r   z;TestListManagedElements.test_reflect_insert.<locals>.pyfunc  s4    JJq")A,,--bg6677777r   Nr.  r/  s     r   test_reflect_insertz+TestListManagedElements.test_reflect_insert  s-    	8 	8 	8 	!!&)))))r   c                     d } t          d          |          } |            } |            }|                     ||           d S )Nc                      g } t          d          D ]F}|                     t          j        |                              t          j                             G| S )Nr  )r?   r`   r  r&  r'  r  r(  rh   s     r   r   z3TestListManagedElements.test_append.<locals>.pyfunc  sN    C3ZZ ; ;

29Q>>0099::::Jr   Tr  r%  r   r!  r   r   r  r   r$  s        r   r'  z#TestListManagedElements.test_append  so    	 	 	 #T"""6**egg..s 	/ 	 	 	 	 	r   c                     d } t          d          |          } |            } |            }|                     ||           d S )Nc                      g } t          d          D ])}|                     t          j        |                     *d}| D ]$}||                                d|j        z   z  z  }%|S )Nr  r  r   )r?   r`   r  r&  r>   size)r(  rh   r3   arrs       r   r   z9TestListManagedElements.test_append_noret.<locals>.pyfunc  sq    C3ZZ ) )

29Q<<((((A 0 0SWWYY!ch,//Hr   Tr  r   r   rC  s        r   test_append_noretz)TestListManagedElements.test_append_noret  s_    	 	 	 #T"""6**egg%%%%%r   c                     d } t          d          |          } |            } |            }|                     ||           d S )Nc                      g } t          d          D ])}|                     t          j        d                     *t          j        d          | d<   | S )Nrt   r8   r  r   r?   r`   r  r&  rA  s     r   r   z;TestListManagedElements.test_reassign_refct.<locals>.pyfunc  sO    C1XX ) )

29Q<<((((Yq\\CFJr   Tr  r%  rB  rC  s        r   test_reassign_refctz+TestListManagedElements.test_reassign_refct  o    	 	 	 #T"""6**egg..s 	/ 	 	 	 	 	r   c                     d } t          d          |          } |            } |            }|                     ||           d S )Nc                      g } t          d          D ])}|                     t          j        d                     *| dd         S )Nrt   r8   r  rL  rA  s     r   r   z6TestListManagedElements.test_get_slice.<locals>.pyfunc  sF    C1XX ) )

29Q<<((((qs8Or   Tr  r%  rB  rC  s        r   test_get_slicez&TestListManagedElements.test_get_slice  so    	 	 	 #T"""6**egg..s 	/ 	 	 	 	 	r   c                     d } t          d          |          } |            } |            }|                     ||           d S )Nc                      g } t          d          D ])}|                     t          j        d                     *| dd         | dd<   | S )Nrt   r8   r  r   rT   rL  rA  s     r   r   z6TestListManagedElements.test_set_slice.<locals>.pyfunc  sS    C1XX ) )

29Q<<((((1Q3xC!HJr   Tr  r%  rB  rC  s        r   test_set_slicez&TestListManagedElements.test_set_slice  rN  r   c                     d } t          d          |          } |            } |            }|                     ||           d S )Nc                      g } t          d          D ],}|                     t          j        |dz                        -t	          |           dk    r'|                                  t	          |           dk    '| S )N   r   r8   r?   r`   r  r&  r'   rx   rA  s     r   r   z0TestListManagedElements.test_pop.<locals>.pyfunc	  sq    C2YY - -

29QU++,,,,c((Q,,			 c((Q,,Jr   Tr  r%  rB  rC  s        r   test_popz TestListManagedElements.test_pop  o    	 	 	 #T"""6**egg..s 	/ 	 	 	 	 	r   c                     d } t          d          |          } |            } |            }|                     ||           d S )Nc                      g } t          d          D ],}|                     t          j        |dz                        -t	          |           dk    r(|                     d           t	          |           dk    (| S )Ni  r   r8   rX  rA  s     r   r   z4TestListManagedElements.test_pop_loc.<locals>.pyfunc  ss    C4[[ - -

29QU++,,,,c((Q,,


 c((Q,,Jr   Tr  r%  rB  rC  s        r   test_pop_locz$TestListManagedElements.test_pop_loc  rZ  r   c                     d } t          d          |          } |            } |            }|                     ||           d S )Nc                      g } t          d          D ],}|                     t          j        |dz                        -| dd= | S )NrW  r   rT   r<   rL  rA  s     r   r   z6TestListManagedElements.test_del_range.<locals>.pyfunc+  sO    C2YY - -

29QU++,,,,AbD	Jr   Tr  r%  rB  rC  s        r   test_del_rangez&TestListManagedElements.test_del_range*  rN  r   c                     d } t          d          |          } |            } |            }|                     ||           d S )Nc                  `    g } t          d          D ]}|                     dg|z             | S Nr<   r   )r?   r`   rA  s     r   r   z9TestListManagedElements.test_list_of_list.<locals>.pyfunc;  s<    C2YY $ $

A37####Jr   Tr  rH  rC  s        r   test_list_of_listz)TestListManagedElements.test_list_of_list:  s_    	 	 	 #T"""6**egg%%%%%r   N)r  r  r  r  r)  r0  r3  r7  r;  r>  r'  rI  rM  rQ  rT  rY  r]  r`  rd  r   r   r   r#  r#    s        22	 	 	* * *
* * ** * ** * ** * *  & & &"          "  "   & & & & &r   r#  c                       fd}|S )Nc                     |                                   |                     t                    5 } | g|R i | d d d            n# 1 swxY w Y   d}|                     |t	          |j                             d S )Nz-cannot reflect element of reflected container)r  r  r  r  r  r  )r   r!  kwargsr  
expect_msgfns        r   wrappedz*expect_reflection_failure.<locals>.wrappedJ  s    !!!y)) 	&VBt%d%%%f%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&D
j#f&6"7"788888s   A		AAr   )ri  rj  s   ` r   expect_reflection_failurerk  I  s#    9 9 9 9 9 Nr   c                       e Zd Zd Zd Zed             Zed             Zed             Zed             Z	d Z
d Zd	 Zed
             Zd Zed             Zd Zd Zed             Zed             Zd ZdS )TestListOfListc                     ddl m}  ||          } || } ||          } t          d          |          } || }|                     ||           |                     ||           d S )Nr   )deepcopyTr  r%  )r   ro  r   r!  )	r   r   r!  ro  expect_argsr   	njit_argsr  r$  s	            r   compile_and_testzTestListOfList.compile_and_testV  s    !!!!!!htnn%HTNN	"T"""6**eY..s 	/ 	 	 	 	..I 	/ 	 	 	 	 	r   c                 6    d }|                      |           d S )Nc                  8    d t          d          D             } | S )Nc                 8    g | ]}t          j        |          gS r   r6  r:   rh   s     r   r;   zNTestListOfList.test_returning_list_of_list.<locals>.pyfunc.<locals>.<listcomp>i  s"    222A")A,,222r   r  rL   )r   s    r   r   z:TestListOfList.test_returning_list_of_list.<locals>.pyfunch  s     22q222AHr   rr  r/  s     r   test_returning_list_of_listz*TestListOfList.test_returning_list_of_listg  s-    	 	 	 	f%%%%%r   c                 6   d } t          d          |          }d t          d          D             d t          d          D             g}d t          d          D             dgg}d	gd	hgg}d	gd
d	igg} ||           |                     t                    5 } ||           d d d            n# 1 swxY w Y   |                     dt          |j                             |                     t                    5 } ||           d d d            n# 1 swxY w Y   |                     dt          |j                             |                     t                    5 } ||           d d d            n# 1 swxY w Y   |                     dt          |j                             |                     t                    5 } ||           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                     | d         S Nr   r   r   s    r   r   z<TestListOfList.test_heterogeneous_list_error.<locals>.pyfuncp      Q4Kr   Tr  c                 6    g | ]}t          j        |          S r   r  zerosrv  s     r   r;   z@TestListOfList.test_heterogeneous_list_error.<locals>.<listcomp>t       ---qrx{{---r   rt   c                 <    g | ]}t          j        |          d z   S r  r  onesrv  s     r   r;   z@TestListOfList.test_heterogeneous_list_error.<locals>.<listcomp>u  s$    ///rwqzz"}///r   c                 6    g | ]}t          j        |          S r   r~  rv  s     r   r;   z@TestListOfList.test_heterogeneous_list_error.<locals>.<listcomp>v  r  r   r  r   r   Qreflected list(array(float64, 1d, C)) != reflected list(array(complex128, 1d, C))zDreflected list(array(float64, 1d, C)) != reflected list((int64 x 1))z=reflected list(int64) != reflected list(reflected set(int64))z*Cannot type list element of <class 'dict'>)r   r?   r  r  r  r  r  r]  )r   r   r  l2l3l4l5r  s           r   test_heterogeneous_list_errorz,TestListOfList.test_heterogeneous_list_errorn  s4   	 	 	 #T"""6**--E!HH---//eAhh///1--E!HH---v6cQC5\cS!H: 	b			 y)) 	VE"III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	8 !!	 	 	 y)) 	VE"III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	+ !!	 	 	 y)) 	VE"III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	K !!	 	 	
 z** 	fE"III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	8 !!	 	 	 	 	sH   B77B;>B;DD #D )FFFG&&G*-G*c                    d } t          d          |          }ddgddgg}dd	g}t          |          t          |          f}t          |          t          |          f} ||   ||  |                     ||           d S )
Nc                 f    |                      |           | d                              d           d S )Nrn   {   r   )l1r  s     r   r   z:TestListOfList.test_list_of_list_reflected.<locals>.pyfunc  s-    IIbMMMrFMM#r   Tr  r   r   r8   rT   r  rt   )r   rX   r   )r   r   r  r  r  r   r$  s          r   test_list_of_list_reflectedz*TestListOfList.test_list_of_list_reflected  s    	 	 	 #T"""6**!fq!fVb488#2hhR s%%%%%r   c                     d }d t          d          D             d t          d          D             g} t          d          |          } ||          }|                      ||          |           d S )Nc                     | d         S r{  r   r   s    r   r   z6TestListOfList.test_heterogeneous_list.<locals>.pyfunc  r|  r   c                 6    g | ]}t          j        |          S r   r~  rv  s     r   r;   z:TestListOfList.test_heterogeneous_list.<locals>.<listcomp>  r  r   rt   c                 6    g | ]}t          j        |          S r   r  rv  s     r   r;   z:TestListOfList.test_heterogeneous_list.<locals>.<listcomp>  s     /M/M/Mq

/M/M/Mr   Tr  )r?   r   r  )r   r   r  r  l1_gots        r   test_heterogeneous_listz&TestListOfList.test_heterogeneous_list  s    	 	 	 .-E!HH---/M/ME!HH/M/M/MN"T"""6**rr

F33333r   c                 r   d }t          j        d          gt          j        d          dz  gg}|                     ||           |                     t                    5 }|                     ||           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                 *    |                                  S r   r:  r   s    r   barz$TestListOfList.test_c01.<locals>.bar  s    5577Nr   r   r<   r  r  )r  r  rr  r  r  r  r  r  r   r  rr  s       r   test_c01zTestListOfList.test_c01  s    	 	 	 hqkk]RXb\\"_-. 	c1%%%y)) 	*V!!#q)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*8 !!	 	 	 	 	s   !BBBc                 "   d }t          j        d          gg}|                     t          j                  5 }|                     ||           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                 0    |                      |            | S r   r   r   s    r   r  z$TestListOfList.test_c02.<locals>.bar  s    HHQKKKHr   r   z(Invalid use of BoundFunction(list.append)	r  r  r  r   r  rr  r  r  r  r  s       r   test_c02zTestListOfList.test_c02  s    	 	 	 hqkk]Ov122 	*f!!#q)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*6 !!	 	 	 	 	   AA #A c           	         d }t          j        d          gg}|                     t          j                  5 }|                     ||           d d d            n# 1 swxY w Y   |                     d                    t          d          t          |d                             t          |j
                             d S )Nc                     | }d|d<   |S Nr   r   r   r   fs     r   r  z$TestListOfList.test_c03.<locals>.bar  s    AAaDHr   rT   1invalid setitem with value of {} to element of {}r   r   r  r&  r  r   r  rr  r  r  r   r  r  r  s       r   test_c03zTestListOfList.test_c03  s    	 	 	
 ill^v122 	*f!!#q)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*?FFq		qt   !!	
 	
 	
 	
 	
r  c           	         d }t          j        d          gg}|                     t          j                  5 }|                     ||           d d d            n# 1 swxY w Y   |                     d                    t          d          t          |d         d                             t          |j
                             d S )Nc                      | }d|d         d<   |S rc  r   r  s     r   r  z$TestListOfList.test_c04.<locals>.bar  s    AAaDGHr   rT   r  r<   r   r  r  s       r   test_c04zTestListOfList.test_c04  s   	 	 	
 ill^v122 	*f!!#q)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*?FFr

qtAw   !!	 	 	 	 	r  c                     d }t          j        d                              t           j                  gg}|                     ||           d S )Nc                     | }t          j        d t          j        d                              t           j                  D                       |d         d<   |S )Nc                     g | ]}|S r   r   r9   s     r   r;   z8TestListOfList.test_c05.<locals>.bar.<locals>.<listcomp>   s    IIIaIIIr   r<   r   )r  r   r&  r'  r  r  s     r   r  z$TestListOfList.test_c05.<locals>.bar  sJ    AhII29R==+?+?+H+HIIIJJAaDGHr   rT   )r  r&  r'  r  rr  r   r  r  s      r   test_c05zTestListOfList.test_c05  sR    	 	 	
 ill!!"'**+,c1%%%%%r   c                 "   d }t          j        d          gg}|                     t          j                  5 }|                     ||           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                 |    | }t          j        d t          j        d          D                       |d         d<   |S )Nc                     g | ]}|d z   S r  r   r9   s     r   r;   z8TestListOfList.test_c06.<locals>.bar.<locals>.<listcomp>	  s    >>>1B>>>r   r<   r   )r  r   r&  r  s     r   r  z$TestListOfList.test_c06.<locals>.bar  s:    Ah>>	">>>??AaDGHr   rT   invalid setitem with value)	r  r&  r  r   r  rr  r  r  r  r  s       r   test_c06zTestListOfList.test_c06  s    	 	 	
 ill^v122 	*f!!#q)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*2C8H4I4IJJJJJr  c                 \   |                                   d }t          j        d          gg} t          d          |          }|                     t
                    5 } ||           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                     | d         S )Nir   r   s    r   r  z$TestListOfList.test_c07.<locals>.bar  s    R5Lr   rT   Tr  zgetitem out of range)	r  r  r&  r   r  r:  r  r  r  r   r  r  r  r  s        r   test_c07zTestListOfList.test_c07  s    !!!	 	 	 ill^"T"""3''z** 	fE!HHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	,c&2B.C.CDDDDDs   !A99A= A=c                 8   |                                   d }g d} t          d          |          }|                     t                    5 } ||           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                     d| d<   | S )Nr  rt   r   r   s    r   r  z$TestListOfList.test_c08.<locals>.bar!  s    AaDHr   r  Tr  zsetitem out of range)r  r   r  r:  r  r  r  r  s        r   test_c08zTestListOfList.test_c08  s    !!!	 	 	 II"T"""3''z** 	fE!HHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	,c&2B.C.CDDDDDs   A''A+.A+c                     d }g d}|                      t          j                  5 }|                     ||           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                     d| d<   | S )Ny              @r7  r   r   s    r   r  z$TestListOfList.test_c09.<locals>.bar,  s    AbEHr   r  r  )r  r   r  rr  r  r  r  r  s       r   test_c09zTestListOfList.test_c09+  s    	 	 	 IIv122 	*f!!#q)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*2C8H4I4IJJJJJs   A

AAc                 H    d }g dg dg}|                      ||           d S )Nc                 4    | d         | d         c| d<   | d<   | S r  r   r   s    r   r  z$TestListOfList.test_c10.<locals>.bar7  s"    1qtJAaD!A$Hr   r  r  rt   r  rw  r  s      r   test_c10zTestListOfList.test_c105  A    	 	 	 YY			"c1%%%%%r   c                 H    d }g dg dg}|                      ||           d S )Nc                 &    | d d d         | d d <   | S r  r   r   s    r   r  z$TestListOfList.test_c11.<locals>.bar@  s    TTrT7AaaaDHr   r  r  rw  r  s      r   test_c11zTestListOfList.test_c11>  r  r   c                 j    d }d t          d          D             }|                     ||           d S )Nc                     | d= | S r  r   r   s    r   r  z$TestListOfList.test_c12.<locals>.barH  s    "Hr   c                     g | ]}|S r   r   r9   s     r   r;   z+TestListOfList.test_c12.<locals>.<listcomp>L  s    """1Q"""r   r<   )r?   rr  r  s      r   test_c12zTestListOfList.test_c12G  sH    	 	 	 #"b		"""c1%%%%%r   N)r  r  r  rr  rx  rk  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   rm  rm  T  s         "& & & . . .` & & & 4 4 4   "  
 
 
$  " & & &	K 	K 	K 
E 
E 
EE E EK K K & & & & & && & & & &r   rm  c                       e Zd Zd ZdS )Itemc                 "    || _         || _        d S r   manyscalar)r   r  r  s      r   __init__zItem.__init__Q  s    	r   N)r  r  r  r  r   r   r   r  r  P  s#            r   r  c                       e Zd Zd Zd ZdS )	Containerc                 B    d t          |          D             | _        d S )Nc                 r    g | ]4}t          j        |                              t           j                  g5S r   )r  r&  r'  float64rv  s     r   r;   z&Container.__init__.<locals>.<listcomp>X  s3    III1bill))"*556IIIr   )r?   data)r   rZ   s     r   r  zContainer.__init__W  s!    IIaIII			r   c                     t          |          D ]L}| j                            t          j        |                              t          j                  g           Md S r   )r?   r  r`   r  r&  r'  r  )r   rZ   rh   s      r   morezContainer.moreZ  sY    q 	@ 	@AIbill11"*==>????	@ 	@r   N)r  r  r  r  r  r   r   r   r  r  V  s:        J J J@ @ @ @ @r   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestListAndJitClassesc                     dt           j        d d          fdt           j        fg} t          |          t                    }|S )Nr  r  )r   r  r   r  )r   specJCItems      r   make_jitclass_elementz+TestListAndJitClasses.make_jitclass_element`  sB    U]111%&u}%
  $%%r   c           	          dt          j        t          j        t           j        d d d                             i} t          |          t                    }|S )Nr  r   )dtype)r   Listr  r   r  )r   r  JCContainers      r   make_jitclass_containerz-TestListAndJitClasses.make_jitclass_containerh  sO    EJUZccc0B%C%CDDD
 %htnnY//r   c                 J    t          ||          D ]\  }} |||           d S r   )r  )r   testerr   r$  r   r/   s         r   assert_list_element_with_testerz5TestListAndJitClasses.assert_list_element_with_testero  s:    $$ 	 	DAqF1aLLLL	 	r   c                 n   	                                   	d } fd} t          d          |          }	fdt          d          D             }t          |          }t          |          } ||          } ||          }                     |||                                |||           d S )Nc                 4    | d         | d         c| d<   | d<   | S r   r   )xss    r   r   zETestListAndJitClasses.test_jitclass_instance_elements.<locals>.pyfuncv  s"    a5"Q%LBqE2a5Ir   c                                          | j        |j                                        | j        |j                   d S r   )r  r  r  )r   r/   r   s     r   r  zATestListAndJitClasses.test_jitclass_instance_elements.<locals>.eqz  s=    ##AFAF333##AHah77777r   Tr  c                 p    g | ]2} t           j                            |d z             |dz            3S )r   g333333?r  )r  random)r:   rZ   r  s     r   r;   zITestListAndJitClasses.test_jitclass_instance_elements.<locals>.<listcomp>  sP     " " " v29++AE221s7CCC " " "r   rt   )r  r   r?   rX   r  )
r   r   r  r  r"  
expect_arggot_arg
expect_resgot_resr  s
   `        @r   test_jitclass_instance_elementsz5TestListAndJitClasses.test_jitclass_instance_elementss  s    ++--	 	 		8 	8 	8 	8 	8 #T"""6**" " " "a" " " #YY
s))VJ''
%..,,RWEEE,,RWEEEEEr   c                 :   |                                  }t          d          } |d          }|                     |j        |j                   |                    d           |                    d           |                     |j        |j                   d S )Nr  rY   rT   )r  r  r!  r  r  )r   r  r   r$  s       r   test_jitclass_containing_listz3TestListAndJitClasses.test_jitclass_containing_list  s    2244QkA..sxEEEA..sxEEEEEr   N)r  r  r  r  r  r  r  r  r   r   r   r  r  _  sg              F F F2F F F F Fr   r  c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )TestListInitialValuesz5Tests that lists carry their initial value if presentc                 |     d t                     fd            }t          fd            } |             d S )Nc                     d S r   r   r   s    r   r  z?TestListInitialValues.test_homogeneous_and_literal.<locals>.bar      Cr   c                     | j         d S                     t          | t          j                                                 | j         g d                               t          | d          d           d S )Nc                      t          |           S r   r
   r   s    r   <lambda>zTTestListInitialValues.test_homogeneous_and_literal.<locals>.ol_bar.<locals>.<lambda>      1 r   r  literal_valueFc                     | S r   r   r   s    r   r  zTTestListInitialValues.test_homogeneous_and_literal.<locals>.ol_bar.<locals>.<lambda>      Q r   )initial_value
assertTrue
isinstancer   r  r   hasattrrg   r   s    r   ol_barzBTestListInitialValues.test_homogeneous_and_literal.<locals>.ol_bar  sv    &---OOJq%*55666Q_iii888WQ88%@@@;r   c                  &    g d}  |            d S )Nr  r   r   r  s    r   fooz?TestListInitialValues.test_homogeneous_and_literal.<locals>.foo  s     		ACFFFFFr   r   r   r   r  r  r  s   `  @r   test_homogeneous_and_literalz2TestListInitialValues.test_homogeneous_and_literal  st    	 	 	 
#	 	 	 	 
	 
	 	 	 	 
	
 	r   c                 |     d t                     fd            }t          fd            } |             d S )Nc                     d S r   r   r   s    r   r  zQTestListInitialValues.test_heterogeneous_but_castable_to_homogeneous.<locals>.bar  r  r   c                                          t          | t          j                                                 | j        d                                t          | d          d           d S )Nr   Fc                     | S r   r   r   s    r   r  zfTestListInitialValues.test_heterogeneous_but_castable_to_homogeneous.<locals>.ol_bar.<locals>.<lambda>  r  r   )r  r  r   r  r   r  r  r  s    r   r  zTTestListInitialValues.test_heterogeneous_but_castable_to_homogeneous.<locals>.ol_bar  sa    OOJq%*55666Q_d333WQ88%@@@;r   c                  &    g d}  |            d S )N)r  r8   rT   r   r
  s    r   r  zQTestListInitialValues.test_heterogeneous_but_castable_to_homogeneous.<locals>.foo  s     

ACFFFFFr   r  r  s   `  @r   .test_heterogeneous_but_castable_to_homogeneouszDTestListInitialValues.test_heterogeneous_but_castable_to_homogeneous  st    	 	 	 
#	 	 	 	 
	 
	 	 	 	 
	 	r   c                 |     d t                     fd            }t          fd            } |             d S )Nc                     d S r   r   r   s    r   r  z<TestListInitialValues.test_mutation_not_carried.<locals>.bar  r  r   c                     | j         d S                     t          | t          j                                                 | j         g d           d S )Nc                      t          |           S r   r  r  s    r   r  zQTestListInitialValues.test_mutation_not_carried.<locals>.ol_bar.<locals>.<lambda>  r  r   r  c                     | S r   r   r  s    r   r  zQTestListInitialValues.test_mutation_not_carried.<locals>.ol_bar.<locals>.<lambda>  r  r   )r  r  r  r   r  r   )r   r   s    r   r  z?TestListInitialValues.test_mutation_not_carried.<locals>.ol_bar  sV    &---OOJq%*55666Q_iii888;r   c                  P    g d} |                      d            |            d S )Nr  r  r   r
  s    r   r  z<TestListInitialValues.test_mutation_not_carried.<locals>.foo  s.     		AHHQKKKCFFFFFr   r  r  s   `  @r   test_mutation_not_carriedz/TestListInitialValues.test_mutation_not_carried  st    	 	 	 
#	 	 	 	 
	 
	 	 	 	 
	 	r   c                 F   t           d             }|d ft          g dffD ]}\  }t           d             d t                    fd            }t           fd            } |             j        d         d         }|                     |j        |           ~d S )Nc                      d S r   r   )r!  s    r   nopzLTestListInitialValues.test_mutation_not_carried_single_function.<locals>.nop      Dr   r  c                     d S r   r   r   s    r   bazzLTestListInitialValues.test_mutation_not_carried_single_function.<locals>.baz  s    r   c                     d S r   r   )r0   s    r   r  zLTestListInitialValues.test_mutation_not_carried_single_function.<locals>.bar  s    r   c                     fd}|S )Nc                 4     |             |            d S r   r   )r0   r"  ri  s    r   implz]TestListInitialValues.test_mutation_not_carried_single_function.<locals>.ol_bar.<locals>.impl  s!    BqEEECFFFFFr   r   )r0   r&  r"  ri  s     r   r  zOTestListInitialValues.test_mutation_not_carried_single_function.<locals>.ol_bar  s(          r   c                  P    g d}  |            |                      d           | S )Nr  r8   r   r
  s    r   r  zLTestListInitialValues.test_mutation_not_carried_single_function.<locals>.foo  s-    IIAr   r   )r   r
   r   
signaturesr   r  )	r   r  ivr  r  largr  r"  ri  s	         @@@r   )test_mutation_not_carried_single_functionz?TestListInitialValues.test_mutation_not_carried_single_function  s
    
	 	 
	 DkIyyy#99 	5 	5FB  T   c]]     ]     T CEEE >!$Q'DT/44445	5 	5r   c                     t           d             t           fd            } |             j        d         d         }|                     |j        d            |                     |j        j        d            d S )Nc                     d S r   r   r   s    r   r  z9TestListInitialValues.test_list_of_list_ctor.<locals>.bar   r   r   c                  .    g dg dg}  |            d S )N)r   r8   rT   r  rt   )r   r8   rT   r  r  r   r
  s    r   r  z9TestListInitialValues.test_list_of_list_ctor.<locals>.foo  s&     ///2ACFFFFFr   r   )r   r(  r   r  r  )r   r  r*  r  s      @r   test_list_of_list_ctorz,TestListInitialValues.test_list_of_list_ctor  s    		 	 
	 
	 	 	 	 
	 	~a #+T2221488888r   N)	r  r  r  r  r  r  r  r+  r/  r   r   r   r  r    sf        ??  *  ,  ,!5 !5 !5F9 9 9 9 9r   r  c                   n    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd ZdS )TestLiteralListsc                 :    t           d             } |             d S )Nc                      ddg} d S )Nr   r   r   r   s    r   r  z0TestLiteralLists.test_basic_compile.<locals>.foo  s    CAAAr   )r   r   r  s     r   test_basic_compilez#TestLiteralLists.test_basic_compile  s,    		 	 
	 	r   c                 |     d t                     fd            }t          fd            } |             d S )Nc                     d S r   r   r   s    r   r  z<TestLiteralLists.test_literal_value_passthrough.<locals>.bar  r-  r   c           	                              t          | t          j                             | j        }                     t          |t
                                                   |d         t          j        d                                         |d         t          j        d                                         |d         t          j        t          j	        dd                                         |d         t          j
        t          j        dg d	                                          t          |d
         t          j                                                 |d
         j        d         t          j        d                                         |d
         j        d         t          j        d                     d S )Nr   r   r   r8   CrT   Fr  )	reflectedr  r  catr<   c                     | S r   r   r   s    r   r  zQTestLiteralLists.test_literal_value_passthrough.<locals>.ol_bar.<locals>.<lambda>*  r  r   )r  r  r   LiteralListr   rX   r   literalArrayr  r  r  )r   lvr   s     r   r  z?TestLiteralLists.test_literal_value_passthrough.<locals>.ol_bar  s~   OOJq%*;<<===BOOJr400111RUEM!$4$4555RUEM#$6$6777RUEKq#$F$FGGGRUEJuzU=FYY%H %H %H I I IOOJr!ue.?@@AAARU03U]55I5IJJJRU03U]25F5FGGG;r   c                  d    g d} ddg}t          j        d          }dd|| |g} |           d S )Nr  r;  r<   rt   r   r   r~  )otherhomogeneouslistotherheterogeneouslistr  rg   r  s       r   r  z<TestLiteralLists.test_literal_value_passthrough.<locals>.foo,  sG    #,99 &+R["HQKKEC 46LMACFFFFFr   r  r  s   `  @r   test_literal_value_passthroughz/TestLiteralLists.test_literal_value_passthrough  st    	 	 	 
#	 	 	 	 
	 
	 	 	 	 
	 	r   c                 |     d t                     fd            }t          fd            } |             d S )Nc                     d S r   r   r   s    r   r  zETestLiteralLists.test_literal_value_involved_passthrough.<locals>.bar8  r-  r   c                                         t          | t          j                             | j        }t          j        d          t          j        d          t          j        d          t          j        t          j        dd          i}t          j        |          }t          j        d          t          j        t          j        d          t          j        d          t          j	        t          j
        t          j        ddi          |g          t          j        d	          t          j        d
          t          j        d          t          j        t          j        d          i}fd ||           d S )Nghrh   r   r9  r   r  )r  r   r8   r3   F)r:  c                    t          | t          j                  rRt          |t          j                  r8t          | j        |j                  D ]\  }} | j        |j                   d S t          | t
                    r9t          |t
                    r$t          | |          D ]\  }} ||           d S t          | t          j                  r~t          |t          j                  rdt          | j                                        |j                                                  D ]#\  \  }}\  }} ||            ||           $d S t          | t                    rot          |t                    rZt          |                                 |                                          D ]#\  \  }}\  }} ||            ||           $d S 		                    | |           d S r   )
r  r   r=  r  r   rX   LiteralStrKeyDictitemsdictr   )
r   r   rh   jkivikjvj
check_samer   s
           r   rS  z\TestLiteralLists.test_literal_value_involved_passthrough.<locals>.ol_bar.<locals>.check_sameN  s"   q%"344 +q%"344+ #AOQ_ E E E E1"
1?AODDDDE E D)) +4((+ #Aq		 ) )1"
1a(((() ) E$;<< + E$;<<+.1!/2G2G2I2I23/2G2G2I2I/K /K + +*R(2r"
2r***"
2r****+ + !D)) + D))+.1!''))QWWYY.G.G + +*R(2r"
2r***"
2r****+ + $$Q*****r   c                     | S r   r   r   s    r   r  zZTestLiteralLists.test_literal_value_involved_passthrough.<locals>.ol_bar.<locals>.<lambda>e  r  r   )r  r  r   rK  r   r>  r?  r  r=  DictTypeunicode_typer  r  
complex128)r   dlvinner_literal
inner_dictouter_literalrS  r   s        @r   r  zHTestLiteralLists.test_literal_value_involved_passthrough.<locals>.ol_bar;  sn   OOJq%*ABBCCC/C"]3//s1C1C"]3//!&U]As!C!CEM 0??J"]3//!-u}Q/?/?/4}S/A/A/4~383E38:BEq0K 0K 0K 0:/; < < c**EM!,<,<c**EJu7GAF-H -H -H
IM+ + + + + +, JsM***;r   c                  d    ddddidt          j        d          dgdg dd	}  |            d S )
Nr   r   r  rI  rt   )rH  rh   r8   )r  r                @)r   r   r3   r~  rg   r  s    r   r  zETestLiteralLists.test_literal_value_involved_passthrough.<locals>.foog  sK    
 #Qxs!)E)EFQ"ll$ $ACFFFFFr   r  r  s   `  @r   'test_literal_value_involved_passthroughz8TestLiteralLists.test_literal_value_involved_passthrough6  su    	 	 	 
#)	 )	 )	 )	 
)	V 
	 	 	 	 
	 	r   c           
         d }d }d }d }d }d }d }d }d	 }	d
 }
|||||||||	|
f
}|D ]}|                      |j                  5  |                     t          j                  5 } t          |                       d d d            n# 1 swxY w Y   d}|                     |t          |j                             d d d            n# 1 swxY w Y   d S )Nc                      ddg} d| d<   d S )Nr   r   r   r   r   r   s    r   staticsetitemz=TestLiteralLists.test_mutation_failure.<locals>.staticsetitemt  s    aAAaDDDr   c                      ddg} | d= d S Nr   r   r   r   r   s    r   delitemz7TestLiteralLists.test_mutation_failure.<locals>.delitemx  s    aA!r   c                  8    ddg} |                      d           d S )Nr   r   r  r   r   s    r   r`   z6TestLiteralLists.test_mutation_failure.<locals>.append|  s    aAHHRLLLLLr   c                  <    ddg} |                      ddg           d S )Nr   r   r  r]  )rp   r   s    r   rp   z6TestLiteralLists.test_mutation_failure.<locals>.extend  s'    aAHHb"Xr   c                  :    ddg} |                      dd           d S )Nr   r   r   r  )r   r   s    r   r   z6TestLiteralLists.test_mutation_failure.<locals>.insert  s     aAHHQOOOOOr   c                  8    ddg} |                      d           d S Nr   r   )r   r   s    r   r   z6TestLiteralLists.test_mutation_failure.<locals>.remove  s    aAHHSMMMMMr   c                  6    ddg} |                                   d S rj  r:  r   s    r   rx   z3TestLiteralLists.test_mutation_failure.<locals>.pop  s    aAEEGGGGGr   c                  6    ddg} |                                   d S rj  )r   r   s    r   r   z5TestLiteralLists.test_mutation_failure.<locals>.clear  s    aAGGIIIIIr   c                  6    ddg} |                                   d S rj  )sortr   s    r   rn  z4TestLiteralLists.test_mutation_failure.<locals>.sort  s    aAFFHHHHHr   c                  6    ddg} |                                   d S rj  )r   r   s    r   r   z7TestLiteralLists.test_mutation_failure.<locals>.reverse  s    aAIIKKKKKr   Cannot mutate a literal list)	subTestr  r  r   r  r   r  r  r  )r   rb  re  r`   rp   r   r   rx   r   rn  r   illegalstestr  r   s                  r   test_mutation_failurez&TestLiteralLists.test_mutation_failurer  s   	 	 		 	 		 	 		 	 		 	 		 	 		 	 		 	 		 	 		 	 	 "7FFFFC4*  	= 	=Ddm,, = =&&v'9:: !fDJJLLL! ! ! ! ! ! ! ! ! ! ! ! ! ! !7fc&*:&;&;<<<	= = = = = = = = = = = = = = =	= 	=s6   	 C)BCBCB-CC	C	c                     t           d             }|                     |                                 |                       d S )Nc                  l    g d} g }dD ]*}|                     |                     |                     +|S )Nr   r   r   r8   r   rT   r   r  r   rt   r3   abc)r`   r   rg   r  r   s      r   r  z(TestLiteralLists.test_count.<locals>.foo  sE    ===AA % %$$$$Hr   r   r   py_funcr4  s     r   r  zTestLiteralLists.test_count  G    		 	 
	 	.....r   c                     t           d             }|                     |                                 |                       d S )Nc                  (    g d} t          |           S )Nrw  r&   r   s    r   r  z&TestLiteralLists.test_len.<locals>.foo  s    ===Aq66Mr   rz  r4  s     r   rA  zTestLiteralLists.test_len  sG    		 	 
	 	.....r   c                     t           d             }|                     |                                 |                       d S )Nc                  d    g d} g }t          d          D ]}|                    || v            |S )Nrw  )r   r   r8   r  )r	   r`   ry  s      r   r  z+TestLiteralLists.test_contains.<locals>.foo  sH    ===AA#$455 ! !a    Hr   rz  r4  s     r   rn  zTestLiteralLists.test_contains  r|  r   c                     t           d             }|                     t          j                  5 } |d           d d d            n# 1 swxY w Y   d}|                     |t          |j                             d S )Nc                     ddg}||          S rj  r   r   rg   s     r   r  z*TestLiteralLists.test_getitem.<locals>.foo  s    aAQ4Kr   r   $Cannot __getitem__ on a literal listr   r  r   r  r  r  r  r   r  r  r   s       r   rC  zTestLiteralLists.test_getitem  s    		 	 
	 v122 	fCFFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	7fc&"23344444   AAAc                     t           d             }|                     |                                 |                       d S )Nc                  *    ddg} | d         | d         fS rd  r   r   s    r   r  z0TestLiteralLists.test_staticgetitem.<locals>.foo  s    aAQ41:r   rz  r4  s     r   test_staticgetitemz#TestLiteralLists.test_staticgetitem  sG    		 	 
	 	.....r   c                     t           d             }|                     t          j                  5 } |             d d d            n# 1 swxY w Y   d}|                     |t          |j                             d S )Nc                      g d} | d d         S )N)r   r   r   r8   r   r   s    r   r  z6TestLiteralLists.test_staticgetitem_slice.<locals>.foo  s    ARaR5Lr   r  r  r  s       r   test_staticgetitem_slicez)TestLiteralLists.test_staticgetitem_slice  s     
	 	 
	 v122 	fCEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	7fc&"23344444   AAAc                     t           d             }|                     t          j                  5 } |d           d d d            n# 1 swxY w Y   d}|                     |t          |j                             d S )Nc                     ddg}d|| <   d S )Nr   r   r   r   r  s     r   r  z*TestLiteralLists.test_setitem.<locals>.foo  s    aAAaDDDr   r   rp  r  r  s       r   rF  zTestLiteralLists.test_setitem  s    		 	 
	 v122 	fCFFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	/fc&"23344444r  c                     t           d             }dD ]4}|                     |                    |           ||                     5d S )Nc                 6    | dz   dk    rddg}nddg}|d         S )Nr   rT   r   r   r8   r   r   r  s     r   r  z(TestLiteralLists.test_unify.<locals>.foo  s,    1uqyy!H!HQ4Kr   )ir   rz  )r   r  r   s      r   
test_unifyzTestLiteralLists.test_unify  sa    		 	 
	  	5 	5AS[[^^SSVV4444	5 	5r   c                     t           d             }|                     t          j                  5 } |d           d d d            n# 1 swxY w Y   d}|                     |t          |j                             d S )Nc                 b    | dz   dk    rg d}nddg}|d         |d         |d         |d         fS )Nr   rT   )r   r   r  r   r8   r   r   r  s     r   r  z,TestLiteralLists.test_not_unify.<locals>.foo  sB    1uqyy LL!HQ41qtQqT))r   r   zCannot unify LiteralListr  r  s       r   test_not_unifyzTestLiteralLists.test_not_unify  s    		* 	* 
	* v122 	fCHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	+fc&"23344444r  c                     t           d             }|                     t          j                  5 } |             d d d            n# 1 swxY w Y   d}|                     |t          |j                             d S )Nc                  8    ddg} |                      d           d S rj  )r   r   s    r   r  z(TestLiteralLists.test_index.<locals>.foo  s    aAGGCLLLLLr   z+list.index is unsupported for literal listsr  r  s       r   
test_indexzTestLiteralLists.test_index  s    		 	 
	 v122 	fCEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	>fc&"23344444r  c                     t           d             }|                      |            |                                           d S )Nc                  N    ddg                                 } | d         | d         fS rd  )r   r   s    r   r  z'TestLiteralLists.test_copy.<locals>.foo  s%    aAQ41:r   rz  r4  s     r   r  zTestLiteralLists.test_copy  sG    		 	 
	 	.....r   c                 |     d t                     fd            }t          fd            } |             d S )Nc                     d S r   r   r   s    r   r  z3TestLiteralLists.test_tuple_not_in_mro.<locals>.bar$  r-  r   c                                          t          | t          j                                                 t          | t          j                             d S )Nc                     dS )N.r   r   s    r   r  zHTestLiteralLists.test_tuple_not_in_mro.<locals>.ol_bar.<locals>.<lambda>+  s    S r   )assertFalser  r   	BaseTupler  r=  )r   r   s    r   r  z6TestLiteralLists.test_tuple_not_in_mro.<locals>.ol_bar'  sJ    Z5?;;<<<OOJq%*;<<=== = r   c                  &    ddg}  |            d S rj  r   r^  s    r   r  z3TestLiteralLists.test_tuple_not_in_mro.<locals>.foo-  s    aACFFFFFr   r  r  s   `  @r   test_tuple_not_in_mroz&TestLiteralLists.test_tuple_not_in_mro!  st    	 	 	 
#	! 	! 	! 	! 
	!
 
	 	 	 	 
	 	r   N)r  r  r  r5  rD  r_  rt  r  rA  rn  rC  r  r  rF  r  r  r  r  r  r   r   r   r1  r1    s           <: : :x2= 2= 2=h	/ 	/ 	// / /	/ 	/ 	/
5 
5 
5/ / /5 5 5
5 
5 
55 5 55 5 5	5 	5 	5/ / /    r   r1  __main__)ucollectionsr   r  rJ  rF   r  ctypesr  numpyr  numba.core.compilerr   r   numbar   r   r   r	   r
   r  r   
numba.corer   r   r   numba.tests.supportr   r   r   numba.experimentalr   numba.core.extendingr   enable_pyobj_flagsenable_pyobjectforce_pyobj_flagsforce_pyobjectr   r   r$   r(   r+   r-   r1   r4   r@   rC   rH   rM   rP   rU   r[   r^   ra   ri   rl   rr   ru   ry   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   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r  r#  rk  rm  objectr  r  r  r  r1  r  mainr   r   r   <module>r     s}   " " " " " "          



         7 7 7 7 7 7 7 7 > > > > > > > > > > > > > >        + + + + + + + + + + > > > > > > > > > > ' ' ' ' ' ' ) ) ) ) ) ) UWW %)  "EGG #'   
7J''	 	 	          " " "* * *5 5 54 4 4> > >& & &5 5 5    
              
  	 	 	            
  
    
  
          # # #  
  
    
              
+ + +            : : :          
v3 v3 v3 v3 v3 v3 v3 v3r@H @H @H @H @H?H @H @H @HH@2 @2 @2 @2 @2( @2 @2 @2F* * * * */8 * * *z& z& z& z& z&1 z& z& z&|  y& y& y& y& y&( y& y& y&x    6   @ @ @ @ @ @ @ @5F 5F 5F 5F 5F/ 5F 5F 5Fpu9 u9 u9 u9 u9OX u9 u9 u9pc c c c c c c cL	 zHMOOOOO r   