o
    8ήcj                    @   sJ  d dl Z d dlZd dlZd dlmZ d dl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mZ d d
lmZ d dlmZ d dlm Z m!Z!m"Z"m#Z# d dl$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 Z-dd Z.dd Z/d d! Z0d"d# Z1d$d% Z2dd&d'Z3d(d) Z4d*d+ Z5d,d- Z6d.d/ Z7d0d1 Z8d2d3 Z9d4d5 Z:d6d7 Z;d8d9 Z<d:d; Z=d<d= Z>dd>d?Z?dd@dAZ@dBdC ZAdDdE ZBdFdG ZCdHdI ZDdJdK ZEdLdM ZFdNdO ZGdPdQ ZHddSdTZIdUdV ZJddXdYZKddZd[ZLdd\d]ZMd^d_ ZNd`da ZOdbdc ZPddddeZQddfdgZRddhdiZSdjdk ZTddldmZUdndo ZVddpdqZWddrdsZXddtduZYdvdw ZZddxdyZ[dzd{ Z\dd|d}Z]d~d Z^dddZ_dddZ`dddZadd ZbdddZcdddZddd ZedddZfdddZgdddZhdd Zidd Zjdd ZkejlfddZmdd Zndd Zodd Zpdd Zqdd Zrdd ZsdddZtdddZudd Zvdd Zwdd ZxdddZydd Zzdd Z{dd Z|dd Z}dd Z~dd ZddĄ ZddƄ ZddȄ ZdddʄZdd̄ Zdd΄ ZG ddЄ de"e ZG dd҄ de Zedkr#e$  dS dS )    N)partial)Flags)jitnjittypeof)types)ListDict)numpy_version)TypingErrorNumbaDeprecationWarning)IS_WIN32	IS_32BITS)pysignature)cross2d)TestCaseCompilationCacheMemoryLeakMixin
needs_blasTc                 C   
   t | S N)npsincx r   D/tmp/pip-target-vg8gfxp4/lib/python/numba/tests/test_np_functions.pyr         
r   c                 C   r   r   r   angler   r   r   r   angle1!   r   r    c                 C      t | |S r   r   )r   degr   r   r   angle2%      r#   c                 C   r!   r   )r   array_equalabr   r   r   r%   )   r$   r%   c                 C   r!   r   )r   intersect1dr&   r   r   r   r)   -   r$   r)   c                 C      t j| ||dS Naxis)r   append)arrvaluesr-   r   r   r   r.   1      r.   c                 C      t j| |dS r+   )r   count_nonzero)r/   r-   r   r   r   r3   5      r3   c                 C   r!   r   )r   delete)r/   objr   r   r   r5   9   r$   r5   c                 C   r   r   r   diffr'   r   r   r   diff1=   r   r:   c                 C   r!   r   r7   )r'   nr   r   r   diff2A   r$   r<   c                 C   r   r   r   bincountr9   r   r   r   	bincount1E   r   r?   c                 C   r2   )Nweightsr=   )r'   wr   r   r   	bincount2I   r4   rC   c                 C      t | ||S r   r=   )r'   rB   	minlengthr   r   r   	bincount3M   r4   rF   c                 C   r!   r   r   searchsortedr'   vr   r   r   rH   Q   r$   rH   c                 C      t j| |ddS )NleftsiderG   rI   r   r   r   searchsorted_leftU   r1   rO   c                 C   rK   )NrightrM   rG   rI   r   r   r   searchsorted_rightY   r1   rQ   c                  G   
   t j|  S r   )r   digitizeargsr   r   r   rS   ]   r   rS   c                  G   rR   r   )r   	histogramrT   r   r   r   rV   a   r   rV   c                  G   s   t  S r   )r   MachArrT   r   r   r   machare      rX   c                 C   r   r   )r   	iscomplexr   r   r   r   rZ   i   r   rZ   c                 C   r   r   )r   iscomplexobjr   r   r   r   r[   m   r   r[   c                 C   r   r   )r   isscalarr   r   r   r   r\   q   r   r\   c                 C   r   r   )r   isrealr   r   r   r   r]   u   r   r]   c                 C   r   r   )r   	isrealobjr   r   r   r   r^   y   r   r^   c                 C   r!   r   )r   isneginfr   outr   r   r   r_   }   r$   r_   c                 C   r!   r   )r   isposinfr`   r   r   r   rb      r$   rb   c                 C   r   r   )r   isnatr   r   r   r   rc      r   rc   c                  G   rR   r   )r   iinforT   r   r   r   rd      r   rd   c                  G   rR   r   )r   finforT   r   r   r   re      r   re   c                  G   s   t j|  jS r   )r   re   rX   rT   r   r   r   finfo_machar   r$   rf   c                 C   r   r   r   fliplrr9   r   r   r   rh      r   rh   c                 C   r   r   r   flipudr9   r   r   r   rj      r   rj   c                 C   r   r   )r   flipr9   r   r   r   rk      r   rk   c                 C   r!   r   r   logspace)startstopr   r   r   	logspace2   r$   rp   2   c                 C   r*   )N)numrl   )rn   ro   rr   r   r   r   	logspace3   r1   rs   c                 C   r   r   r   rot90r9   r   r   r   ru      r   ru      c                 C   r!   r   rt   )r'   kr   r   r   rot90_k   r$   rx   c                 C   r*   r+   )r   array_splitr'   indicesr-   r   r   r   ry      r1   ry   c                 C   r*   r+   )r   splitrz   r   r   r   r|      r1   r|   c                 C   r!   r   )r   	correlaterI   r   r   r   r}      r$   r}   c                 C   r!   r   )r   convolverI   r   r   r   r~      r$   r~   c                 C   r   r   r   triNr   r   r   tri_n   r   r   c                 C   r!   r   r   r   Mr   r   r   tri_n_m   r$   r   c                 C   r!   r   r   r   rw   r   r   r   tri_n_k   r$   r   c                 C   rD   r   r   r   r   rw   r   r   r   	tri_n_m_k   r4   r   c                 C   r   r   r   trilmr   r   r   tril_m   r   r   c                 C   r!   r   r   r   rw   r   r   r   tril_m_k   r$   r   c                 C   r   r   r   tril_indicesr;   r   r   r   tril_indices_n   r   r   c                 C   r!   r   r   r;   rw   r   r   r   tril_indices_n_k   r$   r   c                 C   r2   Nr   r   r;   r   r   r   r   tril_indices_n_m   r4   r   c                 C   rD   r   r   r;   rw   r   r   r   r   tril_indices_n_k_m   r4   r   c                 C   r   r   r   tril_indices_fromr/   r   r   r   tril_indices_from_arr   r   r   c                 C   r!   r   r   r/   rw   r   r   r   tril_indices_from_arr_k   r$   r   c                 C   r   r   r   triur   r   r   r   triu_m   r   r   c                 C   r!   r   r   r   r   r   r   triu_m_k   r$   r   c                 C   r   r   r   triu_indicesr   r   r   r   triu_indices_n   r   r   c                 C   r!   r   r   r   r   r   r   triu_indices_n_k   r$   r   c                 C   r2   r   r   r   r   r   r   triu_indices_n_m  r4   r   c                 C   rD   r   r   r   r   r   r   triu_indices_n_k_m  r4   r   c                 C   r   r   r   triu_indices_fromr   r   r   r   triu_indices_from_arr	  r   r   c                 C   r!   r   r   r   r   r   r   triu_indices_from_arr_k  r$   r   Fc                 C   rD   r   )r   vanderr   r   
increasingr   r   r   r     r4   r   c                 C   r!   r   )r   	partition)r'   kthr   r   r   r     r$   r   c                 C      t | ||||S r   )r   cov)r   yrowvarbiasddofr   r   r   r        r   c                 C   rD   r   )r   corrcoefr   r   r   r   r   r   r     r4   r   c                 C   rD   r   )r   ediff1daryto_endto_beginr   r   r   r   !  r4   r   c                 C   r!   r   )r   roll)r'   shiftr   r   r   r   %  r$   r   c                 C   r   r   r   asarrayr9   r   r   r   r   )  r   r   c                 C   r2   Ndtyper   r'   r   r   r   r   asarray_kws-  r4   r   c                 C   r2   r   r   asfarrayr   r   r   r   r   1  r4   r   c                 C   r   r   r   r9   r   r   r   asfarray_default_kwarg5  r   r   c                 C   r!   r   )r   extract	conditionr/   r   r   r   r   9  r$   r   c                 C   r   r   r   trapzr   r   r   r   np_trapz=  r   r   c                 C   r!   r   r   r   r   r   r   r   
np_trapz_xA  r$   r   c                 C   r2   )Ndxr   r   r   r   r   r   np_trapz_dxE  r4   r   c                 C   rD   r   r   r   r   r   r   r   r   np_trapz_x_dxI  r4   r   h㈵>:0yE>c                 C   r   r   )r   allclose)r'   r(   rtolatol	equal_nanr   r   r   np_allcloseM  r   r   c                 C   r*   )Nr-   rA   )r   average)r'   r-   rA   r   r   r   
np_averageQ  r1   r   c                 C   rD   r   )r   interpr   xpfpr   r   r   r   U  r4   r   c                 C   r!   r   )r   repeatr'   repeatsr   r   r   	np_repeatY  r$   r   c                 C   s   t | |S r   )r   r   r   r   r   r   r   array_repeat]  r1   r   c                 C   r*   )N)defaultr   select)condlist
choicelistr   r   r   r   	np_selecta  r1   r   c                 C   r!   r   r   )r   r   r   r   r   np_select_defaultse  r$   r   c                 C   r   r   )r   bartlettr   r   r   r   np_bartletti  r   r   c                 C   r   r   )r   blackmanr   r   r   r   np_blackmanm  r   r   c                 C   r   r   )r   hammingr   r   r   r   
np_hammingq  r   r   c                 C   r   r   )r   hanningr   r   r   r   
np_hanningu  r   r  c                 C   r!   r   )r   kaiser)r   betar   r   r   	np_kaisery  r$   r  c                 C   r!   r   )r   crossr&   r   r   r   np_cross}  r$   r  c                 C   r   r   rg   r9   r   r   r   flip_lr  r   r  c                 C   r   r   ri   r9   r   r   r   flip_ud  r   r  c                 C   r!   r   )r   asarray_chkfiniter   r   r   r   np_asarray_chkfinite  r$   r
  c                 C   s   || v S r   r   )r'   keyr   r   r   array_contains  rY   r  c                 C   rD   r   )r   swapaxes)r'   a1a2r   r   r   r    r4   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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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&e'(e)dHk dIdJdK Z*dLdM Z+dNdO Z,dJdPdQZ-dRdS Z.dTdU Z/dVdW Z0dXdY Z1dZd[ Z2d\d] Z3d^d_ Z4d`da Z5dbdc Z6e7ddde Z8dfdg Z9dhdi Z:djdk Z;dldm Z<dndo Z=dpdq Z>drds Z?dtdu Z@dvdw ZAdKdydzZBd{d| ZCd}d~ ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWeXdd ZYdd ZZeXdd Z[eXdd Z\eXdd Z]eXdd Z^dd Z_eXdd Z`eXdd ZaeXdd ZbeXdd Zcdd Zde'(e)dkddd 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}e'~ddd Zdd Zdd Zdd Zdd Zdd Zdd Zd d Zdd Zdd Zdd Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Z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  ZS (L  TestNPFunctionsz,
    Tests for various Numpy functions.
    c                    s(   t t|   t | _tjd| _d S )N*   )	superr  setUpr   ccacher   randomRandomStaterndself	__class__r   r   r    s   zTestNPFunctions.setUpNFc	              
   K   s   t ||D ]h\}
}|du rdg }}t ||D ]U\}}| jj||
f| |d}|j}||g|R  }||g|R  }z|
j}W n tyJ   |
}Y nw |tjtjfv rUdnd}d||f }| j	||f||||d|	 qqdS )a  
        Runs tests for a unary function operating in the numerical real space.

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

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

        Nr   )flagssingledoublezfor input %r with prec %r)precmsgignore_sign_on_zeroabs_tol)
zipr  compileentry_pointr   AttributeErrorr   float32	complex64assertPreciseEqual)r  pyfuncx_typesx_valuesr  func_extra_typesfunc_extra_argsr!  r"  kwargstxvxxtypesxargscrcfuncgotexpectedscaltyr  r   r   r   r   	run_unary  s<   


zTestNPFunctions.run_unaryc                    s   d dt  fdd}g d}tjtjgt|d  }||| tj|tjdg}dd	 |D }||| g d
}tjtjgt|d  }|||dd tj|tjdg}dd	 |D }|||dd dS )zv
        Tests the sinc() function.
        This test is purely to assert numerical computations are correct.
        Tepsc                    s    j | |f d| d S )N)r!  r"  )r9  )r+  r,  r/  isozr*  r  tolr   r   check  s
   
z(TestNPFunctions.test_sinc.<locals>.check)
      ?                           ?         g#B;g#B   r   c                 S      g | ]}t |qS r   r   .0rJ   r   r   r   
<listcomp>      z-TestNPFunctions.test_sinc.<locals>.<listcomp>)      ?                                      rP                ?y                    ?                            ?      ?                  @      @            y#B;        y#B        y        #B;y        #B)ulpsc                 S   rH  r   rI  rJ  r   r   r   rL    rM  N)	r   r   r'  float64lenr   arrayr(  
complex128)r  r>  r,  r+  r   r;  r   	test_sinc  s    	

zTestNPFunctions.test_sincc                 C   N   dd }t }tdd|}| D ]\}}|||}|||}| || qd S )Nc                  s   s8   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
   rq            TFrG  r      )sizer   rE     )r   aranger   r[  r  seedrandviewr\  randintuint8)a_0k_0a_1k_1single_val_ak_ink_out	empty_arrbool_arr	float_arrrand_k	present_k
complx_arruint_arrr   r   r   arrs	  s>   













z+TestNPFunctions.test_contains.<locals>.arrsTnopython)r  r   r)  )r  rz  r*  r5  r/   r  r7  receivedr   r   r   test_contains  s   -

zTestNPFunctions.test_containsc                    s   t  t fdd}g d}tjtjgt|d d  }||| tj|tjdg}dd |D }||| g d	}tjtj	gt|d d  }||| t|}tjtj	g}||| d
S )zw
        Tests the angle() function.
        This test is purely to assert numerical computations are correct.
        c                    s@     | | ddg}tjfgt| }j | |||d d S )NTF)r-  r.  )r9  r   bool_rZ  )r+  r,  xtra_values
xtra_typespyfunc1pyfunc2r  r   r   r>  H  s   

z)TestNPFunctions.test_angle.<locals>.check)r?  r@  rA  rB  rC  rD  rE  rF  rG  rv   r   c                 S   rH  r   rI  rJ  r   r   r   rL  Y  rM  z.TestNPFunctions.test_angle.<locals>.<listcomp>)rN  rO  rP  rP  rQ  y             rR  rS  rT  rU  rV  rW  N)
r    r#   r   r'  rY  rZ  r   r[  r(  r\  )r  r  r>  r,  r+  r   r  r   
test_angle@  s   



zTestNPFunctions.test_anglec                 C   r^  )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 )Nrv   rG  r_  rE     rv   rG     r  )rG  rG  )r  rG  )TTTF)TrG  )Trv   )Fr   r   r[  rf  reshaper   r   r   r   arraysh  s    

z0TestNPFunctions.test_array_equal.<locals>.arraysTr{  )r%   r   r)  r  r  r*  r5  r/   r6   r7  r6  r   r   r   test_array_equalg  s   

z TestNPFunctions.test_array_equalc                 C   sj   t }tdd|}| t}|tdddd  W d    n1 s%w   Y  | dt|j	 d S )NTr{     r     z3Both arguments to "array_equals" must be array-like)
r%   r   assertRaisesr   r   rf  r  assertInstr	exceptionr  r*  r5  raisesr   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  g dddgfV  ddgddgfV  g dg dfV  d S )Nrv   rG  rv   rG  rG  r  r   r   r   r   r   r    s   
z0TestNPFunctions.test_intersect1d.<locals>.arraysTr{  )r)   r   r   r[  r)  )r  r  r*  r5  r'   r(   r7  r6  r   r   r   test_intersect1d  s   



z TestNPFunctions.test_intersect1dc                 C   r^  )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  rE  r  r   rv   )r   r[  zerosrf  r  r   r   r   r   r    s   z2TestNPFunctions.test_count_nonzero.<locals>.arraysTr{  )r3   r   r)  )r  r  r*  r5  r/   r-   r7  r6  r   r   r   test_count_nonzero  s   

z"TestNPFunctions.test_count_nonzeroc           	      C   sT   dd }t }tdd|}| D ]\}}}||||}||||}| || qd S )Nc                  s   s    dV  t ddd fV  t dt dd fV  t dddt dd fV  t g dg dgt g dgd	fV  t g dg dg} | | d
fV  d S )N)rG  rG  Nr_  r  rE  rG  r  r  rE  ra        	   r   rv   )r   rf  r  r[  r   r   r   r   r    s    *z.TestNPFunctions.test_np_append.<locals>.arraysTr{  )r.   r   r)  )	r  r  r*  r5  r/   r6   r-   r7  r6  r   r   r   test_np_append  s   	zTestNPFunctions.test_np_appendc                 C   s  t }tdd|}tg dg dg}tg dg}d}| t}|d || W d    n1 s4w   Y  | dt|j | t}||d | W d    n1 sXw   Y  | dt|j | t}|||d	d
 W d    n1 s}w   Y  | dt|j d S )NTr{  r  r  r  r   z+The first argument "arr" must be array-likez/The second argument "values" must be array-likerA  r,   z,The third argument "axis" must be an integer)	r.   r   r   r[  r  r   r  r  r  )r  r*  r5  r/   r0   r-   r  r   r   r   test_np_append_exceptions  s4   z)TestNPFunctions.test_np_append_exceptionsc                 C   r^  )Nc                   s   s    g ddfV  g dddgfV  t ddfV  t ddfV  t dg dfV  t dg dfV  t ddd	d
dfV  t ddd	d
g dfV  g dtdddfV  t dtdfV  d S )Nrv   rG  r  r  rE  r  rG  r_  )r  rE  ra  )rG  r  r  rE  r  r  rE  )rE  r     r  rv   rG  r  r  rv   )r   rf  r  slicer   r   r   r   r    s   z+TestNPFunctions.test_delete.<locals>.arraysTr{  )r5   r   r)  r  r   r   r   test_delete  s   

zTestNPFunctions.test_deletec                 C   sH  t }tdd|}|   | t}|ddgd W d    n1 s$w   Y  | dt|j | t}|t	dg d W d    n1 sLw   Y  | dt|j | t}|dd	 W d    n1 sow   Y  | d
t|j | t
}|ddgd	 W d    n1 sw   Y  | dt|j d S )NTr{  rv   rG  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))r5   r   disable_leak_checkr  r   r  r  r  r   rf  
IndexErrorr  r   r   r   test_delete_exceptions  s>   z&TestNPFunctions.test_delete_exceptionsc                 c   sD    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  rG  r  Nr   rf  r  r  r'   r(   cr   r   r   diff_arrays%  s   

zTestNPFunctions.diff_arraysc                 C   s|   t }tdd|}|  D ]}||}||}| || qtd}|   || W d    d S 1 s7w   Y  d S )NTr{  r  )r:   r   r  r)  r   r[  assertTypingError)r  r*  r5  r/   r7  r6  r'   r   r   r   
test_diff10  s   


"zTestNPFunctions.test_diff1c              	   C   sp   t }tdd|}|  D ](}|jd }dddd|d ||d dfD ]}|||}|||}| || q"qd S )	NTr{  r   rv   rG  r  i  )r<   r   r  shaper)  )r  r*  r5  r/   rd  r;   r7  r6  r   r   r   
test_diff2=  s   
 

zTestNPFunctions.test_diff2c              	   C   s   t }tdd|}|   td}|   ||d W d    n1 s&w   Y  td}dD ]%}| t}||| W d    n1 sIw   Y  | 	dt
|j q2d S )NTr{  r  rv   r_  )r  izorder must be non-negative)r<   r   r  r   r[  r  rf  r  
ValueErrorr  r  r  )r  r*  r5  r/   r;   r  r   r   r   test_diff2_exceptionsG  s   


z%TestNPFunctions.test_diff2_exceptionsc                 C   sH   dd }t }tdd|}| D ]}||}||}| ||| qd S )Nc                   s   sT    dV  t dgV  dV  dV  dV  tdV  t dV  dV  dV  d V  d S )	Nr  )r                @numbar_  i90  gV-@T)r   r   intint16r   r   r   r   r0   [  s   

z-TestNPFunctions.test_isscalar.<locals>.valuesTr{  )r\   r   assertEqualr  r0   r*  r5  r   r7  r6  r   r   r   test_isscalarZ  s   
zTestNPFunctions.test_isscalarc                 C   s   dd }t dddd }ttg}|D ]L}t dd|}| D ]6}||}||}| || ||d|}	||d|}
| |	|
 ||d|}||d|}| || q| t|jd qd S )	Nc                   s   s(    dV  dV  t g dV  dV  d S )Nrv   rN  )r  rN  Thello worldr   r   r   r   r   r0   o  s
   
z4TestNPFunctions.test_isobj_functions.<locals>.valuesTr{  c                 S   s   |r| nd }||S r   r   )r   condr5  r   r   r   r   optional_fnu  s   z9TestNPFunctions.test_isobj_functions.<locals>.optional_fnFr  )r   r[   r^   r  py_funcrZ  
signatures)r  r0   r  pyfuncsr*  r5  r   r7  r6  expected_optionalgot_optionalexpected_nonegot_noner   r   r   test_isobj_functionsn  s$   

z$TestNPFunctions.test_isobj_functionsc                 C   sT   dd }t tg}|D ]}tdd|}| D ]}||}||}| || qq
d S )Nc                   s   sh    t g dV  t g dV  dV  dV  dV  dV  dV  t dd	gdd
gddgddggV  d S )N)      ?      ?rN        @r  rG                 @r  r  y              (@      ?      @y      $@        )r  y       @        rv   rG  r  rE  ra  r  r  r   r[  r   r   r   r   r0     s   (z7TestNPFunctions.test_is_real_or_complex.<locals>.valuesTr{  )rZ   r]   r   r)  )r  r0   r  r*  r5  r   r7  r6  r   r   r   test_is_real_or_complex  s   

z'TestNPFunctions.test_is_real_or_complexc           	      C   s\   dd }t tg}|D ]!}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 )NrA  rv   r   r  r  )r   NINFinfPINFr   r  boolemptyr   r   r   r   r0     s   ,z7TestNPFunctions.test_isneg_or_ispos_inf.<locals>.valuesTr{  )r_   rb   r   r)  )	r  r0   r  r*  r5  r   ra   r7  r6  r   r   r   test_isneg_or_ispos_inf  s   

z'TestNPFunctions.test_isneg_or_ispos_infc                 C   s:   g d}t g d}| jjddddt j}|||fS )z7
        Some test sequences for np.bincount()
        )rv   rG  rE  rG  r  r`  )rE  r  r  rE  r   d   i,  rd  )r   r[  r  rj  astypeint8r  r   r   r   bincount_sequences  s   
z"TestNPFunctions.bincount_sequencesc                 C   s@   t }tdd|}|  D ]}||}||}| || qd S NTr{  )r?   r   r  r)  )r  r*  r5  seqr7  r6  r   r   r   test_bincount1  s   zTestNPFunctions.test_bincount1c                 C   sf   t }tdd|}|   | t}|ddg W d    n1 s#w   Y  | dt|j d S )NTr{  rG  r  #first argument must be non-negative)r?   r   r  r  r  r  r  r  r  r   r   r   test_bincount1_exceptions  s   z)TestNPFunctions.test_bincount1_exceptionsc                 C   sp   t }tdd|}|  D ](}dd |D }|t||t|fD ]}|||}|||}| || q"qd S )NTr{  c                 S   s   g | ]	}t |d  qS rG  )mathsqrt)rK  r   r   r   r   rL    s    z2TestNPFunctions.test_bincount2.<locals>.<listcomp>)rC   r   r  r   r[  r)  )r  r*  r5  r  rB   rA   r7  r6  r   r   r   test_bincount2  s   

