U
    iâËd¶Ê  ã                   @   s¸  d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZ	d dl
mZmZ d dlmZmZmZmZmZ d dlZd dlmZ d dlmZmZmZ d dlmZmZmZ d dlmZ d d	lm Z  eƒ Z!d
e!_"eƒ Z#d
e#_$eddƒZ%dd„ Z&dd„ Z'dd„ Z(dd„ Z)dd„ Z*dd„ Z+dd„ Z,dd„ Z-dd„ Z.dd „ Z/d!d"„ Z0d#d$„ Z1d%d&„ Z2d'd(„ Z3d)d*„ Z4d+d,„ Z5d-d.„ Z6d/d0„ Z7d1d2„ Z8d3d4„ Z9d5d6„ Z:d7d8„ Z;d9d:„ Z<d;d<„ Z=d=d>„ Z>d?d@„ Z?dAdB„ Z@dCdD„ ZAdEdF„ ZBdGdH„ ZCdIdJ„ ZDdKdL„ ZEdMdN„ ZFdOdP„ ZGdQdR„ ZHdSdT„ ZIdUdV„ ZJdWdX„ ZKdYdZ„ ZLd[d\„ ZMd]d^„ ZNd_d`„ ZOdadb„ ZPdcdd„ ZQdedf„ ZRdgdh„ ZSdidj„ ZTdkdl„ ZUdmdn„ ZVdodp„ ZWdqdr„ ZXdsdt„ ZYdudv„ ZZdwdx„ Z[dydz„ Z\d{d|„ Z]d}d~„ Z^dd€„ Z_d�d‚„ Z`dƒd„„ Zad…d†„ Zbd‡dˆ„ Zcd‰dŠ„ Zdd‹dŒ„ ZeG d�dŽ„ dŽeeƒZfG d�d�„ d�eeƒZgG d‘d’„ d’eeƒZhG d“d”„ d”eeƒZiG d•d–„ d–eiƒZjd—d˜„ ZkG d™dš„ dšeiƒZlG d›dœ„ dœemƒZnG d�dž„ džemƒZoG dŸd „ d eiƒZpG d¡d¢„ d¢eeƒZqG d£d¤„ d¤eeƒZresd¥k�r´e t¡  dS )¦é    )Ú
namedtupleN)Úcompile_isolatedÚFlags)ÚjitÚtypeofÚnjitÚliteral_unrollÚ	literally)Útesting)ÚtypesÚutilsÚerrors)ÚTestCaseÚMemoryLeakMixinÚtag)Újitclass)ÚoverloadTÚPoint©ÚaÚbc                 C   s   d S ©N© ©Úxr   r   úO/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numba/tests/test_lists.pyÚnoop   s    r   c                 C   s   d}| D ]}||7 }q|S )z"
    Expect a list of numbers
    r   r   ©r   ÚresÚvr   r   r   Úunbox_usecase   s    
r    c                 C   s   d}| D ]}|t |ƒ7 }q|S )z!
    Expect a list of tuples
    r   ©Úlenr   r   r   r   Úunbox_usecase2(   s    r#   c                 C   s"   | \}}|}|D ]}||7 }q|S )z3
    Expect a (number, list of numbers) tuple.
    r   ©r   r   r   r   r   r   r   r   Úunbox_usecase31   s
    
r%   c                 C   s&   | \}}|}|D ]}|t |ƒ7 }q|S )z2
    Expect a (number, list of tuples) tuple.
    r!   r$   r   r   r   Úunbox_usecase4;   s
    r&   c                 C   s
   | ||gS r   r   )r   ÚyÚzr   r   r   Úcreate_listF   s    r)   c                 C   s   | ||g|||ggS r   r   )r   r'   r(   r   r   Úcr   r   r   Úcreate_nested_listI   s    r+   c                   C   s   t dd„ tdƒD ƒƒS )Nc                 S   s   g | ]}|d  ‘qS ©é   r   ©Ú.0r   r   r   r   Ú
<listcomp>M   s     z'list_comprehension1.<locals>.<listcomp>é
   ©ÚsumÚranger   r   r   r   Úlist_comprehension1L   s    r5   c                   C   s   t dd„ tdƒD ƒƒS )Nc                 S   s   g | ]}|d  dkr|‘qS )r-   r   r   r.   r   r   r   r0   P   s      z'list_comprehension2.<locals>.<listcomp>r1   r2   r   r   r   r   Úlist_comprehension2O   s    r6   c                   C   s   t dd„ tdƒD ƒƒS )Nc                 S   s   g | ]}t  |d ¡‘qS r,   )ÚmathÚpowr.   r   r   r   r0   S   s     z'list_comprehension3.<locals>.<listcomp>r1   r2   r   r   r   r   Úlist_comprehension3R   s    r9   c                   C   s   t dd„ tdƒD ƒƒS )Nc                 S   s"   g | ]}t d ƒD ]}|| ‘qqS ©r1   ©r4   )r/   r   r'   r   r   r   r0   V   s     
  z'list_comprehension4.<locals>.<listcomp>r1   r2   r   r   r   r   Úlist_comprehension4U   s    r<   c                   C   s   dd„ t dƒD ƒS )Nc                 S   s   g | ]}|d  ‘qS r,   r   r.   r   r   r   r0   Y   s     z'list_comprehension5.<locals>.<listcomp>r1   r;   r   r   r   r   Úlist_comprehension5X   s    r=   c                   C   s   dd„ t dƒD ƒS )Nc                 S   s   g | ]}d d„ t |ƒD ƒ‘qS )c                 S   s   g | ]}|‘qS r   r   r.   r   r   r   r0   \   s     z2list_comprehension6.<locals>.<listcomp>.<listcomp>r;   )r/   r'   r   r   r   r0   \   s     z'list_comprehension6.<locals>.<listcomp>é   r;   r   r   r   r   Úlist_comprehension6[   s    r?   c                 C   s   t t| ƒƒS r   ©Úlistr4   ©Únr   r   r   Úlist_constructor_   s    rD   c                   C   s   t ƒ S r   ©rA   r   r   r   r   Úlist_constructor_emptyb   s    rF   c                 C   s   t ƒ }| | ¡S r   )rA   Úappend)rC   r'   r   r   r   Ú#list_constructor_empty_but_typeableg   s    rH   c                 C   s*   g }|  d¡ t| ƒD ]}|  |¡ q|S ©Né*   ©rG   r4   ©rC   ÚlÚir   r   r   Úlist_appendm   s
    
rO   c                 C   s*   g }|  d¡ t| ƒD ]}|  |¡ q|S )Nç      E@rK   rL   r   r   r   Úlist_append_heterogeneoust   s
    
rQ   c                 C   s:   g }|  t| ƒ¡ |  |d d… ¡ |  t| ddƒ¡ |S )Néÿÿÿÿr   ©Úextendr4   ©rC   rM   r   r   r   Úlist_extend{   s
    rV   c                 C   s>   g }|  t| ƒ¡ |  |d d… ¡ |  d¡ |  dg¡ |S )NrR   )é   rJ   g     À^@rS   rU   r   r   r   Úlist_extend_heterogeneousƒ   s    
rX   c                 C   s6   t t| ƒƒ}d}t|ƒdkr2|t|ƒ| ¡  7 }q|S ©Nr   )rA   r4   r"   Úpop)rC   rM   r   r   r   r   Ú	list_pop0Œ   s
    r[   c                 C   s   t t| ƒƒ}| |¡}||fS r   )rA   r4   rZ   )rC   rN   rM   r   r   r   r   Ú	list_pop1“   s    
r\   c                 C   s   t t| ƒƒ}t|ƒS r   ©rA   r4   r"   rU   r   r   r   Úlist_len˜   s    r^   c                 C   s\   t t| ƒƒ}d}tt|ƒƒD ]}||||  7 }qtt|ƒ dƒD ]}||||  8 }qB|S rY   r]   ©rC   rM   r   rN   r   r   r   Úlist_getitemœ   s    r`   c                 C   sz   t t| ƒƒ}d}tt|ƒƒD ]}|||  ||< qtt|ƒ dƒD ]}|||  ||< qBtt|ƒƒD ]}||| 7 }qd|S rY   r]   r_   r   r   r   Úlist_setitem§   s    ra   c                 C   s   t t| ƒƒ}|||… S r   r@   ©rC   ÚstartÚstoprM   r   r   r   Úlist_getslice2´   s    re   c                 C   s   t t| ƒƒ}||||… S r   r@   )rC   rc   rd   ÚsteprM   r   r   r   Úlist_getslice3¸   s    rg   c                 C   s.   t t| ƒƒ}t tdd| ƒƒ}||||…< |S ©Néd   r@   )rC   Zn_sourcerc   rd   rM   r   r   r   r   Úlist_setslice2¼   s    rj   c                 C   sN   t t| ƒƒ}||||… }tt|ƒƒD ]}||  d7  < q&|||||…< |S rh   r]   )rC   rc   rd   rf   rM   r   rN   r   r   r   Úlist_setslice3Ã   s    rk   c                 C   s,   t t| ƒƒ}t tdd| ƒƒ||||…< |S rh   r@   )rC   Ún_srcrc   rd   rf   rM   r   r   r   Úlist_setslice3_arbitraryË   s    rm   c                 C   s   t t| ƒƒ}|d d …= |S r   r@   rU   r   r   r   Úlist_delslice0Ð   s    
rn   c                 C   s$   t t| ƒƒ}||d …= |d |…= |S r   r@   rb   r   r   r   Úlist_delslice1Õ   s    

ro   c                 C   s   t t| ƒƒ}|||…= |S r   r@   rb   r   r   r   Úlist_delslice2Û   s    
rp   c                 C   s   t t| ƒƒ}| ¡  |S r   )rA   r4   ÚclearrU   r   r   r   Ú
list_clearà   s    rr   c                 C   s&   t t| ƒƒ}| ¡ }| d¡ ||fS rI   )rA   r4   ÚcopyrG   )rC   rM   Úllr   r   r   Ú	list_copyå   s    
ru   c                 C   s2   t t| ƒƒ}d}t|ƒD ]\}}||| 7 }q|S rY   )rA   r4   Ú	enumerate)rC   rM   r   rN   r   r   r   r   Úlist_iterationë   s
    rw   c              	   C   sH   t t| ƒƒ}d|kd|k| d |k| |kd|kd|k| d |k| |kfS ©Nr   é   r@   rU   r   r   r   Úlist_containsò   s      
 ÿrz   c                 C   s   t t| ddƒƒ}| |¡S ©Nr   rR   ©rA   r4   Úindex©rC   r   rM   r   r   r   Úlist_index1ø   s    r   c                 C   s   t t| ddƒƒ}| ||¡S r{   r|   )rC   r   rc   rM   r   r   r   Úlist_index2ü   s    r€   c                 C   s   t t| ddƒƒ}| |||¡S r{   r|   )rC   r   rc   rd   rM   r   r   r   Úlist_index3   s    r�   c                 C   s"   t t| d ddƒƒ}| |¡ |S )Nry   rR   )rA   r4   Úremover~   r   r   r   Úlist_remove  s    
