
    J/Phb                        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mZmZmZ d dlZd dlmZmZ d dlmZmZ d dlmZ d dlmZ  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 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/ ZAd0 ZBd1 ZCd2 ZDd3 ZEd4 ZFd5 ZGd6 ZHd7 ZId8 ZJd9 ZKd: ZLd; ZMd< ZNd= ZOd> ZPd? ZQd@ ZRdA ZSdB ZTdC ZUdD ZVdE ZWdF ZXdG ZYdH ZZdI Z[ G dJ dKee          Z\ G dL dMee          Z] G dN dOee          Z^ G dP dQee          Z_ G dR dSe_          Z`dT Za G dU dVe_          Zb G dW dXec          Zd G dY dZec          Ze G d[ d\e_          Zf G d] d^ee          Zg G d_ d`ee          Zheidak    r ejj                     dS dS )b    )
namedtupleN)jittypeofnjitliteral_unroll	literally)typeserrors)TestCaseMemoryLeakMixin)jitclass)overloadPointabc                     d S N xs    V/var/www/html/test/jupyter/venv/lib/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&   )   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(   3   s7     DAq
C  s1vvJr   c                     | ||gS r   r   )r   yzs      r   create_listr,   >   s    q!9r   c                     | ||g|||ggS r   r   )r   r*   r+   r   r   cs         r   create_nested_listr/   A   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>E   s    (((1(((r   
   sumranger   r   r   list_comprehension1r;   D   s%    ((eBii((()))r   c                  N    t          d t          d          D                       S )Nc                 $    g | ]}|d z  dk    |S )r3   r   r   r4   s     r   r6   z'list_comprehension2.<locals>.<listcomp>H   s!    333aA




r   r7   r8   r   r   r   list_comprehension2r>   G   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 r2   )mathpowr4   s     r   r6   z'list_comprehension3.<locals>.<listcomp>K   s"    2221A222r   r7   r8   r   r   r   list_comprehension3rC   J   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 r7   r:   )r5   r   r*   s      r   r6   z'list_comprehension4.<locals>.<listcomp>N   s/    <<<!%))<<QA<<<<r   r7   r8   r   r   r   list_comprehension4rH   M   s%    <<uRyy<<<===r   c                  4    d t          d          D             S )Nc                     g | ]}|d z  S r2   r   r4   s     r   r6   z'list_comprehension5.<locals>.<listcomp>Q   s    %%%aAE%%%r   r7   rG   r   r   r   list_comprehension5rK   P   s    %%599%%%%r   c                  4    d t          d          D             S )Nc                 @    g | ]}d  t          |          D             S )c                     g | ]}|S r   r   r4   s     r   r6   z2list_comprehension6.<locals>.<listcomp>.<listcomp>T   s    !!!1Q!!!r   rG   )r5   r*   s     r   r6   z'list_comprehension6.<locals>.<listcomp>T   s-    444a!!a!!!444r      rG   r   r   r   list_comprehension6rP   S   s    445884444r   c                 :    t          t          |                     S r   listr:   ns    r   list_constructorrV   W   s    a>>r   c                      t                      S r   rS   r   r   r   list_constructor_emptyrY   Z   s     66Mr   c                 H    t                      }|                    |           S r   )rS   append)rU   r*   s     r   #list_constructor_empty_but_typeabler\   _   s     	A88A;;r   c                     g }|                     d           t          |           D ]}|                     |           |S N*   r[   r:   rU   lis      r   list_appendrd   e   sA    
AHHRLLL1XX  	Hr   c                     g }|                     d           t          |           D ]}|                     |           |S )N      E@r`   ra   s      r   list_append_heterogeneousrg   l   sA    
AHHTNNN1XX  	Hr   c                     g }|                     t          |                      |                     |d d                    |                     t          | dd                     |S )Nr   extendr:   rU   rb   s     r   list_extendrm   s   sZ    
AHHU1XXHHQssVHHU1a__Hr   c                     g }|                     t          |                      |                     |d d                    |                     d           |                     dg           |S )Nri   )   r_   g     ^@rj   rl   s     r   list_extend_heterogeneousrp   {   sd    
AHHU1XXHHQssVHHWHHeWHr   c                     t          t          |                     }d}t          |          dk    r:|t          |          |                                z  z  }t          |          dk    :|S Nr   )rS   r:   r"   pop)rU   rb   r   s      r   	list_pop0rt      sZ    U1XXA
C
a&&1**s1vv a&&1**Jr   c                 l    t          t          |                     }|                    |          }||fS r   )rS   r:   rs   )rU   rc   rb   r   s       r   	list_pop1rv      s+    U1XXA	aAa4Kr   c                 X    t          t          |                     }t          |          S r   rS   r:   r"   rl   s     r   list_lenry      s    U1XXAq66Mr   c                     t          t          |                     }d}t          t          |                    D ]}||||         z  z  }t          t          |           d          D ]}||||         z  z  }|S rr   rx   rU   rb   r   rc   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 rr   rx   r{   s       r   list_setitemr~      s    U1XXA
C3q66]]  1Q4x!CFF7A  1Q4x!3q66]]  qtJr   c                 N    t          t          |                     }|||         S r   rR   rU   startstoprb   s       r   list_getslice2r      s!    U1XXAU4Z=r   c                 P    t          t          |                     }||||         S r   rR   )rU   r   r   steprb   s        r   list_getslice3r      s$    U1XXAU4_r   c                     t          t          |                     }t          t          dd|z                       }||||<   |S Nd   rR   )rU   n_sourcer   r   rb   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   rx   )rU   r   r   r   rb   r   rc   s          r   list_setslice3r      sj    U1XXA	%T/A3q66]]  	!AeDoHr   c                     t          t          |                     }t          t          dd|z                       ||||<   |S r   rR   )rU   n_srcr   r   r   rb   s         r   list_setslice3_arbitraryr      s>    U1XXAeCu5566AeDoHr   c                 H    t          t          |                     }|d d = |S r   rR   rl   s     r   list_delslice0r      s#    U1XXA	!!!Hr   c                 R    t          t          |                     }||d = |d |= |S r   rR   r   s       r   list_delslice1r      s.    U1XXA	%&&		%4%Hr   c                 H    t          t          |                     }|||= |S r   rR   r   s       r   list_delslice2r      s#    U1XXA	%*Hr   c                 f    t          t          |                     }|                                 |S r   )rS   r:   clearrl   s     r   
list_clearr      s%    U1XXAGGIIIHr   c                     t          t          |                     }|                                }|                    d           ||fS r^   )rS   r:   copyr[   )rU   rb   lls      r   	list_copyr      s8    U1XXA	
BHHRLLLb5Lr   c                 |    t          t          |                     }d}t          |          D ]\  }}|||z  z  }|S rr   )rS   r:   	enumerate)rU   rb   r   rc   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      rR   rl   s     r   list_containsr      sW    U1XXAFAFAEQJQQJ
AENAQJ r   c                 h    t          t          | dd                    }|                    |          S Nr   ri   rS   r:   indexrU   r   rb   s      r   list_index1r      s)    U1a__A771::r   c                 j    t          t          | dd                    }|                    ||          S r   r   )rU   r   r   rb   s       r   list_index2r      s-    U1a__A771er   c                 l    t          t          | dd                    }|                    |||          S r   r   )rU   r   r   r   rb   s        r   list_index3r      s/    U1a__A771eT"""r   c                 r    t          t          | dz
  dd                    }|                    |           |S )Nr   ri   )rS   r:   remover   s      r   list_remover      s3    U1q5"b!!""AHHQKKKHr   c                 l    t          t          d|                     }|                    ||           |S rr   )rS   r:   insert)rU   posr   rb   s       r   list_insertr     s0    U1a[[AHHS!Hr   c                     g }t          |           D ]}|                    |dz             |                    |          S )NrO   )r:   r[   count)rU   r   rb   r   s       r   
list_countr     sA    
A1XX  	Q771::r   c                 f    t          t          |                     }|                                 |S r   )rS   r:   reverserl   s     r   list_reverser     s%    U1XXAIIKKKHr   c                     t          t          d|                     }t          t          dd|z                       }||z   }|                    d           |||fS )Nr   r   r_   )rS   r:   r[   )mrU   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          @rO         @r[   )r   r   r.   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   rR   )r   rU   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   (  s+    	
A	AFAFAa4Kr   c                 D    t          t          |                     }||z  S r   rR   rU   r   r   s      r   list_mulr   /      U1XXAq5Lr   c                 D    t          t          |                     }||z  S r   rR   r   s      r   	list_mul2r   3  r   r   c                 H    t          t          |                     }||z  }|S r   rR   r   s      r   list_mul_inplacer   7  s!    U1XXAFAHr   c                 d    t          t          |                     }t          |          |rdndfS )NTF)rS   r:   bool)rU   r   s     r   	list_boolr   <  s-    U1XXA77Q)TTE**r   c                 B    t          |           t          |          k    S r   rX   r   s     r   
eq_usecaser   @      77d1ggr   c                 B    t          |           t          |          k    S r   rX   r   s     r   
ne_usecaser   C  r   r   c                 B    t          |           t          |          k    S r   rX   r   s     r   
gt_usecaser   F      77T!WWr   c                 B    t          |           t          |          k    S r   rX   r   s     r   
ge_usecaser   I  r   r   c                 B    t          |           t          |          k     S r   rX   r   s     r   
lt_usecaser   L  r   r   c                 B    t          |           t          |          k    S r   rX   r   s     r   
le_usecaser   O  r   r   c                 n    t          t          |                     }|}|d d          }||u ||u||u ||ufS r   rR   )rU   r   r   r.   s       r   identity_usecaser   R  sD    U1XXA	A	!!!AFaqjAFaqj99r   c                  2    dg} d| d<   d}| D ]}||z  }| |fS )NFTr   r   )rb   r   r   s      r   bool_list_usecaser   X  s:    	AAaDA  Ea4Kr   c                     |                                  }|                                  }d| d<   |                     |           | ||fS )Nrf   r   rs   rk   rb   r   r   r*   s       r   reflect_simpler   a  s?    	A	AAaDHHRLLLa7Nr   c                     |d         rg d} |                                  }|                                  }d| d<   |                     |           | ||fS )Nr   )g      &@g      6@g     @@g      F@rf   r   r   s       r   reflect_conditionalr   h  sV    	!u !   	A	AAaDHHRLLLa7Nr   c                 :    |                      d           t          r^   )r[   ZeroDivisionErrorrb   s    r   reflect_exceptionr   r  s    HHRLLL
r   c                 X    |                      |                                           | |u S r   )r[   rs   )rb   r   s     r   reflect_dualr   v  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          |          }|                      |ddd           |ddd                     d S )Nr   r3   rO   )r,   r   r	   int32assertEqualselfpyfunccfuncs      r   test_create_listzTestLists.test_create_list}  s_    =ek5;<==fEEq!Q1a99999r   c                 ,   t           } t          t          j        t          j        t          j        t          j        t          j        t          j        f          |          }|                      |dddddd           |dddddd                     d S )Nr   r3   rO      ro      )r/   r   r	   r   r   r   s      r   test_create_nested_listz!TestLists.test_create_nested_list  s    #>ek5;k5;= > >>DF F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   rO      F   i  )r   assertPreciseEqualr   )r   r   preciser   rU   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  rV   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   rY   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      ,@r7   Tr  )npr   arrayr\   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  rd   r
  s    r   test_appendzTestLists.test_append      "";/////r   c                 >    |                      t          d           d S NF)r  )r  rg   r
  s    r   test_append_heterogeneousz#TestLists.test_append_heterogeneous  "    ""#<e"LLLLLr   c                 :    |                      t                     d S r   )r  rm   r
  s    r   test_extendzTestLists.test_extend  r!  r   c                 >    |                      t          d           d S r#  )r  rp   r
  s    r   test_extend_heterogeneousz#TestLists.test_extend_heterogeneous  r%  r   c                 :    |                      t                     d S r   )r  rt   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  ro   (   r   r   r3   ri   rO   )rv   r   r  )r   r   r   rU   rc   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   ro   zpop from empty listr   zpop index out of range)r  r   rv   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  r.  r   r   r3   ri   r0  rO   r_   )r   r   r  )r   r   r   rU   indicesrc   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  ry   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  r=  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  ro   r/  r   r   r3   ri   r0  rO   r   	itertoolsproductr  )	r   r   r   sizesrU   r7  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   )rF  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 rA  )r   r   rC  rD  r  )
r   r   r   rE  rU   r   r7  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  rF   r   r   r3   ri   r0  rO   )r   r   ri   r3   )r   r   rC  rD  r  
r   r   r   rU   r7  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 rM  )r   r   rC  rD  r  rO  s
             r   test_setslice3zTestLists.test_setslice3  rR  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  ro   r7   r   r3   r   r   rO   zcannot resize)r  r   r   r  
ValueErrorr  r  r  r   r   r   r4  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   )rF  r   r
  s    r   test_delslice1zTestLists.test_delslice1  rI  r   c                 :    |                      t                     d S r   )rF  r   r
  s    r   test_delslice2zTestLists.test_delslice2  rI  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  r7   r   r3   r   zslice step cannot be zero)r  r   r   r  rV  r   r  r  rW  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!  r[  r   c                 :    |                      t                     d S r   )r  r   r
  s    r   test_reversezTestLists.test_reverse$  r=  r   c                 :    |                      t                     d S r   )r  r   r
  s    r   test_containszTestLists.test_contains'  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  rV  r  )r   r   r   r  r  s        r   check_index_resultzTestLists.check_index_result*  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   ro   r7   ir  )r  r   r   ri  r   r   r   r   s       r   test_index1zTestLists.test_index13  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  rk  r   r   r3   ri   r0  rO   )r  r   r   ri  )r   r   r   rU   r   r7  r   s          r   test_index2zTestLists.test_index2:  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 ro  )r  r   r   rC  rD  ri  )r   r   r   rU   r   r7  r   r   s           r   test_index3zTestLists.test_index3D  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.r7   r   invalidro   r   r   assertRaisesRegexr
   r  r   r   r   msgs       r   test_index_exception1zTestLists.test_index_exception1N  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.r7   r   rt  ru  rw  s       r   test_index_exception2zTestLists.test_index_exception2U  s    "T"""6**.##F$6<< 	' 	'E"aI&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'rz  c                     t           } t          d          |          }d}dD ].} |||          }|                      |||          |           /d S )NTr  r  )r   r   ro      )r   r   r  r   r   r   rU   r   r  s         r   test_removezTestLists.test_remove\  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  r7   r_   zlist.remove(x): x not in list)r  r   r   r  rV  r   r  r  rW  s       r   test_remove_errorzTestLists.test_remove_errord  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  ro      )r   r   r:   r  rl  s       r   
test_countzTestLists.test_countl  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_clearr  s    "":.....r   c                 :    |                      t                     d S r   )r  r   r
  s    r   	test_copyzTestLists.test_copyu  r,  r   c                      t          d          |          }g d}t          j        ||          D ]1\  }} |||          }|                      |||          |           2d S )NTr  r   rO   2   ,  rB  )r   r   r   rE  r   rU   r  s          r   	check_addzTestLists.check_addx  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   r3   rO   r   ri   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   rO   )r   r   r  )r   r   r   rU   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 Nri   r!   )lsts    r   innerz*TestLists.test_list_passing.<locals>.inner  s    s88SW$$r   c                 R    t          t          |                     } |          S r   rR   )rU   rb   r  s     r   outerz*TestLists.test_list_passing.<locals>.outer  s!    U1XXA588Or   ro   )ro   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   r3   r  )r   r3   rO   r  )r  r  ))r   r3   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  rO   )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'  r)  r+  r1  r5  r8  r:  r<  r?  rF  rH  rK  rQ  rT  rX  rZ  r]  r_  ra  rc  re  rg  ri  rm  rp  rr  ry  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assertRegexr  r  )r   rx  r  s      r   assert_type_errorzTestUnboxing.assert_type_error  s      y)) 	VEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	?S!122C88888 ?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   r3                 ?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  )rO   r   )r                  @)rO   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   )r3   rO   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   r2   )rO   )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   )r3   rO   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   rx  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          9 9 9    
    ! ! !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   rS   assertRefCountr  r   )
r   r   r   samplesdestsrcr  r  pyrescress
             r   check_reflectionz#TestListReflection.check_reflection;  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_simpleK  s    n-----r   c                 :    |                      t                     d S r   )r  r   r
  s    r   test_reflect_conditionalz+TestListReflection.test_reflect_conditionalN  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   r3   rO   r_   )r   r   r  r  r   r  )r   r   r   rb   s       r   test_reflect_exceptionz)TestListReflection.test_reflect_exceptionQ  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_list^  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   idr4   s     r   r6   z9TestListReflection.test_reflect_clean.<locals>.<listcomp>t  s       r!uu   r   c                 ,    g | ]}t          |          S r   r  r4   s     r   r6   z9TestListReflection.test_reflect_clean.<locals>.<listcomp>v  s    +++A"Q%%+++r   N)r   r   r   )r   r   rb   idss       r   test_reflect_cleanz%TestListReflection.test_reflect_cleanm  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  6  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  y  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  rO   ro   r  r  )r   r  arangeastyper  rS   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 )Nr7   )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 )Nr7   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   rs   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   rc   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  r9   size)r   rc   r.   arrs       r   r   z9TestListManagedElements.test_append_noret.<locals>.pyfunc  sq    C3ZZ ) )

29Q<<((((A 0 0SWWYY!ch,//Hr   Tr  r   r   r;  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 )Nro   r3   r   r   r:   r[   r  r  r9  s     r   r   z;TestListManagedElements.test_reassign_refct.<locals>.pyfunc  sO    C1XX ) )

29Q<<((((Yq\\CFJr   Tr  r  r:  r;  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 )Nro   r3   r   rD  r9  s     r   r   z6TestListManagedElements.test_get_slice.<locals>.pyfunc  sF    C1XX ) )

29Q<<((((qs8Or   Tr  r  r:  r;  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 )Nro   r3   r   r   rO   rD  r9  s     r   r   z6TestListManagedElements.test_set_slice.<locals>.pyfunc  sS    C1XX ) )

29Q<<((((1Q3xC!HJr   Tr  r  r:  r;  s        r   test_set_slicez&TestListManagedElements.test_set_slice  rF  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   r3   r:   r[   r  r  r"   rs   r9  s     r   r   z0TestListManagedElements.test_pop.<locals>.pyfunc  sq    C2YY - -

29QU++,,,,c((Q,,			 c((Q,,Jr   Tr  r  r:  r;  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   r3   rP  r9  s     r   r   z4TestListManagedElements.test_pop_loc.<locals>.pyfunc  ss    C4[[ - -

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


 c((Q,,Jr   Tr  r  r:  r;  s        r   test_pop_locz$TestListManagedElements.test_pop_loc  rR  r   c                     d } t          d          |          } |            } |            }|                     ||           d S )Nc                      g } t          d          D ],}|                     t          j        |dz                        -| dd= | S )NrO  r   rO   r7   rD  r9  s     r   r   z6TestListManagedElements.test_del_range.<locals>.pyfunc!  sO    C2YY - -

29QU++,,,,AbD	Jr   Tr  r  r:  r;  s        r   test_del_rangez&TestListManagedElements.test_del_range   rF  r   c                     d } t          d          |          } |            } |            }|                     ||           d S )Nc                  `    g } t          d          D ]}|                     dg|z             | S Nr7   r   )r:   r[   r9  s     r   r   z9TestListManagedElements.test_list_of_list.<locals>.pyfunc1  s<    C2YY $ $

A37####Jr   Tr  r@  r;  s        r   test_list_of_listz)TestListManagedElements.test_list_of_list0  s_    	 	 	 #T"""6**egg%%%%%r   N)r  r  r  r  r!  r(  r+  r/  r3  r6  r   rA  rE  rI  rL  rQ  rU  rX  r\  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>.wrapped@  s    !!!y)) 	&VBt%d%%%f%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&D
j#f&6"7"788888s   A		AAr   )ra  rb  s   ` r   expect_reflection_failurerc  ?  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   rg  r   r  )	r   r   r  rg  expect_argsr  	njit_argsr   r  s	            r   compile_and_testzTestListOfList.compile_and_testL  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   r.  r5   rc   s     r   r6   zNTestListOfList.test_returning_list_of_list.<locals>.pyfunc.<locals>.<listcomp>_  s"    222A")A,,222r   r   rG   )r   s    r   r   z:TestListOfList.test_returning_list_of_list.<locals>.pyfunc^  s     22q222AHr   rj  r'  s     r   test_returning_list_of_listz*TestListOfList.test_returning_list_of_list]  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>.pyfuncf      Q4Kr   Tr  c                 6    g | ]}t          j        |          S r   r  zerosrn  s     r   r6   z@TestListOfList.test_heterogeneous_list_error.<locals>.<listcomp>j       ---qrx{{---r   ro   c                 <    g | ]}t          j        |          d z   S r  r  onesrn  s     r   r6   z@TestListOfList.test_heterogeneous_list_error.<locals>.<listcomp>k  s$    ///rwqzz"}///r   c                 6    g | ]}t          j        |          S r   rv  rn  s     r   r6   z@TestListOfList.test_heterogeneous_list_error.<locals>.<listcomp>l  rx  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  rV  )r   r   r   l2l3l4l5r  s           r   test_heterogeneous_list_errorz,TestListOfList.test_heterogeneous_list_errord  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 )Nri   {   r   )l1r  s     r   r   z:TestListOfList.test_list_of_list_reflected.<locals>.pyfunc  s-    IIbMMMrFMM#r   Tr  r   r   r3   rO   r   ro   )r   rS   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 rs  r   r   s    r   r   z6TestListOfList.test_heterogeneous_list.<locals>.pyfunc  rt  r   c                 6    g | ]}t          j        |          S r   rv  rn  s     r   r6   z:TestListOfList.test_heterogeneous_list.<locals>.<listcomp>  rx  r   ro   c                 6    g | ]}t          j        |          S r   r{  rn  s     r   r6   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   r2  r   s    r   barz$TestListOfList.test_c01.<locals>.bar  s    5577Nr   r   r7   r  r~  )r  rw  rj  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  rw  r  r
   r  rj  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   rO   1invalid setitem with value of {} to element of {}r   r   r  r  r  r
   r  rj  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 r[  r   r  s     r   r  z$TestListOfList.test_c04.<locals>.bar  s    AAaDGHr   rO   r  r7   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   r4   s     r   r6   z8TestListOfList.test_c05.<locals>.bar.<locals>.<listcomp>  s    IIIaIIIr   r7   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   rO   )r  r  r  r  rj  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 rz  r   r4   s     r   r6   z8TestListOfList.test_c06.<locals>.bar.<locals>.<listcomp>  s    >>>1B>>>r   r7   r   )r  r  r  r  s     r   r  z$TestListOfList.test_c06.<locals>.bar  s:    Ah>>	">>>??AaDGHr   rO   invalid setitem with value)	r  r  r  r
   r  rj  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   rO   Tr  zgetitem out of range)	r  r  r  r   r  r3  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  ro   r   r   s    r   r  z$TestListOfList.test_c08.<locals>.bar  s    AaDHr   r  Tr  zsetitem out of range)r  r   r  r3  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              @r0  r   r   s    r   r  z$TestListOfList.test_c09.<locals>.bar"  s    AbEHr   r  r  )r  r
   r  rj  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>.bar-  s"    1qtJAaD!A$Hr   r  r   ro   r   ro  r  s      r   test_c10zTestListOfList.test_c10+  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>.bar6  s    TTrT7AaaaDHr   r  r  ro  r  s      r   test_c11zTestListOfList.test_c114  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>.bar>  s    "Hr   c                     g | ]}|S r   r   r4   s     r   r6   z+TestListOfList.test_c12.<locals>.<listcomp>B  s    """1Q"""r   r7   )r:   rj  r  s      r   test_c12zTestListOfList.test_c12=  sH    	 	 	 #"b		"""c1%%%%%r   N)r  r  r  rj  rp  rc  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   re  re  J  s         "& & & . . .` & & & 4 4 4   "  
 
 