zTestNPFunctions.test_bincount2c                 C   s   t }tdd|}|   | t}|ddgddg W d    n1 s&w   Y  | dt|j | t}|ddgdg W d    n1 sLw   Y  | dt|j d S )NTr{  rG  r  r   r  z+weights and list don't have the same length)rC   r   r  r  r  r  r  r  r  r   r   r   test_bincount2_exceptions     z)TestNPFunctions.test_bincount2_exceptionsc                 C   sv   t }tdd|}|  D ]+}t|}||d fD ]}||d |}||d |}| t|t| | || qqd S )NTr{  rG  )rF   r   r  maxr  rZ  r)  )r  r*  r5  r  a_maxrE   r7  r6  r   r   r   test_bincount3  s   zTestNPFunctions.test_bincount3c                 C   s   t }tdd|}|   | t}|ddgddg W d    n1 s&w   Y  | dt|j | t}|ddgd d W d    n1 sLw   Y  | d	t|j d S )
NTr{  rG  r  r   r     &   z 'minlength' must not be negative)rF   r   r  r  r  r  r  r  r  r   r   r   test_bincount3_exceptions  r  z)TestNPFunctions.test_bincount3_exceptionsc                    sL  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 ]}||| q?||d	fD ]}||| qN||t| q;tt|t	d
gd  d }tdd }|t|fD ]"}|D ]}||| q||d	fD ]}||| q||t| q{dd }tdd| 
   ddgd W d    n1 sw   Y  ddd}tdd| 
   ddgddd W d    n1 sw   Y  tg d}tddgddgddgddgg}||| tg d}tddgddgddgg}||| d S )NTr{  c                    sd   | |} | |} || | |}| |} || | |}| |} || d S r   r)  )r'   rJ   r7  r6  r5  
cfunc_leftcfunc_rightr*  pyfunc_leftpyfunc_rightr  r   r   r>    s   





