o
    iV                    @   sV  d dl Z d dlZd dlZd dlZd dlmZ d dl mZ d dlmZ d dl	Z
d dlmZmZmZ d dlmZ d dlmZmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZ d dlmZ d dlm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d dl)Z)dd Z*dd Z+dd Z,dd Z-dd Z.d%ddZ/dd Z0dd Z1dd  Z2d!d" Z3d#d$ Z4d%d& Z5d'd( Z6d&d)d*Z7d+d, Z8d-d. Z9d/d0 Z:d1d2 Z;d3d4 Z<d5d6 Z=d7d8 Z>d9d: Z?d;d< Z@d=d> ZAd?d@ ZBd'dAdBZCd'dCdDZDd(dGdHZEdIdJ ZFdKdL ZGdMdN ZHdOdP ZIdQdR ZJdSdT ZKdUdV ZLdWdX ZMd)dZd[ZNd\d] ZOd)d^d_ZPd`da ZQd*dcddZRd+dedfZSd+dgdhZTdidj ZUdkdl ZVdmdn ZWd,dpdqZXd-dsdtZYdudv ZZd'dwdxZ[d+dydzZ\d&d{d|Z]d}d~ Z^d+ddZ_dd Z`d+ddZad'ddZbd.ddZcdd Zdd+ddZedd Zfd+ddZgdd Zhd+ddZid'ddZjd.ddZkdd Zld+ddZmd/ddZndd Zodd Zpd0ddZqd1ddZrd2ddZsdd Ztdd Zudd Zve
jwfddZxdd Zydd Zzdd Z{dd Z|dd Z}dd Z~dd Zdd ZddÄ Zddń Zd(ddǄZd2ddɄZdd˄ Zdd̈́ Zddτ Zd+ddфZddӄ ZddՄ Zddׄ Zddل Zddۄ Zdd݄ Zdd߄ Zd3ddZdd Zdd Zdd Zdd Zd'ddZd4ddZdd Zdd Zdd Zdd Zdd Zdd Zd5ddZd d Zdd Zd+ddZdd Zd%dd	Zd
d Zd%ddZdd Zd%ddZd%ddZd6ddZdd Zd%ddZd%ddZd6ddZG dd de!e ZG d d! d!e ZG d"d# d#e Zed$kr)e)  dS dS (7      N)partial)product)dedent)jitnjittypeof)types)ListDict)numpy_version)TypingErrorNumbaDeprecationWarning)	IS_32BITS)pysignaturecross2d)	TestCaseMemoryLeakMixin
needs_blasrun_in_subprocessskip_if_numpy_2
IS_NUMPY_2IS_MACOS_ARM64REDUCED_TESTINGskip_if_reduced_testingc                 C   
   t | S N)npsincx r!   [/home/ubuntu/transcripts/venv/lib/python3.10/site-packages/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"   intersect1d_2-   r*   r1   Fc                 C      t | ||S r   r/   r-   r.   assume_uniquer!   r!   r"   intersect1d_31      r5   c                 C      t j| ||dS Naxis)r   append)arrvaluesr:   r!   r!   r"   r;   5      r;   c                 C      t j| |dS r8   )r   count_nonzero)r<   r:   r!   r!   r"   r@   9   r6   r@   c                 C   r'   r   )r   delete)r<   objr!   r!   r"   rA   =   r*   rA   c                 C   r   r   r   diffr-   r!   r!   r"   diff1A   r#   rF   c                 C   r'   r   rC   )r-   nr!   r!   r"   diff2E   r*   rH   c                 C   r   r   r   bincountrE   r!   r!   r"   	bincount1I   r#   rK   c                 C   r?   )NweightsrI   )r-   wr!   r!   r"   	bincount2M   r6   rO   c                 C   r2   r   rI   )r-   rN   	minlengthr!   r!   r"   	bincount3Q   r6   rQ   c                 C   r'   r   r   searchsortedr-   vr!   r!   r"   rS   U   r*   rS   c                 C      t j| |ddS )NleftsiderR   rT   r!   r!   r"   searchsorted_leftY   r>   rZ   c                 C   rV   )NrightrX   rR   rT   r!   r!   r"   searchsorted_right]   r>   r\   c                  G   
   t j|  S r   )r   digitizeargsr!   r!   r"   r^   a   r#   r^   c                  G   r]   r   )r   	histogramr_   r!   r!   r"   ra   e   r#   ra   c                  G   s   t  S r   )r   MachArr_   r!   r!   r"   machari      rc   c                 C   r   r   )r   	iscomplexr   r!   r!   r"   re   m   r#   re   c                 C   r   r   )r   iscomplexobjr   r!   r!   r"   rf   q   r#   rf   c                 C   r   r   )r   isscalarr   r!   r!   r"   rg   u   r#   rg   c                 C   r   r   )r   isrealr   r!   r!   r"   rh   y   r#   rh   c                 C   r   r   )r   	isrealobjr   r!   r!   r"   ri   }   r#   ri   c                 C   r'   r   )r   isneginfr    outr!   r!   r"   rj      r*   rj   c                 C   r'   r   )r   isposinfrk   r!   r!   r"   rm      r*   rm   h㈵>:0yE>c                 C      t | ||||S r   )r   iscloser-   r.   rtolatol	equal_nanr!   r!   r"   rq         rq   c                 C   r   r   )r   isnatr   r!   r!   r"   rw      r#   rw   c                  G   r]   r   )r   iinfor_   r!   r!   r"   rx      r#   rx   c                  G   r]   r   )r   finfor_   r!   r!   r"   ry      r#   ry   c                  G   s   t j|  jS r   )r   ry   rc   r_   r!   r!   r"   finfo_machar   r*   rz   c                 C   r   r   r   fliplrrE   r!   r!   r"   r|      r#   r|   c                 C   r   r   r   flipudrE   r!   r!   r"   r~      r#   r~   c                 C   r   r   )r   fliprE   r!   r!   r"   r      r#   r   c                 C   r'   r   r   logspacestartstopr!   r!   r"   	logspace2   r*   r   2   c                 C   r7   Nnumr   r   r   r   r!   r!   r"   	logspace3   r>   r   c                 C   r'   r   r   	geomspacer   r!   r!   r"   
geomspace2   r*   r   c                 C   r7   r   r   r   r!   r!   r"   
geomspace3   r>   r   c                 C   r   r   r   rot90rE   r!   r!   r"   r      r#   r      c                 C   r'   r   r   )r-   kr!   r!   r"   rot90_k   r*   r   c                 C   r7   r8   )r   array_splitr-   indicesr:   r!   r!   r"   r      r>   r   c                 C   r7   r8   )r   splitr   r!   r!   r"   r      r>   r   c                 C   r'   r   )r   vsplitr-   
ind_or_secr!   r!   r"   r      r*   r   c                 C   r'   r   )r   hsplitr   r!   r!   r"   r      r*   r   c                 C   r'   r   )r   dsplitr   r!   r!   r"   r      r*   r   validc                 C   r7   Nmode)r   	correlater-   rU   r   r!   r!   r"   r      r>   r   fullc                 C   r7   r   )r   convolver   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   r   r!   r!   r"   tri_n_k   r*   r   c                 C   r2   r   r   r   r   r   r!   r!   r"   	tri_n_m_k   r6   r   c                 C   r   r   r   trilmr!   r!   r"   tril_m   r#   r   c                 C   r'   r   r   r   r   r!   r!   r"   tril_m_k   r*   r   c                 C   r   r   r   tril_indicesrG   r!   r!   r"   tril_indices_n   r#   r   c                 C   r'   r   r   rG   r   r!   r!   r"   tril_indices_n_k   r*   r   c                 C   r?   Nr   r   rG   r   r!   r!   r"   tril_indices_n_m   r6   r   c                 C   r2   r   r   rG   r   r   r!   r!   r"   tril_indices_n_k_m  r6   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<   r   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   r?   r   r   r   r!   r!   r"   triu_indices_n_m  r6   r   c                 C   r2   r   r   r   r!   r!   r"   triu_indices_n_k_m!  r6   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   c                 C   r2   r   )r   vanderr    r   
increasingr!   r!   r"   r   -  r6   r   c                 C   r'   r   )r   	partitionr-   kthr!   r!   r"   r   1  r*   r   c                 C   r'   r   )r   argpartitionr   r!   r!   r"   r   5  r*   r   Tc                 C   rp   r   )r   cov)r   yrowvarbiasddofr!   r!   r"   r   9  rv   r   c                 C   r2   r   )r   corrcoefr    r   r   r!   r!   r"   r   =  r6   r   c                 C   r2   r   )r   ediff1d)aryto_endto_beginr!   r!   r"   r   A  r6   r   c                 C   r'   r   )r   roll)r-   shiftr!   r!   r"   r   E  r*   r   c                 C   r   r   r   asarrayrE   r!   r!   r"   r   I  r#   r   c                 C   r?   Ndtyper   r-   r   r!   r!   r"   asarray_kwsM  r6   r   c                 C   r?   r   r   asfarrayr   r!   r!   r"   r   Q  r6   r   c                 C   r   r   r   rE   r!   r!   r"   asfarray_default_kwargU  r#   r   c                 C   r'   r   )r   extract	conditionr<   r!   r!   r"   r   Y  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   r?   Ndxr   r   r  r!   r!   r"   np_trapz_dxe  r6   r  c                 C   r2   r   r   r   r    r  r!   r!   r"   np_trapz_x_dxi  r6   r  c                 C   r   r   r   	trapezoidr   r!   r!   r"   np_trapezoidm  r#   r  c                 C   r'   r   r  r   r!   r!   r"   np_trapezoid_xq  r*   r	  c                 C   r?   r   r  r  r!   r!   r"   np_trapezoid_dxu  r6   r
  c                 C   r2   r   r  r  r!   r!   r"   np_trapezoid_x_dxy  r6   r  c                 C   rp   r   )r   allcloserr   r!   r!   r"   np_allclose}  rv   r  c                 C   r7   )Nr:   rM   )r   average)r-   r:   rM   r!   r!   r"   
np_average  r>   r  c                 C   r2   r   )r   interpr    xpfpr!   r!   r"   r    r6   r  c                 C   r'   r   )r   repeatr-   repeatsr!   r!   r"   	np_repeat  r*   r  c                 C   s   t | |S r   )r   r   r  r  r!   r!   r"   array_repeat  r>   r  c                 C   r7   )N)defaultr   select)condlist
choicelistr  r!   r!   r"   	np_select  r>   r  c                 C   r'   r   r  )r  r  r!   r!   r"   np_select_defaults  r*   r   c                 C   r   r   )r   bartlettr   r!   r!   r"   np_bartlett  r#   r#  c                 C   r   r   )r   blackmanr"  r!   r!   r"   np_blackman  r#   r%  c                 C   r   r   )r   hammingr"  r!   r!   r"   
np_hamming  r#   r'  c                 C   r   r   )r   hanningr"  r!   r!   r"   
np_hanning  r#   r)  c                 C   r'   r   )r   kaiser)r   betar!   r!   r"   	np_kaiser  r*   r,  c                 C   r'   r   )r   crossr,   r!   r!   r"   np_cross  r*   r.  fbc                 C   r'   r   )r   
trim_zeros)r-   trimr!   r!   r"   np_trim_zeros  r*   r2  c                 C   s
   t | |S r   r   r,   r!   r!   r"   
nb_cross2d  r#   r3  c                 C   r   r   r{   rE   r!   r!   r"   flip_lr  r#   r4  c                 C   r   r   r}   rE   r!   r!   r"   flip_ud  r#   r5  c                 C   r'   r   )r   union1dr,   r!   r!   r"   
np_union1d  r*   r7  c                 C   r'   r   )r   asarray_chkfiniter   r!   r!   r"   np_asarray_chkfinite  r*   r9  -DT!@c                 C   s   t j| |||dS Nperiodr   unwrap)pdiscontr:   r>  r!   r!   r"   r@    rv   r@  c                 C   r   r   r?  )rA  r!   r!   r"   unwrap1  r#   rC  c                 C   r?   r<  r?  )rA  r>  r!   r!   r"   unwrap13  r6   rD  c                 C   r7   )Nr>  rB  r?  )rA  r>  rB  r!   r!   r"   	unwrap123  r>   rF  c                 C   s   || v S r   r!   )r-   keyr!   r!   r"   array_contains  rd   rH  c                 C   r2   r   )r   swapaxes)r-   a1a2r!   r!   r"   rI    r6   rI  c                 C   r2   r   )r   moveaxis)r-   sourcedestinationr!   r!   r"   rL    r6   rL          c                 C   s   t j| ||||dS )Ncopynanposinfneginf)r   
nan_to_num)XrQ  rR  rS  rT  r!   r!   r"   rU    s   rU  c                 C   r   r   )r   r   )
dimensionsr!   r!   r"   
np_indices  r#   rX  c                 C   r   r   r   diagflat)rU   r!   r!   r"   	diagflat1  r#   r[  c                 C   r'   r   rY  )rU   r   r!   r!   r"   	diagflat2  r*   r\  c                 C   r'   r   r   setxor1dr,   r!   r!   r"   np_setxor1d_2  r*   r_  c                 C   r2   r   r]  r3   r!   r!   r"   np_setxor1d_3  r6   r`  c                 C   r'   r   r   	setdiff1dr,   r!   r!   r"   np_setdiff1d_2  r*   rc  c                 C   r2   r   ra  r3   r!   r!   r"   np_setdiff1d_3  r6   rd  c                 C   r'   r   r   in1dr,   r!   r!   r"   	np_in1d_2  r*   rg  c                 C   r7   Nr4   re  r3   r!   r!   r"   
np_in1d_3a	  r>   rj  c                 C   r7   Ninvertre  r-   r.   rm  r!   r!   r"   
np_in1d_3b  r>   ro  c                 C      t | |||S r   re  r-   r.   r4   rm  r!   r!   r"   	np_in1d_4  r>   rr  c                 C   r'   r   r   isinr,   r!   r!   r"   	np_isin_2  r*   ru  c                 C   r7   rh  rs  r3   r!   r!   r"   
np_isin_3a  r>   rv  c                 C   r7   rk  rs  rn  r!   r!   r"   
np_isin_3b  r>   rw  c                 C   rp  r   rs  rq  r!   r!   r"   	np_isin_4!  r>   rx  c                       s
  e Zd ZdZ fddZ		dddZdd	 Zd
d Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Z d>d? Z!d@dA Z"dBdC Z#dDdE Z$dFdG Z%dHdI Z&dJdK Z'dLdM Z(dNdO Z)dPdQ Z*dRdS Z+dTdU Z,dVdW Z-dXdY Z.dZd[ Z/d\d] Z0d^d_ Z1d`da Z2dbdc Z3ddde Z4ddfdgZ5dhdi Z6djdk Z7dldm Z8dndo Z9dpdq Z:drds Z;dtdu Z<dvdw Z=dxdy Z>e?dzd{ Z@d|d} ZAd~d ZBdd ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdddZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd ZcddĄ ZdddƄ ZeddȄ Zfddʄ Zgdd̄ Zhdd΄ ZiddЄ Zjdd҄ ZkddԄ Zlddք Zmdd؄ Zneoddڄ Zpdd܄ Zqeoddބ Zreodd Zseodd Zteodd Zudd Zveodd Zweodd Zxeodd Zyeodd Zzdd Z{dd Z|dd Z}dd Z~dd Zdd Zdd Zdd Zdd  Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zeed+d,d- Zeed.kd/efd0d1Zeed+d2d3 Zeed.kd/efd4d5Zeed+d6d7 Zeed.kd/ed8efd9d:Zeed+d;d< Zeed.kd/efd=d>Zeed+d?d@ Zeed.kd/efdAdBZeed+dCdD Zeed.kd/efdEdFZdGdH ZdIdJ ZdKdL ZdMdN ZdOdP ZdQdR ZdSdT ZdUdV ZdWdX ZdYdZ Zd[d\ Zd]d^ Zd_d` Zeeoedadbdc Zddde Zdfdg Zdhdi Zdjdk Zdldm Zdndo ZÐdpdq ZĐdrds ZŐdtdu Zeǐdvdw ZȐdxdy Zɐdzd{ Zʐd|d} Zːd~d Z̐dd Z͐dd Zΐdd Zϐdd ZАdd Zѐdd ZҐ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 Ze?dd Zdd Zdd Zdd Ze?dd Zdd ZddÄ ZdĐdń Ze?dƐdǄ Zeed.kdȡdɐdʄ Zeed.kdȡdːd̄ Zeed.kdȡd͐d΄ Zeed.kdȡdϐdЄ Zeed.kdȡdѐd҄ ZedӐdԄ Ze?dՐdք Ze?dאd؄ Zdِdڄ Zedېd܄ Zedݐdބ Zedߐd Zdd Zdd Z   ZS (  TestNPFunctionsz,
    Tests for various Numpy functions.
    c                    s    t t|   tjd| _d S )N*   )superry  setUpr   randomRandomStaterndself	__class__r!   r"   r|  *  s   zTestNPFunctions.setUpNFc              
   K   s   t ||D ]b\}	}