$  " & & &	K 	K 	K 
E 
E 
EE E EK K K & & & & & && & & & &r   re  c                       e Zd Zd ZdS )Itemc                 "    || _         || _        d S r   manyscalar)r   r  r  s      r   __init__zItem.__init__G  s    	r   N)r  r  r  r  r   r   r   r  r  F  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  float64rn  s     r   r6   z&Container.__init__.<locals>.<listcomp>N  s3    III1bill))"*556IIIr   )r:   data)r   rU   s     r   r  zContainer.__init__M  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   rU   rc   s      r   morezContainer.moreP  sY    q 	@ 	@AIbill11"*==>????	@ 	@r   N)r  r  r  r  r  r   r   r   r  r  L  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_elementV  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_container^  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_testere  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>.pyfuncl  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>.eqp  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)r5   rU   r  s     r   r6   zITestListAndJitClasses.test_jitclass_instance_elements.<locals>.<listcomp>v  sP     " " " v29++AE221s7CCC " " "r   ro   )r  r   r:   rS   r  )
r   r   r  r   r  
expect_arggot_arg
expect_resgot_resr  s
   `        @r   test_jitclass_instance_elementsz5TestListAndJitClasses.test_jitclass_instance_elementsi  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   rT   rO   )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  U  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rb   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  r3   rO   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   )r+   s    r   r  zLTestListInitialValues.test_mutation_not_carried_single_function.<locals>.bar  s    r   c                     fd}|S )Nc                 4     |             |            d S r   r   )r+   r  ra  s    r   implz]TestListInitialValues.test_mutation_not_carried_single_function.<locals>.ol_bar.<locals>.impl  s!    BqEEECFFFFFr   r   )r+   r  r  ra  s     r   r   zOTestListInitialValues.test_mutation_not_carried_single_function.<locals>.ol_bar  s(          r   c                  P    g d}  |            |                      d           | S )Nr  r3   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  ra  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   r3   rO   r   ro   )r   r3   rO   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   r3   CrO   Fr  )	reflectedr  r   catr7   c                     | S r   r   r   s    r   r  zQTestLiteralLists.test_literal_value_passthrough.<locals>.ol_bar.<locals>.<lambda>   r  r   )r  r  r	   LiteralListr  rS   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  r3  r7   ro   r   r   rv  )otherhomogeneouslistotherheterogeneouslistrw  rb   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>.bar.  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hrc   r   r1  r   r  )r  r   r3   r.   F)r2  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	   r5  r  r  rS   LiteralStrKeyDictitemsdictr   )
r   r   rc   jkivikjvj
check_samer   s
           r   rK  z\TestLiteralLists.test_literal_value_involved_passthrough.<locals>.ol_bar.<locals>.check_sameD  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>[  r  r   )r  r  r	   rC  r  r6  r7  r  r5  DictTypeunicode_typer  r  
complex128)r   dlvinner_literal
inner_dictouter_literalrK  r   s        @r   r   zHTestLiteralLists.test_literal_value_involved_passthrough.<locals>.ol_bar1  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  rA  ro   )r@  rc   r3   )r  r                @)r   r   r.   rv  rb   r  s    r   r  zETestLiteralLists.test_literal_value_involved_passthrough.<locals>.foo]  sK    
 #Qxs!)E)EFQ"ll$ $ACFFFFFr   r  r  s   `  @r   'test_literal_value_involved_passthroughz8TestLiteralLists.test_literal_value_involved_passthrough,  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>.staticsetitemj  s    aAAaDDDr   c                      ddg} | d= d S Nr   r   r   r   r   s    r   delitemz7TestLiteralLists.test_mutation_failure.<locals>.delitemn  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>.appendr  s    aAHHRLLLLLr   c                  <    ddg} |                      ddg           d S )Nr   r   r  rU  )rk   r   s    r   rk   z6TestLiteralLists.test_mutation_failure.<locals>.extendv  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>.insertz  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 rb  r2  r   s    r   rs   z3TestLiteralLists.test_mutation_failure.<locals>.pop  s    aAEEGGGGGr   c                  6    ddg} |                                   d S rb  )r   r   s    r   r   z5TestLiteralLists.test_mutation_failure.<locals>.clear  s    aAGGIIIIIr   c                  6    ddg} |                                   d S rb  )sortr   s    r   rf  z4TestLiteralLists.test_mutation_failure.<locals>.sort  s    aAFFHHHHHr   c                  6    ddg} |                                   d S rb  )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   rZ  r]  r[   rk   r   r   rs   r   rf  r   illegalstestr  r  s                  r   test_mutation_failurez&TestLiteralLists.test_mutation_failureh  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   r3   r   rO   r   r   r   ro   r.   abc)r[   r   rb   r  r   s      r   r  z(TestLiteralLists.test_count.<locals>.foo  sE    ===AA % %$$$$Hr   r   r   py_funcr,  s     r   r  zTestLiteralLists.test_count  G    		 	 
	 	.....r   c                     t           d             }|                     |                                 |                       d S )Nc                  (    g d} t          |           S )Nro  r!   r   s    r   r  z&TestLiteralLists.test_len.<locals>.foo  s    ===Aq66Mr   rr  r,  s     r   r:  zTestLiteralLists.test_len  sG    		 	 
	 	.....r   c                     t           d             }|                     |                                 |                       d S )Nc                  d    g d} g }t          d          D ]}|                    || v            |S )Nro  )r   r   r3   r   )r   r[   rq  s      r   r  z+TestLiteralLists.test_contains.<locals>.foo  sH    ===AA#$455 ! !a    Hr   rr  r,  s     r   rg  zTestLiteralLists.test_contains  rt  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 rb  r   r   rb   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   r<  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 r\  r   r   s    r   r  z0TestLiteralLists.test_staticgetitem.<locals>.foo  s    aAQ41:r   rr  r,  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   r3   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   rh  r}  r~  s       r   r?  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   rO   r   r   r3   r   r   r{  s     r   r  z(TestLiteralLists.test_unify.<locals>.foo  s,    1uqyy!H!HQ4Kr   )ir   rr  )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   rO   )r   r   r  r   r3   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 rb  )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 r\  )r   r   s    r   r  z'TestLiteralLists.test_copy.<locals>.foo  s%    aAQ41:r   rr  r,  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  r5  )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 rb  r   rV  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  r-  r<  rW  rl  r  r:  rg  r<  r  r  r?  r  r  r  r  r  r   r   r   r)  r)    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   r)  __main__)kcollectionsr   r  rC  rA   r  ctypesr  numpyr  numbar   r   r   r   r   r  
numba.corer	   r
   numba.tests.supportr   r   numba.experimentalr   numba.core.extendingr   r   r   r   r#   r&   r(   r,   r/   r;   r>   rC   rH   rK   rP   rV   rY   r\   rd   rg   rm   rp   rt   rv   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  rc  re  objectr  r  r  r  r)  r  mainr   r   r   <module>r     s   " " " " " "          



         > > > > > > > > > > > > > >  $ $ $ $ $ $ $ $ 9 9 9 9 9 9 9 9 ' ' ' ' ' ' ) ) ) ) ) ) 	
7J''	 	 	          " " "* * *5 5 54 4 4> > >& & &5 5 5    
              
  	 	 	            
  
    
  
          # # #  
  
    
              
+ + +            : : :          
t3 t3 t3 t3 t3 t3 t3 t3n@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   