a
    
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_dd Z`dd Zadd Zbdd Zcdd Zddd ZeG dd deeZfG dd deeZgG dd deeZhG dd deeZiG dd deiZjdd ZkG dd deiZlG dd demZnG dd demZoG dd deiZpG dd deeZqG dd deeZresdkre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   _/var/www/html/stable-diffusion-webui/venv/lib/python3.9/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       z'list_comprehension1.<locals>.<listcomp>
   sumranger   r   r   r   list_comprehension1L   s    r6   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   r1   z'list_comprehension2.<locals>.<listcomp>r2   r3   r   r   r   r   list_comprehension2O   s    r7   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   r1   z'list_comprehension3.<locals>.<listcomp>r2   r3   r   r   r   r   list_comprehension3R   s    r:   c                   C   s   t dd tdD S )Nc                 S   s"   g | ]}t d D ]}|| qqS r2   r5   )r/   r   r'   r   r   r   r0   V   r1   z'list_comprehension4.<locals>.<listcomp>r2   r3   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   r1   z'list_comprehension5.<locals>.<listcomp>r2   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   \   r1   z2list_comprehension6.<locals>.<listcomp>.<listcomp>r<   )r/   r'   r   r   r   r0   \   r1   z'list_comprehension6.<locals>.<listcomp>   r<   r   r   r   r   list_comprehension6[   s    r@   c                 C   s   t t| S r   listr5   nr   r   r   list_constructor_   s    rE   c                   C   s   t  S r   rB   r   r   r   r   list_constructor_emptyb   s    rG   c                 C   s   t  }|| S r   )rB   append)rD   r'   r   r   r   #list_constructor_empty_but_typeableg   s    rI   c                 C   s*   g }| d t| D ]}| | q|S N*   rH   r5   rD   lir   r   r   list_appendm   s
    
rP   c                 C   s*   g }| d t| D ]}| | q|S )N      E@rL   rM   r   r   r   list_append_heterogeneoust   s
    
rR   c                 C   s:   g }| t|  | |d d  | t| dd |S )Nr   extendr5   rD   rN   r   r   r   list_extend{   s
    rW   c                 C   s>   g }| t|  | |d d  | d | dg |S )NrS   )   rK   g     ^@rT   rV   r   r   r   list_extend_heterogeneous   s    
rY   c                 C   s6   t t| }d}t|dkr2|t||  7 }q|S Nr   )rB   r5   r"   pop)rD   rN   r   r   r   r   	list_pop0   s
    r\   c                 C   s   t t| }||}||fS r   )rB   r5   r[   )rD   rO   rN   r   r   r   r   	list_pop1   s    
r]   c                 C   s   t t| }t|S r   rB   r5   r"   rV   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 rZ   r^   rD   rN   r   rO   r   r   r   list_getitem   s    ra   c                 C   sz   t t| }d}tt|D ]}|||  ||< qtt| dD ]}|||  ||< qBtt|D ]}||| 7 }qd|S rZ   r^   r`   r   r   r   list_setitem   s    rb   c                 C   s   t t| }||| S r   rA   rD   startstoprN   r   r   r   list_getslice2   s    rf   c                 C   s   t t| }|||| S r   rA   )rD   rd   re   steprN   r   r   r   list_getslice3   s    rh   c                 C   s.   t t| }t tdd| }||||< |S Nd   rA   )rD   Zn_sourcerd   re   rN   r   r   r   r   list_setslice2   s    rk   c                 C   sN   t t| }|||| }tt|D ]}||  d7  < q&|||||< |S ri   r^   )rD   rd   re   rg   rN   r   rO   r   r   r   list_setslice3   s    rl   c                 C   s,   t t| }t tdd| ||||< |S ri   rA   )rD   n_srcrd   re   rg   rN   r   r   r   list_setslice3_arbitrary   s    rn   c                 C   s   t t| }|d d = |S r   rA   rV   r   r   r   list_delslice0   s    
ro   c                 C   s$   t t| }||d = |d |= |S r   rA   rc   r   r   r   list_delslice1   s    