|du rdg }}t ||D ]O\}}t|	f| |}||
g|R  }||
g|R  }z|	j}W n tyD   |	}Y nw |tjtjfv rOdnd}d|
|f }| j||f||||d| qqdS )aC  
        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
        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!   singledoublezfor input %r with prec %r)precmsgignore_sign_on_zeroabs_tol)zipr   r   AttributeErrorr   float32	complex64assertPreciseEqual)r  pyfuncx_typesx_valuesfunc_extra_typesfunc_extra_argsr  r  kwargstxvxxtypesxargscfuncgotexpectedscaltyr  r  r!   r!   r"   	run_unary.  s6   


zTestNPFunctions.run_unaryc                    s  d dt  fdd}g d}trtjgntjtjg}|t|t| d  }||| tj|tjdg}dd	 |D }||| g d
}trOtjgntj	tjg}|t|t| d  }|||dd tj|tjdg}dd	 |D }|||dd dS )zv
        Tests the sinc() function.
        This test is purely to assert numerical computations are correct.
        Tepsc                    s    j | |f d| d S )N)r  r  )r  )r  r  r  isozr  r  tolr!   r"   checkw  s
   
z(TestNPFunctions.test_sinc.<locals>.check)
      ?      rO               ?         g#B;g#Br   r   c                 S      g | ]}t |qS r!   r   .0rU   r!   r!   r"   
<listcomp>      z-TestNPFunctions.test_sinc.<locals>.<listcomp>)      ?                                      r                ?y                    ?                            ?      ?                  @      @            y#B;        y#B        y        #B;y        #B   )ulpsc                 S   r  r!   r  r  r!   r!   r"   r    r  N)
r   r   r   float64r  lenr   array
complex128r  r  r  r  
real_typesr  complex_typesr!   r  r"   	test_sinc[  s0   	





zTestNPFunctions.test_sincc                 C   b   t }tdd|}| t}|d W d    n1 sw   Y  | dt|j |   d S )NTnopythonstrz+Argument "x" must be a Number or array-like)r   r   assertRaisesr   assertInr  	exceptiondisable_leak_checkr  r  r  raisesr!   r!   r"   test_sinc_exceptions     
z$TestNPFunctions.test_sinc_exceptionsc                 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
   r            TFr  r      )sizer   r     )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>.arrsTr  )rH  r   r  )r  r  r  r  r<   rG  r  receivedr!   r!   r"   test_contains  s   -

zTestNPFunctions.test_containsc                    s   t  t fdd}g d}trtjgntjtjg}|t|t| d  }||| tj|tjdg}dd |D }||| g d}trLtj	gntj
tj	g}|t|t| d  }||| t|}trntj	gntj
tj	g}||| d	S )
zw
        Tests the angle() function.
        This test is purely to assert numerical computations are correct.
        c                    s@     | | ddg}tjfgt| }j | |||d d S )NTF)r  r  )r  r   bool_r  )r  r  xtra_values
xtra_typespyfunc1pyfunc2r  r!   r"   r    s   

z)TestNPFunctions.test_angle.<locals>.check)r  r  rO  r  r  r  r  r  r   r   c                 S   r  r!   r  r  r!   r!   r"   r    r  z.TestNPFunctions.test_angle.<locals>.<listcomp>)r  r  r  r  r  y             r  r  r  r  r  r  N)r&   r)   r   r   r  r  r  r   r  r  r  r  r!   r  r"   
test_angle  s4   









zTestNPFunctions.test_anglec                 C   sn   dd }|}g d}g d}t ||D ]!\}}tj|g|d}tdd|}||}	||}
| |	|
 qd S )Nc                 S   s   t | }|jS r   )r   r%   r   )r    rr!   r!   r"   numba_angle  s   
z;TestNPFunctions.test_angle_return_type.<locals>.numba_angle)r  r  r  r  )f4f8c8c16r   Tr  )r  r   r  r   assertEqual)r  r  r  r  r  valtypr    r  r  r  r!   r!   r"   test_angle_return_type  s   z&TestNPFunctions.test_angle_return_typec                 C   r  )NTr  helloz0Argument "z" must be a complex or Array[complex])r&   r   r  r   r  r  r  r  r  r!   r!   r"   test_angle_exceptions  r  z%TestNPFunctions.test_angle_exceptionsc                 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 )Nr   r  r  r     r   r     r  r  r  )r  r  )TTTF)Tr  )Tr   )Fr   r   r  r  reshaper   r!   r!   r"   arrays(  s    

z0TestNPFunctions.test_array_equal.<locals>.arraysTr  )r+   r   r  r  r  r  r  r<   rB   r  r  r!   r!   r"   test_array_equal'  s   

z TestNPFunctions.test_array_equalc                 C   sj   t }tdd|}| t}|tdddd  W d    n1 s%w   Y  | dt|j	 d S )NTr     r     z3Both arguments to "array_equals" must be array-like)
r+   r   r  r   r   r  r  r  r  r  r  r!   r!   r"   test_array_equal_exceptionA  s   z*TestNPFunctions.test_array_equal_exceptionc                 C   sr   dd }t }tdd|}| D ]&\}}t|trt|}t|tr&t|}|||}|||}| || qd S )Nc                   s       t tjt tjfV  dgt tjfV  t tj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  g dg dfV  g dg dfV  d S 	Nr   r  r   r  r  r  r     r   r  r  r  r  r   r  )r  r  r  r   r  )r  r   r  r  r  r   r  r	   
empty_listr   r  r!   r!   r!   r"   r  N     

z2TestNPFunctions.test_intersect1d_2.<locals>.arraysTr  )r1   r   
isinstancelistr	   r  r  r  r  r  r-   r.   r  r  r!   r!   r"   test_intersect1d_2L  s   



z"TestNPFunctions.test_intersect1d_2c                 C   s   dd }t }tdd|}| D ]T\}}t|trt|}t|tr&t|}|||dd}|||dd}| || tt|t|krdtt|t|krd|||dd}|||dd}| || qd S )Nc                   s   r  r  r  r!   r!   r!   r"   r  n  r  z2TestNPFunctions.test_intersect1d_3.<locals>.arraysTr  Fri  )	r5   r   r  r  r	   r  r  r   uniquer  r!   r!   r"   test_intersect1d_3l  s"   

,z"TestNPFunctions.test_intersect1d_3c                 C      t }t|}tdg}tdg}|   | t |||d W d    n1 s,w   Y  | t |d|d W d    n1 sGw   Y  | t ||dd W d    d S 1 scw   Y  d S Nr   r  fooT)r5   r   r   r  r  r  r   r  	np_pyfunc	np_nbfuncr-   r.   r!   r!   r"   test_intersect1d_errors     "z'TestNPFunctions.test_intersect1d_errorsc                 C   r  )Nc                   s   s    t g d fV  t dd fV  t dd fV  t jdt jddfV  t ddddd fV  t ddddfV  t dddd	fV  d S )
Nr  r   r   <   r  r  r  r  r   )r   r  zerosr  onesr  r  r!   r!   r!   r"   r    s   z2TestNPFunctions.test_count_nonzero.<locals>.arraysTr  )r@   r   r  )r  r  r  r  r<   r:   r  r  r!   r!   r"   test_count_nonzero  s   	

z"TestNPFunctions.test_count_nonzeroc           	      C   sT   dd }t }tdd|}| D ]\}}}||||}||||}| || qd S )Nc                  s   s    dV  t ddd fV  t dt dd fV  t dddt dd fV  t g dg dgt g dgd	fV  t g dg dg} | | d
fV  d S )N)r  r  Nr  r  r  r  r  r  r  r  r     	   r   r   r   r  r  r  r   r!   r!   r"   r    s    *z.TestNPFunctions.test_np_append.<locals>.arraysTr  )r;   r   r  )	r  r  r  r  r<   rB   r:   r  r  r!   r!   r"   test_np_append  s   	zTestNPFunctions.test_np_appendc                 C   s"  t }tdd|}tg dg dg}tg dg}d}| t}|d || W d    n1 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-likerO  r9   z,The third argument "axis" must be an integer)
r;   r   r   r  r  r   r  r  r  r  )r  r  r  r<   r=   r:   r  r!   r!   r"   test_np_append_exceptions  s6   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r   r  r  r  r  r  r  r  )r  r  r  )r  r  r  r  r)  r  r  )r  r     r/  r   r  r  r  r   )r   r  r  slicer!   r!   r!   r"   r    s   z+TestNPFunctions.test_delete.<locals>.arraysTr  )rA   r   r  r  r!   r!   r"   test_delete  s   

zTestNPFunctions.test_deletec                 C   sP  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  r   r  gQ	@zobj should be of Integer dtyper  )g      @gffffff@g@r  z)arr must be either an Array or a Sequencez"obj must be less than the len(arr))rA   r   r  r  r   r  r  r  r   r  
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  r  r  Nr   r  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  rz  )rF   r   rA  r  r   r  assertTypingError)r  r  r  r<   r  r  r-   r!   r!   r"   
test_diff1.  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:  r   r   r  r  i  )rH   r   rA  shaper  )r  r  r  r<   r  rG   r  r  r!   r!   r"   
test_diff2;  s   
 

zTestNPFunctions.test_diff2c              	   C   s   t }tdd|}|   td}|   ||d W d    n1 s&w   Y  td}dD ]%}| t}||| W d    n1 sIw   Y  | 	dt
|j q2|   d S )NTr  rz  r   r  )r:  izorder must be non-negative)rH   r   r  r   r  rB  r  r  
ValueErrorr  r  r  )r  r  r  r<   rG   r  r!   r!   r"   test_diff2_exceptionsE  s   


z%TestNPFunctions.test_diff2_exceptionsc                 C   sH   dd }t }tdd|}| D ]}||}||}| ||| qd S )Nc                   s   s|    dV  t dgV  dV  dV  dV  tdV  t dV  dV  dV  d V  t dd	V  t d
V  t dd	V  d S )Nr  )r                @numbar  i90  gV-@TYnatr   )r   r   intint16timedelta64
datetime64r!   r!   r!   r"   r=   [  s   
z-TestNPFunctions.test_isscalar.<locals>.valuesTr  )rg   r   r  r  r=   r  r  r    r  r  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 )Nr   r  )r  r  Thello worldr   r!   r!   r!   r"   r=   r  s
   
z4TestNPFunctions.test_isobj_functions.<locals>.valuesTr  c                 S   s   |r| nd }||S r   r!   )r    condr  r   r!   r!   r"   optional_fnx  s   z9TestNPFunctions.test_isobj_functions.<locals>.optional_fnFr/  )r   rf   ri   r  py_funcr  
signatures)r  r=   rU  pyfuncsr  r  r    r  r  expected_optionalgot_optionalexpected_nonegot_noner!   r!   r"   test_isobj_functionsq  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)      ?      ?r        @r  r                 @r  r  y              (@      ?      @y      $@        )ra         @        r   r  r  r  r  r  r/  r   r  r!   r!   r!   r"   r=     s   (z7TestNPFunctions.test_is_real_or_complex.<locals>.valuesTr  )re   rh   r   r  )r  r=   rX  r  r  r    r  r  r!   r!   r"   test_is_real_or_complex  s   

z'TestNPFunctions.test_is_real_or_complexc           	      C   s\   dd }t tg}|D ]!}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 )NrO  r   r   r  r  )r   infr   r*  r  emptyr!   r!   r!   r"   r=     s   ,z7TestNPFunctions.test_isneg_or_ispos_inf.<locals>.valuesTr  )rj   rm   r   r  )	r  r=   rX  r  r  r    rl   r  r  r!   r!   r"   test_isneg_or_ispos_inf  s   

z'TestNPFunctions.test_isneg_or_ispos_infc           	         s   ddt ddgt dd d fdd	}t}td
d|}| D ]-\}}}|||fi |}|||fi |}t|t jrR| || q.| 	t 
|| q.d S )Nrn   ro   d     r/  r  r  r  )rs   rt   c                   3   sp   ddi fV  dt ji fV  t ddgt ddgi fV  t ddgt ddgi fV  t ddgt ddgi fV  t ddgt ddgi fV  t dt jgt dt jgi fV  t dt jgt dt jgd	d
ifV  t t jt jgt dt jgd	d
ifV  t ddgt ddgddifV  t ddgt ddgi fV  t ddgt ddgddifV  t dt jdgt dt jdgfV  t t jt j t jgt dgfV  t t jt j t jgdfV  dt t jt j t jgfV  t ddgt ddgfV  fV  t dgt d  gfV    fV     fV       fV  t jt jfV  t j t jfV  t jt t jgfV  t t jt j gt t jt j gfV  t t jdgt dt jgfV  t t jt j gt ddgfV  t t jt jgt dt j gfV  t t jt jgt ddgfV  t t jdgt t jt j gfV  t d gt dgfV  t dgt d d  gfV    d    d  fV  t t t jdgt t dt jgfV  t t jdgt d d gfV  t t jdgt t jd gfV  t dddd    gt dt jdgfV  t dt g dfV  t jt t jt jt jgfV  t dgt t jt j t jgfV  dt t jt j t jgfV  d S )N    _B   UkBro   Hz>rO  &.>   2٠Br  ru   T0.++rt   绽|=g#B;g=|=r   r  r  r  r   皙?    .A)r   r    @)r   rR  r  re  r  r!   aranr<   rt   kwrs   r!   r"   r=     sV       $(*$ $(*"" $,$&($( ( 0*(6 *&z,TestNPFunctions.test_isclose.<locals>.valuesTr  )r   r  r  r  rq   r   r  r  r  
assertTruer+   )	r  r=   r  r  r-   r.   r  r  r  r!   ru  r"   test_isclose  s   
5zTestNPFunctions.test_isclosec                 C   s   t }tdd|}tddtjgtddgdddd	tfd
dddddtfdd
ddddtfddddddtfddddddtfddddddtfg}|D ]'\}}}}}}	}
| |
|	 |||||| W d    n1 skw   Y  qId S NTr  rk  rn  ro  rn   ro   Fz=shape mismatch: objects cannot be broadcast to a single shaper  r  z)The first argument "a" must be array-likez*The second argument "b" must be array-liker  z2The third argument "rtol" must be a floating pointz3The fourth argument "atol" must be a floating pointr   z0The fifth argument "equal_nan" must be a boolean)rq   r   r   r   rR  rG  r   assertRaisesRegexr  r  r  inpsr-   r.   rs   rt   ru   exc_msgexcr!   r!   r"   isclose_exception  sF   




z!TestNPFunctions.isclose_exceptionc                 C   s:   g d}t g d}| jjddddt j}|||fS )z7
        Some test sequences for np.bincount()
        )r   r  r  r  r  r  )r  r/  rz  r  r   rh  ,  r  )r   r  r  r  astypeint8r?  r!   r!   r"   bincount_sequences  s   
z"TestNPFunctions.bincount_sequencesc                 C   s@   t }tdd|}|  D ]}||}||}| || qd S NTr  )rK   r   r  r  )r  r  r  seqr  r  r!   r!   r"   test_bincount1%  s   zTestNPFunctions.test_bincount1c                 C   sn   t }tdd|}|   | t}|ddg W d    n1 s#w   Y  | dt|j |   d S )NTr  r  r:  #first argument must be non-negative)rK   r   r  r  rG  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 r  )mathsqrtr  r    r!   r!   r"   r  @  s    z2TestNPFunctions.test_bincount2.<locals>.<listcomp>)rO   r   r  r   r  r  )r  r  r  r  rN   rM   r  r  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  r  r:  r   r  z+weights and list don't have the same length)rO   r   r  r  rG  r  r  r  r  r!   r!   r"   test_bincount2_exceptionsG     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  r  )rQ   r   r  maxr  r  r  )r  r  r  r  a_maxrP   r  r  r!   r!   r"   test_bincount3Z  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  r  r:  r   r     &   z 'minlength' must not be negative)rQ   r   r  r  rG  r  r  r  r  r!   r!   r"   test_bincount3_exceptionsf  r  z)TestNPFunctions.test_bincount3_exceptionsc                    s  t tdd ttddttdd fdd}trLtg d}tg d}|||d  ||| |t|| d S tdd	 }td
d }|t|fD ]"}|D ]}||| qd||	dfD ]}||| qs||t| q`t
t|tdgd  d }td
d }|t|fD ]"}|D ]}||| q||	dfD ]}||| q||t| qd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 sw   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                    d   | |} | |} || | |}| |} || | |}| |} || d S r   r  r-   rU   r  r  r  
cfunc_leftcfunc_rightr  pyfunc_leftpyfunc_rightr  r!   r"   r       