z0TestNPFunctions.test_searchsorted.<locals>.checkrE  rG  r`  rv   r  rE  nanr         @rC  c                 S   rK   )NnonsenserM   rG   rI   r   r   r   bad_sideD  r1   z3TestNPFunctions.test_searchsorted.<locals>.bad_siderL   c                 S   r*   )NrM   rG   )r'   rJ   rN   r   r   r   nonconst_sideK  r1   z8TestNPFunctions.test_searchsorted.<locals>.nonconst_siderP   rM   )rv   rG  r   r  ra  r   r  )	r  rv   r  rG  r   r  r  ra  r  r_  r  )rL   )rH   r   rO   rQ   r   rf  listr  rY  floatr  r[  )r  r>  binsr0   r'   rJ   r  r  r   r  r   test_searchsorted  sd    



z!TestNPFunctions.test_searchsortedc                    sf  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s0J j| tg d}tddd	dtdtdg}tddd	dtdtdgtdgd  }|||g}||dg}|D ]}|	  |D ]}	||	| ||	|d d d  qxqp|D ]}|	  dD ]}
||||
 |||d d d |
 qq|t
|| d S )NTr{  c                     s    |  } |  } || d S r   r  )rU   r7  r6  r5  r*  r  r   r   r>  k  s   z,TestNPFunctions.test_digitize.<locals>.checkr   Gz?rv   皙@r  r  r  r        #@r  z-infr  r  rv   r  r  r  r  r_  r  r  r  )rS   r   r   rY  r  rZ  r  shuffler  sortr  )r  r>  r0   bins1bins2bins3all_binsxsr   r   rP   r   r  r   test_digitizeg  s8   

zTestNPFunctions.test_digitizec                    s`   t tdd  fddfdd}td}t|dks$J j| || d S )	NTr{  c                     s:   |  \}} |  \}} || j ||ddd d S )Nr  rG  r  rX  r  )rU   pyhistpybinschistcbinsr  r   r   r>    s   z-TestNPFunctions.test_histogram.<locals>.checkc                    sJ   t g d} | |  | d|  | d  | dd  |  d S )Nr  r  r  )r?  g      +@)r   rY  r  )r0   r   )r>  r   r   check_values  s   

z4TestNPFunctions.test_histogram.<locals>.check_values)r   r  rv   r  r  r  r  r  r  g     @E@r@  rB  r  )rV   r   r   rY  rZ  r  r  )r  r  r0   r   )r5  r>  r*  r  r   test_histogram  s   
zTestNPFunctions.test_histogramc              	   C   sP  t dd|}d}tjtjtjtjtjtjtjg}t	
||||D ]D\}}}}tj||d}	tj||d}
t|tjrE|	d|	  |}	t|tjrU|
d|
  |}
||	|
}||	|
}| || q!tddd}td}||f||ffD ])\}}| t}||| W d    n1 sw   Y  d	}| |t|j q|d S )
NTr{  )rv   rG  r  r  r   rQ  r  r  r  zonly supported on 1D arrays)r   r   r  int32int64r'  rY  r(  r\  	itertoolsproductrf  
issubdtypecomplexfloatingr  r)  r  r  r   r  r  r  )r  r*  r5  lengthsdtsdt1dt2r;   r   r'   rJ   r7  r6  _a_br   r   r  r   r   r   r   _test_correlate_convolve  s0   


z(TestNPFunctions._test_correlate_convolvec                 C   s~   |  t tdk r;tjdd}td}tddt}||f||f||ffD ]\}}t||}|||}| || q&d S d S )Nrv      r   r  rE  Tr{  )r"  r}   r
   r   onesrf  r   r)  )r  r   r!  r5  r   r   r7  r6  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 ]7\}}| t}||| W d    n1 s7w   Y  t|dkrL| dt	|j
 q| dt	|j
 qd S )	Nr%  r&  rE  Tr{  r   z'a' cannot be emptyz'v' cannot be empty)r  r   r'  rf  r   r  r  rZ  r  r  r  )r  fnr   r!  r5  r   r   r  r   r   r   #_test_correlate_convolve_exceptions  s   
z3TestNPFunctions._test_correlate_convolve_exceptionsr#  zNumPy > 1.17 requiredc                 C      |  t d S r   )r*  r}   r  r   r   r   test_correlate_exceptions  s   z)TestNPFunctions.test_correlate_exceptionsc                 C   r+  r   )r"  r~   r  r   r   r   test_convolve  r4   zTestNPFunctions.test_convolvec                 C   r+  r   )r*  r~   r  r   r   r   test_convolve_exceptions  r4   z(TestNPFunctions.test_convolve_exceptionsc                 C   s0   |di |}|di |}| j |||d d S )Nr"  r   r  )r  r*  r5  paramsr"  r7  r6  r   r   r   _check_output  s   zTestNPFunctions._check_outputc                    s$  t }tdd|}t| j||  fdd}|tg d |tdd  |tdd	d
 |tdtjtj	tj	 g |tg  |tdd
d  |tdgd
 dgd   tj
tjtjtjfD ]}|tjd	|d qj|g d |d |d |d |d |d d S )NTr{  c                    s   g d}ddg}d| i} | |D ]}| |d} | q|D ]}| |d} | q |D ]}|D ]}| ||d} | q2q.d S )N)Nr   rv   rG  r  r  TFr   )r   r   )r   r   r   r   )r   	n_choicesincreasing_choicesr0  r;   r   r1  r   r   _check  s    




z1TestNPFunctions.test_vander_basic.<locals>._check)rv   rG  r  rE  r        %@r  r_  rE  333333?rF  333333?Fr  r   )r   rv   rG  r  r  rE  ra  r  )rA  r?  r  r   )r  g-@A`"	@)TFr  )r   r   r   r1  r   r[  rf  linspacer  r  r  r  r'  rY  )r  r*  r5  r5  r   r   r4  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 ]}|| q%t} d
d W d    n1 sBw   Y  dt	|j
  fdd}tdd| d| d S )NTr{  rE  rC  c                    sJ     } | d W d    n1 sw   Y  dt|j d S )Nr   z,Second argument N must be None or an integerr  r  r  r  )r   r  r5  r  r   r   r   _check_n8  s   
z8TestNPFunctions.test_vander_exceptions.<locals>._check_n皙?rv   rG  r  r   z#Negative dimensions are not allowedc                    H    t} |  W d    n1 sw   Y  dt|j d S )Nz.x must be a one-dimensional array or sequence.)r  r  r  r  r  )r   r  r5  r  r   r   	_check_1dF  s   
z9TestNPFunctions.test_vander_exceptions.<locals>._check_1dr  )r  r  r  )rG  r  r  )r   r   r  r   rf  r  r  r  r  r  r  r  )r  r*  r?  r   r  rC  r   r>  r   test_vander_exceptions/  s$   
z&TestNPFunctions.test_vander_exceptionsc                 C   sH   t }tdd|}t| j||}dd }| D ]
}d|i}|| qd S )NTr{  c                   S      t ddS Nr  r   rf  r   r   r   r   n_variationsW  r$   z6TestNPFunctions.test_tri_n_basic.<locals>.n_variationsr   )r   r   r   r1  )r  r*  r5  r5  rJ  r;   r0  r   r   r   test_tri_n_basicR  s   

z TestNPFunctions.test_tri_n_basicc           	      C   z   t }tdd|}t| j||}dd }dd }| D ]
}d|i}|| q| D ]}| D ]}||d}|| q.q)d S )	NTr{  c                   S   rF  rG  rI  r   r   r   r   rJ  d  r$   z8TestNPFunctions.test_tri_n_m_basic.<locals>.n_variationsc                   S      t jd gtddfS NrF  r  r  chainfrom_iterableranger   r   r   r   m_variationsg     z8TestNPFunctions.test_tri_n_m_basic.<locals>.m_variationsr   r   )r   r   r   r1  )	r  r*  r5  r5  rJ  rS  r;   r0  r   r   r   r   test_tri_n_m_basic_  s   





z"TestNPFunctions.test_tri_n_m_basicc           	      C   rL  )	NTr{  c                   S   rF  rG  rI  r   r   r   r   rJ  {  r$   z8TestNPFunctions.test_tri_n_k_basic.<locals>.n_variationsc                   S   rF  Nr_  rI  r   r   r   r   k_variations~  r$   z8TestNPFunctions.test_tri_n_k_basic.<locals>.k_variationsr   r   )r   r   r   r1  )	r  r*  r5  r5  rJ  rX  r;   r0  rw   r   r   r   test_tri_n_k_basicv  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
}|| q2q-| D ]}| D ]}
||
d}|| qGqB| D ]}| D ]}
| D ]}	||	|
d}|| qaq\qWd S )NTr{  c                   S   rF  rG  rI  r   r   r   r   rJ    r$   z:TestNPFunctions.test_tri_n_m_k_basic.<locals>.n_variationsc                   S   rM  rN  rO  r   r   r   r   rS    rT  z:TestNPFunctions.test_tri_n_m_k_basic.<locals>.m_variationsc                   S   rF  rV  rI  r   r   r   r   rX    r$   z:TestNPFunctions.test_tri_n_m_k_basic.<locals>.k_variationsr   r   r   r   )r   r   r   r1  )r  r*  r5  r5  rJ  rS  rX  r;   r0  r   rw   r   r   r   test_tri_n_m_k_basic  s6   













z$TestNPFunctions.test_tri_n_m_k_basicc                    sL   t }tdd|    fdd}ddtjddgfD ]}|| qd S )NTr{  c                    sL     } dd| d W d    n1 sw   Y  dt|jv s$J d S )NrE  ra  rw   k must be an integer)r  r  r  )rw   r  rB  r   r   r5    s   
z3TestNPFunctions.test_tri_exceptions.<locals>._check      ?rv   rG  )r   r   r  r   r  )r  r*  r5  rw   r   rB  r   test_tri_exceptions  s   
z#TestNPFunctions.test_tri_exceptionsc                    ,   t dd  fdd}|S )NTr{  c                    s2   | } | } |j|j tj|| d S r   )r  r   r   testingassert_array_equal)r/   r7  r6  r  r   r   r5    s   z:TestNPFunctions._triangular_matrix_tests_m.<locals>._checkr   _triangular_matrix_tests_innerr  r*  r5  r   r  r   _triangular_matrix_tests_m  s   z*TestNPFunctions._triangular_matrix_tests_mc                    r_  )NTr{  c                    sv   t jd gtddfD ],}|d u ri }nd|i}| fi |} | fi |}|j|j tj|| qd S )NrW  r_  rw   )	r  rP  rQ  rR  r  r   r   r`  ra  )r/   rw   r0  r7  r6  r  r   r   r5    s   z<TestNPFunctions._triangular_matrix_tests_m_k.<locals>._checkrb  rd  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                    :    |  |  d}  |  |  d}  |   | j d S )N)r  r  )r  rv   r  r  r  Tr9   r5  r   r   	check_odd     

zATestNPFunctions._triangular_matrix_tests_inner.<locals>.check_oddc                    rg  )N)r     r  rG  rG  r  rh  r9   rj  r   r   
check_even  rl  zBTestNPFunctions._triangular_matrix_tests_inner.<locals>.check_even?   r6  @   ih  r  r  rE  ra  r  )r  r  r  Forderrn  )r   rf  r  r[  asfortranarray)r  r*  r5  rk  ro  r/   r   rj  r   rc    s   z.TestNPFunctions._triangular_matrix_tests_innerc                 C   sl   t dd|}|   td}|  }||dd | dt|j W d    d S 1 s/w   Y  d S )NTr{  rE  ra  r]  r[  r\  )r   r  r   r'  r  r  r  r  )r  r*  r5  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|| q,q	d S r  )r   r  typerZ  r#  r   r`  ra  )	r  r*  rU   r5  r   r7  r6  egr   r   r   _triangular_indices_tests_base
  s   z.TestNPFunctions._triangular_indices_tests_basec                 C      |  |dd tdD  d S )Nc                 S   s   g | ]}|gqS r   r   )rK  r;   r   r   r   rL    s    z?TestNPFunctions._triangular_indices_tests_n.<locals>.<listcomp>r_  r{  rR  r  r*  r   r   r   _triangular_indices_tests_n     z+TestNPFunctions._triangular_indices_tests_nc                 C   r|  )Nc                 S   s.   g | ]}t | d  |d D ]}||gqqS rv   rG  rR  )rK  r;   rw   r   r   r   rL    s   . zATestNPFunctions._triangular_indices_tests_n_k.<locals>.<listcomp>r_  r}  r~  r   r   r   _triangular_indices_tests_n_k  r  z-TestNPFunctions._triangular_indices_tests_n_kc                 C   r|  )Nc                 S   s&   g | ]}t d | D ]}||gq
qS r  r  )rK  r;   r   r   r   r   rL  $  s   & zATestNPFunctions._triangular_indices_tests_n_m.<locals>.<listcomp>r_  r}  r~  r   r   r   _triangular_indices_tests_n_m!  r  z-TestNPFunctions._triangular_indices_tests_n_mc                 C   s4   |  |dd tdD  tdd|}|d d S )Nc                 S   sB   g | ]}t | d  |d D ]}t d| D ]}|||gqqqS r  r  )rK  r;   rw   r   r   r   r   rL  *  s    
zCTestNPFunctions._triangular_indices_tests_n_k_m.<locals>.<listcomp>r_  Tr{  rv   )r{  rR  r   )r  r*  r5  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 ]F}ttdtdD ]9\}}t||f|}||}||}| 	t
|t
| | 	t|t| t||D ]\}	}
tj|	|
 qEqqd S )NTr{  r_  r   r  r  r  r  r  rR  r   r'  r  rx  rZ  r#  r`  ra  )r  r*  r5  r   r;   r   r/   r7  r6  ry  rz  r   r   r   "_triangular_indices_from_tests_arr3  s   z2TestNPFunctions._triangular_indices_from_tests_arrc                 C   s   t dd|}tttfD ]N}ttdtdD ]A\}}t||f|}tddD ]/}||}||}	| 	t
|t
|	 | 	t|t|	 t||	D ]\}
}tj|
| qLq)qqd S )NTr{  r_  rW  r  )r  r*  r5  r   r;   r   r/   rw   r7  r6  ry  rz  r   r   r   $_triangular_indices_from_tests_arr_k@  s   z4TestNPFunctions._triangular_indices_from_tests_arr_kc                 C   s   t dd|}t|j}|  }|d W d    n1 sw   Y  | dt|j d|v rT|  }|ddd W d    n1 sFw   Y  | dt|j d	|v r}|  }|ddd
 W d    n1 smw   Y  | dt|j d S d S )NTr{  r?  zn must be an integerrw   rv   r[  r\  r   r   zm must be an integer)r   r   
parametersr  r  r  r  )r  r*  r5  r  r  r   r   r   _triangular_indices_exceptionsN  s"   




