a
    
d                    @   s  d dl Z d dlZd dlZd dlmZ d dl mZ d dlZd dl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 d dlmZmZ d d	lmZ d d
lmZmZ d dlmZ d dlmZ d dlm Z  d dl!m"Z"m#Z#m$Z$m%Z%m&Z& d dl'Z'e Z(de(_)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' Z5dd(d)Z6d*d+ Z7d,d- Z8d.d/ Z9d0d1 Z:d2d3 Z;d4d5 Z<d6d7 Z=d8d9 Z>d:d; Z?d<d= Z@d>d? ZAdd@dAZBddBdCZCddGdHZDdIdJ ZEdKdL ZFdMdN ZGdOdP ZHdQdR ZIdSdT ZJdUdV ZKdWdX ZLddZd[ZMd\d] ZNdd_d`ZOddadbZPddcddZQdedf ZRdgdh ZSdidj ZTddkdlZUddmdnZVddodpZWdqdr ZXddsdtZYdudv ZZddwdxZ[ddydzZ\dd{d|Z]d}d~ Z^dddZ_dd Z`dddZadd ZbdddZcdddZddddZedd ZfdddZgdddZhdd Zidd ZjdddZkdddZldddZmdd Zndd Zodd Zpe
jqfddZrdd Zsdd Ztdd Zudd Zvdd Zwdd ZxdddZydddZzdd Z{dd Z|dd Z}dddZ~dd Zdd Zdd ZddĄ ZddƄ ZddȄ Zddʄ Zdd̄ Zdd΄ ZddЄ Zdd҄ ZdddԄZddք Zdd؄ Zd ddۄZG dd݄ de$e"ZG dd߄ de"ZG dd de"Zedkre'  dS (      N)partial)product)dedent)Flags)jitnjittypeof)types)ListDict)numpy_version)TypingErrorNumbaDeprecationWarning)	IS_32BITS)pysignaturecross2d)TestCaseCompilationCacheMemoryLeakMixin
needs_blasrun_in_subprocessTc                 C   s
   t | S N)npsincx r   f/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/numba/tests/test_np_functions.pyr      s    r   c                 C   s
   t | S r   r   angler   r   r   r   angle1#   s    r!   c                 C   s   t | |S r   r   )r   degr   r   r   angle2'   s    r#   c                 C   s   t | |S r   )r   array_equalabr   r   r   r$   +   s    r$   c                 C   s   t | |S r   )r   intersect1dr%   r   r   r   r(   /   s    r(   c                 C   s   t j| ||dS Naxis)r   append)arrvaluesr+   r   r   r   r,   3   s    r,   c                 C   s   t j| |dS r)   )r   count_nonzero)r-   r+   r   r   r   r/   7   s    r/   c                 C   s   t | |S r   )r   delete)r-   objr   r   r   r0   ;   s    r0   c                 C   s
   t | S r   r   diffr&   r   r   r   diff1?   s    r5   c                 C   s   t | |S r   r2   )r&   nr   r   r   diff2C   s    r7   c                 C   s
   t | S r   r   Zbincountr4   r   r   r   	bincount1G   s    r9   c                 C   s   t j| |dS )Nweightsr8   )r&   wr   r   r   	bincount2K   s    r=   c                 C   s   t | ||S r   r8   )r&   r<   	minlengthr   r   r   	bincount3O   s    r?   c                 C   s   t | |S r   r   searchsortedr&   vr   r   r   rA   S   s    rA   c                 C   s   t j| |ddS )Nleftsider@   rB   r   r   r   searchsorted_leftW   s    rG   c                 C   s   t j| |ddS )NrightrE   r@   rB   r   r   r   searchsorted_right[   s    rI   c                  G   s
   t j|  S r   )r   digitizeargsr   r   r   rJ   _   s    rJ   c                  G   s
   t j|  S r   )r   	histogramrK   r   r   r   rM   c   s    rM   c                  G   s   t  S r   )r   MachArrK   r   r   r   macharg   s    rO   c                 C   s
   t | S r   )r   	iscomplexr   r   r   r   rP   k   s    rP   c                 C   s
   t | S r   )r   iscomplexobjr   r   r   r   rQ   o   s    rQ   c                 C   s
   t | S r   )r   isscalarr   r   r   r   rR   s   s    rR   c                 C   s
   t | S r   )r   isrealr   r   r   r   rS   w   s    rS   c                 C   s
   t | S r   )r   	isrealobjr   r   r   r   rT   {   s    rT   c                 C   s   t | |S r   )r   isneginfr   outr   r   r   rU      s    rU   c                 C   s   t | |S r   )r   isposinfrV   r   r   r   rX      s    rX   h㈵>:0yE>Fc                 C   s   t | ||||S r   )r   iscloser&   r'   rtolatol	equal_nanr   r   r   r[      s    r[   c                 C   s
   t | S r   )r   isnatr   r   r   r   r`      s    r`   c                  G   s
   t j|  S r   )r   iinforK   r   r   r   ra      s    ra   c                  G   s
   t j|  S r   )r   finforK   r   r   r   rb      s    rb   c                  G   s   t j|  jS r   )r   rb   rO   rK   r   r   r   finfo_machar   s    rc   c                 C   s
   t | S r   r   fliplrr4   r   r   r   re      s    re   c                 C   s
   t | S r   r   flipudr4   r   r   r   rg      s    rg   c                 C   s
   t | S r   )r   flipr4   r   r   r   rh      s    rh   c                 C   s   t | |S r   r   Zlogspace)startstopr   r   r   	logspace2   s    rl   2   c                 C   s   t j| ||dS )N)numri   )rj   rk   rn   r   r   r   	logspace3   s    ro   c                 C   s
   t | S r   r   rot90r4   r   r   r   rq      s    rq      c                 C   s   t | |S r   rp   )r&   kr   r   r   rot90_k   s    rt   c                 C   s   t j| ||dS r)   )r   array_splitr&   indicesr+   r   r   r   ru      s    ru   c                 C   s   t j| ||dS r)   )r   splitrv   r   r   r   rx      s    rx   c                 C   s   t | |S r   )r   	correlaterB   r   r   r   ry      s    ry   c                 C   s   t | |S r   )r   convolverB   r   r   r   rz      s    rz   c                 C   s
   t | S r   r   ZtriNr   r   r   tri_n   s    r~   c                 C   s   t | |S r   r{   r}   Mr   r   r   tri_n_m   s    r   c                 C   s   t | |S r   r{   r}   rs   r   r   r   tri_n_k   s    r   c                 C   s   t | ||S r   r{   r}   r   rs   r   r   r   	tri_n_m_k   s    r   c                 C   s
   t | S r   r   Ztrilmr   r   r   tril_m   s    r   c                 C   s   t | |S r   r   r   rs   r   r   r   tril_m_k   s    r   c                 C   s
   t | S r   r   Ztril_indicesr6   r   r   r   tril_indices_n   s    r   c                 C   s   t | |S r   r   r6   rs   r   r   r   tril_indices_n_k   s    r   c                 C   s   t j| |dS Nr   r   r6   r   r   r   r   tril_indices_n_m   s    r   c                 C   s   t | ||S r   r   r6   rs   r   r   r   r   tril_indices_n_k_m   s    r   c                 C   s
   t | S r   r   Ztril_indices_fromr-   r   r   r   tril_indices_from_arr   s    r   c                 C   s   t | |S r   r   r-   rs   r   r   r   tril_indices_from_arr_k   s    r   c                 C   s
   t | S r   r   Ztriur   r   r   r   triu_m   s    r   c                 C   s   t | |S r   r   r   r   r   r   triu_m_k   s    r   c                 C   s
   t | S r   r   Ztriu_indicesr   r   r   r   triu_indices_n   s    r   c                 C   s   t | |S r   r   r   r   r   r   triu_indices_n_k  s    r   c                 C   s   t j| |dS r   r   r   r   r   r   triu_indices_n_m  s    r   c                 C   s   t | ||S r   r   r   r   r   r   triu_indices_n_k_m  s    r   c                 C   s
   t | S r   r   Ztriu_indices_fromr   r   r   r   triu_indices_from_arr  s    r   c                 C   s   t | |S r   r   r   r   r   r   triu_indices_from_arr_k  s    r   c                 C   s   t | ||S r   )r   vanderr   r}   
increasingr   r   r   r     s    r   c                 C   s   t | |S r   )r   	partitionr&   kthr   r   r   r     s    r   c                 C   s   t | |S r   )r   argpartitionr   r   r   r   r     s    r   c                 C   s   t | ||||S r   )r   cov)r   yrowvarbiasddofr   r   r   r   #  s    r   c                 C   s   t | ||S r   )r   corrcoefr   r   r   r   r   r   r   '  s    r   c                 C   s   t | ||S r   )r   ediff1d)aryto_endto_beginr   r   r   r   +  s    r   c                 C   s   t | |S r   )r   roll)r&   shiftr   r   r   r   /  s    r   c                 C   s
   t | S r   r   asarrayr4   r   r   r   r   3  s    r   c                 C   s   t j| |dS Ndtyper   r&   r   r   r   r   asarray_kws7  s    r   c                 C   s   t j| |dS r   r   asfarrayr   r   r   r   r   ;  s    r   c                 C   s
   t | S r   r   r4   r   r   r   asfarray_default_kwarg?  s    r   c                 C   s   t | |S r   )r   extract	conditionr-   r   r   r   r   C  s    r   c                 C   s
   t | S r   r   Ztrapzr   r   r   r   np_trapzG  s    r   c                 C   s   t | |S r   r   r   r   r   r   r   
np_trapz_xK  s    r   c                 C   s   t j| |dS )Ndxr   r   r   r   r   r   np_trapz_dxO  s    r   c                 C   s   t | ||S r   r   r   r   r   r   r   r   np_trapz_x_dxS  s    r   c                 C   s   t | ||||S r   )r   Zallcloser\   r   r   r   np_allcloseW  s    r   c                 C   s   t j| ||dS )Nr+   r;   )r   Zaverage)r&   r+   r;   r   r   r   
np_average[  s    r   c                 C   s   t | ||S r   )r   interpr   xpfpr   r   r   r   _  s    r   c                 C   s   t | |S r   )r   repeatr&   repeatsr   r   r   	np_repeatc  s    r   c                 C   s   t | |S r   )r   r   r   r   r   r   r   array_repeatg  s    r   c                 C   s   t j| ||dS )N)defaultr   select)condlist
choicelistr   r   r   r   	np_selectk  s    r   c                 C   s   t | |S r   r   )r   r   r   r   r   np_select_defaultso  s    r   c                 C   s
   t | S r   )r   Zbartlettr   r   r   r   np_bartletts  s    r   c                 C   s
   t | S r   )r   Zblackmanr   r   r   r   np_blackmanw  s    r   c                 C   s
   t | S r   )r   Zhammingr   r   r   r   
np_hamming{  s    r   c                 C   s
   t | S r   )r   Zhanningr   r   r   r   
np_hanning  s    r   c                 C   s   t | |S r   )r   Zkaiser)r   betar   r   r   	np_kaiser  s    r   c                 C   s   t | |S r   )r   Zcrossr%   r   r   r   np_cross  s    r   c                 C   s
   t | |S r   r   r%   r   r   r   
nb_cross2d  s    r   c                 C   s
   t | S r   rd   r4   r   r   r   flip_lr  s    r   c                 C   s
   t | S r   rf   r4   r   r   r   flip_ud  s    r   c                 C   s   t | |S r   )r   Zunion1dr%   r   r   r   
np_union1d  s    r   c                 C   s   t | |S r   )r   Zasarray_chkfiniter   r   r   r   np_asarray_chkfinite  s    r   c                 C   s   || v S r   r   )r&   keyr   r   r   array_contains  s    r   c                 C   s   t | ||S r   )r   swapaxes)r&   a1a2r   r   r   r     s    r           c                 C   s   t j| ||dS )Ncopynan)r   
nan_to_num)Xr   r   r   r   r   r     s    r   c                       s  e Zd ZdZ fddZeddddfddZdd	 Zd
d Zdd Z	e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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.drdXdYZ/dZd[ Z0d\d] Z1d^d_ Z2d`da Z3dbdc Z4ddde Z5dfdg Z6dhdi Z7djdk Z8e9dldm Z:dndo Z;dpdq Z<drds Z=dtdu Z>dvdw Z?dxdy Z@dzd{ ZAd|d} ZBd~d ZCdsddZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd Zcdd ZdddĄ ZeddƄ ZfegddȄ Zhddʄ Ziegdd̄ Zjegdd΄ ZkegddЄ Zlegdd҄ ZmddԄ Znegddք Zoegdd؄ Zpegddڄ Zqegdd܄ Zrddބ Zsdd Ztdd Zudd Zvdd Zwdd Zxdd Zydd Zzdd Z{dd Z|dd Z}dd Z~dd Zdd Zdd Zdd Zdd Zdd  Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Ze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d0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Zd>d? Zd@dA ZdBdC ZdDdE ZdFdG ZdHdI ZdJdK ZdLdM ZdNdO ZdPdQ ZdRdS ZdTdU ZdVdW ZdXdY ZdZd[ Zd\d] Zd^d_ Zd`da Zdbdc Zddde Zdfdg Zdhdi Zdjdk Zdldm Zdndo Zdpdq Z  ZS (t  TestNPFunctionsz,
    Tests for various Numpy functions.
    c                    s(   t t|   t | _tjd| _d S )N*   )	superr   setUpr   ccacher   randomZRandomStaterndself	__class__r   r   r     s    zTestNPFunctions.setUpNFc	              
   K   s   t ||D ]\}
}|du r$dg }}t ||D ]\}}| jj||
f| |d}|j}||g|R  }||g|R  }z
|
j}W n ty   |
}Y n0 |tjtjfv rdnd}d||f }| j	||f||||d|	 q.q
dS )a  
        Runs tests for a unary function operating in the numerical real space.

        Parameters
        ----------
        pyfunc : a python function definition holding that calls the numpy
                 functions to be tested.
        x_types: the types of the values being tested, see numba.types
        x_values: the numerical values of the values to be tested
        flags: flags to pass to the CompilationCache::ccache::compile function
        func_extra_types: the types of additional arguments to the numpy
                          function
        func_extra_args:  additional arguments to the numpy function
        ignore_sign_on_zero: boolean as to whether to allow zero values
        with incorrect signs to be considered equal
        prec: the required precision match, see assertPreciseEqual

        Notes:
        ------
        x_types and x_values must have the same length

        Nr   )flagssingledoublezfor input %r with prec %r)precmsgignore_sign_on_zeroabs_tol)
zipr  compileentry_pointr   AttributeErrorr	   float32	complex64assertPreciseEqual)r  pyfuncx_typesx_valuesr  func_extra_typesfunc_extra_argsr  r  kwargsZtxZvxZxtypesZxargsZcrcfuncgotexpectedZscaltyr  r  r   r   r   	run_unary  s6    



zTestNPFunctions.run_unaryc                    s   d dt  fdd}g d}tjtjgt|d  }||| tj|tjdg}dd	 |D }||| g d
}tjtjgt|d  }|||dd tj|tjdg}dd	 |D }|||dd dS )zv
        Tests the sinc() function.
        This test is purely to assert numerical computations are correct.
        Tepsc                    s    j | |f d| d S )N)r  r  )r  )r  r  r  Zisozr  r  Ztolr   r   check  s
    z(TestNPFunctions.test_sinc.<locals>.check)
      ?      r                ?         g#B;g#B   r   c                 S   s   g | ]}t |qS r   r   .0rC   r   r   r   
<listcomp>      z-TestNPFunctions.test_sinc.<locals>.<listcomp>)      ?                                      r2                ?y                    ?                            ?      ?                  @      @            y#B;        y#B        y        #B;y        #B)ulpsc                 S   s   g | ]}t |qS r   r+  r,  r   r   r   r.    r/  N)	r   r	   r  float64lenr   arrayr  
complex128)r  r"  r  r  r   r!  r   	test_sinc  s     	

zTestNPFunctions.test_sincc                 C   sb   t }tdd|}| t}|d W d    n1 s:0    Y  | dt|j |   d S )NTZnopythonstrz+Argument "x" must be a Number or array-like)r   r   assertRaisesr   assertInrA  	exceptiondisable_leak_checkr  r  r  raisesr   r   r   test_sinc_exceptions  s    &z$TestNPFunctions.test_sinc_exceptionsc                 C   sN   dd }t }tdd|}| D ](\}}|||}|||}| || q d S )Nc                  s   s6  t dd} d}| |fV  t d}d}||fV  t dg}d}d}||fV  ||fV  t g }||fV  t ddg}|dfV  ||fV  t jd t jd}	t jd t j }
|	d	 }|	|
fV  |	|fV  |	t j}||d	 fV  ||
fV  t jd t jj	dd
t j
d}|dfV  |dfV  d S )N
   rm            TFr*  r      )sizer   r(     )r   aranger   r=  r  seedrandviewr>  randintuint8)Za_0Zk_0Za_1Zk_1Zsingle_val_aZk_inZk_outZ	empty_arrZbool_arrZ	float_arrZrand_kZ	present_kZ
complx_arrZuint_arrr   r   r   arrs*  s<    