z0TestNPFunctions.test_searchsorted.<locals>.check)r   r   r  )r   r  r  r   r  r  r  r   r  r  rR  r         @r  c                 S   rV   )NnonsenserX   rR   rT   r!   r!   r"   bad_side  r>   z3TestNPFunctions.test_searchsorted.<locals>.bad_siderW   c                 S   r7   )NrX   rR   )r-   rU   rY   r!   r!   r"   nonconst_side  r>   z8TestNPFunctions.test_searchsorted.<locals>.nonconst_sider[   rX   )r   r  r   r  r  r  )	r0  r   r  r  r   r  r  r  r/  r  r:  )rW   )rS   r   rZ   r\   r   r   r  r  r  r  r  floatrB  )r  r  binsr=   r-   rU   r  r  r!   r  r"   test_searchsortedy  sr   
 



z!TestNPFunctions.test_searchsortedc           	         s"  t tdd ttddttdd fdd}trFtg d}tg d}||| |t|| d S tt	dd}|tj
gd	 tjgd
  tj gd
  7 }t	dD ]+}jg d}j||}j|||d
 d  }||| |t|| qftd	}tjt|tj
d}||| ||| ||| ||| tjdtj
gtjd}tjtj
gtjd}||| td}td}||| tg d}tddg}||| g d}d}||| tg d}tddg}||| d S )NTr  c                    r  r   r  r  r  r!   r"   r    r  z=TestNPFunctions.test_searchsorted_supplemental.<locals>.check)r   r  r  )r   r  r  r  r  r   r  r  ri  )r  r  r  r   
fill_valuer0  r   r   )FFTTFr  )123r  4)rS   r   rZ   r\   r   r   r  sortr  rangerR  re  r  choicer+  r   r  r  r  )	r  r  r-   rU   element_poolisample_sizer+  nansr!   r  r"   test_searchsorted_supplemental  sT   
*











z.TestNPFunctions.test_searchsorted_supplementalc                    s0  t tdd ttddttdd fdd}trFtg d}tddg}||| |t|| d S dd	tjg}d
d t	
||D }tdD ].}jddt|g}j||}j|||d d	  }||| |t|| q[|t|tdd d S )NTr  c                    r  r   r  r  r  r!   r"   r  4  r  z8TestNPFunctions.test_searchsorted_complex.<locals>.check)r  y       @      ?      @        r^  rb  r   r   c                 S   s   g | ]}t | qS r!   )complex)r  r@  r!   r!   r"   r  J  r  z=TestNPFunctions.test_searchsorted_complex.<locals>.<listcomp>rh  r  r  r  rT   )rS   r   rZ   r\   r   r   r  r  rR  	itertoolsr   r  r  r  r  r  )r  r  r-   rU   poolr  r  r  r!   r  r"   test_searchsorted_complex*  s,   

z)TestNPFunctions.test_searchsorted_complexc                    s  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
|| |ttjdgtdtjg d S )NTr  c                         |  } |  } || d S r   r  r`   r  r  r  r  r  r!   r"   r  ^     z,TestNPFunctions.test_digitize.<locals>.checkr   Gz?r   皙@r_  r  r/  r0        #@re  z-infrR  r  r   r  r_  r/  r  r  r<  r:  r	        ?)r^   r   r   r  r  r  r  shuffler  r  r  r  rR  )r  r  r=   bins1bins2bins3all_binsxsr  r    r[   r!   r  r"   test_digitizeZ  s8   

&zTestNPFunctions.test_digitizec                    s      ttdd  fdd}ttjdg}ttjddtjg}||| g d}g d	}||| g d
}||| d S )NTr  c               	      sZ    fD ]&} t}||   W d    n1 sw   Y  d}|t|j qd S )Nz3bins must be monotonically increasing or decreasingr  rG  r  r  r  )r`   fnr  r  r  r!   r"   check_error  s   
zETestNPFunctions.test_digitize_non_monotonic_bins.<locals>.check_errorr   r  ffffff@r:  r   r   r  )r   r   r   r   r   r   r   r   )r  r^   r   r   r  rR  )r  r  r    r  r!   r  r"    test_digitize_non_monotonic_bins  s   

z0TestNPFunctions.test_digitize_non_monotonic_binsc                    s  t tdd  fdd}tdd}tdd}||| tddd}tddd}||| jd	}t| | d	}||| g d
}g d}||| tdd}tdd}|||d tddd}tddd}|||d jd	}t| | d	}|||d g d}g d}||| g d}||| g d}||| d}||g|d |d g d S )NTr  c                     r  r   r  r  r  r!   r"   r    r  z9TestNPFunctions.test_digitize_supplemental.<locals>.checkr  r  r:  r  )r   r  r  r  r/     r   )r   r  r  r  r  )r   r   r   )r   r   r   r   r   r   r   l          r   )	r^   r   r   r  r  r  linspaceminr  )r  r  r    r  r!   r  r"   test_digitize_supplemental  sB   






z*TestNPFunctions.test_digitize_supplementalc              	   C   s   |    t}tdd|}tdg}tg d}d}||fD ]$}|  }||| | |t|j W d    n1 s?w   Y  q d S )NTr  r^  )r        @r_         @zx may not be complex)	r  r^   r   r   r  rB  r  r  r  )r  r  r  r    r   r  funcr  r!   r!   r"    test_digitize_raise_if_x_complex  s   

z0TestNPFunctions.test_digitize_raise_if_x_complexc                    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  r  r  r  r  )r`   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   r  r  )r=   r  )r  r!   r"   check_values  s   

z4TestNPFunctions.test_histogram.<locals>.check_values)r   r  r   r  r_  r  r/  r0  r  g     @E@r  r  r  )ra   r   r   r  r  r  r  )r  r  r=   r!   )r  r  r  r  r"   test_histogram  s   
zTestNPFunctions.test_histogramc              	      s  t dd  fdd}tr%d}tjtjg}ddg}|||| d S d}tjtjtjtjtjtj	tjg}g d	}|||| t
d
dd}t
d
}||f||ffD ])\}}	t}
 ||	 W d    n1 spw   Y  d}|t|
j qWd S )NTr  c                    s   t ||| | |D ]I\}}}}}tj||d}tj||d}	t|tjr.|d|  |}t|tjr>|	d|	  |}	||	|d}
 ||	|d}|
| q	d S )Nr   r  r   )r  r   r   r  
issubdtypecomplexfloatingr  r  )lengthsdtsmodesdt1dt2rG   r   r   r-   rU   r  r  r  r!   r"   r    s   
z7TestNPFunctions._test_correlate_convolve.<locals>.checkr   r  r   r   )r   r  r  r  )r   r   samer  r  r  zonly supported on 1D arrays)r   r   r   r  r  r  int32int64r  r  r  r  r  r   r  r  r  )r  r  r  r  r  r  _a_br    r   r  r  r!   r  r"   _test_correlate_convolve  s.   
z(TestNPFunctions._test_correlate_convolvec                 C      |  t d S r   )r  r   r  r!   r!   r"   test_correlate:  r6   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| t}|||d	d
 | dt	|j
 W d    d S 1 sww   Y  d S )Nr   )rD  r  Tr  r   z'a' cannot be emptyz'v' cannot be emptyzinvalid moder   zInvalid 'mode')r  r   r+  r  r   r  rG  r  r  r  r  )r  r  r  r  r  r    r   r  r!   r!   r"   #_test_correlate_convolve_exceptions=  s   
"z3TestNPFunctions._test_correlate_convolve_exceptionsc                 C   r  r   )r  r   r  r!   r!   r"   test_correlate_exceptionsR     z)TestNPFunctions.test_correlate_exceptionsc                 C   r  r   )r  r   r  r!   r!   r"   test_convolveV  r6   zTestNPFunctions.test_convolvec                 C   r  r   )r  r   r  r!   r!   r"   test_convolve_exceptionsY  r6   z(TestNPFunctions.test_convolve_exceptionsc                 C   s0   |di |}|di |}| j |||d d S )Nr  r!   r  )r  r  r  paramsr  r  r  r!   r!   r"   _check_output\  s   zTestNPFunctions._check_outputc                    sX  t }tdd|}t| j||  fdd}tr0|tg d |tg  |g d d S |tg d |tdd	  |td
dd |tdtj	tj
tj
 g |tg  |tddd  |tdgd dgd   tjtjtjtjfD ]}|tjd|d q|g d |d |d |d |d |d d S )NTr  c                    s   t r
g d}dg}ng d}ddg}d| i} | |D ]}| |d} | qt sL|D ]}| |d} | q,|D ]}|D ]}| ||d} | q>q:d S d S )	N)Nr   r  F)Nr   r   r  r  r  Tr    )r    r   )r    r   r   )r   )r    	n_choicesincreasing_choicesr  rG   r   r  r!   r"   _checkf  s*   




z1TestNPFunctions.test_vander_basic.<locals>._checkr  r   r   r  )r   r  r  r  r        %@r  r  r  333333?r  333333?Fr  r   r   r   r  r  r  r  r  r  )rO  r  r  r!   )r  g-@A`"	@)TFr  )r   r   r   r  r   r   r  r  r  rR  re  r  r  r  r  )r  r  r  r   r   r!   r  r"   test_vander_basica  s0   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  r  r  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rB  r  r  r  )r   r  r  r  r    r!   r"   _check_n  s   
z8TestNPFunctions.test_vander_exceptions.<locals>._check_nrr  r   r  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  rG  r  r  r  )r    r  r  r  r!   r"   	_check_1d  s   
z9TestNPFunctions.test_vander_exceptions.<locals>._check_1dr6  )r  r  r  )r  r  r  )r   r   r  r   r  re  r  rG  r  r  r  r  )r  r  r  r   r  r  r!   r
  r"   test_vander_exceptions  s$   
z&TestNPFunctions.test_vander_exceptionsc                 C   sH   t }tdd|}t| j||}dd }| D ]
}d|i}|| qd S )NTr  c                   S      t ddS Nr/  r   r  r!   r!   r!   r"   n_variations  r*   z6TestNPFunctions.test_tri_n_basic.<locals>.n_variationsr   )r   r   r   r  )r  r  r  r   r  rG   r  r!   r!   r"   test_tri_n_basic  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   r  r  r  r!   r!   r!   r"   r    r*   z8TestNPFunctions.test_tri_n_m_basic.<locals>.n_variationsc                   S      t jd gtddfS Nr  r0  r  chainfrom_iterabler  r!   r!   r!   r"   m_variations     z8TestNPFunctions.test_tri_n_m_basic.<locals>.m_variationsr   r   )r   r   r   r  )	r  r  r  r   r  r  rG   r  r   r!   r!   r"   test_tri_n_m_basic  s   





z"TestNPFunctions.test_tri_n_m_basicc           	      C   r  )	NTr  c                   S   r  r  r  r!   r!   r!   r"   r    r*   z8TestNPFunctions.test_tri_n_k_basic.<locals>.n_variationsc                   S   r  Nr  r  r!   r!   r!   r"   k_variations  r*   z8TestNPFunctions.test_tri_n_k_basic.<locals>.k_variationsr   r   )r   r   r   r  )	r  r  r  r   r  r"  rG   r  r   r!   r!   r"   test_tri_n_k_basic  s   





z"TestNPFunctions.test_tri_n_k_basicc                 C   s   t }tdd|}t| j||}dd }dd }dd }| D ]
}d	|i}|| q| D ]}| D ]}	||	d
}|| q2q-| D ]}| D ]}
||
d}|| qGqB| D ]}| D ]}
| D ]}	||	|
d}|| qaq\qWd S )NTr  c                   S   r  r  r  r!   r!   r!   r"   r    r*   z:TestNPFunctions.test_tri_n_m_k_basic.<locals>.n_variationsc                   S   r  r  r  r!   r!   r!   r"   r    r  z:TestNPFunctions.test_tri_n_m_k_basic.<locals>.m_variationsc                   S   r  r   r  r!   r!   r!   r"   r"    r*   z:TestNPFunctions.test_tri_n_m_k_basic.<locals>.k_variationsr   r   r   r   )r   r   r   r  )r  r  r  r   r  r  r"  rG   r  r   r   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 )Nr  r  r   k must be an integer)rB  r  r  )r   r  r  r!   r"   r   -  s   
z3TestNPFunctions.test_tri_exceptions.<locals>._checkr  r   r  )r   r   r  r   re  )r  r  r   r   r!   r  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<   r  r  r  r!   r"   r   8  s   z:TestNPFunctions._triangular_matrix_tests_m.<locals>._checkr   _triangular_matrix_tests_innerr  r  r   r!   r  r"   _triangular_matrix_tests_m5  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 )Nr!  r  r   )	r  r  r  r  r  r   r   r)  r*  )r<   r   r  r  r  r  r!   r"   r   D  s   z<TestNPFunctions._triangular_matrix_tests_m_k.<locals>._checkr+  r-  r!   r  r"   _triangular_matrix_tests_m_kA  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)r0  r  )r  r   r  r  r  TrE   r   r!   r"   	check_oddU     

zATestNPFunctions._triangular_matrix_tests_inner.<locals>.check_oddc                    r0  )N)r     r  r  r  r  r1  rE   r3  r!   r"   
check_even]  r5  zBTestNPFunctions._triangular_matrix_tests_inner.<locals>.check_even?   r  @   ih  r  r  r  r  r0  )r  r  r:  Forderr7  )r   r  r  r  asfortranarray)r  r  r   r4  r8  r<   r!   r3  r"   r,  R  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  r  r  r  r%  r&  )r   r  r   r+  rB  r  r  r  )r  r  r  r-   r  r!   r!   r"   _triangular_matrix_exceptionsr  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  typer  r  r   r)  r*  )	r  r  r`   r  r    r  r  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!   )r  rG   r!   r!   r"   r    s    z?TestNPFunctions._triangular_indices_tests_n.<locals>.<listcomp>r  rD  r  r  r  r!   r!   r"   _triangular_indices_tests_n     z+TestNPFunctions._triangular_indices_tests_nc                 C   rE  )Nc                 S   s.   g | ]}t | d  |d D ]}||gqqS r  r  )r  rG   r   r!   r!   r"   r    s   . zATestNPFunctions._triangular_indices_tests_n_k.<locals>.<listcomp>r  rF  rG  r!   r!   r"   _triangular_indices_tests_n_k  rI  z-TestNPFunctions._triangular_indices_tests_n_kc                 C   rE  )Nc                 S   s&   g | ]}t d | D ]}||gq
qS r  rJ  )r  rG   r   r!   r!   r"   r    s   & zATestNPFunctions._triangular_indices_tests_n_m.<locals>.<listcomp>r  rF  rG  r!   r!   r"   _triangular_indices_tests_n_m  rI  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  rJ  )r  rG   r   r   r!   r!   r"   r    s    
zCTestNPFunctions._triangular_indices_tests_n_k_m.<locals>.<listcomp>r  Tr  r   )rD  r  r   )r  r  r  r!   r!   r"   _triangular_indices_tests_n_k_m  s   z/TestNPFunctions._triangular_indices_tests_n_k_mc                 C   s   t dd|}tttfD ]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   rM  r  boolr  r   r  r   r+  r  rA  r  r  r)  r*  )r  r  r  r   rG   r   r<   r  r  rB  rC  r!   r!   r"   "_triangular_indices_from_tests_arr  s   z2TestNPFunctions._triangular_indices_from_tests_arrc                 C   s   t dd|}tttfD ]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  r!  rN  )r  r  r  r   rG   r   r<   r   r  r  rB  rC  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 integerr   r   r%  r&  r   r   zm must be an integer)r   r   
parametersrB  r  r  r  )r  r  r  rR  r  r!   r!   r"   _triangular_indices_exceptions  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   r   r  r  zinput array must be 2-dr  r%  r&  )r   r   r+  rB  r  r  r  )r  r  test_kr  ndimsr-   r  r!   r!   r"   #_triangular_indices_from_exceptions  s   


z3TestNPFunctions._triangular_indices_from_exceptionsc                 C      |  t | t d S r   )r.  r   r/  r   r  r!   r!   r"   test_tril_basic     
zTestNPFunctions.test_tril_basicc                 C   r  r   )r@  r   r  r!   r!   r"   test_tril_exceptions  r6   z$TestNPFunctions.test_tril_exceptionsc                 C   T   |  t | t | t | t | t | t | t | t d S r   )	rH  r   rK  r   rL  r   rM  r   rS  r  r!   r!   r"   test_tril_indices     






z!TestNPFunctions.test_tril_indicesc                 C   0   |  t | t | td | td d S NFT)rP  r   rQ  r   rW  r  r!   r!   r"   test_tril_indices_from     

z&TestNPFunctions.test_tril_indices_fromc                 C   rX  r   )r.  r   r/  r   r  r!   r!   r"   test_triu_basic  rZ  zTestNPFunctions.test_triu_basicc                 C   r  r   )r@  r   r  r!   r!   r"   test_triu_exceptions  r6   z$TestNPFunctions.test_triu_exceptionsc                 C   r\  r   )	rH  r   rK  r   rL  r   rM  r   rS  r  r!   r!   r"   test_triu_indices 	  r^  z!TestNPFunctions.test_triu_indicesc                 C   r_  r`  )rP  r   rQ  r   rW  r  r!   r!   r"   test_triu_indices_from
	  rb  z&TestNPFunctions.test_triu_indices_fromc                 C   s8   t }tt }dd }| D ]}| |||| qd S )Nc                   s   s    dV  dV  dV  dV  d S )N)r  r  )r  r  )r  r  r  r  r!   r!   r!   r!   r"   inputs	  s
   