rƒ   c                 C   s   t td| ƒƒ}| ||¡ |S rY   )rA   r4   Úinsert)rC   Úposr   rM   r   r   r   Úlist_insert	  s    r†   c                 C   s*   g }t | ƒD ]}| |d@ ¡ q| |¡S )Nr>   )r4   rG   Úcount)rC   r   rM   r   r   r   r   Ú
list_count  s    rˆ   c                 C   s   t t| ƒƒ}| ¡  |S r   )rA   r4   ÚreverserU   r   r   r   Úlist_reverse  s    rŠ   c                 C   s<   t td| ƒƒ}t tdd| ƒƒ}|| }| d¡ |||fS )Nr   ri   rJ   )rA   r4   rG   )ÚmrC   r   r   r   r   r   r   Úlist_add  s
    
rŒ   c                  C   s<   dg} dg}| | }||  }|   d¡ |  d¡ | |||fS )Nry   ç       @r>   ç      @©rG   )r   r   r*   Údr   r   r   Úlist_add_heterogeneous   s    

r‘   c                 C   s0   t td| ƒƒ}t tdd| ƒƒ}||7 }||fS )Nr   ri   r@   )r‹   rC   r   r   r   r   r   Úlist_add_inplace*  s    r’   c                  C   s$   dg} dg}| |7 } || 7 }| |fS )Nry   r�   r   r   r   r   r   Úlist_add_inplace_heterogeneous0  s
    r“   c                 C   s   t t| ƒƒ}|| S r   r@   ©rC   r   r   r   r   r   Úlist_mul7  s    r•   c                 C   s   t t| ƒƒ}|| S r   r@   r”   r   r   r   Ú	list_mul2;  s    r–   c                 C   s   t t| ƒƒ}||9 }|S r   r@   r”   r   r   r   Úlist_mul_inplace?  s    r—   c                 C   s    t t| ƒƒ}t|ƒ|rdndfS )NTF)rA   r4   Úbool)rC   r   r   r   r   Ú	list_boolD  s    r™   c                 C   s   t | ƒt |ƒkS r   rE   r   r   r   r   Ú
eq_usecaseH  s    rš   c                 C   s   t | ƒt |ƒkS r   rE   r   r   r   r   Ú
ne_usecaseK  s    r›   c                 C   s   t | ƒt |ƒkS r   rE   r   r   r   r   Ú
gt_usecaseN  s    rœ   c                 C   s   t | ƒt |ƒkS r   rE   r   r   r   r   Ú
ge_usecaseQ  s    r�   c                 C   s   t | ƒt |ƒk S r   rE   r   r   r   r   Ú
lt_usecaseT  s    rž   c                 C   s   t | ƒt |ƒkS r   rE   r   r   r   r   Ú
le_usecaseW  s    rŸ   c                 C   s8   t t| ƒƒ}|}|d d … }||k||k	||k||k	fS r   r@   )rC   r   r   r*   r   r   r   Úidentity_usecaseZ  s    r    c                  C   s,   dg} d| d< d}| D ]}||A }q| |fS )NFTr   r   )rM   r   r   r   r   r   Úbool_list_usecase`  s    
r¡   c                 C   s,   |   ¡ }|   ¡ }d| d< |  |¡ | ||fS )NrP   r   ©rZ   rT   ©rM   rt   r   r'   r   r   r   Úreflect_simplei  s
    
r¤   c                 C   s@   |d rddddg} |   ¡ }|   ¡ }d| d< |  |¡ | ||fS )Nr   g      &@g      6@g     €@@g      F@rP   r¢   r£   r   r   r   Úreflect_conditionalp  s    
r¥   c                 C   s   |   d¡ t‚d S rI   )rG   ÚZeroDivisionError©rM   r   r   r   Úreflect_exceptionz  s    
r¨   c                 C   s   |   | ¡ ¡ | |kS r   )rG   rZ   )rM   rt   r   r   r   Úreflect_dual~  s    r©   c                   @   s  e Zd Zdd„ Zdd„ Zd�dd„Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Zd:d;„ Zd<d=„ Z d>d?„ Z!d@dA„ Z"dBdC„ Z#dDdE„ Z$dFdG„ Z%dHdI„ Z&dJdK„ Z'dLdM„ Z(dNdO„ Z)dPdQ„ Z*dRdS„ Z+dTdU„ Z,dVdW„ Z-dXdY„ Z.dZd[„ Z/d\d]„ Z0d^d_„ Z1d`da„ Z2dbdc„ Z3ddde„ Z4e5 6e7j8dfkdg¡dhdi„ ƒZ9djdk„ Z:dldm„ Z;dndo„ Z<dpdq„ Z=drds„ Z>dtdu„ Z?dvdw„ Z@dxdy„ ZAdzd{„ ZBd|d}„ ZCd~d„ ZDd€S )‚Ú	TestListsc                 C   s@   t }t|tjtjtjfƒ}|j}|  |dddƒ|dddƒ¡ d S ©Nry   r-   r>   )r)   r   r   Úint32Úentry_pointÚassertEqual©ÚselfÚpyfuncÚcrÚcfuncr   r   r   Útest_create_list…  s    zTestLists.test_create_listc              
   C   sX   t }t|tjtjtjtjtjtjfƒ}|j}|  |ddddddƒ|ddddddƒ¡ d S ©Nry   r-   r>   é   rW   é   )r+   r   r   r¬   r­   r®   r¯   r   r   r   Útest_create_nested_list‹  s      ÿz!TestLists.test_create_nested_listTc                 C   s>   t dd�|ƒ}dD ]&}|r | jn| j}|||ƒ||ƒƒ qd S )NT©Znopython)r   r>   é   éF   i�  )r   ÚassertPreciseEqualr®   )r°   r±   Úpreciser³   rC   Úeqr   r   r   Úcheck_unary_with_size’  s    zTestLists.check_unary_with_sizec                 C   s   |   t¡ d S r   )r¿   rD   ©r°   r   r   r   Útest_constructor™  s    zTestLists.test_constructorc              	   C   sf   |   ¡  tdd�tƒ}|  tj¡�}|ƒ  W 5 Q R X 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   rF   ÚassertRaisesr   ÚTypingErrorÚstrÚ	exceptionÚassertIn)r°   r³   ÚraisesÚerrmsgr   r   r   Útest_constructor_emptyœ  s    
z TestLists.test_constructor_emptyc                 C   s`   t  d¡dddgddgt  dg¡g}t}|D ].}tdd	�|ƒ}||ƒ}||ƒ}|  ||¡ q,d S )
Nry   g      $@y      ð?      @é   g      1@g      ,@r1   Tr¹   )Únpr¬   ÚarrayrH   r   r¼   )r°   Úargsr±   Úargr³   ÚexpectedÚgotr   r   r   Ú#test_constructor_empty_but_typeable§  s    $z-TestLists.test_constructor_empty_but_typeablec                 C   s   |   t¡ d S r   )r¿   rO   rÀ   r   r   r   Útest_append°  s    zTestLists.test_appendc                 C   s   | j tdd� d S ©NF)r½   )r¿   rQ   rÀ   r   r   r   Útest_append_heterogeneous³  s    z#TestLists.test_append_heterogeneousc                 C   s   |   t¡ d S r   )r¿   rV   rÀ   r   r   r   Útest_extend¶  s    zTestLists.test_extendc                 C   s   | j tdd� d S rÔ   )r¿   rX   rÀ   r   r   r   Útest_extend_heterogeneous¹  s    z#TestLists.test_extend_heterogeneousc                 C   s   |   t¡ d S r   )r¿   r[   rÀ   r   r   r   Ú	test_pop0¼  s    zTestLists.test_pop0c              
   C   sj   t }tdd�|ƒ}dD ]N}dd|d |d dd| d	 | d fD ] }|||ƒ}|  |||ƒ|¡ qBqd S )
NTr¹   ©rW   é(   r   ry   r-   rR   éþÿÿÿr>   )r\   r   r¼   )r°   r±   r³   rC   rN   rÐ   r   r   r   Ú	test_pop1¿  s    ,
zTestLists.test_pop1c              	   C   s~   |   ¡  tdd�tƒ}|  t¡�}|ddƒ W 5 Q R X |  t|jƒd¡ |  t¡�}|ddƒ W 5 Q R X |  t|jƒd¡ d S )NTr¹   r   rW   zpop from empty listry   zpop index out of range)rÂ   r   r\   rÃ   Ú
IndexErrorr®   rÅ   rÆ   )r°   r³   Úcmr   r   r   Útest_pop_errorsÇ  s    zTestLists.test_pop_errorsc                 C   sx   t }tdd�|ƒ}dD ]\}dd|d |d |d dd| d	 | d g	}|D ]$}|||d
ƒ}|  |||d
ƒ|¡ qLqd S )NTr¹   rÙ   r   ry   r-   rR   rÛ   r>   rJ   )r†   r   r¼   )r°   r±   r³   rC   ÚindicesrN   rÐ   r   r   r   Útest_insertÒ  s    .zTestLists.test_insertc                 C   s   |   t¡ d S r   )r¿   r^   rÀ   r   r   r   Útest_lenÛ  s    zTestLists.test_lenc                 C   s   |   t¡ d S r   )r¿   r`   rÀ   r   r   r   Útest_getitemÞ  s    zTestLists.test_getitemc                 C   s   |   t¡ d S r   )r¿   ra   rÀ   r   r   r   Útest_setitemá  s    zTestLists.test_setitemc           	   	   C   s€   t dd�|ƒ}ddg}|D ]`}dd|d dd	| d
 | d | g}t ||¡D ](\}}||||ƒ}|  ||||ƒ|¡ qPqd S ©NTr¹   rW   rÚ   r   ry   r-   rR   rÛ   r>   ©r   Ú	itertoolsÚproductr¼   )	r°   r±   r³   ÚsizesrC   rà   rc   rd   rÐ   r   r   r   Úcheck_slicing2ä  s    &zTestLists.check_slicing2c                 C   s   |   t¡ d S r   )rê   re   rÀ   r   r   r   Útest_getslice2í  s    zTestLists.test_getslice2c           
   	   C   s”   t }tdd�|ƒ}ddg}t ||¡D ]h\}}dd|d dd	| d
 | d | g}t ||¡D ],\}}|||||ƒ}	|  |||||ƒ|	¡ q`q&d S rå   )rj   r   rç   rè   r¼   )