rp   c                 C   s   t t| }|||= |S r   rA   rc   r   r   r   list_delslice2   s    
rq   c                 C   s   t t| }|  |S r   )rB   r5   clearrV   r   r   r   
list_clear   s    rs   c                 C   s&   t t| }| }|d ||fS rJ   )rB   r5   copyrH   )rD   rN   llr   r   r   	list_copy   s    
rv   c                 C   s2   t t| }d}t|D ]\}}||| 7 }q|S rZ   )rB   r5   	enumerate)rD   rN   r   rO   r   r   r   r   list_iteration   s
    rx   c              	   C   sH   t t| }d|v d|v | d |v | |v d|vd|v| d |v| |vfS Nr      rA   rV   r   r   r   list_contains   s    r{   c                 C   s   t t| dd}||S Nr   rS   rB   r5   indexrD   r   rN   r   r   r   list_index1   s    r   c                 C   s   t t| dd}|||S r|   r}   )rD   r   rd   rN   r   r   r   list_index2   s    r   c                 C   s   t t| dd}||||S r|   r}   )rD   r   rd   re   rN   r   r   r   list_index3   s    r   c                 C   s"   t t| d dd}|| |S )Nrz   rS   )rB   r5   remover   r   r   r   list_remove  s    
r   c                 C   s   t td| }||| |S rZ   )rB   r5   insert)rD   posr   rN   r   r   r   list_insert	  s    r   c                 C   s*   g }t | D ]}||d@  q||S )Nr?   )r5   rH   count)rD   r   rN   r   r   r   r   
list_count  s    r   c                 C   s   t t| }|  |S r   )rB   r5   reverserV   r   r   r   list_reverse  s    r   c                 C   s<   t td| }t tdd| }|| }|d |||fS )Nr   rj   rK   )rB   r5   rH   )mrD   r   r   r   r   r   r   list_add  s
    
r   c                  C   s<   dg} dg}| | }||  }|  d | d | |||fS )Nrz          @r?         @rH   )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   rj   rA   )r   rD   r   r   r   r   r   list_add_inplace*  s    r   c                  C   s$   dg} dg}| |7 } || 7 }| |fS )Nrz   r   r   r   r   r   r   list_add_inplace_heterogeneous0  s
    r   c                 C   s   t t| }|| S r   rA   rD   r   r   r   r   r   list_mul7  s    r   c                 C   s   t t| }|| S r   rA   r   r   r   r   	list_mul2;  s    r   c                 C   s   t t| }||9 }|S r   rA   r   r   r   r   list_mul_inplace?  s    r   c                 C   s    t t| }t||rdndfS )NTF)rB   r5   bool)rD   r   r   r   r   	list_boolD  s    r   c                 C   s   t | t |kS r   rF   r   r   r   r   