z2TestNPFunctions.test_indices_basic.<locals>.inputs)rX  r   r  )r  r  r  rg  dimsr!   r!   r"   test_indices_basic	  s   
z"TestNPFunctions.test_indices_basicc                 C   s   t t}|   d}| t}|d W d    n1 sw   Y  | |t|j | t}|d W d    n1 s@w   Y  | |t|j | t}|d W d    n1 sbw   Y  | |t|j d S )Nz5The argument "dimensions" must be a tuple of integersabc)r  r  )r  r  )r   rX  r  r  r   r  r  r  )r  r  errmsgr  r!   r!   r"   test_indices_exception	  s*   


z&TestNPFunctions.test_indices_exceptionc                 C   sh   |||}|||}|  t|d | t|d |  |  t||d  t||d   d S r   r  r   r  r  r  r  r-   r   r  r  r!   r!   r"   partition_sanity_check3	  s   

(,z&TestNPFunctions.partition_sanity_checkc              	   C   sx   |||}|||}|  t||d |  t||d |   |  t|||d   t|||d    d S r   rm  rn  r!   r!   r"   argpartition_sanity_check@	  s   

z)TestNPFunctions.argpartition_sanity_checkc              	   C   s0  t }tdd|}trdnd}t| }|D ]}tr"dtd|d fnd|d f}t| }|D ]f}t|}	| j|	 |	| j	dd }	| j	|	j
}
d	|
||d |
 | g}t|	| }| ||	|| | ts| ||	 || | | |t|	 || | |D ]
}| |||	| qq.qd S 
NTr  )r  r  )r  r  r   r  r  r  r   )r   r   r   r  r  r   r  r  r  r  r  r  r  tolisttuplero  r  r  r  j_range_argsj_rangeji_range_argsi_ranger  didxr   tgtr   r!   r!   r"   test_partition_fuzzO	  s@   

z#TestNPFunctions.test_partition_fuzzc              	   C   sH  t }tdd|}trdnd}t| }|D ]}tr"dtd|d fnd|d f}t| }|D ]r}t|}	| j|	 |	| j	dd }	| j	|	j
}
d	|
||d |
 | g}t|	| }| |	||	||  |	|  ts| |	||	 ||  |	|  | |	|t|	 ||  |	|  |D ]
}| |||	| qq.qd S rq  )r   r   r   r  r  r   r  r  r  r  r  argsortr  rr  rs  rp  rt  r!   r!   r"   test_argpartition_fuzzo	  sB   

z&TestNPFunctions.test_argpartition_fuzzc                    T   t }tdd|   td} fdd}||d ||d ||d d S )NTr  r  c                    J    t} | | W d    n1 sw   Y  t|jdks#J d S Nzkth out of boundsr  rG  r  r  r-   r   rB  r  r!   r"   r   	     zETestNPFunctions.test_partition_exception_out_of_range.<locals>._checkr  r  )r   r   r  r   r  r  r  r-   r   r!   r  r"   %test_partition_exception_out_of_range	     


z5TestNPFunctions.test_partition_exception_out_of_rangec                    r  )NTr  r  c                    r  r  r  r  r  r!   r"   r   	  r  zHTestNPFunctions.test_argpartition_exception_out_of_range.<locals>._checkr  r  )r   r   r  r   r  r  r!   r  r"   (test_argpartition_exception_out_of_range	  r  z8TestNPFunctions.test_argpartition_exception_out_of_rangec                    b   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  r  r!   r"   r   	     
zHTestNPFunctions.test_partition_exception_non_integer_kth.<locals>._checkr        "@ffffff
@r  r   r  )r   r   r  r   r  r  rR  r  r  r   r-   r!   r  r"   (test_partition_exception_non_integer_kth	     


z8TestNPFunctions.test_partition_exception_non_integer_kthc                    r  )
NTr  c                    r  r  r	  r  r  r!   r"   r   	  r  zKTestNPFunctions.test_argpartition_exception_non_integer_kth.<locals>._checkr  r  r  r   r  )r   r   r  r   r  r  rR  r  r!   r  r"   +test_argpartition_exception_non_integer_kth	  r  z;TestNPFunctions.test_argpartition_exception_non_integer_kthc                    @   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  r  r!   r"   r   	  r  zITestNPFunctions.test_partition_exception_a_not_array_like.<locals>._checkr  r   Sausages)r   r   r  r-  r!   r  r"   )test_partition_exception_a_not_array_like	     
z9TestNPFunctions.test_partition_exception_a_not_array_likec                    r  )NTr  c                    r  r  r	  r  r  r!   r"   r   	  r  zLTestNPFunctions.test_argpartition_exception_a_not_array_like.<locals>._checkr  r   r  )r   r   r  r-  r!   r  r"   ,test_argpartition_exception_a_not_array_like	  r  z<TestNPFunctions.test_argpartition_exception_a_not_array_likec                    <   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  r  r!   r"   r   	
  r  zCTestNPFunctions.test_partition_exception_a_zero_dim.<locals>._checkr   r   )r   r   r  r   r  r-  r!   r  r"   #test_partition_exception_a_zero_dim
  
   z3TestNPFunctions.test_partition_exception_a_zero_dimc                    r  )NTr  c                    r  r  r	  r  r  r!   r"   r   
  r  zFTestNPFunctions.test_argpartition_exception_a_zero_dim.<locals>._checkr   r   )r   r   r  r   r  r-  r!   r  r"   &test_argpartition_exception_a_zero_dim
  r  z6TestNPFunctions.test_argpartition_exception_a_zero_dimc                    L   t }tdd|    fdd}|tdtdddd	 d S )
NTr  c                    J    t} | | W d    n1 sw   Y  dt|j d S Nzkth must be scalar or 1-Dr  r  r  r!   r"   r   '
  r  zNTestNPFunctions.test_partition_exception_kth_multi_dimensional.<locals>._checkr  r  r  r  r   )r   r   r  r   r  r  r-  r!   r  r"   .test_partition_exception_kth_multi_dimensional 
  
   $z>TestNPFunctions.test_partition_exception_kth_multi_dimensionalc                    r  )
NTr  c                    r  r  r  r  r  r!   r"   r   5
  r  zQTestNPFunctions.test_argpartition_exception_kth_multi_dimensional.<locals>._checkr  r  r  r  r  )r   r   r  r   r  r  r-  r!   r  r"   1test_argpartition_exception_kth_multi_dimensional.
  r  zATestNPFunctions.test_argpartition_exception_kth_multi_dimensionalc                    Z   t tdd d fdd	}tg }|d}|dtg fD ]}|| q$d S )	NTr  r   c                    $   | |} | |} || d S r   r  r-   r   r  r  r  r!   r"   r  B
     

z9TestNPFunctions.test_partition_empty_array.<locals>.checkr  r  r   r   r!   r  )r   r   r   r  r  r  r  r-   r<   r!   r  r"   test_partition_empty_array<
     


z*TestNPFunctions.test_partition_empty_arrayc                    r  )	NTr  r   c                    r  r   r  r  r  r!   r"   r  U
  r  z<TestNPFunctions.test_argpartition_empty_array.<locals>.checkr  r!   r  )r   r   r   r  r  r  r!   r  r"   test_argpartition_empty_arrayO
  r  z-TestNPFunctions.test_argpartition_empty_arrayc              	   C   sB  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r4d}nd}t|}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rtd"d# }ttd"d# }| j| td|jd#D ]}| 
|||| ||  | 	|||| qn5tdd$ }ttdd$ }| j| t|jD ]}| 
|||| ||  | 	|||| qt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   | 	|||| qhq@d S ),NTr  r   r   r  r  r  (   r  r   r   r  r  r   r  r  r   r  r  r  r   r   r   r   r  r  r  r   r   r  r   r  r   1   r  r  /   r:  r  r6  r  )      rh  @B r  r  r  r:  r  r  r  r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r0  r   r     r  r   r  r  r  c                 S      g | ]}d D ]}||fqqS )r0  r6  r!   r  dtsr!   r!   r"   r  
      z8TestNPFunctions.test_partition_basic.<locals>.<listcomp>r   r  r   )r   r   r   r  r  r+  rQ  r  r  ro  r  rr  rs  r   r   r  rR  isnanr  r  r  r  r  tilemapr)  assert_array_less)r  r  r  rz  r  r   okthr  r|  r   r-   SIZEr    midr  tdr  r  d1rA  r!   r!   r"   test_partition_basicb
  s   













z$TestNPFunctions.test_partition_basicc              	   C   s"  t }tdd|}tjg tjd}||d}||d}| || tjdtjd}||d}||d}| || tg d}| }|td| | || ddgddgddgfD ]*}t|}t	|}	d	D ]}
| ||||
|
  ||	|
   | 
||||
 qkq]g 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 ]9}| ||dd d | ||dd d | ||d||d | ||d||d | 
|||d qtrOd}nd }t|}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 ]6}|||| }| || | tj|d | ||  tj|| ||d d   | 
|||| qVq.d S )+NTr  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  r  ri  r  r  r  r  r  r  r  r  c                 S   r  r  r!   r  r!   r!   r"   r  2  r  z;TestNPFunctions.test_argpartition_basic.<locals>.<listcomp>r  )r   r   r   r  r  r  r+  rQ  r  r~  rp  r  ro  rr  rs  r   r   r  rR  r  r  r  r  r  r  r  r  r  r)  r  )r  r  r  rz  r  r  r   r  r  r|  r   r-   r  r    r  r  r  r  r  r  rA  r!   r!   r"   test_argpartition_basic
  s   





"

"




z'TestNPFunctions.test_argpartition_basicc                 C      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  r   )r   r  r)  r  rx  allro  r  r  r  rz  r   prevr   r!   r!   r"   assert_partitionedB     z"TestNPFunctions.assert_partitionedc                 C   r  r  )r   r  r)  r  rx  r  rp  r  r!   r!   r"   assert_argpartitionedM  r  z%TestNPFunctions.assert_argpartitionedc                 C   s`  t }tdd|}t| j||}tg d}||d}||d ||t|d d | |||d td}| j	
| | td||tt|j td}| j	
| tg d}| j	
| |||}||| | j	
| | |||| tdd d d	 }|||d
gd d
g |||d
gd ddg d
gd ddg  d S NTr  )r  r  r  r   )r   r  )r5  r:  r  )r   r  r/  rF  r  r:  r  r  r  r  )r   r   r   r  r   r  r   r  r  r  r  r  r  r  )r  r  r  r  rz  rA  keysr!   r!   r"   test_partition_iterativeX  s,   


"


0z(TestNPFunctions.test_partition_iterativec              	   C   s|  t }tdd|}t| j||}tg d}|||d }||d ||t |d d | ||||d  td}| j	| | td|||t
t|j  td}| j	| tg d}| j	| |||| }||| | j	| | |||| | tdd d d	 }||||d
gd  d
g ||||d
gd ddg  d
gd ddg  d S r  )r   r   r   r  r   r  r  r  r  r  r  r  r  )r  r  r  r  rz  rA  r  r!   r!   r"   test_argpartition_iterativez  s2   

&

4z+TestNPFunctions.test_argpartition_iterativec                       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   ndindexrD  r  )r-   r   r  r  r  r  r!   r"   r    s   

0z7TestNPFunctions.test_partition_multi_dim.<locals>.checkc                 s   Z    | 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 Nr  r  r  r  r2  r   r>  	full_likerR  re  rE   r!   r!   r"   a_variations     z>TestNPFunctions.test_partition_multi_dim.<locals>.a_variationsr   r  0   r  r  r/  r0  r  r  r  r5  r  )r   r   r   r  rR  re  r  r  r  r  r  r-   r<   r   r!   r  r"   test_partition_multi_dim  s   	

z(TestNPFunctions.test_partition_multi_dimc                    r  )NTr  c              
      s  | |} | |}t | } t | jd d }|D ]}| | || |  | | || |   qt |jd d D ]B}t | | || d |  t | | || d |   t | | || |d   t | | || |d    q>d S r  )r   r   r  rD  r  r  )r-   r   r  r  r{  r  r  r!   r"   r    s    


  z:TestNPFunctions.test_argpartition_multi_dim.<locals>.checkc                 s   r  r  r  rE   r!   r!   r"   r    r  zATestNPFunctions.test_argpartition_multi_dim.<locals>.a_variationsr   r  r  r  r  r/  r0  r  r5  r  )r   r   r   r  rR  re  r  r  r  r!   r  r"   test_argpartition_multi_dim  s   	

z+TestNPFunctions.test_argpartition_multi_dimc                 C   b   t }tdd|}d}tdk rd| }tdddtd	fD ]}|D ]
}| |||| q#qd S 
NTr  )r:  r   r   r  r	  r   r  r  TFT)r   r   r   r   r  r  ro  r  r  r  kthsrz  r   r!   r!   r"   test_partition_boolean_inputs     z-TestNPFunctions.test_partition_boolean_inputsc                 C   r  r  )r   r   r   r   r  r  rp  r  r!   r!   r"    test_argpartition_boolean_inputs  r  z0TestNPFunctions.test_argpartition_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   r  r   r                @)r   z)ddof must be a real numerical scalar typez)Cannot convert non-finite ddof to integer)rr  gffffffzddof must be integral value)r   r   r  r   r  r2  r  rB  r  r  r  rR  re  r  rG  )r  r  r  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   r  r   rh  r  r  )g&S:?o_?g#~j?甇ZӼ?Q|?r  Tr  r  r  r  r5  r  !   )皙?皙?g)\(?gRQ?)g
ףp=
?gzG?)r  r  )y        
ףp=
?y        zG?g r:  g333333@r  r-  )r  r  r  r
  )r   r  r  r  ))rr  皙@r  r!   )r   r  r2  r  randnr  r>  r   rR  re  r  r!   r  r!   r"   input_variations  s,    &(


z=TestNPFunctions.corr_corrcoef_basic.<locals>.input_variations)r   r   r  )r  r  first_arg_namer  r   r  	input_arrr!   r  r"   corr_corrcoef_basic  s   
z#TestNPFunctions.corr_corrcoef_basicc                 C      t }| j|dd d S )Nr    r  )r   r  rG  r!   r!   r"   test_corrcoef_basic;     z#TestNPFunctions.test_corrcoef_basicc                 C   r  )Nr   r  )r   r  rG  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   r  r  r:  FT)Nr:  r   r   r  T)r   r   r   r   r   )	r   r   r   r  r  r  r  r  r   )r  r  r  r   r   	y_choicesrowvar_choicesbias_choicesddof_choiceproductsr   r   r   r   r  r!   r!   r"   test_cov_explicit_argumentsE  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  r  r  r:  r  r   )	r   r   r   r  r  r  r  r  r   )
r  r  r  r   r    r  r  r   r   r  r!   r!   r"    test_corrcoef_explicit_argumentsX  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  rr  Q?r   r  r  r`  rI  )r  r`  r  rr  r  r  r  r   r  )r  rr  r  r   )r   r   r  r   r  r  r  r  )	r  r  r  r  r   r   r   r  r   r!   r!   r"   cov_corrcoef_edge_casesf  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   r  r   rR  re  r  r  r  r   r    r  r!   r!   r"   test_corrcoef_edge_cases  s   
z(TestNPFunctions.test_corrcoef_edge_casesc                 C   s<   t }tdd|}t| j||dd}d}d|i}|| d S )NTr  r   r  ))rp  }Ô%IT)r$  rp  r    )r   r   r   r  r"  r!   r!   r"   &test_corrcoef_edge_case_extreme_values  s   z6TestNPFunctions.test_corrcoef_edge_case_extreme_valuesc                 C   sf   t }| j|dd tdd|}t| j||dd}tddgd	d	gddggj}|d
d}|| d S )Nr   r  Tr  r   r  r   r  r   r  )r   r   )r   r!  r   r   r  r   r  r2  )r  r  r  r   r   r  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  r  r!   r"   _check_m  s   