r°   r±   r³   ré   rC   rl   rà   rc   rd   rÐ   r   r   r   Útest_setslice2ð  s    &zTestLists.test_setslice2c           
   	   C   s’   t }tdd�|ƒ}dD ]v}dd|d dd| d	 | d | g}d
ddddg}t |||¡D ].\}}}|||||ƒ}	|  |||||ƒ|	¡ q\qd S ©NTr¹   r:   r   ry   r-   rR   rÛ   r>   r¶   éýÿÿÿ)rg   r   rç   rè   r¼   ©
r°   r±   r³   rC   rà   Zstepsrc   rd   rf   rÐ   r   r   r   Útest_getslice3ú  s    &zTestLists.test_getslice3c           
   	   C   s’   t }tdd�|ƒ}dD ]v}dd|d dd| d	 | d | g}d
ddddg}t |||¡D ].\}}}|||||ƒ}	|  |||||ƒ|	¡ q\qd S rí   )rk   r   rç   rè   r¼   rï   r   r   r   Útest_setslice3  s    &zTestLists.test_setslice3c              	   C   sf   |   ¡  t}tdd�|ƒ}|dddddƒ |  t¡�}|dddd	dƒ W 5 Q R X |  d
t|jƒ¡ d S )NTr¹   rW   r1   r   r-   ry   ri   r>   zcannot resize)rÂ   rm   r   rÃ   Ú
ValueErrorrÇ   rÅ   rÆ   ©r°   r±   r³   rÞ   r   r   r   Útest_setslice3_resize  s    zTestLists.test_setslice3_resizec                 C   s   |   t¡ d S r   )r¿   rn   rÀ   r   r   r   Útest_delslice0  s    zTestLists.test_delslice0c                 C   s   |   t¡ d S r   )rê   ro   rÀ   r   r   r   Útest_delslice1  s    zTestLists.test_delslice1c                 C   s   |   t¡ d S r   )rê   rp   rÀ   r   r   r   Útest_delslice2   s    zTestLists.test_delslice2c              	   C   sT   |   ¡  t}tdd�|ƒ}|  t¡�}|ddddƒ W 5 Q R X |  t|jƒd¡ d S )NTr¹   r1   ry   r-   r   zslice step cannot be zero)rÂ   rg   r   rÃ   rò   r®   rÅ   rÆ   ró   r   r   r   Útest_invalid_slice#  s    zTestLists.test_invalid_slicec                 C   s   |   t¡ d S r   )r¿   rw   rÀ   r   r   r   Útest_iteration+  s    zTestLists.test_iterationc                 C   s   |   t¡ d S r   )r¿   rŠ   rÀ   r   r   r   Útest_reverse.  s    zTestLists.test_reversec                 C   s   |   t¡ d S r   )r¿   rz   rÀ   r   r   r   Útest_contains1  s    zTestLists.test_containsc                 C   sT   z||Ž }W n2 t k
r>   |  t ¡� ||Ž  W 5 Q R X Y nX |  ||Ž |¡ d S r   )rò   rÃ   r¼   )r°   r±   r³   rÎ   rÐ   r   r   r   Úcheck_index_result4  s    zTestLists.check_index_resultc                 C   s:   |   ¡  t}tdd�|ƒ}dD ]}|  ||d|f¡ qd S )NTr¹   ©r   ry   rW   r1   iÿàõrº   )rÂ   r   r   rü   ©r°   r±   r³   r   r   r   r   Útest_index1=  s
    zTestLists.test_index1c                 C   sx   |   ¡  t}tdd�|ƒ}d}dD ]P}dd|d |d |d dd	| d
 | d g	}|D ]}|  ||d||f¡ qXq"d S ©NTr¹   rº   rý   r   ry   r-   rR   rÛ   r>   )rÂ   r€   r   rü   )r°   r±   r³   rC   r   rà   rc   r   r   r   Útest_index2D  s    .zTestLists.test_index2c                 C   s†   |   ¡  t}tdd�|ƒ}d}dD ]^}dd|d |d |d dd	| d
 | d g	}t ||¡D ]\}}|  ||d|||f¡ q`q"d S r   )rÂ   r�   r   rç   rè   rü   )r°   r±   r³   rC   r   rà   rc   rd   r   r   r   Útest_index3N  s    .zTestLists.test_index3c              	   C   sB   t }tdd�|ƒ}d}|  tj|¡� |ddddƒ W 5 Q R X d S )NTr¹   zarg "start" must be an Integer.r1   r   ÚinvalidrW   ©r�   r   ÚassertRaisesRegexr   rÄ   ©r°   r±   r³   Úmsgr   r   r   Útest_index_exception1X  s
    zTestLists.test_index_exception1c              	   C   sB   t }tdd�|ƒ}d}|  tj|¡� |ddddƒ W 5 Q R X d S )NTr¹   zarg "stop" must be an Integer.r1   r   r  r  r  r   r   r   Útest_index_exception2_  s
    zTestLists.test_index_exception2c                 C   s@   t }tdd�|ƒ}d}dD ] }|||ƒ}|  |||ƒ|¡ qd S )NTr¹   rº   )r   ry   rW   é   )rƒ   r   r¼   ©r°   r±   r³   rC   r   rÐ   r   r   r   Útest_removef  s    
zTestLists.test_removec              	   C   sP   |   ¡  t}tdd�|ƒ}|  t¡�}|ddƒ W 5 Q R X |  t|jƒd¡ d S )NTr¹   r1   rJ   zlist.remove(x): x not in list)rÂ   rƒ   r   rÃ   rò   r®   rÅ   rÆ   ró   r   r   r   Útest_remove_errorn  s    zTestLists.test_remove_errorc                 C   s<   t }tdd�|ƒ}tdƒD ]}|  |d|ƒ|d|ƒ¡ qd S )NTr¹   rW   é   )rˆ   r   r4   r¼   rþ   r   r   r   Ú
test_countv  s    zTestLists.test_countc                 C   s   |   t¡ d S r   )r¿   rr   rÀ   r   r   r   Ú
test_clear|  s    zTestLists.test_clearc                 C   s   |   t¡ d S r   )r¿   ru   rÀ   r   r   r   Ú	test_copy  s    zTestLists.test_copyc                 C   sP   t dd�|ƒ}ddddg}t ||¡D ]$\}}|||ƒ}|  |||ƒ|¡ q&d S )NTr¹   r   r>   é2   é,  ræ   )r°   r±   r³   ré   r‹   rC   rÐ   r   r   r   Ú	check_add‚  s
    
zTestLists.check_addc                 C   s   |   t¡ d S r   )r  rŒ   rÀ   r   r   r   Útest_add‰  s    zTestLists.test_addc                 C   s*   t }tdd�|ƒ}|ƒ }|  |ƒ |¡ d S ©NTr¹   )r‘   r   r®   ©r°   r±   r³   rÐ   r   r   r   Útest_add_heterogeneousŒ  s    z TestLists.test_add_heterogeneousc                 C   s   |   t¡ d S r   )r  r’   rÀ   r   r   r   Útest_add_inplace’  s    zTestLists.test_add_inplacec                 C   s*   t }tdd�|ƒ}|ƒ }|  |ƒ |¡ d S r  )r“   r   r®   r  r   r   r   Útest_add_inplace_heterogeneous•  s    z(TestLists.test_add_inplace_heterogeneousc                 C   sB   t dd�|ƒ}dD ]*}dD ] }|||ƒ}|  |||ƒ|¡ qqd S )NTr¹   )r   r>   r  r  )ry   r-   r>   r   rR   iÖÿÿÿ©r   r¼   r  r   r   r   Ú	check_mul›  s
    
zTestLists.check_mulc                 C   s   |   t¡ d S r   )r  r•   rÀ   r   r   r   Útest_mul¢  s    zTestLists.test_mulc                 C   s   |   t¡ d S r   )r  r–   rÀ   r   r   r   Ú	test_mul2¥  s    zTestLists.test_mul2c                 C   s   |   t¡ d S r   )r  r—   rÀ   r   r   r   Útest_mul_inplace¨  s    zTestLists.test_mul_inplacel        z,need a 64-bit system to test for MemoryErrorc              	   C   s„   |   ¡  t}tdd�|ƒ}|  t¡� |ddƒ W 5 Q R X tj d¡r`t 	d¡}| 
d d¡¡ |  t¡� |dd	ƒ W 5 Q R X d S )
NTr¹   ry   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ÚCDLLZprintfÚencode)r°   r±   r³   Úlibcr   r   r   Útest_mul_error«  s    
þzTestLists.test_mul_errorc                 C   s8   t }tdd�|ƒ}dD ]}||ƒ}|  ||ƒ|¡ qd S )NTr¹   )r   ry   r>   )r™   r   r¼   )r°   r±   r³   rC   rÐ   r   r   r   Ú	test_bool½  s
    zTestLists.test_boolc                    s<   t dd�dd„ ƒ‰ t dd�‡ fdd„ƒ}|  |dƒd¡ d S )	NTr¹   c                 S   s   t | ƒ| d fS ©NrR   r!   )Úlstr   r   r   ÚinnerÆ  s    z*TestLists.test_list_passing.<locals>.innerc                    s   t t| ƒƒ}ˆ |ƒS r   r@   rU   ©r-  r   r   ÚouterÊ  s    z*TestLists.test_list_passing.<locals>.outerrW   )rW   r¶   r  )r°   r/  r   r.  r   Útest_list_passingÄ  s
    
