U
    id                     @   s  d dl mZmZm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 d dlmZ d dlmZmZmZmZ d dlmZmZ d dlmZmZmZmZmZmZ d dlZd	Z d
Z!dd Z"dd Z#dd Z$d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( Z0d)d* Z1d+d, Z2d-d. Z3d/d0 Z4d1d2 Z5d3d4 Z6d5d6 Z7d7d8 Z8d9d: Z9d;d< Z:d=d> Z;d?d@ Z<dAdB Z=dCdD Z>dEdF Z?dGdH Z@dIdJ ZAdKdL ZBdMdN ZCdOdP ZDdQdR ZEdSdT ZFdUdV ZGdWdX ZHdYdZ ZId[d\ ZJd]d^ ZKd_d` ZLdadb ZMdcdd ZNdedf ZOdgdh ZPdidj ZQdkdl ZRdmdn ZSdodp ZTdqdr ZUdsdt ZVdudv ZWdwdx ZXdydz ZYdd{d|ZZdd}d~Z[dddZ\dddZ]dd Z^dd Z_dd Z`dd Zadd Zbdd Zcdd ZdG dd deeZeG dd deZfegdkr
eh  dS )    )productcyclepermutationsN)jittypeof)types)compile_isolated)TypingErrorLoweringErrorNumbaValueErrorNumbaExperimentalFeatureWarning)as_dtypenumpy_version)TestCaseCompilationCache
MemoryLeakMemoryLeakMixintag
needs_blasztimedelta64[M]ztimedelta64[Y]c                 C   s   t | || d S NnpZaroundarrdecimalsout r   W/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numba/tests/test_array_methods.pynp_around_array   s    r   c                 C   s   t | |S r   r   valr   r   r   r   np_around_binary   s    r!   c                 C   s
   t | S r   r   r    r   r   r   np_around_unary   s    r#   c                 C   s   t | || d S r   r   roundr   r   r   r   np_round_array   s    r&   c                 C   s   t | |S r   r$   r   r   r   r   np_round_binary"   s    r'   c                 C   s
   t | S r   r$   r"   r   r   r   np_round_unary%   s    r(   c                 C   s   |dk	r8| j jdkr8t| j||j t| j||j |S t| ||}|dkrdd }t| ttj	frt|| j|j|| j|j}n
|| |}|S dS )z4
    A slightly bugfixed version of np.round().
    Ncc                 S   s$   |dkr| dk rt | S |S d S )N        r   )r   abs)argresr   r   r   fixup_signed_zero5   s    z*_fixed_np_round.<locals>.fixup_signed_zero)
dtypekind_fixed_np_roundrealimagr   r%   
isinstancecomplexZcomplexfloating)r   r   r   r-   r.   r   r   r   r1   (   s    
r1   c                 C   s   | j S r   )Tr   r   r   r   array_TB   s    r8   c                 C   s   |   S r   )Z	transposer7   r   r   r   array_transposeE   s    r9   c                 C   s   |   S r   copyr7   r   r   r   
array_copyH   s    r<   c                 C   s
   t | S r   )r   r;   r7   r   r   r   np_copyK   s    r=   c                 C   s
   t | S r   )r   asfortranarrayr7   r   r   r   np_asfortranarrayN   s    r?   c                 C   s
   t | S r   )r   Zascontiguousarrayr7   r   r   r   np_ascontiguousarrayQ   s    r@   c                 C   s
   |  |S r   view)r   newtyper   r   r   
array_viewT   s    rD   c                 C   s
   |  |S r   Ztake)r   indicesr   r   r   
array_takeW   s    rG   c                 C   s   | j ||dS NaxisrE   )r   rF   rJ   r   r   r   array_take_kwsZ   s    rK   c                 C   s
   t | S r   r   arange)arg0r   r   r   np_arange_1]   s    rO   c                 C   s   t | |S r   rL   )rN   arg1r   r   r   np_arange_2`   s    rQ   c                 C   s   t | ||S r   rL   )rN   rP   arg2r   r   r   np_arange_3c   s    rS   c                 C   s   t | |||S r   rL   )rN   rP   rR   arg3r   r   r   np_arange_4f   s    rU   c                 C   s   t j| |dS N)stoprL   )rN   rW   r   r   r   np_arange_1_stopi   s    rX   c                 C   s   t j| |dS NsteprL   )rN   r[   r   r   r   np_arange_1_stepl   s    r\   c                 C   s   t j| |dS Nr/   rL   )rN   r/   r   r   r   np_arange_1_dtypeo   s    r_   c                 C   s   t j| ||dS rY   rL   )rN   rP   r[   r   r   r   np_arange_2_stepr   s    r`   c                 C   s   t j| ||dS r]   rL   )rN   rP   r/   r   r   r   np_arange_2_dtypeu   s    ra   c                 C   s   t j| |dS )NstartrW   rL   rb   r   r   r   np_arange_start_stopx   s    rd   c                 C   s   t j| ||dS )Nrc   rW   r[   rL   re   r   r   r   np_arange_start_stop_step{   s    rf   c                 C   s   t j| |||dS )Nrc   rW   r[   r/   rL   rg   r   r   r   np_arange_start_stop_step_dtype~   s    rh   c                 C   s
   |  |S r   )fill)r   r    r   r   r   
array_fill   s    rj   c                    s    fdd}|S )Nc                    s
   |   S r   rA   r7   rC   r   r   rD      s    z#make_array_view.<locals>.array_viewr   )rC   rD   r   rk   r   make_array_view   s    rl   c                 C   s   | dd  tjd S )Nr      )rB   r   float32r7   r   r   r   array_sliced_view   s    ro   c                    s    fdd}|S )Nc                    s
   |   S r   )astyper7   rk   r   r   array_astype   s    z'make_array_astype.<locals>.array_astyper   )rC   rq   r   rk   r   make_array_astype   s    rr   c                 C   s
   t | S )z7
    np.frombuffer() on a Python-allocated buffer.
    r   
frombufferbr   r   r   np_frombuffer   s    rw   c                 C   s   t j| t jdS r]   )r   rt   	complex64ru   r   r   r   np_frombuffer_dtype   s    ry   c                 C   s   t j| ddS )Nrx   r^   rs   ru   r   r   r   np_frombuffer_dtype_str   s    rz   c                 C   s   t j| t jd}t |S )z6
    np.frombuffer() on a Numba-allocated buffer.
    r^   )r   onesint32rt   shaper   r   r   r   np_frombuffer_allocated   s    r   c                 C   s    t j| t jd}t j|t jdS r]   )r   r{   r|   rt   rx   r}   r   r   r   np_frombuffer_allocated_dtype   s    r   c                 C   s   | |k| |k	fS r   r   arv   r   r   r   identity_usecase   s    r   c                 C   s   |   S r   )nonzeror   r   r   r   array_nonzero   s    r   c                 C   s
   t | S r   )r   r   r   r   r   r   
np_nonzero   s    r   c                 C   s
   t | S r   r   where)r)   r   r   r   