z.TestNPFunctions._triangular_indices_exceptionsTc              	   C   s   t dd|}dD ]+}tdg| }|  }|| W d    n1 s&w   Y  | dt|j q	|rctddg}|  }||dd W d    n1 sSw   Y  | dt|j d S d S )	NTr{  )r   rv   r  rE  zinput array must be 2-drC  r[  r\  )r   r   r'  r  r  r  r  )r  r*  test_kr5  ndimsr'   r  r   r   r   #_triangular_indices_from_exceptions`  s   


z3TestNPFunctions._triangular_indices_from_exceptionsc                 C      |  t | t d S r   )re  r   rf  r   r  r   r   r   test_tril_basico     
zTestNPFunctions.test_tril_basicc                 C   r+  r   )rw  r   r  r   r   r   test_tril_exceptionss  r4   z$TestNPFunctions.test_tril_exceptionsc                 C   T   |  t | t | t | t | t | t | t | t d S r   )	r  r   r  r   r  r   r  r   r  r  r   r   r   test_tril_indicesv     






z!TestNPFunctions.test_tril_indicesc                 C   0   |  t | t | td | td d S NFT)r  r   r  r   r  r  r   r   r   test_tril_indices_from     

z&TestNPFunctions.test_tril_indices_fromc                 C   r  r   )re  r   rf  r   r  r   r   r   test_triu_basic  r  zTestNPFunctions.test_triu_basicc                 C   r+  r   )rw  r   r  r   r   r   test_triu_exceptions  r4   z$TestNPFunctions.test_triu_exceptionsc                 C   r  r   )	r  r   r  r   r  r   r  r   r  r  r   r   r   test_triu_indices  r  z!TestNPFunctions.test_triu_indicesc                 C   r  r  )r  r   r  r   r  r  r   r   r   test_triu_indices_from  r  z&TestNPFunctions.test_triu_indices_fromc                 C   sh   |||}|||}|  t|d | t|d |  |  t||d  t||d   d S r   )r)  r   unique)r  r*  r5  r'   r   r7  r6  r   r   r   partition_sanity_check  s   

(,z&TestNPFunctions.partition_sanity_checkc           
   	   C   s   t }tdd|}tddD ]n}td|d D ]d}t|}| j| || jdd }| j|j}d|||d | | g}t	|| }| 
|||| | | 
|| || | | 
|t| || | |D ]
}	| ||||	 qpqqd S )NTr{  r_  r  rv   rG  r   )r   r   rR  r   rf  r  r  rj  rd  r  r)  tolisttupler  )
r  r*  r5  jididxr   tgtrw   r   r   r   test_partition_fuzz  s0   
z#TestNPFunctions.test_partition_fuzzc                    sT   t }tdd|   td} fdd}||d ||d ||d d S )NTr{  r_  c                    sJ    t} | | W d    n1 sw   Y  t|jdks#J d S )Nzkth out of bounds)r  r  r  r  )r'   r   ry  rB  r   r   r5       zETestNPFunctions.test_partition_exception_out_of_range.<locals>._checki)r  r  )r   r   r  r   rf  )r  r*  r'   r5  r   rB  r   %test_partition_exception_out_of_range  s   


z5TestNPFunctions.test_partition_exception_out_of_rangec                    sb   t }tdd|    fdd}td}||d ||d ||tdd	tjf d S )
NTr{  c                    H     } | | W d    n1 sw   Y  dt|j d S )NzPartition index must be integerr=  r'   r   r  rB  r   r   r5       
zHTestNPFunctions.test_partition_exception_non_integer_kth.<locals>._checkr_        "@)ffffff
@r  rv   rG  )r   r   r  r   rf  r[  r  )r  r*  r5  r'   r   rB  r   (test_partition_exception_non_integer_kth  s   


z8TestNPFunctions.test_partition_exception_non_integer_kthc                    s@   t }tdd|    fdd}|dd |dd d S )NTr{  c                    r  )Nz(The first argument must be an array-liker=  r  rB  r   r   r5    r  zITestNPFunctions.test_partition_exception_a_not_array_like.<locals>._checkr  r   Sausages)r   r   r  rd  r   rB  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}|tdd d S )NTr{  c                    r  )Nz3The first argument must be at least 1-D (found 0-D)r=  r  rB  r   r   r5    r  zCTestNPFunctions.test_partition_exception_a_zero_dim.<locals>._checkrv   r   )r   r   r  r   r[  rd  r   rB  r   #test_partition_exception_a_zero_dim  s
   z3TestNPFunctions.test_partition_exception_a_zero_dimc                    sL   t }tdd|    fdd}|tdtdddd	 d S )
NTr{  c                    sJ    t} | | W d    n1 sw   Y  dt|j d S )Nzkth must be scalar or 1-Dr  r  r  r  r  r  rB  r   r   r5    r  zNTestNPFunctions.test_partition_exception_kth_multi_dimensional.<locals>._checkr_  ra  r  rG  )r   )r   r   r  r   rf  r  rd  r   rB  r   .test_partition_exception_kth_multi_dimensional
  s
   $z>TestNPFunctions.test_partition_exception_kth_multi_dimensionalc                    sV   t tdd d fdd	}tg }d|_|dtg fD ]}|| q"d S )	NTr{  r   c                    s$   | |} | |} || d S r   r  )r'   r   r7  r6  r  r   r   r>    s   

z9TestNPFunctions.test_partition_empty_array.<locals>.check)r  rG  rv   r   r   r%  )r   r   r   r[  r  )r  r>  r'   r/   r   r  r   test_partition_empty_array  s   

z*TestNPFunctions.test_partition_empty_arrayc              	   C   s  t }tdd|}tg }||d}| || td}||d}| || tg d}| }|td| | || ddgddgddgfD ]&}t|}t|}dD ]}	| |||	|	 ||	  | 	||||	 q[qMg d	g d
g dg dg dg dg dg dfD ]&}t|}t|}dD ]}	| |||	|	 ||	  | 	||||	 qqtd}| ||d| td}dD ]}	| 
|||	|	 |	 | 	||||	 qtdd d d }|| t| fD ]8}
| 
||
dd d | 
||
dd d | ||
d||
d | ||
d||
d | 	|||d qtd}t||jd }|jd d }| 
|||| | td}t||jd d }|jd d }| 
|||| | td}d |d< | 
||d!d d  | 
||d!d d tj|d< t||d!d sJ tdd" }ttdd" }| j| t|jD ]}| 
|||| ||  | 	|||| qtg d#}g d$}| 
t|||| d% d&d' tjtjfD }|D ]^\}}tj||d(}| j| ttj||d(d)}t| jj| t|jD ]4}|||}| 
|| | tj|d | ||  tj|| ||d d   | 	|||| q#qd S )*NTr{  r   rv   )r  rc  rE  (   rG  r   rv   r  rG  rv   r  )rG  rv   r  )rG  r  rv   rv   rv   rv   r  )rG  rG  rv   )rv   rG  rv   r   rv   rG  rq   1   )rE  rc  /   r  ra  rm  i)   i   i@B iAB r_  r  )rG  r  r  )r   rv   rG  r  r  rE  r  r  r  r  r  r  r  r  r  r  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  rm  r   )rK  dtsr   r   r   rL    s    z8TestNPFunctions.test_partition_basic.<locals>.<listcomp>r   )r  rv   )r   r   r   r[  r)  r'  copyrf  r  r  r  r  r  r   rd  r  isnanr  r  rR  r  r'  tilemapr`  assert_array_less)r  r*  r5  r  r6  r   okthrr  rw   r'   r   midr  tdr  r  d1pr   r   r   test_partition_basic+  s   














z$TestNPFunctions.test_partition_basicc                 C   s   d}t |D ];}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   rv   )r   r  r`  r  
assertTrueallr  )r  r*  r5  r  r   prevrw   r   r   r   assert_partitioned  s   z"TestNPFunctions.assert_partitionedc                 C   s`  t }tdd|}t| j||}tg d}||d}||d ||t|d d | |||d td}| j	
| | td||tt|j td}| j	
| tg d}| j	
| |||}||| | j	
| | |||| tdd d d	 }|||d
gd d
g |||d
gd ddg d
gd ddg  d S )NTr{  )r  r  rG  rv   )r   r  )r  r  r  )rv   r  r  r  r`  r  rE  r  ra  rb  )r   r   r   r  r   r[  argpartitionr)  rf  r  r  r  rR  rd  )r  r*  r5  r  r  r  keysr   r   r   test_partition_iterative  s,   


"


0z(TestNPFunctions.test_partition_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>q7d S )NTr{  c              	      s   | |} | |} |d d d d |f |d d d d |f  t|jd d D ]2} t|| d | t|| d |   t|| |d  t|| |d   q,d S )Nr  )r)  r   ndindexr  r  )r'   r   r7  r6  r  r  r   r   r>    s   

0z7TestNPFunctions.test_partition_multi_dim.<locals>.checkc                 s   sZ    | 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
fill_valuer?  r:  r  )ri  r   ru  	full_liker  r  r9   r   r   r   a_variations  s   z>TestNPFunctions.test_partition_multi_dim.<locals>.a_variationsrv   r_  0   r  r  r  r  )r  r  r  r  r  )r   r   r   r;  r  r  r  rR  )r  r>  r  r'   r/   rw   r   r  r   test_partition_multi_dim  s   	

z(TestNPFunctions.test_partition_multi_dimc                 C   sN   t }tdd|}tdddtdfD ]}dD ]
}| |||| qqd S )NTr{  rv   r_  r  TFT)TFr  r   rv   )r   r   r   r;  r[  r  )r  r*  r5  r  r   r   r   r   test_partition_boolean_inputs  s   z-TestNPFunctions.test_partition_boolean_inputsc              	   C   sB  t }tdd|}|   tddgddgddggj}tddfD ]%}|  }|||d W d    n1 s:w   Y  | d	t	|j
 q#tjtjfD ]&}| t}|||d W d    n1 sgw   Y  | d
t	|j
 qOdD ]&}| t}|||d W d    n1 sw   Y  | dt	|j
 qxd S )NTr{  r   rG  rv   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   r  r   r[  ri  rf  r  r  r  r  r  r  r  r  )r  r*  r5  r   r   r  r   r   r   test_cov_invalid_ddof  s0   
z%TestNPFunctions.test_cov_invalid_ddofc                    sH   t dd|}t j||dd} fdd}| D ]}|||i qd S )NTr{  +=r/  c                   3   sV   t ddgddgddggjV   jdddV  t t ddgddgddggjV   jdddd d d d df V  t g dV  t jdd	d
V  t t jdt j	 ddgV  t 
dddddV  dV  dV  dV  dV  g dV  dV  ddgV  dV  dV  t g V  t g ddV  t g ddV  dV  d S )Nr   rG  rv   r  rE  r`  )g&S:?o_?g#~j?甇ZӼ?Q|?r  Tr  r  r  r  r  r  !   )皙?皙?g)\(?gRQ?)g
ףp=
?gzG?)r  r  )y        
ףp=
?y        zG?g r  g333333@r  r  )r  r  r8  r  )rv   r  rG  r:  ))r@  皙@r]  r   )r   r[  ri  r  randnr  ru  fullr  r  r;  r   r  r   r   input_variations  s,    &(


z=TestNPFunctions.corr_corrcoef_basic.<locals>.input_variations)r   r   r1  )r  r*  first_arg_namer5  r5  r  	input_arrr   r  r   corr_corrcoef_basic  s   
z#TestNPFunctions.corr_corrcoef_basicc                 C      t }| j|dd d S )Nr   r  )r   r  r~  r   r   r   test_corrcoef_basic&     z#TestNPFunctions.test_corrcoef_basicc                 C   r  )Nr   r  )r   r  r~  r   r   r   test_cov_basic+  r  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}|| q5d S )NTr{  r  r/  i   rc  r  r  FT)Nr  r   rv         @T)r   r   r   r   r   )	r   r   r   r1  r  r  r  r  r  )r  r*  r5  r5  r   	y_choicesrowvar_choicesbias_choicesddof_choiceproductsr   r   r   r   r0  r   r   r   test_cov_explicit_arguments0  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
}	||	 q-d S )NTr{  r  r/  r  rc  r  r  r  r   )	r   r   r   r1  r  r  r  r  r  )
r  r*  r5  r5  r   r  r  r   r   r0  r   r   r    test_corrcoef_explicit_argumentsC  s   
z0TestNPFunctions.test_corrcoef_explicit_argumentsc           	      C   s  t dd|}t| j||dd}tg d}tg d}||d|i}|| tg d}tg d	g}||d|i}|| tg d}d	}||d|i}|| ||d|i}|| tg d}d
}||d|i}|| ||d|i}|| tg }tg }||d|i}|| d}d}||d|i}|| | jdd}tg dddd }||d|i}|| tg d}tg dg dg}||d|i}|| dD ]/}tg d}tg dg dg dg}||d|d|i}|| ||d|d|i}|| qd S )NTr{  r  r/  r  )r  r@  Q?r   r  rQ  r  r  )rQ  r  r  r@  r  r_  r  rv   r  )r  r@  r  r   )r   r   r1  r   r[  r  r  r  )	r  r*  r  r5  r5  r   r   r0  r   r   r   r   cov_corrcoef_edge_casesQ  s\   


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}|| q"d S )	Nr   r  Tr{  r  r/  r:  r   )r   r  r   r   r1  r   r  r  r  r*  r5  r5  r   r0  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 )NTr{  r  r/  ))0.++}Ô%IT)r  r  r   )r   r   r   r1  r  r   r   r   &test_corrcoef_edge_case_extreme_values  s   z6TestNPFunctions.test_corrcoef_edge_case_extreme_valuesc                 C   sf   t }| j|dd tdd|}t| j||dd}tddgd	d	gddggj}|d
d}|| d S )Nr   r  Tr{  r  r/  r   rG  rv   rE  )r   r   )r   r  r   r   r1  r   r[  ri  )r  r*  r5  r5  r   r0  r   r   r   test_cov_edge_cases  s   
z#TestNPFunctions.test_cov_edge_casesc                    sX  t }tdd|    fdd}td}|| d}|| g dgg}||  fdd}td	}td}||| td
}d}||| td}td}t} ||d W d    n1 sow   Y  	dt
|j tg ddd}t} | W d    n1 sw   Y  	dt
|j d S )NTr{  c                    sF     } |  W d    n1 sw   Y  dt|j d S )Nzm has more than 2 dimensionsr=  )r   r  rB  r   r   _check_m  s   

