U
    jg                    @   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_ZOd`da ZPddcddZQddedfZRddgdhZSdidj ZTdkdl ZUdmdn ZVddpdqZWd dsdtZXdudv ZYddwdxZZddydzZ[dd{d|Z\d}d~ Z]dddZ^dd Z_dddZ`dddZadddZbdd ZcdddZddd Zed	ddZfdd Zgd
ddZhdddZidddZjdd ZkdddZldddZmdd Zndd ZodddZpdddZqdddZrdd Zsdd Ztdd Zue
jvfddZwdd Zxdd Zydd Zzdd Z{dd Z|dd Z}dddZ~dddZdd ZddĄ ZddƄ ZdddȄZddʄ Zdd̄ Zdd΄ ZddЄ Zdd҄ ZddԄ Zddք ZdddلZddۄ Zdd݄ Zdd߄ Zdd ZdddZdd Zdd ZdddZdd ZdddZG dd de$e"ZG dd de"ZG dd de"Zedkre'  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   A/tmp/pip-unpacked-wheel-qtpwf23r/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   Zdiffr&   r   r   r   diff1?   s    r4   c                 C   s   t | |S r   r2   )r&   nr   r   r   diff2C   s    r6   c                 C   s
   t | S r   r   Zbincountr3   r   r   r   	bincount1G   s    r8   c                 C   s   t j| |dS )Nweightsr7   )r&   wr   r   r   	bincount2K   s    r<   c                 C   s   t | ||S r   r7   )r&   r;   	minlengthr   r   r   	bincount3O   s    r>   c                 C   s   t | |S r   r   searchsortedr&   vr   r   r   r@   S   s    r@   c                 C   s   t j| |ddS )Nleftsider?   rA   r   r   r   searchsorted_leftW   s    rF   c                 C   s   t j| |ddS )NrightrD   r?   rA   r   r   r   searchsorted_right[   s    rH   c                  G   s
   t j|  S r   )r   digitizeargsr   r   r   rI   _   s    rI   c                  G   s
   t j|  S r   )r   	histogramrJ   r   r   r   rL   c   s    rL   c                  G   s   t  S r   )r   MachArrJ   r   r   r   macharg   s    rN   c                 C   s
   t | S r   )r   	iscomplexr   r   r   r   rO   k   s    rO   c                 C   s
   t | S r   )r   iscomplexobjr   r   r   r   rP   o   s    rP   c                 C   s
   t | S r   )r   isscalarr   r   r   r   rQ   s   s    rQ   c                 C   s
   t | S r   )r   isrealr   r   r   r   rR   w   s    rR   c                 C   s
   t | S r   )r   	isrealobjr   r   r   r   rS   {   s    rS   c                 C   s   t | |S r   )r   isneginfr   outr   r   r   rT      s    rT   c                 C   s   t | |S r   )r   isposinfrU   r   r   r   rW      s    rW   h㈵>:0yE>Fc                 C   s   t | ||||S r   )r   iscloser&   r'   rtolatol	equal_nanr   r   r   rZ      s    rZ   c                 C   s
   t | S r   )r   isnatr   r   r   r   r_      s    r_   c                  G   s
   t j|  S r   )r   iinforJ   r   r   r   r`      s    r`   c                  G   s
   t j|  S r   )r   finforJ   r   r   r   ra      s    ra   c                  G   s   t j|  jS r   )r   ra   rN   rJ   r   r   r   finfo_machar   s    rb   c                 C   s
   t | S r   r   fliplrr3   r   r   r   rd      s    rd   c                 C   s
   t | S r   r   flipudr3   r   r   r   rf      s    rf   c                 C   s
   t | S r   )r   flipr3   r   r   r   rg      s    rg   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numrh   rj   rk   rp   r   r   r   	logspace3   s    rr   c                 C   s   t | |S r   r   Z	geomspaceri   r   r   r   
geomspace2   s    rt   c                 C   s   t j| ||dS rn   rs   rq   r   r   r   
geomspace3   s    ru   c                 C   s
   t | S r   r   rot90r3   r   r   r   rw      s    rw      c                 C   s   t | |S r   rv   )r&   kr   r   r   rot90_k   s    rz   c                 C   s   t j| ||dS r)   )r   array_splitr&   indicesr+   r   r   r   r{      s    r{   c                 C   s   t j| ||dS r)   )r   splitr|   r   r   r   r~      s    r~   c                 C   s   t | |S r   )r   vsplitr&   
ind_or_secr   r   r   r      s    r   c                 C   s   t | |S r   )r   hsplitr   r   r   r   r      s    r   c                 C   s   t | |S r   )r   dsplitr   r   r   r   r      s    r   validc                 C   s   t j| ||dS Nmode)r   	correlater&   rB   r   r   r   r   r      s    r   fullc                 C   s   t j| ||dS r   )r   convolver   r   r   r   r      s    r   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   ry   r   r   r   tri_n_k   s    r   c                 C   s   t | ||S r   r   r   r   ry   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   ry   r   r   r   tril_m_k   s    r   c                 C   s
   t | S r   r   Ztril_indicesr5   r   r   r   tril_indices_n   s    r   c                 C   s   t | |S r   r   r5   ry   r   r   r   tril_indices_n_k   s    r   c                 C   s   t j| |dS Nr   r   r5   r   r   r   r   tril_indices_n_m   s    r   c                 C   s   t | ||S r   r   r5   ry   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-   ry   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   3  s    r   c                 C   s   t | ||||S r   )r   cov)r   yrowvarbiasddofr   r   r   r   7  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   C  s    r   c                 C   s
   t | S r   r   asarrayr3   r   r   r   r   G  s    r   c                 C   s   t j| |dS Ndtyper   r&   r   r   r   r   asarray_kwsK  s    r   c                 C   s   t j| |dS r   r   asfarrayr   r   r   r   r   O  s    r   c                 C   s
   t | S r   r   r3   r   r   r   asfarray_default_kwargS  s    r   c                 C   s   t | |S r   )r   extract	conditionr-   r   r   r   r   W  s    r   c                 C   s
   t | S r   r   Ztrapzr   r   r   r   np_trapz[  s    r   c                 C   s   t | |S r   r   r   r   r   r   r   
np_trapz_x_  s    r   c                 C   s   t j| |dS )Ndxr   r   r   r   r   r   np_trapz_dxc  s    r   c                 C   s   t | ||S r   r   r   r   r   r   r   r   np_trapz_x_dxg  s    r   c                 C   s   t | ||||S r   )r   Zallcloser[   r   r   r   np_allclosek  s    r   c                 C   s   t j| ||dS )Nr+   r:   )r   Zaverage)r&   r+   r:   r   r   r   
np_averageo  s    r   c                 C   s   t | ||S r   )r   interpr   xpfpr   r   r   r   s  s    r   c                 C   s   t | |S r   )r   repeatr&   repeatsr   r   r   	np_repeatw  s    r   c                 C   s   t | |S r   )r   r   r   r   r   r   r   array_repeat{  s    r   c                 C   s   t j| ||dS )N)defaultr   select)condlist
choicelistr   r   r   r   	np_select  s    r   c                 C   s   t | |S r   r   )r   r   r   r   r   np_select_defaults  s    r   c                 C   s
   t | S r   )r   Zbartlettr   r   r   r   np_bartlett  s    r   c                 C   s
   t | S r   )r   Zblackmanr   r   r   r   np_blackman  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   fbc                 C   s   t | |S r   )r   Z
trim_zeros)r&   trimr   r   r   np_trim_zeros  s    r   c                 C   s
   t | |S r   r   r%   r   r   r   
nb_cross2d  s    r  c                 C   s
   t | S r   rc   r3   r   r   r   flip_lr  s    r  c                 C   s
   t | S r   re   r3   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   || k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                 C   s
   t | S r   r   Zdiagflat)rB   r   r   r   	diagflat1  s    r  c                 C   s   t | |S r   r  )rB   ry   r   r   r   	diagflat2  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.ddXdY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ddd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 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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drds Zdtdu Zdvdw Zdxdy Zdz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ˇ  ZS (  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kr$dg }}t ||D ]\}}| jj||
f| |d}|j}||f| }||f| }z
|
j}W n tk
r   |
}Y nX |tjtjfk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   )flagsZsingledoublezfor input %r with prec %r)precmsgignore_sign_on_zeroabs_tol)
zipr  compileZ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}ddddd	d
ddddg
}tjtjgt|d  }||| tj|tjdg}dd |D }||| ddddddddddddddd d!g}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$  )r4  )r,  r-  r0  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   .0rB   r   r   r   
<listcomp>-  s     z-TestNPFunctions.test_sinc.<locals>.<listcomp>      ?                                                    ?y                    ?                            ?      ?                  @      @            y#B;        y#B        y        #B;y        #B)ulpsc                 S   s   g | ]}t |qS r   r@  rA  r   r   r   rC  ;  s     N)	r   r	   r(  float64lenr   arrayr)  
complex128)r  r7  r-  r,  r   r6  r   	test_sinc  s4    	

       zTestNPFunctions.test_sincc              	   C   sN   t }tdd|}| t}|d W 5 Q R X | dt|j |   d S )NTZnopythonstrz+Argument "x" must be a Number or array-like)r   r   assertRaisesr   assertInrU  	exceptiondisable_leak_checkr  r+  r1  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   rQ  r  seedrandviewrR  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   arrsJ  s<    













z+TestNPFunctions.test_contains.<locals>.arrsTrT  )r  r   r*  )r  rj  r+  r1  r-   r  r3  Zreceivedr   r   r   test_containsI  s    -

zTestNPFunctions.test_containsc                    s   t  t fdd}ddddddd	d
g}tjtjgt|d d  }||| tj|tjdg}dd |D }||| ddddddddddddg}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/  )r4  r	   bool_rP  )r,  r-  Zxtra_valuesZ
xtra_typespyfunc1pyfunc2r  r   r   r7    s    
z)TestNPFunctions.test_angle.<locals>.checkr8  r9  r  r:  r;  r<  r=  r>  r?  rx   r   c                 S   s   g | ]}t |qS r   r@  rA  r   r   r   rC    s     z.TestNPFunctions.test_angle.<locals>.<listcomp>rD  rE  rF  rG  y             rH  rI  rJ  rK  rL  rM  N)
r!   r#   r	   r(  rO  rP  r   rQ  r)  rR  )r  r  r7  r-  r,  r   rn  r   
test_angle  s*    

    

zTestNPFunctions.test_anglec                 C   sv   dd }|}ddddg}ddd	d
g}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_angler8  r9  rD  rM  Zf4Zf8Zc8Zc16r   TrT  )r%  r   rQ  r   assertEquals)r  rs  r+  r-  r,  valtypr   r1  r3  r2  r   r   r   test_angle_return_type  s    z&TestNPFunctions.test_angle_return_typec              	   C   sN   t }tdd|}| t}|d W 5 Q R X | dt|j |   d S )NTrT  helloz0Argument "z" must be a complex or Array[complex])r!   r   rV  r   rW  rU  rX  rY  rZ  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 )Nrx   r?  r]  r=     rx   r?     r|  )r?  r?  )r}  r?  )TTTF)Tr?  )Trx   )Fr   r   rQ  rd  reshaper   r   r   r   arrays  s    
z0TestNPFunctions.test_array_equal.<locals>.arraysTrT  )r$   r   r*  r  r  r+  r1  r-   r1   r3  r2  r   r   r   test_array_equal  s    

z TestNPFunctions.test_array_equalc              	   C   sV   t }tdd|}| t}|tdddd  W 5 Q R X | dt|j	 d S )NTrT     r}     z3Both arguments to "array_equals" must be array-like)
r$   r   rV  r   r   rd  r  rW  rU  rX  rZ  r   r   r   test_array_equal_exception  s    "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  dddgddgfV  ddgddgfV  dddgdddgfV  d S )Nrx   r?  r}  r   r   r   r   r   r    s    
z0TestNPFunctions.test_intersect1d.<locals>.arraysTrT  )r(   r   r   rQ  r*  )r  r  r+  r1  r&   r'   r3  r2  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 )	Nr]  <   r}  r  r=  r  r   rx   )r   rQ  zerosrd  r  r   r   r   r   r    s    z2TestNPFunctions.test_count_nonzero.<locals>.arraysTrT  )r/   r   r*  )r  r  r+  r1  r-   r+   r3  r2  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 dddgdddggt d	d
dggdfV  t dddgdddgg} | | dfV  d S )N)r?  r?  Nr]  r}  r=  r?  rx   r  r_        	   r   )r   rd  r  rQ  r   r   r   r   r    s     0z.TestNPFunctions.test_np_append.<locals>.arraysTrT  )r,   r   r*  )	r  r  r+  r1  r-   r1   r+   r3  r2  r   r   r   test_np_append  s    	zTestNPFunctions.test_np_appendc              	   C   s   t }tdd|}tdddgdddgg}td	d
dgg}d}| t}|d || W 5 Q R X | dt|j | t}||d | W 5 Q R X | dt|j | t}|||dd W 5 Q R X | dt|j | 	  d S )NTrT  rx   r?  r}  r  r=  r_  r  r  r  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   rQ  rV  r   rW  rU  rX  rY  )r  r+  r1  r-   r.   r+   r[  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   dddddgdfV  dddddgddgfV  t ddfV  t ddfV  t ddddgfV  t dddddgfV  t d	ddddfV  t d	ddddd
ddgfV  ddddgtdddfV  t dtdfV  d S )Nrx   r?  r}  r  r=  r]  r_  r  rz     r  )r   rd  r  slicer   r   r   r   r  F  s    "z+TestNPFunctions.test_delete.<locals>.arraysTrT  )r0   r   r*  r  r   r   r   test_deleteD  s    