z+TestNPFunctions.test_contains.<locals>.arrsTr@  )r   r   r  )r  rV  r  r  r-   r   r  Zreceivedr   r   r   test_contains)  s    -

zTestNPFunctions.test_containsc                    s   t  t fdd}g d}tjtjgt|d d  }||| tj|tjdg}dd |D }||| g d	}tjtj	gt|d d  }||| t|}tjtj	g}||| d
S )zw
        Tests the angle() function.
        This test is purely to assert numerical computations are correct.
        c                    s@     | | ddg}tjfgt| }j | |||d d S )N)TF)r  r  )r  r	   bool_r<  )r  r  Zxtra_valuesZ
xtra_typesZpyfunc1Zpyfunc2r  r   r   r"  i  s    
z)TestNPFunctions.test_angle.<locals>.check)r#  r$  r   r%  r&  r'  r(  r)  r*  rr   r   c                 S   s   g | ]}t |qS r   r+  r,  r   r   r   r.  z  r/  z.TestNPFunctions.test_angle.<locals>.<listcomp>)r0  r1  r2  r2  r3  y             r4  r5  r6  r7  r8  r9  N)
r!   r#   r	   r  r;  r<  r   r=  r  r>  )r  r  r"  r  r  r   rZ  r   
test_anglea  s    



zTestNPFunctions.test_anglec                 C   sn   dd }|}g d}g d}t ||D ]B\}}tj|g|d}tdd|}||}	||}
| |	|
 q&d S )Nc                 S   s   t | }|jS r   )r   r    r   )r   rr   r   r   numba_angle  s    
z;TestNPFunctions.test_angle_return_type.<locals>.numba_angle)r#  r$  r0  r9  )Zf4Zf8Zc8Zc16r   Tr@  )r  r   r=  r   assertEquals)r  r]  r  r  r  valtypr   r  r  r  r   r   r   test_angle_return_type  s    z&TestNPFunctions.test_angle_return_typec                 C   sb   t }tdd|}| t}|d W d    n1 s:0    Y  | dt|j |   d S )NTr@  helloz0Argument "z" must be a complex or Array[complex])r!   r   rB  r   rC  rA  rD  rE  rF  r   r   r   test_angle_exceptions  s    &z%TestNPFunctions.test_angle_exceptionsc                 C   sN   dd }t }tdd|}| D ](\}}|||}|||}| || q d S )Nc                  s   s   t g t g fV  t ddgt ddgfV  t g t dgfV  t ddd} d| d d< t ddd| fV  | | fV  dV  dV  dV  d	V  d
V  dV  dV  dV  d S )Nrr   r*  rI  r(     rr   r*     rf  )r*  r*  )rg  r*  )TTTF)Tr*  )Trr   )Fr   r   r=  rP  reshaper   r   r   r   arrays  s    
z0TestNPFunctions.test_array_equal.<locals>.arraysTr@  )r$   r   r  r  rk  r  r  r-   r1   r  r  r   r   r   test_array_equal  s    

z TestNPFunctions.test_array_equalc                 C   sj   t }tdd|}| t(}|tdddd  W d    n1 sJ0    Y  | dt|j	 d S )NTr@     rg     z3Both arguments to "array_equals" must be array-like)
r$   r   rB  r   r   rP  rj  rC  rA  rD  rF  r   r   r   test_array_equal_exception  s    6z*TestNPFunctions.test_array_equal_exceptionc                 C   sb   dd }t }tdd|}| D ]<\}}t|}t|}|||}|||}| || q d S )Nc                   s   s   g g fV  dgg fV  g dgfV  dgdgfV  dgdgfV  ddgdgfV  g dddgfV  ddgddgfV  g dg dfV  d S )Nrr   r*  rr   r*  r*  rf  r   r   r   r   r   rk    s    
z0TestNPFunctions.test_intersect1d.<locals>.arraysTr@  )r(   r   r   r=  r  )r  rk  r  r  r&   r'   r  r  r   r   r   test_intersect1d  s    



z TestNPFunctions.test_intersect1dc                 C   sN   dd }t }tdd|}| D ](\}}|||}|||}| || q d S )Nc                   s   s~   t g d fV  t dd fV  t dd fV  t ddddd fV  t ddddfV  t ddddfV  d S )	NrI  <   rg  ro  r(  rn  r   rr   )r   r=  zerosrP  rj  r   r   r   r   rk    s    z2TestNPFunctions.test_count_nonzero.<locals>.arraysTr@  )r/   r   r  )r  rk  r  r  r-   r+   r  r  r   r   r   test_count_nonzero  s    

z"TestNPFunctions.test_count_nonzeroc           	      C   sT   dd }t }tdd|}| D ].\}}}||||}||||}| || q d S )Nc                  s   s   dV  t ddd fV  t dt dd fV  t dddt dd fV  t g dg dgt g dgd	fV  t g dg dg} | | d
fV  d S )N)r*  r*  NrI  rg  r(  r*  rf  ro  r(  rK        	   r   rr   )r   rP  rj  r=  r   r   r   r   rk    s     *z.TestNPFunctions.test_np_append.<locals>.arraysTr@  )r,   r   r  )	r  rk  r  r  r-   r1   r+   r  r  r   r   r   test_np_append  s    	zTestNPFunctions.test_np_appendc                 C   s"  t }tdd|}tg dg dg}tg dg}d}| t}|d || W d    n1 sh0    Y  | dt|j | t}||d | W d    n1 s0    Y  | dt|j | t}|||d	d
 W d    n1 s0    Y  | dt|j | 	  d S )NTr@  rf  rv  rw  r   z+The first argument "arr" must be array-likez/The second argument "values" must be array-liker   r*   z,The third argument "axis" must be an integer)
r,   r   r   r=  rB  r   rC  rA  rD  rE  )r  r  r  r-   r.   r+   rG  r   r   r   test_np_append_exceptions  s0    **,z)TestNPFunctions.test_np_append_exceptionsc                 C   sN   dd }t }tdd|}| D ](\}}|||}|||}| || q d S )Nc                   s   s   g ddfV  g dddgfV  t ddfV  t ddfV  t dg dfV  t dg dfV  t ddd	d
dfV  t ddd	d
g dfV  g dtdddfV  t dtdfV  d S )Nrr   r*  rg  ro  r(  rg  r*  rI  )rg  r(  rK  )r*  rg  ro  r(  rs  ro  r(  )r(  rd     ry  rr   r*  rg  ro  rr   )r   rP  rj  slicer   r   r   r   rk  &  s    z+TestNPFunctions.test_delete.<locals>.arraysTr@  )r0   r   r  rl  r   r   r   test_delete$  s    

zTestNPFunctions.test_deletec                 C   sR  t }tdd|}|   | t}|ddgd W d    n1 sH0    Y  | dt|j | t$}|t	dg d W d    n1 s0    Y  | dt|j | t}|dd	 W d    n1 s0    Y  | d
t|j | t
}|ddgd	 W d    n1 s*0    Y  | dt|j |   d S )NTr@  rr   r*  gQ	@zobj should be of Integer dtyperI  )g      @gffffff@g@rg  z)arr must be either an Array or a Sequencez"obj must be less than the len(arr))r0   r   rE  rB  r   rC  rA  rD  r   rP  
IndexErrorrF  r   r   r   test_delete_exceptionsB  s8    ,2(.z&TestNPFunctions.test_delete_exceptionsc                 c   sB   t dd }|V  |d}|V  t ddd }|V  dS )z0
        Some test arrays for np.diff()
        rn  rg  rg  ro     )rg  r*  ro  Nr   rP  rj  r  r&   r'   cr   r   r   diff_arrayse  s    
zTestNPFunctions.diff_arraysc                 C   sz   t }tdd|}|  D ] }||}||}| || qtd}|   || W d    n1 sl0    Y  d S )NTr@  r   )r5   r   r  r  r   r=  assertTypingError)r  r  r  r-   r  r  r&   r   r   r   
test_diff1p  s    

zTestNPFunctions.test_diff1c              	   C   sp   t }tdd|}|  D ]P}|jd }dddd|d ||d dfD ]$}|||}|||}| || qDqd S )	NTr@  r   rr   r*  rg  i  )r7   r   r  shaper  )r  r  r  r-   rN  r6   r  r  r   r   r   
test_diff2}  s    
 

zTestNPFunctions.test_diff2c              	   C   s   t }tdd|}|   td}|   ||d W d    n1 sL0    Y  td}dD ]J}| t}||| W d    n1 s0    Y  | 	dt
|j qd|   d S )NTr@  r   rr   rI  )r  izorder must be non-negative)r7   r   rE  r   r=  r  rP  rB  
ValueErrorrC  rA  rD  )r  r  r  r-   r6   rG  r   r   r   test_diff2_exceptions  s    

(
(z%TestNPFunctions.test_diff2_exceptionsc                 C   sH   dd }t }tdd|}| D ]"}||}||}| ||| q d S )Nc                   s   sz   dV  t dgV  dV  dV  dV  tdV  t dV  dV  dV  d V  t dd	V  t d
V  t dd	V  d S )Nrg  )rg                @numbarI  i90  gV-@TYZnatrr   )r   r   intint16timedelta64
datetime64r   r   r   r   r.     s    
z-TestNPFunctions.test_isscalar.<locals>.valuesTr@  )rR   r   assertEqualr  r.   r  r  r   r  r  r   r   r   test_isscalar  s    
zTestNPFunctions.test_isscalarc                 C   s   dd }t dddd }ttg}|D ]}t dd|}| D ]l}||}||}| || ||d|}	||d|}
| |	|
 ||d|}||d|}| || q>| t|jd q&d S )	Nc                   s   s&   dV  dV  t g dV  dV  d S )Nrr   r0  )rg  r0  Thello worldr   r   r   r   r   r.     s    z4TestNPFunctions.test_isobj_functions.<locals>.valuesTr@  c                 S   s   |r| nd }||S r   r   )r   condr  r   r   r   r   optional_fn  s    z9TestNPFunctions.test_isobj_functions.<locals>.optional_fnFry  )r   rQ   rT   r  py_funcr<  Z
signatures)r  r.   r  pyfuncsr  r  r   r  r  Zexpected_optionalZgot_optionalZexpected_noneZgot_noner   r   r   test_isobj_functions  s"    

z$TestNPFunctions.test_isobj_functionsc                 C   sT   dd }t tg}|D ]:}tdd|}| D ] }||}||}| || q,qd S )Nc                   s   sf   t g dV  t g dV  dV  dV  dV  dV  dV  t dd	gdd
gddgddggV  d S )N)      ?      ?r0        @rg  r*                 @rf  rg  y              (@      ?      @y      $@        )r  y       @        rr   r*  ro  r(  rK  rx  ry  r   r=  r   r   r   r   r.     s    z7TestNPFunctions.test_is_real_or_complex.<locals>.valuesTr@  )rP   rS   r   r  )r  r.   r  r  r  r   r  r  r   r   r   test_is_real_or_complex  s    

z'TestNPFunctions.test_is_real_or_complexc           	      C   s\   dd }t tg}|D ]B}tdd|}| D ](\}}|||}|||}| || q,qd S )Nc                   s   s   t jd fV  t jd fV  t jd fV  t t j dt jgd fV  t jt jdt jdfV  t jt jdt jdfV  t jt jdt jdfV  t jt dfV  t t j dt jgt jdt jdfV  d S )Nr   rr   r   rn  rg  )r   ZNINFinfZPINFr   rt  rY  emptyr   r   r   r   r.     s    z7TestNPFunctions.test_isneg_or_ispos_inf.<locals>.valuesTr@  )rU   rX   r   r  )	r  r.   r  r  r  r   rW   r  r  r   r   r   test_isneg_or_ispos_inf  s    

z'TestNPFunctions.test_isneg_or_ispos_infc           	         s   ddt ddgt dd d fdd	}t}td
d|}| D ]Z\}}}|||fi |}|||fi |}t|t jr| || q\| 	t 
|| q\d S )NrY   rZ   d     ry  r*  r*  r*  )r]   r^   c                   3   sn  ddi fV  dt ji fV  t ddgt ddgi fV  t ddgt ddgi fV  t ddgt ddgi fV  t ddgt ddgi fV  t dt jgt dt jgi fV  t dt jgt dt jgd	d
ifV  t t jt jgt dt jgd	d
ifV  t ddgt ddgddifV  t ddgt ddgi fV  t ddgt ddgddifV  t dt jdgt dt jdgfV  t t jt j t jgt dgfV  t t jt j t jgdfV  dt t jt j t jgfV  t ddgt ddgfV  fV  t dgt d  gfV    fV     fV       fV  t jt jfV  t j t jfV  t jt t jgfV  t t jt j gt t jt j gfV  t t jdgt dt jgfV  t t jt j gt ddgfV  t t jt jgt dt j gfV  t t jt jgt ddgfV  t t jdgt t jt j gfV  t d gt dgfV  t dgt d d  gfV    d    d  fV  t t t jdgt t dt jgfV  t t jdgt d d gfV  t t jdgt t jd gfV  t dddd    gt dt jdgfV  t dt g dfV  t jt t jt jt jgfV  t dgt t jt j t jgfV  dt t jt j t jgfV  d S )N    _B   UkBrZ   Hz>r   &.>   2٠Br#  r_   T0.++r^   绽|=g#B;g=|=rr   r*  rg  ro  r   皙?g    .A)r   rr    @)r   r   r=  r  rP  r   aranr-   r^   kwr]   r   r   r.     sT        $(*$ $(*"" $,$&($( ( 0*(6 *z,TestNPFunctions.test_isclose.<locals>.valuesTr@  )r   r=  rP  rj  r[   r   
isinstancerY  r  
assertTruer$   )	r  r.   r  r  r&   r'   r  r  r  r   r  r   test_isclose  s    
5zTestNPFunctions.test_isclosec              	   C   sr   t }tdd|}g d}|D ]N\}}| t}||| W d    n1 sP0    Y  | dt|j qd S )NTr@  ))rb  world)       @N)r&         @z+Inputs for `np.isclose` must be array-like.)r[   r   rB  r   rC  rA  rD  )r  r  r  inputsr&   r'   rG  r   r   r   isclose_exception@  s    (z!TestNPFunctions.isclose_exceptionc                 C   s:   g d}t g d}| jjddddt j}|||fS )z7
        Some test sequences for np.bincount()
        )rr   r*  r(  r*  rg  rJ  )r(  ry  r   r(  r   r  i,  rN  )r   r=  r  rT  astypeint8r  r   r   r   bincount_sequencesJ  s    z"TestNPFunctions.bincount_sequencesc                 C   s@   t }tdd|}|  D ] }||}||}| || qd S NTr@  )r9   r   r  r  )r  r  r  seqr  r  r   r   r   test_bincount1S  s    zTestNPFunctions.test_bincount1c                 C   sn   t }tdd|}|   | t}|ddg W d    n1 sF0    Y  | dt|j |   d S )NTr@  r*  r  #first argument must be non-negative)r9   r   rE  rB  r  rC  rA  rD  rF  r   r   r   test_bincount1_exceptions[  s    *z)TestNPFunctions.test_bincount1_exceptionsc                 C   sp   t }tdd|}|  D ]P}dd |D }|t||t|fD ]$}|||}|||}| || qDqd S )NTr@  c                 S   s   g | ]}t |d  qS r*  )mathsqrt)r-  r   r   r   r   r.  n  r/  z2TestNPFunctions.test_bincount2.<locals>.<listcomp>)r=   r   r  r   r=  r  )r  r  r  r  r<   r;   r  r  r   r   r   test_bincount2j  s    

zTestNPFunctions.test_bincount2c                 C   s   t }tdd|}|   | t"}|ddgddg W d    n1 sL0    Y  | dt|j | t }|ddgdg W d    n1 s0    Y  | dt|j d S )NTr@  r*  r  r   r  z+weights and list don't have the same length)r=   r   rE  rB  r  rC  rA  rD  rF  r   r   r   test_bincount2_exceptionsu  s    0.z)TestNPFunctions.test_bincount2_exceptionsc                 C   sv   t }tdd|}|  D ]V}t|}||d fD ]<}||d |}||d |}| t|t| | || q2qd S )NTr@  r*  )r?   r   r  maxr  r<  r  )r  r  r  r  Za_maxr>   r  r  r   r   r   test_bincount3  s    zTestNPFunctions.test_bincount3c                 C   s   t }tdd|}|   | t"}|ddgddg W d    n1 sL0    Y  | dt|j | t }|ddgd d W d    n1 s0    Y  | d	t|j d S )
NTr@  r*  r  r   r     &   z 'minlength' must not be negative)r?   r   rE  rB  r  rC  rA  rD  rF  r   r   r   test_bincount3_exceptions  s    0.z)TestNPFunctions.test_bincount3_exceptionsc                    sR  t tdd ttddttdd fdd}tdd }tdd }|t|fD ]D}|D ]}||| q~||d	fD ]}||| q||t| qvtt|t	d
gd  d }tdd }|t|fD ]F}|D ]}||| q||d	fD ]}||| q||t| qdd }tdd| 
   ddgd W d    n1 s0    Y  ddd}tdd| 
 "  ddgddd W d    n1 s0    Y  tg d}tddgddgddgddgg}||| tg d}tddgddgddgg}||| d S )NTr@  c                    sd   | |} | |} || | |}| |} || | |}| |} || d S r   r  )r&   rC   r  r  r  Z