zTestLists.test_list_passingc                    sR   ‡ ‡‡fdd„}t dd�ˆƒ‰ |dƒ |dƒ |dƒ |dƒ |d	ƒ |d
ƒ d S )Nc                    s    ˆ  ˆ | Ž ˆ| Ž d| f ¡ d S )Nzmismatch for arguments %s)ZassertIs©rÎ   ©r³   r±   r°   r   r   r¾   Ò  s    ÿz#TestLists._test_compare.<locals>.eqTr¹   )©ry   r-   r3  )©ry   r-   r>   r3  )r3  r4  ))ry   r-   r¶   r4  ))ç      ð?r�   ç      @r4  ))r5  r�   g      @r4  ©r   )r°   r±   r¾   r   r2  r   Ú_test_compareÑ  s    zTestLists._test_comparec                 C   s   |   t¡ d S r   )r8  rš   rÀ   r   r   r   Útest_eqÞ  s    zTestLists.test_eqc                 C   s   |   t¡ d S r   )r8  r›   rÀ   r   r   r   Útest_neá  s    zTestLists.test_nec                 C   s   |   t¡ d S r   )r8  rŸ   rÀ   r   r   r   Útest_leä  s    zTestLists.test_lec                 C   s   |   t¡ d S r   )r8  rž   rÀ   r   r   r   Útest_ltç  s    zTestLists.test_ltc                 C   s   |   t¡ d S r   )r8  r�   rÀ   r   r   r   Útest_geê  s    zTestLists.test_gec                 C   s   |   t¡ d S r   )r8  rœ   rÀ   r   r   r   Útest_gtí  s    zTestLists.test_gtc                 C   s*   t }tdd�|ƒ}|  |dƒ|dƒ¡ d S )NTr¹   r>   )r    r   r¼   ©r°   r±   r³   r   r   r   Útest_identityð  s    zTestLists.test_identityc                 C   s&   t }tdd�|ƒ}|  |ƒ |ƒ ¡ d S r  )r¡   r   r¼   r?  r   r   r   Útest_bool_listõ  s    zTestLists.test_bool_listN)T)EÚ__name__Ú
__module__Ú__qualname__r´   r¸   r¿   rÁ   rÊ   rÒ   rÓ   rÕ   rÖ   r×   rØ   rÜ   rß   rá   râ   rã   rä   rê   rë   rì   rð   rñ   rô   rõ   rö   r÷   rø   rù   rú   rû   rü   rÿ   r  r  r  r	  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ÚunittestZ
skipUnlessr"  Úmaxsizer)  r*  r0  r8  r9  r:  r;  r<  r=  r>  r@  rA  r   r   r   r   rª   ƒ  s‚   
			


	

ÿ
rª   c                   @   sN   e Zd ZdZejdd„ ƒZdd„ Zdd„ Zdd	„ Z	d
d„ Z
dd„ Zdd„ ZdS )ÚTestUnboxingz@
    Test unboxing of Python lists into native Numba lists.
    c              	   c   s:   |   t¡�}d V  W 5 Q R X |d k	r6|  t|jƒ|¡ d S r   )rÃ   Ú	TypeErrorZassertRegexpMatchesrÅ   rÆ   )r°   r  rÈ   r   r   r   Úassert_type_error  s    zTestUnboxing.assert_type_errorc                    s"   t dd�ˆƒ‰ ‡ ‡‡fdd„}|S )NTr¹   c                    s    ˆ| ƒ}ˆ | ƒ}ˆ  ||¡ d S r   )r¼   )rÏ   rÐ   rÑ   r2  r   r   Úcheck
  s    z'TestUnboxing.check_unary.<locals>.checkr7  )r°   r±   rJ  r   r2  r   Úcheck_unary  s    zTestUnboxing.check_unaryc                 C   s&   |   t¡}|ddgƒ |ddgƒ d S )Nry   r-   ù              ð?y              @)rK  r    ©r°   rJ  r   r   r   Útest_numbers  s    
zTestUnboxing.test_numbersc                 C   s4   |   t¡}|ddgƒ |ddgƒ |dddgƒ d S )Nr3  )r>   r¶   )ry   ù               @)r>   y              @r   )rK  r#   rM  r   r   r   Útest_tuples  s    
zTestUnboxing.test_tuplesc                 C   s    |   t¡}|ddddgfƒ d S ©Nry   r-   r>   r¶   )rK  r%   rM  r   r   r   Útest_list_inside_tuple  s    
z#TestUnboxing.test_list_inside_tuplec                 C   s   |   t¡}|dddgfƒ d S )Nry   r,   )r>   )rK  r&   rM  r   r   r   Ú test_list_of_tuples_inside_tuple  s    
z-TestUnboxing.test_list_of_tuples_inside_tuplec              	   C   s  d}t }tdd�|ƒ}ddg}|  |¡� ||ƒ W 5 Q R X |  |ddg¡ |  |¡� |ddgƒ W 5 Q R X |  |¡� |dddgfƒ W 5 Q R X |  |¡� |tdddgƒƒ W 5 Q R X ddg}|  t¡�}||ƒ W 5 Q R X d	}|  t|jƒ| 	t
j¡¡ d S )
Nzcan't unbox heterogeneous listTr¹   ry   g      @rO  ©ry   )r-   r>   zFcan't unbox heterogeneous list: UniTuple({0} x 1) != UniTuple({0} x 2))r   r   rI  r®   r   rÃ   rH  rÅ   rÆ   Úformatr   Úintp)r°   r  r±   r³   r,  rÈ   r   r   r   Útest_errors#  s$    zTestUnboxing.test_errorsN)rB  rC  rD  Ú__doc__Ú
contextlibÚcontextmanagerrI  rK  rN  rP  rR  rS  rW  r   r   r   r   rG  ü  s   
rG  c                   @   s@   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dS )ÚTestListReflectionzG
    Test reflection of native Numba lists on Python list objects.
    c           
   
   C   sÀ   t dd�|ƒ}ddddgdgfddddgdd	d
ddgfg}|D ]|\}}t|ƒ}t|ƒ}|||ƒ}|  ||¡�H |||ƒ}	|  |	|¡ |  ||¡ |  |d |k|	d |k¡ ~~	W 5 Q R X q>d S )NTr¹   r5  r�   r6  rŽ   ç        g      @g      @g      @g       @g      "@r   )r   rA   ÚassertRefCountr¼   r®   )
r°   r±   r³   ZsamplesÚdestÚsrcrÐ   rÑ   ZpyresZcresr   r   r   Úcheck_reflectionE  s    ÿ

z#TestListReflection.check_reflectionc                 C   s   |   t¡ d S r   )r`  r¤   rÀ   r   r   r   Útest_reflect_simpleU  s    z&TestListReflection.test_reflect_simplec                 C   s   |   t¡ d S r   )r`  r¥   rÀ   r   r   r   Útest_reflect_conditionalX  s    z+TestListReflection.test_reflect_conditionalc              
   C   sh   t }tdd�|ƒ}dddg}|  |¡�8 |  t¡� ||ƒ W 5 Q R X |  |ddddg¡ W 5 Q R X dS )ze
        When the function exits with an exception, lists should still be
        reflected.
        Tr¹   ry   r-   r>   rJ   N)r¨   r   r]  rÃ   r¦   r¼   )r°   r±   r³   rM   r   r   r   Útest_reflect_exception[  s    
z)TestListReflection.test_reflect_exceptionc                 C   sd   t }tdd�|ƒ}dddg}|dd… }|||ƒ}|||ƒ}|  ||¡ |  ||¡ |  ||¡ dS )zg
        When the same list object is reflected twice, behaviour should
        be consistent.
        Tr¹   ry   r-   r>   N)r©   r   r¼   ZassertRefCountEqual)r°   r±   r³   ZpylistZclistrÐ   rÑ   r   r   r   Útest_reflect_same_listh  s    


z)TestListReflection.test_reflect_same_listc                 C   sD   t dd�tƒ}dg}dd„ |D ƒ}||ƒ |  dd„ |D ƒ|¡ dS )zP
        When the list wasn't mutated, no reflection should take place.
        Tr¹   y              )@c                 S   s   g | ]}t |ƒ‘qS r   ©Úidr.   r   r   r   r0   ~  s     z9TestListReflection.test_reflect_clean.<locals>.<listcomp>c                 S   s   g | ]}t |ƒ‘qS r   re  r.   r   r   r   r0   €  s     N)r   r   r®   )r°   r³   rM   Zidsr   r   r   Útest_reflect_cleanw  s
    z%TestListReflection.test_reflect_cleanN)