zTestNPFunctions.test_deletec              	   C   s  t }tdd|}|   | t}|ddgd W 5 Q R X | dt|j | t}|t	ddd	d
g W 5 Q R X | dt|j | t}|dd W 5 Q R X | dt|j | t
}|ddgd W 5 Q R X | dt|j |   d S )NTrT  rx   r?  gQ	@zobj should be of Integer dtyper]  g      @gffffff@g@r}  z)arr must be either an Array or a Sequencez"obj must be less than the len(arr))r0   r   rY  rV  r   rW  rU  rX  r   rd  
IndexErrorrZ  r   r   r   test_delete_exceptionsb  s8     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()
        r  r}  r}  r     )r}  r?  r  Nr   rd  r  r  r&   r'   cr   r   r   diff_arrays  s    
zTestNPFunctions.diff_arraysc              	   C   sf   t }tdd|}|  D ] }||}||}| || qtd}|   || W 5 Q R X d S )NTrT  r  )r4   r   r  r*  r   rQ  assertTypingError)r  r+  r1  r-   r3  r2  r&   r   r   r   
test_diff1  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 )	NTrT  r   rx   r?  r}  i  )r6   r   r  shaper*  )r  r+  r1  r-   rb  r5   r3  r2  r   r   r   
test_diff2  s    
 

zTestNPFunctions.test_diff2c              
   C   s   t }tdd|}|   td}|   ||d W 5 Q R X td}dD ]6}| t}||| W 5 Q R X | 	dt
|j qP|   d S )NTrT  r  rx   r]  )r  izorder must be non-negative)r6   r   rY  r   rQ  r  rd  rV  
ValueErrorrW  rU  rX  )r  r+  r1  r-   r5   r[  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 )Nr}  )r}                @numbar]  i90  gV-@TYZnatrx   )r   r   intint16timedelta64
datetime64r   r   r   r   r.     s    
z-TestNPFunctions.test_isscalar.<locals>.valuesTrT  )rQ   r   assertEqualr  r.   r+  r1  r   r3  r2  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 dddgV  dV  d S )Nrx   rD  r}  Thello worldr   r   r   r   r   r.     s    z4TestNPFunctions.test_isobj_functions.<locals>.valuesTrT  c                 S   s   |r| nd }||S r   r   )r   condr1  r   r   r   r   optional_fn  s    z9TestNPFunctions.test_isobj_functions.<locals>.optional_fnFr  )r   rP   rS   r  py_funcrP  Z
signatures)r  r.   r  pyfuncsr+  r1  r   r3  r2  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   sp   t ddddddgV  t dddg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      ?      ?rD        @r}  r?                 @rx   y              (@      ?      @y      $@        )r  y       @        r  r=  r_  r  r  r   rQ  r   r   r   r   r.     s    z7TestNPFunctions.test_is_real_or_complex.<locals>.valuesTrT  )rO   rR   r   r*  )r  r.   r  r+  r1  r   r3  r2  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  rx   r   r  r}  )r   ZNINFinfZPINFr   r  rm  emptyr   r   r   r   r.     s    z7TestNPFunctions.test_isneg_or_ispos_inf.<locals>.valuesTrT  )rT   rW   r   r*  )	r  r.   r  r+  r1  r   rV   r3  r2  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 ]R\}}}|||f|}|||f|}t|t jr| || q\| 	t 
|| q\d S )NrX   rY   d     r  r?  r?  r?  )r\   r]   c                   3   sp  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 dddg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BrY   Hz>r  &.>   2٠Br8  r^   T0.++r]   绽|=g#B;g=|=rx   r?  r}  r  r   皙?    .A @)r   r  rQ  r  rd  r   aranr-   r]   kwr\   r   r   r.   !  sT        $(*$ $(*"" $,$&($( ( 0*(6 *z,TestNPFunctions.test_isclose.<locals>.valuesTrT  )r   rQ  rd  r  rZ   r   
isinstancerm  r  
assertTruer$   )	r  r.   r+  r1  r&   r'   r0  r3  r2  r   r  r   test_isclose  s    
5zTestNPFunctions.test_isclosec                 C   s   t }tdd|}tddtjgtddgdddd	tfd
dddddtfdd
ddddtfddddddtfddddddtfddddddtfg}|D ]:\}}}}}}	}
| |
|	 |||||| W 5 Q R X qd S NTrT  r  r  r  rX   rY   Fz=shape mismatch: objects cannot be broadcast to a single shaperx  r}  z)The first argument "a" must be array-likez*The second argument "b" must be array-liker?  z2The third argument "rtol" must be a floating pointz3The fourth argument "atol" must be a floating pointrx   z0The fifth argument "equal_nan" must be a boolean)rZ   r   r   r   r  r  r   assertRaisesRegexr  r+  r1  Zinpsr&   r'   r\   r]   r^   exc_msgexcr   r   r   isclose_exception`  sD      




z!TestNPFunctions.isclose_exceptionc                 C   sF   ddddddg}t ddddg}| jjdd	d
dt j}|||fS )z7
        Some test sequences for np.bincount()
        rx   r?  r=  r}  r^  r  r  r   r  i,  rb  )r   rQ  r  rh  astypeint8r  r   r   r   bincount_sequences~  s    z"TestNPFunctions.bincount_sequencesc                 C   s@   t }tdd|}|  D ] }||}||}| || qd S NTrT  )r8   r   r  r*  )r  r+  r1  seqr3  r2  r   r   r   test_bincount1  s    zTestNPFunctions.test_bincount1c              	   C   sZ   t }tdd|}|   | t}|ddg W 5 Q R X | dt|j |   d S )NTrT  r?  r  #first argument must be non-negative)r8   r   rY  rV  r  rW  rU  rX  rZ  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 )NTrT  c                 S   s   g | ]}t |d  qS r?  )mathsqrtrB  r   r   r   r   rC    s     z2TestNPFunctions.test_bincount2.<locals>.<listcomp>)r<   r   r  r   rQ  r*  )r  r+  r1  r  r;   r:   r3  r2  r   r   r   test_bincount2  s    

zTestNPFunctions.test_bincount2c              	   C   s   t }tdd|}|   | t}|ddgddg W 5 Q R X | dt|j | t}|ddgdg W 5 Q R X | dt|j d S )NTrT  r?  r  r   r  z+weights and list don't have the same length)r<   r   rY  rV  r  rW  rU  rX  rZ  r   r   r   test_bincount2_exceptions  s    z)TestNPFunctions.test_bincount2_exceptionsc                 C   sv   t }tdd|}|  D ]V}t|}||d fD ]<}||d |}||d |}| t|t| | || q2qd S )NTrT  r?  )r>   r   r  maxr  rP  r*  )r  r+  r1  r  Za_maxr=   r3  r2  r   r   r   test_bincount3  s    zTestNPFunctions.test_bincount3c              	   C   s   t }tdd|}|   | t}|ddgddg W 5 Q R X | dt|j | t}|ddgd d W 5 Q R X | d	t|j d S )
NTrT  r?  r  r   r     &   z 'minlength' must not be negative)r>   r   rY  rV  r  rW  rU  rX  rZ  r   r   r   test_bincount3_exceptions  s    z)TestNPFunctions.test_bincount3_exceptionsc                    s6  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 5 Q R X ddd}tdd| 
   ddgddd W 5 Q R X tdddg}tddgddgddgddgg}||| tdddddddddg	}tddgddgddgg}||| d S )NTrT  c                    sd   | |} | |} || | |}| |} || | |}| |} || d S r   r*  )r&   rB   r3  r2  r1  Z
cfunc_leftZcfunc_rightr+  Zpyfunc_leftZpyfunc_rightr  r   r   r7    s    





z0TestNPFunctions.test_searchsorted.<locals>.checkr=  r?  r^  rx   r  r=  r  r         @r;  c                 S   s   t j| |ddS )NZnonsenserD   r?   rA   r   r   r   bad_side  s    z3TestNPFunctions.test_searchsorted.<locals>.bad_siderC   c                 S   s   t j| ||dS )NrD   r?   )r&   rB   rE   r   r   r   nonconst_side  s    z8TestNPFunctions.test_searchsorted.<locals>.nonconst_siderG   rD   r   r  r_  r}  r  r  r]  r  )rC   )r@   r   rF   rH   r   rd  listr  rO  floatr  rQ  )r  r7  binsr.   r&   rB   r  r  r   r  r   test_searchsorted  s`     



z!TestNPFunctions.test_searchsortedc                    sn  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`tj| tddd	dg}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 )NTrT  c                     s    |  } |  } || d S r   r  )rK   r3  r2  r1  r+  r  r   r   r7  6  s    z,TestNPFunctions.test_digitize.<locals>.checkr   Gz?rx   皙@r  r  r  r        #@r  z-infr  r  r}  r]  r  r  r~  )rI   r   r   rO  r  rP  AssertionErrorr  shuffler  sortr  )r  r7  r.   Zbins1Zbins2Zbins3Zall_binsxsr  r   rG   r   r  r   test_digitize2  s8      