z5TestNPFunctions.test_cov_exceptions.<locals>._check_mr  r  r  )))r  rj  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  r  r!   r"   _check_y  s   
z5TestNPFunctions.test_cov_exceptions.<locals>._check_yr?  )rr  r  rr  )))r  r  r  r  r  r   z$m and y have incompatible dimensionsr	  r   z/2D array containing a single row is unsupported)r   r   r  r   r+  r  r  r  rG  r  r  r  r  RuntimeError)r  r  r'  r   r)  r   r  r!   r  r"   test_cov_exceptions  s@   








z#TestNPFunctions.test_cov_exceptionsc                 C   s   t }tdd|}t| j||}dd }dd }trdnd}|td	d
|D ]4}d|i}|| ||D ]%}	||	d}|| ||	d}|| ||D ]}
||	|
d}|| qMq5q'd S )NTr  c                 s   s(    d V  | V  t s| tjV  d S d S r   )r   r  r   rN  rE   r!   r!   r"   to_variations  s   z9TestNPFunctions.test_ediff1d_basic.<locals>.to_variationsc                 s   s2    | V  t s| dddV  | tjV  d S d S )Nr  r  )r   r  r  r   r  rE   r!   r!   r"   ary_variations  s   z:TestNPFunctions.test_ediff1d_basic.<locals>.ary_variationsr  r  rF  r  r   )r   r   )r   r   )r   r   r   )r   r   r   r  r   r   r  )r  r  r  r   r,  r-  
array_sizer   r  r-   r.   r!   r!   r"   test_ediff1d_basic  s(   


z"TestNPFunctions.test_ediff1d_basicc                 C   sj   t }tdd|}|   |  }|td W d    n1 s#w   Y  d}|t|jv s3J d S )NTr  )TTFz+Boolean dtype is unsupported (as per NumPy))r   r   r  rB  r   r  r  r  )r  r  r  rB  r  r!   r!   r"   test_ediff1d_exceptions  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  r  r  r  r  r   r  r  r>  r!   r!   r!   r"   r  -  s
   z7TestNPFunctions.test_fliplr_basic.<locals>.a_variationsrj  zCannot np.fliplr on %s type)
r|   r   r  r  r   r  r   unicode_typer  r  r  r  r  r  r-   r  r  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)
r|   r   r  r  r   r   r  r  r  r  r  r!   r!   r"   test_fliplr_exception>  s   z%TestNPFunctions.test_fliplr_exceptionc                 C   r1  )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 )	Nr   r  r  r  r  r2  r  r  r>  r!   r!   r!   r"   r  O  s   z7TestNPFunctions.test_flipud_basic.<locals>.a_variationsrj  zCannot np.flipud on %s type)
r~   r   r  r  r   r  r   r3  r  r  r4  r!   r!   r"   test_flipud_basicK  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  r   r6  zwith 1 indices)r~   r   r  r  r   r  r  r  r  r!   r!   r"   test_flipud_exceptionb  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 )Nr   r  r  r  r  r
  r!   r!   r!   r"   r  s  s
   z5TestNPFunctions.test_flip_basic.<locals>.a_variationsr  zCannot np.flip on UniTuple)r   r   r  r  r   r  r  r  r4  r!   r!   r"   test_flip_basico  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
k rmt 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 d S N)r   r)  )r:  r)  )r:  r:  r>  )r)  r:  r        N@      Nr  )r  rA  rO  r  r   r   r  r`  r        ?       @      @      @      ?             @                   @r   rB  pir   r  r!   r!   r!   r"   rg    &   z4TestNPFunctions.test_logspace2_basic.<locals>.inputsTr  )r   r   r   r)  assert_allcloser  rg  r  r  r   r   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  rj  r  +The first argument "start" must be a number+The second argument "stop" must be a number)r   r   r  r  r   r  r  r  r  r  r  r!   r!   r"   test_logspace2_exception  s   z(TestNPFunctions.test_logspace2_exceptionc                 C   r;  )Nc                   s   r<  r=  rJ  r!   r!   r!   r"   rg    rL  z4TestNPFunctions.test_logspace3_basic.<locals>.inputsTr  r   r   r   r)  rM  rN  r!   r!   r"   test_logspace3_basic  rP  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k rut 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 d S )N)r   r)  r  )r:  r)  r  )r>  r:  r  r:  r>  r   )r)  r:  r)  r  rA  F   rC  r  P   )r  rA  Z   rO  r  r  rD  r   r  r  r`  r  r   r)  rE  rF  rY  rG  rH  r[  rI  r\  rJ  r!   r!   r!   r"   rg    s&   z=TestNPFunctions.test_logspace3_with_num_basic.<locals>.inputsTr  rU  r  rg  r  r  r   r   r   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  rj  r  rQ  rR  r   z+The third argument "num" must be an integer)r   r   r  r  r   r  r  r  rS  r!   r!   r"   test_logspace3_exception  s(   z(TestNPFunctions.test_logspace3_exceptionc                 C   sJ   dd }t }tdd|}| D ]\}}| j||||||dd qd S )Nc                   s   s   dV  dV  dV  dV  dV  dV  dV  dt d	fV  t d	dfV  d
t d	fV  t dt dfV  t dt dfV  t dt dfV  t d	t dfV  t dt dfV  t dt dfV  t dt dfV  t dt dfV  d S )Nr?  r@  rB  )r   ri  )ri  r   )r      )r:  r:  r`  r  r               @@r  r  r   r  r  rE  rF  rG  rH  rI  r   r  r!   r!   r!   r"   rg    s&   z5TestNPFunctions.test_geomspace2_basic.<locals>.inputsTr  g-q=r  )r   r   r  rN  r!   r!   r"   test_geomspace2_basic  s   z%TestNPFunctions.test_geomspace2_basicc                 C   s2  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 W d    n1 sfw   Y  | dt|j | t}|dd W d    n1 sw   Y  | dt|j d S )	NTr  rj  r  %The argument "start" must be a number$The argument "stop" must be a numberr   &Geometric sequence cannot include zero)	r   r   r  r  r   r  r  r  rG  rS  r!   r!   r"   test_geomspace2_exception  s4   z)TestNPFunctions.test_geomspace2_exceptionc                 C   sP   dd }t }tdd|}| D ]\}}}| j||||||||dd qd S )Nc                   s   s,   dV  dV  dV  dV  dV  dV  dV  dV  d	t d
dfV  t d
d	dfV  dt d
dfV  t dt ddfV  t dt ddfV  t dt ddfV  t d
t ddfV  t dt ddfV  t dt ddfV  t dt dd fV  t d!t dd"fV  d S )#NrW  rX  rZ  )r   ri  r  )r   ri  r  )ri  r   r  )r   r`  r0  )ra  r:  r  r:  r`  r  r  r  r  r  rb  r  r  r  r  r   r  r  r  r   r)  rE  rF  rY  rG  rH  r[  rI  r\  rc  r!   r!   r!   r"   rg  5  s(   z5TestNPFunctions.test_geomspace3_basic.<locals>.inputsTr  r   r  )r   r   r  r]  r!   r!   r"   test_geomspace3_basic3  s   
z%TestNPFunctions.test_geomspace3_basicc                 C   s  t ddt}|   | t}|ddd W d    n1 s!w   Y  | dt|j | t}|ddd W d    n1 sEw   Y  | dt|j | t}|ddd W d    n1 siw   Y  | dt|j | t}|d	dd W d    n1 sw   Y  | d
t|j | t}|dd	d W d    n1 sw   Y  | d
t|j d S )NTr  rj  r  r  re  rf  z%The argument "num" must be an integerr   rg  )	r   r   r  r  r   r  r  r  rG  rS  r!   r!   r"   test_geomspace3_exceptionS  s@   z)TestNPFunctions.test_geomspace3_exceptionc                 C   s  t ddt}t ddt}t}|dd}| t|d |dddd}| |d d	 |ddd
d}| ||ddd
d |dddd}| ||dddd | dd |jD  |dddd}| ||dddd | dd |jD  |dddd}| ||dddd | dd |jD  d}d}|||dd}| |d | |||dd}| |d | | |d | tj	dd |dddd}W d    n1 sw   Y  | |d d | t
|dd   | |d d |dddd}| j||dddddd  | d!d |jD  |d"d#dd}| j||d"d#ddd$d  | d%d |jD  |d&d'dd}| j||d&d'ddd$d  |d(d)dd}| j||d(d)ddd$d  td*k rw|d+d,dd}| ||d+d,dd |d-d.d}| j||d-d.dd/d  |d-d0d}| j||d-d0dd/d  |d.d1d}| j||d.d1dd/d  |d-d.d}| j||d-d.dd/d  |d2d3d
}| j||d2d3d
dd  |d-d4d}| ||d-d4d |d4d-d}| ||d4d-d d S )5NTr  r   rs  r   rh  r   r:  r  r  r/  r  r  c                 S      g | ]}|d kqS r  r!   r  r!   r!   r"   r    r  z8TestNPFunctions.test_geomspace_numpy.<locals>.<listcomp>ic                 S   rk  r  r!   r  r!   r!   r"   r    r  c                 S   rk  r  r!   r  r!   r!   r"   r    r  r  gL4@r   ignore)invalidr5  r  g      r  r  y              0@r  r   r  c                 S   rk  r  r!   r  r!   r!   r"   r    r  y             y            @tvIh%<=c                 S   rk  r  r!   r  r!   r!   r"   r    r  r^  y     @@     @@y            ?y     @     @@rD  r  r  rI  y              gV瞯<r  y              y             y      @      @r  )r   r   r   r  r  r  rx  imagr   errstater  r  realr   )r  cfunc2cfunc3pfunc3r   r   r   r!   r!   r"   test_geomspace_numpyq  s   

z$TestNPFunctions.test_geomspace_numpyc                 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  r  r  r  r:  r>  r!   r!   r!   r"   r        z6TestNPFunctions.test_rot90_basic.<locals>.a_variations)r   r   r  )r  r  r  r  r-   r  r  r!   r!   r"   test_rot90_basic  s   
z TestNPFunctions.test_rot90_basicc                 C   sZ   t }tdd|}dd }| D ]}tddD ]}|||}|||}| || qqd S )NTr  c                   s   rv  rw  r>  r!   r!   r!   r"   r    rx  z=TestNPFunctions.test_rot90_with_k_basic.<locals>.a_variationsr  r  )r   r   r  r  )r  r  r  r  r-   r   r  r  r!   r!   r"   test_rot90_with_k_basic  s   


z'TestNPFunctions.test_rot90_with_k_basicc                 C   s  t }tdd|}|   | t}|d W d    n1 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  rj  z'The first argument "m" must be an arrayr  r  r%  z*The second argument "k" must be an integerr  zInput must be >= 2-d.)r   r   r  r  r   r  r  r  r   r  r  r  r!   r!   r"   test_rot90_exception  s&   
z$TestNPFunctions.test_rot90_exceptionc                 C   L   |}t dd|}dd }| D ]}|| }|| }tj|t| qd S )NTr  c                  s   sJ   t d} | dfV  | ddfV  | g dfV  t| g dfV  t| g dfV  | g ddfV  t| g ddfV  t| g ddfV  t dddd} | dfV  | ddfV  | ddfV  | g dfV  | g ddfV  | g ddfV  | dd	gfV  | dd	gdfV  | dd	gdfV  | dgd
fV  | dgdfV  | dgdfV  | t jg t jddfV  t ddd
} | dfV  | ddfV  | dgdfV  | ddfV  | t ddddfV  | dfV  | t ddffV  t g } | dfV  | dfV  | ddfV  | ddfV  t g g} | dfV  | ddfV  | ddfV  | ddfV  d S )Nrh  r  r   )r   r  H   r:  r  r   )r  r   r  r  r:  rF  r5  r   r   r  r   r  )r   r  r  rs  r  r  r  r  rE   r!   r!   r"   args_variations  sT   








z5TestNPFunctions._check_split.<locals>.args_variationsr   r   r)  assert_equalr  r  r  r  r  r  r`   r  r  r!   r!   r"   _check_split  s   
/zTestNPFunctions._check_splitc                 C   r|  )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  r  r  )r   r  r  rs  r  r!   r!   r!   r"   r  ;  s
   z;TestNPFunctions._check_array_split.<locals>.args_variationsr  r  r!   r!   r"   _check_array_split6  s   
z"TestNPFunctions._check_array_splitc                 C   s   |  t | t d S r   )r  r   r  r  r!   r!   r"   test_array_split_basicG  rZ  z&TestNPFunctions.test_array_split_basicc                 C   s   |  t |   | t}tttdd W d    n1 s#w   Y  | dt	|j
 | t}tttddgdd W d    n1 sNw   Y  | dt	|j
 d S )Nr  r  z0array split does not result in an equal divisionr  r5  r9   z%np.split: Argument axis out of bounds)r  r   r  r  rG  r   r   r+  r  r  r  )r  r  r!   r!   r"   test_split_basicK  s   
z TestNPFunctions.test_split_basicc              	   C   s   dd }dd }dd }| | | g}t ddftd	d
ftddffD ]*\}}}|}t|}	t|dD ]}
||
d	  D ]\}}| ||||	|| q:q2q"d S )Nc                   s   s.    t g ddfV  t g ddfV  d S )Nr7  r  r  r  r        @rc  r!   r!   r!   r"   inputs1D_  s   z5TestNPFunctions.test_vhdsplit_basic.<locals>.inputs1Dc                   s   s    t g dg dgdfV  t g dg dgdfV  t ddddfV  t dddt ddgfV  t dddddgfV  t ddddfV  t d	ddddfV  d S )
Nr7  r  r        0@r  r  r  r  r  r  r
  r!   r!   r!   r"   inputs2Dd  s   "z5TestNPFunctions.test_vhdsplit_basic.<locals>.inputs2Dc                   s   s    t g dg dgg dg dggdf t dddddfV  t ddddt ddgfV  t ddddddgfV  t dddddfV  t dddddfV  d S )	Nr7  r  r  r  r  r  r  r  r
  r!   r!   r!   r"   inputs3Dn  s   
$z5TestNPFunctions.test_vhdsplit_basic.<locals>.inputs3Dr  r   r   r   r  r   r  )r   r   r   r   r  r  )r  r  r  r  rg  fmindimnamer  r  r  r-   r   r!   r!   r"   test_vhdsplit_basic[  s$   
z#TestNPFunctions.test_vhdsplit_basicc              	   C   s  t ddftddftddffD ]\}}}tdd|}|   | t}|dd W d    n1 s3w   Y  | d	t|j	 | t}|d
d W d    n1 sVw   Y  | d	t|j	 | t}|t
g dg dgd
 W d    n1 sw   Y  | dt|j	 | t}|t
dd W d    n1 sw   Y  | |d t| d t|j	 qd S )Nr  r   r   r   r  r   Tr  z#The argument "ary" must be an arrayrj  r7  z:The argument "indices_or_sections" must be int or 1d-arrayz only works on arrays of z or more dimensions)r   r   r   r   r  r  r   r  r  r  r   r  rG  )r  r  r  r  r  r  r!   r!   r"   test_vhdsplit_exception  sB   z'TestNPFunctions.test_vhdsplit_exceptionc           	      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  r  )rr  r  r  r  F)r0  rr  g333333@r!   )r   r  r  r>  r  rR  re  r!   r!   r!   r"   r    s   
"
z5TestNPFunctions.test_roll_basic.<locals>.a_variationsc                   S   s   t jdtddfS )Nr	  r!  r  r  r!   r!   r!   r"   shift_variations  s   z9TestNPFunctions.test_roll_basic.<locals>.shift_variations)r   r   r  )	r  r  r  r  r  r-   r   r  r  r!   r!   r"   test_roll_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  )rr  r  r  zshift must be an integer)r   r   r  rB  r   r  r  r  )r  r  r  r   rB  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r"t	ddnt	dd}|D ]}||k}|||d q)trCtd	
d
d}n
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rtt|d
dD ]}|||d d
 d |t||d d
 d qnt|dD ]}|||d |t|