rB  rC  rD  rX  r`  ra  rb  rc  rd  rg  r   r   r   r   r[  @  s   r[  c                   @   s   e Zd Zdd„ ZdS )ÚManagedListTestCasec                 C   s8   |   t|ƒt|ƒ¡ t||ƒD ]\}}|  ||¡ qd S r   )r®   r"   Úzipr¼   )r°   ÚexpectrÑ   r   r   r   r   r   Ú!assert_list_element_precise_equal…  s    z5ManagedListTestCase.assert_list_element_precise_equalN)rB  rC  rD  rk  r   r   r   r   rh  ƒ  s   rh  c                   @   sˆ   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd S )!ÚTestListManagedElementsz,Test list containing objects that need refctc                 C   sd   t dd�|ƒ}t d¡ tj¡t d¡ tj¡g}t|ƒ}||ƒ t|ƒ}||ƒ | j||d� d S )NTr¹   r>   rW   ©rj  rÑ   )r   rÌ   ÚarangeÚastyperV  rA   rk  )r°   r±   r³   Úconrj  rÑ   r   r   r   Ú_check_element_equalŽ  s    $ ÿz,TestListManagedElements._check_element_equalc                 C   s   dd„ }|   |¡ d S )Nc                 S   s   d S r   r   ©rp  r   r   r   r±   š  s    z=TestListManagedElements.test_reflect_passthru.<locals>.pyfunc©rq  ©r°   r±   r   r   r   Útest_reflect_passthru™  s    z-TestListManagedElements.test_reflect_passthruc                 C   s   dd„ }|   |¡ d S )Nc                 S   s   |   t d¡ tj¡¡ d S )Nr1   )rG   rÌ   rn  ro  rV  rr  r   r   r   r±   Ÿ  s    z=TestListManagedElements.test_reflect_appended.<locals>.pyfuncrs  rt  r   r   r   Útest_reflect_appendedž  s    z-TestListManagedElements.test_reflect_appendedc                 C   s   dd„ }|   |¡ d S )Nc                 S   s   t  d¡| d< d S )Nr1   ry   ©rÌ   rn  rr  r   r   r   r±   ¥  s    z<TestListManagedElements.test_reflect_setitem.<locals>.pyfuncrs  rt  r   r   r   Útest_reflect_setitem¤  s    z,TestListManagedElements.test_reflect_setitemc                 C   s   dd„ }|   |¡ d S )Nc                 S   s   |   ¡  d S r   ©rZ   rr  r   r   r   r±   «  s    z;TestListManagedElements.test_reflect_popped.<locals>.pyfuncrs  rt  r   r   r   Útest_reflect_poppedª  s    z+TestListManagedElements.test_reflect_poppedc                 C   s   dd„ }|   |¡ dS )zQmake sure list.insert() doesn't crash for refcounted objects (see #7553)
        c                 S   s   |   dt d¡ tj¡¡ d S )Nry   r¶   )r„   rÌ   rn  ro  rV  rr  r   r   r   r±   ´  s    z;TestListManagedElements.test_reflect_insert.<locals>.pyfuncNrs  rt  r   r   r   Útest_reflect_insert°  s    z+TestListManagedElements.test_reflect_insertc                 C   s4   dd„ }t dd�|ƒ}|ƒ }|ƒ }| j||d� d S )Nc                  S   s.   g } t dƒD ]}|  t |¡ tj¡¡ q| S )Nr  )r4   rG   rÌ   rn  ro  rV  ©rp  rN   r   r   r   r±   º  s    z3TestListManagedElements.test_append.<locals>.pyfuncTr¹   rm  ©r   rk  ©r°   r±   r³   rj  rÑ   r   r   r   rÓ   ¹  s     ÿz#TestListManagedElements.test_appendc                 C   s2   dd„ }t dd�|ƒ}|ƒ }|ƒ }|  ||¡ d S )Nc                  S   sJ   g } t dƒD ]}|  t |¡¡ qd}| D ]}|| ¡ d|j  7 }q*|S )Nr  r\  ry   )r4   rG   rÌ   rn  r3   Úsize)rp  rN   r*   Zarrr   r   r   r±   Ê  s    z9TestListManagedElements.test_append_noret.<locals>.pyfuncTr¹   ©r   r®   r~  r   r   r   Útest_append_noretÈ  s
    	z)TestListManagedElements.test_append_noretc                 C   s4   dd„ }t dd�|ƒ}|ƒ }|ƒ }| j||d� d S )Nc                  S   s4   g } t dƒD ]}|  t d¡¡ qt d¡| d< | S )NrW   r-   r¶   r   ©r4   rG   rÌ   rn  r|  r   r   r   r±   Ú  s
    z;TestListManagedElements.test_reassign_refct.<locals>.pyfuncTr¹   rm  r}  r~  r   r   r   Útest_reassign_refctÙ  s     ÿz+TestListManagedElements.test_reassign_refctc                 C   s4   dd„ }t dd�|ƒ}|ƒ }|ƒ }| j||d� d S )Nc                  S   s.   g } t dƒD ]}|  t d¡¡ q| dd… S )NrW   r-   r¶   r‚  r|  r   r   r   r±   ê  s    z6TestListManagedElements.test_get_slice.<locals>.pyfuncTr¹   rm  r}  r~  r   r   r   Útest_get_sliceé  s     ÿz&TestListManagedElements.test_get_slicec                 C   s4   dd„ }t dd�|ƒ}|ƒ }|ƒ }| j||d� d S )Nc                  S   s:   g } t dƒD ]}|  t d¡¡ q| dd… | dd…< | S )NrW   r-   r¶   ry   r>   r‚  r|  r   r   r   r±   ù  s
    z6TestListManagedElements.test_set_slice.<locals>.pyfuncTr¹   rm  r}  r~  r   r   r   Útest_set_sliceø  s     ÿz&TestListManagedElements.test_set_slicec                 C   s4   dd„ }t dd�|ƒ}|ƒ }|ƒ }| j||d� d S )Nc                  S   s@   g } t dƒD ]}|  t |d ¡¡ qt| ƒdkr<|  ¡  q&| S )Né   ry   r-   ©r4   rG   rÌ   rn  r"   rZ   r|  r   r   r   r±   	  s    
z0TestListManagedElements.test_pop.<locals>.pyfuncTr¹   rm  r}  r~  r   r   r   Útest_pop  s     ÿz TestListManagedElements.test_popc                 C   s4   dd„ }t dd�|ƒ}|ƒ }|ƒ }| j||d� d S )Nc                  S   sB   g } t dƒD ]}|  t |d ¡¡ qt| ƒdkr>|  d¡ q&| S )Niè  ry   r-   r‡  r|  r   r   r   r±     s    z4TestListManagedElements.test_pop_loc.<locals>.pyfuncTr¹   rm  r}  r~  r   r   r   Útest_pop_loc  s     ÿz$TestListManagedElements.test_pop_locc                 C   s4   dd„ }t dd�|ƒ}|ƒ }|ƒ }| j||d� d S )Nc                  S   s4   g } t dƒD ]}|  t |d ¡¡ q| dd…= | S )Nr†  ry   r>   r1   r‚  r|  r   r   r   r±   +  s
    
z6TestListManagedElements.test_del_range.<locals>.pyfuncTr¹   rm  r}  r~  r   r   r   Útest_del_range*  s     ÿz&TestListManagedElements.test_del_rangec                 C   s2   dd„ }t dd�|ƒ}|ƒ }|ƒ }|  ||¡ d S )Nc                  S   s&   g } t dƒD ]}|  dg| ¡ q| S ©Nr1   r   )r4   rG   r|  r   r   r   r±   ;  s    z9TestListManagedElements.test_list_of_list.<locals>.pyfuncTr¹   r€  r~  r   r   r   Útest_list_of_list:  s
    z)TestListManagedElements.test_list_of_listN)rB  rC  rD  rX  rq  ru  rv  rx  rz  r{  rÓ   r�  rƒ  r„  r…  rˆ  r‰  rŠ  rŒ  r   r   r   r   rl  ‹  s    	rl  c                    s   ‡ fdd„}|S )Nc              	      sH   |   ¡  |  t¡�}ˆ | f|ž|Ž W 5 Q R X d}|  |t|jƒ¡ d S )Nz-cannot reflect element of reflected container)rÂ   rÃ   rH  rÇ   rÅ   rÆ   )r°   rÎ   ÚkwargsrÈ   Z
expect_msg©Úfnr   r   ÚwrappedJ  s
    z*expect_reflection_failure.<locals>.wrappedr   )r�  r�  r   rŽ  r   Úexpect_reflection_failureI  s    r‘  c                   @   s´   e Zd Zdd„ Zdd„ Zedd„ ƒZedd„ ƒZed	d
„ ƒZedd„ ƒZ	dd„ Z
dd„ Zdd„ Zedd„ ƒZdd„ Zedd„ ƒZdd„ Zdd„ Zedd„ ƒZedd „ ƒZd!d"„ Zd#S )$ÚTestListOfListc           	      G   sZ   ddl m} ||ƒ}||Ž }||ƒ}tdd�|ƒ}||Ž }| j||d� | j||d� d S )Nr   )ÚdeepcopyTr¹   rm  )rs   r“  r   rk  )	r°   r±   rÎ   r“  Zexpect_argsrj  Z	njit_argsr³   rÑ   r   r   r   Úcompile_and_testV  s     ÿ ÿzTestListOfList.compile_and_testc                 C   s   dd„ }|   |¡ d S )Nc                  S   s   dd„ t dƒD ƒ} | S )Nc                 S   s   g | ]}t  |¡g‘qS r   rw  ©r/   rN   r   r   r   r0   i  s     zNTestListOfList.test_returning_list_of_list.<locals>.pyfunc.<locals>.<listcomp>r¶   r;   )r   r   r   r   r±   h  s    z:TestListOfList.test_returning_list_of_list.<locals>.pyfunc©r”  rt  r   r   r   Útest_returning_list_of_listg  s    z*TestListOfList.test_returning_list_of_listc              	   C   s<  dd„ }t dd�|ƒ}dd„ tdƒD ƒdd„ tdƒD ƒg}d	d„ tdƒD ƒd
gg}dgdhgg}dgddigg}||ƒ |  t¡�}||ƒ W 5 Q R X |  dt|jƒ¡ |  t¡�}||ƒ W 5 Q R X |  dt|jƒ¡ |  t¡�}||ƒ W 5 Q R X |  dt|jƒ¡ |  t¡�}||ƒ W 5 Q R X |  dt|jƒ¡ d S )Nc                 S   s   | d S ©Nry   r   r   r   r   r   r±   p  s    z<TestListOfList.test_heterogeneous_list_error.<locals>.pyfuncTr¹   c                 S   s   g | ]}t  |¡‘qS r   ©rÌ   Úzerosr•  r   r   r   r0   t  s     z@TestListOfList.test_heterogeneous_list_error.<locals>.<listcomp>rW   c                 S   s   g | ]}t  |¡d  ‘qS ©rL  ©rÌ   Zonesr•  r   r   r   r0   u  s     c                 S   s   g | ]}t  |¡‘qS r   r™  r•  r   r   r   r0   v  s     rT  ry   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   r4   rÃ   rH  rÇ   rÅ   rÆ   rò   )r°   r±   r³   Úl2Úl3Úl4Úl5rÈ   r   r   r   Útest_heterogeneous_list_errorn  sB    ÿýýþþz,TestListOfList.test_heterogeneous_list_errorc                 C   sn   dd„ }t dd�|ƒ}ddgddgg}d	d
g}t|ƒt|ƒf}t|ƒt|ƒf}||Ž  ||Ž  |  ||¡ d S )Nc                 S   s   |   |¡ | d   d¡ d S )NrR   é{   r�   )Úl1rž  r   r   r   r±   ¡  s    
z:TestListOfList.test_list_of_list_reflected.<locals>.pyfuncTr¹   r   ry   r-   r>   r¶   rW   )r   rA   r®   )r°   r±   r³   r¤  rž  rj  rÑ   r   r   r   Útest_list_of_list_reflectedŸ  s    z*TestListOfList.test_list_of_list_reflectedc                 C   sV   dd„ }dd„ t dƒD ƒdd„ t dƒD ƒg}tdd�|ƒ}||ƒ}|  ||ƒ|¡ d S )	Nc                 S   s   | d S r˜  r   r   r   r   r   r±   °  s    z6TestListOfList.test_heterogeneous_list.<locals>.pyfuncc                 S   s   g | ]}t  |¡‘qS r   r™  r•  r   r   r   r0   ³  s     z:TestListOfList.test_heterogeneous_list.<locals>.<listcomp>rW   c                 S   s   g | ]}t  |¡‘qS r   rœ  r•  r   r   r   r0   ³  s     Tr¹   )r4   r   r¼   )r°   r±   r¤  r³   Zl1_gotr   r   r   Útest_heterogeneous_list®  s
    $z&TestListOfList.test_heterogeneous_listc              	   C   sh   dd„ }t  d¡gt  d¡d gg}|  ||¡ |  t¡�}|  ||¡ W 5 Q R X |  dt|jƒ¡ d S )Nc                 S   s   |   ¡ S r   ry  r   r   r   r   Úbar»  s    z$TestListOfList.test_c01.<locals>.barr   r1   rL  r�  )rÌ   rš  r”  rÃ   rH  rÇ   rÅ   rÆ   ©r°   r§  ÚrrÈ   r   r   r   Útest_c01¹  s    ýzTestListOfList.test_c01c              	   C   sP   dd„ }t  d¡gg}|  tj¡�}|  ||¡ W 5 Q R X |  dt|jƒ¡ d S )Nc                 S   s   |   | ¡ | S r   r�   r   r   r   r   r§  Ì  s    
z$TestListOfList.test_c02.<locals>.barr   z(Invalid use of BoundFunction(list.append)	rÌ   rš  rÃ   r   rÄ   r”  rÇ   rÅ   rÆ   r¨  r   r   r   Útest_c02Ë  s    þzTestListOfList.test_c02c              	   C   sd   dd„ }t  d¡gg}|  tj¡�}|  ||¡ W 5 Q R X |  d tdƒt|d ƒ¡t	|j
ƒ¡ d S )Nc                 S   s   | }d|d< |S ©Nry   r   r   ©r   Úfr   r   r   r§  Ú  s    z$TestListOfList.test_c03.<locals>.barr>   ú1invalid setitem with value of {} to element of {}ry   r   ©rÌ   rn  rÃ   r   rÄ   r”  rÇ   rU  r   rÅ   rÆ   r¨  r   r   r   Útest_c03Ù  s    
þûzTestListOfList.test_c03c              	   C   sh   dd„ }t  d¡gg}|  tj¡�}|  ||¡ W 5 Q R X |  d tdƒt|d d ƒ¡t	|j
ƒ¡ d S )Nc                 S   s   | }d|d d< |S r‹  r   r­  r   r   r   r§  ì  s    z$TestListOfList.test_c04.<locals>.barr>   r¯  r1   r   r°  r¨  r   r   r   Útest_c04ë  s    þûzTestListOfList.test_c04c                 C   s.   dd„ }t  d¡ t j¡gg}|  ||¡ d S )Nc                 S   s2   | }t  dd„ t  d¡ t j¡D ƒ¡|d d< |S )Nc                 S   s   g | ]}|‘qS r   r   r.   r   r   r   r0      s     z8TestListOfList.test_c05.<locals>.bar.<locals>.<listcomp>r1   r   )rÌ   rÍ   rn  ro  rV  r­  r   r   r   r§  þ  s    *z$TestListOfList.test_c05.<locals>.barr>   )rÌ   rn  ro  rV  r”  ©r°   r§  r©  r   r   r   Útest_c05ü  s    zTestListOfList.test_c05c              	   C   sP   dd„ }t  d¡gg}|  tj¡�}|  ||¡ W 5 Q R X |  dt|jƒ¡ d S )Nc                 S   s*   | }t  dd„ t  d¡D ƒ¡|d d< |S )Nc                 S   s   g | ]}|d  ‘qS r›  r   r.   r   r   r   r0   	  s     z8TestListOfList.test_c06.<locals>.bar.<locals>.<listcomp>r1   r   )rÌ   rÍ   rn  r­  r   r   r   r§    s    "z$TestListOfList.test_c06.<locals>.barr>   úinvalid setitem with value)	rÌ   rn  rÃ   r   rÄ   r”  rÇ   rÅ   rÆ   r¨  r   r   r   Útest_c06  s
    zTestListOfList.test_c06c              	   C   s`   |   ¡  dd„ }t d¡gg}tdd�|ƒ}|  t¡�}||ƒ W 5 Q R X |  dt|jƒ¡ d S )Nc                 S   s   | d S )Niùÿÿÿr   r   r   r   r   r§    s    z$TestListOfList.test_c07.<locals>.barr>   Tr¹   zgetitem out of range)	rÂ   rÌ   rn  r   rÃ   rÝ   rÇ   rÅ   rÆ   ©r°   r§  r©  r³   rÈ   r   r   r   Útest_c07  s    zTestListOfList.test_c07c              	   C   s\   |   ¡  dd„ }dddg}tdd�|ƒ}|  t¡�}||ƒ W 5 Q R X |  dt|jƒ¡ d S )	Nc                 S   s   d| d< | S )NrË   rW   r   r   r   r   r   r§  !  s    z$TestListOfList.test_c08.<locals>.barry   r-   r>   Tr¹   zsetitem out of range)rÂ   r   rÃ   rÝ   rÇ   rÅ   rÆ   r·  r   r   r   Útest_c08  s    
