o
    8ήc                     @   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 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      d S N xr   r   =/tmp/pip-target-vg8gfxp4/lib/python/numba/tests/test_lists.pynoop      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      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      r9   c                   C   r.   )Nc                 S   s   g | ]
}|d  dkr|qS )r0   r   r   r1   r   r   r   r3   P   s    z'list_comprehension2.<locals>.<listcomp>r5   r6   r   r   r   r   list_comprehension2O   r:   r;   c                   C   r.   )Nc                 S   s   g | ]}t |d qS r/   )mathpowr1   r   r   r   r3   S       z'list_comprehension3.<locals>.<listcomp>r5   r6   r   r   r   r   list_comprehension3R   r:   r?   c                   C   r.   )Nc                 S   s"   g | ]}t d D ]}|| qqS r5   r8   )r2   r   r)   r   r   r   r3   V   s   " z'list_comprehension4.<locals>.<listcomp>r5   r6   r   r   r   r   list_comprehension4U   r:   rB   c                   C      dd t dD S )Nc                 S   s   g | ]}|d  qS r/   r   r1   r   r   r   r3   Y   r4   z'list_comprehension5.<locals>.<listcomp>r5   rA   r   r   r   r   list_comprehension5X      rD   c                   C   rC   )Nc                 S   s   g | ]}d d t |D qS )c                 S      g | ]}|qS r   r   r1   r   r   r   r3   \       z2list_comprehension6.<locals>.<listcomp>.<listcomp>rA   )r2   r)   r   r   r   r3   \   s    z'list_comprehension6.<locals>.<listcomp>   rA   r   r   r   r   list_comprehension6[   rE   rI   c                 C   s   t t| S r   listr8   nr   r   r   list_constructor_      rN   c                   C   s   t  S r   rK   r   r   r   r   list_constructor_emptyb   s   rQ   c                 C   s   t  }|| S r   )rK   append)rM   r)   r   r   r   #list_constructor_empty_but_typeableg   s   
rS   c                 C   *   g }| d t| D ]}| | q|S N*   rR   r8   rM   lir   r   r   list_appendm   
   
r[   c                 C   rT   )N      E@rW   rX   r   r   r   list_append_heterogeneoust   r\   r^   c                 C   s:   g }| t|  | |d d  | t| dd |S )Nr   extendr8   rM   rY   r   r   r   list_extend{   s
   rc   c                 C   s>   g }| t|  | |d d  | d | dg |S )Nr_   )   rV   g     ^@r`   rb   r   r   r   list_extend_heterogeneous   s   
re   c                 C   s@   t t| }d}t|dkr|t||  7 }t|dks|S Nr   )rK   r8   r$   pop)rM   rY   r    r   r   r   	list_pop0   s   rh   c                 C   s   t t| }||}||fS r   )rK   r8   rg   )rM   rZ   rY   r   r   r   r   	list_pop1   s   
ri   c                 C   s   t t| }t|S r   rK   r8   r$   rb   r   r   r   list_len      rk   c                 C   s\   t t| }d}tt|D ]
}||||  7 }qtt| dD ]
}||||  8 }q!|S rf   rj   rM   rY   r    rZ   r   r   r   list_getitem   s   rn   c                 C   sz   t t| }d}tt|D ]
}|||  ||< qtt| dD ]
}|||  ||< q!tt|D ]}||| 7 }q2|S rf   rj   rm   r   r   r   list_setitem   s   ro   c                 C   s   t t| }||| S r   rJ   rM   startstoprY   r   r   r   list_getslice2   s   rs   c                 C   s   t t| }|||| S r   rJ   )rM   rq   rr   steprY   r   r   r   list_getslice3   s   ru   c                 C   s.   t t| }t tdd| }||||< |S Nd   rJ   )rM   n_sourcerq   rr   rY   r!   r   r   r   list_setslice2   s   ry   c                 C   sN   t t| }|||| }tt|D ]
}||  d7  < q|||||< |S rv   rj   )rM   rq   rr   rt   rY   r!   rZ   r   r   r   list_setslice3   s   rz   c                 C   s,   t t| }t tdd| ||||< |S rv   rJ   )rM   n_srcrq   rr   rt   rY   r   r   r   list_setslice3_arbitrary   s   r|   c                 C   s   t t| }|d d = |S r   rJ   rb   r   r   r   list_delslice0      
r}   c                 C   s$   t t| }||d = |d |= |S r   rJ   rp   r   r   r   list_delslice1   s   

r   c                 C   s   t t| }|||= |S r   rJ   rp   r   r   r   list_delslice2   r~   r   c                 C      t t| }|  |S r   )rK   r8   clearrb   r   r   r   
list_clear      r   c                 C   s&   t t| }| }|d ||fS rU   )rK   r8   copyrR   )rM   rY   llr   r   r   	list_copy   s   
r   c                 C   s2   t t| }d}t|D ]
\}}||| 7 }q|S rf   )rK   r8   	enumerate)rM   rY   r    rZ   r!   r   r   r   list_iteration   s
   r   c              	   C   sH   t t| }d|v d|v | d |v | |v d|vd|v| d |v| |vfS Nr      rJ   rb   r   r   r   list_contains   s   r   c                 C   s   t t| dd}||S Nr   r_   rK   r8   indexrM   r!   rY   r   r   r   list_index1   s   
r   c                 C   s   t t| dd}|||S r   r   )rM   r!   rq   rY   r   r   r   list_index2   s   r   c                 C   s   t t| dd}||||S r   r   )rM   r!   rq   rr   rY   r   r   r   list_index3   s   r   c                 C   s"   t t| d dd}|| |S )Nr   r_   )rK   r8   remover   r   r   r   list_remove  s   
r   c                 C   s   t td| }||| |S rf   )rK   r8   insert)rM   posr!   rY   r   r   r   list_insert	  s   r   c                 C   s*   g }t | D ]	}||d@  q||S )NrH   )r8   rR   count)rM   r!   rY   r   r   r   r   
list_count  s   
r   c                 C   r   r   )rK   r8   reverserb   r   r   r   list_reverse  r   r   c                 C   s<   t td| }t tdd| }|| }|d |||fS )Nr   rw   rV   )rK   r8   rR   )mrM   r   r   r    r   r   r   list_add  s
   

r   c                  C   s<   dg} dg}| | }||  }|  d | d | |||fS )Nr          @rH         @rR   )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   rw   rJ   )r   rM   r   r   r   r   r   list_add_inplace*  s   r   c                  C   s$   dg} dg}| |7 } || 7 }| |fS )Nr   r   r   r   r   r   r   list_add_inplace_heterogeneous0  s
   r   c                 C   s   t t| }|| S r   rJ   rM   r!   r   r   r   r   list_mul7  rl   r   c                 C   s   t t| }|| S r   rJ   r   r   r   r   	list_mul2;  rl   r   c                 C   s   t t| }||9 }|S r   rJ   r   r   r   r   list_mul_inplace?  r   r   c                 C   s"   t t| }t||rdfS dfS )NTF)rK   r8   bool)rM   r   r   r   r   	list_boolD  s   r   c                 C   s   t | t |kS r   rP   r   r   r   r   
eq_usecaseH     r   c                 C   s   t | t |kS r   rP   r   r   r   r   
ne_usecaseK  r   r   c                 C   s   t | t |kS r   rP   r   r   r   r   
gt_usecaseN  r   r   c                 C   s   t | t |kS r   rP   r   r   r   r   
ge_usecaseQ  r   r   c                 C   s   t | t |k S r   rP   r   r   r   r   
lt_usecaseT  r   r   c                 C   s   t | t |kS r   rP   r   r   r   r   
le_usecaseW  r   r   c                 C   s8   t t| }|}|d d  }||u ||u||u ||ufS r   rJ   )rM   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   )rY   r   r!   r   r   r   bool_list_usecase`  s   
r   c                 C   s,   |   }|   }d| d< | | | ||fS )Nr]   r   rg   ra   rY   r   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@r]   r   r   r   r   r   reflect_conditionalp  s   