zTestNPFunctions.test_digitizec                    s`   t tdd  fddfdd}td}t|dksHtj| || d S )	NTrT  c                     s:   |  \}} |  \}} || j ||ddd d S )Nr   r?  r!  rN  r  )rK   ZpyhistZpybinsZchistZcbinsr  r   r   r7  ]  s    z-TestNPFunctions.test_histogram.<locals>.checkc                    sN   t ddddg} | |  | d|  | d  | dd  |  d S )Nrx   r}  r  r  r  r  )r8  g      +@)r   rO  r  )r.   r  )r7  r   r   check_valuese  s    

z4TestNPFunctions.test_histogram.<locals>.check_values)r   r  rx   r  r  r  r  r  r  g     @E@r9  r:  r  )rL   r   r   rO  rP  r  r  r  )r  r  r.   r   )r1  r7  r+  r  r   test_histogramY  s    
zTestNPFunctions.test_histogramc              
   C   sT  t dd|}d}tjtjtjtjtjtjtjg}dddg}t	
|||||D ]\}}}}	}
tj||d}tj|	|d}t|tjr|d|  |}t|tjr|d|  |}||||
d	}||||
d	}| || qNtd
dd}td
}||f||ffD ]@\}}| t}||| W 5 Q R X d}| |t|j qd S )NTrT  )rx   r?  r}  r  r   r   Zsamer   rG  r   r  r  r}  zonly supported on 1D arrays)r   r   r  int32int64r(  rO  r)  rR  	itertoolsr   rd  
issubdtypeZcomplexfloatingr  r*  r  rV  r   rW  rU  rX  )r  r+  r1  lengthsZdtsmodesZdt1Zdt2r5   r   r   r&   rB   r3  r2  _a_br   r   r[  r"  r   r   r   _test_correlate_convolve|  s<     
    
z(TestNPFunctions._test_correlate_convolvec                 C   s   |  t d S r   )r  r   r  r   r   r   test_correlate  s    zTestNPFunctions.test_correlatec              
   C   s   |    tjdd}td}tdd|}||f||ffD ]Z\}}| t}||| W 5 Q R X t|dkr| dt	|j
 q<| dt	|j
 q<| t&}|||d	d
 | dt	|j
 W 5 Q R X d S )Nr   )r  r=  TrT  r   z'a' cannot be emptyz'v' cannot be emptyzinvalid moder   zInvalid 'mode')rY  r   onesrd  r   rV  r  rP  rW  rU  rX  )r  fnr  r  r1  r   r   r[  r   r   r   #_test_correlate_convolve_exceptions  s    
z3TestNPFunctions._test_correlate_convolve_exceptionsc                 C   s   |  t d S r   )r  r   r  r   r   r   test_correlate_exceptions  s    z)TestNPFunctions.test_correlate_exceptionsc                 C   s   |  t d S r   )r  r   r  r   r   r   test_convolve  s    zTestNPFunctions.test_convolvec                 C   s   |  t d S r   )r  r   r  r   r   r   test_convolve_exceptions  s    z(TestNPFunctions.test_convolve_exceptionsc                 C   s(   |f |}|f |}| j |||d d S )Nr$  r  )r  r+  r1  paramsr$  r3  r2  r   r   r   _check_output  s    

zTestNPFunctions._check_outputc                    s,  t }tdd|}t| j||  fdd}|tddddg |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|ddddg |d |d |d |d |d d S )NTrT  c                    s   d dddddg}ddg}d| i} | |D ]}| |d	} | q,|D ]}| |d
} | qH|D ]"}|D ]}| ||d} | qlqdd S )Nr   rx   r?  r}  r  TFr   )r   r   )r   r   r   r   )r   Z	n_choicesZincreasing_choicesr  r5   r   r  r   r   _check  s    



z1TestNPFunctions.test_vander_basic.<locals>._checkrx   r?  r}  r=  r        %@r]  333333?r>  333333?Fr  r   r   )r  r=  r_  r  )r  r8  r  r   )r}  g-@A`"	@)TFr  )r   r   r   r  r   rQ  rd  linspacer  r  r   r  r(  rO  )r  r+  r1  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 5 Q R X dt	|j
  fdd}tdd| d| d S )NTrT  r=  r;  c              	      s6     } | d W 5 Q R X dt|j d S )Nr   z,Second argument N must be None or an integerr  rW  rU  rX  )r   r[  r1  r  r   r   r   _check_n  s
    
z8TestNPFunctions.test_vander_exceptions.<locals>._check_nr  rx   r?  r  r   z#Negative dimensions are not allowedc              	      s4    t} |  W 5 Q R X dt|j d S )Nz.x must be a one-dimensional array or sequence.)rV  r  r  rU  rX  )r   r[  r1  r  r   r   	_check_1d  s
    z9TestNPFunctions.test_vander_exceptions.<locals>._check_1dr  )r}  r}  r}  )r?  r}  r  )r   r   rY  r   rd  r  rV  r  rW  rU  rX  r  )r  r+  r  r   r[  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 )NTrT  c                   S   s   t ddS Nr  r   rd  r   r   r   r   n_variations!  s    z6TestNPFunctions.test_tri_n_basic.<locals>.n_variationsr   )r   r   r   r  )r  r+  r1  r  r&  r5   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 )	NTrT  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>  r  r  chainfrom_iterableranger   r   r   r   m_variations1  s    z8TestNPFunctions.test_tri_n_m_basic.<locals>.m_variationsr   r   )r   r   r   r  )	r  r+  r1  r  r&  r-  r5   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 )	NTrT  c                   S   s   t ddS r#  r%  r   r   r   r   r&  E  s    z8TestNPFunctions.test_tri_n_k_basic.<locals>.n_variationsc                   S   s   t ddS Nr]  r%  r   r   r   r   k_variationsH  s    z8TestNPFunctions.test_tri_n_k_basic.<locals>.k_variationsr   r   )r   r   r   r  )	r  r+  r1  r  r&  r1  r5   r  ry   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 )NTrT  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   r1  b  s    z:TestNPFunctions.test_tri_n_m_k_basic.<locals>.k_variationsr   r   r   r   )r   r   r   r  )r  r+  r1  r  r&  r-  r1  r5   r  r   ry   r   r   r   test_tri_n_m_k_basicV  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 )NTrT  c              	      s8     } dd| d W 5 Q R X dt|jks4td S )Nr=  r_  ry   k must be an integer)r  rU  rX  r  )ry   r[  r  r   r   r    s    
z3TestNPFunctions.test_tri_exceptions.<locals>._check      ?rx   r?  )r   r   rY  r   r  )r  r+  r  ry   r   r  r   test_tri_exceptions}  s    z#TestNPFunctions.test_tri_exceptionsc                    s,   t dd  fdd}|S )NTrT  c                    s2   | } | } |j|j tj|| d S r   )r  r   r   testingassert_array_equal)r-   r3  r2  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_m  s    z*TestNPFunctions._triangular_matrix_tests_mc                    s,   t dd  fdd}|S )NTrT  c                    sn   t jd gtddfD ]P}|d kr*i }nd|i}| f|} | f|}|j|j tj|| qd S )Nr0  r]  ry   )	r  r*  r+  r,  r  r   r   r8  r9  )r-   ry   r  r3  r2  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)r  r  )r  rx   r}  r}  r  Tr3   r  r   r   	check_odd  s    

zATestNPFunctions._triangular_matrix_tests_inner.<locals>.check_oddc                    s:    |  |  d}  |  |  d}  |   | j d S )N)r     r  r?  r?  r  r?  r3   rA  r   r   
check_even  s    

zBTestNPFunctions._triangular_matrix_tests_inner.<locals>.check_even?   r  @   ih  r}  r  r=  r_  r  )r}  r}  r  ForderrD  )r   rd  r  rQ  asfortranarray)r  r+  r  rB  rE  r-   r   rA  r   r;    s    z.TestNPFunctions._triangular_matrix_tests_innerc              	   C   sV   t dd|}|   td}|  $}||dd | dt|j W 5 Q R X d S )NTrT  r=  r_  r6  r4  r5  )r   rY  r   r  r  rW  rU  rX  )r  r+  r1  r&   r[  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  typerP  r%  r   r8  r9  )	r  r+  rK   r1  r   r3  r2  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   )rB  r5   r   r   r   rC    s     z?TestNPFunctions._triangular_indices_tests_n.<locals>.<listcomp>r]  rQ  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 rx   r?  r,  )rB  r5   ry   r   r   r   rC    s       zATestNPFunctions._triangular_indices_tests_n_k.<locals>.<listcomp>r]  rR  rS  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  rV  )rB  r5   r   r   r   r   rC    s       zATestNPFunctions._triangular_indices_tests_n_m.<locals>.<listcomp>r]  rR  rS  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 rU  rV  )rB  r5   ry   r   r   r   r   rC    s      zCTestNPFunctions._triangular_indices_tests_n_k_m.<locals>.<listcomp>r]  TrT  rx   )rQ  r,  r   )r  r+  r1  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 )NTrT  r]  r   r  r  boolr  r   r,  r   r  r  rN  rP  r%  r8  r9  )r  r+  r1  r   r5   r   r-   r3  r2  rO  rP  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 )NTrT  r]  r0  rZ  )r  r+  r1  r   r5   r   r-   ry   r3  r2  rO  rP  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 5 Q R X | dt|j d|kr|  }|ddd W 5 Q R X | dt|j d	|kr|  }|ddd
 W 5 Q R X | dt|j d S )NTrT  r8  zn must be an integerry   rx   r4  r5  r   r   zm must be an integer)r   r   
parametersr  rW  rU  rX  )r  r+  r1  r^  r[  r   r   r   _triangular_indices_exceptions  s    



z.TestNPFunctions._triangular_indices_exceptionsTc              
   C   s   t dd|}dD ]B}tdg| }|  }|| W 5 Q R X | dt|j q|rtddg}|  }||dd W 5 Q R X | dt|j d S )	NTrT  )r   rx   r}  r=  zinput array must be 2-dr;  r4  r5  )r   r   r  r  rW  rU  rX  )r  r+  Ztest_kr1  Zndimsr&   r[  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_basic9  s    
zTestNPFunctions.test_tril_basicc                 C   s   |  t d S r   )rM  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   )	rT  r   rW  r   rX  r   rY  r   r_  r  r   r   r   test_tril_indices@  s    






z!TestNPFunctions.test_tril_indicesc                 C   s0   |  t | t | td | td d S NFT)r\  r   r]  r   r`  r  r   r   r   test_tril_indices_fromJ  s    

z&TestNPFunctions.test_tril_indices_fromc                 C   s   |  t | t d S r   )r=  r   r>  r   r  r   r   r   test_triu_basicP  s    
zTestNPFunctions.test_triu_basicc                 C   s   |  t d S r   )rM  r   r  r   r   r   test_triu_exceptionsT  s    z$TestNPFunctions.test_triu_exceptionsc                 C   sT   |  t | t | t | t | t | t | t | t d S r   )	rT  r   rW  r   rX  r   rY  r   r_  r  r   r   r   test_triu_indicesW  s    






z!TestNPFunctions.test_triu_indicesc                 C   s0   |  t | t | td | td d S rd  )r\  r   r]  r   r`  r  r   r   r   test_triu_indices_froma  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+  r1  r&   r   r3  r2  r   r   r   partition_sanity_checkg  s    

(z&TestNPFunctions.partition_sanity_checkc              	   C   sx   |||}|||}|  t||d |  t||d |   |  t|||d   t|||d    d S r   rj  rl  r   r   r   argpartition_sanity_checkt  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 NTrT  r]  rz  rx   r?  r   )r   r   r,  r   rd  r  r  rh  rb  r  r*  tolisttuplerm  
r  r+  r1  jididxr   tgtry   r   r   r   test_partition_fuzz  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 ro  )r   r   r,  r   rd  r  r  rh  rb  argsortr*  rp  rq  rn  rr  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 )NTrT  r]  c              	      s6    t} | | W 5 Q R X t|jdks2td S Nzkth out of boundsrV  r  rU  rX  r  r&   r   rO  r  r   r   r    s    zETestNPFunctions.test_partition_exception_out_of_range.<locals>._checkr}  rz  )r   r   rY  r   rd  r  r+  r&   r  r   r  r   %test_partition_exception_out_of_range  s    


z5TestNPFunctions.test_partition_exception_out_of_rangec                    sT   t }tdd|   td} fdd}||d ||d ||d d S )NTrT  r]  c              	      s6    t} | | W 5 Q R X t|jdks2td S r{  r|  r}  r  r   r   r    s    zHTestNPFunctions.test_argpartition_exception_out_of_range.<locals>._checkr~  r  )r   r   rY  r   rd  r  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 )
NTrT  c              	      s4     } | | W 5 Q R X dt|j d S NzPartition index must be integerr  r&   r   r[  r  r   r   r    s
    
zHTestNPFunctions.test_partition_exception_non_integer_kth.<locals>._checkr]        "@ffffff
@r  rx   r?  )r   r   rY  r   rd  rQ  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 )
NTrT  c              	      s4     } | | W 5 Q R X dt|j d S r  r  r  r  r   r   r    s
    
zKTestNPFunctions.test_argpartition_exception_non_integer_kth.<locals>._checkr]  r  r  rx   r?  )r   r   rY  r   rd  rQ  r  r  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 )NTrT  c              	      s4     } | | W 5 Q R X dt|j d S Nz(The first argument must be an array-liker  r  r  r   r   r    s
    
zITestNPFunctions.test_partition_exception_a_not_array_like.<locals>._checkr  r   Sausages)r   r   rY  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 )NTrT  c              	      s4     } | | W 5 Q R X dt|j d S r  r  r  r  r   r   r    s
    
zLTestNPFunctions.test_argpartition_exception_a_not_array_like.<locals>._checkr  r   r  )r   r   rY  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 )NTrT  c              	      s4     } | | W 5 Q R X dt|j d S Nz3The first argument must be at least 1-D (found 0-D)r  r  r  r   r   r  ,  s
    
zCTestNPFunctions.test_partition_exception_a_zero_dim.<locals>._checkrx   r   )r   r   rY  r   rQ  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 )NTrT  c              	      s4     } | | W 5 Q R X dt|j d S r  r  r  r  r   r   r  ;  s
    
zFTestNPFunctions.test_argpartition_exception_a_zero_dim.<locals>._checkrx   r   )r   r   rY  r   rQ  r<  r   r  r   &test_argpartition_exception_a_zero_dim4  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 )
NTrT  c              	      s6    t} | | W 5 Q R X dt|j d S Nzkth must be scalar or 1-DrV  r  rW  rU  rX  r  r  r   r   r  J  s    zNTestNPFunctions.test_partition_exception_kth_multi_dimensional.<locals>._checkr]  r_  r}  r?  r   )r   r   rY  r   rd  r  r<  r   r  r   .test_partition_exception_kth_multi_dimensionalC  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 )
NTrT  c              	      s6    t} | | W 5 Q R X dt|j d S r  r  r  r  r   r   r  X  s    zQTestNPFunctions.test_argpartition_exception_kth_multi_dimensional.<locals>._checkr]  r_  r}  r?  r  )r   r   rY  r   rd  r  r<  r   r  r   1test_argpartition_exception_kth_multi_dimensionalQ  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 )	NTrT  r   c                    s$   | |} | |} || d S r   r  r&   r   r3  r2  r  r   r   r7  e  s    