z5TestNPFunctions.test_cov_exceptions.<locals>._check_mrE  ra  r  )))r  rG  rG  rG  c                    sJ     } | |d W d    n1 sw   Y  dt|j d S )Nr   zy has more than 2 dimensionsr=  )r   r   r  rB  r   r   _check_y  s   
z5TestNPFunctions.test_cov_exceptions.<locals>._check_yrv  )r@  r  r@  )))r7  r  gffffff@r  r  r   z$m and y have incompatible dimensionsr  rv   z/2D array containing a single row is unsupported)r   r   r  r   r'  r[  rf  r  r  r  r  r  r  RuntimeError)r  r*  r
  r   r  r   r  r   rB  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 ]4}d
|i}|| ||D ]%}||d}|| ||d}|| ||D ]}	|||	d}|| qGq/q!d S )NTr{  c                 s   s     d V  | V  |  tjV  d S r   )r  r   r  r9   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  rG  )r  r  r   r  r9   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   r1  r   r;  )
r  r*  r5  r5  r  r  r   r0  r'   r(   r   r   r   test_ediff1d_basic  s&   


z"TestNPFunctions.test_ediff1d_basic)rv   r  zAUnstable bevahiour, see:https://github.com/numpy/numpy/pull/17457c           	         s  t tdd tj } fdd}dd }| D ]}|||d}|| qdgd	d
d}|| tdddtjddddtjg	}tdd|d}tdk rY|| n||d ddi}|| ddd}tdk rt|| n||d ddd}|| tddddd}t	rt
stdkrt}|| W d    n1 sw   Y  d}|t|j d S || d S )NTr{  c                    s    t} di |  W d    n1 sw   Y  d| }|t|j  t}di |  W d    n1 s@w   Y  t|j}d| d| d| d S )Nz-dtype of %s must be compatible with input aryzcannot convertzto array with dtypezas required for input aryr   )r  r   r  r  r  r  )r0  argr  r   excstrr  r   r   _check_raises_type_error	  s   
zITestNPFunctions.test_ediff1d_edge_cases.<locals>._check_raises_type_errorc                  s   s    dV  g dV  t g V  dV  tdk rIt t jt jdt j dgV  t t jdt jddd	d
ddg	} | d| d d d   }|ddV  d S d S )Nr  r  r  r   rv   rm  r  r:  rG  rE  ra  r  r  r  rQ  r  r  )r   r[  r
   r  r  r  )partsr'   r   r   r   r  	  s   
 zATestNPFunctions.test_ediff1d_edge_cases.<locals>.input_variationsr   rv   r  r  rG  r:  rE  ra  r  irH  r  r  r   r   r  r  rF  Fr  z3dtype of to_begin must be compatible with input ary)r   r   r   r1  r   r[  r  rf  r
   r   r   r  r   r  r  r  )	r  r5  r  r  r  r0  r   r  expected_msgr   r  r   test_ediff1d_edge_cases	  s>   

 






z'TestNPFunctions.test_ediff1d_edge_casesc                 C   sj   t }tdd|}|   |  }|td W d    n1 s#w   Y  d}|t|jv s3J d S )NTr{  )TTFz+Boolean dtype is unsupported (as per NumPy))r   r   r  r  r   r[  r  r  )r  r*  r5  ry  r   r   r   r   test_ediff1d_exceptionsS	  s   
z'TestNPFunctions.test_ediff1d_exceptionsc                 C      t }tdd|}dd }| D ]}||}||}| || q| t}|d W d    n1 s5w   Y  | dtj t|j	 d S )NTr{  c                   s   sH    t dddV  t ddddV  dV  ddgddgfV  d S )	Nr_  rE  rG  r`  r  rv   r  r  r  r   r   r   r   r  d	  s
   z7TestNPFunctions.test_fliplr_basic.<locals>.a_variationsabczCannot np.fliplr on %s type)
rh   r   r)  r  r   r  r   unicode_typer  r  r  r*  r5  r  r'   r7  r6  r  r   r   r   test_fliplr_basic`	  s   

z!TestNPFunctions.test_fliplr_basicc                 C   sz   t }tdd|}|   | t}|td W d    n1 s$w   Y  | dt|j	 | dt|j	 d S )NTr{  r  cannot index arrayzwith 2 indices)
rh   r   r  r  r   r   rf  r  r  r  r  r   r   r   test_fliplr_exceptionu	  s   z%TestNPFunctions.test_fliplr_exceptionc                 C   r  )NTr{  c                   s   s\    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 )	Nrv   r_  rE  rG  r`  r  r  r  r  r   r   r   r   r  	  s   z7TestNPFunctions.test_flipud_basic.<locals>.a_variationsr   zCannot np.flipud on %s type)
rj   r   r)  r  r   r  r   r!  r  r  r"  r   r   r   test_flipud_basic	  s   

z!TestNPFunctions.test_flipud_basicc                 C   st   t }tdd|}|   | t}|d W d    n1 s!w   Y  | dt|j | dt|j d S )NTr{  rv   r$  zwith 1 indices)rj   r   r  r  r   r  r  r  r  r   r   r   test_flipud_exception	  s   
z%TestNPFunctions.test_flipud_exceptionc                 C   s   t }tdd|}dd }| D ]}||}||}| || q| t}|d W d    n1 s5w   Y  | dt|j d S )NTr{  c                   s   sH    t dV  t dV  t dddV  t ddddV  d S )Nrv   r_  rE  rG  r`  r  r   r   r   r   r  	  s
   z5TestNPFunctions.test_flip_basic.<locals>.a_variationsr  zCannot np.flip on UniTuple)rk   r   r)  r  r   r  r  r  r"  r   r   r   test_flip_basic	  s   

zTestNPFunctions.test_flip_basicc                 C   H   dd }t }tdd|}| D ]\}}tj|||||| qd S )Nc                   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)rv   r  )r  r  )r  )r  r,  )r  r  )r?        N@)      Nr@  )r@  r-  rA  rv   rG  r  r        ?       @      @      @      ?             @                   @r   ry  pir(  r   r   r   r   inputs	  "   z4TestNPFunctions.test_logspace2_basic.<locals>.inputsTr{  )rp   r   r   r`  assert_allcloser  r6  r*  r5  rn   ro   r   r   r   test_logspace2_basic	     z$TestNPFunctions.test_logspace2_basicc                 C   s   t ddt}|   | t}|dd W d    n1 s w   Y  | dt|j | t}|dd W d    n1 sCw   Y  | dt|j d S )NTr{  r   rE  +The first argument "start" must be a number+The second argument "stop" must be a number)r   rp   r  r  r   r  r  r  r  r5  r  r   r   r   test_logspace2_exception	  s   z(TestNPFunctions.test_logspace2_exceptionc                 C   r)  )Nc                   s   r*  r+  r4  r   r   r   r   r6  	  r7  z4TestNPFunctions.test_logspace3_basic.<locals>.inputsTr{  rs   r   r   r`  r8  r9  r   r   r   test_logspace3_basic	  r;  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)rv   r  r`  )r  r  r  )r,  r  r  )r  r,  rq   )r  r  r  )r?  r-  F   )r.  r@  P   )r@  r-  Z   rA  r`  r  rv   rG  r  r  r  rq   r  r/  r0  rB  r1  r2  rC  r3  rD  r4  r   r   r   r   r6  
  s"   z=TestNPFunctions.test_logspace3_with_num_basic.<locals>.inputsTr{  r@  )r  r6  r*  r5  rn   ro   rr   r   r   r   test_logspace3_with_num_basic	  s   
z-TestNPFunctions.test_logspace3_with_num_basicc                 C   s   t ddt}|   | t}|dd W d    n1 s w   Y  | dt|j | t}|dd W d    n1 sCw   Y  | dt|j | t}|ddd W d    n1 sgw   Y  | dt|j d S )	NTr{  r   rE  r<  r=  r   z+The third argument "num" must be an integer)r   rs   r  r  r   r  r  r  r>  r   r   r   test_logspace3_exception
  s(   z(TestNPFunctions.test_logspace3_exceptionc                 C   sF   t }tdd|}dd }| D ]}||}||}| || qd S )NTr{  c                   s   L    t dddV  t ddddV  t dddddddV  d S Nr_  rE  rG  r`  rq  r  r   r   r   r   r  3
      z6TestNPFunctions.test_rot90_basic.<locals>.a_variations)ru   r   r)  )r  r*  r5  r  r'   r7  r6  r   r   r   test_rot90_basic/
  s   
z TestNPFunctions.test_rot90_basicc                 C   sZ   t }tdd|}dd }| D ]}tddD ]}|||}|||}| || qqd S )NTr{  c                   s   rG  rH  r  r   r   r   r   r  A
  rI  z=TestNPFunctions.test_rot90_with_k_basic.<locals>.a_variationsrF  ra  )rx   r   rR  r)  )r  r*  r5  r  r'   rw   r7  r6  r   r   r   test_rot90_with_k_basic=
  s   


z'TestNPFunctions.test_rot90_with_k_basicc                 C   s  t }tdd|}|   | t}|d W d    n1 s!w   Y  | dt|j | t}|t	d
dddd W d    n1 sLw   Y  | dt|j | t}|t	d	 W d    n1 sqw   Y  | d
t|j d S )NTr{  r   )The first argument "arr" must be an arrayr  rG  r[  z*The second argument "k" must be an integerr  zInput must be >= 2-d.)rx   r   r  r  r   r  r  r  r   rf  r  r  r   r   r   test_rot90_exceptionL
  s&   
z$TestNPFunctions.test_rot90_exceptionc                 C   L   |}t dd|}dd }| D ]}|| }|| }tj|t| qd S )NTr{  c                  s   s   t d} | dfV  | ddfV  | g dfV  t| g dfV  t| g dfV  | g ddfV  t| g ddfV  t| g ddfV  t dddd} | dfV  | ddfV  | ddfV  | g dfV  | g ddfV  | g ddfV  | dd	gfV  | dd	gdfV  | dd	gdfV  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  rG  r   )rv   r  H   rq  r  rv   )rG  rv   rE  r  r  rq   r_  rv   rD  )r   rf  r  r  r  r  r[  r9   r   r   r   args_variationsi
  sL   








z5TestNPFunctions._check_split.<locals>.args_variationsr   r   r`  assert_equalr  r  funcr*  r5  rQ  rU   r7  r6  r   r   r   _check_splitd
  s   
+zTestNPFunctions._check_splitc                 C   rN  )NTr{  c                   s   sV    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  rG  rE  )r   rf  r  r  r  r   r   r   r   rQ  
  s
   z;TestNPFunctions._check_array_split.<locals>.args_variationsrR  rT  r   r   r   _check_array_split
  s   
z"TestNPFunctions._check_array_splitc                 C   s   |  t | t d S r   )rV  ry   rW  r  r   r   r   test_array_split_basic
  r  z&TestNPFunctions.test_array_split_basicc                 C   sf   |  t |   | t}tttdd W d    n1 s#w   Y  | dt	|j
 d S )NrE  rG  z0array split does not result in an equal division)rV  r|   r  r  r  r   r   r'  r  r  r  )r  r  r   r   r   test_split_basic
  s   
z TestNPFunctions.test_split_basicc           	      C   s^   t }tdd|}dd }dd }| D ]}| D ]}|||}|||}| || qqd S )NTr{  c                   s   s~    t dV  t ddddV  g dV  dV  dV  dV  d	V  t t d
t jgt jdggV  t g V  dV  d S )Nr  r  r  r  rE  )r@  r  r  r  F)r  r@  g333333@r   )r   rf  r  ru  r[  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  rW  r_  rO  r   r   r   r   shift_variations
  s   z9TestNPFunctions.test_roll_basic.<locals>.shift_variations)r   r   r)  )	r  r*  r5  r  rZ  r'   r   r7  r6  r   r   r   test_roll_basic
  s   