r   c                 C   s   |  d trU   )rR   ZeroDivisionErrorrY   r   r   r   reflect_exceptionz     
r   c                 C   s   |  |  | |u S r   )rR   rg   )rY   r   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 Z2e34e5j6dbkdcddde Z7dfdg Z8dhdi Z9djdk Z:dldm Z;dndo Z<dpdq Z=drds Z>dtdu Z?dvdw Z@dxdy ZAdzd{ ZBd|S )~	TestListsc                 C   s@   t }t|tjtjtjf}|j}| |ddd|ddd d S )Nr   r0   rH   )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 )Nr   r0   rH      rd      )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nopython)r   rH      F   i  )r   assertPreciseEqualr   )r   r   preciser   rM   eqr   r   r   check_unary_with_size  s
   zTestLists.check_unary_with_sizec                 C      |  t d S r   )r   rN   r   r   r   r   test_constructor     zTestLists.test_constructorc                 C   sz   |    tddt}| tj}|  W d    n1 sw   Y  t|j}| d| | d| | d| d S )NTr   z!Cannot infer the type of variablezlist(undefined)z&For Numba to be able to compile a list)	disable_leak_checkr   rQ   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 )
Nr   g      $@y      ?      @   g      1@g      ,@r5   Tr   )npr   arrayrS   r   r   )r   argsr   argr   expectedgotr   r   r   #test_constructor_empty_but_typeable  s   $z-TestLists.test_constructor_empty_but_typeablec                 C   r   r   )r   r[   r   r   r   r   test_append  r   zTestLists.test_appendc                 C      | j tdd d S NF)r   )r   r^   r   r   r   r   test_append_heterogeneous  rE   z#TestLists.test_append_heterogeneousc                 C   r   r   )r   rc   r   r   r   r   test_extend  r   zTestLists.test_extendc                 C   r   r   )r   re   r   r   r   r   test_extend_heterogeneous  rE   z#TestLists.test_extend_heterogeneousc                 C   r   r   )r   rh   r   r   r   r   	test_pop0  r   zTestLists.test_pop0c              
   C   sj   t }tdd|}dD ]'}dd|d |d dd| d	 | d fD ]}|||}| |||| q!qd S )
NTr   rd   (   r   r   r0   r_   rH   )ri   r   r   )r   r   r   rM   rZ   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 w   Y  | t|jd | t}|dd W d    n1 sCw   Y  | t|jd d S )NTr   r   rd   zpop from empty listr   zpop index out of range)r   r   ri   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
| q&qd S )NTr   r   r   r   r0   r_   r   rH   rV   )r   r   r   )r   r   r   rM   indicesrZ   r   r   r   r   test_insert  s   .zTestLists.test_insertc                 C   r   r   )r   rk   r   r   r   r   test_len  r   zTestLists.test_lenc                 C   r   r   )r   rn   r   r   r   r   test_getitem  r   zTestLists.test_getitemc                 C   r   r   )r   ro   r   r   r   r   test_setitem  r   zTestLists.test_setitemc           	   	   C   s   t dd|}ddg}|D ]0}dd|d dd	| d
 | d | g}t||D ]\}}||||}| ||||| q(qd S NTr   rd   r   r   r   r0   r_   r   rH   r   	itertoolsproductr   )	r   r   r   sizesrM   r   rq   rr   r   r   r   r   check_slicing2  s   &zTestLists.check_slicing2c                 C   r   r   )r   rs   r   r   r   r   test_getslice2  r   zTestLists.test_getslice2c           
   	   C   s   t }tdd|}ddg}t||D ]4\}}dd|d dd	| d
 | d | g}t||D ]\}}|||||}	| ||||||	 q0qd S r   )ry   r   r   r   r   )