z9TestNPFunctions.test_partition_empty_array.<locals>.checkr}  r?  rx   r   r   )r   )r   r   r   rQ  r  r  r7  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 )	NTrT  r   c                    s$   | |} | |} || d S r   r  r  r  r   r   r7  x  s    

z<TestNPFunctions.test_argpartition_empty_array.<locals>.checkr  r   )r   )r   r   r   rQ  r  r  r   r  r   test_argpartition_empty_arrayr  s    
z-TestNPFunctions.test_argpartition_empty_arrayc                 C   s   t }tdd|}tg }||d}| || td}||d}| || tdddg}| }|td| | || d	dgdd	gddgfD ]L}t|}t|}d
D ].}	| |||	|	 ||	  | 	||||	 qqdd	dgdd	dgd	ddgd	ddgdddgdd	d	gd	d	dgdd	dgfD ]P}t|}t|}dD ]0}	| |||	|	 ||	  | 	||||	 qJ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 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 s\ttdd }ttdd }| j| t|jD ]0}| 
|||| ||  | 	|||| qtddd	ddddddddddddddddddddg}dddd g}| 
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   | 	|||| qq>d S )&NTrT  r   rx   rz  ra  r=  (   r?  r   rx   r}  r   rx   r?  rm   1   r=  ra  /   r  r_  rC  )      @B AB r]  r  r?  r  r  r     r^  r   r}  r  r  c                 S   s   g | ]}d D ]}||fqqS )r  rC  r   rB  dtsr   r   r   rC    s       z8TestNPFunctions.test_partition_basic.<locals>.<listcomp>r   r  rx   )r   r   r   rQ  r*  r  r  rd  r  rm  r  rp  rq  r   rb  r  isnanr  r  r  r,  r   r(  tilemapr8  assert_array_less)r  r+  r1  ru  r2  r   okthrr  rw  ry   r&   r   midrt  tdr  r  d1pr   r   r   test_partition_basic  s    





    







&     
z$TestNPFunctions.test_partition_basicc                 C   sT  t }tdd|}tjg tjd}||d}||d}| || tjdtjd}||d}||d}| || tdddg}| }|td	| | || d
dgdd
gddgfD ]T}t|}t	|}	dD ]6}
| ||||
|
  ||	|
   | 
||||
 qqdd
dgdd
dgd
ddgd
ddgdddgdd
d
gd
d
dgdd
dgfD ]X}t|}t	|}	dD ]8}
| ||||
|
  ||	|
   | 
||||
 qrqVt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 q6t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  sttdd }ttdd }	| j| t|jD ]4}| |||||  |	|  | 
|||| qtddd
ddddddddddddddddddddg}ddd d!g}| 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ސqd S )&NTrT  r   r   rx   rz  ra  r=  r  r?  r  r}  r  rm   r  r  r  r  r_  rC  r  r  r  r  r  r  r]  r  r  r  r  r  r^  r  c                 S   s   g | ]}d D ]}||fqqS r  r   r  r   r   r   rC  A	  s       z;TestNPFunctions.test_argpartition_basic.<locals>.<listcomp>r  )r   r   r   rQ  r  r*  r  r  rd  ry  rn  r  rm  rp  rq  r   rb  r  r  r  r  r  r  r,  r   r(  r  r  r8  r  )r  r+  r1  ru  r3  r2  r   r  rr  rw  ry   r&   r   r  rt  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"  rx   )r   r  r8  r  r  allrm  r  r+  r1  ru  r   prevry   r   r   r   assert_partitionedQ	  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  r8  r  r  r  rn  r  r   r   r   assert_argpartitioned\	  s    z%TestNPFunctions.assert_argpartitionedc                 C   sh  t }tdd|}t| j||}tddddg}||d}||d ||t|d d | |||d td	}| j	
| | td	||tt|j td	}| j	
| tddd
dg}| 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 NTrT  r}  r  r?  rx   )r   r}  )r  r  r  r  r  r^  r  r=  r_  r`  )r   r   r   r  r   rQ  r   r*  rd  r  r  r  r,  rb  )r  r+  r1  r  ru  r  keysr   r   r   test_partition_iterativeg	  s,    


"


z(TestNPFunctions.test_partition_iterativec              	   C   s  t }tdd|}t| j||}tddddg}|||d }||d ||t |d d | ||||d  td	}| j	| | td	|||t
t|j  td	}| j	| tddd
dg}| 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   rQ  r*  rd  r  r  r  r,  rb  )r  r+  r1  r  ru  r  r  r   r   r   test_argpartition_iterative	  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 )NTrT  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  rk  )r&   r   r3  r2  r  r  r   r   r7  	  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_valuer8  r  r}  r@  r   rK  Z	full_liker  r  r3   r   r   r   a_variations	  s    z>TestNPFunctions.test_partition_multi_dim.<locals>.a_variationsrx   r]  0   r  r  r  r  r  r}  r  r  r}  )r   r   r   r  r  r  r  r,  r  r7  r  r&   r-   ry   r   r  r   test_partition_multi_dim	  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 )NTrT  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*  rk  )r&   r   r3  r2  rv  r  r  r   r   r7  	  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  r3   r   r   r   r  	  s    zATestNPFunctions.test_argpartition_multi_dim.<locals>.a_variationsrx   r]  r  r  r  r  r  r  r  r}  )r   r   r   r  r  r  r  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 NTrT  rx   r]  r  TFT)TFr  r   rx   )r   r   r   r  rQ  rm  r  r+  r1  ru  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  rQ  rn  r  r   r   r    test_argpartition_boolean_inputs	  s
    z0TestNPFunctions.test_argpartition_boolean_inputsc              
   C   s  t }tdd|}|   tddgddgddggj}tddfD ]6}|  }|||d W 5 Q R X | d	t	|j
 qFtjtjfD ]8}| t}|||d W 5 Q R X | d
t	|j
 qdD ]8}| t}|||d W 5 Q R X | dt	|j
 qd S )NTrT  r   r?  rx   r                @)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   rY  r   rQ  r@  rd  r  rW  rU  rX  r  r  rV  r  )r  r+  r1  r   r   r[  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 )NTrT  +=r  c                   3   s\  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 ddd	d
dg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  dddg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?  rx   r  r=  r^  g&S:?go_?g#~j?gZӼ?gQ|?r  Tr  r  r}  !   )皙?皙?g)\(?gRQ?)g
ףp=
?gzG?)r  r  )y        
ףp=
?y        zG?) r  333333@r|  r  r_  )r  r  r  r  )rx   r}  r?  r  ))r  皙@r6  r   )r   rQ  r@  r  randnr  rK  r   r  r  r  r   r  r   r   input_variations$
  s*     &(
z=TestNPFunctions.corr_corrcoef_basic.<locals>.input_variations)r   r   r  )r  r+  first_arg_namer1  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  rS  r   r   r   test_corrcoef_basicD
  s    z#TestNPFunctions.test_corrcoef_basicc                 C   s   t }| j|dd d S )Nr   r  )r   r  rS  r   r   r   test_cov_basicI
  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 )NTrT  r  r  i   ra  r  r  FT)Nr  r   rx         @T)r   r   r   r   r   )	r   r   r   r  r  r  r  r  r   )r  r+  r1  r  r   	y_choicesrowvar_choicesZbias_choicesZddof_choiceZproductsr   r   r   r   r  r   r   r   test_cov_explicit_argumentsN
  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 )NTrT  r  r  r  ra  r  r  r  r   )	r   r   r   r  r  r  r  r  r   )
r  r+  r1  r  r   r  r  r   r   r  r   r   r    test_corrcoef_explicit_argumentsa
  s    z0TestNPFunctions.test_corrcoef_explicit_argumentsc           	      C   s4  t dd|}t| j||dd}tdddg}tdd	d
g}||d|i}|| tdddg}tdddgg}||d|i}|| tdddg}d}||d|i}|| ||d|i}|| tdddg}d}||d|i}|| ||d|i}|| tg }tg }||d|i}|| d	}d}||d|i}|| | jdd}tdddgddd }||d|i}|| tdddg}tdd	d
gdd	d
gg}||d|i}|| dD ]h}tdddg}tdd	d
gdd	d
gdd	d
gg}||d|d|i}|| ||d|d|i}|| qd S )NTrT  r  r  r  r  r  r}  r  gQ?r   rx   r?  rG  r  r  rG  r  r  )rG  r  r}  r  r]  r  r  r   )r   r   r  r   rQ  r  r  r  )	r  r+  r  r1  r  r   r   r  r   r   r   r   cov_corrcoef_edge_caseso
  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  TrT  r  r  r  r   )r   r  r   r   r  r   r  r  r  r+  r1  r  r   r  r   r   r   test_corrcoef_edge_cases
  s    z(TestNPFunctions.test_corrcoef_edge_casesc                 C   s<   t }tdd|}t| j||dd}d}d|i}|| d S )NTrT  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  TrT  r  r  r   r?  rx   r=  )r   r   )r   r  r   r   r  r   rQ  r@  )r  r+  r1  r  r   r  r   r   r   test_cov_edge_cases
  s    
z#TestNPFunctions.test_cov_edge_casesc              	      s4  t }tdd|    fdd}td}|| d}|| ddd	ggg}||  fd
d}td}td}||| td}d}||| td}td}t} ||d W 5 Q R X 	dt
|j tdddgdd}t} | W 5 Q R X 	dt
|j d S )NTrT  c              	      s2     } |  W 5 Q R X dt|j d S )Nzm has more than 2 dimensionsr  )r   r[  r  r   r   _check_m
  s    
z5TestNPFunctions.test_cov_exceptions.<locals>._check_mr=  r_  r  )))r|  r  r=  r_  r  c              	      s6     } | |d W 5 Q R X dt|j d S )Nr   zy has more than 2 dimensionsr  )r   r   r[  r  r   r   _check_y
  s    
z5TestNPFunctions.test_cov_exceptions.<locals>._check_yrL  )r  r  r  )))r  r  ffffff@r}  r  r   z$m and y have incompatible dimensionsr  r  r  rx   z/2D array containing a single row is unsupported)r   r   rY  r   r  rQ  rd  rV  r  rW  rU  rX  r  RuntimeError)r  r+  r  r   r  r   r[  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 )NTrT  c                 s   s   d V  | V  |  tjV  d S r   )r  r   r  r3   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 )Nr}  r?  )r  r  r   r   r3   r   r   r   ary_variations  s    z:TestNPFunctions.test_ediff1d_basic.<locals>.ary_variationsr  r  r  r   )r   r   )r   r   )r   r   r   )r   r   r   r  r   r  )
r  r+  r1  r  r  r  r   r  r&   r'   r   r   r   test_ediff1d_basic  s     

z"TestNPFunctions.test_ediff1d_basicc              	   C   sV   t }tdd|}|   |  }|td W 5 Q R X d}|t|jksRtd S )NTrT  )TTFz+Boolean dtype is unsupported (as per NumPy))	r   r   rY  r  r   rQ  rU  rX  r  )r  r+  r1  rO  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 5 Q R X | dtj t|j	 d S )NTrT  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 )	Nr]  r=  r?  r^  rU  rx   r}  r  r  r   r   r   r   r  1  s    z7TestNPFunctions.test_fliplr_basic.<locals>.a_variationsabczCannot np.fliplr on %s type)
rd   r   r*  rV  r   rW  r	   unicode_typerU  rX  r  r+  r1  r  r&   r3  r2  r[  r   r   r   test_fliplr_basic-  s    
z!TestNPFunctions.test_fliplr_basicc              	   C   sf   t }tdd|}|   | t}|td W 5 Q R X | dt|j	 | dt|j	 d S )NTrT  r}  cannot index arrayzwith 2 indices)
rd   r   rY  rV  r   r   rd  rW  rU  rX  rZ  r   r   r   test_fliplr_exceptionB  s    z%TestNPFunctions.test_fliplr_exceptionc              	   C   s|   t }tdd|}dd }| D ] }||}||}| || q | t}|d W 5 Q R X | dtj t|j	 d S )NTrT  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 )	Nrx   r]  r=  r?  r^  r  r}  r  r  r   r   r   r   r  S  s    z7TestNPFunctions.test_flipud_basic.<locals>.a_variationsr  zCannot np.flipud on %s type)
rf   r   r*  rV  r   rW  r	   r  rU  rX  r  r   r   r   test_flipud_basicO  s    
z!TestNPFunctions.test_flipud_basicc              	   C   s`   t }tdd|}|   | t}|d W 5 Q R X | dt|j | dt|j d S )NTrT  rx   r  zwith 1 indices)rf   r   rY  rV  r   rW  rU  rX  rZ  r   r   r   test_flipud_exceptionf  s    z%TestNPFunctions.test_flipud_exceptionc              	   C   sv   t }tdd|}dd }| D ] }||}||}| || q | t}|d W 5 Q R X | dt|j d S )NTrT  c                   s   sF   t dV  t dV  t dddV  t ddddV  d S )Nrx   r]  r=  r?  r^  r  r   r   r   r   r  w  s    z5TestNPFunctions.test_flip_basic.<locals>.a_variationsr|  zCannot np.flip on UniTuple)rg   r   r*  rV  r   rW  rU  rX  r  r   r   r   test_flip_basics  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)rx   r  )r  r  )r  r  r  )r  r  r8        N@      Nr9  )r9  r  r  rx   r?  r  r        ?       @      @      @      ?             @                   @r   rO  pir)  r   r   r   r   inputs  s     z4TestNPFunctions.test_logspace2_basic.<locals>.inputsTrT  )rl   r   r   r8  assert_allcloser  r  r+  r1  rj   rk   r   r   r   test_logspace2_basic  s
    z$TestNPFunctions.test_logspace2_basicc              	   C   s~   t ddt}|   | t}|dd W 5 Q R X | dt|j | t}|dd W 5 Q R X | dt|j d S )NTrT  r  r=  +The first argument "start" must be a number+The second argument "stop" must be a number)r   rl   rY  rV  r   rW  rU  rX  r  r1  r[  r   r   r   test_logspace2_exception  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    s     z4TestNPFunctions.test_logspace3_basic.<locals>.inputsTrT  rr   r   r   r8  r  r  r   r   r   test_logspace3_basic  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)rx   r  r^  )r  r  rz  )r  r  r  r  r  rm   )r  r  r  r8  r  F   r  r9  P   )r9  r  Z   r  r^  rz  rx   r?  r  r  r  rm   r  r  r  r%  r  r  r'  r  r(  r  r   r   r   r   r    s     z=TestNPFunctions.test_logspace3_with_num_basic.<locals>.inputsTrT  r!  r  r  r+  r1  rj   rk   rp   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 5 Q R X | dt|j | t}|dd W 5 Q R X | dt|j | t}|ddd W 5 Q R X | dt|j d S )	NTrT  r  r=  r  r  r   z+The third argument "num" must be an integer)r   rr   rY  rV  r   rW  rU  rX  r  r   r   r   test_logspace3_exception  s"    z(TestNPFunctions.test_logspace3_exceptionc                 C   sJ   dd }t }tdd|}| D ]$\}}| j||||||dd q d S )Nc                   s   s  dV  dV  dV  dV  dV  dV  dV  dt d	fV  t d	dfV  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  t dt dfV  t dt dfV  t dt dfV  d S )Nr  r  r  )rx   r  )r  rx   )rx      )r  r  r  r9  rG               @@rE  rD  rx   r?  r  r  r  r  r  r  r   r)  r   r   r   r   r    s$    z5TestNPFunctions.test_geomspace2_basic.<locals>.inputsTrT  g-q=r  )rt   r   r*  r  r   r   r   test_geomspace2_basic  s    z%TestNPFunctions.test_geomspace2_basicc              	   C   s   t ddt}|   | t}|dd W 5 Q R X | dt|j | t}|dd W 5 Q R X | dt|j | t}|dd W 5 Q R X | dt|j | t}|dd W 5 Q R X | dt|j d S )	NTrT  r  r=  %The argument "start" must be a number$The argument "stop" must be a numberr   &Geometric sequence cannot include zero)	r   rt   rY  rV  r   rW  rU  rX  r  r  r   r   r   test_geomspace2_exception  s,    z)TestNPFunctions.test_geomspace2_exceptionc                 C   sP   dd }t }tdd|}| D ]*\}}}| j||||||||dd q d S )Nc                   s   s*  dV  dV  dV  dV  dV  dV  dV  dV  d	t d