zTestNPFunctions.test_roll_basicc              	   C   sv   t }tdd|}|   dD ])}|  }|td| W d    n1 s(w   Y  d}|t|jv s8J qd S )NTr{  )r@  r  r_  zshift must be an integer)r   r   r  r  r   rf  r  r  )r  r*  r5  r   ry  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 g d}g d}|||d tddd}ddtjddddddf	}t|dD ]}|||d |t|	dd|d q{tg d}tg }|||d tg d}tg d}|||d tg dg dg}g d}|||d tg dg dg}tg d	ddd}|||d ttd	d
dd	}tdd}|||d |||d d d d td}dD ]
}|||d qd}d}|||d td}tddg}|||d td}tg d 	dd
d! }|||d d S )"NTr{  r_  r  rb  r   r  r  rE  r  gffffff&@)r  r  r  rE  r  )r@  r  r  r  )rv   rv   r   rv   r  ra  Fr  r@  g333333rv   r?  y              ?rG  r  )rv   r   rv   r   r  )rv   r   rv   r   rv   r   )rv   r   rv   r   rv   r   r   r   r  r  )rv   r   rv   r   r   r   rQ  )r   r   r   r1  r   rf  r  r  rR  r  eyeflattenr;  r  r  combinations_with_replacementr[  ru  r   )r  r*  r5  r5  r'   	thresholdr  element_poolr   r   r   test_extract_basic
  sd   




z"TestNPFunctions.test_extract_basicc                    s4  t }tdd|   tg }tg d}t} || W d    n1 s.w   Y  dt|j	  fdd}tg dg dg}g d}||| tg d}tg d}||| td	}d
}||| t
d}tg d}||| t
d}tg d}||| d S )NTr{  r  z"Cannot extract from an empty arrayc                    sN   d} t} | | W d    n1 sw   Y  |t|j d S )Nz+condition shape inconsistent with arr shaper  )r  r'   r   ry  rB  r   r   r5  2  s
   z7TestNPFunctions.test_extract_exceptions.<locals>._check)rv   r   rv   r   rv   r   rv   )rv   r   rv   r   rv   r  r  r  )TFFFT)TFTFFTF)r   r   r  r   r[  r  r  r  r  r  rf  )r  r*  r'   r  ry  r5  r   rB  r   test_extract_exceptions$  s2   







z'TestNPFunctions.test_extract_exceptionsc                 C   s<  t }tdd|}t| j||}g d}|d|i d}|d|i tddd}|d|i td	d
dddd}|d|idd | j	| |d|idd t
g }|d|i t
dtjtjtj dg}|d|i tdtdd
dd  }|d|i tj
g tjd}|d|i d}|d|i d S )NTr{  r  r   )r  rv   rG  rG  rG  rc  r  rE  rW  r_  r  r  vIh%<=r/  r:  r`  r   rQ  r   r  )r   r   r   r1  r   rf  r  r;  r  r  r[  r  r  r\  r  r*  r5  r5  r   r   r   r   test_np_trapz_basicL  s.   
z#TestNPFunctions.test_np_trapz_basicc                 C   s,  t }tdd|}t| j||}g d}g d}|||d g d}d}|||d d}g d}|||d tg d}d	d	g}|||d tg }td
dg}|||d d}d }|||d tddd	}td	dg}|||d tddd	}tg d}|||d tddd	d}td	dg}|||d tddd	d}tg d}|||d tddd	d}| j	| |d }| j	| |||d td}|t
dddd  }|||d tg d}tddg}|||d d S )NTr{  r  r  ra  r  r   r  )r  ra  r  rE  ra  r  r  r  rG  r  r`  rE  r9  r  )r  rE  r  r@  r   r_  rQ  r  r/  )r   r   r   r1  r   r[  rf  r  r  r  r;  )r  r*  r5  r5  r   r   r   r   r   test_np_trapz_x_basico  sX   

z%TestNPFunctions.test_np_trapz_x_basiczNumPy behaviour questionablec                 C   s^   t }tdd|}t| j||}tg dt}|d|i tg d}|d|i d S )NTr{  )TFTTr   )r   r   r   r1  r   r[  r  r  rf  r   r   r   test_trapz_numpy_questionable  s   z-TestNPFunctions.test_trapz_numpy_questionablec                 C   s  t }tdd|}t| j||}g d}d}|||d g d}g d}|||d g d}g d}|||d tdd	d
}tj}|||d tdd	d
}tj}|||d tdd	d
}tdd	d}|||ddd td	dd	dd }td	dd	d}|||d tdd
d}|t
d|d  tdtj  dd}tj|dd td}d}|||d td}td	g}|||d d S )NTr{  r  rG  r   r  )rv   r  rE  ra  r  rE  r_  r  re  r/  r  r  r  rQ  r  rW  r  rD  r   rv   r  r`  )r   r   r   r1  r   r;  r  r  rf  r  expr  r5  r`  assert_almost_equalr[  )r  r*  r5  r5  r   r   r   r  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g dfD ]S}g d}g d}||||d g d}dd	g}||||d g d}g d
}||||d tdddd}| j	| |d }tj
|d< ||||d qd S )NTr{  rG  r  r  rh  r   r  ra  ri  r  rE  r  r@  r  )r   r   r   r1  r   r[  rf  r  r  r  r  )r  r*  r5  r5  r   r   r   r   r   r   test_np_trapz_x_dx_basic  s&   
z(TestNPFunctions.test_np_trapz_x_dx_basicc              	      s  t }tdd|    fdd}g d}g dg dfD ]	}|||df q td	d
dd}tdd
dd
}|||df td	d
dd}tg d}|||df g d}tddg}||d |f td	d
dd}td	d
dd}||d |f  }td}||d df W d    n1 sw   Y  dt	|j
 ddtjfD ]%} } |d d W d    n1 sw   Y  dt	|j
 qd S )NTr{  c                    sH    t} |   W d    n1 sw   Y  dt|j d S )Nzunable to broadcastr  )r0  ry  rB  r   r   check_not_ok  s   
zCTestNPFunctions.test_np_trapz_x_dx_exceptions.<locals>.check_not_okr  )r  rE  ra  r  r  r  r  r?  r  r  r  rE  $   r9  r  zy cannot be 0DFzy cannot be a scalar)r   r   r  r   rf  r  r[  r  r  r  r  r  )r  r*  rp  r   r   r   ry  r   rB  r   test_np_trapz_x_dx_exceptions   s<   


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  rC  e   r  rq   re  Tr{  r@   r_  )placesc                    P    t} | |d W d    n1 sw   Y  |j}t|d d S )Nr@   z)Weights sum to zero, can't be normalized.)r  ZeroDivisionErrorr  r  r  datarA   ry  errrB  r   r   test_weights_zero_sum_     
z;TestNPFunctions.test_average.<locals>.test_weights_zero_sumc                    ru  )Nr@   zCNumba does not support average when shapes of a and weights differ.r  	TypeErrorr  r  r  rw  rB  r   r   test_1D_weightsi  r{  z5TestNPFunctions.test_average.<locals>.test_1D_weightsc                    sR    t} | ||d W d    n1 sw   Y  |j}t|d d S )Nr   z)Numba does not support average with axis.r|  )rx  r-   rA   ry  ry  rB  r   r   test_1D_weights_axisq  s   
z:TestNPFunctions.test_average.<locals>.test_1D_weights_axisra  r  g      ?g      ?rv   r   )r   r  ranfr  rj  rh  r   r   assertAlmostEqualrf  r  r   )r  r   r'   rB   w0a_boolw_boola_intw_intd0r  d2a_3dw_3dr*  rz  r~  r  rx  r   rB  r   test_average-  sV   
zTestNPFunctions.test_averagec              
   C   s  t }tdd|}ttjj}tj|gtjd}tddgtddgftddgtddgftddgtd	dgftdgtd	dgfd
ttjdgtdtjgf||fg}|D ]\}}|||}|||}| 	|| qctdtj
g}tdtj
g}| ||| | |||dd|||dd ttj
dg}| |||||| g d}	td}
tjd}|	D ]}|	D ]}|	D ]}||
|||d}||
|||d}| 	|| |||
||d}|||
||d}| 	|| |t|g|
||d}|t|g|
||d}| 	|| |||| ||d}|||| ||d}| 	|| ||| |||d}||| |||d}| 	|| qqqd S )NTr{  r       _BgHz>g   UkBr   &.>   2٠B)r?  r?  rv   r   r?  r   )r?  r  g{Gz?gMbP?-C6?r   gư>rA  )re  r  )r   r   )r   r   r   rd   int_minr[  r   r  r  r  assertFalseassertEqualsr  r  r  )r  r*  r5  min_intr'   simple_datar(   	py_resultc_resultnoise_levels
zero_arraynoiser   r   r   r   r   test_allclose  sx   



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 ]\}}	| 
|||	|||	 qsd S )NTr{  g      Y@g     @@}   r   rE  rE  rE  r   r   rv   r   rA  r?  rG  )r   r   r   r[  rf  r  rY  r  r   r  r  )
r  r*  r5  r/   aranr   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 ]\}}| |||||| qd S )NTr{  r  r   r  r   r   r   r?  rA  rG  rv   )r   r   r   rf  r  rY  r  r   r  r  r[  r  )	r  r*  r5  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u  d S )NTr{  c                   @   s   e Zd Zdd ZdS )z?TestNPFunctions.test_return_class_is_ndarray_numpy.<locals>.Fooc                 _   s   t j|i || S r   )r   r[  ri  )clsrU   r/  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  rv   )r   r   r   ndarrayr  rx  r  )r  r*  r5  r  r'   r   r   r   "test_return_class_is_ndarray_numpy  s
   
z2TestNPFunctions.test_return_class_is_ndarray_numpyc                 C   sF   t }tdd|}tdtjg}| |||dd|||dd d S )NTr{  r?  r  )r   r   r   r[  r  r  )r  r*  r5  r   r   r   r   test_equalnan_numpy  s   z#TestNPFunctions.test_equalnan_numpyc                 C   st   t }tdd|}ttjdg}tdtjg}||| tj|ttjdg tj|tdtjg d S )NTr{  rv   r   )r   r   r   r[  r  r`  ra  )r  r*  r5  r   r   r   r   r   $test_no_parameter_modification_numpy  s   
z4TestNPFunctions.test_no_parameter_modification_numpyc                 C   sN   t }tdd|}ttjj}tj|gtjd}| |||||| d S )NTr{  r   )r   r   r   rd   r  r  r[  r  )r  r*  r5  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}| t}||| W d    n1 s2w   Y  | dt	|j
 d S )NTr{  r  r  r  z=shape mismatch: objects cannot be broadcast to a single shape)r  r   r   r   r   r  r  r  r  r  r  )r  r*  r5  r'   r(   ry  r   r   r   test_allclose_exception%  s   z'TestNPFunctions.test_allclose_exceptionc                 C   s  t }tdd|}t| j||dd}tddd}tdd	}|d
 }||||dd | j| ||||dd | j| ||||dd tj	|d d< tj
|dd < | j| ||||dd tj	|d d< tj
 |dd < | j| ||||dd tdd	}|d }|d }||||dd d}d}d}||||dd d}tddd}tdd}||||dd tdtj	tj
tj
 ddg}|jdddd}tddd}tdd}||||dd tddD ]}g d}d}||||dd qtg }g d}d}||||dd tdddddd}td }|d }||||dd tj	}td}tdtj	}||||dd tj	}dg}dg}||||dd tdd	}|}|}||||dd dd!g}tdd	}|}||||dd tj
 d"dd#tj
g}tdd	}|d$ }||||dd td%dd}ttj
 d"dd#tj
g}|d$ }||||dd | jd&}td'dd&}tjd&d(d)}||||dd d*D ]}tg d| }ddg}ddg}||||dd qd}dg}dg}||||dd tddd}tddd}tddd+}	||	||}
tj|
|	 tg d,}tg d,}tg d-}||||dd dg}tj
g}|d||dd tg d.}tg d,}tddtj	dg}||||d tg d/}tg d0}ttj	dtj	dtj	g}||||d tg d.}tg d,}tddtj
dg}||||d tdd
tj	d1tj
 dd2dtj
dd3g}tg d4}tddtj	ddtj
g}||||d tg d5}tddd6}t|d7 }||||d | jddtj d8}tddtj d9}t|}t|}||||}tjj||d:d; | jd}td%dd9}t|}||||d | jd9}td%dd}t|}||||d d S )<NTr{  g|=r/  rF  rE  re  rH  r  r]  r   )r0  rv   rG  r  r  g      )rG  r  r  r  )r  )r7  ?      @r  r_  gffffff?rA  g333333"r  rr  rs  r  r  r]  r   r  r`  Fr@  r?  r  rW  r  r  r:  r  )rv   r  rq   r  )rv   rG  gGz@r  )rv   rG        @r  r  )	rv   r]  rG  r  r  r  r  rE  g      @r  r  r  r  )rv   rG  r  r  rE  ra  )g~@g<ԛ@g3@i!N  r  )r    r   )r   )r   r   r   r1  r   r;  rf  r  r  r  r  r[  r  rR  r  r  r`  rm  sinuniformr5  cosr8  	ones_like)r  r*  r5  r5  r   r   r   factorr   x0ra   exactr6  r   r   r   test_interp_basic4  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)rd  r   putr  choicerR  r  r  )r  r'   r  r   r   r   _make_some_values_non_finite  s   
$&(z,TestNPFunctions._make_some_values_non_finitec              	   c   sh   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        @rv   rE  g @g333333@rG  g      @r@  r  g@g333333@gq=
ףp?g @gQ?r8  rC  )rd  scale      @g      4@g      I@g      i@r  g333333?r  r  )r   r;  r  rf  r5  r  normalrh  )r  ndatar   r   r   r    sB   "