dd|d qtg d}tg }|||d tg d}tg d}|||d tg dg dg}g d}|||d tg dg dg}tg d
ddd}|||d ttd
d
dd}tdd }|||d |||d d d d td}dD ]
}|||d qZd}d}|||d td}tddg}|||d td}tg d!
dd
d" }|||d d S )#NTr  r  r:  r  r5  r  r   r  r  r  r)  g@)r  r  r  r  r-  )rr  r  r  r  r  rF  r  Fr  g333333r   r  y              ?r  r  )r   r   r   r   r-  )r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r  r  )r   r   r   r   r   r   r  )r   r   r   r  r   r  r  r  r   r  r  eyeflattenr  rR  r  islicecombinations_with_replacementr  r>  r  )	r  r  r  r   r-   threshold_range	thresholdrT  r  r!   r!   r"   test_extract_basic  s~   





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  )rT  r-   r  rB  r  r!   r"   r   $  s
   z7TestNPFunctions.test_extract_exceptions.<locals>._check)r   r   r   r   r   r   r   )r   r   r   r   r   r)  r  r  )TFFFT)TFTFFTF)r   r   r  r   r  r  rG  r  r  r  r  )r  r  r-   rT  rB  r   r!   r  r"   test_extract_exceptions  s2   







z'TestNPFunctions.test_extract_exceptionszNew in numpy 2.0+c                 C      | j td d S N)r  )test_np_trapz_basicr  r  r!   r!   r"   test_np_trapezoid_basic>     z'TestNPFunctions.test_np_trapezoid_basicr  r  znp.trapz removed in NumPy 2.4+c                 C   s8  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  r   r  r  r  r  r  r  r!  r  r)  r  rn  r  r  r  r   r  r   r  )r   r   r  r   r  r  r  r  r  r  rR  re  r  r  r  r  r   r   r!   r!   r"   r  B  s,   
z#TestNPFunctions.test_np_trapz_basicc                 C   r  r  )test_np_trapz_x_basicr	  r  r!   r!   r"   test_np_trapezoid_x_basice  r  z)TestNPFunctions.test_np_trapezoid_x_basicc                 C   s(  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  r  r/  r   r4  )r  r  r  r  r  r  r/  r  r  r  r  r  r  r)  )r  r  r  rr  r   r  r  r^  rE  )
r   r   r  r   r  r  r  r  r  r  )r  r  r  r   r   r    r!   r!   r"   r  i  sV   

z%TestNPFunctions.test_np_trapz_x_basicc                 C   r  r  )test_trapz_numpy_questionabler  r  r!   r!   r"   !test_trapezoid_numpy_questionable  r  z1TestNPFunctions.test_trapezoid_numpy_questionablezNumPy behaviour questionablec                 C   sZ   t dd|}t| j||}tg dt}|d|i tg d}|d|i d S )NTr  )TFTTr   )r   r   r  r   r  r  rM  r  r!   r!   r"   r    s   z-TestNPFunctions.test_trapz_numpy_questionablec                 C   r  r  )test_np_trapz_dx_basicr
  r  r!   r!   r"   test_np_trapezoid_dx_basic  r  z*TestNPFunctions.test_np_trapezoid_dx_basicc                 C   s  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  r  r  r4  )r   r  r  r  rF  r  r  r0  rn  r  r)  r  r  r  r  r!  r  r  r   r   r  r  )r   r   r  r   r  rR  re  r  r  expr  rK  r)  assert_almost_equalr  )r  r  r  r   r   r  r    r  r!   r!   r"   r    s@   *

z&TestNPFunctions.test_np_trapz_dx_basicc                 C   r  r  )test_np_trapz_x_dx_basicr  r  r!   r!   r"   test_np_trapezoid_x_dx_basic  r  z,TestNPFunctions.test_np_trapezoid_x_dx_basicc                 C   s   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  r  r4  r  r  r  r  r  r  r)  r  r  rr  rj  )
r   r   r  r   r  r  r  r  r  rR  )r  r  r  r   r  r   r    r!   r!   r"   r    s$   
z(TestNPFunctions.test_np_trapz_x_dx_basicc                 C   r  r  )test_np_trapz_x_dx_exceptionsr  r  r!   r!   r"   !test_np_trapezoid_x_dx_exceptions  r  z1TestNPFunctions.test_np_trapezoid_x_dx_exceptionsc              	      s  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  )r  rB  r  r!   r"   check_not_ok  s   
zCTestNPFunctions.test_np_trapz_x_dx_exceptions.<locals>.check_not_okr4  )r  r  r  r  r/  r0  r-  r  r)  r  r  r  $   r  r  zy cannot be 0DFzy cannot be a scalar)r   r  r   r  r  r  rB  r  r  r  rR  )r  r  r  r   r    r  rB  r!   r  r"   r  
  s:   


z-TestNPFunctions.test_np_trapz_x_dx_exceptionsc                    s2  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} fdd}t 	d
d}t ddgg}||dd |||d	 ||d|d d S )Nrh  r  e   r  r   r  Tr  rL   r  )placesc                    P    t} | |d W d    n1 sw   Y  |j}t|d d S )NrL   z)Weights sum to zero, can't be normalized.)r  ZeroDivisionErrorr  r  r  datarM   rB  errr  r!   r"   test_weights_zero_sumi     
z;TestNPFunctions.test_average.<locals>.test_weights_zero_sumc                    r  )NrL   z81D weights expected when shapes of a and weights differ.r  	TypeErrorr  r  r  r  r  r!   r"   test_1D_weightss  r  z5TestNPFunctions.test_average.<locals>.test_1D_weightsc                    sR    t} | ||d W d    n1 sw   Y  |j}t|d d S )Nr  )Numba does not support average with axis.r  )r  r:   rM   rB  r  r  r!   r"   test_1D_weights_axis{  s   
z:TestNPFunctions.test_average.<locals>.test_1D_weights_axisc                    r  )Nr9   r  r  )r  r:   rB  r  r  r!   r"   	test_axis  r  z/TestNPFunctions.test_average.<locals>.test_axisr  r  g      ?g      ?r   r9   r  )r   r}  ranfr*  r  r  r  r   assertAlmostEqualr  r  r   )r  r   r-   rN   w0a_boolw_boola_intw_intd0r  d2a_3dw_3dr  r  r  r  r  r  r!   r  r"   test_average7  sZ   
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   rk  rm  rl  ro   rn  ro  )r  r  r   r   r  ru   )r  r  g{Gz?gMbP?-C6?rn   gư>rO  )r  r  )rt   rs   )r  r   r   rx   int_r  r  r   re  r  rR  assertFalser*  r}  r  )r  r  r  min_intr-   simple_datar.   	py_resultc_resultnoise_levels
zero_arraynoisers   rt   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@     @@}   r   r  r  r  ro   rn   r   r   rO  r  r  )r  r   r   r  r  r  r  r  r   re  r  )
r  r  r  r<   rv  rt   rs   
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  ro   rn   r   r  rO  r  r   )r  r   r   r  r  r  r  r   re  rR  r  r  )	r  r  r  rv  rt   rs   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                   @      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  r  )clsr`   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  r   )r  r   r   ndarrayrx  rA  rO  )r  r  r  r  r-   r!   r!   r"   "test_return_class_is_ndarray_numpy
  s
   
z2TestNPFunctions.test_return_class_is_ndarray_numpyc                 C   sF   t }tdd|}tdtjg}| |||dd|||dd d S )NTr  r  r  )r  r   r   r  rR  r  )r  r  r  r    r!   r!   r"   test_equalnan_numpy  s   z#TestNPFunctions.test_equalnan_numpyc                 C   st   t }tdd|}ttjdg}tdtjg}||| tj|ttjdg tj|tdtjg d S )NTr  r   r   )r  r   r   r  re  r)  r*  )r  r  r  r    r   r!   r!   r"   $test_no_parameter_modification_numpy!  s   
z4TestNPFunctions.test_no_parameter_modification_numpyc                 C   sN   t }tdd|}ttjj}tj|gtjd}| |||||| d S )NTr  r   )r  r   r   rx   r  r  r  r  )r  r  r  r  r-   r!   r!   r"   test_min_int_numpy.  s
   z"TestNPFunctions.test_min_int_numpyc                 C   s   |    t}tdd|}tddtjgtddgdddd	tfd
dddddtfdd
ddddtfddddddtfddddddtfddddddtfg}|D ]'\}}}}}}	}
| |
|	 |||||| W d    n1 sow   Y  qMd S rz  )	r  r  r   r   r   rR  rG  r   r{  r|  r!   r!   r"   test_allclose_exception9  sH   




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  rq  r  r  r  r  r  r/  r  r  )r  r   r  r  r  g      r  r  r  r(  )r  )r  ?r  r  r  gffffff?rO  g333333"r  r;  r<  rF  r  r  r   r)  r  Fr  r  r  r!  rh  r5  r  r  r   r:  r   r7  )r   r  gGz@r  )r   r        @r  r  )	r   r  r  r  r  r  r_  r  g      @r4  r  r_  r  r   r  r  r  r  r  )g~@g<ԛ@g3@i!N  r  )rh  ri  rn   )rt   )r  r   r   r  r   r  r  r  r  rR  re  r  r  r  r   r  r)  r  sinuniformrK  cosrM  	ones_like)r  r  r  r   r    r  r  factorr   x0rl   exactr  r!   r!   r"   test_interp_basicZ  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 )Nrh  F)replace)r  r   putr  r  r  rR  re  )r  r-   rA  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        @r   r  rt  g333333@r  g      @rr  r  g@g333333@gq=
ףp?g @gQ?r  r  )r  scale      @g      4@g      I@g      i@r  g333333?r  r  )r   r  r  r  rK  r  normalr  )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  r   r  r   r  )
r  r   r   r  r  r  r  r  r  r   )
r  r  r  r  r  r  r    rt   r  r  r!   r!   r"   test_interp_stress_tests1  sF   


z(TestNPFunctions.test_interp_stress_testszNEP 50 interaction issue.c                 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  r   r     r  r  )r  r   r   r  r  r  r  re  rR  r  r  r  r)  rM  )r  r  r  r  r  rq  ro  r  r    r  r  r!   r!   r"    test_interp_complex_stress_testsb  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 emptyr   r  z#fp and xp are not of the same size.r  r  zxp must be 1Dzfp must be 1Dr^  z:Cannot cast array data from complex dtype to float64 dtyper  )r  r   r  r   r  r  rG  r  r  r  r  r  rB  r  r  )	r  r  r  r    r  r  rB  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   r   r0  r  r  ?r  r  r  r   r0  )r   r  r  r   )r  r   r   r  r   r  re  )r  r  r  r   r  r  r    r  r!   r!   r"   "test_interp_non_finite_calibration  s   z2TestNPFunctions.test_interp_non_finite_calibrationc                 C   s  t }tdd|}tddD ]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  r   r  r   r:  r   r  r  r  r  rO  )r  r   r  r   r  r  r+  r  r  r)  r  r  r  r  rR  r  rK  )r  r  r  r  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   r   r  r  r  )r  r   r   r  r)  r  )r  r  r  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   r  )r  r   r   r  r  r  r  r  r  r  r  r  r  )r  r  r  dtypescomboxp_dtypefp_dtypex_dtyper  r  r    r  r  r!   r!   r"   -test_interp_float_precision_handled_per_numpy  s   
z=TestNPFunctions.test_interp_float_precision_handled_per_numpyc                 C   sf   dd }t }tdd|}| D ] }||}||}t|tj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"   )rK  r   WDhr   r  r  usr  psfsas){   ir  z<datetime64[%s]r   z<timedelta64[%s])r   rP  rO  r  )unitr!   r!   r"   r=     s    


z*TestNPFunctions.test_isnat.<locals>.valuesTr  )rw   r   r  r   r  r  r  rQ  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
            r  r  Fr   r  r  r  r  r  c                 S   s   t  }| D ]}|| q|S r   r	   r;   )r=   r-   r  r!   r!   r"   	make_listV     zITestNPFunctions.test_asarray.<locals>.input_variations.<locals>.make_list)r  r  r  r   r  N)r   r  r  r  r2  )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!   )rx  r   r)  rM  r   )jittedexpect_samer  returnedr  r!   r"   check_pass_throughc  s   z8TestNPFunctions.test_asarray.<locals>.check_pass_throughTr  r-   kwsr   r  r   F)
r   r   r   r   r  r  r   r  r  r  )	r  r  r1  r  r  r   r    r  r  r!   r  r"   test_asarray9  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 NrS  r   r!   r!   r!   r"   case1  r#   z3TestNPFunctions.test_asarray_literal.<locals>.case1c                  S      d} t | S r4  r   r  r!   r!   r"   case2     
z3TestNPFunctions.test_asarray_literal.<locals>.case2c                  S   r6  )Nu+   大处 着眼，小处着手。大大大处r   r7  r!   r!   r"   case3  r9  z3TestNPFunctions.test_asarray_literal.<locals>.case3c                  S   r6  )N r   r7  r!   r!   r"   case4  r9  z3TestNPFunctions.test_asarray_literal.<locals>.case4Tr  )r   r  )
r  r5  r8  r:  r<  funcsr  r  r  r  r!   r!   r"   test_asarray_literal  s   z$TestNPFunctions.test_asarray_literalc                    sp      tddt  fdd}dd }dd }d	d
 }dd }||  ||  ||  ||  d S )NTr  c                    r  )Nz?asarray support for List is limited to Boolean and Number types)r  r   r  r  r  )alistrB  r  r!   r"   test_reject  s   
zQTestNPFunctions.test_asarray_rejects_List_with_illegal_dtype.<locals>.test_rejectc                  S   s   t  } | d  | S r   r+  )lr!   r!   r"   make_none_typed_list  s   
zZTestNPFunctions.test_asarray_rejects_List_with_illegal_dtype.<locals>.make_none_typed_listc                  S   s$   t  } t  }|d | | | S )Nr   r+  )rA  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-   r   )r	   r
   r;   )rA  rz  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+  )rA  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@  rB  rC  rD  rG  r!   r  r"   ,test_asarray_rejects_List_with_illegal_dtype  s   


z<TestNPFunctions.test_asarray_rejects_List_with_illegal_dtypec                 C   s   dd }t }tdd|}| D ]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  r  r  r   )r   r  r  r  r  r  r!   r!   r!   r"   rg    s    z-TestNPFunctions.test_asfarray.<locals>.inputsTr  r   r  )
r   r   r  rx  r   r  r   inexactr   r  )r  rg  r  r  r<   r  r  r  r!   r!   r"   test_asfarray  s$   
zTestNPFunctions.test_asfarrayc              	      s  t }t|}t}t|}||f||ffD ]\  fdd}tr;tdtdtg g}tjtj	g}g d}n4t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}g d
}dd t||D }	trdg dg}
n
ddddg ddg}
t|	|
D ]}|D ]}|||d qqt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>.checkr   r  r  ri  r   r  r  )r   r   r  r  rh  c                 s   s"    | ]\}}t j||d V  qdS )r   Nrc  )r  r-   tr!   r!   r"   	<genexpr>  s     z.TestNPFunctions.test_repeat.<locals>.<genexpr>r  Tr  )r  r   )r  r   r  r   r   r+  r  r  r  r  uint32r  uint64r  r  r  r  r   r  )r  r%  r&  array_pyfuncarray_nbfuncr  target_numpy_valuestarget_numpy_typesrepeats_valuestarget_numpy_inputstarget_non_numpy_inputsr  r  onetwor!   rK  r"   test_repeat  s   
	
	

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 )Nr   r:  z#negative dimensions are not allowedr  zIThe repeats argument must be an integer or an array-like of integer dtyper  r  z(operands could not be broadcast togetherr  r  )Tr-   r  )r  r   r  r  r  rG  r   r+  r  r  r  r   r  )	r  r%  r&  rQ  rR  r  rL  rB  repr!   r!   r"   test_repeat_exceptionA  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.@TFr   r  r   rh  r  r  r  y      @       @r  )r  r  )r  r   r   r  r  rR  r  r  r;   r  r   )
r  r%  r&  
test_casesr    r  r  r  np_pyfunc_defaultsnp_nbfunc_defaultsr!   r!   r"   test_select{  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^  r   r  r  r  r   z/condlist arrays must be of at least dimension 1Fr  zHcondlist and choicelist elements must have the same number of dimensionsr  r  z"condlist must be a List or a Tuplezdefault must be a scalarz%condlist arrays must contain booleansr0  r/  r  z7list of cases must be same length as list of conditionsr  rh  z items of condlist must be arraysr~  z"items of choicelist must be arrays)r   r  r   r  r  r  r  r   r  rR  r  rM  rG  r  r  r  r  )	r  r&  r    r  r  r  expected_errorexpected_textrB  r!   r!   r"   test_select_exception  sT   
(&&*
/z%TestNPFunctions.test_select_exceptionc           	   	      s:   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d q"qd	D ]%} 
t}||d
 W d    n1 sdw   Y   dt|j qMdD ]%} 
t}|d| W d    n1 sw   Y   dt|j qud 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   r   r  r  r  )r  r-   rr  r  rr  M must be an integer)r   r  r  r   r  r  r  )r  r%  r&  r   r  r  r  r  r!   r"   check_window  s   
z4TestNPFunctions.test_windowing.<locals>.check_windowrf  )rO  r  g      ,@)ppc64leaarch64r  r  r  rg  r  rh  )r-   r  r  z beta must be an integer or float)r#  r%  r'  r)  r,  r   r   platformmachiner  r  r   r  r  r  )	r  ri  r%  r&  r   r+  r  r  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  r-  r   r  r  r  r  r  )	r.  r   r   r  r  r  r  r  r  r  r  r  pairsr    r   r  r  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/  r  r  r:  r  )r  r  zDimensions for both inputs is 2r  r-  Inputs must be array-like.)r.  r   r  r  rG  r   r  r  r  r  r  r  r   setr  r!   r!   r"   test_cross_exceptionsG  sr   

z%TestNPFunctions.test_cross_exceptionsc                 C   s  t }tt}tddgddggtddgddggftddgddggdftjddgtjdtjddgtjdfdtddgtddgddggftddgddggtddgftdd	d
dtd	d
dfg}|D ]\}}|||}|||}| 	|| qsd S )Nr   r  r  r  ro  r   )r  r  r  r  r  )
r.  r   r3  r   r  r  r  r  r  r  rp  r!   r!   r"   test_cross2d  s6   &

zTestNPFunctions.test_cross2dc                 C   s$  t 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 sWw   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 productr  r  r:  r   r  r  r  rs  )r   r3  r  r  rG  r   r  r  r  r  r  r  r   rt  rS  r!   r!   r"   test_cross2d_exceptions  s@   

z'TestNPFunctions.test_cross2d_exceptionsc           	      C   s~   dd }dd }t }tdd|}| D ]}||}||}| || q| D ]\}}|||}|||}| || q(d S )Nc                   s   sr    t g V  t dV  t dV  t g dV  t g dV  t dddt jdgV  t g dV  d S )	Nr  r   r  r  rO  r  r  )0Helloworld)r   r  r*  rR  r!   r!   r!   r"   r    s   z/TestNPFunctions.test_trim_zeros.<locals>.arraysc                   s   s    t g ddfV  t g ddfV  t t jddddgdfV  t g d	d
fV  tdk rEt g ddfV  t g ddfV  t g dd
fV  d S )N)r   r   r  r   r   FBr  BrO  r  r  r.   )r   r   r   r  r  r  r  )r   r   r  r   abf)r   r  r   rz  ) r  r  )r   r  rR  r   r!   r!   r!   r"   explicit_trim  s   z6TestNPFunctions.test_trim_zeros.<locals>.explicit_trimTr  )r2  r   r  )	r  r  r  r  r  r<   r  r  r1  r!   r!   r"   test_trim_zeros  s   	


zTestNPFunctions.test_trim_zerosc                 C   s  t g d}|t}|t}|||g}t jdd }|D ]}t|}| |||  qt jd d }|D ]}t|dd}| |||  q7t jdd  }|D ]}t|dd}| |||  qQ|D ]&}t j||j	d}t|dd}	t
|	d	ks|J t|d
d}
t
|
d	ksJ qdt d	}t|}| || t g dt g dt g dfD ]}t jdd }t|}| |||  qt g d}t|}| || t| }t|tsJ d S )N)r   r   r   r   r  r  r  r   r  r:  r.   )r1  r;  r   r|  r   r  )r   l            r   )r   l            r   )r   l            r   r   )Nr   N)r   r  r  r  r  s_r2  r  
zeros_liker   r  r*  rr  r  r  )r  r-   r.   r@  r=   slcr<   res_arrres1res2r!   r!   r"   test_trim_zeros_numpy  sH   



z%TestNPFunctions.test_trim_zeros_numpyc                 C   sL  |    tddt}| t}|tg dg dg W d    n1 s(w   Y  | dt|j	 | t}|d W d    n1 sJw   Y  | dt|j	 | t}|h d W d    n1 snw   Y  | dt|j	 | t}|tg d	d
 W d    n1 sw   Y  | dt|j	 d S )NTr  r  r-  zarray must be 1Dr  z#The first argument must be an array>   r   r   r  r  r   z$The second argument must be a string)
r  r   r2  r  r   r   r  r  r  r  rS  r!   r!   r"   test_trim_zeros_exceptions8  s<   
z*TestNPFunctions.test_trim_zeros_exceptionsc              	   C   s   t }tdd|}tg dtg dftg dg dgtg dftddddd	tg d
ftdddd	tdddd	dftg dtg dfg}|D ]\}}|||}|||}| || q]d S )NTr  r  r  )r  r  r  r   r  r  r  )r   r     r  )FTr  )r7  r   r   r  r  r  r  )r  r  r  r  r-   r.   r  r  r!   r!   r"   test_union1dX  s.   

zTestNPFunctions.test_union1dc                 C   sj  t ddt}|   | t}|dtddg W d    n1 s%w   Y  | dt|j	 | t}|tddgd W d    n1 sMw   Y  | dt|j	 | t}|dd W d    n1 spw   Y  | dt|j	 | t}|tdd	gtd
dg W d    n1 sw   Y  | dt|j	 | t}|tddgtddg W d    n1 sw   Y  | dt|j	 | t}|tddgtddg W d    n1 sw   Y  | dt|j	 | t}|tddgtddg W d    n	1 s%w   Y  | dt|j	 d S )NTr  ry  r   r  z.The arguments to np.union1d must be array-likeWorldr  rz  r-   r.   z/For Unicode arrays, arrays must have same dtyper@  rz  r#  barrr  r  )
r   r7  r  r  r   r   r  r  r  r  rS  r!   r!   r"   test_union1d_exceptions|  sf       z'TestNPFunctions.test_union1d_exceptionsc                 C   s   t }tdd|}|   tg dtjftg dfg dftddgddggtjfd	tjftjddgtjd
ftddddfg}|D ]}|| }|| }| 	|| qJd S )NTr  r  r7  r   r  r  r  )r  r<  r   r  r  )
r9  r   r  r   r  r  r  r  r  r  )r  r  r  rq  pairr  r  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  r  z7The argument to np.asarray_chkfinite must be array-liker  r  z#array must not contain infs or NaNsr   r7  r  z!dtype must be a valid Numpy dtype)r   r9  r  r  r   r  r  r  rG  r   r  rR  re  )r  r  rB  r  r!   r!   r"   !test_asarray_chkfinite_exceptions  s&   
z1TestNPFunctions.test_asarray_chkfinite_exceptionsc              	      s  t }t|}t}t|}t}t|}t}t|}dd }	|	 D ]}
| ||
||
 qtg d}t|d  fdd}| | ddd| ddd | D ]\}
}| ||
|d	||
|d	 qR fd
d}| D ]\}
}}| ||
||d||
||d qnd S )Nc                  s   s    t dddt j  gV  t jdt jdd} | dd   t j7  < | V  t ddV  t jd	d
ddV  t jdd
ddV  d S )Nr   r  r   r  r   r  r6  )r  r     r  )step   r  )r   r  rK  r  r  r  )phaser!   r!   r"   inputs1  s   z2TestNPFunctions.test_unwrap_basic.<locals>.inputs1)r   K         r  i     c                   3   s`    t ddgdfV  t g ddfV  t g ddfV  t g ddfV   dfV  d S )	Nr   i     )r   r  r  r  r  )r   r   r  r:  r   r  )r  r  r  r  r  r  r  r  r  rc  r!   wrap_unevenr!   r"   inputs13  s   z3TestNPFunctions.test_unwrap_basic.<locals>.inputs13r:  )r:   r>  r=  c                   3   s     ddfV  d S )Nr     r!   r!   r  r!   r"   	inputs123$  s   z4TestNPFunctions.test_unwrap_basic.<locals>.inputs123rE  )	r@  r   rC  rD  rF  r  r   r  mod)r  r  r  r  cfunc1pyfunc13cfunc13	pyfunc123cfunc123r  rA  
uneven_seqr  r>  r  rB  r!   r  r"   test_unwrap_basic  s>   
	