zTestListOfList.test_c08c              	   C   sL   dd„ }dddg}|   tj¡�}|  ||¡ W 5 Q R X |  dt|jƒ¡ d S )Nc                 S   s   d| d< | S )Ny              @rÛ   r   r   r   r   r   r§  ,  s    z$TestListOfList.test_c09.<locals>.barry   r-   r>   rµ  )rÃ   r   rÄ   r”  rÇ   rÅ   rÆ   r¨  r   r   r   Útest_c09+  s
    
zTestListOfList.test_c09c                 C   s,   dd„ }dddgdddgg}|   ||¡ d S )	Nc                 S   s   | d | d  | d< | d< | S r¬  r   r   r   r   r   r§  7  s    z$TestListOfList.test_c10.<locals>.barry   r-   r>   r¶   rW   r·   r–  r³  r   r   r   Útest_c105  s    zTestListOfList.test_c10c                 C   s,   dd„ }dddgdddgg}|   ||¡ d S )	Nc                 S   s   | d d d… | d d …< | S r+  r   r   r   r   r   r§  @  s    z$TestListOfList.test_c11.<locals>.barry   r-   r>   r¶   rW   r·   r–  r³  r   r   r   Útest_c11>  s    zTestListOfList.test_c11c                 C   s*   dd„ }dd„ t dƒD ƒ}|  ||¡ d S )Nc                 S   s
   | d= | S r+  r   r   r   r   r   r§  H  s    z$TestListOfList.test_c12.<locals>.barc                 S   s   g | ]}|‘qS r   r   r.   r   r   r   r0   L  s     z+TestListOfList.test_c12.<locals>.<listcomp>r1   )r4   r”  r³  r   r   r   Útest_c12G  s    zTestListOfList.test_c12N)rB  rC  rD  r”  r—  r‘  r¢  r¥  r¦  rª  r«  r±  r²  r´  r¶  r¸  r¹  rº  r»  r¼  r½  r   r   r   r   r’  T  s2   
0




	