eq_usecaseH  s    r   c                 C   s   t | t |kS r   rF   r   r   r   r   
ne_usecaseK  s    r   c                 C   s   t | t |kS r   rF   r   r   r   r   
gt_usecaseN  s    r   c                 C   s   t | t |kS r   rF   r   r   r   r   
ge_usecaseQ  s    r   c                 C   s   t | t |k S r   rF   r   r   r   r   
lt_usecaseT  s    r   c                 C   s   t | t |kS r   rF   r   r   r   r   
le_usecaseW  s    r   c                 C   s8   t t| }|}|d d  }||u ||u||u ||ufS r   rA   )rD   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   )rN   r   r   r   r   r   bool_list_usecase`  s    
r   c                 C   s,   |   }|   }d| d< | | | ||fS )NrQ   r   r[   rU   rN   ru   r   r'   r   r   r   reflect_simplei  s
    
r   c                 C   s<   |d rg d} |   }|   }d| d< | | | ||fS )Nr   )g      &@g      6@g     @@g      F@rQ   r   r   r   r   r   reflect_conditionalp  s    
r   c                 C   s   |  d td S rJ   )rH   ZeroDivisionErrorrN   r   r   r   reflect_exceptionz  s    
r   c                 C   s   |  |  | |u S r   )rH   r[   )rN   ru   r   r   r   reflect_dual~  s    r   c                   @   s  e Zd Zdd Zdd Zdd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 Z4e56e7j8dfkdgdhdi Z9djdk Z:dldm Z;dndo Z<dpdq Z=drds Z>dtdu Z?dvdw Z@dxdy ZAdzd{ ZBd|d} ZCd~d ZDdS )	TestListsc                 C   s@   t }t|tjtjtjf}|j}| |ddd|ddd d S )Nrz   r-   r?   )r)   r   r   int32entry_pointassertEqualselfpyfuncZ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 )Nrz   r-   r?      rX      )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   rD   eqr   r   r   check_unary_with_size  s    zTestLists.check_unary_with_sizec                 C   s   |  t d S r   )r   rE   r   r   r   r   test_constructor  s    zTestLists.test_constructorc                 C   sz   |    tddt}| tj}|  W d    n1 s>0    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   rG   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 )
Nrz   g      $@y      ?      @   g      1@g      ,@r2   Tr   )npr   arrayrI   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   rP   r   r   r   r   test_append  s    zTestLists.test_appendc                 C   s   | j tdd d S NF)r   )r   rR   r   r   r   r   test_append_heterogeneous  s    z#TestLists.test_append_heterogeneousc                 C   s   |  t d S r   )r   rW   r   r   r   r   test_extend  s    zTestLists.test_extendc                 C   s   | j tdd d S r   )r   rY   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   rX   (   r   rz   r-   rS   r?   )r]   r   r   )r   r   r   rD   rO   r   r   r   r   	test_pop1  s    ,
zTestLists.test_pop1c                 C   s   |    tddt}| t}|dd W d    n1 s@0    Y  | t|jd | t}|dd W d    n1 s0    Y  | t|jd d S )NTr   r   rX   zpop from empty listrz   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   rz   r-   rS   r   r?   rK   )r   r   r   )r   r   r   rD   indicesrO   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   ra   r   r   r   r   test_getitem  s    zTestLists.test_getitemc                 C   s   |  t d S r   )r   rb   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   rX   r   r   rz   r-   rS   r   r?   r   	itertoolsproductr   )	r   r   r   sizesrD   r   rd   re   r   r   r   r   check_slicing2  s    &zTestLists.check_slicing2c                 C   s   |  t d S r   )r   rf   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   )rk   r   r   r   r   )
r   r   r   r   rD   rm   r   rd   re   r   r   r   r   test_setslice2  s    &zTestLists.test_setslice2c           
   	   C   s   t }tdd|}dD ]p}dd|d dd| d	 | d | g}g d
}t|||D ].\}}}|||||}	| ||||||	 qVqd S NTr   r;   r   rz   r-   rS   r   r?   )r   rz   rS   r-   )rh   r   r   r   r   
r   r   r   rD   r   Zstepsrd   re   rg   r   r   r   r   test_getslice3  s    &zTestLists.test_getslice3c           
   	   C   s   t }tdd|}dD ]p}dd|d dd| d	 | d | g}g d
}t|||D ].\}}}|||||}	| ||||||	 qVqd S r   )rl   r   r   r   r   r   r   r   r   test_setslice3  s    &zTestLists.test_setslice3c                 C   sz   |    t}tdd|}|ddddd | t }|dddd	d W d    n1 sZ0    Y  | d
t|j d S )NTr   rX   r2   r   r-   rz   rj   r?   zcannot resize)r   rn   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   ro   r   r   r   r   test_delslice0  s    zTestLists.test_delslice0c                 C   s   |  t d S r   )r   rp   r   r   r   r   test_delslice1  s    zTestLists.test_delslice1c                 C   s   |  t d S r   )r   rq   r   r   r   r   test_delslice2   s    zTestLists.test_delslice2c                 C   sh   |    t}tdd|}| t}|dddd W d    n1 sH0    Y  | t|jd d S )NTr   r2   rz   r-   r   zslice step cannot be zero)r   rh   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   rx   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   r{   r   r   r   r   test_contains1  s    zTestLists.test_containsc                 C   sf   z|| }W nD t yP   | t  ||  W d    n1 sB0    Y  Y n0 | || | 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   rz   rX   r2   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   rz   r-   rS   r   r?   )r   r   r   r   )r   r   r   rD   r   r   rd   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   rD   r   r   rd   re   r   r   r   test_index3N  s    .zTestLists.test_index3c                 C   sV   t }tdd|}d}| tj| |dddd W d    n1 sH0    Y  d S )NTr   zarg "start" must be an Integer.r2   r   invalidrX   r   r   assertRaisesRegexr   r   r   r   r   msgr   r   r   test_index_exception1X  s
    zTestLists.test_index_exception1c                 C   sV   t }tdd|}d}| tj| |dddd W d    n1 sH0    Y  d S )NTr   zarg "stop" must be an Integer.r2   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   rz   rX      )r   r   r   r   r   r   rD   r   r   r   r   r   test_removef  s    
zTestLists.test_removec                 C   sd   |    t}tdd|}| t}|dd W d    n1 sD0    Y  | t|jd d S )NTr   r2   rK   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   rX      )r   r   r5   r   r   r   r   r   
test_countv  s    zTestLists.test_countc                 C   s   |  t d S r   )r   rs   r   r   r   r   
test_clear|  s    zTestLists.test_clearc                 C   s   |  t d S r   )r   rv   r   r   r   r   	test_copy  s    zTestLists.test_copyc                 C   sL   t dd|}g d}t||D ]$\}}|||}| |||| q"d S )NTr   r   r?   2   ,  r   )r   r   r   r   r   rD   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  )rz   r-   r?   r   rS   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 d    n1 sD0    Y  tjdrtt	d}|
dd | t |dd	 W d    n1 s0    Y  d S )
NTr   rz   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   rz   r?   )r   r   r   )r   r   r   rD   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 NrS   r!   )lstr   r   r   inner  s    z*TestLists.test_list_passing.<locals>.innerc                    s   t t| } |S r   rA   rV   r,  r   r   outer  s    z*TestLists.test_list_passing.<locals>.outerrX   )rX   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   )rz   r-   r2  )rz   r-   r?   r2  )r2  r3  ))rz   r-   r   r3  ))      ?r         @r3  ))r4  r   g      @r3  r   )r   r   r   r   r1  r   _test_compare  s    zTestLists._test_comparec                 C   s   |  t d S r   )r7  r   r   r   r   r   test_eq  s    zTestLists.test_eqc                 C   s   |  t d S r   )r7  r   r   r   r   r   test_ne  s    zTestLists.test_nec                 C   s   |  t d S r   )r7  r   r   r   r   r   test_le  s    zTestLists.test_lec                 C   s   |  t d S r   )r7  r   r   r   r   r   test_lt  s    zTestLists.test_ltc                 C   s   |  t d S r   )r7  r   r   r   r   r   test_ge  s    zTestLists.test_gec                 C   s   |  t d S r   )r7  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)  r/  r7  r8  r9  r:  r;  r<  r=  r?  r@  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   sN   |  t}d V  W d    n1 s&0    Y  |d urJ| 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   r1  r   r   check
  s    z'TestUnboxing.check_unary.<locals>.checkr6  )r   r   rI  r   r1  r   check_unary  s    zTestUnboxing.check_unaryc                 C   s&   |  t}|ddg |ddg d S )Nrz   r-                 ?y              @)rJ  r    r   rI  r   r   r   test_numbers  s    
zTestUnboxing.test_numbersc                 C   s2   |  t}|ddg |ddg |g d d S )Nr2  )r?   r   )rz                  @)r?   y              @)r   r   r   )rJ  r#   rL  r   r   r   test_tuples  s    
zTestUnboxing.test_tuplesc                 C   s   |  t}|dg df d S )Nrz   )r-   r?   r   )rJ  r%   rL  r   r   r   test_list_inside_tuple  s    
z#TestUnboxing.test_list_inside_tuplec                 C   s   |  t}|dddgf d S )Nrz   r,   )r?   )rJ  r&   rL  r   r   r    test_list_of_tuples_inside_tuple  s    
z-TestUnboxing.test_list_of_tuples_inside_tuplec                 C   sl  d}t }tdd|}ddg}| | || W d    n1 sF0    Y  | |ddg | | |ddg W d    n1 s0    Y  | |  |dddgf W d    n1 s0    Y  | |" |tdddg W d    n1 s0    Y  ddg}| t}|| W d    n1 s@0    Y  d	}| t|j|	t
j d S )
Nzcan't unbox heterogeneous listTr   rz   g      @rN  rz   )r-   r?   zFcan't unbox heterogeneous list: UniTuple({0} x 1) != UniTuple({0} x 2))r   r   rH  r   r   r   rG  r   r   formatr   intp)r   r  r   r   r+  r   r   r   r   test_errors#  s$    &*.2(zTestUnboxing.test_errorsN)rA  rB  rC  __doc__
contextlibcontextmanagerrH  rJ  rM  rO  rP  rQ  rU  r   r   r   r   rF    s   
rF  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|}g ddgfg dg dfg}|D ]\}}t|}t|}|||}| ||R |||}	| |	| | || | |d |u |	d |u  ~~	W d    q01 s0    Y  q0d S )NTr   )r4  r   r5  r           )g      @g      @g      @g       @g      "@r   )r   rB   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   s   t }tdd|}g d}| |R | t || W d   n1 sN0    Y  | |g d W d   n1 s|0    Y  dS )ze
        When the function exits with an exception, lists should still be
        reflected.
        Tr   r3  N)rz   r-   r?   rK   )r   r   r[  r   r   r   )r   r   r   rN   r   r   r   test_reflect_exception[  s    &z)TestListReflection.test_reflect_exceptionc                 C   sb   t }tdd|}g d}|dd }|||}|||}| || | || | || dS )zg
        When the same list object is reflected twice, behaviour should
        be consistent.
        Tr   r3  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   ~  r1   z9TestListReflection.test_reflect_clean.<locals>.<listcomp>c                 S   s   g | ]}t |qS r   rc  r.   r   r   r   r0     r1   N)r   r   r   )r   r   rN   idsr   r   r   test_reflect_cleanw  s
    z%TestListReflection.test_reflect_cleanN)
rA  rB  rC  rV  r^  r_  r`  ra  rb  rf  r   r   r   r   rY  @  s   rY  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)rA  rB  rC  rj  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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?   rX   ri  r   )r   r   arangeastyperT  rB   rj  )r   r   r   conri  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   ro  r   r   r   r     s    z=TestListManagedElements.test_reflect_passthru.<locals>.pyfuncrp  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 )Nr2   )rH   r   rm  rn  rT  rq  r   r   r   r     s    z=TestListManagedElements.test_reflect_appended.<locals>.pyfuncrr  rs  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 )Nr2   rz   r   rm  rq  r   r   r   r     s    z<TestListManagedElements.test_reflect_setitem.<locals>.pyfuncrr  rs  r   r   r   test_reflect_setitem  s    z,TestListManagedElements.test_reflect_setitemc                 C   s   dd }|  | d S )Nc                 S   s   |    d S r   r[   rq  r   r   r   r     s    z;TestListManagedElements.test_reflect_popped.<locals>.pyfuncrr  rs  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 )Nrz   r   )r   r   rm  rn  rT  rq  r   r   r   r     s    z;TestListManagedElements.test_reflect_insert.<locals>.pyfuncNrr  rs  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  )r5   rH   r   rm  rn  rT  ro  rO   r   r   r   r     s    z3TestListManagedElements.test_append.<locals>.pyfuncTr   rl  r   rj  r   r   r   ri  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  rZ  rz   )r5   rH   r   rm  r4   size)ro  rO   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 )NrX   r-   r   r   r5   rH   r   rm  r{  r   r   r   r     s
    z;TestListManagedElements.test_reassign_refct.<locals>.pyfuncTr   rl  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 )NrX   r-   r   r  r{  r   r   r   r     s    z6TestListManagedElements.test_get_slice.<locals>.pyfuncTr   rl  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 )NrX   r-   r   rz   r?   r  r{  r   r   r   r     s
    z6TestListManagedElements.test_set_slice.<locals>.pyfuncTr   rl  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   rz   r-   r5   rH   r   rm  r"   r[   r{  r   r   r   r   	  s    
z0TestListManagedElements.test_pop.<locals>.pyfuncTr   rl  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  rz   r-   r  r{  r   r   r   r     s    z4TestListManagedElements.test_pop_loc.<locals>.pyfuncTr   rl  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  rz   r?   r2   r  r{  r   r   r   r   +  s
    
z6TestListManagedElements.test_del_range.<locals>.pyfuncTr   rl  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 Nr2   r   )r5   rH   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)rA  rB  rC  rV  rp  rt  ru  rw  ry  rz  r   r  r  r  r  r  r  r  r  r   r   r   r   rk    s    	rk  c                    s    fdd}|S )Nc                    sb   |    | t&} | g|R i | W d    n1 s>0    Y  d}| |t|j d S )Nz-cannot reflect element of reflected container)r   r   rG  r   r   r   )r   r   kwargsr   Z
expect_msgfnr   r   wrappedJ  s
    4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   rl  )rt   r  r   rj  )	r   r   r   r  Zexpect_argsri  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   rv  r/   rO   r   r   r   r0   i  r1   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  rs  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 d    n1 s0    Y  | dt|j | t}|| W d    n1 s0    Y  | dt|j | t}|| W d    n1 s*0    Y  | dt|j | t}|| W d    n1 sp0    Y  | dt|j d S )Nc                 S   s   | d S Nrz   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  r1   z@TestListOfList.test_heterogeneous_list_error.<locals>.<listcomp>rX   c                 S   s   g | ]}t |d  qS rK  r   Zonesr  r   r   r   r0   u  r1   c                 S   s   g | ]}t |qS r   r  r  r   r   r   r0   v  r1   rR  rz   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   r5   r   rG  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 )NrS   {   r   )l1r  r   r   r   r     s    