cfunc_leftZcfunc_rightr  Zpyfunc_leftZpyfunc_rightr  r   r   r"    s    





z0TestNPFunctions.test_searchsorted.<locals>.checkr(  r*  rJ  rr   ro  r(  r   rx  r  r&  c                 S   s   t j| |ddS )NZnonsenserE   r@   rB   r   r   r   bad_side  s    z3TestNPFunctions.test_searchsorted.<locals>.bad_siderD   c                 S   s   t j| ||dS )NrE   r@   )r&   rC   rF   r   r   r   nonconst_side  s    z8TestNPFunctions.test_searchsorted.<locals>.nonconst_siderH   rE   )rr   r*  r   ro  rK  r   rg  )	rz  rr   ro  r*  r   rg  rx  rK  ry  rI  r  )rD   )rA   r   rG   rI   r   rP  listrj  r;  floatr  r=  )r  r"  binsr.   r&   rC   r  r  r   r  r   test_searchsorted  s`     
.

2
z!TestNPFunctions.test_searchsortedc                    sj  t tdd  fdd}tddddd	d
dddtdtdtdf}t|dks`J j| tg d}tddd	dtdtdg}tddd	dtdtdgtdgd  }|||g}||dg}|D ]4}|	  |D ]"}	||	| ||	|d d d  qq|D ]<}|	  dD ](}
||||
 |||d d d |
 q*q|t
|| d S )NTr@  c                     s    |  } |  } || d S r   r  )rL   r  r  r  r  r  r   r   r"    s    z,TestNPFunctions.test_digitize.<locals>.checkr   Gz?rr   皙@r  rx  ry  rz        #@r  z-infr   rn  rr   rg  r  ry  rg  rI  r  r  rh  )rJ   r   r   r;  r  r<  r  shufflerj  sortr  )r  r"  r.   Zbins1Zbins2Zbins3Zall_binsxsr  r   rH   r   r  r   test_digitize  s4    

zTestNPFunctions.test_digitizec                    s`   t tdd  fddfdd}td}t|dksHJ j| || d S )	NTr@  c                     s:   |  \}} |  \}} || j ||ddd d S )Nr
  r*  r  r:  r  )rL   ZpyhistZpybinsZchistZcbinsr  r   r   r"  )  s    z-TestNPFunctions.test_histogram.<locals>.checkc                    sJ   t g d} | |  | d|  | d  | dd  |  d S )Nr  r  rx  )r#  g      +@)r   r;  rj  )r.   r  )r"  r   r   check_values1  s    

z4TestNPFunctions.test_histogram.<locals>.check_values)r   r  rr   r  r  rx  ry  rz  r  g     @E@r$  r%  rn  )rM   r   r   r;  r<  r  r  )r  r  r.   r   )r  r"  r  r  r   test_histogram%  s    
zTestNPFunctions.test_histogramc              	   C   sR  t dd|}d}tjtjtjtjtjtjtjg}t	
||||D ]\}}}}tj||d}	tj||d}
t|tjr|	d|	  |}	t|tjr|
d|
  |}
||	|
}||	|
}| || qBtddd}td}||f||ffD ]T\}}| t}||| W d    n1 s,0    Y  d	}| |t|j qd S )
NTr@  )rr   r*  rg  rx  r   r3  rn  ro  rg  zonly supported on 1D arrays)r   r   r  int32int64r  r;  r  r>  	itertoolsr   rP  
issubdtypeZcomplexfloatingr  r  rj  rB  r   rC  rA  rD  )r  r  r  lengthsZdtsZdt1Zdt2r6   r   r&   rC   r  r  _a_br   r   rG  r  r   r   r   _test_correlate_convolveH  s,    


*z(TestNPFunctions._test_correlate_convolvec                 C   s   |  t d S r   )r  ry   r  r   r   r   test_correlatee  s    zTestNPFunctions.test_correlatec              	   C   s   |    tjdd}td}tdd|}||f||ffD ]n\}}| t}||| W d    n1 sn0    Y  t|dkr| dt	|j
 q<| dt	|j
 q<d S )	N)r   )r  r(  Tr@  r   z'a' cannot be emptyz'v' cannot be empty)rE  r   onesrP  r   rB  r  r<  rC  rA  rD  )r  fnr  r  r  r   r   rG  r   r   r   #_test_correlate_convolve_exceptionsh  s    
(z3TestNPFunctions._test_correlate_convolve_exceptionsc                 C   s   |  t d S r   )r  ry   r  r   r   r   test_correlate_exceptionsx  s    z)TestNPFunctions.test_correlate_exceptionsc                 C   s   |  t d S r   )r  rz   r  r   r   r   test_convolve|  s    zTestNPFunctions.test_convolvec                 C   s   |  t d S r   )r  rz   r  r   r   r   test_convolve_exceptions  s    z(TestNPFunctions.test_convolve_exceptionsc                 C   s0   |f i |}|f i |}| j |||d d S )Nr  r  )r  r  r  paramsr  r  r  r   r   r   _check_output  s    zTestNPFunctions._check_outputc                    s$  t }tdd|}t| j||  fdd}|tg d |tdd  |tdd	d
 |tdtjtj	tj	 g |tg  |tdd
d  |tdgd
 dgd   tj
tjtjtjfD ]}|tjd	|d q|g d |d |d |d |d |d d S )NTr@  c                    s   g d}ddg}d| i} | |D ]}| |d} | q$|D ]}| |d} | q@|D ]"}|D ]}| ||d} | qdq\d S )N)Nr   rr   r*  rg  ro  TFr   )r   r}   )r   r   r   r   )r   Z	n_choicesZincreasing_choicesr  r6   r   r  r   r   _check  s    



z1TestNPFunctions.test_vander_basic.<locals>._check)rr   r*  rg  r(  rx        %@rg  rI  r(  333333?r)  333333?Fro  r   )r   rr   r*  rg  ro  r(  rK  rx  )r   r#  r  r   )rg  g-@A`"	@)TFro  )r   r   r   r  r   r=  rP  linspacer   r  r  r  r  r;  )r  r  r  r  r   r   r  r   test_vander_basic  s&    z!TestNPFunctions.test_vander_basicc                    s   t }tdd|   tdd  fdd}ddtjdd	gfD ]}|| qJt} d
d W d    n1 s0    Y  dt	|j
  fdd}tdd| d| d S )NTr@  r(  r&  c                    sJ     } | d W d    n1 s*0    Y  dt|j d S )Nr|   z,Second argument N must be None or an integerr  rC  rA  rD  )r}   rG  r  r  r   r   r   _check_n  s
    
*z8TestNPFunctions.test_vander_exceptions.<locals>._check_nr  rr   r*  r  r|   z#Negative dimensions are not allowedc                    sH    t} |  W d    n1 s(0    Y  dt|j d S )Nz.x must be a one-dimensional array or sequence.)rB  r  r  rA  rD  )r   rG  r  r  r   r   	_check_1d  s
    &z9TestNPFunctions.test_vander_exceptions.<locals>._check_1dr  )rg  rg  rg  )r*  rg  r  )r   r   rE  r   rP  r  rB  r  rC  rA  rD  rj  )r  r  r  r}   rG  r
  r   r  r   test_vander_exceptions  s"    
*z&TestNPFunctions.test_vander_exceptionsc                 C   sH   t }tdd|}t| j||}dd }| D ]}d|i}|| q.d S )NTr@  c                   S   s   t ddS Nry  r   rP  r   r   r   r   n_variations  s    z6TestNPFunctions.test_tri_n_basic.<locals>.n_variationsr}   )r~   r   r   r  )r  r  r  r  r  r6   r  r   r   r   test_tri_n_basic  s    
z TestNPFunctions.test_tri_n_basicc           	      C   sz   t }tdd|}t| j||}dd }dd }| D ]}d|i}|| q6| D ]"}| D ]}||d}|| q\qRd S )	NTr@  c                   S   s   t ddS r  r  r   r   r   r   r    s    z8TestNPFunctions.test_tri_n_m_basic.<locals>.n_variationsc                   S   s   t jd gtddfS Nr)  rz  r  chainfrom_iterableranger   r   r   r   m_variations  s    z8TestNPFunctions.test_tri_n_m_basic.<locals>.m_variationsr}   r   )r   r   r   r  )	r  r  r  r  r  r  r6   r  r   r   r   r   test_tri_n_m_basic  s    




z"TestNPFunctions.test_tri_n_m_basicc           	      C   sz   t }tdd|}t| j||}dd }dd }| D ]}d|i}|| q6| D ]"}| D ]}||d}|| q\qRd S )	NTr@  c                   S   s   t ddS r  r  r   r   r   r   r    s    z8TestNPFunctions.test_tri_n_k_basic.<locals>.n_variationsc                   S   s   t ddS NrI  r  r   r   r   r   k_variations  s    z8TestNPFunctions.test_tri_n_k_basic.<locals>.k_variationsr}   r   )r   r   r   r  )	r  r  r  r  r  r  r6   r  rs   r   r   r   test_tri_n_k_basic  s    




z"TestNPFunctions.test_tri_n_k_basicc                 C   s   t }tdd|}t| j||}dd }dd }dd }| D ]}d	|i}|| q>| D ]"}| D ]}	||	d
}|| qdqZ| D ]"}| D ]}
||
d}|| qq| D ]0}| D ]$}
| D ]}	||	|
d}|| qqqd S )NTr@  c                   S   s   t ddS r  r  r   r   r   r   r    s    z:TestNPFunctions.test_tri_n_m_k_basic.<locals>.n_variationsc                   S   s   t jd gtddfS r  r  r   r   r   r   r  !  s    z:TestNPFunctions.test_tri_n_m_k_basic.<locals>.m_variationsc                   S   s   t ddS r  r  r   r   r   r   r  %  s    z:TestNPFunctions.test_tri_n_m_k_basic.<locals>.k_variationsr}   r   r   r   )r   r   r   r  )r  r  r  r  r  r  r  r6   r  r   rs   r   r   r   test_tri_n_m_k_basic  s,    










z$TestNPFunctions.test_tri_n_m_k_basicc                    sL   t }tdd|    fdd}ddtjddgfD ]}|| q:d S )NTr@  c                    sL     } dd| d W d    n1 s,0    Y  dt|jv sHJ d S )Nr(  rK  rs   k must be an integer)r  rA  rD  )rs   rG  r	  r   r   r  G  s    
,z3TestNPFunctions.test_tri_exceptions.<locals>._check      ?rr   r*  )r   r   rE  r   r  )r  r  r  rs   r   r	  r   test_tri_exceptions@  s    z#TestNPFunctions.test_tri_exceptionsc                    s,   t dd  fdd}|S )NTr@  c                    s2   | } | } |j|j tj|| d S r   )r  r   r   testingassert_array_equal)r-   r  r  r  r   r   r  R  s    z:TestNPFunctions._triangular_matrix_tests_m.<locals>._checkr   _triangular_matrix_tests_innerr  r  r  r   r  r   _triangular_matrix_tests_mO  s    z*TestNPFunctions._triangular_matrix_tests_mc                    s,   t dd  fdd}|S )NTr@  c                    sv   t jd gtddfD ]X}|d u r*i }nd|i}| fi |} | fi |}|j|j tj|| qd S )Nr  rI  rs   )	r  r  r  r  r  r   r   r"  r#  )r-   rs   r  r  r  r  r   r   r  ^  s    z<TestNPFunctions._triangular_matrix_tests_m_k.<locals>._checkr$  r&  r   r  r   _triangular_matrix_tests_m_k[  s    z,TestNPFunctions._triangular_matrix_tests_m_kc                    s    fdd} fdd}|t dd  |t dd   t dd	d
dd  t g   t ddd d d   t djddd t dd d} |  t | d S )Nc                    s:    |  |  d}  |  |  d}  |   | j d S )N)rz  rx  )rx  rr   rg  rg  rj  Tr4   r  r   r   	check_oddo  s    

zATestNPFunctions._triangular_matrix_tests_inner.<locals>.check_oddc                    s:    |  |  d}  |  |  d}  |   | j d S )N)ro     ro  r*  r*  ro  r)  r4   r+  r   r   
check_evenw  s    

zBTestNPFunctions._triangular_matrix_tests_inner.<locals>.check_even?   r  @   ih  rg  ro  r(  rK  rz  )rg  rg  r  Forderr.  )r   rP  rj  r=  asfortranarray)r  r  r  r,  r/  r-   r   r+  r   r%  l  s    z.TestNPFunctions._triangular_matrix_tests_innerc                 C   sj   t dd|}|   td}|  .}||dd | dt|j W d    n1 s\0    Y  d S )NTr@  r(  rK  r   r  r  )r   rE  r   r  r  rC  rA  rD  )r  r  r  r&   rG  r   r   r   _triangular_matrix_exceptions  s    

z-TestNPFunctions._triangular_matrix_exceptionsc           	      C   sv   t dd|}|D ]^}|| }|| }| t|t| | t|t| t||D ]\}}tj|| qXqd S r  )r   r  typer<  r  r   r"  r#  )	r  r  rL   r  r   r  r  egr   r   r   _triangular_indices_tests_base  s    z.TestNPFunctions._triangular_indices_tests_basec                 C   s   |  |dd tdD  d S )Nc                 S   s   g | ]
}|gqS r   r   )r-  r6   r   r   r   r.    r/  z?TestNPFunctions._triangular_indices_tests_n.<locals>.<listcomp>rI  r;  r  r  r  r   r   r   _triangular_indices_tests_n  s    z+TestNPFunctions._triangular_indices_tests_nc                 C   s   |  |dd tdD  d S )Nc                 S   s.   g | ]&}t | d  |d D ]}||gqqS rr   r*  r  )r-  r6   rs   r   r   r   r.    r/  zATestNPFunctions._triangular_indices_tests_n_k.<locals>.<listcomp>rI  r<  r=  r   r   r   _triangular_indices_tests_n_k  s    z-TestNPFunctions._triangular_indices_tests_n_kc                 C   s   |  |dd tdD  d S )Nc                 S   s&   g | ]}t d | D ]}||gqqS r  r@  )r-  r6   r   r   r   r   r.    r/  zATestNPFunctions._triangular_indices_tests_n_m.<locals>.<listcomp>rI  r<  r=  r   r   r   _triangular_indices_tests_n_m  s    z-TestNPFunctions._triangular_indices_tests_n_mc                 C   s4   |  |dd tdD  tdd|}|d d S )Nc                 S   sB   g | ]:}t | d  |d D ] }t d| D ]}|||gq,qqS r?  r@  )r-  r6   rs   r   r   r   r   r.    s   zCTestNPFunctions._triangular_indices_tests_n_k_m.<locals>.<listcomp>rI  Tr@  rr   )r;  r  r   )r  r  r  r   r   r   _triangular_indices_tests_n_k_m  s    z/TestNPFunctions._triangular_indices_tests_n_k_mc                 C   s   t dd|}tttfD ]}ttdtdD ]r\}}t||f|}||}||}| 	t
|t
| | 	t|t| t||D ]\}	}
tj|	|
 qq0qd S )NTr@  rI  r   r  r  boolr  r   r  r   r  r  r8  r<  r  r"  r#  )r  r  r  r   r6   r   r-   r  r  r9  r:  r   r   r   "_triangular_indices_from_tests_arr  s    z2TestNPFunctions._triangular_indices_from_tests_arrc                 C   s   t dd|}tttfD ]}ttdtdD ]\}}t||f|}tddD ]^}||}||}	| 	t
|t
|	 | 	t|t|	 t||	D ]\}
}tj|
| qqRq0qd S )NTr@  rI  r  rD  )r  r  r  r   r6   r   r-   rs   r  r  r9  r:  r   r   r   $_triangular_indices_from_tests_arr_k  s    z4TestNPFunctions._triangular_indices_from_tests_arr_kc                 C   s   t dd|}t|j}|  }|d W d    n1 s>0    Y  | dt|j d|v r|  }|ddd W d    n1 s0    Y  | dt|j d	|v r|  }|ddd
 W d    n1 s0    Y  | dt|j d S )NTr@  r#  zn must be an integerrs   rr   r  r  r   r   zm must be an integer)r   r   
parametersr  rC  rA  rD  )r  r  r  rH  rG  r   r   r   _triangular_indices_exceptions  s    

&
*
*z.TestNPFunctions._triangular_indices_exceptionsTc              	   C   s   t dd|}dD ]V}tdg| }|  }|| W d    n1 sL0    Y  | dt|j q|rtddg}|  }||dd W d    n1 s0    Y  | dt|j d S )	NTr@  )r   rr   rg  r(  zinput array must be 2-dr&  r  r  )r   r   r  r  rC  rA  rD  )r  r  Ztest_kr  Zndimsr&   rG  r   r   r   #_triangular_indices_from_exceptions  s    
&
*z3TestNPFunctions._triangular_indices_from_exceptionsc                 C   s   |  t | t d S r   )r'  r   r(  r   r  r   r   r   test_tril_basic  s    
zTestNPFunctions.test_tril_basicc                 C   s   |  t d S r   )r7  r   r  r   r   r   test_tril_exceptions   s    z$TestNPFunctions.test_tril_exceptionsc                 C   sT   |  t | t | t | t | t | t | t | t d S r   )	r>  r   rA  r   rB  r   rC  r   rI  r  r   r   r   test_tril_indices  s    