dfV  t d
d	dfV  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  t dt ddfV  t dt dd fV  t d!t dd"fV  d S )#Nr#  r$  r&  )rx   r  r  )rx   r  r}  )r  rx   r  )rx   r,  r  )r-  r  r  r  r  r]  r^  r9  rz  rG  r.  r  rE  rD  r=  rx   r?  r  r  rm   r  r  r  r%  r  r  r'  r  r(  r/  r   r   r   r   r  6  s&    z5TestNPFunctions.test_geomspace3_basic.<locals>.inputsTrT  r  r  )ru   r   r*  r)  r   r   r   test_geomspace3_basic4  s    
z%TestNPFunctions.test_geomspace3_basicc              	   C   s  t ddt}|   | t}|ddd W 5 Q R X | dt|j | t}|ddd W 5 Q R X | dt|j | t}|ddd W 5 Q R X | dt|j | t}|d	dd W 5 Q R X | d
t|j | t}|dd	d W 5 Q R X | d
t|j d S )NTrT  r  r=  r]  r1  r2  z%The argument "num" must be an integerr   r3  )	r   ru   rY  rV  r   rW  rU  rX  r  r  r   r   r   test_geomspace3_exceptionT  s6    z)TestNPFunctions.test_geomspace3_exceptionc              	   C   s  t ddt}t ddt}t}|dd}| t|d |dddd}| |d d	 |ddd
d}| ||ddd
d |dddd}| ||dddd | dd |jD  |dddd}| ||dddd | dd |jD  |dddd}| ||dddd | dd |jD  d}d}|||dd}| |d | |||dd}| |d | | |d | tj	dd |dddd}W 5 Q R X | |d d | t
|dd   | |d d |dddd}| j||dddddd  | d!d |jD  |d"d#dd}| j||d"d#ddd$d  | d%d |jD  |d&d'dd}| j||d&d'ddd$d  |d(d)dd}| j||d(d)ddd$d  |d*d+dd}| ||d*d+dd |d,d-d}| j||d,d-dd.d  |d,d/d}| j||d,d/dd.d  |d-d0d}| j||d-d0dd.d  |d,d-d}| j||d,d-dd.d  |d1d2d
}| j||d1d2d
dd  |d,d3d}| ||d,d3d |d3d,d}| ||d3d,d d S )4NTrT  rx   r  rm   r  ro   r  r  r  r  r?  r}  c                 S   s   g | ]}|d kqS r
  r   r  r   r   r   rC    s     z8TestNPFunctions.test_geomspace_numpy.<locals>.<listcomp>ic                 S   s   g | ]}|d kqS r
  r   r  r   r   r   rC    s     c                 S   s   g | ]}|d kqS r
  r   r  r   r   r   rC    s     r  gL4@r   ignore)invalidr  r  g      r  rG  y              0@r=  r  r  c                 S   s   g | ]}|d kqS r
  r   r  r   r   r   rC    s     y             y            @tvIh%<=c                 S   s   g | ]}|d kqS r
  r   r  r   r   r   rC    s     r  y     @@     @@y            ?y     @     @@rE  rD  r  y              gV瞯<y      @        y              y             y      @      @r>  )r   rt   ru   r  rP  r*  r  imagr   Zerrstater  r  real)r  cfunc2Zcfunc3Zpfunc3r   rj   rk   r   r   r   test_geomspace_numpyr  s|    
z$TestNPFunctions.test_geomspace_numpyc                 C   sF   t }tdd|}dd }| D ] }||}||}| || q d S )NTrT  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 Nr]  r=  r?  r^  rG  r  r   r   r   r   r    s    z6TestNPFunctions.test_rot90_basic.<locals>.a_variations)rw   r   r*  )r  r+  r1  r  r&   r3  r2  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 )NTrT  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>  r_  )rz   r   r,  r*  )r  r+  r1  r  r&   ry   r3  r2  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 5 Q R X | dt|j | t }|t	d
dddd W 5 Q R X | dt|j | t}|t	d	 W 5 Q R X | d
t|j d S )NTrT  r  z'The first argument "m" must be an arrayr  r?  r4  z*The second argument "k" must be an integerr}  zInput must be >= 2-d.)rz   r   rY  rV  r   rW  rU  rX  r   rd  r  rZ  r   r   r   test_rot90_exception  s     $z$TestNPFunctions.test_rot90_exceptionc                 C   sL   |}t dd|}dd }| D ]&}|| }|| }tj|t| q d S )NTrT  c                  s   sZ  t d} | dfV  | ddfV  | dddgfV  t| dddgfV  t| dddgfV  | dddgdfV  t| dddgdfV  t| dddgdfV  t dddd} | dfV  | ddfV  | ddfV  | dddgfV  | dddgdfV  | dddg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   rx   r  H   rG  r=  r}  r  r  r  r   rm   r]  rx   r!  )r   rd  r  rq  r  rQ  r  r   r3   r   r   r   args_variations  sR    








z5TestNPFunctions._check_split.<locals>.args_variationsr   r   r8  Zassert_equalr  r  funcr+  r1  rD  rK   r3  r2  r   r   r   _check_split  s    /
zTestNPFunctions._check_splitc                 C   sL   |}t dd|}dd }| D ]&}|| }|| }tj|t| q d S )NTrT  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 )Nr  r}  r  r  r?  r=  )r   rd  r  rq  r  r   r   r   r   rD  ;  s    z;TestNPFunctions._check_array_split.<locals>.args_variationsrE  rF  r   r   r   _check_array_split6  s    
z"TestNPFunctions._check_array_splitc                 C   s   |  t | t d S r   )rH  r{   rI  r  r   r   r   test_array_split_basicG  s    
z&TestNPFunctions.test_array_split_basicc              	   C   s   |  t |   | t}tttdd W 5 Q R X | dt	|j
 | t }tttddgdd W 5 Q R X | dt	|j
 d S )Nr=  r?  z0array split does not result in an equal divisionr}  r  r*   z%np.split: Argument axis out of bounds)rH  r~   rY  rV  r  r   r   r  rW  rU  rX  )r  r[  r   r   r   test_split_basicK  s    
$z TestNPFunctions.test_split_basicc              	   C   s   dd }dd }dd }| | | g}t ddftd	d
ftddffD ]T\}}}|}t|}	t|dD ]2}
||
d	  D ] \}}| ||||	|| qtqdqDd S )Nc                   s   s4   t ddddgdfV  t ddddgdfV  d S )	Nrx   r?  r}  r  r8  r  r        @r  r   r   r   r   inputs1D_  s    z5TestNPFunctions.test_vhdsplit_basic.<locals>.inputs1Dc                   s   s   t ddddgddddggdfV  t ddddgddddggdfV  t d	dddfV  t d	ddt dd
gfV  t d	dddd
gfV  t d	dddfV  t dddddfV  d S )Nrx   r?  r}  r  r8  r  r  rL        0@r_  r}  r_         @r  r   r   r   r   inputs2Dd  s    $$"z5TestNPFunctions.test_vhdsplit_basic.<locals>.inputs2Dc                   s   s   t ddddgddddggddddgddddgggdf t dddddfV  t ddddt ddgfV  t ddddddgfV  t dddddfV  t dddddfV  d S )	Nrx   r?  r}  r  rN  r_  rO  rP  r  r   r   r   r   inputs3Dn  s    


$z5TestNPFunctions.test_vhdsplit_basic.<locals>.inputs3Dr?  r   rx   r   r}  r   r  )r   r   r   r   r,  r*  )r  rM  rQ  rR  r  fmindimnamer+  r1  rt  r&   r   r   r   r   test_vhdsplit_basic[  s    
z#TestNPFunctions.test_vhdsplit_basicc              
   C   s<  t ddftddftddffD ]\}}}tdd|}|   | t}|dd W 5 Q R X | d	t|j	 | t}|d
d W 5 Q R X | d	t|j	 | t*}|t
ddddgddddggd
 W 5 Q R X | dt|j	 | t}|t
dd W 5 Q R X | |d t| d t|j	 qd S )Nr?  r   rx   r   r}  r   TrT  z#The argument "ary" must be an arrayr  r  z:The argument "indices_or_sections" must be int or 1d-arrayz only works on arrays of z or more dimensions)r   r   r   r   rY  rV  r   rW  rU  rX  r   rQ  r  )r  rS  rT  rU  r1  r[  r   r   r   test_vhdsplit_exception  s8    .z'TestNPFunctions.test_vhdsplit_exceptionc           	      C   s^   t }tdd|}dd }dd }| D ]0}| D ]$}|||}|||}| || q2q(d S )NTrT  c                   s   s~   t dV  t ddddV  dddg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 )Nr  r  r}  r  r=  r  r  r  r  F)r  g333333@r   )r   rd  r  rK  rQ  r  r  r   r   r   r   r    s    "z5TestNPFunctions.test_roll_basic.<locals>.a_variationsc                   S   s   t jdtddfS )Nr~  r0  r]  r)  r   r   r   r   shift_variations  s    z9TestNPFunctions.test_roll_basic.<locals>.shift_variations)r   r   r*  )	r  r+  r1  r  rX  r&   r   r3  r2  r   r   r   test_roll_basic  s    