r’  c                   @   s   e Zd Zdd„ ZdS )ÚItemc                 C   s   || _ || _d S r   ©ÚmanyÚscalar)r°   rÀ  rÁ  r   r   r   Ú__init__Q  s    zItem.__init__N)rB  rC  rD  rÂ  r   r   r   r   r¾  P  s   r¾  c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú	Containerc                 C   s   dd„ t |ƒD ƒ| _d S )Nc                 S   s    g | ]}t  |¡ t j¡g‘qS r   )rÌ   rn  ro  Úfloat64r•  r   r   r   r0   X  s     z&Container.__init__.<locals>.<listcomp>)r4   Údata)r°   rC   r   r   r   rÂ  W  s    zContainer.__init__c                 C   s.   t |ƒD ] }| j t |¡ tj¡g¡ qd S r   )r4   rÅ  rG   rÌ   rn  ro  rÄ  )r°   rC   rN   r   r   r   ÚmoreZ  s    zContainer.moreN)rB  rC  rD  rÂ  rÆ  r   r   r   r   rÃ  V  s   rÃ  c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestListAndJitClassesc                 C   s,   dt jd d … fdt jfg}t|ƒtƒ}|S )NrÀ  rÁ  )r   rÄ  r   r¾  )r°   ÚspecÚJCItemr   r   r   Úmake_jitclass_element`  s
    þz+TestListAndJitClasses.make_jitclass_elementc                 C   s2   dt jt  t jd d d… ¡d�i}t|ƒtƒ}|S )NrÅ  ry   )Údtype)r   ÚListrÄ  r   rÃ  )r°   rÈ  ÚJCContainerr   r   r   Úmake_jitclass_containerh  s
     ÿz-TestListAndJitClasses.make_jitclass_containerc                 C   s"   t ||ƒD ]\}}|||ƒ q
d S r   )ri  )r°   Útesterrj  rÑ   r   r'   r   r   r   Úassert_list_element_with_testero  s    z5TestListAndJitClasses.assert_list_element_with_testerc           	         s€   ˆ  ¡ ‰ dd„ }‡fdd„}tdd�|ƒ}‡ fdd„td	ƒD ƒ}t|ƒ}t|ƒ}||ƒ}||ƒ}ˆ |||¡ ˆ |||¡ d S )
Nc                 S   s   | d | d  | d< | d< | S rx   r   )Zxsr   r   r   r±   v  s    zETestListAndJitClasses.test_jitclass_instance_elements.<locals>.pyfuncc                    s$   ˆ   | j|j¡ ˆ   | j|j¡ d S r   )r¼   rÀ  rÁ  )r   r'   rÀ   r   r   r¾   z  s    zATestListAndJitClasses.test_jitclass_instance_elements.<locals>.eqTr¹   c                    s(   g | ] }ˆ t j |d  ¡|d d�‘qS )ry   g333333ó?r¿  )rÌ   Úrandom)r/   rC   )rÉ  r   r   r0   €  s   ÿzITestListAndJitClasses.test_jitclass_instance_elements.<locals>.<listcomp>rW   )rÊ  r   r4   rA   rÐ  )	r°   r±   r¾   r³   rÏ   Z
expect_argZgot_argZ
expect_resZgot_resr   )rÉ  r°   r   Útest_jitclass_instance_elementss  s    
ÿz5TestListAndJitClasses.test_jitclass_instance_elementsc                 C   sT   |   ¡ }tdd�}|dd�}|  |j|j¡ | d¡ | d¡ |  |j|j¡ d S )Nr¶   rB   r>   )rÎ  rÃ  rk  rÅ  rÆ  )r°   rÍ  rj  rÑ   r   r   r   Útest_jitclass_containing_listŒ  s    



z3TestListAndJitClasses.test_jitclass_containing_listN)rB  rC  rD  rÊ  rÎ  rÐ  rÒ  rÓ  r   r   r   r   rÇ  _  s
   rÇ  c                   @   s8   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )ÚTestListInitialValuesz5Tests that lists carry their initial value if presentc                    s6   dd„ ‰ t ˆ ƒ‡fdd„ƒ}t‡ fdd„ƒ}|ƒ  d S )Nc                 S   s   d S r   r   r§   r   r   r   r§  ›  s    z?TestListInitialValues.test_homogeneous_and_literal.<locals>.barc                    sR   | j d krdd„ S ˆ  t| tjƒ¡ ˆ  | j dddg¡ ˆ  t| dƒd¡ dd„ S )	Nc                 S   s   t | ƒS r   ©r	   r§   r   r   r   Ú<lambda>¡  ó    zTTestListInitialValues.test_homogeneous_and_literal.<locals>.ol_bar.<locals>.<lambda>ry   r-   r>   Úliteral_valueFc                 S   s   | S r   r   r§   r   r   r   rÖ  ¥  r×  )Úinitial_valueÚ
assertTrueÚ
isinstancer   rÌ  r®   Úhasattrr§   rÀ   r   r   Úol_barž  s    
zBTestListInitialValues.test_homogeneous_and_literal.<locals>.ol_barc                     s   dddg} ˆ | ƒ d S r«   r   r   ©r§  r   r   Úfoo§  s    
z?TestListInitialValues.test_homogeneous_and_literal.<locals>.foo©r   r   ©r°   rÝ  rß  r   ©r§  r°   r   Útest_homogeneous_and_literalš  s    z2TestListInitialValues.test_homogeneous_and_literalc                    s6   dd„ ‰ t ˆ ƒ‡fdd„ƒ}t‡ fdd„ƒ}|ƒ  d S )Nc                 S   s   d S r   r   r§   r   r   r   r§  °  s    zQTestListInitialValues.test_heterogeneous_but_castable_to_homogeneous.<locals>.barc                    s:   ˆ   t| tjƒ¡ ˆ  | jd ¡ ˆ  t| dƒd¡ dd„ S )NrØ  Fc                 S   s   | S r   r   r§   r   r   r   rÖ  ¸  r×  zfTestListInitialValues.test_heterogeneous_but_castable_to_homogeneous.<locals>.ol_bar.<locals>.<lambda>)rÚ  rÛ  r   rÌ  r®   rÙ  rÜ  r§   rÀ   r   r   rÝ  ³  s    zTTestListInitialValues.test_heterogeneous_but_castable_to_homogeneous.<locals>.ol_barc                     s   dddg} ˆ | ƒ d S )NrL  r-   r>   r   r   rÞ  r   r   rß  º  s    
zQTestListInitialValues.test_heterogeneous_but_castable_to_homogeneous.<locals>.foorà  rá  r   râ  r   Ú.test_heterogeneous_but_castable_to_homogeneous¯  s    zDTestListInitialValues.test_heterogeneous_but_castable_to_homogeneousc                    s6   dd„ ‰ t ˆ ƒ‡fdd„ƒ}t‡ fdd„ƒ}|ƒ  d S )Nc                 S   s   d S r   r   ©r�   r   r   r   r§  Æ  s    z<TestListInitialValues.test_mutation_not_carried.<locals>.barc                    s@   | j d krdd„ S ˆ  t| tjƒ¡ ˆ  | j dddg¡ dd„ S )Nc                 S   s   t | ƒS r   rÕ  rå  r   r   r   rÖ  Ì  r×  zQTestListInitialValues.test_mutation_not_carried.<locals>.ol_bar.<locals>.<lambda>ry   r-   r>   c                 S   s   | S r   r   rå  r   r   r   rÖ  Ï  r×  )rÙ  rÚ  rÛ  r   rÌ  r®   rå  rÀ   r   r   rÝ  É  s
    
z?TestListInitialValues.test_mutation_not_carried.<locals>.ol_barc                     s    dddg} |   d¡ ˆ | ƒ d S rQ  r�   r   rÞ  r   r   rß  Ñ  s    

z<TestListInitialValues.test_mutation_not_carried.<locals>.foorà  rá  r   râ  r   Útest_mutation_not_carriedÅ  s    z/TestListInitialValues.test_mutation_not_carriedc                    sŒ   t dd„ ƒ}|d ftdddgffD ]d\‰}t dd„ ƒ‰dd	„ ‰ tˆ ƒ‡‡fd
d„ƒ}t ‡ fdd„ƒ}|ƒ  ˆjd d }|  |j|¡ q"d S )Nc                  W   s   d S r   r   r1  r   r   r   ÚnopÞ  s    zLTestListInitialValues.test_mutation_not_carried_single_function.<locals>.nopry   r-   r>   c                 S   s   d S r   r   r   r   r   r   Úbazã  s    zLTestListInitialValues.test_mutation_not_carried_single_function.<locals>.bazc                 S   s   d S r   r   ©r(   r   r   r   r§  ç  s    zLTestListInitialValues.test_mutation_not_carried_single_function.<locals>.barc                    s   ‡ ‡fdd„}|S )Nc                    s   ˆ| ƒ ˆ | ƒ d S r   r   ré  ©rè  r�  r   r   Úimplì  s    z]TestListInitialValues.test_mutation_not_carried_single_function.<locals>.ol_bar.<locals>.implr   )r(   rë  rê  r   r   rÝ  ê  s    zOTestListInitialValues.test_mutation_not_carried_single_function.<locals>.ol_barc                     s    dddg} ˆ | ƒ |   d¡ | S r«   r�   r   rÞ  r   r   rß  ñ  s    

zLTestListInitialValues.test_mutation_not_carried_single_function.<locals>.foor   )r   r	   r   Ú
signaturesr®   rÙ  )r°   rç  ZivrÝ  rß  Úlargr   )r§  rè  r�  r   Ú)test_mutation_not_carried_single_functionÛ  s    

z?TestListInitialValues.test_mutation_not_carried_single_functionc                    sR   t dd„ ƒ‰ t ‡ fdd„ƒ}|ƒ  ˆ jd d }|  |jd ¡ |  |jjd ¡ d S )Nc                 S   s   d S r   r   r   r   r   r   r§     s    z9TestListInitialValues.test_list_of_list_ctor.<locals>.barc                     s(   dddddgdddddgg} ˆ | ƒ d S rµ   r   r   rÞ  r   r   rß    s    z9TestListInitialValues.test_list_of_list_ctor.<locals>.foor   )r   rì  r®   rÙ  rË  )r°   rß  rí  r   rÞ  r   Útest_list_of_list_ctorþ  s    
z,TestListInitialValues.test_list_of_list_ctorN)	rB  rC  rD  rX  rã  rä  ræ  rî  rï  r   r   r   r   rÔ  —  s   #rÔ  c                   @   sŒ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!S )"ÚTestLiteralListsc                 C   s   t dd„ ƒ}|ƒ  d S )Nc                  S   s   ddg} d S )Nry   r   r   r§   r   r   r   rß    s    z0TestLiteralLists.test_basic_compile.<locals>.foo)r   ©r°   rß  r   r   r   Útest_basic_compile  s    
z#TestLiteralLists.test_basic_compilec                    s6   dd„ ‰ t ˆ ƒ‡fdd„ƒ}t‡ fdd„ƒ}|ƒ  d S )Nc                 S   s   d S r   r   r   r   r   r   r§    s    z<TestLiteralLists.test_literal_value_passthrough.<locals>.barc              	      sê   ˆ   t| tjƒ¡ | j}ˆ   t|tƒ¡ ˆ  |d t d¡¡ ˆ  |d t d¡¡ ˆ  |d t tj	dd¡¡ ˆ  |d tj
tjddddgd�¡ ˆ   t|d	 tjƒ¡ ˆ  |d	 jd t d
¡¡ ˆ  |d	 jd t d¡¡ dd„ S )Nr   ry   r   r-   ÚCr>   F)Ú	reflectedrÙ  r¶   Úcatr1   c                 S   s   | S r   r   r   r   r   r   rÖ  *  r×  zQTestLiteralLists.test_literal_value_passthrough.<locals>.ol_bar.<locals>.<lambda>)rÚ  rÛ  r   ÚLiteralListrØ  rA   r®   ÚliteralÚArrayrÄ  rÌ  rV  )r   ÚlvrÀ   r   r   rÝ    s    ÿz?TestLiteralLists.test_literal_value_passthrough.<locals>.ol_barc                     s6   dddg} ddg}t  d¡}dd|| |g}ˆ |ƒ d S )Nry   r-   r>   rõ  r1   rW   r   r™  )ZotherhomogeneouslistZotherheterogeneouslistrš  rM   rÞ  r   r   rß  ,  s
    

z<TestLiteralLists.test_literal_value_passthrough.<locals>.foorà  rá  r   râ  r   Útest_literal_value_passthrough  s    z/TestLiteralLists.test_literal_value_passthroughc                    s6   dd„ ‰ t ˆ ƒ‡fdd„ƒ}t‡ fdd„ƒ}|ƒ  d S )Nc                 S   s   d S r   r   r   r   r   r   r§  8  s    zETestLiteralLists.test_literal_value_involved_passthrough.<locals>.barc              
      sÎ   ˆ  t| tjƒ¡ | j}t d¡t d¡t d¡t tjdd¡i}t |¡}t d¡t t d¡t d¡tj	tj
tjddid�|g¡t d	¡t d
¡t d¡tjtjdd�i}‡ ‡fdd„‰ ˆ ||ƒ dd„ S )NÚgÚhrN   ry   ró  r   r®  )rÙ  r   r-   r*   F)rô  c                    s,  t | tjƒr@t |tjƒr@t| j|jƒD ]\}}ˆ | j|jƒ q&nèt | tƒrtt |tƒrtt| |ƒD ]\}}ˆ ||ƒ q^n´t | tjƒrÊt |tjƒrÊt| j ¡ |j ¡ ƒD ]$\\}}\}}ˆ ||ƒ ˆ ||ƒ q¢n^t | tƒ�rt |tƒ�rt|  ¡ | ¡ ƒD ]$\\}}\}}ˆ ||ƒ ˆ ||ƒ qônˆ 	| |¡ d S r   )
rÛ  r   rö  ri  rØ  rA   ÚLiteralStrKeyDictÚitemsÚdictr®   )r   r   rN   ÚjZkiÚviZkjZvj)Ú
check_samer°   r   r   r  N  s2    
ÿ
ÿ
ÿ
ÿ
ÿ"
z\TestLiteralLists.test_literal_value_involved_passthrough.<locals>.ol_bar.<locals>.check_samec                 S   s   | S r   r   r   r   r   r   rÖ  e  r×  zZTestLiteralLists.test_literal_value_involved_passthrough.<locals>.ol_bar.<locals>.<lambda>)rÚ  rÛ  r   rý  rØ  r÷  rø  rÄ  rö  ZDictTypeZunicode_typerV  rÌ  Z
complex128)r   ZdlvZinner_literalZ
inner_dictZouter_literalrÀ   )r  r   rÝ  ;  s6    þ
ýú  ÿ÷
zHTestLiteralLists.test_literal_value_involved_passthrough.<locals>.ol_barc                     s6   ddddidt  d¡dœgddd	d
gdœ} ˆ | ƒ d S )Nry   r   r®  rü  rW   )rû  rN   r-   rL  rO  ù              @)r   r   r*   r™  r§   rÞ  r   r   rß  g  s    ÿzETestLiteralLists.test_literal_value_involved_passthrough.<locals>.foorà  rá  r   râ  r   Ú'test_literal_value_involved_passthrough6  s    +z8TestLiteralLists.test_literal_value_involved_passthroughc                 C   sÆ   dd„ }dd„ }dd„ }dd„ }d	d
„ }dd„ }dd„ }dd„ }dd„ }	dd„ }
|||||||||	|
f
}|D ]T}|   |j¡�> |  tj¡�}t|ƒƒ  W 5 Q R X d}|  |t|jƒ¡ W 5 Q R X qld S )Nc                  S   s   ddg} d| d< d S )Nr   ry   r   r   r   r§   r   r   r   Ústaticsetitemt  s    z=TestLiteralLists.test_mutation_failure.<locals>.staticsetitemc                  S   s   ddg} | d= d S ©Nr   ry   r   r   r§   r   r   r   Údelitemx  s    z7TestLiteralLists.test_mutation_failure.<locals>.delitemc                  S   s   ddg} |   d¡ d S )Nr   ry   rO  r�   r§   r   r   r   rG   |  s    z6TestLiteralLists.test_mutation_failure.<locals>.appendc                  S   s   ddg} |   ddg¡ d S )Nr   ry   rO  r  )rT   r§   r   r   r   rT   €  s    z6TestLiteralLists.test_mutation_failure.<locals>.extendc                  S   s   ddg} |   dd¡ d S )Nr   ry   r   rO  )r„   r§   r   r   r   r„   „  s    z6TestLiteralLists.test_mutation_failure.<locals>.insertc                  S   s   ddg} |   d¡ d S ©Nr   ry   )r‚   r§   r   r   r   r‚   ˆ  s    z6TestLiteralLists.test_mutation_failure.<locals>.removec                  S   s   ddg} |   ¡  d S r  ry  r§   r   r   r   rZ   Œ  s    z3TestLiteralLists.test_mutation_failure.<locals>.popc                  S   s   ddg} |   ¡  d S r  )rq   r§   r   r   r   rq   �  s    z5TestLiteralLists.test_mutation_failure.<locals>.clearc                  S   s   ddg} |   ¡  d S r  )Úsortr§   r   r   r   r	  ”  s    z4TestLiteralLists.test_mutation_failure.<locals>.sortc                  S   s   ddg} |   ¡  d S r  )r‰   r§   r   r   r   r‰   ˜  s    z7TestLiteralLists.test_mutation_failure.<locals>.reverseúCannot mutate a literal list)	ZsubTestrB  rÃ   r   rÄ   r   rÇ   rÅ   rÆ   )r°   r  r  rG   rT   r„   r‚   rZ   rq   r	  r‰   ZillegalsÚtestrÈ   rj  r   r   r   Útest_mutation_failurer  s*      ÿz&TestLiteralLists.test_mutation_failurec                 C   s"   t dd„ ƒ}|  | ¡ |ƒ ¡ d S )Nc                  S   s<   dddddddddddg} g }d	D ]}|  |  |¡¡ q"|S )
Nr   ry   r-   r>   r   r¶   rW   r*   Úabc)rG   r‡   ©rM   r©  r   r   r   r   rß  §  s
    z(TestLiteralLists.test_count.<locals>.foo©r   r®   Zpy_funcrñ  r   r   r   r  ¦  s    
zTestLiteralLists.test_countc                 C   s"   t dd„ ƒ}|  | ¡ |ƒ ¡ d S )Nc                  S   s"   dddddddddddg} t | ƒS )	Nr   ry   r-   r>   r   r¶   rW   r*   r!   r§   r   r   r   rß  ²  s    z&TestLiteralLists.test_len.<locals>.foor  rñ  r   r   r   râ   ±  s    
zTestLiteralLists.test_lenc                 C   s"   t dd„ ƒ}|  | ¡ |ƒ ¡ d S )Nc                  S   s>   dddddddddddg} g }t d	ƒD ]}| || k¡ q&|S )
Nr   ry   r-   r>   r   r¶   rW   r*   )r   r�   r-   r·   )r   rG   r  r   r   r   rß  º  s
    z+TestLiteralLists.test_contains.<locals>.foor  rñ  r   r   r   rû   ¹  s    
zTestLiteralLists.test_containsc              	   C   sF   t dd„ ƒ}|  tj¡�}|dƒ W 5 Q R X d}|  |t|jƒ¡ d S )Nc                 S   s   ddg}||  S r  r   ©r   rM   r   r   r   rß  Æ  s    z*TestLiteralLists.test_getitem.<locals>.foor   ú$Cannot __getitem__ on a literal list©r   rÃ   r   rÄ   rÇ   rÅ   rÆ   ©r°   rß  rÈ   rj  r   r   r   rã   Ä  s    
zTestLiteralLists.test_getitemc                 C   s"   t dd„ ƒ}|  | ¡ |ƒ ¡ d S )Nc                  S   s   ddg} | d | d fS r  r   r§   r   r   r   rß  Ò  s    z0TestLiteralLists.test_staticgetitem.<locals>.foor  rñ  r   r   r   Útest_staticgetitemÐ  s    
z#TestLiteralLists.test_staticgetitemc              	   C   sD   t dd„ ƒ}|  tj¡�}|ƒ  W 5 Q R X d}|  |t|jƒ¡ d S )Nc                  S   s   dddg} | d d… S )Nr   r   ry   r-   r   r§   r   r   r   rß  Ü  s    
z6TestLiteralLists.test_staticgetitem_slice.<locals>.foor  r  r  r   r   r   Útest_staticgetitem_sliceÙ  s    
z)TestLiteralLists.test_staticgetitem_slicec              	   C   sF   t dd„ ƒ}|  tj¡�}|dƒ W 5 Q R X d}|  |t|jƒ¡ d S )Nc                 S   s   ddg}d|| < d S )Nr   ry   r   r   r  r   r   r   rß  è  s    z*TestLiteralLists.test_setitem.<locals>.foor   r
  r  r  r   r   r   rä   æ  s    
zTestLiteralLists.test_setitemc                 C   s0   t dd„ ƒ}dD ]}|  | |¡||ƒ¡ qd S )Nc                 S   s&   | d dkrddg}nddg}|d S )Nry   r>   r   r   r-   r   r   r  r   r   r   rß  ô  s    
z(TestLiteralLists.test_unify.<locals>.foo)iœÿÿÿri   r  )r°   rß  r   r   r   r   Ú
test_unifyò  s    
zTestLiteralLists.test_unifyc              	   C   sF   t dd„ ƒ}|  tj¡�}|dƒ W 5 Q R X d}|  |t|jƒ¡ d S )Nc                 S   s<   | d dkrdddg}nddg}|d |d |d |d fS )Nry   r>   r   rO  r   r-   r   r   r  r   r   r   rß    s    z,TestLiteralLists.test_not_unify.<locals>.foori   zCannot unify LiteralListr  r  r   r   r   Útest_not_unifyÿ  s    
zTestLiteralLists.test_not_unifyc              	   C   sD   t dd„ ƒ}|  tj¡�}|ƒ  W 5 Q R X d}|  |t|jƒ¡ d S )Nc                  S   s   ddg} |   d¡ d S r  )r}   r§   r   r   r   rß    s    z(TestLiteralLists.test_index.<locals>.fooz+list.index is unsupported for literal listsr  r  r   r   r   Ú
test_index  s    
zTestLiteralLists.test_indexc                 C   s"   t dd„ ƒ}|  |ƒ | ¡ ¡ d S )Nc                  S   s   ddg  ¡ } | d | d fS r  )rs   r§   r   r   r   rß    s    z'TestLiteralLists.test_copy.<locals>.foor  rñ  r   r   r   r    s    
zTestLiteralLists.test_copyc                    s6   dd„ ‰ t ˆ ƒ‡fdd„ƒ}t‡ fdd„ƒ}|ƒ  d S )Nc                 S   s   d S r   r   r   r   r   r   r§  $  s    z3TestLiteralLists.test_tuple_not_in_mro.<locals>.barc                    s,   ˆ   t| tjƒ¡ ˆ  t| tjƒ¡ dd„ S )Nc                 S   s   dS )N.r   r   r   r   r   rÖ  +  r×  zHTestLiteralLists.test_tuple_not_in_mro.<locals>.ol_bar.<locals>.<lambda>)ZassertFalserÛ  r   Z	BaseTuplerÚ  rö  r   rÀ   r   r   rÝ  '  s    z6TestLiteralLists.test_tuple_not_in_mro.<locals>.ol_barc                     s   ddg} ˆ | ƒ d S r  r   r§   rÞ  r   r   rß  -  s    z3TestLiteralLists.test_tuple_not_in_mro.<locals>.foorà  rá  r   râ  r   Útest_tuple_not_in_mro!  s    z&TestLiteralLists.test_tuple_not_in_mroN)rB  rC  rD  rò  rú  r  r  r  râ   rû   rã   r  r  rä   r  r  r  r  r  r   r   r   r   rð    s    <4	rð  Ú__main__)uÚcollectionsr   rY  rç   r7   r"  Úctypesr%  ÚnumpyrÌ   Znumba.core.compilerr   r   Znumbar   r   r   r   r	   rE  r
   Z
numba.corer   r   r   Znumba.tests.supportr   r   r   Znumba.experimentalr   Znumba.core.extendingr   Zenable_pyobj_flagsZenable_pyobjectZforce_pyobj_flagsZforce_pyobjectr   r   r    r#   r%   r&   r)   r+   r5   r6   r9   r<   r=   r?   rD   rF   rH   rO   rQ   rV   rX   r[   r\   r^   r`   ra   re   rg   rj   rk   rm   rn   ro   rp   rr   ru   rw   rz   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ª   rG  r[  rh  rl  r‘  r’  Úobjectr¾  rÃ  rÇ  rÔ  rð  rB  Úmainr   r   r   r   Ú<module>   sÎ   
		
	
	
  {DC ? }	8x  (