np_where_1   s    r   c                 C   s   t | ||S r   r   )r)   xyr   r   r   
np_where_3   s    r   c                 C   s   |   S r   )itemr   r   r   r   
array_item   s    r   c                 C   s   |  | d S r   )Zitemset)r   vr   r   r   array_itemset   s    r   c                 G   s
   | j | S r   sumr   argsr   r   r   	array_sum   s    r   c                 C   s   | j |dS rH   r   r   rJ   r   r   r   array_sum_axis_kws   s    r   c                 C   s   | j |dS r]   r   )r   r/   r   r   r   array_sum_dtype_kws   s    r   c                 C   s   | j ||dS )NrJ   r/   r   )r   r/   rJ   r   r   r   array_sum_axis_dtype_kws   s    r   c                 C   s   |  ||S r   r   )r   Za1Za2r   r   r   array_sum_axis_dtype_pos   s    r   c                 C   sN   t j| dd}t | d}t | |}| jdd}t j| dd}|||||fS )Nrm   rI         )r   r   )r   rJ   r   rv   r)   der   r   r   array_sum_const_multi   s    r   c                 C   s   | j ddS )Nr   rI   r   r   r   r   r   array_sum_const_axis_neg_one   s    r   c                 G   s
   | j | S r   Zcumsumr   r   r   r   array_cumsum   s    r   c                 C   s   | j |dS rH   r   r   r   r   r   array_cumsum_kws   s    r   c                 C   s
   t | S r   )r   r2   r   r   r   r   
array_real   s    r   c                 C   s
   t | S r   )r   r3   r   r   r   r   
array_imag   s    r   c                 C   s   t | ||S r   r   clipr   a_mina_maxr   r   r   np_clip_no_out   s    r   c                 C   s   t | |||S r   r   r   r   r   r   r   r   r   np_clip   s    r   c                 C   s   t j| |||dS Nr   r   r   r   r   r   np_clip_kwargs   s    r   c                 C   s   |  |||S r   r   r   r   r   r   
array_clip   s    r   c                 C   s   | j |||dS r   r   r   r   r   r   array_clip_kwargs   s    r   c                 C   s   |  ||S r   r   r   r   r   r   array_clip_no_out   s    r   c                 C   s   |   S r   )Zconjr   r   r   r   
array_conj   s    r   c                 C   s   |   S r   )	conjugater   r   r   r   array_conjugate  s    r   c                 C   s
   t | S r   )r   uniquer   r   r   r   	np_unique  s    r   c                 C   s
   |  |S r   dotr   r   r   r   	array_dot	  s    r   c                 C   s   |  | |S r   r   r   r   r   r   array_dot_chain  s    r   c                 C   s   t j| |dS r]   r   r{   )nr/   r   r   r   
array_ctor  s    r   c                       s  e Zd ZdZ f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ejf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 Z0dXdY Z1dZd[ Z2d\d] Z3d^d_ Z4d`da Z5dbdc Z6ddde Z7dfdg Z8dhdi Z9djdk Z:dldm Z;dndo Z<dpdq Z=drds Z>dtdu Z?dvdw Z@dxdy ZAdzd{ ZBd|d} ZCd~d ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQeRdd ZSdd ZT  ZUS )TestArrayMethodszA
    Test various array methods and array-related functions.
    c                    s   t t|   t | _d S r   )superr   setUpr   ccacheself	__class__r   r   r     s    zTestArrayMethods.setUpc                 C   s  ddddddddg}d	d
 |D }dd
 |D }t jt jt jt jt jf}|||||g}|}t||D ]b\}	}
t||	t jf}|j}dD ]>}|
D ]4}|dkr|d9 }t	||}|||}| 
|| qqqd|}t||D ]@\}	}
t||	f}|j}|
D ] }t	|}||}| 
|| qqd S )N                              ?      @      @      @c                 S   s   g | ]}|d  qS )      ?      r   .0r   r   r   r   
<listcomp>  s     z7TestArrayMethods.check_round_scalar.<locals>.<listcomp>c                 S   s   g | ]}t |qS r   )intr   r   r   r   r     s     )   r   r   r   
   )r   float64rn   r|   rx   
complex128zipr   entry_pointr1   assertPreciseEqual)r   Zunary_pyfuncZbinary_pyfuncZbase_valuesZcomplex_valuesZ
int_valuesargtypesZ	argvaluespyfunctyvaluescrescfuncr   r   expectedgotr   r   r   check_round_scalar  s<      

z#TestArrayMethods.check_round_scalarc                 C   s   |  tt d S r   )r   r(   r'   r   r   r   r   test_round_scalar9  s    z"TestArrayMethods.test_round_scalarc                 C   s   |  tt d S r   )r   r#   r!   r   r   r   r   test_around_scalar<  s    z#TestArrayMethods.test_around_scalarc              
      st   fdd  fdd}t ddddd	d
ddg}tjtjf}|||| tjtjf}||||d    d S )Nc           	   	      s   | t|}t| t|}| }t|||    | |||    tj	||  
t}| |||dd   W 5 Q R X  t|jd d S )Nr   zinvalid output shape)rp   r   r   
zeros_liker;   r1   memory_leak_setupmemory_leak_teardowntestingassert_allcloseassertRaises
ValueErrorassertEqualstr	exception)	r   r   intyouttyr   r   r   pyoutraisesr   r   r   check_round@  s    z7TestArrayMethods.check_round_array.<locals>.check_roundc              
      s   t | |D ]|\}}tt|ddtjt|ddf}|j} |j|||d  |j|||d t|tjs
 |j|d ||d q
q
d S )Nr   Ar   r   r   )r   r   r   ZArrayr|   r   r4   Integer)r   Zouttypesr   r   r   r   r   )r   r   r   r   check_typesP  s    z7TestArrayMethods.check_round_array.<locals>.check_typesr   r   r   r   r   r   r   r   r   )r   arrayr   r   rn   rx   r   disable_leak_check)r   r   r   r   r   r   )r   r   r   r   check_round_array?  s    z"TestArrayMethods.check_round_arrayc                 C   s   |  t d S r   )r   r&   r   r   r   r   test_round_arrayk  s    z!TestArrayMethods.test_round_arrayc                 C   s   |  t d S r   )r   r   r   r   r   r   test_around_arrayn  s    z"TestArrayMethods.test_around_arrayc              
   C   sD   t tfD ]6}tdd|}d}| t| |d  W 5 Q R X qd S )NTZnopython'.*The argument "a" must be array-like.*)r(   r#   r   assertRaisesRegexr	   r   r   r   msgr   r   r   test_around_bad_arrayq  s
    z&TestArrayMethods.test_around_bad_arrayc              
   C   sJ   t tfD ]<}tdd|}d}| t| |dddd W 5 Q R X qd S )NTr  9.*The argument "out" must be an array if it is provided.*r   r      r   )r&   r   r   r  r	   )r   py_funcr   r  r   r   r   test_around_bad_outx  s
    z$TestArrayMethods.test_around_bad_outc                    sH  fdd  fdd} fdd} fdd} fd	d
} fdd} fdd}t dt jfdt jfg}t dt jfdt jfg}t dt jfdt jfg}	tdkr|}
|}|}|}n|}
|}|}|}t jdt jd}||t d ||t j ||t j ||t j ||t j ||| ||| |
|t j |	d}||t j ||t j ||t j ||| |
|| |
|t j t jdt jd	dj
}t dj
d d dd d df }tdkr|}n|}||t j ||t j ||t j ||t j ||| ||| ||t j ||t j t jdt jdd d d }||t j ||t j |||	 ||t j ||t j ||t j ||| ||| t jdgt jd	d}||t j ||t j |||	 ||t j ||t j ||t j ||| ||| t dg}||t j   d S ) Nc                    s&   t |} j|t| f}|| S r   )rl   r   compiler   r   r   r/   r   r   r   r   r   run  s    z-TestArrayMethods.test_array_view.<locals>.runc                    s6   |  |}   | |}|| ~  d S r   )rB   r   r   r   r   r/   r   r   r  r   r   r   check  s    

z/TestArrayMethods.test_array_view.<locals>.checkc              	      s6    t} | | W 5 Q R X t|jd d S )Nz"new type not compatible with array)r   r   r   r   r   )r   r/   r   r  r   r   	check_err  s
    z3TestArrayMethods.test_array_view.<locals>.check_errc              	      sn   d} t}t||  W 5 Q R X t|j|  t} | | W 5 Q R X t|j| d S )NzJTo change to a dtype of a different size, the last axis must be contiguousr   r   rl   r   r   r   r   r/   r  r   r  r   r   check_err_noncontig_last_axis  s    zGTestArrayMethods.test_array_view.<locals>.check_err_noncontig_last_axisc              	      sn   d} t}t||  W 5 Q R X t|j|  t} | | W 5 Q R X t|j| d S )NzOChanging the dtype of a 0d array is only supported if the itemsize is unchangedr  r  r  r   r   check_err_0d  s    z6TestArrayMethods.test_array_view.<locals>.check_err_0dc              	      sn   d} t}t||  W 5 Q R X t|j|  t} | | W 5 Q R X t|j| d S )NzZWhen changing to a smaller dtype, its size must be a divisor of the size of original dtyper  r  r  r   r   check_err_smaller_dtype  s    zATestArrayMethods.test_array_view.<locals>.check_err_smaller_dtypec              	      sn   d} t}t||  W 5 Q R X t|j|  t} | | W 5 Q R X t|j| d S )NzuWhen changing to a larger dtype, its size must be a divisor of the total size in bytes of the last axis of the array.r  r  r  r   r   check_err_larger_dtype  s    z@TestArrayMethods.test_array_view.<locals>.check_err_larger_dtyper   rv   ur   r   r   )r         r^   int16r      rm   rm         *   r   Zabcdef)r   r/   int8r  r   rM   rn   rx   r   reshaper6   zerosuint64r|   uint32int64r   r   )r   r  r  r  r  r  r  Zdt1Zdt2Zdt3Zcheck_error_larger_dtZcheck_error_smaller_dtZcheck_error_noncontigZcheck_error_0dr   Zf_arrZnot_f_or_c_arrZcheck_maybe_errorr   r  r   test_array_view  s    




 








z TestArrayMethods.test_array_viewc                 C   sd   t }| j|tjdd f}|j}tjddgtjd}|	tj}||}||}| 
|| dS )zX
        Test .view() on A layout array but has contiguous innermost dimension.
        Nr   r   r^   )ro   r   r  r   Zuint8r   r   r   rn   rB   r   )r   r   r   r   origZbytearyexpectr   r   r   r   test_array_sliced_view  s    z'TestArrayMethods.test_array_sliced_viewc              	      s`  fdd  fdd}t jdt jd}||t d ||t j ||t j ||t j ||d t jdt jdd	j}||t j t jd