"zTestNPFunctions.arraysc           
      C   s  t }tdd|}d}tddd| }t|d }| |D ]}d}||||}||||}	| j||	|d	 | j| ||||}||||}	| j||	|d	 | j| ||||}||||}	| j||	|d	 | j| ||||}||||}	| j||	|d	 | 	| ||||}||||}	| j||	|d	 | 	| ||||}||||}	| j||	|d	 | 	| ||||}||||}	| j||	|d	 q d S )
NTr{  i N  r   r_  rv   r  r  r/  )
r   r   r   r;  r  r  r)  r  r  r  )
r  r*  r5  r  r   r   r   r   r7  r6  r   r   r   test_interp_stress_tests  sF   


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 ]2}||||}	||||}
tjj|	|
dd
 | j	| | j	| | j	| tjj|	|
dd
 q]d S )NTr{  i  r   r_  rv   r     rQ  r  )r   r   r   r;  r  r  r  r  r  r  r  r  r`  r8  )r  r*  r5  r  r   realimagr   r   r7  r6  r   r   r    test_interp_complex_stress_tests@  s(   $$z0TestNPFunctions.test_interp_complex_stress_testsc           	      C   s  t }tdd|}|   tg d}tg }tg }| t}|||| W d    n1 s4w   Y  d}| |t|j	 d}tg d}tddg}| t}|||| W d    n1 sjw   Y  d}| |t|j	 d}t
dd	d}t
d}|  }|||| W d    n1 sw   Y  d
}| |t|j	 d}t
d}t
dd	d}|  }|||| W d    n1 sw   Y  d}| |t|j	 d}t
d}t
d}|  }|||| W d    n	1 sw   Y  d}| |t|j	 d}t
dd tj}t
d}|  }|||| W d    n	1 s>w   Y  | |t|j	 d S )NTr{  r  zarray of sample points is emptyrv   rG  z#fp and xp are not of the same size.ra  r  zxp must be 1Dzfp must be 1Dr  z:Cannot cast array data from complex dtype to float64 dtyperQ  )r   r   r  r   r[  r  r  r  r  r  rf  r  r  r  r(  )	r  r*  r5  r   r   r   ry  r   complex_dtype_msgr   r   r   test_interp_exceptions[  sf   










z&TestNPFunctions.test_interp_exceptionsc                 C   s   t }tdd|}t| j||}tg d}ttj ddtjg}tddg}|||d}|| ttj d	d
tjg}tg d}tddg}|||d}|| d S )NTr{  )r   rv   r  r_  r  ?r  r  r   rv   r  )r   r  r  rv   )r   r   r   r1  r   r[  r  )r  r*  r5  r5  r   r   r   r0  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 ]Q}tj|tjd}tj|tjd}tjdd|d |gtjd}|d d d }||||}||||}	tjg dtd}
|
d d d }tj	
||
 tj	
|	| qtddd	}tddd	}d}tj	
||||| d
}tj	
||||| td
}tj	
||||| td
}tj	
||||| tj}tj	
||||| tddd	}tddd	}td
}tj	
||||| tddd}t|}tj	
|tj||d d S )NTr{  rv   r_  r   r  r   rv   rv   rv   rv   rE  r8  r  rA  )r   r   rR  r   rf  r  r'  r[  r  r`  rm  r;  r'  rY  r  r  r5  )r  r*  r5  rd  r   ypincptsdecptsincresdecresinctgt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 )NTr{  r   rv   rE  rQ  r8  )r   r   r   r;  r`  rm  )r  r*  r5  r   r   r  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 ]0}|\}}}tj	d|d}|d 
|}	tjddd|d}
||
||	}||
||	}| || qd S )NTr{  r  r_  r   rG  )r   r   r   r'  rY  r  r  r  r`  rf  r  r;  r)  )r  r*  r5  dtypescomboxp_dtypefp_dtypex_dtyper   r   r   r7  r6  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r)| |||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 ]} t jg dd	|  d
V  t jg dd|  d
V  q1d S )Nz
2016-01-01NaTmsnsz2038-01-19T03:14:07"   )Yr   WDhr   r  r  usr  psfsas){   ir  z<datetime64[%s]r   z<timedelta64[%s])r   
datetime64timedelta64r[  )unitr   r   r   r0     s    


z*TestNPFunctions.test_isnat.<locals>.valuesTr{  )rc   r   
isinstancer   r  r)  r  r  r   r   r   
test_isnat  s   
zTestNPFunctions.test_isnatc           	         s   dd } fdd}t tfD ]l}tdd|}t j||}| D ]X}d|i}d|jv r=d tjfD ]
}||d	< || q1n|| tjd
tj	d}d|i}d|jv rsd |d	< ||d| tj|d	< ||d| tj	|d	< ||d| q!||d| q!qd S )Nc                  s   s    dV  dV  dV  dV  g dV  ddgV  dV  dV  g dg dfV  t g V  t dV  t dd	dV  t dd	djV  d
d } | dV  | dV  | dV  | dV  dS )a}  
            To quote from: https://docs.scipy.org/doc/numpy/reference/generated/numpy.asarray.html    # noqa: E501
            Input data, in any form that can be converted to an array.
            This includes:
            * lists
            * lists of tuples
            * tuples
            * tuples of tuples
            * tuples of lists
            * ndarrays
            rQ  r7  Frv   r  r  r  r  r  c                 S   s   t  }| D ]}|| q|S r   r   r.   )r0   r'   r  r   r   r   	make_list3     zITestNPFunctions.test_asarray.<locals>.input_variations.<locals>.make_list)r?  r  r  r  r  N)r   r[  rf  r  ri  )r  r   r   r   r    s&   




z6TestNPFunctions.test_asarray.<locals>.input_variationsc                    sd   | di |}|r  ||d u  d S   ||d u tj||d    |j|d k d S )Nr'   r   r   )r  r   r`  r8  r   )jittedexpect_samer0  returnedr  r   r   check_pass_through@  s   z8TestNPFunctions.test_asarray.<locals>.check_pass_throughTr{  r'   kwsr   r_  r   F)
r   r   r   r   r1  r  r   r\  rf  r'  )	r  r  r  r*  r5  r5  r   r0  r  r   r  r   test_asarray  s2   (






zTestNPFunctions.test_asarrayc           
      C   s`   dd }dd }dd }dd }||||g}|D ]}t d	d
|}| }| }	| ||	 qd S )Nc                   S   s
   t dS Nr  r   r   r   r   r   case1f  r   z3TestNPFunctions.test_asarray_literal.<locals>.case1c                  S      d} t | S r  r   r  r   r   r   case2i     
z3TestNPFunctions.test_asarray_literal.<locals>.case2c                  S   r  )Nu+   大处 着眼，小处着手。大大大处r   r  r   r   r   case3m  r  z3TestNPFunctions.test_asarray_literal.<locals>.case3c                  S   r  )N r   r  r   r   r   case4q  r  z3TestNPFunctions.test_asarray_literal.<locals>.case4Tr{  )r   r)  )
r  r  r  r   r  funcsr*  r5  r7  r6  r   r   r   test_asarray_literald  s   z$TestNPFunctions.test_asarray_literalc                    sp      tddt  fdd}dd }dd }d	d
 }dd }||  ||  ||  ||  d S )NTr{  c                    rA  )Nz?asarray support for List is limited to Boolean and Number types)r  r   r  r  r  )alistry  rB  r   r   test_reject  s   
zQTestNPFunctions.test_asarray_rejects_List_with_illegal_dtype.<locals>.test_rejectc                  S   s   t  } | d  | S r   r  )lr   r   r   make_none_typed_list  s   
zZTestNPFunctions.test_asarray_rejects_List_with_illegal_dtype.<locals>.make_none_typed_listc                  S   s$   t  } t  }|d | | | S )Nrv   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'   rv   )r   r	   r.   )r  r  r   r   r   make_nested_list_with_dict  s
   
z`TestNPFunctions.test_asarray_rejects_List_with_illegal_dtype.<locals>.make_nested_list_with_dictc                  S   s   t  } dD ]}| | q| S )N)r'   bcdefr  )r  r  r   r   r   make_unicode_list  r  zWTestNPFunctions.test_asarray_rejects_List_with_illegal_dtype.<locals>.make_unicode_list)r  r   r   )r  r  r  r	  r
  r  r   rB  r   ,test_asarray_rejects_List_with_illegal_dtype}  s   


z<TestNPFunctions.test_asarray_rejects_List_with_illegal_dtypec                 C   s   dd }t }tdd|}| D ]0\}}|d u r!||}||}n|||d}|||d}| || | t|jtj|j qt}tdd|}t	g d}||}||}| || | t|jtj|j d S )Nc                   s   s    t g dd fV  t jddgt jdt jfV  t jddgt jdt jfV  t jddgt jdt jfV  t jddgt jdt jfV  d S )Nr  rG  r  r   )r   r[  r'  r  r(  r\  r   r   r   r   r6    s    z-TestNPFunctions.test_asfarray.<locals>.inputsTr{  r   r  )
r   r   r)  r  r   r  r   inexactr   r[  )r  r6  r*  r5  r/   r  r7  r6  r   r   r   test_asfarray  s$   
zTestNPFunctions.test_asfarrayc              	      s  t }t|}t}t|}||f||ffD ]\  fdd}tdtdtddgddggtg tg g gg}tjtjtj	tj
tjtjtjtjg}dd	 t||D }dd
ddg ddg}	t||	D ] }
||
dd ||
dd ||
dd ||
dd ||
dd qktd}dgdgdgfD ]}
|||
d ||t|
d qtd}ddgddgddgddgddgddgddgfD ]}
|||
d ||t|
d q||tjddgtjdd |tdtdd qd S )Nc                    s    | | | | d S r   r  r   nbfuncr*  r  r   r   r>    s   z*TestNPFunctions.test_repeat.<locals>.checkrv   r  r   rG  r  c                 s   s"    | ]\}}t j||d V  qdS )r   Nr  )rK  r'   tr   r   r   	<genexpr>  s     z.TestNPFunctions.test_repeat.<locals>.<genexpr>r?  TrQ  r  )r   r  r   r_  )r   r   r   r   r'  rf  r[  uint32r  uint64r  r'  rY  r(  r\  r  r  rP  )r  	np_pyfunc	np_nbfuncarray_pyfuncarray_nbfuncr>  target_numpy_valuestarget_numpy_typestarget_numpy_inputstarget_non_numpy_inputsr  onetwor   r  r   test_repeat  sl   	

2zTestNPFunctions.test_repeatc           	   
   C   st  t }t|}t}t|}|   ||f||ffD ]\}}| t}|tdd W d    n1 s5w   Y  | dt	|j
 | t}|tdd W d    n1 s[w   Y  | dt	|j
 | t}|tdtddg W d    n1 sw   Y  | dt	|j
 | t}|tdtg d W d    n1 sw   Y  | dt	|j
 | t}|td	tg d
 W d    n1 sw   Y  | dt	|j
 | t}|tdddg W d    n	1 sw   Y  | dt	|j
 dD ]!}| t |td| W d    n	1 s0w   Y  qqd S )Nrv   r  z#negative dimensions are not allowedr?  zIThe repeats argument must be an integer or an array-like of integer dtyperG  r  z(operands could not be broadcast togetherrE  r  )Tr'   1)r   r   r   r  r  r  r   r'  r  r  r  r   r[  )	r  r  r  r  r  r*  r  ry  repr   r   r   test_repeat_exception  sj   z%TestNPFunctions.test_repeat_exceptionc           
      C   s  t }tt }tg dtg dtg dgtg dtg dtg dgdftdgtd	ggtd
gtdggdftd	ggd td
ggd dfttd
ddtjddggd td
ddtjddggd dfttd
ddtjddgggd td
ddtjddgggd dfttd
ddtjddggd td
ddtjddggd dfg}tdtddfD ]J}||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 )N)FFFFTF)FFTr  r  r  g.@TFrv   rG  r   r  r  rE  r  y      @       @r_  )rE  rG  )r   r   r   r[  r  r  rf  r  r.   r)  r   )
r  r  r  
test_casesr   r   r   r   np_pyfunc_defaultsnp_nbfunc_defaultsr   r   r   test_selectE  sT   

$"$ "$$$&
zTestNPFunctions.test_selectc           	      C   s.  t t}td}|   tdtg dgtdtdddgdtd	ftdtd
gtdgtdggdtdftdgtd
ggtdggtdgggdtdftdtd
gtdtdgdtd	fttdddtj	ddgtdddtj	ddgdtdfdgdgdgtdf|dk 
t|dk
tg||d gdtdf|dk|dk|dk|dkg||d |gdtdfdgd tdggd dtdftd
ggd dgd dtdff
D ],\}}}}}| |}|||| W d    n	1 sw   Y  | |t|j qd S )Nr_  Tr%  rv   r  r  r  r   z/condlist arrays must be of at least dimension 1FrG  zHcondlist and choicelist elements must have the same number of dimensionsrE  r  z"condlist must be a List or a Tuplezdefault must be a scalarz%condlist arrays must contain booleansr  r  ra  z7list of cases must be same length as list of conditionsr  r  z items of condlist must be arraysrP  z"items of choicelist must be arrays)r   r   r   rf  r  r[  r  r   r  r  r  r  r  r  r  r  r  )	r  r  r   r   r   r   expected_errorexpected_textry  r   r   r   test_select_exceptionx  sT   
(&&*
/z%TestNPFunctions.test_select_exceptionc           	   	      s8   fdd}|t  |t |t |t t}tt}dD ]+}dD ]&}|||}|||}ts6t dv r@ j	||ddd q" j	||d	d
 q"qdD ]%} 