z!TestNPFunctions.test_tril_indicesc                 C   s0   |  t | t | td | td d S NFT)rF  r   rG  r   rJ  r  r   r   r   test_tril_indices_from  s    

z&TestNPFunctions.test_tril_indices_fromc                 C   s   |  t | t d S r   )r'  r   r(  r   r  r   r   r   test_triu_basic  s    
zTestNPFunctions.test_triu_basicc                 C   s   |  t d S r   )r7  r   r  r   r   r   test_triu_exceptions  s    z$TestNPFunctions.test_triu_exceptionsc                 C   sT   |  t | t | t | t | t | t | t | t d S r   )	r>  r   rA  r   rB  r   rC  r   rI  r  r   r   r   test_triu_indices  s    






z!TestNPFunctions.test_triu_indicesc                 C   s0   |  t | t | td | td d S rN  )rF  r   rG  r   rJ  r  r   r   r   test_triu_indices_from$  s    

z&TestNPFunctions.test_triu_indices_fromc                 C   sh   |||}|||}|  t|d | t|d |  |  t||d  t||d   d S r   r  r   uniquer  r  r  r&   r   r  r  r   r   r   partition_sanity_check*  s    

(z&TestNPFunctions.partition_sanity_checkc              	   C   sx   |||}|||}|  t||d |  t||d |   |  t|||d   t|||d    d S r   rT  rV  r   r   r   argpartition_sanity_check7  s    

z)TestNPFunctions.argpartition_sanity_checkc           
   	   C   s   t }tdd|}tddD ]}td|d D ]}t|}| j| || jdd }| j|j}d|||d | | g}t	|| }| 
|||| | | 
|| || | | 
|t| || | |D ]}	| ||||	 qq.qd S NTr@  rI  rd  rr   r*  r   )r   r   r  r   rP  r  r  rT  rN  r  r  tolisttuplerW  
r  r  r  jididxr   tgtrs   r   r   r   test_partition_fuzzF  s*    
z#TestNPFunctions.test_partition_fuzzc           
   	   C   s  t }tdd|}tddD ]}td|d D ]}t|}| j| || jdd }| j|j}d|||d | | g}t	|| }| 
|||||  ||  | 
||| ||  ||  | 
||t| ||  ||  |D ]}	| ||||	 qq.qd S rY  )r   r   r  r   rP  r  r  rT  rN  argsortr  rZ  r[  rX  r\  r   r   r   test_argpartition_fuzz^  s*    
z&TestNPFunctions.test_argpartition_fuzzc                    sT   t }tdd|   td} fdd}||d ||d ||d d S )NTr@  rI  c                    sJ    t} | | W d    n1 s*0    Y  t|jdksFJ d S Nzkth out of boundsrB  r  rA  rD  r&   r   r9  r	  r   r   r    s    (zETestNPFunctions.test_partition_exception_out_of_range.<locals>._checkrg  rd  )r   r   rE  r   rP  r  r  r&   r  r   r	  r   %test_partition_exception_out_of_rangev  s    


z5TestNPFunctions.test_partition_exception_out_of_rangec                    sT   t }tdd|   td} fdd}||d ||d ||d d S )NTr@  rI  c                    sJ    t} | | W d    n1 s*0    Y  t|jdksFJ d S re  rf  rg  r	  r   r   r    s    (zHTestNPFunctions.test_argpartition_exception_out_of_range.<locals>._checkrh  ri  )r   r   rE  r   rP  rj  r   r	  r   (test_argpartition_exception_out_of_range  s    


z8TestNPFunctions.test_argpartition_exception_out_of_rangec                    sb   t }tdd|    fdd}td}||d ||d ||tdd	tjf d S )
NTr@  c                    sH     } | | W d    n1 s(0    Y  dt|j d S NzPartition index must be integerr  r&   r   rG  r	  r   r   r    s
    
(zHTestNPFunctions.test_partition_exception_non_integer_kth.<locals>._checkrI        "@ffffff
@r  rr   r*  )r   r   rE  r   rP  r=  r   r  r  r  r&   r   r	  r   (test_partition_exception_non_integer_kth  s    


z8TestNPFunctions.test_partition_exception_non_integer_kthc                    sb   t }tdd|    fdd}td}||d ||d ||tdd	tjf d S )
NTr@  c                    sH     } | | W d    n1 s(0    Y  dt|j d S rm  r  rn  r	  r   r   r    s
    
(zKTestNPFunctions.test_argpartition_exception_non_integer_kth.<locals>._checkrI  ro  rp  rr   r*  )r   r   rE  r   rP  r=  r   rr  r   r	  r   +test_argpartition_exception_non_integer_kth  s    


z;TestNPFunctions.test_argpartition_exception_non_integer_kthc                    s@   t }tdd|    fdd}|dd |dd d S )NTr@  c                    sH     } | | W d    n1 s(0    Y  dt|j d S Nz(The first argument must be an array-liker  rn  r	  r   r   r    s
    
(zITestNPFunctions.test_partition_exception_a_not_array_like.<locals>._checkro  r   Sausages)r   r   rE  r&  r   r	  r   )test_partition_exception_a_not_array_like  s    
z9TestNPFunctions.test_partition_exception_a_not_array_likec                    s@   t }tdd|    fdd}|dd |dd d S )NTr@  c                    sH     } | | W d    n1 s(0    Y  dt|j d S ru  r  rn  r	  r   r   r    s
    
(zLTestNPFunctions.test_argpartition_exception_a_not_array_like.<locals>._checkro  r   rv  )r   r   rE  r&  r   r	  r   ,test_argpartition_exception_a_not_array_like  s    
z<TestNPFunctions.test_argpartition_exception_a_not_array_likec                    s<   t }tdd|    fdd}|tdd d S )NTr@  c                    sH     } | | W d    n1 s(0    Y  dt|j d S Nz3The first argument must be at least 1-D (found 0-D)r  rn  r	  r   r   r    s
    
(zCTestNPFunctions.test_partition_exception_a_zero_dim.<locals>._checkrr   r   )r   r   rE  r   r=  r&  r   r	  r   #test_partition_exception_a_zero_dim  s
    z3TestNPFunctions.test_partition_exception_a_zero_dimc                    s<   t }tdd|    fdd}|tdd d S )NTr@  c                    sH     } | | W d    n1 s(0    Y  dt|j d S ry  r  rn  r	  r   r   r    s
    
(zFTestNPFunctions.test_argpartition_exception_a_zero_dim.<locals>._checkrr   r   )r   r   rE  r   r=  r&  r   r	  r   &test_argpartition_exception_a_zero_dim  s
    z6TestNPFunctions.test_argpartition_exception_a_zero_dimc                    sL   t }tdd|    fdd}|tdtdddd	 d S )
NTr@  c                    sJ    t} | | W d    n1 s*0    Y  dt|j d S Nzkth must be scalar or 1-DrB  r  rC  rA  rD  rn  r	  r   r   r    s    (zNTestNPFunctions.test_partition_exception_kth_multi_dimensional.<locals>._checkrI  rK  rg  r*  r   )r   r   rE  r   rP  rj  r&  r   r	  r   .test_partition_exception_kth_multi_dimensional  s
    z>TestNPFunctions.test_partition_exception_kth_multi_dimensionalc                    sL   t }tdd|    fdd}|tdtdddd	 d S )
NTr@  c                    sJ    t} | | W d    n1 s*0    Y  dt|j d S r|  r}  rn  r	  r   r   r    s    (zQTestNPFunctions.test_argpartition_exception_kth_multi_dimensional.<locals>._checkrI  rK  rg  r*  r~  )r   r   rE  r   rP  rj  r&  r   r	  r   1test_argpartition_exception_kth_multi_dimensional  s
    zATestNPFunctions.test_argpartition_exception_kth_multi_dimensionalc                    sV   t tdd d fdd	}tg }d|_|dtg fD ]}|| qDd S )	NTr@  r   c                    s$   | |} | |} || d S r   r  r&   r   r  r  r  r   r   r"  (  s    

z9TestNPFunctions.test_partition_empty_array.<locals>.checkrg  r*  rr   r   r   )r   )r   r   r   r=  r  r  r"  r&   r-   r   r  r   test_partition_empty_array"  s    
z*TestNPFunctions.test_partition_empty_arrayc                    sV   t tdd d fdd	}tg }d|_|dtg fD ]}|| qDd S )	NTr@  r   c                    s$   | |} | |} || d S r   r  r  r  r   r   r"  ;  s    

z<TestNPFunctions.test_argpartition_empty_array.<locals>.checkr  r   )r   )r   r   r   r=  r  r  r   r  r   test_argpartition_empty_array5  s    
z-TestNPFunctions.test_argpartition_empty_arrayc              	   C   s  t }tdd|}tg }||d}| || td}||d}| || tg d}| }|td| | || ddgddgddgfD ]L}t|}t|}dD ].}	| |||	|	 ||	  | 	||||	 qqg d	g d
g dg dg dg dg dg dfD ]P}t|}t|}dD ]0}	| |||	|	 ||	  | 	||||	 q8qtd}| ||d| td}dD ],}	| 
|||	|	 |	 | 	||||	 qtdd d d }|| t| fD ]r}
| 
||
dd d | 
||
dd d | ||
d||
d | ||
d||
d | 	|||d qtd}t||jd }|jd d }| 
|||| | td}t||jd d }|jd d }| 
|||| | td}d |d< | 
||d!d d  | 
||d!d d tj|d< t||d!d sJJ tdd" }ttdd" }| j| t|jD ]0}| 
|||| ||  | 	|||| qtg d#}g d$}| 
t|||| d% d&d' tjtjfD }|D ]\}}tj||d(}| j| ttj||d(d)}t| jj| t|jD ]h}|||}| 
|| | tj|d | ||  tj|| ||d d   | 	|||| qNqd S )*NTr@  r   rr   rd  rM  r(  (   r*  r   rr   rg  r*  rr   rf  r*  rr   rg  r*  rg  rr   rr   rr   rr   rq  r*  r*  rr   rr   r*  rr   r   rr   r*  rm   1   r(  rM  /   r  rK  r-  )      @B AB rI  ro  r*  r  rx  r   rr   r*  rg  ro  r(  rx  rx  rx  rx  rx  rx  rx  rx  rx  rx  rx  rx  rx  rx  rx  rx  rz  r   rg     rJ  r   rg  rx  rx  c                 S   s   g | ]}d D ]}||fqqS )rz  r-  r   r-  dtsr   r   r   r.    r/  z8TestNPFunctions.test_partition_basic.<locals>.<listcomp>r   ro  rr   )r   r   r   r=  r  r  r   rP  r  rW  r  rZ  r[  r   rN  r   isnanr  r  r  r  r  tilemapr"  assert_array_less)r  r  r  r_  r  r   okthr\  ra  rs   r&   r   midr^  tdr  r  d1pr   r   r   test_partition_basicH  s    














z$TestNPFunctions.test_partition_basicc              	   C   s  t }tdd|}tjg tjd}||d}||d}| || tjdtjd}||d}||d}| || tg d}| }|td| | || ddgddgddgfD ]T}t|}t	|}	d	D ]6}
| ||||
|
  ||	|
   | 
||||
 qqg d
g dg dg dg dg dg dg dfD ]X}t|}t	|}	dD ]8}
| ||||
|
  ||	|
   | 
||||
 q`qDtd}| |||d | td}dD ],}
| |||
|
 |
 | ||||
 qtdd d d }|| t| fD ]r}| ||dd d | ||dd d | ||d||d | ||d||d | 
|||d q$td}t||jd }|jd d }| |||||  | td }t||jd d }|jd d }| |||||  | td!}d"|d< | |||d#d  d" | |||d#d  d tj|d< t|||d#d  sJ tdd$ }ttdd$ }	| j| t|jD ]4}| |||||  |	|  | 
|||| qtg d%}g d&}| t|||||  d' d(d) tjtjfD }|D ]\}}tj||d}| j| ttj||dd*}t| jj| t|jD ]l}|||| }| || | tj|d | ||  tj|| ||d d   | 
|||| qqNd S )+NTr@  r   r   rr   r  r  r*  r  r  rf  r  r  r  rq  r  r  r  rm   r  r  r  r  rK  r-  rd  r  r  r  r  r  r  rI  ro  r  rx  r  r  r  c                 S   s   g | ]}d D ]}||fqqS r  r   r  r   r   r   r.  	  r/  z;TestNPFunctions.test_argpartition_basic.<locals>.<listcomp>r  )r   r   r   r=  r  r  r  r   rP  rc  rX  r  rW  rZ  r[  r   rN  r   r  r  r  r  r  r  r  r  r  r"  r  )r  r  r  r_  r  r  r   r  r\  ra  rs   r&   r   r  r^  r  r  r  r  r  r   r   r   test_argpartition_basic  s    





"

"





z'TestNPFunctions.test_argpartition_basicc                 C   s   d}t |D ]v}t jj||| || d| d | j||d  || k d|||d  || f d |d }| |||| qd S Nr   zkth %d)err_msgzkth %d, %r not greater equal %d)r  rr   )r   r  r"  r  r  allrW  r  r  r  r_  r   prevrs   r   r   r   assert_partitioned	  s    z"TestNPFunctions.assert_partitionedc                 C   s   d}t |D ]v}t jj||| || d| d | j||d  || k d|||d  || f d |d }| |||| qd S r  )r   r  r"  r  r  r  rX  r  r   r   r   assert_argpartitioned	  s    z%TestNPFunctions.assert_argpartitionedc                 C   s`  t }tdd|}t| j||}tg d}||d}||d ||t|d d | |||d td}| j	
| | td||tt|j td}| j	
| tg d}| j	
| |||}||| | j	
| | |||| tdd d d	 }|||d
gd d
g |||d
gd ddg d
gd ddg  d S NTr@  )rg  ro  r*  rr   )r   rg  )r~  r  r  )rr   rg  ry  r  rJ  r  r(  ro  rK  rL  )r   r   r   r  r   r=  r   r  rP  r  r  r  r  rN  )r  r  r  r  r_  r  keysr   r   r   test_partition_iterative*	  s,    


"


z(TestNPFunctions.test_partition_iterativec              	   C   s|  t }tdd|}t| j||}tg d}|||d }||d ||t |d d | ||||d  td}| j	| | td|||t
t|j  td}| j	| tg d}| j	| |||| }||| | j	| | |||| | tdd d d	 }||||d
gd  d
g ||||d
gd ddg  d
gd ddg  d S r  )r   r   r   r  r   r=  r  rP  r  r  r  r  rN  )r  r  r  r  r_  r  r  r   r   r   test_argpartition_iterativeL	  s2    

&

z+TestNPFunctions.test_argpartition_iterativec                    s   t tdd  fdd}dd }tddd	}tj|d
d< tj |d< tj|d< |d}||D ]}tddD ]}||| q|qnd S )NTr@  c              	      s   | |} | |} |d d d d |f |d d d d |f  t|jd d D ]d} t|| d | t|| d |   t|| |d  t|| |d   qXd S Nr  )r  r   ndindexr  rU  )r&   r   r  r  r  r  r   r   r"  t	  s    

0z7TestNPFunctions.test_partition_multi_dim.<locals>.checkc                 s   sX   | V  | j V  t| V  tj| tjdV  tj| tjdV  ddtj dfffV  d S NZ
fill_valuer#  r  rg  r*  r   r5  Z	full_liker   r  r4   r   r   r   a_variations	  s    z>TestNPFunctions.test_partition_multi_dim.<locals>.a_variationsrr   rI  0   ro  rx  ry  rz  ro  rg  ro  r~  rg  )r   r   r   r  r   r  rj  r  r  r"  r  r&   r-   rs   r   r  r   test_partition_multi_dimp	  s    	