t jdd d d }||t j	 t jd
t jd}d|j
_||t j t dt jfg} }||| W 5 Q R X dt|j d}  }tdddd }|| W 5 Q R X dt|j d S )Nc                    s&   t |} j|t| f}|| S r   )rr   r   r  r   r   r  r   r   r   r  -  s    z/TestArrayMethods.test_array_astype.<locals>.runc                    s,   |  |jdd} | |}|| d S )Nr   order)rp   r;   r   r  r  r   r   r  1  s    
z1TestArrayMethods.test_array_astype.<locals>.checkr  r^   r  rn   r  r!  r   Fr   z#cannot convert from int32 to RecordTr  c                 S   s   t dg|  d S Nr   )r   r   rp   r^   r   r   r   fooT  s    z/TestArrayMethods.test_array_astype.<locals>.fooz5array.astype if dtype is a string it must be constant)r   rM   r#  r/   r|   rn   r   r$  r6   r&  flagsZ	writeableZassertTypingErrorassertInr   r   r   )r   r  r   dtr   Zunicode_valr0  r   r  r   test_array_astype+  s:    



z"TestArrayMethods.test_array_astypec              	      s    fdd fdd}t td}|| |t| |t| |td tdd}||   t	}t d W 5 Q R X 
d	t|j d S )
Nc                    s   j  t| f}|| S r   r   r  r   r   )bufr   r   r   r   r   r  \  s    z1TestArrayMethods.check_np_frombuffer.<locals>.runc                    sv   t | } | }  | }|| ~t  t | |d  ~t  t | |   d S r/  )sysgetrefcountr   r   gcZcollectr   r   )r6  Z
old_refcntr   r   r   r  r   r   r   r  _  s    
z3TestArrayMethods.check_np_frombuffer.<locals>.checkr!     )r   rm   s   xxxz.buffer size must be a multiple of element size)	bytearrayrangebytes
memoryviewr   rM   r$  r   r   r   r   r   r   )r   r   r  rv   r   r   r;  r   check_np_frombuffer[  s    z$TestArrayMethods.check_np_frombufferc                 C   s   |  t d S r   )rA  rw   r   r   r   r   test_np_frombuffer  s    z#TestArrayMethods.test_np_frombufferc                 C   s   |  t d S r   )rA  ry   r   r   r   r   test_np_frombuffer_dtype  s    z)TestArrayMethods.test_np_frombuffer_dtypec                 C   s   |  t d S r   )rA  rz   r   r   r   r   test_np_frombuffer_dtype_str  s    z-TestArrayMethods.test_np_frombuffer_dtype_strc              	   C   sX   t dddd }| t}|ttdd W 5 Q R X t|j}d}| || d S )NTr  c                 S   s   t j| |d d S r]   rs   )r6  r3  r   r   r   func  s    zETestArrayMethods.test_np_frombuffer_dtype_non_const_str.<locals>.funcr!  r|   z@If np.frombuffer dtype is a string it must be a string constant.)r   r   r	   r=  r>  r   r   r2  )r   rE  r   Zexcstrr  r   r   r   &test_np_frombuffer_dtype_non_const_str  s    

z7TestArrayMethods.test_np_frombuffer_dtype_non_const_strc              	   C   s:   t dddd }d}| t|}|d  W 5 Q R X d S )NTr  c                 S   s
   t | S r   rs   )r6  r   r   r   rE    s    z<TestArrayMethods.test_np_frombuffer_bad_buffer.<locals>.funcz).*Argument "buffer" must be buffer-like.*)r   r  r	   )r   rE  r  r   r   r   r   test_np_frombuffer_bad_buffer  s
    