zTestNPFunctions.test_roll_basicc              
   C   sb   t }tdd|}|   dD ]>}|  }|td| W 5 Q R X d}|t|jkstqd S )NTrT  )r  rU  r]  zshift must be an integer)	r   r   rY  r  r   rd  rU  rX  r  )r  r+  r1  r   rO  r"  r   r   r   test_roll_exceptions  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 ddddg}ddddg}|||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ddd
g}tg }|||d tddd
g}tddddg}|||d tddd
gdd	dgg}ddddddg}|||d tddd
gdd	dgg}tddddddddg	ddd}|||d ttd	d
dd	}tdd}|||d |||d d d d td}dD ]}|||d qdd}d}|||d td}tddg}|||d td}tddddddg	dd
d }|||d d S )NTrT  r]  r  r`  r   r  r  r=  r}  gffffff&@)r|  r}  r  r=  r  r=  r_  r  r  r  r  rx   r   r  r_  Fr  r9  g333333r8  y              ?r?  r  rz  rG  )r   r   r   r  r   rd  r  r  r,  r  Zeyeflattenr  r  r  combinations_with_replacementrQ  rK  r   )r  r+  r1  r  r&   	thresholdr  Zelement_poolr   r   r   test_extract_basic  sd    

$


"z"TestNPFunctions.test_extract_basicc              	      sH  t }tdd|   tg }tdddg}t} || W 5 Q R X dt|j	  fdd}tdddgdddgg}dd	dd	dd	dg}||| tdddg}tdd	dd	dg}||| td
}d}||| t
d}tdddddg}||| t
d}tdddddddg}||| d S )NTrT  rx   r?  r}  z"Cannot extract from an empty arrayc              	      s:   d} t} | | W 5 Q R X |t|j d S )Nz+condition shape inconsistent with arr shaper  )r  r&   r"  rO  r  r   r   r    s    z7TestNPFunctions.test_extract_exceptions.<locals>._checkr   r  r  r  F)r   r   rY  r   rQ  rV  r  rW  rU  rX  rd  )r  r+  r&   r  rO  r  r   r  r   test_extract_exceptions	  s0    







z'TestNPFunctions.test_extract_exceptionsc                 C   s>  t }tdd|}t| j||}dddg}|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 )NTrT  rx   r?  r}  r   )r}  rx   r?  r?  r?  ra  r=  r0  r]  r  r  r9  r  r  r^  r   rG  r   r  )r   r   r   r  r   rd  r  r  r  r  rQ  r  r  rR  r  r+  r1  r  r   r   r   r   test_np_trapz_basic1  s.    

z#TestNPFunctions.test_np_trapz_basicc                 C   sJ  t }tdd|}t| j||}dddg}dddg}|||d	 ddddd
g}d}|||d	 d}dd
dddg}|||d	 tddddd
g}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dd
ddg}|||d	 tdd
dd}tdd
g}|||d	 tdd
dd}tdd
dg}|||d	 tdd
dd}| j	| |d }| j	| |||d	 td}|t
dddd  }|||d	 tdddg}tddg}|||d	 d S )NTrT  rx   r?  r}  r  r_  r  r   r=  )r  r_  )rx   r?  r}  r  r=  r  r^  r  r  r   r]  rG  r  r  )r   r   r   r  r   rQ  rd  r  r  r  r  )r  r+  r1  r  r   r   r   r   r   test_np_trapz_x_basicT  sX    



z%TestNPFunctions.test_np_trapz_x_basiczNumPy behaviour questionablec                 C   sf   t }tdd|}t| j||}tddddgt}|d|i tddddg}|d|i d S )NTrT  Fr   )r   r   r   r  r   rQ  r  r  rb  r   r   r   test_trapz_numpy_questionable  s    z-TestNPFunctions.test_trapz_numpy_questionablec                 C   s  t }tdd|}t| j||}dddg}d}|||d dddddg}dddd	g}|||d dddddg}dddd	g}|||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 )NTrT  rx   r?  r}  r   r  r=  r_  r  r]  r  r9  r  r  rG  r  r0  r  r<  r   r  r^  )r   r   r   r  r   r  r  r  rd  r  expr  r  r8  assert_almost_equalrQ  )r  r+  r1  r  r   r   r   rr  r   r   r   test_np_trapz_dx_basic  sB    
*

z&TestNPFunctions.test_np_trapz_dx_basicc              	   C   s   t }tdd|}t| j||}d dtdddddgfD ]}dddg}ddd	g}||||d
 dddddg}ddg}||||d
 dddddg}ddddd	g}||||d
 tdddd}| j	| |d }tj
|d< ||||d
 q:d S )NTrT  r?  rx   r}  r  r=  r_  r  r   r  r  r  r  )r   r   r   r  r   rQ  rd  r  r  r  r  )r  r+  r1  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}ddddd	g}dd	d
dddgdd	d
gfD ]}|||df qPtdddd	}tdddd}|||df tdddd	}tdd	d
dg}|||df ddddd	g}tddg}||d |f tdddd	}tdddd	}||d |f  }td}||d df W 5 Q R X dt	|j
 d	dtjfD ]8} } |d d W 5 Q R X dt	|j
 qxd S )NTrT  c              	      s4    t} |   W 5 Q R X dt|j d S )Nzunable to broadcastr  )r  rO  r  r   r   check_not_ok  s    zCTestNPFunctions.test_np_trapz_x_dx_exceptions.<locals>.check_not_okrx   r?  r}  r  r=  r_  r  r  r  r8  r  $   r  zy cannot be 0DFzy cannot be a scalar)r   r   rY  r   rd  r  rQ  r  rW  rU  rX  r  )r  r+  rj  r   r   r   rO  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   rc  TrT  r9   r]  )Zplacesc              	      s<    t} | |d W 5 Q R X |j}t|d d S )Nr9   z)Weights sum to zero, can't be normalized.)rV  ZeroDivisionErrorrX  r  rU  datar:   rO  errr  r   r   test_weights_zero_sumD  s    
z;TestNPFunctions.test_average.<locals>.test_weights_zero_sumc              	      s<    t} | |d W 5 Q R X |j}t|d d S )Nr9   zCNumba does not support average when shapes of a and weights differ.rV  	TypeErrorrX  r  rU  ro  r  r   r   test_1D_weightsN  s    
z5TestNPFunctions.test_average.<locals>.test_1D_weightsc              	      s>    t} | ||d W 5 Q R X |j}t|d d S )Nr   z)Numba does not support average with axis.rs  )rp  r+   r:   rO  rq  r  r   r   test_1D_weights_axisV  s    
z:TestNPFunctions.test_average.<locals>.test_1D_weights_axisr_  )r}  r?  rx   g      ?g      ?rx   r   )r   r  ranfr  rh  rf  r   r   ZassertAlmostEqualrd  r  r   )r  r   r&   r;   Zw0Za_boolZw_boolZa_intZw_intZd0r  Zd2Za_3dZw_3dr+  rr  ru  rv  rp  r   r  r   test_average  sb    

 
 
 
 
 
 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}| |||||| ddddddddg}	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 )NTrT  r   r  r  r  rY   r  r  )r8  r8  rx   r   r8  r^   r  g{Gz?gMbP?-C6?rX   gư>r  )rc  r  )r]   r\   )r   r   r   r`   int_minrQ  r   r  r  r  ZassertFalsert  r  r  rw  )r  r+  r1  min_intr&   Zsimple_datar'   Z	py_resultZc_resultZnoise_levelsZ
zero_arrayZnoiser\   r]   r   r   r   test_allcloseg  s~    






      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 )NTrT  g      Y@g     @@}   r   r=  r=  r=  rY   rX   rx   r   r  r8  r?  )r   r   r   rQ  rd  r  rO  r  r   r  rt  )
r  r+  r1  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 )NTrT  r  r   r  rY   rX   r   r8  r  r?  rx   )r   r   r   rd  r  rO  r  r   r  r  rQ  rt  )	r  r+  r1  r  r]   r\   r  r   r   r   r   r   test_ip_not_allclose_numpy  s$      "z*TestNPFunctions.test_ip_not_allclose_numpyc                 C   sJ   t }tdd|}G dd dtj}|dg}| t|||tk d S )NTrT  c                   @   s   e Zd Zdd ZdS )z?TestNPFunctions.test_return_class_is_ndarray_numpy.<locals>.Fooc                 _   s   t j||| S r   )r   rQ  rg  )clsrK   r0  r   r   r   __new__  s    zGTestNPFunctions.test_return_class_is_ndarray_numpy.<locals>.Foo.__new__N)__name__
__module____qualname__r  r   r   r   r   Foo  s   r  rx   )r   r   r   ndarrayr  rN  r[  )r  r+  r1  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 )NTrT  r8  ry  )r   r   r   rQ  r  rt  )r  r+  r1  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 )NTrT  rx   r   )r   r   r   rQ  r  r8  r9  )r  r+  r1  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 )NTrT  r   )r   r   r   r`   r{  r|  rQ  rt  )r  r+  r1  r}  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dddd	tfd
dddddtfdd
ddddtfddddddtfddddddtfddddddtfg}|D ]:\}}}}}}	}
| |
|	 |||||| W 5 Q R X qd S r  )	rY  r   r   r   r   r  r  r   r  r  r   r   r   test_allclose_exception
  sF      




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 ]&}dddg}d}||||dd qtg }dddg}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dd*d+g| }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ddddg}tddddg}tddd-dg}||||dd dg}tj
g}|d||dd tddd.ddg}tddddg}tddtj	dg}||||d tdd
dd.ddd/dd0g	}tdddddg}ttj	dtj	dtj	g}||||d tddd.ddg}tddddg}tddtj
dg}||||d tdd
tj	d.tj
 dd/dtj
dd+g}tdddddd*g}tddtj	ddtj
g}||||d td1d2d3g}tddd4}t|d5 }||||d | jddtj d6}tddtj d7}t|}t|}||||}tjj||d8d9 | jd}td$dd7}t|}||||d | jd7}td$dd}t|}||||d d S ):NTrT  r  r  r>  r=  rc  r$  r  r6  r   )r  rx   r?  r  r  g      )r?  r}  r  r  )r  )r  ?rL  r  r]  gffffff?r  g333333"r}  rH  rI  r  r   r[  r  r^  Fr9  r8  r  r0  r  r  r  r  )rx   r  r_  r  rm   gGz@      @r  g      @g~@g<ԛ@g3@i!N  r  )r  r  rX   )r]   )r   r   r   r  r   r  rd  r  r  r  r  rQ  r  r,  r   r  r8  rg  sinuniformr  cosr  Z	ones_like)r  r+  r1  r  r   r   r   Zfactorr   x0rV   exactr2  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)rb  r   putr  choicer,  r  r  )r  r&   r  r   r   r   _make_some_values_non_finite  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        @rx   r=  r  g333333@r?  g      @r  r  g@g333333@gq=
ףp?g @gQ?r  r;  )rb  Zscale      @g      4@g      I@g      i@r  g333333?rL  r  )r   r  r  rd  r  r  normalrf  )r  ndatar   r   r   r    sL    "
 
 
 
 
 
 
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 )
NTrT  i N  r   r]  rx   r  r  r  )
r   r   r   r  r  r  r*  r  r  r  )
r  r+  r1  r  r   r   r   r]   r3  r2  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 )NTrT  i  r   r]  rx   r     rG  ry  )r   r   r   r  r  r  r  r  r  r  r  r  r8  r  )r  r+  r1  r  r   r;  r:  r   r   r3  r2  r   r   r    test_interp_complex_stress_tests3  s&    $$z0TestNPFunctions.test_interp_complex_stress_testsc           	   	   C   s$  t }tdd|}|   tdddg}tg }tg }| t}|||| W 5 Q R X d}| |t|j	 d}tdddg}tddg}| t}|||| W 5 Q R X d}| |t|j	 d}t
ddd}t
d}|  }|||| W 5 Q R X d	}| |t|j	 d}t
d}t
ddd}|  }|||| W 5 Q R X d
}| |t|j	 d}t
d}t
d}|  }|||| W 5 Q R X d}| |t|j	 d}t
dd tj}t
d}|  }|||| W 5 Q R X | |t|j	 d S )NTrT  rx   r?  r}  zarray of sample points is emptyz#fp and xp are not of the same size.r_  zxp must be 1Dzfp must be 1Dr  z:Cannot cast array data from complex dtype to float64 dtyperG  )r   r   rY  r   rQ  rV  r  rW  rU  rX  rd  r  r  r  r)  )	r  r+  r1  r   r   r   rO  r"  Zcomplex_dtype_msgr   r   r   test_interp_exceptionsN  sZ    










z&TestNPFunctions.test_interp_exceptionsc                 C   s   t }tdd|}t| j||}tddddg}ttj ddtjg}td	d
g}|||d}|| ttj ddtjg}tddddg}td	d
g}|||d}|| d S )NTrT  r   rx   r  r]  r  g?r  r  r   )r   r   r   r  r   rQ  r  )r  r+  r1  r  r   r   r   r  r   r   r   "test_interp_non_finite_calibration  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ddddg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 )NTrT  rx   r]  r   r  r   r=  r  rz  r  )r   r   r,  r   rd  r   r  rQ  r  r8  rg  r  r(  rO  r  r  r  )r  r+  r1  rb  r   ZypZincptsZdecptsZincresZdecresZinctgtZdectgtr   r   r  r   r   r   r   test_interp_supplemental_tests  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 )NTrT  r   rx   r=  rG  r  )r   r   r   r  r8  rg  )r  r+  r1  r   r   r  Zy0r   r   r   &test_interp_supplemental_complex_tests  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 )NTrT  r}  r]  r   r?  )r   r   r   r(  rO  r   r  r  r^  rd  r  r  r*  )r  r+  r1  ZdtypesZcomboZxp_dtypeZfp_dtypeZx_dtyper   r   r   r3  r2  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 ]8} t jdd	dgd
|  dV  t jdd	dgd|  dV  q`d S )Nz
2016-01-01ZNaTmsnsz2038-01-19T03:14:07"   )r  r   WDhr   r  r  usr  Zpsfsas{   iz<datetime64[%s]r   z<timedelta64[%s])r   r  r  rQ  )unitr   r   r   r.     s    z*TestNPFunctions.test_isnat.<locals>.valuesTrT  )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krzd tjfD ]}||d	< || qbn|| tjd
tj	d}d|i}d|jk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  dddgV  ddgV  dV  dV  dddgdddg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
            rG  r  Frx   r?  r}  r|  r{  r  r  c                 S   s   t  }| D ]}|| q