r   r   r   r   rM   r{   r   rq   rr   r   r   r   r   test_setslice2  s   &zTestLists.test_setslice2c           
   	   C      t }tdd|}dD ]8}dd|d dd| d	 | d | g}g d
}t|||D ]\}}}|||||}	| ||||||	 q+qd S NTr   r@   r   r   r0   r_   r   rH   )r   r   r_   r0   )ru   r   r   r   r   
r   r   r   rM   r   stepsrq   rr   rt   r   r   r   r   test_getslice3     &zTestLists.test_getslice3c           
   	   C   r  r  )rz   r   r   r   r   r  r   r   r   test_setslice3  r	  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 s-w   Y  | d
t|j d S )NTr   rd   r5   r   r0   r   rw   rH   zcannot resize)r   r|   r   r   
ValueErrorr   r   r   r   r   r   r   r   r   r   test_setslice3_resize  s   zTestLists.test_setslice3_resizec                 C   r   r   )r   r}   r   r   r   r   test_delslice0  r   zTestLists.test_delslice0c                 C   r   r   )r   r   r   r   r   r   test_delslice1  r   zTestLists.test_delslice1c                 C   r   r   )r   r   r   r   r   r   test_delslice2   r   zTestLists.test_delslice2c                 C   sh   |    t}tdd|}| t}|dddd W d    n1 s$w   Y  | t|jd d S )NTr   r5   r   r0   r   zslice step cannot be zero)r   ru   r   r   r  r   r   r   r  r   r   r   test_invalid_slice#  s   zTestLists.test_invalid_slicec                 C   r   r   )r   r   r   r   r   r   test_iteration+  r   zTestLists.test_iterationc                 C   r   r   )r   r   r   r   r   r   test_reverse.  r   zTestLists.test_reversec                 C   r   r   )r   r   r   r   r   r   test_contains1  r   zTestLists.test_containsc                 C   sl   z|| }W n% t y+   | t  ||  W d    Y d S 1 s#w   Y  Y d S w | || | 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   r   rd   r5   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 ](}dd|d |d |d dd	| d
 | d g	}|D ]}| ||d||f q,qd S NTr   r   r  r   r   r0   r_   r   rH   )r   r   r   r  )r   r   r   rM   r!   r   rq   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 q0qd S r  )r   r   r   r   r   r  )r   r   r   rM   r!   r   rq   rr   r   r   r   test_index3N  s   .zTestLists.test_index3c                 C   s@   t }tdd|}d}dD ]}|||}| |||| qd S )NTr   r   )r   r   rd      )r   r   r   r   r   r   rM   r!   r   r   r   r   test_removeX  s   
zTestLists.test_removec                 C   sd   |    t}tdd|}| t}|dd W d    n1 s"w   Y  | t|jd d S )NTr   r5   rV   zlist.remove(x): x not in list)r   r   r   r   r  r   r   r   r  r   r   r   test_remove_error`  s   zTestLists.test_remove_errorc                 C   s<   t }tdd|}tdD ]}| |d||d| qd S )NTr   rd      )r   r   r8   r   r  r   r   r   
test_counth  s
   zTestLists.test_countc                 C   r   r   )r   r   r   r   r   r   