z!TestNPFunctions.test_unwrap_basicc                 C   s  t t}|   | t}|d W d    n1 sw   Y  | dt|j | t}|t	ddgd W d    n1 sDw   Y  | dt|j | t}|t	ddgddd W d    n1 snw   Y  | dt|j | t}|t	ddgddd	 W d    n1 sw   Y  | d
t|j | t
}|t	ddgddd	 W d    n1 sw   Y  | dt|j d S )Nrj  z#The argument "p" must be array-liker   r  z'The argument "discont" must be a scalarr  r=  z&The argument "period" must be a scalarr9   z&The argument "axis" must be an integerz*Value for argument "axis" is not supported)r   r@  r  r  r   r  r  r  r   r  rG  )r  r  rB  r!   r!   r"   test_unwrap_exception-  s@   
z%TestNPFunctions.test_unwrap_exceptionc           	      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  r  r  r)  r  r  r>  r!   r!   r!   r"   r  N  s   z9TestNPFunctions.test_swapaxes_basic.<locals>.a_variations)rI  r   r  ndimr  )	r  r  r  r  r-   rJ  rK  r  r  r!   r!   r"   test_swapaxes_basicJ  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  rj  r   'The first argument "a" must be an arrayr  z.The second argument "axis1" must be an integerz-The third argument "axis2" must be an integerr   z)np.swapaxes: Argument axis1 out of boundsr/  r  r5  z)np.swapaxes: Argument axis2 out of bounds)rI  r   r  r  r   r  r  r  r   r  rG  r  r  r!   r!   r"   test_swapaxes_exceptionZ  sB   z'TestNPFunctions.test_swapaxes_exceptionc                 C   s`   t }tdd|}tdddddd}d	D ]\}}||||}||||}| || qd S )
NTr  x   r   r  r  r  r  ))r   r:  )r   r  )r  )r:  rF  )r  )rF  r:  )r   r5  )rF  r  )rL  r   r   r  r  r  )r  r  r  r-   rM  rN  r  r  r!   r!   r"   test_moveaxis_basic  s   z#TestNPFunctions.test_moveaxis_basicc                 C   sT  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 | t
}|t	ddddd W d    n1 sw   Y  | dt|j | t
}|t	ddddd W d    n	1 sw   Y  | dt|j d S )NTr  rj  r   r   r  r  z7second argument "source" must be an integer or sequencez;third argument "destination" must be an integer or sequencez*np.moveaxis: Argument source out of boundsr/  r  r  r  z/np.moveaxis: Argument destination out of boundsr   r   z-np.moveaxis: repeated axis in source argumentr  z2np.moveaxis: repeated axis in destination argument)rL  r   r  r  r   r  r  r  r   r  rG  r  r  r!   r!   r"   test_moveaxis_exception  s^   z'TestNPFunctions.test_moveaxis_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  r   r  r  c                 S   s   t j| |d dS r8   r   take_along_axisr-   r  r!   r!   r"   	axis_none  r  z7TestNPFunctions.test_take_along_axis.<locals>.axis_noner   r  r   c                       t  fdd}|S )Nc                       t | | S r   r  r  r9   r!   r"   impl  r  z?TestNPFunctions.test_take_along_axis.<locals>.gen.<locals>.implr   r:   r  r!   r9   r"   gen     z1TestNPFunctions.test_take_along_axis.<locals>.genr:  r9   )r   r  r  r   r  rP  r  rV  r  r  r~  )r  r-   r  r   r  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  r   )r   r  r  r   c                    r  )Nc                    r  r   r  r  r9   r!   r"   r    r  zLTestNPFunctions.test_take_along_axis_broadcasting.<locals>.gen.<locals>.implr  r  r!   r9   r"   r    r  z>TestNPFunctions.test_take_along_axis_broadcasting.<locals>.gen)r   rF  )r  r  r  )r   r+  intprV  r  r  rD  )r  r<   r  r  r  r  r  actualr!   r!   r"   !test_take_along_axis_broadcasting  s   

z1TestNPFunctions.test_take_along_axis_broadcastingc                 C   sf  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/  r  r  r   r   r   r  c                    r  )Nc                    r  r   r  r  r9   r!   r"   r    r  zJTestNPFunctions.test_take_along_axis_exceptions.<locals>.gen.<locals>.implr  r  r!   r9   r"   r    r  z<TestNPFunctions.test_take_along_axis_exceptions.<locals>.genr-   zaxis must be an integerr5  zaxis is out of boundsr  z"arr" must be an arrayr  z"indices" must be an arrayrO  r  z#indices array must contain integersc                 S   r2   r   r  )r-   r  r:   r!   r!   r"   not_literal_axis  r  zITestNPFunctions.test_take_along_axis_exceptions.<locals>.not_literal_axiszaxis must be a literal valuez'must have the same number of dimensionsr  zdimensions don't match)r   r  r  r  rP  r+  r  r   r  r  r  r   rG  r  )r  arr2dindices_noner   r  r  r  r!   r!   r"   test_take_along_axis_exceptions  sl   
 z/TestNPFunctions.test_take_along_axis_exceptionsc                 C   sh  t jdddtt j t jtt jt jt jdgtdt tt j t jtdt jtt jdtt jt j gt g dt g dt g dg dgt dt jd	gt dt jd	gt jd
dggt t j t jt jgt jt j t jt jgt jdg}ddg}d dg}d dg}t}tt}t	||||D ]\}}}	}
||||	|
d}||||	|
d}| 
|| qd S )Nr   rr  r^  r   )r  r  皙?r  )r  r  r  r  r  r  r  rO  r  r       @)rR  rS  rT  )r   rR  r  re  r  rM  r  rU  r   r   r  )r  r=   r  posinfsneginfsr  r  valuerR  rS  rT  r  r  r!   r!   r"   test_nan_to_num2  s<   zTestNPFunctions.test_nan_to_numc              	   C   s   t t}tddtjtjtj g}tg d}||d|d |d |d d | |d	d  | tddttjtjttjtjttjtj g}||d|d |d |d d | |d	d  tg d
 d S )Nr  r  )r  r  r  Fr   r   r  rP  r5  )r^  y     @@      ?y      ?     @)r   rU  r   r  rR  re  r  r  )r  r  r    r  	x_complexr!   r!   r"   test_nan_to_num_copy_falseU  s<   	
z*TestNPFunctions.test_nan_to_num_copy_falsec                 C   sN   t t}|  }|d W d    n1 sw   Y  | dt|j d S )Ninvalid_inputz4The first argument must be a scalar or an array-like)r   rU  rB  r  r  r  rS  r!   r!   r"    test_nan_to_num_invalid_argumenty  s   

z0TestNPFunctions.test_nan_to_num_invalid_argumentc                 C   s`   t }t|}t}t|}dd }| D ]\}}| |||| | |||||| qd S )Nc                   s   sj    t ddgdfV  t ddgddggdfV  t dddfV  ddgdfV  t g dfV  d S )Nr   r  r  r  rF  r/  rj  r
  r!   r!   r!   r"   rg    s   z3TestNPFunctions.test_diagflat_basic.<locals>.inputs)r[  r   r\  r  )r  r  r  r  rr  rg  rU   r   r!   r!   r"   test_diagflat_basic  s   z#TestNPFunctions.test_diagflat_basicc                 C   s\   t }t|}|   | t}|d W d    n1 sw   Y  | dt|j d S )Nrj  #The argument "v" must be array-like)r[  r   r  r  r   r  r  r  r  r!   r!   r"   test_diagflat1_exception  s   