t}||d W d    n1 scw   Y   dt|j qLdD ]%} 
t}|d| W d    n1 sw   Y   dt|j qtd S )Nc              	      s   | }t | }dD ]}||}||} j||dd qdD ]$} t}|d W d    n1 s3w   Y   dt|j qd S )Nr   rv   rE  r  r  r  r'   r@  rQ  r@  M must be an integer)r   r)  r  r   r  r  r  )rU  r  r  r   r7  r6  r  r  r   r   check_window  s   
z4TestNPFunctions.test_windowing.<locals>.check_windowr-  )rA  r  g      ,@)ppc64leaarch64r  rG  r  r  r.  r/  r?  r0  )r'   rQ  rE  z beta must be an integer or float)r   r   r   r  r  r   r   platformmachiner)  r  r   r  r  r  )	r  r1  r  r  r   r  r7  r6  r  r   r  r   test_windowing  s<   


zTestNPFunctions.test_windowingc                 C   s4  t }tdd|}tg dg dgtg dg dgftg dg dgdftjg dtjdtjg dtjdfdtdd	gtg dftg dtg dg dgftg dg dgtg dftd
dd	dtdd	d	fg}|D ]\}}|||}|||}| || qd S )NTr{  r  r  r  r  r   r  rv   rG  rq  ra  r  r  )	r  r   r   r[  r  rY  rf  r  r)  r  r*  r5  pairsr   r   r7  r6  r   r   r   
test_cross  s<   +

zTestNPFunctions.test_crossc                 C   s  t }tdd|}|   | t}|tdtd W d    n1 s(w   Y  | dt|j	 | t}|t
dt
d W d    n1 sQw   Y  | dt|j	 | d	t|j	 | t}|td
dtdd d d d W d    n1 sw   Y  | dt|j	 | t}|td
dtd
d d d d W d    n1 sw   Y  | dt|j	 | t}|tg dtg d W d    n1 sw   Y  | dt|j	 d S )NTr{  r  r  z)Incompatible dimensions for cross productr  r  z Dimensions for both inputs is 2.z+`cross2d(a, b)` from `numba.np.extensions`.r  rG  r  ra  r  rD  )r  rG  zDimensions for both inputs is 2r  r  Inputs must be array-like.)r  r   r  r  r  r   rf  r  r  r  r[  r  r   setr  r   r   r   test_cross_exceptions  sr   

z%TestNPFunctions.test_cross_exceptionsc                 C   s  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 ]\}}|||}|||}| || qqd S )Nrv   rG  r  rE  r7  r   )r  r  rq  ra  r  )	r  r   r   r[  r  rY  rf  r  r)  r8  r   r   r   test_cross2dQ  s6   &

zTestNPFunctions.test_cross2dc                 C   s   t }|   | t}|tdtd W d    n1 s!w   Y  | dt|j | t}|t	d
dt	dd d d 
d W d    n1 sUw   Y  | dt|j | t}|tddgtd	d
g W d    n1 sw   Y  | dt|j d S )Nr  r  z,Incompatible dimensions for 2D cross productra  rD  r  rv   rG  r  rE  r<  )r   r  r  r  r   r[  r  r  r  rf  r  r   r=  r>  r   r   r   test_cross2d_exceptions  s@   

z'TestNPFunctions.test_cross2d_exceptionsc                 C   s   t }tdd|}|   tg dtjftg dfg dftddgddggtjfd	tjftjddgtjd
ftddddfg}|D ]}|| }|| }| 	|| qJd S )NTr{  r  r  rv   rG  r  r  )r  r  r   rq  ra  )
r
  r   r  r   r[  r'  r  rf  r  r)  )r  r*  r5  r9  pairr7  r6  r   r   r   test_asarray_chkfinite  s4   "z&TestNPFunctions.test_asarray_chkfinitec                 C   sZ  t ddt}|   | t}|d W d    n1 sw   Y  d}| |t|j | t}|t	
ddt	jdg W d    n1 sKw   Y  | dt|j | t}|t	
ddt	jdg W d    n1 suw   Y  | dt|j | t}|t	
g d	d
 W d    n1 sw   Y  | dt|j d S )NTr{  rG  z7The argument to np.asarray_chkfinite must be array-liker  rE  z#array must not contain infs or NaNsrv   r  r'  z!dtype must be a valid Numpy dtype)r   r
  r  r  r   r  r  r  r  r   r[  r  r  )r  r5  ry  r   r   r   r   !test_asarray_chkfinite_exceptions  s&   
z1TestNPFunctions.test_asarray_chkfinite_exceptionsc           	      C   sz   t }tdd|}dd }| D ]*}t|j |jD ]}t|j |jD ]}||||}||||}| || q$qqd S )NTr{  c                   s   s<    t dV  t dddV  t ddddV  d S )Nr_  rG  rE  r  r  r  r  r   r   r   r   r    s   z9TestNPFunctions.test_swapaxes_basic.<locals>.a_variations)r  r   rR  ndimr)  )	r  r*  r5  r  r'   r  r  r7  r6  r   r   r   test_swapaxes_basic  s   
z#TestNPFunctions.test_swapaxes_basicc                 C   s  t }tdd|}|   | t}|ddd W d    n1 s#w   Y  | dt|j | t}|t	ddd W d    n1 sJw   Y  | dt|j | t}|t	ddd W d    n1 sqw   Y  | dt|j | t
}|t	dd	d W d    n1 sw   Y  | d
t|j | t
}|t	ddddd W d    n1 sw   Y  | dt|j d S )NTr{  r   r   rL  r  z.The second argument "axis1" must be an integerz-The third argument "axis2" must be an integerrv   zIThe second argument "axis1" is out of bounds for array of given dimensionr  rG  r  zHThe third argument "axis2" is out of bounds for array of given dimension)r  r   r  r  r   r  r  r  r   rf  r  r  r  r   r   r   test_swapaxes_exception  sB   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 ]}||}t j
||d}| |||||| q/d S )Nr  )r  rv   r  rG  c                 S   s   t j| |d dS r+   r   take_along_axisr'   r  r   r   r   	axis_none"  s   z7TestNPFunctions.test_take_along_axis.<locals>.axis_nonerv   rG  r   c                       t  fdd}|S )Nc                       t | | S r   rG  rI  r,   r   r   impl+     z?TestNPFunctions.test_take_along_axis.<locals>.gen.<locals>.implr   r-   rM  r   r,   r   gen*     z1TestNPFunctions.test_take_along_axis.<locals>.genr  r,   )r   rf  r  r   r[  r  r)  r  rR  rD  argsort)r  r'   rJ  r{   rQ  r  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  rv   )rv   rG  rE  r   c                    rK  )Nc                    rL  r   rG  rI  r,   r   r   rM  >  rN  zLTestNPFunctions.test_take_along_axis_broadcasting.<locals>.gen.<locals>.implrO  rP  r   r,   r   rQ  =  rR  z>TestNPFunctions.test_take_along_axis_broadcasting.<locals>.gen)rv   r  )r  rG  rE  )r   r'  intpr  r)  r  r  )r  r/   rU  rQ  r  r>  r7  actualr   r   r   !test_take_along_axis_broadcasting5  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 d    n1 s6w   Y  | dt	|j
 | t}|d|| W d    n1 s[w   Y  | dt	|j
 | t}|d|| W d    n1 sw   Y  | dt	|j
 | t}|d d| W d    n1 sw   Y  | dt	|j
 | t}|d |d W d    n1 sw   Y  | dt	|j
 | t}|d |t ddg W d    n1 sw   Y  | dt	|j
 tdd }| t}|||d W d    n	1 sw   Y  | dt	|j
 | t}|d|t jddgt jd W d    n	1 sMw   Y  | dt	|j
 | t}|d || W d    n	1 ssw   Y  | dt	|j
 | t}|d|t jdt jd W d    n	1 sw   Y  | dt	|j
 d S )Nr  rG  r  r   rv   r   r;  c                    rK  )Nc                    rL  r   rG  rI  r,   r   r   rM  T  rN  zJTestNPFunctions.test_take_along_axis_exceptions.<locals>.gen.<locals>.implrO  rP  r   r,   r   rQ  S  rR  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 arrayrE  z"indices" must be an arrayrA  r?  z#indices array must contain integersc                 S   rD   r   rG  )r'   r  r-   r   r   r   not_literal_axist  rN  zITestNPFunctions.test_take_along_axis_exceptions.<locals>.not_literal_axiszaxis must be a literal valuez'must have the same number of dimensionsrD  zdimensions don't match)r   rf  r  r[  r  r'  r  r   r  r  r  r   r  )r  arr2dindices_noner{   rQ  r  rZ  r   r   r   test_take_along_axis_exceptionsK  sj   
 z/TestNPFunctions.test_take_along_axis_exceptionsr   r  )r  r  r  __doc__r  no_pyobj_flagsr9  r]  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r(  r*  unittestskipIfr
   r,  r-  r.  r1  r<  rE  rK  rU  rY  rZ  r^  re  rf  staticmethodrc  rw  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r   r  r  r  r	  r  r  r  r  r#  r%  r&  r'  r(  r:  r?  rA  rE  rF  rJ  rK  rM  rV  rW  rX  rY  r[  r\  rc  rd  rg  rj  skiprk  rn  ro  rr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r$  r)  r,  r6  r:  r>  r?  r@  rB  rC  rE  rF  rV  rY  r]  __classcell__r   r   r  r   r    sf   
098'!
 	W'#
5#'


e""
$



=




1
O6B(#;
.-U@
 )-1E)N*E:37.3A.%,%r  c                   @   sV   e Zd ZdZdd Zdd Z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  rU  attrsrU   r*  r5  r7  r6  attrr   r   r   r>    s   zTestNPMachineParameters.checkc                 C   s4   |j }|j }| j||f }tt|dd t d S )Nz<string>execfoo)r  templateevalr$  locals)r  basefunctytystrbasestrfuncstrr   r   r   create_harcoded_variant  s
   
z/TestNPMachineParameters.create_harcoded_variantc                 C   s   d}|  t| d S )N)ibetaitmachepr:  negepepsnegiexpminexpxminmaxexpxmaxirndngrdepsilontinyhuge	precision
resolution)r>  rX   )r  rg  r   r   r   test_MachAr  s   z#TestNPMachineParameters.test_MachArc                 C   s   t jt jt jt jg}d}|D ]}| t||d | t j|}| || q| t	}t
ddt}|d W d    n1 sBw   Y  d}| |t|j |   t
ddt}|t d W d    d S 1 spw   Y  d S )N)r:  rx  ry  rv  r  r|  rw  nexpnmantr  r  r  bitsrv   Tr{  r  z(Unknown attribute 'machar' of type finfor  )r   r'  rY  r(  r\  r>  re   rs  r  r   r   rf   r  r  r  r  r  )r  r   rg  ro  hc_funcr  r5  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 ]}| 	t
||d | t j
|}| 	|| q|   tddt
}|t d W d    d S 1 sMw   Y  d S )N)r  r  r  rv   Tr{  r  )r   r  r  r  r  rk  uint16r  r  r>  rd   rs  r  r   rY  )r  r   rg  ro  r  r5  r   r   r   
test_iinfo  s   
"z"TestNPMachineParameters.test_iinfo)rv      zNeeds NumPy >= 1.22c                 C   sz   d}t jdd}t jd|td tdd }|  W d    n1 s$w   Y  | t|d | d	t|d
  d S )Nz(`np.MachAr` is deprecated \(NumPy 1.22\)T)recordalways)messagecategoryc                   S   s
   t  jS r   )r   rW   r:  r   r   r   r   <lambda>  s   
 zJTestNPMachineParameters.test_np_MachAr_deprecation_np122.<locals>.<lambda>rv   z`np.MachAr` is deprecatedr   )	warningscatch_warningsfilterwarningsr   r   r  rZ  r  r  )r  r   rB   fr   r   r    test_np_MachAr_deprecation_np122  s   	z8TestNPMachineParameters.test_np_MachAr_deprecation_np122N)r  r  r  rk  r>  rs  r  r  r  r`  
skipUnlessr
   r   run_test_in_subprocessr  r   r   r   r   re    s    	re  __main__)Nr   r   )rq   rP  r%  )r   N)NF)NTFN)NT)NN)r   r   F)r  r  r4  	functoolsr   r  numpyr   numba.core.compilerr   r  r   r   r   
numba.corer   numba.typedr   r	   numba.np.numpy_supportr
   numba.core.errorsr   r   numba.core.configr   r   numba.core.utilsr   numba.np.extensionsr   numba.tests.supportr   r   r   r   r`  r_  nrtr   r    r#   r%   r)   r.   r3   r5   r:   r<   r?   rC   rF   rH   rO   rQ   rS   rV   rX   rZ   r[   r\   r]   r^   r_   rb   rc   rd   re   rf   rh   rj   rk   rp   rs   ru   rx   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   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  re  r  mainr   r   r   r   <module>   s0  



























                                  
\