z:TestListOfList.test_list_of_list_reflected.<locals>.pyfuncTr   r   rz   r-   r?   r   rX   )r   rB   r   )r   r   r   r  r  ri  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     r1   z:TestListOfList.test_heterogeneous_list.<locals>.<listcomp>rX   c                 S   s   g | ]}t |qS r   r  r  r   r   r   r0     r1   Tr   )r5   r   r   )r   r   r  r   Zl1_gotr   r   r   test_heterogeneous_list  s
    $z&TestListOfList.test_heterogeneous_listc                 C   s|   dd }t dgt dd gg}| || | t}| || W d    n1 s\0    Y  | dt|j d S )Nc                 S   s   |   S r   rx  r   r   r   r   bar  s    z$TestListOfList.test_c01.<locals>.barr   r2   rK  r  )r   r  r  r   rG  r   r   r   r   r  rr   r   r   r   test_c01  s    *zTestListOfList.test_c01c                 C   sd   dd }t dgg}| tj}| || W d    n1 sD0    Y  | 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   sx   dd }t dgg}| tj}| || W d    n1 sD0    Y  | dtdt|d t	|j
 d S )Nc                 S   s   | }d|d< |S Nrz   r   r   r   fr   r   r   r    s    z$TestListOfList.test_c03.<locals>.barr?   1invalid setitem with value of {} to element of {}rz   r   r   rm  r   r   r   r  r   rS  r   r   r   r  r   r   r   test_c03  s    *