z(TestNPFunctions.test_diagflat1_exceptionc                 C   s   t }t|}|   | t}|dd W d    n1 sw   Y  | dt|j | t}|ddgd W d    n1 sDw   Y  | dt|j | t}|ddgd W d    n1 siw   Y  | dt|j d S )Nrj  r  r  r   z#The argument "k" must be an integerr  )r\  r   r  r  r   r  r  r  r  r!   r!   r"   test_diagflat2_exception  s*   z(TestNPFunctions.test_diagflat2_exceptionc                   c   s   t tjt tjfV  dgt tjfV  t tj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  g dg dfV  ddgddgfV  g dg dfV  g dddgfV  g dg d	fV  g dg d
fV  g dg dfV  d S )Nr   r  r  r  r  r  r  r  r  r  r   r  r  r  )r  r  r  )r   r/  r  r  r  r  r!   r!   r!   r"   _setxor_arrays  s"   

zTestNPFunctions._setxor_arraysc                    <   t t  fdd} D ]	\}}||| qd S )Nc                    X   t | tr	t| } t |trt|}| |} | |}j||d|  d| d d S Nzar1=z, ar2=r  r  r  r	   r  ar1ar2r  r  r&  r%  r  r!   r"   r       



 z.TestNPFunctions.test_setxor1d_2.<locals>.check)r_  r   r  r  r  r-   r.   r!   r  r"   test_setxor1d_2     	zTestNPFunctions.test_setxor1d_2c                    v   t t d fdd	} D ]%\}}||| tt|t|kr8tt|t|kr8|||d qd S )NFc                    \   t | tr	t| } t |trt|}| ||} | ||}j||d|  d| d d S r  r  r  r  r4   r  r  r  r!   r"   r       

 z.TestNPFunctions.test_setxor1d_3.<locals>.checkTr  )r`  r   r  r  r   r  r  r!   r  r"   test_setxor1d_3     	
,zTestNPFunctions.test_setxor1d_3c                 C   r!  r"  )r`  r   r   r  r  r  r   r$  r!   r!   r"   test_setxor1d_errors  r(  z$TestNPFunctions.test_setxor1d_errorsc                   c   s    t tjt tjfV  dgt tjfV  t tj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  g dg dfV  ddgddgfV  g dg dfV  g dddgfV  tg dtg d	fV  td
tdfV  tg dtg dfV  d S )Nr   r  r  r  r  r  r  )r  r  r  r  r   r  r  r  )r  r  r  r  r  r   r  r  r  r  )r  r  r  )r	   r  r   r  r   r  r  r!   r!   r!   r"   _setdiff_arrays  s&   

"zTestNPFunctions._setdiff_arraysc                    r  )Nc                    r  r  r  r  r  r!   r"   r    r  z/TestNPFunctions.test_setdiff1d_2.<locals>.check)rc  r   r  r  r!   r  r"   test_setdiff1d_2  r  z TestNPFunctions.test_setdiff1d_2c                    r  )NFc                    r  r  r  r  r  r!   r"   r    r  z/TestNPFunctions.test_setdiff1d_3.<locals>.checkTr  )rd  r   r  r  r   r  r  r!   r  r"   test_setdiff1d_3  r  z TestNPFunctions.test_setdiff1d_3c                 C   r!  r"  )rd  r   r   r  r  r  r   r$  r!   r!   r"   test_setdiff1d_errors-  r(  z%TestNPFunctions.test_setdiff1d_errorsc                   c   s    t tjt tjfV  dgt tjfV  t tj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  g dg dfV  ddgddgfV  g dg dfV  g dddgfV  ddgtdfV  ddgttd	d
fV  d S )Nr   r  r  r  r  r  r  r  r  r  )r	   r  r   r  r   r  r  r!   r!   r!   r"   _in1d_arrays;  s    

 zTestNPFunctions._in1d_arraysznp.in1d removed in NumPy 2.4+c                    r  )Nc                    r  r  r  r  r  r!   r"   r  Q  r  z*TestNPFunctions.test_in1d_2.<locals>.check)rg  r   r  r  r!   r  r"   test_in1d_2L  s   	zTestNPFunctions.test_in1d_2c                    sx   t t d fdd	} D ]&\}}||| tt|t|kr9tt|t|kr9|||dd qd S )NFc                    r  r  r  r  r  r!   r"   r  b  r  z+TestNPFunctions.test_in1d_3a.<locals>.checkTri  r  )rj  r   r  r  r   r  r  r!   r  r"   test_in1d_3a]  s   	
,zTestNPFunctions.test_in1d_3ac                    P   t t d fdd	} D ]\}}|||dd |||dd qd S )NFc                    r  r  r  r  r  rm  r  r  r  r!   r"   r  u  r  z+TestNPFunctions.test_in1d_3b.<locals>.checkrl  Tr  )ro  r   r  r  r!   r  r"   test_in1d_3bp     	zTestNPFunctions.test_in1d_3bc                    s   t t d fdd	} D ]8\}}|||dd |||dd tt|t|krKtt|t|krK|||ddd |||ddd qd S )NFc                    s`   t | tr	t| } t |trt|}| |||} | |||}j||d|  d| d d S r  r  r  r  r4   rm  r  r  r  r!   r"   r    s   

 z*TestNPFunctions.test_in1d_4.<locals>.checkrl  Tr4   rm  FF)rr  r   r  r  r   r  r  r!   r  r"   test_in1d_4  s   	,zTestNPFunctions.test_in1d_4c                 C     t }t|}tdg}tdg}|||}| |tdg |   | t |||dd W d    n1 s<w   Y  | t |||dd W d    n1 sXw   Y  | t |d|dd W d    n1 stw   Y  | t ||ddd W d    n1 sw   Y  t dd }| t |||d d W d    n1 sw   Y  | t |||d	d W d    d S 1 sw   Y  d S )
Nr   r  Fr#  Tc                 S   r7   Nkindre  r-   r.   r  r!   r!   r"   np_in1d_kind  r  z6TestNPFunctions.test_in1d_errors.<locals>.np_in1d_kindr  table)rr  r   r   r  r  r  r  r   )r  r%  r&  r-   r.   r    r   r!   r!   r"   test_in1d_errors  s6   

"z TestNPFunctions.test_in1d_errorsc                 C   s   t r|  S |  S r   )r   _isin_arrays_reduced_isin_arrays_full)r  r!   r!   r"   _isin_arrays  s   zTestNPFunctions._isin_arraysc                  c   s`    dgdgfV  dgdgfV  ddgddgfV  t dddg} t ddg}| |fV  d S )Nr   r  r  r  r1  r,   r!   r!   r"   r    s   z$TestNPFunctions._isin_arrays_reducedc                  c   s   t tjt tjfV  tjdtjdt tjfV  tjdtjdt tjfV  tjdtjdt tjfV  dgt tjfV  t tj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  g dg dfV  ddgddgfV  dd	gtd
fV  dd	gttddfV  td	dd	dg dfV  td	g d} t
g dg dg dg}| |fV  t
d	|fV  | t
d	fV  t
d	t
d	fV  d|fV  | dfV  dV  t tj|fV  | t tjfV  ttjtjfD ]9}|tjtjhv rtj
g d|d}n|thv r't
g d}tj
g |d}||fV  ||fV  ||fV  qdD ]s}g dg d| fV  g dg d| fV  g dg d| fV  g d} | g d| fV  | g d| g d|  fV  t
g dt
g d| fV  t
g dt
g d| fV  t
ddgt
ddg| fV  qAt
dgt
dgfV  t
d d!gt
g d"fV  tjtjftjtjftjtjftjtjftjtjftjtjffD ]0\}}t|tj}tj
g d#|d}	|rtj
g d$|d}
n	tj
g d%|d}
|	|
fV  qtjd& D ]}tj
g dtd} tj
g d'|d}| |fV  || fV  q'd S )(N)r   r   r   r  r  r   r  r  r  r  r  r  r  r  )r  r  r  r  r=  r  )r  r  r  rT  )r     r  r  r?  )TFF)r   r  r  r  )r/  r  r   r  )r  r  r   r/  )r  r  r  r  r  r  r  r  r  r  r  r   r  r  )r  r  r  )r  r  r   r   r  )r  r  r  r  r   r  TFr]  )r   r   r   r   )ir      )r  r   r  
AllInteger)r   r   r   r   )r	   r  r   r  r   r*  r  r  r  r  r  rO  r  rN  r  uint16r  signedinteger	typecodes)r-   r.   r   arempty_arraymultdtype1dtype2is_dtype2_signedr  r  r!   r!   r"   r    s   









""&






z!TestNPFunctions._isin_arrays_fullc                    r  )Nc                    sX   | |}t | trt| } t |trt|} | |}j||d|  d| d d S r  r  r  r  r!   r"   r  !  s   



 z*TestNPFunctions.test_isin_2.<locals>.check)ru  r   r  r  r!   r  r"   test_isin_2  r  zTestNPFunctions.test_isin_2c              	      s   t t d fdd	} D ]F\}}||| zt|}W n ty-   d}Y nw zt|}W n ty?   d}Y nw tt||krYtt||krY|||dd qd S )NFc                    \   | ||}t | trt| } t |trt|} | ||}j||d|  d| d d S r  r  r  r  r!   r"   r  2     

 z+TestNPFunctions.test_isin_3a.<locals>.checkr   Tri  r  )rv  r   r  r  r  r   r  r  r  r-   r.   len_alen_br!   r  r"   test_isin_3a-  s&   	
$zTestNPFunctions.test_isin_3ac                    r  )NFc                    r  r  r  r  r  r!   r"   r  N  r  z+TestNPFunctions.test_isin_3b.<locals>.checkrl  Tr  )rw  r   r  r  r!   r  r"   test_isin_3bI  r  zTestNPFunctions.test_isin_3bc              	      s   t t d fdd	} D ]X\}}|||dd |||dd zt|}W n ty6   d}Y nw zt|}W n tyH   d}Y nw tt||krktt||krk|||ddd |||ddd qd S )	NFc                    s`   | |||}t | trt| } t |trt|} | |||}j||d|  d| d d S r  r  r  r  r!   r"   r  `  s   

 z*TestNPFunctions.test_isin_4.<locals>.checkrl  Tr   r  r  )rx  r   r  r  r  r   r  r  r!   r  r"   test_isin_4[  s*   	$zTestNPFunctions.test_isin_4c                 C   r  )
Nr   r  Fr#  Tc                 S   r7   r  rs  r  r!   r!   r"   np_isin_kind  r  z6TestNPFunctions.test_isin_errors.<locals>.np_isin_kindr  r  )rx  r   r   r  r  r  r  r   )r  r%  r&  r-   r.   r    r  r!   r!   r"   test_isin_errorsy  s6   

"z TestNPFunctions.test_isin_errorsc                 C   st   t t}t t}t t}t t}tg d}tg d}|||}|||}|||}	||	|}
| ||
 d S )N)r  r  r   r  r/  )r0  r/  r  r  r  r   r  )r   r_  r1   r7  rc  r   r  r  )r  nb_setxor1dnb_intersect1d
nb_union1dnb_setdiff1dr-   r.   c1aux1aux2c2r!   r!   r"   test_setops_manyways  s   



z$TestNPFunctions.test_setops_manyways)NNFNr   r  (  r  r  r  __doc__r|  r  r  r  r  r  r  r  r  r  r  r   r'  r,  r2  r3  r9  r;  rA  rC  rE  rH  rR  r]  rd  rg  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r$  r'  r.  r/  staticmethodr,  r@  rD  rH  rK  rL  rM  rP  rQ  rS  rW  rY  r[  r]  ra  rc  rd  re  rf  ri  rl  ro  rp  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r!  r#  r%  r&  r+  r/  r0  r5  r7  r8  r9  r:  rO  rT  rV  r^  r_  rd  rh  ri  rj  ru  ry  rz  r{  r  r  r  r  r  r  r  r  r  r  unittest
skipUnlessr   r  skipIfr   r   r  r  r   r  r  skipr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r   r  r
  r  r  r  r  r*  r3  r>  rH  r   rJ  rZ  r\  rb  re  rn  rr  ru  rv  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  classmethodr  r  r  r  r   r  r  r  r  r%  __classcell__r!   r!   r  r"   ry  %  s2   -?8/ "!#
 F	bO0)>#,A#'


 !sm"$"&
$



=




1#
 V:*O(":
-,_@
! %-1E)N*W:37/3A.%$9 $2,:%3B#$Ury  c                   @   sf   e Zd ZdZdd Zdd Zeedkddd	 Z	d
d Z
dd Zeedk dejdd ZdS )TestNPMachineParametersz0
def foo():
    ty = np.%s
    return np.%s(ty)
c           	      G   sH   |}t dd|}|| }|| }|D ]}| t||t|| qd S r  )r   r  getattr)	r  r  attrsr`   r  r  r  r  attrr!   r!   r"   r    s   zTestNPMachineParameters.checkc                 C   s<   |j }|j }| j||f }i }tt|ddt | |d S )Nz<string>execr#  )r  templater2  compileglobals)r  basefunctytystrbasestrfuncstrdctr!   r!   r"   create_harcoded_variant  s   z/TestNPMachineParameters.create_harcoded_variant)r   r=  zNumPy < 1.24 requiredc                 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  rc   )r  r0  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  rA  rB  r?  r  rE  r@  nexpnmantrL  rM  rJ  bitsr   Tr  r  z(Unknown attribute 'machar' of type finfor  )r   r  r  r  r  r  ry   r<  r  r   r   rz   r  r  r  rB  r  )r  r   r0  r7  hc_funcr  r  r  r!   r!   r"   
test_finfo  s    

"z"TestNPMachineParameters.test_finfoc                 C   s   t jt jt jt jt jt jt jt jg}d}|D ]}| 	t
||d | t j
|}| 	|| q|   tddt
}|t d W d    d S 1 sMw   Y  d S )N)r  r  rQ  r   Tr  r  )r   r  rN  r  r  r  r	  rO  rP  r  rx   r<  rB  r   r  )r  r   r0  r7  rR  r  r!   r!   r"   
test_iinfo  s   
"z"TestNPMachineParameters.test_iinfozNeeds NumPy < 1.24c                 C   s   d}t jdd}t 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)recordrl  always)messagecategoryc                   S   s
   t  jS r   )r   rb   r  r!   r!   r!   r"   <lambda>  s   
 zJTestNPMachineParameters.test_np_MachAr_deprecation_np122.<locals>.<lambda>r   z`np.MachAr` is deprecatedr   )
warningscatch_warningssimplefilterfilterwarningsr   r   r  r  r  r  )r  r  rN   r  r!   r!   r"    test_np_MachAr_deprecation_np122  s   	
z8TestNPMachineParameters.test_np_MachAr_deprecation_np122N)r  r  r  r3  r  r<  r(  r*  r   rN  rS  rT  r)  r   run_test_in_subprocessr^  r!   r!   r!   r"   r.    s    

r.  c                   @   r  )TestRegistryImportsc                 C   sD   t d}t|\}}| d|  | jd| d| dd d S )Nz
            import numba
            import numpy as np
            @numba.njit
            def foo():
                np.array([1 for _ in range(1)])
            foo()
            print("OK")
        s   OK    z
--ERROR--

r  )r   r   r  strip)r  coderesulterrorr!   r!   r"   test_unsafe_import_in_registry  s   	 z2TestRegistryImports.test_unsafe_import_in_registryN)r  r  r  rg  r!   r!   r!   r"   r`    s    r`  __main__r  )Nr   r   )rn   ro   F)r   r~  r  )r   )r   )r   N)NF)NTFN)NT)NN)r/  )Nr:  r;  )TrO  NNr  )r  r  rl  rZ  	functoolsr   r   textwrapr   numpyr   rJ  r   r   r   
numba.corer   numba.typedr	   r
   numba.np.numpy_supportr   numba.core.errorsr   r   numba.core.configr   numba.core.utilsr   numba.np.extensionsr   numba.tests.supportr   r   r   r   r   r   r   r   r   r(  r   r&   r)   r+   r1   r5   r;   r@   rA   rF   rH   rK   rO   rQ   rS   rZ   r\   r^   ra   rc   re   rf   rg   rh   ri   rj   rm   rq   rw   rx   ry   rz   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r  r  r  r	  r
  r  r  r  r  r  r  r  r   r#  r%  r'  r)  r,  r.  r2  r3  r4  r5  r7  r9  r@  rC  rD  rF  rH  rI  rL  rU  rX  r[  r\  r_  r`  rc  rd  rg  rj  ro  rr  ru  rv  rw  rx  ry  r.  r`  r  mainr!   r!   r!   r"   <module>   s  ,                                                   4_