test_clearn  r   zTestLists.test_clearc                 C   r   r   )r   r   r   r   r   r   	test_copyq  r   zTestLists.test_copyc                 C   sL   t dd|}g d}t||D ]\}}|||}| |||| qd S )NTr   r   rH   2   ,  r   )r   r   r   r   r   rM   r   r   r   r   	check_addt  s   
zTestLists.check_addc                 C   r   r   )r'  r   r   r   r   r   test_add{  r   zTestLists.test_addc                 C   *   t }tdd|}| }| | | d S NTr   )r   r   r   r   r   r   r   r   r   r   test_add_heterogeneous~     z TestLists.test_add_heterogeneousc                 C   r   r   )r'  r   r   r   r   r   test_add_inplace  r   zTestLists.test_add_inplacec                 C   r)  r*  )r   r   r   r+  r   r   r   test_add_inplace_heterogeneous  r-  z(TestLists.test_add_inplace_heterogeneousc                 C   sB   t dd|}dD ]}dD ]}|||}| |||| qq	d S )NTr   r$  )r   r0   rH   r   r_   ir   r   r  r   r   r   	check_mul  s   
zTestLists.check_mulc                 C   r   r   )r1  r   r   r   r   r   test_mul  r   zTestLists.test_mulc                 C   r   r   )r1  r   r   r   r   r   	test_mul2  r   zTestLists.test_mul2c                 C   r   r   )r1  r   r   r   r   r   test_mul_inplace  r   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 s"w   Y  tjdr:t	d}|
dd | t |dd	 W d    d S 1 sPw   Y  d S )
NTr   r   l           darwinz
libc.dylibz###Please ignore the above error message i.e. can't allocate region. It is in fact the purpose of this test to request more memory than can be provided###
zUTF-8l            )r   r   r   r   MemoryErrorsysplatform
startswithctCDLLprintfencode)r   r   r   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   r   rH   )r   r   r   )r   r   r   rM   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 Nr_   r#   )lstr   r   r   inner  s   z*TestLists.test_list_passing.<locals>.innerc                    s   t t| } |S r   rJ   rb   rC  r   r   outer  s   z*TestLists.test_list_passing.<locals>.outerrd   )rd   r   r0  )r   rE  r   rD  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)assertIsr   r   r   r   r   r   r     s   z#TestLists._test_compare.<locals>.eqTr   )r   r0   rJ  )r   r0   rH   rJ  )rJ  rK  ))r   r0   r   rK  ))      ?r         @rK  ))rL  r   g      @rK  r   )r   r   r   r   rI  r   _test_compare  s   zTestLists._test_comparec                 C   r   r   )rO  r   r   r   r   r   test_eq  r   zTestLists.test_eqc                 C   r   r   )rO  r   r   r   r   r   test_ne  r   zTestLists.test_nec                 C   r   r   )rO  r   r   r   r   r   test_le  r   zTestLists.test_lec                 C   r   r   )rO  r   r   r   r   r   test_lt  r   zTestLists.test_ltc                 C   r   r   )rO  r   r   r   r   r   test_ge  r   zTestLists.test_gec                 C   r   r   )rO  r   r   r   r   r   test_gt  r   zTestLists.test_gtc                 C   s*   t }tdd|}| |d|d d S )NTr   rH   )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   rV  r   r   r   test_bool_list  s   zTestLists.test_bool_listN)T)C__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/  r1  r2  r3  r4  unittest
skipUnlessr7  maxsizer?  r@  rF  rO  rP  rQ  rR  rS  rT  rU  rW  rX  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   sT    |  t}d V  W d    n1 sw   Y  |d ur(| t|j| d S d S r   )r   	TypeErrorassertRegexpMatchesr   r   )r   msgr   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   rI  r   r   check  s   z'TestUnboxing.check_unary.<locals>.checkrN  )r   r   rd  r   rI  r   check_unary  s   zTestUnboxing.check_unaryc                 C   s&   |  t}|ddg |ddg d S )Nr   r0                 ?y              @)re  r"   r   rd  r   r   r   test_numbers  s   
zTestUnboxing.test_numbersc                 C   s2   |  t}|ddg |ddg |g d d S )NrJ  )rH   r   )r                  @)rH   y              @)r   r   r   )re  r%   rg  r   r   r   test_tuples  s   
zTestUnboxing.test_tuplesc                 C   s   |  t}|dg df d S )Nr   )r0   rH   r   )re  r'   rg  r   r   r   test_list_inside_tuple     
z#TestUnboxing.test_list_inside_tuplec                 C   s   |  t}|dddgf d S )Nr   r/   )rH   )re  r(   rg  r   r   r    test_list_of_tuples_inside_tuple  rl  z-TestUnboxing.test_list_of_tuples_inside_tuplec                 C   sh  d}t }tdd|}ddg}| | || W d    n1 s#w   Y  | |ddg | | |ddg W d    n1 sFw   Y  | | |dddgf W d    n1 scw   Y  | | |tdddg W d    n1 sw   Y  ddg}| t}|| W d    n1 sw   Y  d	}| t|j|	t
j d S )
Nzcan't unbox heterogeneous listTr   r   g      @ri  r   )r0   rH   zFcan't unbox heterogeneous list: UniTuple({0} x 1) != UniTuple({0} x 2))r   r   rc  r   r   r   r`  r   r   formatr   intp)r   rb  r   r   rB  r   r   r   r   test_errors  s.   

zTestUnboxing.test_errorsN)rY  rZ  r[  __doc__
contextlibcontextmanagerrc  re  rh  rj  rk  rm  rq  r   r   r   r   r_    s    
r_  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 ]H\}}t|}t|}|||}| ||) |||}	| |	| | || | |d |u |	d |u  ~~	W d    n1 s[w   Y  qd S )NTr   )rL  r   rM  r           )g      @g      @g      @g       @g      "@r   )r   rK   assertRefCountr   r   )
r   r   r   samplesdestsrcr   r   pyrescresr   r   r   check_reflection7  s"   

z#TestListReflection.check_reflectionc                 C   r   r   )r}  r   r   r   r   r   test_reflect_simpleG  r   z&TestListReflection.test_reflect_simplec                 C   r   r   )r}  r   r   r   r   r   test_reflect_conditionalJ  r   z+TestListReflection.test_reflect_conditionalc              	   C   s   t }tdd|}g d}| |* | t || W d   n1 s'w   Y  | |g d W d   dS 1 s?w   Y  dS )ze
        When the function exits with an exception, lists should still be
        reflected.
        Tr   rK  N)r   r0   rH   rV   )r   r   rw  r   r   r   )r   r   r   rY   r   r   r   test_reflect_exceptionM  s   
"z)TestListReflection.test_reflect_exceptionc                 C   sn   t }tdd|}g d}|dd }|||}|||}| || | || | t|t| dS )zg
        When the same list object is reflected twice, behaviour should
        be consistent.
        Tr   rK  N)r   r   r   r7  getrefcount)r   r   r   pylistclistr   r   r   r   r   test_reflect_same_listZ  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      g | ]}t |qS r   idr1   r   r   r   r3   p  r4   z9TestListReflection.test_reflect_clean.<locals>.<listcomp>c                 S   r  r   r  r1   r   r   r   r3   r  r4   N)r   r   r   )r   r   rY   idsr   r   r   test_reflect_cleani  s
   z%TestListReflection.test_reflect_cleanN)
rY  rZ  r[  rr  r}  r~  r  r  r  r  r   r   r   r   ru  2  s    ru  c                   @      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_equalw  s   z5ManagedListTestCase.assert_list_element_precise_equalN)rY  rZ  r[  r  r   r   r   r   r  u  s    r  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   rH   rd   r  r   )r   r   arangeastyperp  rK   r  )r   r   r   conr  r   r   r   r   _check_element_equal  s   $
z,TestListManagedElements._check_element_equalc                 C      dd }|  | d S )Nc                 S   r   r   r   r  r   r   r   r     r   z=TestListManagedElements.test_reflect_passthru.<locals>.pyfuncr  r   r   r   r   r   test_reflect_passthru  s   z-TestListManagedElements.test_reflect_passthruc                 C   r  )Nc                 S   s   |  tdtj d S )Nr5   )rR   r   r  r  rp  r  r   r   r   r     s   z=TestListManagedElements.test_reflect_appended.<locals>.pyfuncr  r  r   r   r   test_reflect_appended     z-TestListManagedElements.test_reflect_appendedc                 C   r  )Nc                 S   s   t d| d< d S )Nr5   r   r   r  r  r   r   r   r     rE   z<TestListManagedElements.test_reflect_setitem.<locals>.pyfuncr  r  r   r   r   test_reflect_setitem  r  z,TestListManagedElements.test_reflect_setitemc                 C   r  )Nc                 S   s   |    d S r   rg   r  r   r   r   r     rO   z;TestListManagedElements.test_reflect_popped.<locals>.pyfuncr  r  r   r   r   test_reflect_popped  r  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 )Nr   r   )r   r   r  r  rp  r  r   r   r   r     s   z;TestListManagedElements.test_reflect_insert.<locals>.pyfuncNr  r  r   r   r   test_reflect_insert  s   z+TestListManagedElements.test_reflect_insertc                 C   4   dd }t dd|}| }| }| j||d d S )Nc                  S   s.   g } t dD ]}| t|tj q| S )Nr&  )r8   rR   r   r  r  rp  r  rZ   r   r   r   r     s   z3TestListManagedElements.test_append.<locals>.pyfuncTr   r  r   r  r   r   r   r  r   r   r   r   r        
z#TestListManagedElements.test_appendc                 C   2   dd }t dd|}| }| }| || d S )Nc                  S   sJ   g } t dD ]
}| t| qd}| D ]}|| d|j  7 }q|S )Nr&  rv  r   )r8   rR   r   r  r7   size)r  rZ   r,   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   r  )Nc                  S   s4   g } t dD ]
}| td qtd| d< | S )Nrd   r0   r   r   r8   rR   r   r  r  r   r   r   r     s
   z;TestListManagedElements.test_reassign_refct.<locals>.pyfuncTr   r  r  r  r   r   r   test_reassign_refct     
z+TestListManagedElements.test_reassign_refctc                 C   r  )Nc                  S   s.   g } t dD ]
}| td q| dd S )Nrd   r0   r   r  r  r   r   r   r     s   z6TestListManagedElements.test_get_slice.<locals>.pyfuncTr   r  r  r  r   r   r   test_get_slice  r  z&TestListManagedElements.test_get_slicec                 C   r  )Nc                  S   s:   g } t dD ]
}| td q| dd | dd< | S )Nrd   r0   r   r   rH   r  r  r   r   r   r     s
   z6TestListManagedElements.test_set_slice.<locals>.pyfuncTr   r  r  r  r   r   r   test_set_slice  r  z&TestListManagedElements.test_set_slicec                 C   r  )Nc                  S   sJ   g } t dD ]}| t|d  qt| dkr#|   t| dks| S )N   r   r0   r8   rR   r   r  r$   rg   r  r   r   r   r     s   z0TestListManagedElements.test_pop.<locals>.pyfuncTr   r  r  r  r   r   r   test_pop     
z TestListManagedElements.test_popc                 C   r  )Nc                  S   sL   g } t dD ]}| t|d  qt| dkr$| d t| dks| S )Ni  r   r0   r  r  r   r   r   r     s   
z4TestListManagedElements.test_pop_loc.<locals>.pyfuncTr   r  r  r  r   r   r   test_pop_loc  r  z$TestListManagedElements.test_pop_locc                 C   r  )Nc                  S   s4   g } t dD ]}| t|d  q| dd= | S )Nr  r   rH   r5   r  r  r   r   r   r     s
   
z6TestListManagedElements.test_del_range.<locals>.pyfuncTr   r  r  r  r   r   r   test_del_range  r  z&TestListManagedElements.test_del_rangec                 C   r  )Nc                  S   s&   g } t dD ]
}| dg|  q| S Nr5   r   )r8   rR   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)rY  rZ  r[  rr  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r   r   r   r   r  }  s"    	r  c                    s    fdd}|S )Nc                    sb   |    | t} | g|R i | W d    n1 sw   Y  d}| |t|j d S )Nz-cannot reflect element of reflected container)r   r   r`  r   r   r   )r   r   kwargsr   
expect_msgfnr   r   wrapped<  s   z*expect_reflection_failure.<locals>.wrappedr   )r  r  r   r  r   expect_reflection_failure;  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   r  )r   r  r   r  )	r   r   r   r  expect_argsr  	njit_argsr   r   r   r   r   compile_and_testH  s   
zTestListOfList.compile_and_testc                 C   r  )Nc                  S   s   dd t dD } | S )Nc                 S   s   g | ]}t |gqS r   r  r2   rZ   r   r   r   r3   [  r>   zNTestListOfList.test_returning_list_of_list.<locals>.pyfunc.<locals>.<listcomp>r   rA   )r   r   r   r   r   Z  s   z:TestListOfList.test_returning_list_of_list.<locals>.pyfuncr  r  r   r   r   test_returning_list_of_listY  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 sPw   Y  | dt|j | t}|| W d    n1 srw   Y  | dt|j | t}|| W d    n1 sw   Y  | dt|j | t}|| W d    n1 sw   Y  | dt|j d S )Nc                 S      | d S Nr   r   r   r   r   r   r   b     z<TestListOfList.test_heterogeneous_list_error.<locals>.pyfuncTr   c                 S      g | ]}t |qS r   r   zerosr  r   r   r   r3   f      z@TestListOfList.test_heterogeneous_list_error.<locals>.<listcomp>rd   c                 S   s   g | ]	}t |d  qS rf  r   onesr  r   r   r   r3   g  s    c                 S   r  r   r  r  r   r   r   r3   h  r  rn  r   r   Qreflected list(array(float64, 1d, C)) != reflected list(array(complex128, 1d, C))zDreflected list(array(float64, 1d, C)) != reflected list((int64 x 1))z=reflected list(int64) != reflected list(reflected set(int64))z*Cannot type list element of <class 'dict'>)r   r8   r   r`  r   r   r   r  )r   r   r   l2l3l4l5r   r   r   r   test_heterogeneous_list_error`  sJ   



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 )Nr_   {   r   )l1r  r   r   r   r     s   
z:TestListOfList.test_list_of_list_reflected.<locals>.pyfuncTr   r   r   r0   rH   r   rd   )r   rK   r   )r   r   r   r  r  r  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   r  r  r   r   r   r   r   r     r  z6TestListOfList.test_heterogeneous_list.<locals>.pyfuncc                 S   r  r   r  r  r   r   r   r3     r  z:TestListOfList.test_heterogeneous_list.<locals>.<listcomp>rd   c                 S   r  r   r  r  r   r   r   r3     r  Tr   )r8   r   r   )r   r   r  r   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.w   Y  | dt|j d S )Nc                 S   s   |   S r   r  r   r   r   r   bar  r  z$TestListOfList.test_c01.<locals>.barr   r5   rf  r  )r   r  r  r   r`  r   r   r   r   r  rr   r   r   r   test_c01  s   zTestListOfList.test_c01c                 C   d   dd }t dgg}| tj}| || W d    n1 s"w   Y  | dt|j d S )Nc                 S   s   |  |  | S r   r   r   r   r   r   r    r   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 s"w   Y  | dtdt|d t	|j
 d S )Nc                 S   s   | }d|d< |S Nr   r   r   r   fr   r   r   r    s   z$TestListOfList.test_c03.<locals>.barrH   1invalid setitem with value of {} to element of {}r   r   r   r  r   r   r   r  r   ro  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 s"w   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>.barrH   r  r5   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   rF   r   r   r1   r   r   r   r3     rG   z8TestListOfList.test_c05.<locals>.bar.<locals>.<listcomp>r5   r   )r   r   r  r  rp  r  r   r   r   r    s   *z$TestListOfList.test_c05.<locals>.barrH   )r   r  r  rp  r  r   r  r  r   r   r   test_c05  s   zTestListOfList.test_c05c                 C   r  )Nc                 S   s*   | }t dd t dD |d d< |S )Nc                 S   s   g | ]}|d  qS r  r   r1   r   r   r   r3     r4   z8TestListOfList.test_c06.<locals>.bar.<locals>.<listcomp>r5   r   )r   r   r  r  r   r   r   r    s   "z$TestListOfList.test_c06.<locals>.barrH   invalid setitem with value)	r   r  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 s*w   Y  | dt|j d S )Nc                 S   r  )Nir   r   r   r   r   r    r  z$TestListOfList.test_c07.<locals>.barrH   Tr   zgetitem out of range)	r   r   r  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 s'w   Y  | dt|j d S )Nc                 S      d| d< | S )Nr   rd   r   r   r   r   r   r       z$TestListOfList.test_c08.<locals>.barrK  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w   Y  | dt|j d S )Nc                 S   r  )Ny              @r   r   r   r   r   r   r    r  z$TestListOfList.test_c09.<locals>.barrK  r  )r   r   r   r  r   r   r   r  r   r   r   test_c09  s   zTestListOfList.test_c09c                 C   (   dd }g dg dg}|  || d S )Nc                 S      | d | d | d< | d< | S r  r   r   r   r   r   r  )     z$TestListOfList.test_c10.<locals>.barrK  r   rd   r   r  r  r   r   r   test_c10'     zTestListOfList.test_c10c                 C   r  )Nc                 S   s   | d d d | d d < | S rA  r   r   r   r   r   r  2  s   z$TestListOfList.test_c11.<locals>.barrK  r  r  r  r   r   r   test_c110  r  zTestListOfList.test_c11c                 C   s*   dd }dd t dD }| || d S )Nc                 S   s
   | d= | S rA  r   r   r   r   r   r  :  s   z$TestListOfList.test_c12.<locals>.barc                 S   rF   r   r   r1   r   r   r   r3   >  rG   z+TestListOfList.test_c12.<locals>.<listcomp>r5   )r8   r  r  r   r   r   test_c129  s   zTestListOfList.test_c12N)rY  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  F  s4    
0




	



r  c                   @   r  )Itemc                 C   s   || _ || _d S r   manyscalar)r   r  r  r   r   r   __init__C  s   
zItem.__init__N)rY  rZ  r[  r  r   r   r   r   r  B  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   r  r  float64r  r   r   r   r3   J  s     z&Container.__init__.<locals>.<listcomp>)r8   data)r   rM   r   r   r   r  I  s   zContainer.__init__c                 C   s.   t |D ]}| jt|tjg qd S r   )r8   r  rR   r   r  r  r   )r   rM   rZ   r   r   r   moreL  s   zContainer.moreN)rY  rZ  r[  r  r  r   r   r   r   r  H  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_elementR  s
   z+TestListAndJitClasses.make_jitclass_elementc                 C   s2   dt jt t jd d d di}t|t}|S )Nr  r   )dtype)r   Listr   r   r  )r   r  JCContainerr   r   r   make_jitclass_containerZ  s   z-TestListAndJitClasses.make_jitclass_containerc                 C   s"   t ||D ]	\}}||| qd S r   )r  )r   testerr  r   r   r)   r   r   r   assert_list_element_with_testera  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   r  r   r   )xsr   r   r   r   h  r  zETestListAndJitClasses.test_jitclass_instance_elements.<locals>.pyfuncc                    s$     | j|j   | j|j d S r   )r   r  r  )r   r)   r   r   r   r   l  s   zATestListAndJitClasses.test_jitclass_instance_elements.<locals>.eqTr   c                    s(   g | ]} t j|d  |d dqS )r   g333333?r  )r   random)r2   rM   )r  r   r   r3   r  s     zITestListAndJitClasses.test_jitclass_instance_elements.<locals>.<listcomp>rd   )r  r   r8   rK   r  )	r   r   r   r   r   
expect_arggot_arg
expect_resgot_resr   )r  r   r   test_jitclass_instance_elementse  s   
z5TestListAndJitClasses.test_jitclass_instance_elementsc                 C   sT   |   }tdd}|dd}| |j|j |d |d | |j|j d S )Nr   rL   rH   )r
  r  r  r  r  )r   r	  r  r   r   r   r   test_jitclass_containing_list~  s   



z3TestListAndJitClasses.test_jitclass_containing_listN)rY  rZ  r[  r  r
  r  r  r  r   r   r   r   r  Q  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                    6   dd  t  fdd}t fdd}|  d S )Nc                 S   r   r   r   r   r   r   r   r    r   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      t | S r   r	   r   r   r   r   <lambda>      zTTestListInitialValues.test_homogeneous_and_literal.<locals>.ol_bar.<locals>.<lambda>rK  literal_valueFc                 S      | S 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                        g d}  |  d S )NrK  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                    r  )Nc                 S   r   r   r   r   r   r   r   r    r   zQTestListInitialValues.test_heterogeneous_but_castable_to_homogeneous.<locals>.barc                    s:     t| tj  | jd   t| dd dd S )Nr  Fc                 S   r  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                     r#  )N)rf  r0   rH   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                    r  )Nc                 S   r   r   r   r   r   r   r   r    r   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   r  r   r  r+  r   r   r   r    r  zQTestListInitialValues.test_mutation_not_carried.<locals>.ol_bar.<locals>.<lambda>rK  c                 S   r  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   g d} |  d  |  d S )NrK  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 ]2\}t dd dd  t fdd	}t  fd
d}|  jd d }| |j| qd S )Nc                  W   r   r   r   rH  r   r   r   nop     zLTestListInitialValues.test_mutation_not_carried_single_function.<locals>.noprK  c                 S   r   r   r   r   r   r   r   baz  r.  zLTestListInitialValues.test_mutation_not_carried_single_function.<locals>.bazc                 S   r   r   r   r*   r   r   r   r    r   zLTestListInitialValues.test_mutation_not_carried_single_function.<locals>.barc                    s    fdd}|S )Nc                    s   |   |  d S r   r   r0  r/  r  r   r   impl     z]TestListInitialValues.test_mutation_not_carried_single_function.<locals>.ol_bar.<locals>.implr   )r*   r2  r1  r   r   r"    s   zOTestListInitialValues.test_mutation_not_carried_single_function.<locals>.ol_barc                     s   g d}  |  |  d | S )NrK  r0   r   r   r$  r   r   r%    s   
zLTestListInitialValues.test_mutation_not_carried_single_function.<locals>.foor   )r   r	   r   
signaturesr   r  )r   r-  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   r   r   r   r   r   r   r   r    r.  z9TestListInitialValues.test_list_of_list_ctor.<locals>.barc                     s   g dg dg}  |  d S )N)r   r0   rH   r   rd   )r   r0   rH   r   r   r   r   r$  r   r   r%    s   z9TestListInitialValues.test_list_of_list_ctor.<locals>.foor   )r   r4  r   r  r  )r   r%  r6  r   r$  r   test_list_of_list_ctor  s   
z,TestListInitialValues.test_list_of_list_ctorN)	rY  rZ  r[  rr  r)  r*  r,  r7  r8  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 )Nr   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                    r  )Nc                 S   r   r   r   r   r   r   r   r    r   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   r   r   r0   CrH   FrK  )	reflectedr  r   catr5   c                 S   r  r   r   r   r   r   r   r    r  zQTestLiteralLists.test_literal_value_passthrough.<locals>.ol_bar.<locals>.<lambda>)r  r   r   LiteralListr  rK   r   literalArrayr   r  rp  )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 )NrK  r>  r5   rd   r   r   r  )otherhomogeneouslistotherheterogeneouslistr  rY   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                    r  )Nc                 S   r   r   r   r   r   r   r   r  *  r   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hrZ   r   r<  r   r  )r  r   r0   r,   F)r=  c                    s0  t | tjr!t |tjr!t| j|jD ]\}} | j|j qd S t | tr<t |tr<t| |D ]	\}} || q0d S t | tjrht |tjrht| j |j D ]\\}}\}} ||  || qSd S t | trt |trt|  | D ]\\}}\}} ||  || q{d S 	| | d S r   )
r   r   r?  r  r  rK   LiteralStrKeyDictitemsdictr   )r   r   rZ   jkivikjvj)
check_samer   r   r   rP  @  s:   





"
z\TestLiteralLists.test_literal_value_involved_passthrough.<locals>.ol_bar.<locals>.check_samec                 S   r  r   r   r   r   r   r   r  W  r  zZTestLiteralLists.test_literal_value_involved_passthrough.<locals>.ol_bar.<locals>.<lambda>)r  r   r   rH  r  r@  rA  r   r?  DictTypeunicode_typerp  r  
complex128)r   dlvinner_literal
inner_dictouter_literalr   )rP  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 )
Nr   r   r  rG  rd   )rF  rZ   r0   )rf  ri                @)r   r   r,   r  r   r$  r   r   r%  Y  s   zETestLiteralLists.test_literal_value_involved_passthrough.<locals>.foor&  r'  r   r(  r   'test_literal_value_involved_passthrough(  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 sUw   Y  d}| |t|j W d    n1 sow   Y  q6d S )Nc                  S   s   ddg} d| d< d S )Nr   r   r   r   r   r   r   r   r   staticsetitemf  r3  z=TestLiteralLists.test_mutation_failure.<locals>.staticsetitemc                  S   s   ddg} | d= d S Nr   r   r   r   r   r   r   r   delitemj  s   
z7TestLiteralLists.test_mutation_failure.<locals>.delitemc                  S   s   ddg} |  d d S )Nr   r   ri  r   r   r   r   r   rR   n     z6TestLiteralLists.test_mutation_failure.<locals>.appendc                  S   s   ddg} |  ddg d S )Nr   r   ri  rX  )ra   r   r   r   r   ra   r  s   z6TestLiteralLists.test_mutation_failure.<locals>.extendc                  S   s   ddg} |  dd d S )Nr   r   r   ri  )r   r   r   r   r   r   v  s   z6TestLiteralLists.test_mutation_failure.<locals>.insertc                  S      ddg} |  d d S Nr   r   )r   r   r   r   r   r   z  r]  z6TestLiteralLists.test_mutation_failure.<locals>.removec                  S      ddg} |    d S r_  r  r   r   r   r   rg   ~  r3  z3TestLiteralLists.test_mutation_failure.<locals>.popc                  S   r`  r_  )r   r   r   r   r   r     r3  z5TestLiteralLists.test_mutation_failure.<locals>.clearc                  S   r`  r_  )sortr   r   r   r   ra    r3  z4TestLiteralLists.test_mutation_failure.<locals>.sortc                  S   r`  r_  )r   r   r   r   r   r     r3  z7TestLiteralLists.test_mutation_failure.<locals>.reverseCannot mutate a literal list)	subTestrY  r   r   r   r   r   r   r   )r   rZ  r\  rR   ra   r   r   rg   r   ra  r   illegalstestr   r  r   r   r   test_mutation_failured  s.   z&TestLiteralLists.test_mutation_failurec                 C   "   t dd }| | |  d S )Nc                  S   s*   g d} g }dD ]
}| | | q|S )Nr   r   r   r0   r   rH   r   r   r   rd   r,   abc)rR   r   rY   r  r   r   r   r   r%    s
   z(TestLiteralLists.test_count.<locals>.foor   r   py_funcr:  r   r   r   r!       
zTestLiteralLists.test_countc                 C   rg  )Nc                  S   s   g d} t | S )Nrh  r#   r   r   r   r   r%       z&TestLiteralLists.test_len.<locals>.foork  r:  r   r   r   r        
zTestLiteralLists.test_lenc                 C   rg  )Nc                  S   s,   g d} g }t dD ]	}||| v  q
|S )Nrh  )r   r   r0   r   )r   rR   rj  r   r   r   r%    s
   z+TestLiteralLists.test_contains.<locals>.foork  r:  r   r   r   r    rm  zTestLiteralLists.test_containsc                 C   Z   t dd }| tj}|d W d    n1 sw   Y  d}| |t|j d S )Nc                 S   s   ddg}||  S r_  r   r   rY   r   r   r   r%    rn  z*TestLiteralLists.test_getitem.<locals>.foor   $Cannot __getitem__ on a literal listr   r   r   r   r   r   r   r   r%  r   r  r   r   r   r        