zTestListOfList.test_c03c                 C   s|   dd }t dgg}| tj}| || W d    n1 sD0    Y  | 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  r2   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      r1   z8TestListOfList.test_c05.<locals>.bar.<locals>.<listcomp>r2   r   )r   r   rm  rn  rT  r  r   r   r   r    s    *z$TestListOfList.test_c05.<locals>.barr?   )r   rm  rn  rT  r  r   r  r  r   r   r   test_c05  s    zTestListOfList.test_c05c                 C   sd   dd }t dgg}| tj}| || W d    n1 sD0    Y  | 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   	  r1   z8TestListOfList.test_c06.<locals>.bar.<locals>.<listcomp>r2   r   )r   r   rm  r  r   r   r   r    s    "z$TestListOfList.test_c06.<locals>.barr?   invalid setitem with value)	r   rm  r   r   r   r  r   r   r   r  r   r   r   test_c06  s
    *zTestListOfList.test_c06c                 C   st   |    dd }tdgg}tdd|}| t}|| W d    n1 sT0    Y  | dt|j d S )Nc                 S   s   | d S )Nir   r   r   r   r   r    s    z$TestListOfList.test_c07.<locals>.barr?   Tr   zgetitem out of range)	r   r   rm  r   r   r   r   r   r   r   r  r  r   r   r   r   r   test_c07  s    &zTestListOfList.test_c07c                 C   sn   |    dd }g d}tdd|}| t}|| W d    n1 sN0    Y  | dt|j d S )Nc                 S   s   d| d< | S )Nr   rX   r   r   r   r   r   r  !  s    z$TestListOfList.test_c08.<locals>.barr3  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   s^   dd }g d}|  tj}| || W d    n1 s>0    Y  | 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>.barr3  r  )r   r   r   r  r   r   r   r  r   r   r   test_c09+  s
    *zTestListOfList.test_c09c                 C   s(   dd }g dg d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>.barr3  r   rX   r   r  r  r   r   r   test_c105  s    zTestListOfList.test_c10c                 C   s(   dd }g dg d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>.barr3  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  r1   z+TestListOfList.test_c12.<locals>.<listcomp>r2   )r5   r  r  r   r   r   test_c12G  s    zTestListOfList.test_c12N)rA  rB  rC  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)rA  rB  rC  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   rm  rn  float64r  r   r   r   r0   X  r1   z&Container.__init__.<locals>.<listcomp>)r5   data)r   rD   r   r   r   r  W  s    zContainer.__init__c                 C   s.   t |D ] }| jt|tjg qd S r   )r5   r  rH   r   rm  rn  r  )r   rD   rO   r   r   r   moreZ  s    zContainer.moreN)rA  rB  rC  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  rz   )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   )rh  )r   testerri  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 ry   r   )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 )rz   g333333?r  )r   random)r/   rD   )r  r   r   r0     s   zITestListAndJitClasses.test_jitclass_instance_elements.<locals>.<listcomp>rX   )r  r   r5   rB   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   rC   r?   )r  r  rj  r  r  )r   r  ri  r   r   r   r   test_jitclass_containing_list  s    