z(TestNPFunctions.test_partition_multi_dimc                    s   t tdd  fdd}dd }tddd	}tj|d
d< tj |d< tj|d< |d}||D ]}tddD ]}||| q|qnd S )NTr@  c              
      s  | |} | |}t | } t | jd d }|D ]0}| | || |  | | || |   q6t |jd d D ]}t | | || d |  t | | || d |   t | | || |d   t | | || |d    q|d S r  )r   r   r  r  r  rU  )r&   r   r  r  r`  r  r  r   r   r"  	  s    


  z:TestNPFunctions.test_argpartition_multi_dim.<locals>.checkc                 s   sX   | V  | j V  t| V  tj| tjdV  tj| tjdV  ddtj dfffV  d S r  r  r4   r   r   r   r  	  s    zATestNPFunctions.test_argpartition_multi_dim.<locals>.a_variationsrr   rI  r  ro  rx  ry  rz  r  r~  rg  )r   r   r   r  r   r  rj  r  r  r   r  r   test_argpartition_multi_dim	  s    	

z+TestNPFunctions.test_argpartition_multi_dimc                 C   sN   t }tdd|}tdddtdfD ]}dD ]}| |||| q2q*d S NTr@  rr   rI  r  TFT)TFr  r   rr   )r   r   r   r  r=  rW  r  r  r  r_  r   r   r   r   test_partition_boolean_inputs	  s
    z-TestNPFunctions.test_partition_boolean_inputsc                 C   sN   t }tdd|}tdddtdfD ]}dD ]}| |||| q2q*d S r  )r   r   r   r  r=  rX  r  r   r   r    test_argpartition_boolean_inputs	  s
    z0TestNPFunctions.test_argpartition_boolean_inputsc              	   C   sD  t }tdd|}|   tddgddgddggj}tddfD ]J}|  }|||d W d    n1 st0    Y  | d	t	|j
 qFtjtjfD ]L}| t}|||d W d    n1 s0    Y  | d
t	|j
 qdD ]N}| t}|||d W d    n1 s"0    Y  | dt	|j
 qd S )NTr@  r   r*  rr   ro                @)r   z)ddof must be a real numerical scalar typez)Cannot convert non-finite ddof to integer)r  gffffffzddof must be integral value)r   r   rE  r   r=  r*  rP  r  rC  rA  rD  r   r  rB  r  )r  r  r  r   r   rG  r   r   r   test_cov_invalid_ddof	  s(    
**,z%TestNPFunctions.test_cov_invalid_ddofc                    sH   t dd|}t j||dd} fdd}| D ]}|||i q2d S )NTr@  +=r  c                   3   sT  t ddgddgddggjV   jdddV  t t ddgddgddggjV   jdddd d d d df V  t g dV  t jdd	d
V  t t jdt j	 ddgV  t 
dddddV  dV  dV  dV  dV  g dV  dV  ddgV  dV  dV  t g V  t g ddV  t g ddV  dV  d S )Nr   r*  rr   r  r(  rJ  )g&S:?o_?g#~j?甇ZӼ?Q|?r  Tr  r  r  r  r~  rg  !   )皙?皙?g)\(?gRQ?)g
ףp=
?gzG?)r  r  )y        
ףp=
?y        zG?g r  g333333@rf  rv  )r  r  r  r  )rr   rg  r*  r  ))r  皙@r   r   )r   r=  r*  r  randnrj  r5  fullr   r  r  r   r  r   r   input_variations	  s*     &(

z=TestNPFunctions.corr_corrcoef_basic.<locals>.input_variations)r   r   r  )r  r  first_arg_namer  r  r  Z	input_arrr   r  r   corr_corrcoef_basic	  s
    
z#TestNPFunctions.corr_corrcoef_basicc                 C   s   t }| j|dd d S )Nr   r  )r   r  r=  r   r   r   test_corrcoef_basic
  s    z#TestNPFunctions.test_corrcoef_basicc                 C   s   t }| j|dd d S )Nr   r  )r   r  r=  r   r   r   test_cov_basic
  s    zTestNPFunctions.test_cov_basicc                 C   s   t }tdd|}t| j||dd}| jddd}d |d d d f}d	}d	}d
}t||||}	|	D ]$\}
}}}||
|||d}|| qjd S )NTr@  r  r  i   rM  rx  r  FT)Nr  r   rr   r  T)r   r   r   r   r   )	r   r   r   r  r  r  rj  r  r   )r  r  r  r  r   	y_choicesrowvar_choicesZbias_choicesZddof_choiceZproductsr   r   r   r   r  r   r   r   test_cov_explicit_arguments
  s     z+TestNPFunctions.test_cov_explicit_argumentsc           
      C   s|   t }tdd|}t| j||dd}| jddd}d |d d d f}d	}t||D ]\}}|||d
}	||	 qZd S )NTr@  r  r  r  rM  rx  r  r  r   )	r   r   r   r  r  r  rj  r  r   )
r  r  r  r  r   r  r  r   r   r  r   r   r    test_corrcoef_explicit_arguments$
  s    z0TestNPFunctions.test_corrcoef_explicit_argumentsc           	      C   s  t dd|}t| j||dd}tg d}tg d}||d|i}|| tg d}tg d	g}||d|i}|| tg d}d	}||d|i}|| ||d|i}|| tg d}d
}||d|i}|| ||d|i}|| tg }tg }||d|i}|| d}d}||d|i}|| | jdd}tg dddd }||d|i}|| tg d}tg dg dg}||d|i}|| dD ]`}tg d}tg dg dg dg}||d|d|i}|| ||d|d|i}|| qd S )NTr@  r  r  r  )rg  r  Q?r   rf  r3  r  r  )r3  r  rg  r  r  rI  rg  rr   r  )ro  r  r  r   )r   r   r  r   r=  r  r  rj  )	r  r  r  r  r  r   r   r  r   r   r   r   cov_corrcoef_edge_cases2
  sZ    

z'TestNPFunctions.cov_corrcoef_edge_casesc                 C   s^   t }| j|dd tdd|}t| j||dd}tjtj ddfD ]}d|i}|| qDd S )	Nr   r  Tr@  r  r  r  r   )r   r  r   r   r  r   r   r  r  r  r  r  r   r  r   r   r   test_corrcoef_edge_caseso
  s    z(TestNPFunctions.test_corrcoef_edge_casesc                 C   s<   t }tdd|}t| j||dd}d}d|i}|| d S )NTr@  r  r  ))r  }Ô%IT)r  r  r   )r   r   r   r  r  r   r   r   &test_corrcoef_edge_case_extreme_values{
  s    z6TestNPFunctions.test_corrcoef_edge_case_extreme_valuesc                 C   sf   t }| j|dd tdd|}t| j||dd}tddgd	d	gddggj}|d
d}|| d S )Nr   r  Tr@  r  r  r   r*  rr   r(  )r   r   )r   r  r   r   r  r   r=  r*  )r  r  r  r  r   r  r   r   r   test_cov_edge_cases
  s    
z#TestNPFunctions.test_cov_edge_casesc                    sZ  t }tdd|    fdd}td}|| d}|| g dgg}||  fdd}td	}td}||| td
}d}||| td}td}t} ||d W d    n1 s0    Y  	dt
|j tg ddd}t} | W d    n1 s:0    Y  	dt
|j d S )NTr@  c                    sF     } |  W d    n1 s&0    Y  dt|j d S )Nzm has more than 2 dimensionsr  )r   rG  r	  r   r   _check_m
  s    
&z5TestNPFunctions.test_cov_exceptions.<locals>._check_mr(  rK  rx  )))rf  r  c                    sJ     } | |d W d    n1 s*0    Y  dt|j d S )Nr   zy has more than 2 dimensionsr  )r   r   rG  r	  r   r   _check_y
  s    
*z5TestNPFunctions.test_cov_exceptions.<locals>._check_yr6  )r  r  r  )))r   r  gffffff@rg  ro  r   z$m and y have incompatible dimensionsr  rr   z/2D array containing a single row is unsupported)r   r   rE  r   r  r=  rP  rB  r  rC  rA  rD  rj  RuntimeError)r  r  r  r   r  r   rG  r   r	  r   test_cov_exceptions
  s<    







*(z#TestNPFunctions.test_cov_exceptionsc           
      C   s   t }tdd|}t| j||}dd }dd }|tddd	D ]h}d
|i}|| ||D ]J}||d}|| ||d}|| ||D ]}	|||	d}|| qq^qBd S )NTr@  c                 s   s   d V  | V  |  tjV  d S r   )r  r   r  r4   r   r   r   to_variations
  s    z9TestNPFunctions.test_ediff1d_basic.<locals>.to_variationsc                 s   s(   | V  |  dddV  | tjV  d S )Nrg  r*  )rj  r  r   r  r4   r   r   r   ary_variations
  s    z:TestNPFunctions.test_ediff1d_basic.<locals>.ary_variationsr  rx  rn  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   test_ediff1d_basic
  s     

z"TestNPFunctions.test_ediff1d_basicc                 C   sj   t }tdd|}|   |  }|td W d    n1 sF0    Y  d}|t|jv sfJ d S )NTr@  )TTFz+Boolean dtype is unsupported (as per NumPy))r   r   rE  r  r   r=  rA  rD  )r  r  r  r9  r  r   r   r   test_ediff1d_exceptions
  s    
,z'TestNPFunctions.test_ediff1d_exceptionsc                 C   s   t }tdd|}dd }| D ] }||}||}| || q | t}|d W d    n1 sj0    Y  | dtj t|j	 d S )NTr@  c                   s   sF   t dddV  t ddddV  dV  ddgddgfV  d S )	NrI  r(  r*  rJ  r?  rr   rg  ro  r  r   r   r   r   r  
  s    z7TestNPFunctions.test_fliplr_basic.<locals>.a_variationsabczCannot np.fliplr on %s type)
re   r   r  rB  r   rC  r	   unicode_typerA  rD  r  r  r  r  r&   r  r  rG  r   r   r   test_fliplr_basic
  s    
&z!TestNPFunctions.test_fliplr_basicc                 C   sz   t }tdd|}|   | t}|td W d    n1 sH0    Y  | dt|j	 | dt|j	 d S )NTr@  rg  cannot index arrayzwith 2 indices)
re   r   rE  rB  r   r   rP  rC  rA  rD  rF  r   r   r   test_fliplr_exception  s    ,z%TestNPFunctions.test_fliplr_exceptionc                 C   s   t }tdd|}dd }| D ] }||}||}| || q | t}|d W d    n1 sj0    Y  | dtj t|j	 d S )NTr@  c                   s   sZ   dgV  t dV  t dddV  t ddddV  dV  ddgddgfV  d S )	Nrr   rI  r(  r*  rJ  r  rg  ro  r  r   r   r   r   r    s    z7TestNPFunctions.test_flipud_basic.<locals>.a_variationsr  zCannot np.flipud on %s type)
rg   r   r  rB  r   rC  r	   r  rA  rD  r  r   r   r   test_flipud_basic  s    
&z!TestNPFunctions.test_flipud_basicc                 C   st   t }tdd|}|   | t}|d W d    n1 sB0    Y  | dt|j | dt|j d S )NTr@  rr   r  zwith 1 indices)rg   r   rE  rB  r   rC  rA  rD  rF  r   r   r   test_flipud_exception)  s    &z%TestNPFunctions.test_flipud_exceptionc                 C   s   t }tdd|}dd }| D ] }||}||}| || q | t}|d W d    n1 sj0    Y  | dt|j d S )NTr@  c                   s   sF   t dV  t dV  t dddV  t ddddV  d S )Nrr   rI  r(  r*  rJ  ri  r   r   r   r   r  :  s    z5TestNPFunctions.test_flip_basic.<locals>.a_variationsrf  zCannot np.flip on UniTuple)rh   r   r  rB  r   rC  rA  rD  r  r   r   r   test_flip_basic6  s    
&zTestNPFunctions.test_flip_basicc                 C   sH   dd }t }tdd|}| D ]"\}}tj|||||| q d S )Nc                   s   s   dV  dV  dV  dV  dV  dV  dV  dV  d	t jfV  d	t jfV  t d
t dfV  t dt dfV  t dt dfV  t dt dfV  t dt dfV  t dt dfV  d S N)rr   rs  )r  rs  )r  )r  r  )rs  r  )r#        N@)      Nr$  )r$  r  r   rr   r*  r  r        ?       @      @      @      ?             @                   @r   r9  pir  r   r   r   r   r  L  s     z4TestNPFunctions.test_logspace2_basic.<locals>.inputsTr@  )rl   r   r   r"  assert_allcloser  r  r  r  rj   rk   r   r   r   test_logspace2_basicJ  s
    z$TestNPFunctions.test_logspace2_basicc                 C   s   t ddt}|   | t}|dd W d    n1 s@0    Y  | dt|j | t}|dd W d    n1 s0    Y  | dt|j d S )NTr@  r  r(  +The first argument "start" must be a number+The second argument "stop" must be a number)r   rl   rE  rB  r   rC  rA  rD  r  r  rG  r   r   r   test_logspace2_exceptione  s    ((z(TestNPFunctions.test_logspace2_exceptionc                 C   sH   dd }t }tdd|}| D ]"\}}tj|||||| q d S )Nc                   s   s   dV  dV  dV  dV  dV  dV  dV  dV  d	t jfV  d	t jfV  t d
t dfV  t dt dfV  t dt dfV  t dt dfV  t dt dfV  t dt dfV  d S r   r	  r   r   r   r   r  v  s     z4TestNPFunctions.test_logspace3_basic.<locals>.inputsTr@  ro   r   r   r"  r  r  r   r   r   test_logspace3_basict  s
    z$TestNPFunctions.test_logspace3_basicc                 C   sN   dd }t }tdd|}| D ](\}}}tj|||||||| q d S )Nc                   s   s   dV  dV  dV  dV  dV  dV  dV  dV  d	t jd
fV  d	t jdfV  t dt ddfV  t dt ddfV  t dt ddfV  t dt ddfV  t dt ddfV  t dt ddfV  d S )N)rr   rs  rJ  )r  rs  rd  )r  r  r  )r  r  rm   )rs  r  rs  )r#  r  F   )r  r$  P   )r$  r  Z   r   rJ  rd  rr   r*  r  r  r  rm   rs  r  r  r  r  r  r  r  r  r	  r   r   r   r   r    s     z=TestNPFunctions.test_logspace3_with_num_basic.<locals>.inputsTr@  r  )r  r  r  r  rj   rk   rn   r   r   r   test_logspace3_with_num_basic  s    
z-TestNPFunctions.test_logspace3_with_num_basicc                 C   s   t ddt}|   | t}|dd W d    n1 s@0    Y  | dt|j | t}|dd W d    n1 s0    Y  | dt|j | t}|ddd W d    n1 s0    Y  | dt|j d S )	NTr@  r  r(  r  r  r   z+The third argument "num" must be an integer)r   ro   rE  rB  r   rC  rA  rD  r  r   r   r   test_logspace3_exception  s"    ((*z(TestNPFunctions.test_logspace3_exceptionc                 C   sF   t }tdd|}dd }| D ] }||}||}| || q d S )NTr@  c                   s   sJ   t dddV  t ddddV  t dddddddV  d S NrI  r(  r*  rJ  r1  r  r   r   r   r   r    s    z6TestNPFunctions.test_rot90_basic.<locals>.a_variations)rq   r   r  )r  r  r  r  r&   r  r  r   r   r   test_rot90_basic  s    
z TestNPFunctions.test_rot90_basicc                 C   sZ   t }tdd|}dd }| D ]4}tddD ]$}|||}|||}| || q.q d S )NTr@  c                   s   sJ   t dddV  t ddddV  t dddddddV  d S r  r  r   r   r   r   r    s    z=TestNPFunctions.test_rot90_with_k_basic.<locals>.a_variationsr)  rK  )rt   r   r  r  )r  r  r  r  r&   rs   r  r  r   r   r   test_rot90_with_k_basic  s    


z'TestNPFunctions.test_rot90_with_k_basicc                 C   s  t }tdd|}|   | t}|d W d    n1 sB0    Y  | dt|j | t*}|t	d
dddd W d    n1 s0    Y  | dt|j | t}|t	d	 W d    n1 s0    Y  | d
t|j d S )NTr@  r  )The first argument "arr" must be an arrayro  r*  r  z*The second argument "k" must be an integerrg  zInput must be >= 2-d.)rt   r   rE  rB  r   rC  rA  rD  r   rP  rj  rF  r   r   r   test_rot90_exception  s     &8,z$TestNPFunctions.test_rot90_exceptionc                 C   sL   |}t dd|}dd }| D ]&}|| }|| }tj|t| q d S )NTr@  c                  s   sH  t d} | dfV  | ddfV  | g dfV  t| g dfV  t| g dfV  | g ddfV  t| g ddfV  t| g ddfV  t dddd} | dfV  | ddfV  | ddfV  | g dfV  | g ddfV  | g ddfV  | dd	gfV  | dd	gdfV  | dd	gdfV  | dgd
fV  | dgdfV  | dgdfV  | t jg t jddfV  t ddd
} | dfV  | ddfV  | dgdfV  | ddfV  | t ddddfV  | dfV  | t ddffV  t g } | dfV  | dfV  | ddfV  | ddfV  t g g} | dfV  | ddfV  | ddfV  | ddfV  d S )Nr  r*  r   )rr   ro  H   r1  ro  rr   )r*  rr   r(  rg  r  r  r~  r   rm   rI  rr   r  )r   rP  r  r[  rj  r=  r  r  r4   r   r   r   args_variations  sR    








z5TestNPFunctions._check_split.<locals>.args_variationsr   r   r"  Zassert_equalr  r  funcr  r  r   rL   r  r  r   r   r   _check_split  s    /
zTestNPFunctions._check_splitc                 C   sL   |}t dd|}dd }| D ]&}|| }|| }tj|t| q d S )NTr@  c                   s   sT   t ddfV  tt ddfV  tt ddfV  t ddddfV  d S )Nry  rg  r  rn  r*  r(  )r   rP  r  r[  rj  r   r   r   r   r   3  s    z;TestNPFunctions._check_array_split.<locals>.args_variationsr!  r"  r   r   r   _check_array_split.  s    
z"TestNPFunctions._check_array_splitc                 C   s   |  t | t d S r   )r$  ru   r%  r  r   r   r   test_array_split_basic?  s    
z&TestNPFunctions.test_array_split_basicc                 C   s   |  t |   | t$}tttdd W d    n1 sF0    Y  | dt	|j
 | t*}tttddgdd W d    n1 s0    Y  | dt	|j
 d S )Nr(  r*  z0array split does not result in an equal divisionrg  r~  r*   z%np.split: Argument axis out of bounds)r$  rx   rE  rB  r  r   r   r  rC  rA  rD  )r  rG  r   r   r   test_split_basicC  s    