zTestLiteralLists.test_getitemc                 C   rg  )Nc                  S   s   ddg} | d | d fS r[  r   r   r   r   r   r%    s   z0TestLiteralLists.test_staticgetitem.<locals>.foork  r:  r   r   r   test_staticgetitem  s   
z#TestLiteralLists.test_staticgetitemc                 C   X   t dd }| tj}|  W d    n1 sw   Y  d}| |t|j d S )Nc                  S   s   g d} | d d S )N)r   r   r   r0   r   r   r   r   r   r%       z6TestLiteralLists.test_staticgetitem_slice.<locals>.foorr  rs  rt  r   r   r   test_staticgetitem_slice  s   
z)TestLiteralLists.test_staticgetitem_slicec                 C   rp  )Nc                 S   s   ddg}d|| < d S )Nr   r   r   r   rq  r   r   r   r%    rx  z*TestLiteralLists.test_setitem.<locals>.foor   rb  rs  rt  r   r   r   r     ru  zTestLiteralLists.test_setitemc                 C   s0   t dd }dD ]}| |||| qd S )Nc                 S   s,   | d dkrddg}|d S ddg}|d S )Nr   rH   r   r   r0   r   r   rq  r   r   r   r%    s
   z(TestLiteralLists.test_unify.<locals>.foo)irw   rk  )r   r%  r   r   r   r   