z.TestArrayMethods.test_np_frombuffer_bad_bufferc                    s   dd   fdd}|d}|| || d || dj || dd d d  || d || dj || dd d d  td	g d
}|| d S )Nc                 S   s   | j j|j jkS r   )ctypesdatar   r   r   r   is_same  s    z=TestArrayMethods.check_layout_dependent_func.<locals>.is_samec                    sJ   t t| f}| }|| }||  ||  ||  d S r   )r   r   r   r   r   )r   r   r   r   rJ  r   r   r   r   	check_arr  s
    
z?TestArrayMethods.check_layout_dependent_func.<locals>.check_arrr  r  r   r   r   rm   r   r   )r$  r6   r   r   )r   r   facrL  r   r   rK  r   check_layout_dependent_func  s    z,TestArrayMethods.check_layout_dependent_funcc                 C   s   |  t d S r   )rO  r9   r   r   r   r   test_array_transpose  s    z%TestArrayMethods.test_array_transposec                 C   s   |  t d S r   )rO  r8   r   r   r   r   test_array_T  s    zTestArrayMethods.test_array_Tc                 C   s   |  t d S r   )rO  r<   r   r   r   r   test_array_copy  s    z TestArrayMethods.test_array_copyc                 C   s   |  t d S r   )rO  r=   r   r   r   r   test_np_copy  s    zTestArrayMethods.test_np_copyc                    s<    fdd}dddt dt ddfD ]}|| q*d S )Nc                    s2   t  t| f} | }|| }|| d S r   )r   r   r   r   )r   r   r   r   r7  r   r   check_scalar  s    
zETestArrayMethods.check_ascontiguousarray_scalar.<locals>.check_scalarr"  g      E@y              E@T)r   rn   r   )r   r   rT  r   r   r7  r   check_ascontiguousarray_scalar  s     z/TestArrayMethods.check_ascontiguousarray_scalarc              	   C   s0   d}|  t|}t|tdf}W 5 Q R X d S )Nr  hello)r  r	   r   r   )r   r   r  r   r   r   r   r   check_bad_array  s    z TestArrayMethods.check_bad_arrayc                 C   s"   |  t | t | t d S r   )rO  r?   rW  rU  r   r   r   r   test_np_asfortranarray  s    

z'TestArrayMethods.test_np_asfortranarrayc                 C   s"   |  t | t | t d S r   )rO  r@   rW  r?   rU  r   r   r   r   test_np_ascontiguousarray  s    

z*TestArrayMethods.test_np_ascontiguousarrayc                    s:    fdd fdd}|d |d |d d S )Nc                    s   j  t| f}|| S r   r5  )r~   r   r7  r   r   r    s    z;TestArrayMethods.check_np_frombuffer_allocated.<locals>.runc                    s     | }| } || d S r   r   )r~   r   r   r;  r   r   r    s    z=TestArrayMethods.check_np_frombuffer_allocated.<locals>.check)r!  r  )r   r   r   r   )r   r   r  r   r;  r   check_np_frombuffer_allocated  s
    z.TestArrayMethods.check_np_frombuffer_allocatedc                 C   s   |  t d S r   )r[  r   r   r   r   r   test_np_frombuffer_allocated  s    z-TestArrayMethods.test_np_frombuffer_allocatedc                 C   s   |  t d S r   )r[  r   r   r   r   r   test_np_frombuffer_allocated2  s    z.TestArrayMethods.test_np_frombuffer_allocated2c                    s  dd } fdd}t ddddg}|| t dddg}|| |d}|| ||d	 ||d	j ||d	d d d
  ||d ||dj ||dd d d
  ddtdfD ]}t |gd}|| qt dddg}|| d S )Nc                 S   s8   t jd t j| }d||dk < td||dk< |S Nr"  r*   g333333?nangffffff?r   randomseedfloatNr   r   r   r   rN    s
    z+TestArrayMethods.check_nonzero.<locals>.facc                    s<   t  t| f} | }dd |D }|| | d S )Nc                 S   s   g | ]}|  qS r   r:   )r   r   r   r   r   r     s     zETestArrayMethods.check_nonzero.<locals>.check_arr.<locals>.<listcomp>r   r   r   r   )r   r   r   r7  r   r   rL    s    z1TestArrayMethods.check_nonzero.<locals>.check_arrr   r   r   r  r  r   rM  r*   r   r_  r   ZHello world)r   r  bool_r$  r6   rc  r   )r   r   rN  rL  r   r   r   r7  r   check_nonzero  s&    