28z TestNPFunctions.test_split_basicc           	      C   s^   t }tdd|}dd }dd }| D ]0}| D ]$}|||}|||}| || q2q(d S )NTr@  c                   s   s|   t dV  t ddddV  g dV  dV  dV  dV  d	V  t t d
t jgt jdggV  t g V  dV  d S )Nrx  rs  rg  ro  r(  )r  r  rq  r  F)rz  r  g333333@r   )r   rP  rj  r5  r=  r   r  r   r   r   r   r  W  s    
"z5TestNPFunctions.test_roll_basic.<locals>.a_variationsc                   S   s   t jdtddfS )Nrh  r  rI  r  r   r   r   r   shift_variationsc  s    z9TestNPFunctions.test_roll_basic.<locals>.shift_variations)r   r   r  )	r  r  r  r  r(  r&   r   r  r  r   r   r   test_roll_basicS  s    



zTestNPFunctions.test_roll_basicc              	   C   sv   t }tdd|}|   dD ]R}|   }|td| W d    n1 sP0    Y  d}|t|jv sJ qd S )NTr@  )r  r?  rI  zshift must be an integer)r   r   rE  r  r   rP  rA  rD  )r  r  r  r   r9  r  r   r   r   test_roll_exceptionsm  s    
.z$TestNPFunctions.test_roll_exceptionsc              	   C   s  t }tdd|}t| j||}td}| j| tddD ]}||k}|||d q@td	dd	d
}|dk}|||d d}t
d
 }|||d g d}g d}|||d tddd}ddtjddddddf	}t|dD ].}|||d |t|	dd|d qtg d}tg }|||d tg d}tg d}|||d tg dg dg}g d}|||d tg dg dg}tg d	ddd}|||d ttd	d
dd	}tdd}|||d |||d d d d td}dD ]}|||d q8d}d}|||d td}tddg}|||d td}tg d 	dd
d! }|||d d S )"NTr@  rI  r~  rL  r   rs  ro  r(  rg  gffffff&@)rf  rg  ro  r(  rv  )r  r  rq  r  )rr   rr   r   rr   r  rK  Fr  r$  g333333rr   r#  y              ?r*  rf  )rr   r   rr   r   rv  )rr   r   rr   r   rr   r   )rr   r   rr   r   rr   r   r   r   r  rd  )rr   r   rr   r   r   r   r3  )r   r   r   r  r   rP  r  r  r  rj  Zeyeflattenr  r   r  combinations_with_replacementr=  r5  r   )r  r  r  r  r&   	thresholdr  Zelement_poolr   r   r   test_extract_basic{  sd    




z"TestNPFunctions.test_extract_basicc                    s4  t }tdd|   tg }tg d}t} || W d    n1 s\0    Y  dt|j	  fdd}tg dg dg}g d}||| tg d}tg d}||| td	}d
}||| t
d}tg d}||| t
d}tg d}||| d S )NTr@  rf  z"Cannot extract from an empty arrayc                    sN   d} t} | | W d    n1 s.0    Y  |t|j d S )Nz+condition shape inconsistent with arr shaper}  )r  r&   r  r9  r	  r   r   r    s    (z7TestNPFunctions.test_extract_exceptions.<locals>._check)rr   r   rr   r   rr   r   rr   )rr   r   rr   r   rr   rs  r  ro  )TFFFT)TFTFFTF)r   r   rE  r   r=  rB  r  rC  rA  rD  rP  )r  r  r&   r  r9  r  r   r	  r   test_extract_exceptions  s0    
(






z'TestNPFunctions.test_extract_exceptionsc                 C   s<  t }tdd|}t| j||}g d}|d|i d}|d|i tddd}|d|i td	d
dddd}|d|idd | j	| |d|idd t
g }|d|i t
dtjtjtj dg}|d|i tdtdd
dd  }|d|i tj
g tjd}|d|i d}|d|i d S )NTr@  rf  r   )rg  rr   r*  r*  r*  rM  rg  r(  r  rI  rs  ro  vIh%<=r  r  rJ  r   r3  r   r  )r   r   r   r  r   rP  rj  r  r  r  r=  r   r  r>  r  r  r  r  r   r   r   r   test_np_trapz_basic  s.    
z#TestNPFunctions.test_np_trapz_basicc                 C   s,  t }tdd|}t| j||}g d}g d}|||d g d}d}|||d d}g d}|||d tg d}d	d	g}|||d tg }td
dg}|||d d}d }|||d tddd	}td	dg}|||d tddd	}tg d}|||d tddd	d}td	dg}|||d tddd	d}tg d}|||d tddd	d}| j	| |d }| j	| |||d td}|t
dddd  }|||d tg d}tddg}|||d d S )NTr@  rf  ro  rK  ry  r   r}  )ro  rK  ro  r(  rK  rx  ry  ro  r*  rg  rJ  r(  r  rs  )ro  r(  rx  r  r   rI  r3  r  r  )r   r   r   r  r   r=  rP  rj  r  r  r  )r  r  r  r  r   r   r   r   r   test_np_trapz_x_basic  sX    

z%TestNPFunctions.test_np_trapz_x_basiczNumPy behaviour questionablec                 C   s^   t }tdd|}t| j||}tg dt}|d|i tg d}|d|i d S )NTr@  )TFTTr   )r   r   r   r  r   r=  r  r  r2  r   r   r   test_trapz_numpy_questionableC  s    z-TestNPFunctions.test_trapz_numpy_questionablec                 C   s  t }tdd|}t| j||}g d}d}|||d g d}g d}|||d g d}g d}|||d tdd	d
}tj}|||d tdd	d
}tj}|||d tdd	d
}tdd	d}|||ddd td	dd	dd }td	dd	d}|||d tdd
d}|t
d|d  tdtj  dd}tj|dd td}d}|||d td}td	g}|||d d S )NTr@  rf  r*  r   r}  )rr   ro  r(  rK  r  r(  rI  rz  r1  r  rs  ro  rg  r3  r  r  r  r'  r   rr   rx  rJ  )r   r   r   r  r   r  r   r  rP  rj  expr  r
  r"  assert_almost_equalr=  )r  r  r  r  r   r   r   r\  r   r   r   test_np_trapz_dx_basicR  sB    *

z&TestNPFunctions.test_np_trapz_dx_basicc                 C   s   t }tdd|}t| j||}d dtg dfD ]}g d}g d}||||d g d}dd	g}||||d g d}g d
}||||d tdddd}| j	| |d }tj
|d< ||||d q4d S )NTr@  r*  r}  rf  r4  r   ro  rK  r5  rs  r(  rg  r  r  )r   r   r   r  r   r=  rP  rj  r  r  r   )r  r  r  r  r   r   r   r   r   r   test_np_trapz_x_dx_basic  s$    
z(TestNPFunctions.test_np_trapz_x_dx_basicc              	      s  t }tdd|    fdd}g d}g dg dfD ]}|||df q@td	d
dd}tdd
dd
}|||df td	d
dd}tg d}|||df g d}tddg}||d |f td	d
dd}td	d
dd}||d |f  (}td}||d df W d    n1 sL0    Y  dt	|j
 ddtjfD ]N} } |d d W d    n1 s0    Y  dt	|j
 qtd S )NTr@  c                    sH    t} |   W d    n1 s(0    Y  dt|j d S )Nzunable to broadcastr}  )r  r9  r	  r   r   check_not_ok  s    &zCTestNPFunctions.test_np_trapz_x_dx_exceptions.<locals>.check_not_okr}  )ro  r(  rK  rx  ry  rz  rv  r#  rs  rg  ro  r(  $   r  r  zy cannot be 0DFzy cannot be a scalar)r   r   rE  r   rP  rj  r=  r  rC  rA  rD  r   )r  r  r<  r   r   r   r9  r   r	  r   test_np_trapz_x_dx_exceptions  s6    

.
,z-TestNPFunctions.test_np_trapz_x_dx_exceptionsc                    s  d}t j|d }t j|d }t |}t j|dk}t j|dk}t jjd|d}t jjd|d}d}	d}
d}t j|	|
|d }t j|	|
|d }t}tdd| j|||d	 ||d	d
d j|||d	 ||d	d
d j|||d	 ||d	d
d j|||d	 ||d	d
d j|||d	 ||d	d
d j|||d	 ||d	d
d j|| |d
d j|| |d
d  fdd}|||d	  fdd} fdd}t 	d
d}t ddg}|||d	 ||d|d d S )Nr  r&  e   r  rm   rO  Tr@  r:   rI  )Zplacesc                    sP    t} | |d W d    n1 s,0    Y  |j}t|d d S )Nr:   z)Weights sum to zero, can't be normalized.)rB  ZeroDivisionErrorrD  r  rA  datar;   r9  errr	  r   r   test_weights_zero_sum  s    *
z;TestNPFunctions.test_average.<locals>.test_weights_zero_sumc                    sP    t} | |d W d    n1 s,0    Y  |j}t|d d S )Nr:   zCNumba does not support average when shapes of a and weights differ.rB  	TypeErrorrD  r  rA  rA  r	  r   r   test_1D_weights  s    *
z5TestNPFunctions.test_average.<locals>.test_1D_weightsc                    sR    t} | ||d W d    n1 s.0    Y  |j}t|d d S )Nr   z)Numba does not support average with axis.rE  )rB  r+   r;   r9  rC  r	  r   r   test_1D_weights_axis
  s    ,
z:TestNPFunctions.test_average.<locals>.test_1D_weights_axisrK  r  g      ?g      ?rr   r   )r   r  ranfrt  rT  rR  r   r   ZassertAlmostEqualrP  rj  r   )r  r}   r&   r<   Zw0Za_boolZw_boolZa_intZw_intZd0r  Zd2Za_3dZw_3dr  rD  rG  rH  rB  r   r	  r   test_average  sV    
zTestNPFunctions.test_averagec              
   C   s  t }tdd|}ttjj}tj|gtjd}tddgtddgftddgtddgftddgtd	dgftdgtd	dgfd
ttjdgtdtjgf||fg}|D ](\}}|||}|||}| 	|| qtdtj
g}tdtj
g}| ||| | |||dd|||dd ttj
dg}| |||||| g d}	td}
tjd}|	D ]}|	D ]}|	D ]}||
|||d}||
|||d}| 	|| |||
||d}|||
||d}| 	|| |t|g|
||d}|t|g|
||d}| 	|| |||| ||d}|||| ||d}| 	|| ||| |||d}||| |||d}| 	|| qqqd S )NTr@  r   r  r  r  rZ   r  r  )r#  r#  rr   r   r#  r_   )r#  r  g{Gz?gMbP?-C6?rY   gư>r   )rO  ro  )r^   r]   )r   r   r   ra   int_minr=  r   r  r  r   ZassertFalser^  rt  r  rI  )r  r  r  min_intr&   Zsimple_datar'   Z	py_resultZc_resultZnoise_levelsZ
zero_arrayZnoiser]   r^   r   r   r   test_allclose  sr    






zTestNPFunctions.test_allclosec           
      C   s  t }tdd|}tddg}tdjtjdd}d}d	}td
dgtd
dgft|gtdgftdgtd
| | gf||||  f||||  |d  f||||  ftj	tj	ftj	ttj	gfg}|D ] \}}	| 
|||	|||	 qd S )NTr@  g      Y@g     @@}   r   r(  r(  r(  rZ   rY   rr   r   r   r#  r*  )r   r   r   r=  rP  r  r;  rj  r   r  r^  )
r  r  r  r-   r  r^   r]   
numpy_datar   r   r   r   r   test_ip_allclose_numpy[  s"    
z&TestNPFunctions.test_ip_allclose_numpyc           	      C   s  t }tdd|}tdjtjdd}d}d}ttjdgtd	tjgfttjdgtd	dgfttjtjgtd	tjgfttjtjgtd	d
gfttj d
gttjd
gfttj	d
gttj	d
gft|d gtd
gftd	gtd| |d  gf||||  |d  ft
tjd	gt
d
tjgfg
}|D ]"\}}| |||||| qbd S )NTr@  rQ  r   rR  rZ   rY   r   r#  r   r*  rr   )r   r   r   rP  r  r;  rj  r   r  r   r=  r^  )	r  r  r  r  r^   r]   rS  r   r   r   r   r   test_ip_not_allclose_numpyt  s$      "z*TestNPFunctions.test_ip_not_allclose_numpyc                 C   sJ   t }tdd|}G dd dtj}|dg}| t|||tu  d S )NTr@  c                   @   s   e Zd Zdd ZdS )z?TestNPFunctions.test_return_class_is_ndarray_numpy.<locals>.Fooc                 _   s   t j|i || S r   )r   r=  rS  )clsrL   r  r   r   r   __new__  s    zGTestNPFunctions.test_return_class_is_ndarray_numpy.<locals>.Foo.__new__N)__name__
__module____qualname__rW  r   r   r   r   Foo  s   r[  rr   )r   r   r   ndarrayr  r8  rE  )r  r  r  r[  r&   r   r   r   "test_return_class_is_ndarray_numpy  s
    
z2TestNPFunctions.test_return_class_is_ndarray_numpyc                 C   sF   t }tdd|}tdtjg}| |||dd|||dd d S )NTr@  r#  rK  )r   r   r   r=  r   r^  )r  r  r  r   r   r   r   test_equalnan_numpy  s    z#TestNPFunctions.test_equalnan_numpyc                 C   st   t }tdd|}ttjdg}tdtjg}||| tj|ttjdg tj|tdtjg d S )NTr@  rr   r   )r   r   r   r=  r  r"  r#  )r  r  r  r   r   r   r   r   $test_no_parameter_modification_numpy  s    
z4TestNPFunctions.test_no_parameter_modification_numpyc                 C   sN   t }tdd|}ttjj}tj|gtjd}| |||||| d S )NTr@  r   )r   r   r   ra   rM  rN  r=  r^  )r  r  r  rO  r&   r   r   r   test_min_int_numpy  s
    z"TestNPFunctions.test_min_int_numpyc                 C   s   |    t}tdd|}tddtjg}tddg}| t}||| W d    n1 sd0    Y  | dt	|j
 d S )NTr@  r  r  r  z=shape mismatch: objects cannot be broadcast to a single shape)rE  r   r   r   r   r   rB  r  rC  rA  rD  )r  r  r  r&   r'   r9  r   r   r   test_allclose_exception  s    (z'TestNPFunctions.test_allclose_exceptionc                 C   s  t }tdd|}t| j||dd}tddd}tdd	}|d
 }||||dd | j| ||||dd | j| ||||dd tj	|d d< tj
|dd < | j| ||||dd tj	|d d< tj
 |dd < | j| ||||dd tdd	}|d }|d }||||dd d}d}d}||||dd d}tddd}tdd}||||dd tdtj	tj
tj
 ddg}|jdddd}tddd}tdd}||||dd tddD ]$}g d}d}||||dd qtg }g d}d}||||dd tdddddd}td }|d }||||dd tj	}td}tdtj	}||||dd tj	}dg}dg}||||dd tdd	}|}|}||||dd dd!g}tdd	}|}||||dd tj
 d"dd#tj
g}tdd	}|d$ }||||dd td%dd}ttj
 d"dd#tj
g}|d$ }||||dd | jd&}td'dd&}tjd&d(d)}||||dd d*D ]:}tg d| }ddg}ddg}||||dd qd}dg}dg}||||dd tddd}tddd}tddd+}	||	||}
tj|
|	 tg d,}tg d,}tg d-}||||dd dg}tj
g}|d||dd tg d.}tg d,}tddtj	dg}||||d tg d/}tg d0}ttj	dtj	dtj	g}||||d tg d.}tg d,}tddtj
dg}||||d tdd
tj	d1tj
 dd2dtj
dd3g}tg d4}tddtj	ddtj
g}||||d tg d5}tddd6}t|d7 }||||d | jddtj d8}tddtj d9}t|}t|}||||}tjj||d:d; | jd}td%dd9}t|}||||d | jd9}td%dd}t|}||||d d S )<NTr@  r  r  r)  r(  rO  r  ry  r   r   )r  rr   r*  r  rq  g      r*  rg  ro  r  )rb  )r   ?      @ro  rI  gffffff?r   g333333"rg  r2  r3  r  r  r+  r   rs  rJ  Fr$  r#  r  r  r  r~  r  r  )rr   r  rm   r  )rr   r*  gGz@ro  )rr   r*        @rg  ro  )	rr   r   r*  rf  rg  ro  r  r(  g      @r}  rf  r  rx  )rr   r*  rg  ro  r(  rK  )g~@g<ԛ@g3@i!N  r  )r  r  rY   )r^   )r   r   r   r  r   r  rP  r  r  r   r  r=  rj  r  r  r  r"  r9  sinuniformr
  cosr  Z	ones_like)r  r  r  r  r   r   r   Zfactorr   x0rW   exactr  r   r   r   test_interp_basic  s   