|S r   r
   r,   )r.   r&   rt  r   r   r   	make_list&  s    zITestNPFunctions.test_asarray.<locals>.input_variations.<locals>.make_list)r8  r  r  r  r  N)r   rQ  rd  r  r@  )r  r   r   r   r    s$    



z6TestNPFunctions.test_asarray.<locals>.input_variationsc                    s^   | f |}|r"  ||d k n8  ||d k	 tj||d    |j|d k d S )Nr&   r   )r  r   r8  r  r   )ZjittedZexpect_samer  Zreturnedr  r   r   check_pass_through3  s    
z8TestNPFunctions.test_asarray.<locals>.check_pass_throughTrT  r&   kwsr   r]  r   F)
r   r   r   r   r  r  r   rR  rd  r(  )	r  r  r  r+  r1  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   case1Y  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   case4d  s    z3TestNPFunctions.test_asarray_literal.<locals>.case4TrT  )r   r*  )
r  r  r  r  r  funcsr+  r1  r3  r2  r   r   r   test_asarray_literalW  s    z$TestNPFunctions.test_asarray_literalc                    sp      tddt  fdd}dd }dd }d	d
 }dd }||  ||  ||  ||  d S )NTrT  c              	      s4    t} |  W 5 Q R X dt|j d S )Nz?asarray support for List is limited to Boolean and Number types)rV  r   rW  rU  rX  )alistrO  r  r   r   test_rejectt  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 )Nrx   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&   rx   )r
   r   r,   )r  ru  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  rt  r   r   r   make_unicode_list  s    zWTestNPFunctions.test_asarray_rejects_List_with_illegal_dtype.<locals>.make_unicode_list)rY  r   r   )r  r  r  r  r  r  r   r  r   ,test_asarray_rejects_List_with_illegal_dtypep  s    