zTestArrayMethods.check_nonzeroc                 C   s   |  t d S r   )rj  r   r   r   r   r   test_array_nonzero  s    z#TestArrayMethods.test_array_nonzeroc                 C   s   |  t d S r   )rj  r   r   r   r   r   test_np_nonzero  s    z TestArrayMethods.test_np_nonzeroc                 C   s   |  t d S r   )rj  r   r   r   r   r   test_np_where_1  s    z TestArrayMethods.test_np_where_1c              	   C   s   d}t }td}tddt}tjddN}||dk |d|  d}|D ] }|t|jkrJ|j	|krJd}qJ| 
| W 5 Q R X d S )Nz>Use of isinstance() detected. This is an experimental feature.r   Tr  )recordr   F)r   r   rM   r   r   warningscatch_warningsr   messagecategoryZassertFalse)r   r  rr  r   r   Zcatchfoundwr   r   r    test_np_where_no_isinstance_warn  s    
z1TestArrayMethods.test_np_where_no_isinstance_warnc                    s  t dd }tdddgtjtjtjtjtjtjg tj	
d d fdd		} fd
d}tddddg}|| tdddg}|| |d}|| ||d ||dj ||dd d d  ||d ||dj ||dd d d  ||ddd ||djdd ||dd d d dd ddtdfD ] }t|gd}|| qddD ]}|| qd S )Nc                 S   s8   t jd t j| }d||dk < td||dk< |S r^  r`  rd  r   r   r   rN  '  s
    z-TestArrayMethods.test_np_where_3.<locals>.facCFr   r"  Fc                    s   t j  |dkrJt j|  d |d}t j|  d |d}| j|d} n0t j|  d td}t j|  d td}|d |d tt| t|t|f}| ||}|	| ||}
|| d S )NFr   )r/   r.  r   r-  rm   	   )r   ra  shuffler   r;   nextri   r   r   r   r   )r   layoutr   r   r   r   r   _typeslayoutsr   r   r   r   rL  4  s    

z3TestArrayMethods.test_np_where_3.<locals>.check_arrc                    sr   d}d}t j   d d} d d}tt| t|t|f}| ||}|| ||}|| d S )Nrm   r   r   r   )r   ra  ry  r   r   r   r   )Zscalr   r   r   r   r   )r}  r   r   r   r   
check_scalD  s    z4TestArrayMethods.test_np_where_3.<locals>.check_scalr   r   r   r  r  r   rM  )r{  r*   r   r_  r   )r   r   TFr   y                )F)r   r   r   r|   r(  rn   r   rx   r   ra  rb  r  ri  r$  r6   rc  r   )r   rN  rL  r  r   r   r   r   r|  r   test_np_where_3%  s:    z TestArrayMethods.test_np_where_3c                    s   t tdd  fdd}fdd}| D ]H}|dkddf}|| |dk tjd	f}|| |dkdd
f}|| q4d S )NTr  c                    s    |  } |  } || d S r   rZ  )r   r   r   r   r   r   r   r   check_okl  s    zGTestArrayMethods.test_np_where_3_broadcast_x_y_scalar.<locals>.check_okc                  3   s`   t ddd}  j|  | V  | dddV  | jddddV  | dddd d d V  d S )	Nrm      r   r   rw  r-  r   )r   linspacera  ry  r$  r   r   r   r   a_variationsq  s    zKTestArrayMethods.test_np_where_3_broadcast_x_y_scalar.<locals>.a_variationsr   r   y      ?      @F)r   r   r   r_  )r   r  r  r   paramsr   r  r   $test_np_where_3_broadcast_x_y_scalarh  s    
z5TestArrayMethods.test_np_where_3_broadcast_x_y_scalarc           	         sr   t tdd  fdd}dd }dd }| D ]4}| D ](}t|}||k}|||f}|| qBq8d S )	NTr  c                    sV   | \}}}|||} |||} || |||} |||} || d S r   rZ  )r   	conditionr   r   r   r   r  r   r   r    s    
zJTestArrayMethods.test_np_where_3_broadcast_x_or_y_scalar.<locals>.check_okc                  s   s`   t ddd} | V  | d V  t | V  | d d d V  t dddddd	d
 V  d S )Nrx  r   g?r   r   <   rm   r                 ?)r   rM   r$  r>   r  r   r   r   r   array_permutations  s    
zTTestArrayMethods.test_np_where_3_broadcast_x_or_y_scalar.<locals>.array_permutationsc                   s   s$   dV  dV  t jV  dV  dV  d S )Nr   g333333@Ty       @      @)r   r_  r   r   r   r   scalar_permutations  s
    zUTestArrayMethods.test_np_where_3_broadcast_x_or_y_scalar.<locals>.scalar_permutations)r   r   r   Zmean)	r   r  r  r  r   r   Zx_meanr  r  r   r  r   'test_np_where_3_broadcast_x_or_y_scalar  s    



z8TestArrayMethods.test_np_where_3_broadcast_x_or_y_scalarc           	   
   C   s  t }tdd|}ttjtjtjtjtjg}|D ]}tj	dtd}tj
|||d|d|d tj
|| |d|d|d tj
|d|d|d|d tj
|d|d|d|d t||}t|}||}d|d< |d |d< tj
||||| tj
||||| tj
||||d | tj
|||d || tj
||d d d	 |d d d	 |d d d	 |d d d	  tj
||dd d	 |dd d	 |dd d	 |dd d	  tj
||d d d
 |d d d
 |d d d
 |d d d
  tj
||dd d
 |dd d
 |dd d
 |dd d
  tj
||d d d |d d d |d d d |d d d  tj
||d d d |d d d |d d d |d d d  tj
||dd d |dd d |dd d |dd d  q0d S )NTr  5   r^   r   r   F   r   r   r  )r   r   boolr   r  r|   r(  doubler   r{   r   assert_equalZ	ones_likerp   r   )	r   r   r   dtsr3  r)   r   r   rr   r   r   test_np_where_numpy_basic  s2    
"$""

>>>>>>z*TestArrayMethods.test_np_where_numpy_basicc                 C   s   t }tdd|}ddg}td}td}|t|d d tjf ||}tj|d |d  tj|d |d  |j	}|j	}||||}tj|d d df |d d df  tj|d d df |d d df  d S )NTr  F)r      r   r   )
r   r   r   r%  r{   r   Znewaxisr   assert_array_equalr6   )r   r   r   r)   r   rv   r  r   r   r   test_np_where_numpy_ndim  s    

 &z)TestArrayMethods.test_np_where_numpy_ndimc                 C   s4  t }tdd|}tddddddddddddg}td}tjddddd	d
ddddddgtjd}tjddddd	d
ddddddgtjd}tj||||| |tj	}|tj
}tj||||| |t}d||dk< tj||||| |dk}d||dk< d||< tj||||| d S )NTr  Fr         @r*   g      @       @g      g      g      $      $@g      ?r^   i
r   iau)r   r   r   r   r'  r   r   r  rp   rn   r(  r   )r   r   r   r)   r   rv   r  Ztmpmaskr   r   r   test_np_where_numpy_dtype_mix  s4       

z.TestArrayMethods.test_np_where_numpy_dtype_mixc              	   C   s   t }tdd|}ddg}td}td}|   | td |||| W 5 Q R X | td ||d || W 5 Q R X d S )NTr  )rm   r   )r   r   zobjects cannot be broadcastr   )r   r   r   r{   r   r  r   )r   r   r   r)   r   rv   r   r   r   test_np_where_numpy_test_error  s    

z/TestArrayMethods.test_np_where_numpy_test_errorc              	   C   s   t }tdd|}d}| t| |d dd W 5 Q R X d}| t| |ddd W 5 Q R X d	}| t| |ddd
 W 5 Q R X d}| t| |dd d  W 5 Q R X d S )NTr  z+The argument "condition" must be array-liker   r   z/The argument "x" must be array-like if providedr   rV  z/The argument "y" must be array-like if providedrh  z"Argument "x" or "y" cannot be None)r   r   r  r	   r  r   r   r   test_np_where_invalid_inputs  s    z-TestArrayMethods.test_np_where_invalid_inputsc                    s   t dd dd f}|D ]dtdd  fdd}|d |d	 |d
 |d |d |td
d
 |td qd S )Nc                 S   s   t | dS )Nr   rL   r  r   r   r   <lambda>      z4TestArrayMethods.test_arange_1_arg.<locals>.<lambda>c                 S   s   t jdtdt| dS )Nr  r   rZ   )r   rM   maxr+   r  r   r   r   r     r  Tr  c                    s"   | } | }t j|| d S r   r   r   r   )rN   r   r   r   r   r   r   r  &  s    z4TestArrayMethods.test_arange_1_arg.<locals>.check_okr   r   rm   g      @r  )rO   r   r5   r   r#  )r   all_pyfuncsr  r   r  r   test_arange_1_arg  s    z"TestArrayMethods.test_arange_1_argc                 C   s0  dd }t tttdd dd f}|D ]}tdd|}|dd	|| |d
d|| |dd|| |dd|| |tddtdd|| |tddtdd|| |dd || q$t}tdd|}|d	tj|| |dtj	|| |dtj
|| |tdtj
|| |dd || |tdd || d S )Nc                 S   s&   || |}|| |}t j|| d S r   r  )rN   rP   r   r   r   r   r   r   r   r  4  s    

z4TestArrayMethods.test_arange_2_arg.<locals>.check_okc                 S   s   t | |dS )Nr   rL   r   r   r   r   r   r  >  r  z4TestArrayMethods.test_arange_2_arg.<locals>.<lambda>c                 S   s   t jd|| dS )Nr   rZ   rL   r  r   r   r   r  ?  r  Tr  r   r   rm         ?r   r   r  r   r  r   )rQ   rd   rX   r\   r   r5   r_   r   rn   r|   r   rx   r#  )r   r  r  r   r   r   r   r   test_arange_2_arg3  s2    	z"TestArrayMethods.test_arange_2_argc                    s  t jdot jdkd fdd	}tttfD ]&}tdd|}|dd	d
|| |ddd|| |ddd|| |ddd|| |dd
d|| |dtddtd
d
|| |ddd || |dd d || |t	
dt	
d	t	
d
|| |t	
dt	d	t	d
|| t	j
}||d|d	|d
||d |t	d|d	|d
||d q0t}tdd|}|d
d	t	j|| |ddt	j|| |ddt	j|| |dt	dt	j|| |d
dd || |t	
dt	d	d ||d d S )Nwin32l        Fc                    s>   || ||}|| ||}t j|| s: |j|j d S r   )r   r   r   r   r/   )rN   rP   rR   r   r   Zcheck_dtyper   r   r   Z	windows64r   r   r  Z  s
    z4TestArrayMethods.test_arange_3_arg.<locals>.check_okTr  r   r   r   r  r   r   r  r  r  rm   r   皙?r	  r  r  r   r  )F)r8  platform
startswithmaxsizerS   r`   rf   r   r5   r   r#  r  r|   r(  ra   rn   r   rx   )r   r  r   r   i8r   r  r   test_arange_3_argW  s2    
"""z"TestArrayMethods.test_arange_3_argc                    s   t tfD ]tdd  fdd}|dddtj |dd	d
tj |dddtj |dddd  |dddtj |dtddtddtj |d
dd d  |d
d d d  qd S )NTr  c                    s.   | |||} | |||}t j|| d S r   r  )rN   rP   rR   rT   r   r   r  r   r   r    s    z4TestArrayMethods.test_arange_4_arg.<locals>.check_okr   r   r   r  r   r   r  r  r  rm   r   r  r	  )	rU   rh   r   r   r   r|   rn   r   r5   )r   r  r   r  r   test_arange_4_arg  s    z"TestArrayMethods.test_arange_4_argc           	      C   s0  |    dd dd dd g}dd dd g}|D ]0}| t}tdd|}|d	 W 5 Q R X q2|D ]2}| t}tdd|}|d	d
 W 5 Q R X qht}tdd|}||fD ]t}dtd	dfdfD ]Z}ttf}| |>}t	
  t	d ||  W 5 Q R X | dt|j W 5 Q R X qqd S )Nc                 S   s   t j| dS rV   rL   r  r   r   r   r    r  z5TestArrayMethods.test_arange_throws.<locals>.<lambda>c                 S   s   t j| dS rY   rL   r  r   r   r   r    r  c                 S   s   t j| dS r]   rL   r  r   r   r   r    r  c                 S   s   t j| |dS )N)rW   r[   rL   r  r   r   r   r    r  c                 S   s   t j| |dS )N)rW   r/   rL   r  r   r   r   r    r  Tr  r   r	  r   r   )r   r   r   ignorezMaximum allowed size exceeded)r   r   r	   r   rS   r   r  ZeroDivisionErrorr   ro  rp  simplefilterr2  r   r   )	r   Zbad_funcs_1Zbad_funcs_2r   r   r   finputsZpermitted_errorsr   r   r   test_arange_throws  s8    

z#TestArrayMethods.test_arange_throwsc                 C   s0   t dddd }d}| |||| d S )NTr  c                 S   s   t dd|  | S )Nr   r   rL   rZ   r   r   r   r0    s    z2TestArrayMethods.test_arange_accuracy.<locals>.foog[R֯?)r   r   r
  )r   r0  r   r   r   r   test_arange_accuracy  s    
z%TestArrayMethods.test_arange_accuracyc                    s   t tdd  fdd} fdd}  |tdg |tdgg |td |td |td |td	d
g |tg  d S )NTr  c                    s    | } | } || d S r   rZ  )r,   r   r   r  r   r   r    s    z,TestArrayMethods.test_item.<locals>.check_okc              	      s4    t} |  W 5 Q R X dt|j d S )Nz>item(): can only convert an array of size 1 to a Python scalarr   r   r2  r   r   )r,   r   r   r   r   r   r    s
    z-TestArrayMethods.test_item.<locals>.check_errr                 ?r   r   )r   r   r   r   rn   r   r   ri  r   r  r  r   r  r   	test_item  s    zTestArrayMethods.test_itemc                    s   t tdd  fdd} fdd}  |tdgd |td	ggd |tdd |td
dg |tg  d S )NTr  c                    s4   |   }|   }||  || || d S r   )r;   r   )r   r   r   r   r  r   r   r    s
    

z/TestArrayMethods.test_itemset.<locals>.check_okc              	      s6    t} | d W 5 Q R X dt|j d S )Nr"  z/itemset(): can only write to an array of size 1r  )r   r   r  r   r   r    s
    z0TestArrayMethods.test_itemset.<locals>.check_errr   r"  r  r   r   )r   r   r   r   rn   r   r   r  r   r  r   test_itemset  s    zTestArrayMethods.test_itemsetc                 C   s   t }tdd|}tjtjtjtjtjtjtj	tj
tjg	}dd |D }|D ]@}|D ]6}| d|j | |||| W 5 Q R X qTqLdS )zK test sum over a whole range of dtypes, no axis or dtype parameter
        Tr  c                 S   s2   g | ]*}t d |t d|t d|d gqS r  r	  r   rm   r   r   )r  r   r   r   Z	arr_dtyper   r   r   r     s
   

z-TestArrayMethods.test_sum.<locals>.<listcomp>zTest np.sum with {} input N)r   r   r   r   rn   r(  r|   rx   r   r'  r&  Ztimedelta64subTestformatr/   r   )r   r   r   
all_dtypesall_test_arraysarr_listr   r   r   r   test_sum  s         zTestArrayMethods.test_sumc                 C   s   t }tdd|}tjtjtjtjtjtjt	g}dd |D }|D ]f}|D ]\}dD ]R}|t
|jd krjqR| d|j" | |||d|||d W 5 Q R X qRqJqBd	S )
z< test sum with axis parameter over a whole range of dtypes  Tr  c                 S   s2   g | ]*}t d |t d|t d|d gqS r  r   r  r   r   r   r     s
   

z7TestArrayMethods.test_sum_axis_kws1.<locals>.<listcomp>r   r   r   r   #Testing np.sum(axis) with {} input rI   N)r   r   r   r   rn   r(  r&  rx   r   TIMEDELTA_Mlenr~   r  r  r/   r   )r   r   r   r  r  r  r   rJ   r   r   r   test_sum_axis_kws1  s(     
z#TestArrayMethods.test_sum_axis_kws1c                 C   s  t }tdd|}tjtjg}tdtjtdtjtdtjtttti}dd |D }|D ]}|D ]}dD ]}|t	|j
d	 krqx| d
|j\ |||d}	|||d}
t|
tjr| |	||j |
||j  n| |	|
 W 5 Q R X qxqpqhdS )a    testing uint32 and int32 separately

        uint32 and int32 must be tested separately because Numpy's current
        behaviour is different in 64bits Windows (accumulates as int32)
        and 64bits Linux (accumulates as int64), while Numba has decided to always
        accumulate as int64, when the OS is 64bits. No testing has been done
        for behaviours in 32 bits platforms.
        Tr  r|   r'  r(  c                 S   s2   g | ]*}t d |t d|t d|d gqS r  r   r  r   r   r   r   2  s
   

z7TestArrayMethods.test_sum_axis_kws2.<locals>.<listcomp>r  r   r  rI   N)r   r   r   r|   r'  r/   r(  r&  r  r  r~   r  r  r4   Zndarrayr   rp   r   )r   r   r   r  
out_dtypesr  r  r   rJ   Znpy_resZ	numba_resr   r   r   test_sum_axis_kws2"  s8    	  z#TestArrayMethods.test_sum_axis_kws2c           
      C   sH  t }tdd|}tjtjtjtjtjtjtj	tj
g}dd |D }tdtjgtdtjtjgtdtjtjtjgtdtjtjtjtjgtd	tjtjtjgtd
tjtjgtdtj	tj
gtdtj
gi}|D ]^}|D ]T}||j D ]D}d|j|}	| |	" | |||d|||d W 5 Q R X qqqdS )z< test sum with dtype parameter over a whole range of dtypes Tr  c                 S   s2   g | ]*}t d |t d|t d|d gqS r  r   r  r   r   r   r   O  s
   

z7TestArrayMethods.test_sum_dtype_kws.<locals>.<listcomp>r   rn   r(  r|   r'  r&  rx   r   z*Testing np.sum with {} input and {} outputr^   N)r   r   r   r   rn   r(  r|   r'  r&  rx   r   r/   r  r  r   )
r   r   r   r  r  r  r  r   	out_dtypesubtest_strr   r   r   test_sum_dtype_kwsI  sJ       
    
 
 	 
z#TestArrayMethods.test_sum_dtype_kwsc                 C   sx  t }tdd|}tjtjtjtjtjtjtj	tj
g}dd |D }tdtjgtdtjtjgtdtjtjtjgtdtjtjtjtjgtd	tjtjtjgtd
tjtjgtdtj	tj
gtdtj
gi}|D ]}|D ]}||j D ]t}dD ]j}	|	t|jd krqd|j|}
| |
. |||	|d}|||	|d}| || W 5 Q R X qqqqdS )zF test sum with axis and dtype parameters over a whole range of dtypes Tr  c                 S   s2   g | ]*}t d |t d|t d|d gqS r  r   r  r   r   r   r   m  s
   

z<TestArrayMethods.test_sum_axis_dtype_kws.<locals>.<listcomp>r   rn   r(  r|   r'  r&  rx   r   r  r   z+Testing np.sum with {} input and {} output r   N)r   r   r   r   rn   r(  r|   r'  r&  rx   r   r/   r  r~   r  r  r   )r   r   r   r  r  r  r  r   r  rJ   r  Zpy_resZnb_resr   r   r   test_sum_axis_dtype_kwsg  sP       
    
 
 	 z(TestArrayMethods.test_sum_axis_dtype_kwsc                 C   s^   t }tdd|}tj}td}| ||d|||d| | ||d|||d| dS )zC testing that axis and dtype inputs work when passed as positional Tr  r  r   r   N)r   r   r   r   r{   r   )r   r   r   r/   r   r   r   r   test_sum_axis_dtype_pos_arg  s    


z,TestArrayMethods.test_sum_axis_dtype_pos_argc                 C   st   t }tdd|}td}| ||dd||dd t}tdd|}td}| ||dd||dd d S )NTr  r  r   rI   r   )r   r   r   rM   r   r   r   r   r   r   r   r   r   test_sum_1d_kws  s    

z TestArrayMethods.test_sum_1d_kwsc                 C   sX   t }tdd|}td}d}| |||||| d}| |||||| d S )NTr  )r   rm   r   r	  r  r  r   r   )r   r   r   r{   r   )r   r   r   r   rJ   r   r   r   test_sum_const  s    
zTestArrayMethods.test_sum_constc              	   C   s   |    t}tdd|}td}td}| t ||d W 5 Q R X | t ||d W 5 Q R X | t ||d W 5 Q R X d S )NTr  r  rm   r   r   r   rm   )r   r   r   r   r{   r   r   r   r   r   r   rv   r   r   r   test_sum_exceptions  s    

z$TestArrayMethods.test_sum_exceptionsc              	   C   s   |    tdddd }td}| |||| td}| |||| td}| t}|| W 5 Q R X d}| |t	|j
 | t}|| W 5 Q R X | d	t	|j
 d S )
NTr  c                 S   s   | j ddS )Nr  rI   r   r7   r   r   r   r0    s    z5TestArrayMethods.test_sum_const_negative.<locals>.foo)r   r   r   rm   )r   r   r   )r   r   z"'axis' entry (-1) is out of boundszout of bounds)r   r   r   r{   r   r
  r   r   r2  r   r   r   )r   r0  r   r   errmsgr   r   r   test_sum_const_negative  s    



z(TestArrayMethods.test_sum_const_negativec              	   C   s   t }tdd|}td}| |||| | t ||d W 5 Q R X t}tdd|}| t ||dd W 5 Q R X d S )NTr  )r   r   r   rI   )r   r   r   r{   r   r   r	   r   r  r   r   r   test_cumsum  s    
zTestArrayMethods.test_cumsumc              
      sr  t tdd  fdd}g }|d |d |d |d |tddddd	g |tjdddgdd	d
ggdd |tdddgdd	d
ggg |tddggdd
ggddgggg |ddddd	g |d |d |d tdddg}tjtjtjfD ]8}tj	d|dj
dt|d}|D ]}||| qLq(tj	d|dj
dt|d}|j}|| d t|t| d |g| d gg}|D ]&}	t  ||	 W 5 Q R X qt  |dg W 5 Q R X t  tddt}
|
|dd W 5 Q R X t" tddt}
|
|ddd W 5 Q R X   d S )NTr  c                    s@   | |} | |} || t|dr<|j|jk d S )Nr.  )r   hasattrr   r.  )r   indr   r   r  r   r   r    s
    


z)TestArrayMethods.test_take.<locals>.checkr   r      r  r   r   rw  r-  r   r   r   r   )r  )r  r   r   ))r   )r   r  ))r  )r   )r   rv  r   r<  r^   r  333333?rI   )rG   r   appendr   r   r   r   r(  r   rM   r$  rz  sizer   
IndexErrorr	   rK   r   )r   r  Ztest_indicesr~  r3  r   r  ZszAZillegal_indicesr   Ztake_kwsr   r  r   	test_take  sN    



$"*


  
zTestArrayMethods.test_takec                    s   t tdd  fdd}td}tjtjfD ]}|||d q8tddd	}tjtjfD ]}|||d qjtjd
tjdddd	d}tjtjtjfD ]}|||d qd S )NTr  c                    sT   t | }||}|d k t | } ||}|d k || d S r   )r   r;   
assertTruer   )r   r    r   Zervr   Zgrvr  r   r   r  (  s    



z)TestArrayMethods.test_fill.<locals>.checkr   r   r<  r   rm   0   r^   r   )	rj   r   r   rM   r   ri  r$  rx   r   )r   r  r   r   r   r  r   	test_fill%  s    
zTestArrayMethods.test_fillc                 C   sj   t }tdd|}tdd}tj|||| t||\}}|d|  }tj|||| d S NTr  r  r   r  )r   r   r   r  r   r  meshgridr   r   r   r   r   zr   r   r   	test_realA  s    zTestArrayMethods.test_realc                 C   sj   t }tdd|}tdd}tj|||| t||\}}|d|  }tj|||| d S r  )r   r   r   r  r   r  r  r  r   r   r   	test_imagL  s    zTestArrayMethods.test_imagc                    s4    fdd}t j||tdd|| d S )Nc                    s   t |  S r   )r   expm1r   r   r   rE  r   r   lower_clip_resultZ  s    zHTestArrayMethods._lower_clip_result_test_util.<locals>.lower_clip_resultTr  )r   r   Zassert_almost_equalr   )r   rE  r   r   r   r  r   r  r   _lower_clip_result_test_utilW  s
    z-TestArrayMethods._lower_clip_result_test_utilc           	      C   sB  t tttf}ttf}tdddtddddddfD ] }|| D ]}t	dd	|}d
}| 
t| ||d d  W 5 Q R X tj||dd ||dd  tj||d d||d d tj||dd||dd ||kr*t|}t|}tj||dd|||dd| tj|| | ||dd qHq:d S )Nr  r   e   (   r   r   rm   Tr  &array_clip: must set either max or minr   r  )r   r   r   r   r   r   r   r  r$  r   r  r   r   r  
empty_liker  )	r   has_out
has_no_outr   r   r   r  r   coutr   r   r   	test_clipa  s*    



zTestArrayMethods.test_clipc                 C   sf  t tttf}ttf}tdddddd}t	dd
|jdd}t	dd	
|jdd}dd
|d g}dd|d g}|| D ]}tdd|}	|D ]}
|D ]}|
d kr|d krd}| t| |	|d d  W 5 Q R X qtj|||
||	||
| ||krLt|}t|}tj|||
|||	||
|| tj|| | |	||
| qqqd S )Nr  r   r  r   r   rm   r  r   r  r  Tr  r  )r   r   r   r   r   r   r   r  r$  rM   rp   r/   r   r  r   r   r  r  r  )r   r  r  r   	a_min_arr	a_max_arrZminsZmaxsr   r   r   r   r  r   r   r   r   r   test_clip_array_min_max|  s2    


z(TestArrayMethods.test_clip_array_min_maxc              	   C   s:   t ddt}d}| t| |d dd W 5 Q R X d S )NTr  r  r   r   r   r   r  r	   r   r   r  r   r   r   test_clip_bad_array  s    z$TestArrayMethods.test_clip_bad_arrayc              	   C   s:   t ddt}d}| t| |ddd W 5 Q R X d S )NTr  z).*The argument "a_min" must be a number.*r   r   r   r  r  r   r   r   test_clip_bad_min  s    z"TestArrayMethods.test_clip_bad_minc              	   C   s:   t ddt}d}| t| |ddd W 5 Q R X d S )NTr  z).*The argument "a_max" must be a number.*r   rv   r  r  r   r   r   test_clip_bad_max  s    z"TestArrayMethods.test_clip_bad_maxc              	   C   s>   t ddt}d}| t| |ddddd W 5 Q R X d S )	NTr  r  r   r   r   r	  r   r  r  r   r   r   test_clip_bad_out  s    z"TestArrayMethods.test_clip_bad_outc           	   
   C   s   |    tddt}d}tdddddd	}td
d|jdd}tdd|jdd}d|fd
|f||f|df|dfg}|D ],\}}| 	t
| |||| W 5 Q R X qd S )NTr  zA.*shape mismatch: objects cannot be broadcast to a single shape.*r  r   r  r   r   rm   r  r   r   )r   r   r   r   r  r$  rM   rp   r/   r  r   )	r   r   r  r   r  r  Zmin_maxr   r   r   r   r   test_clip_no_broadcast  s     z'TestArrayMethods.test_clip_no_broadcastc                 C   st   t tfD ]f}tdd|}tdd}tj|||| t||\}}|d|  }tj|||| qd S r  )r   r   r   r   r  r   r  r  r  r   r   r   	test_conj  s    zTestArrayMethods.test_conjc                    s   t tdd  fdd}|tdddgdddgg |ttd |td	d	gd
dgdd
gg |tg  d S )NTr  c                    s   t j|  |  d S r   )r   r   r  r   r  r   r   r    s    z+TestArrayMethods.test_unique.<locals>.checkr   r   rm   r   g@r  gRQ@gffffff
@)r   r   r   r   r%  )r   r  r   r  r   test_unique  s     zTestArrayMethods.test_uniquec                 C   s   t }tdd|}tddd}td}tj|||||| t}tdd|}tddd}tj|||||| d S )NTr  g      4@rm   r   r  g      0@)r   r   r   rM   r$  r   r  r   r  r   r   r   test_array_dot  s    
zTestArrayMethods.test_array_dotc                 C   s   t }tdd|}d}|tjf}tj|| ||  |tdf}tj|| ||  |tjf}tj|| ||  |tdf}tj|| ||  d S )NTr  r   r|   Zf4)r   r   r   r|   r   r  r/   rn   )r   r   r   r   r   r   r   r   test_array_ctor_with_dtype_arg  s    

z/TestArrayMethods.test_array_ctor_with_dtype_arg)V__name__
__module____qualname____doc__r   r   r   r   r   r   r  r  r  r)  r,  r4  rA  rB  rC  rD  rF  rG  r   rM   rO  rP  rQ  rR  rS  rU  rW  rX  rY  r[  r\  r]  rj  rk  rl  rm  ru  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  __classcell__r   r   r   r   r     s   , 0$		"C&$)'
'"
A
 
r   c                   @   s   e Zd Zdd ZdS )TestArrayComparisonsc                    s    fdd}t  tjdtjdd}|||d |||d d  d ||| d |||dd |||jd |||d d	 d d S )
Nc                    s4   t  t| t|f}|| ||| f d S r   rf  )r   rv   r   r   r7  r   r   r    s    z1TestArrayComparisons.test_identity.<locals>.checkr   r^   )r   r   TFr'  r   )r   r   r%  r|   r$  r;   rB   r6   )r   r  r   r   r7  r   test_identity  s    z"TestArrayComparisons.test_identityN)r  r  r  r  r   r   r   r   r    s   r  __main__)r   N)N)N)NNN)NNN)i	itertoolsr   r   r   r:  r8  ro  numpyr   Znumbar   r   Z
numba.corer   Znumba.core.compilerr   Znumba.core.errorsr	   r
   r   r   Znumba.np.numpy_supportr   r   Znumba.tests.supportr   r   r   r   r   r   Zunittestr  ZTIMEDELTA_Yr   r!   r#   r&   r'   r(   r1   r8   r9   r<   r=   r?   r@   rD   rG   rK   rO   rQ   rS   rU   rX   r\   r_   r`   ra   rd   rf   rh   rj   rl   ro   rr   rw   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  mainr   r   r   r   <module>   s    




           p