(



z!TestNPFunctions.test_interp_basicc                 C   s|   |j d }t|| jjt|j |ddtj t|| jjt|j |ddtj  t|| jjt|j |ddtj d S )Nr  F)replace)rN  r   putr  choicer  r   r  )r  r&   r  r   r   r   _make_some_values_non_finiteq  s    
$&z,TestNPFunctions._make_some_values_non_finitec              	   c   sf  t ddd|d  V  t ddd| V  t ddd|d  V  t ddd|d  V  t d	d
d|d  V  t ddd| d V  t ddd|d  d V  t ddd| d V  t ddd|d  d V  t ddd|d  dt t d|d  t j d|d     V  t ddd| | jjd| d| d V  t ddd| | jjd| d| d V  t ddd| | jjd| d| d V  t ddd| | jjd| d| d V  t ddd| | jjd| d| d V  t ddd| | jjd| d| d V  | jd| d d V  | jd|d  d d V  d S )Nr        @rr   r(  r  g333333@r*  g      @r  r  g@g333333@gq=
ףp?g @gQ?r  r&  )rN  Zscale      @g      4@g      I@g      i@ro  g333333?re  rd  )r   r  rg  rP  r
  r  normalrR  )r  ndatar   r   r   rk  w  s@    "






zTestNPFunctions.arraysc           
      C   s  t }tdd|}d}tddd| }t|d }| |D ]b}d}||||}||||}	| j||	|d	 | j| ||||}||||}	| j||	|d	 | j| ||||}||||}	| j||	|d	 | j| ||||}||||}	| j||	|d	 | 	| ||||}||||}	| j||	|d	 | 	| ||||}||||}	| j||	|d	 | 	| ||||}||||}	| j||	|d	 q@d S )
NTr@  i N  r   rI  rr   r  r  r  )
r   r   r   r  rg  rk  r  r  r  rp  )
r  r  r  rt  r   r   r   r^   r  r  r   r   r   test_interp_stress_tests  sD    


z(TestNPFunctions.test_interp_stress_testsc                 C   s$  t }tdd|}d}tddd| }t|d }| jtjtj tjgd|d d< | j	| t
|d }| jtjtj tjgd|d d< | j	| |d	|  }| |D ]d}||||}	||||}
tjj|	|
dd
 | j	| | j	| | j	| tjj|	|
dd
 qd S )NTr@  i  r   rI  rr   r     r3  rK  )r   r   r   r  rg  r  ro  r  r   r  ri  rk  r"  r  )r  r  r  rt  r   realimagr   r   r  r  r   r   r    test_interp_complex_stress_tests  s&    $$z0TestNPFunctions.test_interp_complex_stress_testsc           	      C   s  t }tdd|}|   tg d}tg }tg }| t}|||| W d    n1 sh0    Y  d}| |t|j	 d}tg d}tddg}| t}|||| W d    n1 s0    Y  d}| |t|j	 d}t
dd	d}t
d}|  }|||| W d    n1 s@0    Y  d
}| |t|j	 d}t
d}t
dd	d}|  }|||| W d    n1 s0    Y  d}| |t|j	 d}t
d}t
d}|  }|||| W d    n1 s0    Y  d}| |t|j	 d}t
dd tj}t
d}|  }|||| W d    n1 s0    Y  | |t|j	 d S )NTr@  rf  zarray of sample points is emptyrr   r*  z#fp and xp are not of the same size.rK  rg  zxp must be 1Dzfp must be 1Dr  z:Cannot cast array data from complex dtype to float64 dtyper3  )r   r   rE  r   r=  rB  r  rC  rA  rD  rP  rj  r  r  r  )	r  r  r  r   r   r   r9  r  Zcomplex_dtype_msgr   r   r   test_interp_exceptions  sZ    

**

,

,


,

,z&TestNPFunctions.test_interp_exceptionsc                 C   s   t }tdd|}t| j||}tg d}ttj ddtjg}tddg}|||d}|| ttj d	d
tjg}tg d}tddg}|||d}|| d S )NTr@  )r   rr   rz  rI  r  ?r  r  r   rr   rz  )r   r  r{  rr   )r   r   r   r  r   r=  r  )r  r  r  r  r   r   r   r  r   r   r   "test_interp_non_finite_calibration5  s    z2TestNPFunctions.test_interp_non_finite_calibrationc                 C   s  t }tdd|}tddD ]}tj|tjd}tj|tjd}tjdd|d |gtjd}|d d d }||||}||||}	tjg dtd}
|
d d d }tj	
||
 tj	
|	| qtddd	}tddd	}d}tj	
||||| d
}tj	
||||| td
}tj	
||||| td
}tj	
||||| tj}tj	
||||| tddd	}tddd	}td
}tj	
||||| tddd}t|}tj	
|tj||d d S )NTr@  rr   rI  r   r  r   rr   rr   rr   rr   r(  r  rL  r   )r   r   r  r   rP  r
  r  r=  r  r"  r9  r  r  r;  r   rg  r
  )r  r  r  rN  r   ZypZincptsZdecptsZincresZdecresZinctgtZdectgtr   r   rj  r   r   r   r   test_interp_supplemental_testsH  s@    



z.TestNPFunctions.test_interp_supplemental_testsc                 C   sr   t }tdd|}tddd}tddddtddd d  }d}|d| d  }tj||||| d S )NTr@  r   rr   r(  r3  r  )r   r   r   r  r"  r9  )r  r  r  r   r   rj  Zy0r   r   r   &test_interp_supplemental_complex_testsq  s    $z6TestNPFunctions.test_interp_supplemental_complex_testsc                 C   s   t }tdd|}tjtjtjtjg}t|dD ]`}|\}}}tj	d|d}|d 
|}	tjddd|d}
||
||	}||
||	}| || q2d S )NTr@  rg  rI  r   r*  )r   r   r   r  r;  r  r  r  r-  rP  r  r  r  )r  r  r  ZdtypesZcomboZxp_dtypeZfp_dtypeZx_dtyper   r   r   r  r  r   r   r   -test_interp_float_precision_handled_per_numpy}  s    
z=TestNPFunctions.test_interp_float_precision_handled_per_numpyc                 C   sf   dd }t }tdd|}| D ]@}||}||}t|tjrR| |||f q | ||| q d S )Nc                  s   s   t dV  t dV  t ddV  t ddV  t dV  t ddV  t ddV  dD ]4} t jg dd	|  d
V  t jg dd|  d
V  q`d S )Nz
2016-01-01NaTmsnsz2038-01-19T03:14:07"   )r  r   WDhr   r  r  usr  Zpsfsas){   ir  z<datetime64[%s]r   z<timedelta64[%s])r   r  r  r=  )unitr   r   r   r.     s    

z*TestNPFunctions.test_isnat.<locals>.valuesTr@  )r`   r   r  r   r\  r  r  r  r   r   r   
test_isnat  s    
zTestNPFunctions.test_isnatc           	         s   dd } fdd}t tfD ]}tdd|}t j||}| D ]}d|i}d|jv rzd tjfD ]}||d	< || qbn|| tjd
tj	d}d|i}d|jv rd |d	< ||d| tj|d	< ||d| tj	|d	< ||d| qB||d| qBqd S )Nc                  s   s   dV  dV  dV  dV  g dV  ddgV  dV  dV  g dg dfV  t g V  t dV  t dd	dV  t dd	djV  d
d } | dV  | dV  | dV  | dV  dS )a}  
            To quote from: https://docs.scipy.org/doc/numpy/reference/generated/numpy.asarray.html    # noqa: E501
            Input data, in any form that can be converted to an array.
            This includes:
            * lists
            * lists of tuples
            * tuples
            * tuples of tuples
            * tuples of lists
            * ndarrays
            r3  r   Frr   rf  re  ro  rn  rg  c                 S   s   t  }| D ]}|| q
|S r   r
   r,   )r.   r&   r^  r   r   r   	make_list  s    zITestNPFunctions.test_asarray.<locals>.input_variations.<locals>.make_list)r#  r  r  r  r  N)r   r=  rP  rj  r*  )r  r   r   r   r    s$    




z6TestNPFunctions.test_asarray.<locals>.input_variationsc                    sb   | f i |}|r&  ||d u  n8  ||d u tj||d    |j|d k d S )Nr&   r   )r  r   r"  r  r   )ZjittedZexpect_samer  Zreturnedr  r   r   check_pass_through  s    z8TestNPFunctions.test_asarray.<locals>.check_pass_throughTr@  r&   kwsr   rI  r   F)
r   r   r   r   r  rX  r   r>  rP  r  )	r  r  r  r  r  r  r   r  r  r   r  r   test_asarray  s,    (





zTestNPFunctions.test_asarrayc           
      C   s`   dd }dd }dd }dd }||||g}|D ]*}t d	d
|}| }| }	| ||	 q0d S )Nc                   S   s
   t dS Nr  r   r   r   r   r   case1  s    z3TestNPFunctions.test_asarray_literal.<locals>.case1c                  S   s   d} t | S r  r   r  r   r   r   case2  s    z3TestNPFunctions.test_asarray_literal.<locals>.case2c                  S   s   d} t | S )Nu+   大处 着眼，小处着手。大大大处r   r  r   r   r   case3  s    z3TestNPFunctions.test_asarray_literal.<locals>.case3c                  S   s   d} t | S )N r   r  r   r   r   case4  s    z3TestNPFunctions.test_asarray_literal.<locals>.case4Tr@  )r   r  )
r  r  r  r  r  funcsr  r  r  r  r   r   r   test_asarray_literal  s    z$TestNPFunctions.test_asarray_literalc                    sp      tddt  fdd}dd }dd }d	d
 }dd }||  ||  ||  ||  d S )NTr@  c                    sH    t} |  W d    n1 s(0    Y  dt|j d S )Nz?asarray support for List is limited to Boolean and Number types)rB  r   rC  rA  rD  )alistr9  r	  r   r   test_reject  s    &zQTestNPFunctions.test_asarray_rejects_List_with_illegal_dtype.<locals>.test_rejectc                  S   s   t  } | d  | S r   r  )lr   r   r   make_none_typed_list  s    
zZTestNPFunctions.test_asarray_rejects_List_with_illegal_dtype.<locals>.make_none_typed_listc                  S   s$   t  } t  }|d | | | S )Nrr   r  )r  r   r   r   r   make_nested_list#  s
    

zVTestNPFunctions.test_asarray_rejects_List_with_illegal_dtype.<locals>.make_nested_listc                  S   s"   t  } t }d|d< | | | S )Nr&   rr   )r
   r   r,   )r  r_  r   r   r   make_nested_list_with_dict*  s
    
z`TestNPFunctions.test_asarray_rejects_List_with_illegal_dtype.<locals>.make_nested_list_with_dictc                  S   s   t  } dD ]}| | q
| S )N)r&   Zbcdefr  )r  r^  r   r   r   make_unicode_list1  s    zWTestNPFunctions.test_asarray_rejects_List_with_illegal_dtype.<locals>.make_unicode_list)rE  r   r   )r  r  r  r  r  r  r   r	  r   ,test_asarray_rejects_List_with_illegal_dtype  s    