z3TestListAndJitClasses.test_jitclass_containing_listN)rA  rB  rC  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                    sP   | j d u rdd S  t| tj  | j g d  t| dd dd S )Nc                 S   s   t | S r   r	   r   r   r   r   <lambda>  r1   zTTestListInitialValues.test_homogeneous_and_literal.<locals>.ol_bar.<locals>.<lambda>r3  literal_valueFc                 S   s   | S r   r   r   r   r   r   r    r1   )initial_value
assertTrue
isinstancer   r  r   hasattrr   r   r   r   ol_bar  s    
zBTestListInitialValues.test_homogeneous_and_literal.<locals>.ol_barc                     s   g d}  |  d S )Nr3  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    r1   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   g d}  |  d S )N)rK  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 u rdd S  t| tj  | j g d dd S )Nc                 S   s   t | S r   r  r  r   r   r   r    r1   zQTestListInitialValues.test_mutation_not_carried.<locals>.ol_bar.<locals>.<lambda>r3  c                 S   s   | S r   r   r  r   r   r   r    r1   )r  r  r  r   r  r   r  r   r   r   r    s
    
z?TestListInitialValues.test_mutation_not_carried.<locals>.ol_barc                     s   g d} |  d  |  d S )Nr3  r   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g d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   r0  r   r   r   nop  s    zLTestListInitialValues.test_mutation_not_carried_single_function.<locals>.nopr3  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   g d}  |  |  d | S )Nr3  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   g dg dg}  |  d S )N)rz   r-   r?   r   rX   )rz   r-   r?   r   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)	rA  rB  rC  rV  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 )Nrz   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g dd	   t|d
 tj  |d
 jd td  |d
 jd td dd S )Nr   rz   r   r-   Cr?   Fr3  )	reflectedr  r   catr2   c                 S   s   | S r   r   r   r   r   r   r  *  r1   zQTestLiteralLists.test_literal_value_passthrough.<locals>.ol_bar.<locals>.<lambda>)r  r  r   LiteralListr  rB   r   literalArrayr  r  rT  )r   lvr   r   r   r    s    z?TestLiteralLists.test_literal_value_passthrough.<locals>.ol_barc                     s4   g d} ddg}t d}dd|| |g} | d S )Nr3  r  r2   rX   rz   r   r  )ZotherhomogeneouslistZotherheterogeneouslistr  rN   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hrO   rz   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&nt | trtt |trtt| |D ]\}} || q^nt | tjrt |tjrt| j |j D ]$\\}}\}} ||  || qn^t | trt |trt|  | D ]$\\}}\}} ||  || qn	| | d S r   )