test_unify  s
   
zTestLiteralLists.test_unifyc                 C   rp  )Nc                 S   s:   | d dkrg d}nddg}|d |d |d |d fS )Nr   rH   )r   r   ri  r   r0   r   r   rq  r   r   r   r%    s   
z,TestLiteralLists.test_not_unify.<locals>.foorw   zCannot unify LiteralListrs  rt  r   r   r   test_not_unify  s   

zTestLiteralLists.test_not_unifyc                 C   rw  )Nc                  S   r^  r_  )r   r   r   r   r   r%    s   z(TestLiteralLists.test_index.<locals>.fooz+list.index is unsupported for literal listsrs  rt  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[  )r   r   r   r   r   r%    s   z'TestLiteralLists.test_copy.<locals>.foork  r:  r   r   r   r#    ro  zTestLiteralLists.test_copyc                    r  )Nc                 S   r   r   r   r   r   r   r   r    r   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>)assertFalser   r   	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%    rx  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)rY  rZ  r[  r;  rE  rY  rf  r!  r   r  r   rv  ry  r   rz  r{  r|  r#  r  r   r   r   r   r9    s"    <4	r9  __main__)ucollectionsr   rs  r   r<   r7  ctypesr:  numpyr   numba.core.compilerr   r   numbar   r   r   r   r	   r\  r
   
numba.corer   r   r   numba.tests.supportr   r   r   numba.experimentalr   numba.core.extendingr   enable_pyobj_flagsenable_pyobjectforce_pyobj_flagsforce_pyobjectr   r   r"   r%   r'   r(   r+   r-   r9   r;   r?   rB   rD   rI   rN   rQ   rS   r[   r^   rc   re   rh   ri   rk   rn   ro   rs   ru   ry   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   r   r   r   r   r   r   r   r   r_  ru  r  r  r  r  objectr  r  r  r  r9  rY  mainr   r   r   r   <module>   s    
		
	
	
  mDC ? }	8x  
(