z<TestNPFunctions.test_asarray_rejects_List_with_illegal_dtypec                 C   s   dd }t }tdd|}| D ]`\}}|d u rB||}||}n|||d}|||d}| || | t|jtj|j q t}tdd|}t	g d}||}||}| || | t|jtj|j d S )Nc                   s   s   t g dd fV  t jddgt jdt jfV  t jddgt jdt jfV  t jddgt jdt jfV  t jddgt jdt jfV  d S )Nrf  r*  rg  r   )r   r=  r  r  r  r>  r   r   r   r   r  =  s
    z-TestNPFunctions.test_asfarray.<locals>.inputsTr@  r   rf  )
r   r   r  r  r   r  r   Zinexactr   r=  )r  r  r  r  r-   r  r  r  r   r   r   test_asfarray<  s$    
zTestNPFunctions.test_asfarrayc              	      s  t }t|}t}t|}||f||ffD ]\  fdd}tdtdtddgddggtg tg g gg}tjtjtj	tj
tjtjtjtjg}dd	 t||D }dd
ddg ddg}	t||	D ]@}
||
dd ||
dd ||
dd ||
dd ||
dd qtd}dgdgdgfD ]$}
|||
d ||t|
d q4td}ddgddgddgddgddgddgddgfD ]$}
|||
d ||t|
d q||tjddgtjdd |tdtdd q(d S )Nc                    s    | | | | d S r   r  r   nbfuncr  r  r   r   r"  g  s    z*TestNPFunctions.test_repeat.<locals>.checkrr   r  r   r*  rg  c                 s   s    | ]\}}t j||d V  qdS )r   Nr  )r-  r&   tr   r   r   	<genexpr>~  r/  z.TestNPFunctions.test_repeat.<locals>.<genexpr>r#  Tr3  r  )r   r  r   rI  )r   r   r   r   r  rP  r=  uint32r  uint64r  r  r;  r  r>  r  r   r  )r  	np_pyfunc	np_nbfuncarray_pyfuncarray_nbfuncr"  Ztarget_numpy_valuesZtarget_numpy_typesZtarget_numpy_inputsZtarget_non_numpy_inputsr^  ZoneZtwor   r  r   test_repeat[  sj    	

2zTestNPFunctions.test_repeatc           	   
   C   sz  t }t|}t}t|}|   ||f||ffD ]B\}}| t }|tdd W d    n1 sj0    Y  | dt	|j
 | t }|tdd W d    n1 s0    Y  | dt	|j
 | t*}|tdtddg W d    n1 s0    Y  | dt	|j
 | t*}|tdtg d W d    n1 sf0    Y  | dt	|j
 | t*}|td	tg d
 W d    n1 s0    Y  | dt	|j
 | t$}|tdddg W d    n1 s0    Y  | dt	|j
 dD ]B}| t  |td| W d    n1 sf0    Y  q0q0d S )Nrr   r  z#negative dimensions are not allowedr#  zIThe repeats argument must be an integer or an array-like of integer dtyper*  r  z(operands could not be broadcast togetherr(  r}  )Tr&   1)r   r   r   rE  rB  r  r   r  rC  rA  rD  r   r=  )	r  r  r  r  r  r  r  r9  repr   r   r   test_repeat_exception  sV    ..:::4z%TestNPFunctions.test_repeat_exceptionc           
      C   s  t }tt }tg dtg dtg dgtg dtg dtg dgdftdgtd	ggtd
gtdggdftd	ggd td
ggd dfttd
ddtjddggd td
ddtjddggd dfttd
ddtjddgggd td
ddtjddgggd dfttd
ddtjddggd td
ddtjddggd dfg}tdtddfD ]}||dk |dkg||d gdf ||dk |dkf||d fdf ||dk |dkg||d fdf ||dk |dkf||d gdf q|D ](\}}}| 	|||||||| q4t
}tt
}	| 	||||	|| d S )N)FFFFTF)FFTrf  rv  rw  g.@TFrr   r*  r   r  rg  r(  rx  y      @       @rI  )r(  r*  )r   r   r   r=  r  r   rP  rj  r,   r  r   )
r  r  r  Z
test_casesr   r   r   r   Znp_pyfunc_defaultsZnp_nbfunc_defaultsr   r   r   test_select  sT    

$"$ "$$$(
zTestNPFunctions.test_selectc           	      C   s0  t t}td}|   tdtg dgtdtdddgdtd	ftdtd
gtdgtdggdtdftdgtd
ggtdggtdgggdtdftdtd
gtdtdgdtd	fttdddtj	ddgtdddtj	ddgdtdfdgdgdgtdf|dk 
t|dk
tg||d gdtdf|dk|dk|dk|dkg||d |gdtdfdgd tdggd dtdftd
ggd dgd dtdff
D ]Z\}}}}}| |}|||| W d    n1 s0    Y  | |t|j qd S )NrI  Tr  rr   rn  ro  rg  r   z/condlist arrays must be of at least dimension 1Fr*  zHcondlist and choicelist elements must have the same number of dimensionsr(  rx  z"condlist must be a List or a Tuplezdefault must be a scalarz%condlist arrays must contain booleansrz  ry  rK  z7list of cases must be same length as list of conditionsrX  r  z items of condlist must be arraysr  z"items of choicelist must be arrays)r   r   r   rP  rE  r=  rj  r   r  r   r  r  r  rB  rC  rA  rD  )	r  r  r   r   r   r   Zexpected_errorZexpected_textr9  r   r   r   test_select_exception  sP    
(&&*
/,z%TestNPFunctions.test_select_exceptionc           	   	      s:   fdd}|t  |t |t |t t}tt}dD ]V}dD ]L}|||}|||}tslt dv r j	||ddd qD j	||d	d
 qDq<dD ]J} 
t}||d W d    n1 s0    Y   dt|j qdD ]L} 
t}|d| W d    n1 s0    Y   dt|j qd S )Nc              	      s   | }t | }dD ]$}||}||} j||dd qdD ]H} t}|d W d    n1 sf0    Y   dt|j q:d S )Nr   rr   r(  rn  r
  r  r&   r  r3  r  M must be an integer)r   r  rB  r   rC  rA  rD  )r#  r  r  r   r  r  rG  r  r   r   check_windowE  s    &z4TestNPFunctions.test_windowing.<locals>.check_windowr  )r   rr  g      ,@)ppc64leaarch64r
  r*  r  rk  r  r  r#  r  )r&   r3  r(  z beta must be an integer or float)r   r   r   r   r   r   r   platformmachiner  rB  r   rC  rA  rD  )	r  r  r  r  r   r   r  r  rG  r   r  r   test_windowingD  s4    

(*zTestNPFunctions.test_windowingc                 C   s6  t }tdd|}tg dg dgtg dg dgftg dg dgdftjg dtjdtjg dtjdfdtdd	gtg dftg dtg dg dgftg dg dgtg dftd
dd	dtdd	d	fg}|D ]*\}}|||}|||}| || qd S )NTr@  rf  rv  r  r?  r   )rf  rv  rr   r*  r=  rK  rg  ro  )	r   r   r   r=  r  r;  rP  rj  r  r  r  r  pairsr   r   r  r  r   r   r   
test_crossr  s:    +

zTestNPFunctions.test_crossc                 C   s   t }tdd|}|   | t&}|tdtd W d    n1 sP0    Y  | dt|j	 | t&}|t
dt
d W d    n1 s0    Y  | dt|j	 | d	t|j	 | t<}|td
dtdd d d d W d    n1 s0    Y  | dt|j	 | t<}|td
dtd
d d d d W d    n1 s0    Y  | dt|j	 | t*}|tg dtg d W d    n1 s0    Y  | dt|j	 d S )NTr@  ro  rg  z)Incompatible dimensions for cross productr?  r  z Dimensions for both inputs is 2.z+`cross2d(a, b)` from `numba.np.extensions`.ry  r*  ro  rK  r  r  )ro  r*  zDimensions for both inputs is 2rf  rv  Inputs must be array-like.)r   r   rE  rB  r  r   rP  rC  rA  rD  r=  rj  r   setrF  r   r   r   test_cross_exceptions  sh    ""$$

$z%TestNPFunctions.test_cross_exceptionsc                 C   s  t }tt}tddgddggtddgddggftddgddggdftjddgtjdtjddgtjdfdtddgtddgddggftddgddggtddgftdd	d
dtd	d
dfg}|D ](\}}|||}|||}| 	|| qd S )Nrr   r*  ro  r(  r  r   )r?  r  r=  rK  rg  )
r   r   r   r   r=  r  r;  rP  rj  r  r  r   r   r   test_cross2d  s4    &

zTestNPFunctions.test_cross2dc                 C   s&  t t}|   | t&}|tdtd W d    n1 sF0    Y  | dt|j	 | t<}|t
ddt
dd d d d W d    n1 s0    Y  | dt|j	 | t*}|tddgtd	d
g W d    n1 s0    Y  | dt|j	 d S )Nrf  rv  z,Incompatible dimensions for 2D cross productrK  r  r  rr   r*  ro  r(  r  )r   r   rE  rB  r  r   r=  rC  rA  rD  rP  rj  r   r  r  r   r   r   test_cross2d_exceptions  s:    ""

$z'TestNPFunctions.test_cross2d_exceptionsc              	   C   s   t }tdd|}tg dtg dftg dg dgtg dftddddd	tg d
ftdddd	tdddd	dftg dtg dfg}|D ](\}}|||}|||}| || qd S )NTr@  rf  rc  )r*  r(  rK  r   rJ  r*  r(  )rr   rJ     rI  )FTrx  )r   r   r   r=  rP  rj  r  )r  r  r  rk  r&   r'   r  r  r   r   r   test_union1d9  s,    

zTestNPFunctions.test_union1dc                 C   sp  t ddt}|   | t$}|dtddg W d    n1 sJ0    Y  | dt|j	 | t$}|tddgd W d    n1 s0    Y  | dt|j	 | t}|dd W d    n1 s0    Y  | dt|j	 | t.}|tdd	gtd
dg W d    n1 s<0    Y  | dt|j	 | t.}|tddgtddg W d    n1 s0    Y  | dt|j	 | t.}|tddgtddg W d    n1 s0    Y  | dt|j	 | t.}|tddgtddg W d    n1 sP0    Y  | dt|j	 d S )NTr@  ZHellorr   r*  z.The arguments to np.union1d must be array-likeZWorldrb  r  r&   r'   z/For Unicode arrays, arrays must have same dtyper  r_  foobarr  rf  )
r   r   rE  rB  r   r   r=  rC  rA  rD  r  r   r   r   test_union1d_exceptions]  sX    22(>>>>z'TestNPFunctions.test_union1d_exceptionsc                 C   s   t }tdd|}|   tg dtjftg dfg dftddgddggtjfd	tjftjddgtjd
ftddddfg}|D ] }|| }|| }| 	|| qd S )NTr@  rf  r  rr   r*  rg  ro  )r?  r  r   r=  rK  )
r   r   rE  r   r=  r  r  rP  rj  r  )r  r  r  r  pairr  r  r   r   r   test_asarray_chkfinite  s2    "z&TestNPFunctions.test_asarray_chkfinitec                 C   s\  t ddt}|   | t}|d W d    n1 s>0    Y  d}| |t|j | t(}|t	
ddt	jdg W d    n1 s0    Y  | dt|j | t(}|t	
ddt	jdg W d    n1 s0    Y  | dt|j | t$}|t	
g d	d
 W d    n1 s<0    Y  | dt|j d S )NTr@  r*  z7The argument to np.asarray_chkfinite must be array-likero  r(  z#array must not contain infs or NaNsrr   r  r  z!dtype must be a valid Numpy dtype)r   r   rE  rB  r   rC  rA  rD  r  r   r=  r   r  )r  r  r9  r  r   r   r   !test_asarray_chkfinite_exceptions  s    &664z1TestNPFunctions.test_asarray_chkfinite_exceptionsc           	      C   sz   t }tdd|}dd }| D ]T}t|j |jD ]>}t|j |jD ](}||||}||||}| || qHq4q d S )NTr@  c                   s   s:   t dV  t dddV  t ddddV  d S )NrI  r*  r(  rs  ro  rg  r  r   r   r   r   r    s    z9TestNPFunctions.test_swapaxes_basic.<locals>.a_variations)r   r   r  ndimr  )	r  r  r  r  r&   r   r   r  r  r   r   r   test_swapaxes_basic  s    
z#TestNPFunctions.test_swapaxes_basicc                 C   s  t }tdd|}|   | t}|ddd W d    n1 sF0    Y  | dt|j | t"}|t	ddd W d    n1 s0    Y  | dt|j | t"}|t	ddd W d    n1 s0    Y  | dt|j | t
"}|t	dd	d W d    n1 s20    Y  | d
t|j | t
*}|t	ddddd W d    n1 s0    Y  | dt|j d S )NTr@  r  r   r  ro  z.The second argument "axis1" must be an integerz-The third argument "axis2" must be an integerrr   z)np.swapaxes: Argument axis1 out of boundsry  r*  r~  z)np.swapaxes: Argument axis2 out of bounds)r   r   rE  rB  r   rC  rA  rD  r   rP  r  rj  rF  r   r   r   test_swapaxes_exception  s8    *002:z'TestNPFunctions.test_swapaxes_exceptionc                 C   s   t dd}tdd }t jddgt jd}| |||||| dd	 }td
|j	D ]4}||}t j
||d}| |||||| q^d S )Nr  )rg  rr   ro  r*  c                 S   s   t j| |d dS r)   r   Ztake_along_axisr&   r^  r   r   r   	axis_none  s    z7TestNPFunctions.test_take_along_axis.<locals>.axis_nonerr   r*  r   c                    s   t  fdd}|S )Nc                    s   t | | S r   r  r  r*   r   r   impl  s    z?TestNPFunctions.test_take_along_axis.<locals>.gen.<locals>.implr   r+   r  r   r*   r   gen  s    z1TestNPFunctions.test_take_along_axis.<locals>.genr  r*   )r   rP  rj  r   r=  r  r  r  r  r  rc  )r  r&   r  rw   r  r^  Zjfuncair   r   r   test_take_along_axis	  s    

z$TestNPFunctions.test_take_along_axisc                 C   sh   t d}t jdt jd}dd }dD ]<}||}|||}|||}| || | |jd q&d S )N)rg  ro  rr   )rr   r*  r(  r   c                    s   t  fdd}|S )Nc                    s   t | | S r   r  r  r*   r   r   r  )  s    zLTestNPFunctions.test_take_along_axis_broadcasting.<locals>.gen.<locals>.implr  r  r   r*   r   r  (  s    z>TestNPFunctions.test_take_along_axis_broadcasting.<locals>.gen)rr   r  )rg  r*  r(  )r   r  Zintpr  r  r  r  )r  r-   r  r  r^  r"  r  actualr   r   r   !test_take_along_axis_broadcasting   s    

z1TestNPFunctions.test_take_along_axis_broadcastingc                 C   sn  t ddd}t jddgt jd}t jdt jd}dd	 }| t}|d
|| W d    n1 sl0    Y  | dt	|j
 | t}|d|| W d    n1 s0    Y  | dt	|j
 | t}|d|| W d    n1 s0    Y  | dt	|j
 | t}|d d| W d    n1 sN0    Y  | dt	|j
 | t}|d |d W d    n1 s0    Y  | dt	|j
 | t(}|d |t ddg W d    n1 s0    Y  | dt	|j
 tdd }| t}|||d W d    n1 sF0    Y  | dt	|j
 | t.}|d|t jddgt jd W d    n1 s0    Y  | dt	|j
 | t}|d || W d    n1 s0    Y  | dt	|j
 | t*}|d|t jdt jd W d    n1 sF0    Y  | dt	|j
 |   d S )Nry  r*  ro  r   rr   r   r  c                    s   t  fdd}|S )Nc                    s   t | | S r   r  r  r*   r   r   r  ?  s    zJTestNPFunctions.test_take_along_axis_exceptions.<locals>.gen.<locals>.implr  r  r   r*   r   r  >  s    z<TestNPFunctions.test_take_along_axis_exceptions.<locals>.genr&   zaxis must be an integerr~  zaxis is out of boundsrn  z"arr" must be an arrayr(  z"indices" must be an arrayr   r#  z#indices array must contain integersc                 S   s   t | ||S r   r  )r&   r^  r+   r   r   r   not_literal_axis_  s    zITestNPFunctions.test_take_along_axis_exceptions.<locals>.not_literal_axiszaxis must be a literal valuez'must have the same number of dimensionsr  zdimensions don't match)r   rP  rj  r=  r  r  rB  r   rC  rA  rD  r   r  rE  )r  Zarr2dZindices_nonerw   r  rG  r  r   r   r   test_take_along_axis_exceptions6  sX    ,,...8
,>.:z/TestNPFunctions.test_take_along_axis_exceptionsc           	      C   sJ  t jdddtt j t jtt jt jt jdgtdt tt j t jtdt jtt jdtt jt j gt g dt g dt g dg dgt dt jd	gt dt jd	gt jd
dggt t j t jt jgt jt j t jt jgt jdg}ddg}t}tt}t	||D ].\}}|||d}|||d}| 
|| qd S )Nrr   r  r  r   )r  r#  皙?rf  )r  r   re  r  r  r   re  r   rI  )r   )r   r   complexr  r=  r  r  r   r   r   r  )	r  r.   Znansr  r  valuer   r  r  r   r   r   test_nan_to_numx  s2    zTestNPFunctions.test_nan_to_numc                 C   sx   t t}tddtjg}d}||d|d | |d | tddttjtjg}||d|d | |d d d S )Nr  r  r#  Fr   r  r  )r   r   r   r=  r   r  r  )r  r  r   r  Z	x_complexr   r   r   test_nan_to_num_copy_false  s    z*TestNPFunctions.test_nan_to_num_copy_falsec                 C   sN   t t}|  }|d W d    n1 s.0    Y  | dt|j d S )NZinvalid_inputz4The first argument must be a scalar or an array-like)r   r   r  rC  rA  rD  r  r   r   r    test_nan_to_num_invalid_argument  s    
&z0TestNPFunctions.test_nan_to_num_invalid_argument)N)T)rX  rY  rZ  __doc__r   no_pyobj_flagsr  r?  rH  rW  r[  ra  rc  rm  rp  rr  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(  staticmethodr%  r7  r;  r>  rA  rB  rC  rF  rG  rI  rJ  rK  rL  rM  rO  rP  rQ  rR  rS  rW  rX  rb  rd  rk  rl  rs  rt  rw  rx  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  r  r  r  r  r  r$  r%  r&  r'  r)  r*  r/  r0  r3  r6  unittestskipr7  r:  r;  r>  rJ  rP  rT  rU  r]  r^  r_  r`  ra  rl  rp  rk  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  __classcell__r   r   r  r   r     s  
098'!#
 F
	W'#5#'


eg"$"&
$



=




1:
B(#;
.-U@
 %-1E)N*E:37.3A.%$2,%Br   c                   @   sv   e Zd ZdZdd Zdd Zeedkddd	 Z	d
d Z
dd Zede  koZdk n  dejdd ZdS )TestNPMachineParametersz0
def foo():
    ty = np.%s
    return np.%s(ty)
c           	      G   sH   |}t dd|}|| }|| }|D ]}| t||t|| q&d S r  )r   r  getattr)	r  r#  attrsrL   r  r  r  r  attrr   r   r   r"    s    zTestNPMachineParameters.checkc                 C   s4   |j }|j }| j||f }tt|dd t d S )Nz<string>execr  )rX  templateevalr  locals)r  ZbasefunctyZtystrZbasestrZfuncstrr   r   r   create_harcoded_variant  s
    z/TestNPMachineParameters.create_harcoded_variant)rr   r  zNumPy < 1.24 requiredc                 C   s   d}|  t| d S )N)Zibetaitmachepr   negepepsnegiexpZminexpZxminmaxexpZxmaxZirndZngrdepsilontinyZhuge	precision
resolution)r"  rO   )r  r  r   r   r   test_MachAr  s    z#TestNPMachineParameters.test_MachArc                 C   s   t jt jt jt jg}d}|D ]0}| t||d | t j|}| || q| t	&}t
ddt}|d W d    n1 s0    Y  d}| |t|j |  , t
ddt}|t d W d    n1 s0    Y  d S )N)r   r  r  r  r  r  r  ZnexpZnmantr  r  r   bitsrr   Tr@  rq  z(Unknown attribute 'machar' of type finforx  )r   r  r;  r  r>  r"  rb   r  rB  r   r   rc   rC  rA  rD  r  r  )r  r	   r  r  hc_funcrG  r  r  r   r   r   
test_finfo  s    &
z"TestNPMachineParameters.test_finfoc                 C   s   t jt jt jt jt jt jt jt jg}d}|D ]0}| 	t
||d | t j
|}| 	|| q,|  , tddt
}|t d W d    n1 s0    Y  d S )N)rN  r  r  rr   Tr@  rx  )r   r  r  r  r  rU  Zuint16r  r  r"  ra   r  r  r   r;  )r  r	   r  r  r  r  r   r   r   
test_iinfo  s    
z"TestNPMachineParameters.test_iinfo)rr      zNeeds NumPy >= 1.22, < 1.24c                 C   sz   d}t jdd2}t jd|td tdd }|  W d    n1 sH0    Y  | t|d | d	t|d
  d S )Nz(`np.MachAr` is deprecated \(NumPy 1.22\)T)recordalways)messagecategoryc                   S   s
   t  jS r   )r   rN   r   r   r   r   r   <lambda>  r/  zJTestNPMachineParameters.test_np_MachAr_deprecation_np122.<locals>.<lambda>rr   z`np.MachAr` is deprecatedr   )	warningscatch_warningsfilterwarningsr   r   r  r<  rC  rA  )r  r  r<   fr   r   r    test_np_MachAr_deprecation_np122  s    
$z8TestNPMachineParameters.test_np_MachAr_deprecation_np122N)rX  rY  rZ  r  r"  r  r  ZskipIfr   r  r  r  Z
skipUnlessr   Zrun_test_in_subprocessr  r   r   r   r   r    s   	
r  c                   @   s   e Zd Zdd ZdS )TestRegistryImportsc                 C   s8   t d}t|\}}| d|  | d|  d S )Nz
            import numba
            import numpy as np
            @numba.njit
            def foo():
                np.array([1 for _ in range(1)])
            foo()
            print("OK")
        s   OKr/  )r   r   r^  strip)r  coderesulterrorr   r   r   test_unsafe_import_in_registry  s    	z2TestRegistryImports.test_unsafe_import_in_registryN)rX  rY  rZ  r  r   r   r   r   r    s   r  __main__)Nr   )N)N)rY   rZ   F)rm   )rr   )r   )r   )N)r   )Nr   )r   )r   )N)r   N)r   )r   )r   )N)r   N)r   )NF)NTFN)NT)NN)rY   rZ   F)NN)r   )N)Tr   )r  r  r  	functoolsr   r   r  textwrapr   numpyr   Znumba.core.compilerr   r  r   r   r   Z
numba.corer	   Znumba.typedr
   r   Znumba.np.numpy_supportr   Znumba.core.errorsr   r   Znumba.core.configr   Znumba.core.utilsr   Znumba.np.extensionsr   Znumba.tests.supportr   r   r   r   r   r  r  Znrtr   r!   r#   r$   r(   r,   r/   r0   r5   r7   r9   r=   r?   rA   rG   rI   rJ   rM   rO   rP   rQ   rR   rS   rT   rU   rX   r[   r`   ra   rb   rc   re   rg   rh   rl   ro   rq   rt   ru   rx   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   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  rX  mainr   r   r   r   <module>   sD  




























                                      (^