r  r   r  rh  r  rB   LiteralStrKeyDictitemsdictr   )r   r   rO   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  r1   zZTestLiteralLists.test_literal_value_involved_passthrough.<locals>.ol_bar.<locals>.<lambda>)r  r  r   r  r  r  r  r  r  ZDictTypeZunicode_typerT  r  Z
complex128)r   ZdlvZinner_literalZ
inner_dictZouter_literalr   )r  r   r  ;  s2    

zHTestLiteralLists.test_literal_value_involved_passthrough.<locals>.ol_barc                     s4   ddddidt ddgdg dd	}  |  d S )
Nrz   r   r  r  rX   )r  rO   r-   )rK  rN                @)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 ]|}|  |j\ | tj}t|  W d    n1 s0    Y  d}| |t|j W d    ql1 s0    Y  qld S )Nc                  S   s   ddg} d| d< d S )Nr   rz   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   rz   r   r   r   r   r   r   delitemx  s    z7TestLiteralLists.test_mutation_failure.<locals>.delitemc                  S   s   ddg} |  d d S )Nr   rz   rN  r   r   r   r   r   rH   |  s    z6TestLiteralLists.test_mutation_failure.<locals>.appendc                  S   s   ddg} |  ddg d S )Nr   rz   rN  r  )rU   r   r   r   r   rU     s    z6TestLiteralLists.test_mutation_failure.<locals>.extendc                  S   s   ddg} |  dd d S )Nr   rz   r   rN  )r   r   r   r   r   r     s    z6TestLiteralLists.test_mutation_failure.<locals>.insertc                  S   s   ddg} |  d d S Nr   rz   )r   r   r   r   r   r     s    z6TestLiteralLists.test_mutation_failure.<locals>.removec                  S   s   ddg} |    d S r  rx  r   r   r   r   r[     s    z3TestLiteralLists.test_mutation_failure.<locals>.popc                  S   s   ddg} |    d S r  )rr   r   r   r   r   rr     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subTestrA  r   r   r   r   r   r   r   )r   r  r  rH   rU   r   r   r[   rr   r	  r   Zillegalstestr   ri  r   r   r   test_mutation_failurer  s&    (z&TestLiteralLists.test_mutation_failurec                 C   s"   t dd }| | |  d S )Nc                  S   s*   g d} g }dD ]}| | | q|S )Nr   rz   r   r-   r   r?   r   r   r   rX   r*   abc)rH   r   rN   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   g d} t | S )Nr  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,   g d} g }t dD ]}||| v  q|S )Nr  )r   r   r-   r   )r   rH   r  r   r   r   r    s
    z+TestLiteralLists.test_contains.<locals>.foor  r  r   r   r   r     s    
zTestLiteralLists.test_containsc                 C   sZ   t dd }| tj}|d W d    n1 s60    Y  d}| |t|j d S )Nc                 S   s   ddg}||  S r  r   r   rN   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   ri  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   sX   t dd }| tj}|  W d    n1 s40    Y  d}| |t|j d S )Nc                  S   s   g d} | d d S )N)r   r   rz   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   sZ   t dd }| tj}|d W d    n1 s60    Y  d}| |t|j d S )Nc                 S   s   ddg}d|| < d S )Nr   rz   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 )Nrz   r?   r   r   r-   r   r   r  r   r   r   r    s    
z(TestLiteralLists.test_unify.<locals>.foo)irj   r  )r   r  r   r   r   r   
test_unify  s    
zTestLiteralLists.test_unifyc                 C   sZ   t dd }| tj}|d W d    n1 s60    Y  d}| |t|j d S )Nc                 S   s:   | d dkrg d}nddg}|d |d |d |d fS )Nrz   r?   )r   rz   rN  r   r-   r   r   r  r   r   r   r    s    
z,TestLiteralLists.test_not_unify.<locals>.foorj   zCannot unify LiteralListr  r  r   r   r   test_not_unify  s    
&zTestLiteralLists.test_not_unifyc                 C   sX   t dd }| tj}|  W d    n1 s40    Y  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  )rt   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  +  r1   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)rA  rB  rC  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   rW  r   r8   r!  ctypesr$  numpyr   Znumba.core.compilerr   r   Znumbar   r   r   r   r	   rD  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+   r6   r7   r:   r=   r>   r@   rE   rG   rI   rP   rR   rW   rY   r\   r]   r_   ra   rb   rf   rh   rk   rl   rn   ro   rp   rq   rs   rv   rx   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   rF  rY  rg  rk  r  r  objectr  r  r  r  r  rA  mainr   r   r   r   <module>   s   
		
	
	
  {DC ? }	8x  (