z<TestNPFunctions.test_asarray_rejects_List_with_illegal_dtypec                 C   s   dd }t }tdd|}| D ]`\}}|d krB||}||}n|||d}|||d}| || | t|jtj|j q t}tdd|}t	dddg}||}||}| || | t|jtj|j d S )	Nc                   s   s   t dddg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 )Nrx   r?  r}  r   )r   rQ  r(  r  r)  rR  r   r   r   r   r    s
    z-TestNPFunctions.test_asfarray.<locals>.inputsTrT  r   rx   r?  r}  )
r   r   r*  r  r   r  r   Zinexactr   rQ  )r  r  r+  r1  r-   r  r3  r2  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dddg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 q6t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   r7    s    z*TestNPFunctions.test_repeat.<locals>.checkrx   r  r   r?  r}  c                 s   s    | ]\}}t j||d V  qdS )r   Nr  )rB  r&   tr   r   r   	<genexpr>  s     z.TestNPFunctions.test_repeat.<locals>.<genexpr>r8  TrG  r  )r   r  r   r]  )r   r   r   r   r  rd  rQ  uint32r   uint64r  r(  rO  r)  rR  r  r   r*  )r  	np_pyfunc	np_nbfuncarray_pyfuncarray_nbfuncr7  Ztarget_numpy_valuesZtarget_numpy_typesZtarget_numpy_inputsZtarget_non_numpy_inputsrt  ZoneZtwor   r  r   test_repeat  sj    	

2zTestNPFunctions.test_repeatc           	      C   s  t }t|}t}t|}|   ||f||ffD ]\}}| t}|tdd W 5 Q R X | dt	|j
 | t}|tdd W 5 Q R X | dt	|j
 | t }|tdtddg W 5 Q R X | dt	|j
 | t"}|tdtdddg W 5 Q R X | dt	|j
 | t$}|tdtddddg W 5 Q R X | dt	|j
 | t}|tdddg W 5 Q R X | dt	|j
 d	D ],}| t |td| W 5 Q R X qq0d S )
Nrx   r  z#negative dimensions are not allowedr8  zIThe repeats argument must be an integer or an array-like of integer dtyper?  z(operands could not be broadcast togetherr=  )Tr&   1)r   r   r   rY  rV  r  r   r  rW  rU  rX  r   rQ  )	r  r  r  r  r  r+  r  rO  repr   r   r   test_repeat_exception  sV    $&(z%TestNPFunctions.test_repeat_exceptionc           
      C   s  t }tt }tdddgtdddgtdddggtdddgtdddgtd	d
dg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 ](\}}}| 	|||||||| q@t
}tt
}	| 	||||	|| d S )NFTrx   r?  r}  r  r=  r_  r  r  r  g.@r   r  y      @       @r]  )r=  r?  )r   r   r   rQ  r  r  rd  r  r,   r*  r   )
r  r  r  Z
test_casesr   r   r   r   Znp_pyfunc_defaultsZnp_nbfunc_defaultsr   r   r   test_select8  s\    

 $" $ " $$$(
zTestNPFunctions.test_selectc           	      C   s  t t}td}|   tdtdddg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 ]D\}}}}}| |}|||| W 5 Q R X | |t|j qd S )Nr]  TFrx   r  r  r}  r   z/condlist arrays must be of at least dimension 1r?  zHcondlist and choicelist elements must have the same number of dimensionsr=  r  z"condlist must be a List or a Tuplezdefault must be a scalarz%condlist arrays must contain booleansr  r  r_  z7list of cases must be same length as list of conditionsrl  r  z items of condlist must be arraysrC  z"items of choicelist must be arrays)r   r   r   rd  rY  rQ  r  r   r  r  r  r  r  rV  rW  rU  rX  )	r  r  r   r   r   r   Zexpected_errorZexpected_textrO  r   r   r   test_select_exceptionk  sd    
  (    &   & *
/z%TestNPFunctions.test_select_exceptionc           	   
      s   fdd}|t  |t |t |t t}tt}dD ]X}dD ]N}|||}|||}tslt dkr j	||ddd qD j	||ddd qDq<d	D ]6} 
t}||d
 W 5 Q R X  dt|j qdD ]6} 
t}|d| W 5 Q R X  dt|j qd S )Nc              
      st   | }t | }dD ]$}||}||} j||dd qdD ]4} t}|d W 5 Q R X  dt|j q:d S )Nr   rx   r=  r  r   )r!  r&   r  rG  r  M must be an integer)r   r*  rV  r   rW  rU  rX  )rG  r  r  r   r3  r2  r[  r  r   r   check_window  s    z4TestNPFunctions.test_windowing.<locals>.check_windowr  )r  r  g      ,@)ppc64leaarch64r   r?  r  r  r8  r  )r&   rG  r=  z beta must be an integer or float)r   r   r   r   r   r   r   platformmachiner*  rV  r   rW  rU  rX  )	r  r  r  r  r   r   r3  r2  r[  r   r  r   test_windowing  s<    

  

zTestNPFunctions.test_windowingc                 C   sT  t }tdd|}tdddgdddggtdddgdddggftdddgdddggd	ftjdddgtjd
tjdddgtjd
fdtddgtdddgftdddgtdddgdddggftdddgdddggtdddgftddddtdddfg}|D ]*\}}|||}|||}| || q$d S )NTrT  rx   r?  r}  r  r=  r_  r  rU  r   )r|  r\  rk  )	r   r   r   rQ  r  rO  rd  r  r*  r  r+  r1  pairsr   r   r3  r2  r   r   r   
test_cross  s:    +

zTestNPFunctions.test_crossc              	   C   s  t }tdd|}|   | t}|tdtd W 5 Q R X | dt|j	 | t}|t
dt
d W 5 Q R X | dt|j	 | d	t|j	 | t2}|td
dtdd d d d W 5 Q R X | dt|j	 | t2}|td
dtd
d d d d W 5 Q R X | dt|j	 | t$}|tdddgtdddg W 5 Q R X | dt|j	 d S )NTrT  r  r}  z)Incompatible dimensions for cross productrU  r  z Dimensions for both inputs is 2.z+`cross2d(a, b)` from `numba.np.extensions`.r  r?  r  r_  r  r!  )r  r?  zDimensions for both inputs is 2rx   r?  r=  Inputs must be array-like.)r   r   rY  rV  r  r   rd  rW  rU  rX  rQ  r  r   setrZ  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 )Nrx   r?  r  r=  r  r   )rU  r  rk  r_  r}  )
r   r   r  r   rQ  r  rO  rd  r  r*  r  r   r   r   test_cross2dE  s4    &

zTestNPFunctions.test_cross2dc              	   C   s   t t}|   | t}|tdtd W 5 Q R X | dt|j	 | t2}|t
ddt
dd d d d W 5 Q R X | dt|j	 | t }|tddgtd	d
g W 5 Q R X | dt|j	 d S )Nr|  r\  z,Incompatible dimensions for 2D cross productr_  r!  r  rx   r?  r  r=  r  )r   r  rY  rV  r  r   rQ  rW  rU  rX  rd  r  r   r  r  r   r   r   test_cross2d_exceptionss  s:    

z'TestNPFunctions.test_cross2d_exceptionsc           	      C   s~   dd }dd }t }tdd|}| D ] }||}||}| || q(| D ](\}}|||}|||}| || qPd S )Nc                   s   sx   t g V  t dV  t dV  t dddgV  t ddddgV  t dddt jdgV  t d	d
dgV  d S )Nr=  rx   r?  r}  r   r  r8  r  0Helloworld)r   rQ  r  r  r   r   r   r   r    s    z/TestNPFunctions.test_trim_zeros.<locals>.arraysc                   s   s   t dddddgdfV  t dddgdfV  t t jddddgd	fV  t ddddd
gdfV  t ddddgdfV  t dddgdfV  t dddgdfV  d S )Nr   rx   r?  ZFBBr  r  r  r'   r=  rS  Zabfr  ru   r  2)r   rQ  r  r   r   r   r   explicit_trim  s    z6TestNPFunctions.test_trim_zeros.<locals>.explicit_trimTrT  )r   r   r*  )	r  r  r  r+  r1  r-   r3  r2  r   r   r   r   test_trim_zeros  s    		


zTestNPFunctions.test_trim_zerosc              
   C   s  t ddddddddg}|t}|t}|||g}t jdd }|D ]}t|}| |||  qJt jd d }|D ] }t|dd}| |||  qzt jdd  }|D ] }t|d	d}| |||  q|D ]N}t j||j	d
}t|dd}	t
|	dkstt|dd}
t
|
dkstqt d}t|}| || t dddgt dddgt dddgfD ],}t jdd }t|}| |||  qpt d dd g}t|}| || t| }t|tstd S )Nr   rx   r?  r}  r  r  r'   )r   rH  r   r  rS  l            l            l            )r   rQ  r  r  complexZs_r   r*  Z
zeros_liker   rP  r  r  rp  r  r  )r  r&   r'   r  r.   Zslcr-   resZ_arrZres1Zres2r   r   r   test_trim_zeros_numpy  sH    



z%TestNPFunctions.test_trim_zeros_numpyc              	   C   s  |    tddt}| t$}|tdddgdddgg W 5 Q R X | d	t|j	 | t}|d W 5 Q R X | d
t|j	 | t}|dddh W 5 Q R X | d
t|j	 | t}|tdddgd W 5 Q R X | dt|j	 d S )NTrT  rx   r?  r}  r  r=  r_  zarray must be 1Dz#The first argument must be an arrayr   z$The second argument must be a string)
rY  r   r   rV  r   r   rQ  rW  rU  rX  r  r   r   r   test_trim_zeros_exceptions  s4    ( z*TestNPFunctions.test_trim_zeros_exceptionsc              
   C   s   t }tdd|}tdddgtdddgftdddgdddggtdddgftd	d
dddtdd
dgftd	dddtd	d
dddftdddgtdddgfg}|D ](\}}|||}|||}| || qd S )NTrT  rx   r?  r}  r  r=  r_  r   r^     r]  Fr  )r  r   r   rQ  rd  r  r*  )r  r+  r1  r  r&   r'   r3  r2  r   r   r   test_union1d  s,    

zTestNPFunctions.test_union1dc              	   C   s  t ddt}|   | t}|dtddg W 5 Q R X | dt|j	 | t}|tddgd W 5 Q R X | dt|j	 | t}|dd W 5 Q R X | dt|j	 | t$}|tdd	gtd
dg W 5 Q R X | dt|j	 | t$}|tddgtddg W 5 Q R X | dt|j	 | t$}|tddgtddg W 5 Q R X | dt|j	 | t$}|tddgtddg W 5 Q R X | dt|j	 d S )NTrT  r  rx   r?  z.The arguments to np.union1d must be array-likeZWorldrx  r  r&   r'   z/For Unicode arrays, arrays must have same dtyper  ru  foobarr  r  )
r   r  rY  rV  r   r   rQ  rW  rU  rX  r  r   r   r   test_union1d_exceptions6  sX    ((((z'TestNPFunctions.test_union1d_exceptionsc                 C   s   t }tdd|}|   tdddgtjftdddgfddddg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 )NTrT  rx   r?  r}  r  )rU  r  r   rk  r_  )
r  r   rY  r   rQ  r(  r  rd  r  r*  )r  r+  r1  r  pairr3  r2  r   r   r   test_asarray_chkfiniteh  s2    
"z&TestNPFunctions.test_asarray_chkfinitec              	   C   s  t ddt}|   | t}|d W 5 Q R X d}| |t|j | t}|t	
ddt	jdg W 5 Q R X | dt|j | t}|t	
ddt	jdg W 5 Q R X | dt|j | t}|t	
ddd	dgd
 W 5 Q R X | dt|j d S )NTrT  r?  z7The argument to np.asarray_chkfinite must be array-liker  r=  z#array must not contain infs or NaNsrx   r}  r(  z!dtype must be a valid Numpy dtype)r   r  rY  rV  r   rW  rU  rX  r  r   rQ  r  r  )r  r1  rO  r"  r   r   r   !test_asarray_chkfinite_exceptions  s    """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 )NTrT  c                   s   s:   t dV  t dddV  t ddddV  d S )Nr]  r?  r=  r  r  r}  r  r   r   r   r   r    s    z9TestNPFunctions.test_swapaxes_basic.<locals>.a_variations)r  r   r,  ndimr*  )	r  r+  r1  r  r&   r	  r
  r3  r2  r   r   r   test_swapaxes_basic  s    
z#TestNPFunctions.test_swapaxes_basicc              	   C   sB  t }tdd|}|   | t}|ddd W 5 Q R X | dt|j | t}|t	ddd W 5 Q R X | dt|j | t}|t	ddd W 5 Q R X | dt|j | t
}|t	dd	d W 5 Q R X | d
t|j | t
 }|t	ddddd W 5 Q R X | dt|j d S )NTrT  r  r   z'The first argument "a" must be an arrayr  z.The second argument "axis1" must be an integerz-The third argument "axis2" must be an integerrx   z)np.swapaxes: Argument axis1 out of boundsr  r?  r  z)np.swapaxes: Argument axis2 out of bounds)r  r   rY  rV  r   rW  rU  rX  r   rd  r  r  rZ  r   r   r   test_swapaxes_exception  s8    $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  )r}  rx   r  r?  c                 S   s   t j| |d dS r)   r   Ztake_along_axisr&   rt  r   r   r   	axis_none  s    z7TestNPFunctions.test_take_along_axis.<locals>.axis_nonerx   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   rd  r  r   rQ  r  r*  r  r,  r  ry  )r  r&   r	  r}   r  rt  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)r}  r  rx   )rx   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)rx   r  )r}  r?  r=  )r   r  Zintpr  r*  r  r  )r  r-   r  r  rt  r7  r3  actualr   r   r   !test_take_along_axis_broadcasting  s    

z1TestNPFunctions.test_take_along_axis_broadcastingc              	   C   s  t ddd}t jddgt jd}t jdt jd}dd	 }| t}|d
|| W 5 Q R X | dt	|j
 | t}|d|| W 5 Q R X | dt	|j
 | t}|d|| W 5 Q R X | dt	|j
 | t}|d d| W 5 Q R X | dt	|j
 | t}|d |d W 5 Q R X | dt	|j
 | t}|d |t ddg W 5 Q R X | dt	|j
 tdd }| t}|||d W 5 Q R X | dt	|j
 | t$}|d|t jddgt jd W 5 Q R X | dt	|j
 | t}|d || W 5 Q R X | dt	|j
 | t }|d|t jdt jd W 5 Q R X | dt	|j
 |   d S )Nr  r?  r  r   rx   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 boundsr  z"arr" must be an arrayr=  z"indices" must be an arrayr  r8  z#indices array must contain integersc                 S   s   t | ||S r   r  )r&   rt  r+   r   r   r   not_literal_axis8  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   rd  r  rQ  r  r  rV  r   rW  rU  rX  r   r  rY  )r  Zarr2dZindices_noner}   r  r[  r  r   r   r   test_take_along_axis_exceptions  sX    "
($z/TestNPFunctions.test_take_along_axis_exceptionsc           	      C   sR  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 dddgt ddd	gt dddgdd
dg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 )Nrx   r  r  r   r  r8  皙?r?  r}  r  rL  r  r]  )r  )r   r  r  r  rQ  r  r(  r  r   r   r*  )	r  r.   Znansr+  r1  valuer  r3  r2  r   r   r   test_nan_to_numQ  s4    
 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  r8  Fr  r  r  )r   r  r   rQ  r  r*  r  )r  r1  r   r3  Z	x_complexr   r   r   test_nan_to_num_copy_falsep  s    z*TestNPFunctions.test_nan_to_num_copy_falsec              	   C   s:   t t}|  }|d W 5 Q R X | dt|j d S )NZinvalid_inputz4The first argument must be a scalar or an array-like)r   r  r  rW  rU  rX  r  r   r   r    test_nan_to_num_invalid_argument}  s    
z0TestNPFunctions.test_nan_to_num_invalid_argumentc                 C   s`   t }t|}t}t|}dd }| D ]4\}}| |||| | |||||| q&d S )Nc                   s   sh   t ddgdfV  t ddgddggdfV  t dddfV  ddgdfV  t g dfV  d S )Nrx   r?  r}  r  r  r  r  r  r   r   r   r   r    s
    z3TestNPFunctions.test_diagflat_basic.<locals>.inputs)r  r   r  r*  )r  ro  Zcfunc1rp  r<  r  rB   ry   r   r   r   test_diagflat_basic  s    z#TestNPFunctions.test_diagflat_basicc              	   C   sH   t }t|}|   | t}|d W 5 Q R X | dt|j d S )Nr  #The argument "v" must be array-like)r  r   rY  rV  r   rW  rU  rX  rZ  r   r   r   test_diagflat1_exception  s    z(TestNPFunctions.test_diagflat1_exceptionc              	   C   s   t }t|}|   | t}|dd W 5 Q R X | dt|j | t}|ddgd W 5 Q R X | dt|j | t}|ddgd W 5 Q R X | dt|j d S )Nr  r?  r  rx   z#The argument "k" must be an integerr  )r  r   rY  rV  r   rW  rU  rX  rZ  r   r   r   test_diagflat2_exception  s$    z(TestNPFunctions.test_diagflat2_exception)N)T)r  r  r  __doc__r  no_pyobj_flagsr4  rS  r\  rk  rq  rw  ry  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.  r2  r3  r7  r=  r>  staticmethodr;  rM  rQ  rT  rW  rX  rY  r\  r]  r_  r`  ra  rb  rc  re  rf  rg  rh  ri  rm  rn  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+  r0  r4  r5  r6  r=  r?  r@  rA  rH  rI  rJ  rK  rV  rW  rY  rZ  r`  ra  rc  rd  unittestskipre  rh  ri  rl  rx  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  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 U
:*B(#;
.-U@
! %-1E)N*E:37/3A.%!9 $2,%Br  c                   @   sf   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edk 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  rG  attrsrK   r+  r1  r3  r2  attrr   r   r   r7    s    zTestNPMachineParameters.checkc                 C   s4   |j }|j }| j||f }tt|dd t d S )Nz<string>execr  )r  templateevalr&  locals)r  ZbasefunctyZtystrZbasestrZfuncstrr   r   r   create_harcoded_variant  s
    z/TestNPMachineParameters.create_harcoded_variant)rx   r  zNumPy < 1.24 requiredc                 C   s   d}|  t| d S )N)Zibetaitmachepr5  negepepsnegiexpZminexpZxminmaxexpZxmaxZirndZngrdepsilontinyZhuge	precision
resolution)r7  rN   )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 5 Q R X d}| |t|j |  " t
ddt}|t d W 5 Q R X d S )N)r5  r0  r1  r.  r  r2  r/  ZnexpZnmantr5  r6  r4  bitsrx   TrT  r  z(Unknown attribute 'machar' of type finfor  )r   r(  rO  r)  rR  r7  ra   r,  rV  r   r   rb   rW  rU  rX  r  r   )r  r	   r%  r+  hc_funcr[  r1  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 5 Q R X d S )N)r|  r  r8  rx   TrT  r  )r   r  r  r   r  ri  Zuint16r  r  r7  r`   r,  r  r   rO  )r  r	   r%  r+  r9  r1  r   r   r   
test_iinfo  s     
z"TestNPMachineParameters.test_iinfozNeeds NumPy < 1.24c              	   C   sf   d}t jdd(}t jd|td tdd }|  W 5 Q R X | 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   rM   r5  r   r   r   r   <lambda>      zJTestNPMachineParameters.test_np_MachAr_deprecation_np122.<locals>.<lambda>rx   z`np.MachAr` is deprecatedr   )	warningscatch_warningsfilterwarningsr   r   r  rP  rW  rU  )r  r"  r;   rS  r   r   r    test_np_MachAr_deprecation_np122   s    	z8TestNPMachineParameters.test_np_MachAr_deprecation_np122N)r  r  r  r(  r7  r,  r   ZskipIfr   r7  r:  r;  Z
skipUnlessr   Zrun_test_in_subprocessrE  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   OKrA  )r   r   rt  strip)r  coderesulterrorr   r   r   test_unsafe_import_in_registry  s    	z2TestRegistryImports.test_unsafe_import_in_registryN)r  r  r  rK  r   r   r   r   rF    s   rF  __main__)Nr   )N)N)rX   rY   F)rm   )rm   )rx   )r   )r   )r   )r   )N)r   )Nr   )r   )r   )N)r   N)r   )r   )r   )N)r   N)r   )NF)NTFN)NT)NN)rX   rY   F)NN)r   )r   )N)Tr  )r   )r  r  r  	functoolsr   r   rB  textwrapr   Z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   r4   r6   r8   r<   r>   r@   rF   rH   rI   rL   rN   rO   rP   rQ   rR   rS   rT   rW   rZ   r_   r`   ra   rb   rd   rf   rg   rl   rr   rt   ru   rw   rz   r{   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rO  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#  rF  r  mainr   r   r   r   <module>   s\  









                                          ]
