U
    iâËdüº ã                   @   sœ  d dl Z d dlZd dlZd dlmZ d dl mZ d dlZd dlmZ d dl	Z
d dlmZ d dlmZmZmZ d dlmZ d dlmZmZ d d	lmZ d d
lmZmZ d dlmZ d dlmZ d dlm Z  d dl!m"Z"m#Z#m$Z$m%Z%m&Z& d dl'Z'eƒ Z(de(_)dd„ Z*dd„ Z+dd„ Z,dd„ Z-dd„ Z.dd„ Z/dd„ Z0dd„ Z1d d!„ Z2d"d#„ Z3d$d%„ Z4d&d'„ Z5dãd(d)„Z6d*d+„ Z7d,d-„ Z8d.d/„ Z9d0d1„ Z:d2d3„ Z;d4d5„ Z<d6d7„ Z=d8d9„ Z>d:d;„ Z?d<d=„ Z@d>d?„ ZAdäd@dA„ZBdådBdC„ZCdædGdH„ZDdIdJ„ ZEdKdL„ ZFdMdN„ ZGdOdP„ ZHdQdR„ ZIdSdT„ ZJdUdV„ ZKdWdX„ ZLdçdZd[„ZMd\d]„ ZNdèd_d`„ZOdédadb„ZPdêdcdd„ZQdedf„ ZRdgdh„ ZSdidj„ ZTdëdkdl„ZUdìdmdn„ZVdídodp„ZWdqdr„ ZXdîdsdt„ZYdudv„ ZZdïdwdx„Z[dðdydz„Z\dñd{d|„Z]d}d~„ Z^dòdd€„Z_d�d‚„ Z`dódƒd„„Zad…d†„ Zbdôd‡dˆ„Zcdõd‰dŠ„Zddöd‹dŒ„Zed�dŽ„ Zfd÷d�d�„Zgdød‘d’„Zhd“d”„ Zid•d–„ Zjdùd—d˜„Zkdúd™dš„Zldûd›dœ„Zmd�dž„ ZndŸd „ Zod¡d¢„ Zpe
jqfd£d¤„Zrd¥d¦„ Zsd§d¨„ Ztd©dª„ Zud«d¬„ Zvd­d®„ Zwd¯d°„ Zxdüd±d²„Zydýd³d´„Zzdµd¶„ Z{d·d¸„ Z|d¹dº„ Z}dþd»d¼„Z~d½d¾„ Zd¿dÀ„ Z€dÁdÂ„ Z�dÃdÄ„ Z‚dÅdÆ„ ZƒdÇdÈ„ Z„dÉdÊ„ Z…dËdÌ„ Z†dÍdÎ„ Z‡dÏdÐ„ ZˆdÑdÒ„ Z‰dÿdÓdÔ„ZŠdÕdÖ„ Z‹d×dØ„ ZŒ�d dÚdÛ„Z�G dÜdÝ„ dÝe$e"ƒZŽG dÞdß„ dße"ƒZ�G dàdá„ dáe"ƒZ�e‘dâk�r˜e' ’¡  dS (  é    N)Úpartial)Úproduct)Údedent)ÚFlags)ÚjitÚnjitÚtypeof)Útypes)ÚListÚDict)Únumpy_version)ÚTypingErrorÚNumbaDeprecationWarning)Ú	IS_32BITS)Úpysignature©Úcross2d)ÚTestCaseÚCompilationCacheÚMemoryLeakMixinÚ
needs_blasÚrun_in_subprocessTc                 C   s
   t  | ¡S ©N)ÚnpÚsinc©Úx© r   úV/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numba/tests/test_np_functions.pyr      s    r   c                 C   s
   t  | ¡S r   ©r   Úangler   r   r   r   Úangle1#   s    r!   c                 C   s   t  | |¡S r   r   )r   Údegr   r   r   Úangle2'   s    r#   c                 C   s   t  | |¡S r   )r   Úarray_equal©ÚaÚbr   r   r   r$   +   s    r$   c                 C   s   t  | |¡S r   )r   Úintersect1dr%   r   r   r   r(   /   s    r(   c                 C   s   t j| ||d�S ©N©Úaxis)r   Úappend)ÚarrÚvaluesr+   r   r   r   r,   3   s    r,   c                 C   s   t j| |d�S r)   )r   Úcount_nonzero)r-   r+   r   r   r   r/   7   s    r/   c                 C   s   t  | |¡S r   )r   Údelete)r-   Úobjr   r   r   r0   ;   s    r0   c                 C   s
   t  | ¡S r   ©r   Údiff©r&   r   r   r   Údiff1?   s    r5   c                 C   s   t  | |¡S r   r2   )r&   Únr   r   r   Údiff2C   s    r7   c                 C   s
   t  | ¡S r   ©r   Zbincountr4   r   r   r   Ú	bincount1G   s    r9   c                 C   s   t j| |d�S )N©Úweightsr8   )r&   Úwr   r   r   Ú	bincount2K   s    r=   c                 C   s   t  | ||¡S r   r8   )r&   r<   Ú	minlengthr   r   r   Ú	bincount3O   s    r?   c                 C   s   t  | |¡S r   ©r   Úsearchsorted©r&   Úvr   r   r   rA   S   s    rA   c                 C   s   t j| |dd�S )NÚleft©Úsider@   rB   r   r   r   Úsearchsorted_leftW   s    rG   c                 C   s   t j| |dd�S )NÚrightrE   r@   rB   r   r   r   Úsearchsorted_right[   s    rI   c                  G   s
   t j| Ž S r   )r   Údigitize©Úargsr   r   r   rJ   _   s    rJ   c                  G   s
   t j| Ž S r   )r   Ú	histogramrK   r   r   r   rM   c   s    rM   c                  G   s   t  ¡ S r   )r   ÚMachArrK   r   r   r   Úmacharg   s    rO   c                 C   s
   t  | ¡S r   )r   Ú	iscomplexr   r   r   r   rP   k   s    rP   c                 C   s
   t  | ¡S r   )r   Úiscomplexobjr   r   r   r   rQ   o   s    rQ   c                 C   s
   t  | ¡S r   )r   Úisscalarr   r   r   r   rR   s   s    rR   c                 C   s
   t  | ¡S r   )r   Úisrealr   r   r   r   rS   w   s    rS   c                 C   s
   t  | ¡S r   )r   Ú	isrealobjr   r   r   r   rT   {   s    rT   c                 C   s   t  | |¡S r   )r   Úisneginf©r   Úoutr   r   r   rU      s    rU   c                 C   s   t  | |¡S r   )r   ÚisposinfrV   r   r   r   rX   ƒ   s    rX   çñhãˆµøä>ç:Œ0âŽyE>Fc                 C   s   t  | ||||¡S r   )r   Úisclose©r&   r'   ÚrtolÚatolÚ	equal_nanr   r   r   r[   ‡   s    r[   c                 C   s
   t  | ¡S r   )r   Úisnatr   r   r   r   r`   ‹   s    r`   c                  G   s
   t j| Ž S r   )r   ÚiinforK   r   r   r   ra   �   s    ra   c                  G   s
   t j| Ž S r   )r   ÚfinforK   r   r   r   rb   “   s    rb   c                  G   s   t j| Ž jS r   )r   rb   rO   rK   r   r   r   Úfinfo_machar—   s    rc   c                 C   s
   t  | ¡S r   ©r   Úfliplrr4   r   r   r   re   ›   s    re   c                 C   s
   t  | ¡S r   ©r   Úflipudr4   r   r   r   rg   Ÿ   s    rg   c                 C   s
   t  | ¡S r   )r   Úflipr4   r   r   r   rh   £   s    rh   c                 C   s   t  | |¡S r   ©r   Zlogspace)ÚstartÚstopr   r   r   Ú	logspace2§   s    rl   é2   c                 C   s   t j| ||d�S )N)Únumri   )rj   rk   rn   r   r   r   Ú	logspace3«   s    ro   c                 C   s
   t  | ¡S r   ©r   Úrot90r4   r   r   r   rq   ¯   s    rq   é   c                 C   s   t  | |¡S r   rp   )r&   Úkr   r   r   Úrot90_k³   s    rt   c                 C   s   t j| ||d�S r)   )r   Úarray_split©r&   Úindicesr+   r   r   r   ru   ·   s    ru   c                 C   s   t j| ||d�S r)   )r   Úsplitrv   r   r   r   rx   »   s    rx   c                 C   s   t  | |¡S r   )r   Ú	correlaterB   r   r   r   ry   ¿   s    ry   c                 C   s   t  | |¡S r   )r   ÚconvolverB   r   r   r   rz   Ã   s    rz   c                 C   s
   t  | ¡S r   ©r   Ztri©ÚNr   r   r   Útri_nÇ   s    r~   c                 C   s   t  | |¡S r   r{   ©r}   ÚMr   r   r   Útri_n_mË   s    r�   c                 C   s   t  | |¡S r   r{   ©r}   rs   r   r   r   Útri_n_kÏ   s    rƒ   c                 C   s   t  | ||¡S r   r{   ©r}   r€   rs   r   r   r   Ú	tri_n_m_kÓ   s    r…   c                 C   s
   t  | ¡S r   ©r   Ztril©Úmr   r   r   Útril_m×   s    r‰   c                 C   s   t  | |¡S r   r†   ©rˆ   rs   r   r   r   Útril_m_kÛ   s    r‹   c                 C   s
   t  | ¡S r   ©r   Ztril_indices©r6   r   r   r   Útril_indices_nß   s    rŽ   c                 C   s   t  | |¡S r   rŒ   ©r6   rs   r   r   r   Útril_indices_n_kã   s    r�   c                 C   s   t j| |d�S ©Nr‡   rŒ   ©r6   rˆ   r   r   r   Útril_indices_n_mç   s    r“   c                 C   s   t  | ||¡S r   rŒ   ©r6   rs   rˆ   r   r   r   Útril_indices_n_k_më   s    r•   c                 C   s
   t  | ¡S r   ©r   Ztril_indices_from©r-   r   r   r   Útril_indices_from_arrï   s    r˜   c                 C   s   t  | |¡S r   r–   ©r-   rs   r   r   r   Útril_indices_from_arr_kó   s    rš   c                 C   s
   t  | ¡S r   ©r   Ztriur‡   r   r   r   Útriu_m÷   s    rœ   c                 C   s   t  | |¡S r   r›   rŠ   r   r   r   Útriu_m_kû   s    r�   c                 C   s
   t  | ¡S r   ©r   Ztriu_indicesr�   r   r   r   Útriu_indices_nÿ   s    rŸ   c                 C   s   t  | |¡S r   rž   r�   r   r   r   Útriu_indices_n_k  s    r    c                 C   s   t j| |d�S r‘   rž   r’   r   r   r   Útriu_indices_n_m  s    r¡   c                 C   s   t  | ||¡S r   rž   r”   r   r   r   Útriu_indices_n_k_m  s    r¢   c                 C   s
   t  | ¡S r   ©r   Ztriu_indices_fromr—   r   r   r   Útriu_indices_from_arr  s    r¤   c                 C   s   t  | |¡S r   r£   r™   r   r   r   Útriu_indices_from_arr_k  s    r¥   c                 C   s   t  | ||¡S r   )r   Úvander©r   r}   Ú
increasingr   r   r   r¦     s    r¦   c                 C   s   t  | |¡S r   )r   Ú	partition©r&   Úkthr   r   r   r©     s    r©   c                 C   s   t  | |¡S r   )r   Úargpartitionrª   r   r   r   r¬     s    r¬   c                 C   s   t  | ||||¡S r   )r   Úcov)rˆ   ÚyÚrowvarÚbiasÚddofr   r   r   r­   #  s    r­   c                 C   s   t  | ||¡S r   )r   Úcorrcoef©r   r®   r¯   r   r   r   r²   '  s    r²   c                 C   s   t  | ||¡S r   )r   Úediff1d)ÚaryÚto_endÚto_beginr   r   r   r´   +  s    r´   c                 C   s   t  | |¡S r   )r   Úroll)r&   Úshiftr   r   r   r¸   /  s    r¸   c                 C   s
   t  | ¡S r   ©r   Úasarrayr4   r   r   r   r»   3  s    r»   c                 C   s   t j| |d�S ©N©Údtyperº   ©r&   r¾   r   r   r   Úasarray_kws7  s    rÀ   c                 C   s   t j| |d�S r¼   ©r   Úasfarrayr¿   r   r   r   rÂ   ;  s    rÂ   c                 C   s
   t  | ¡S r   rÁ   r4   r   r   r   Úasfarray_default_kwarg?  s    rÃ   c                 C   s   t  | |¡S r   )r   Úextract©Ú	conditionr-   r   r   r   rÄ   C  s    rÄ   c                 C   s
   t  | ¡S r   ©r   Ztrapz©r®   r   r   r   Únp_trapzG  s    rÉ   c                 C   s   t  | |¡S r   rÇ   ©r®   r   r   r   r   Ú
np_trapz_xK  s    rË   c                 C   s   t j| |d�S )N©ÚdxrÇ   ©r®   rÍ   r   r   r   Únp_trapz_dxO  s    rÏ   c                 C   s   t  | ||¡S r   rÇ   ©r®   r   rÍ   r   r   r   Únp_trapz_x_dxS  s    rÑ   c                 C   s   t  | ||||¡S r   )r   Zallcloser\   r   r   r   Únp_allcloseW  s    rÒ   c                 C   s   t j| ||d�S )N©r+   r;   )r   Zaverage)r&   r+   r;   r   r   r   Ú
np_average[  s    rÔ   c                 C   s   t  | ||¡S r   )r   Úinterp©r   ÚxpÚfpr   r   r   rÕ   _  s    rÕ   c                 C   s   t  | |¡S r   )r   Úrepeat©r&   Úrepeatsr   r   r   Ú	np_repeatc  s    rÜ   c                 C   s   t  | ¡ |¡S r   )r   r»   rÙ   rÚ   r   r   r   Úarray_repeatg  s    rÝ   c                 C   s   t j| ||d�S )N)Údefault©r   Úselect)ÚcondlistÚ
choicelistrÞ   r   r   r   Ú	np_selectk  s    rã   c                 C   s   t  | |¡S r   rß   )rá   râ   r   r   r   Únp_select_defaultso  s    rä   c                 C   s
   t  | ¡S r   )r   Zbartlett©r€   r   r   r   Únp_bartletts  s    ræ   c                 C   s
   t  | ¡S r   )r   Zblackmanrå   r   r   r   Únp_blackmanw  s    rç   c                 C   s
   t  | ¡S r   )r   Zhammingrå   r   r   r   Ú
np_hamming{  s    rè   c                 C   s
   t  | ¡S r   )r   Zhanningrå   r   r   r   Ú
np_hanning  s    ré   c                 C   s   t  | |¡S r   )r   Zkaiser)r€   Úbetar   r   r   Ú	np_kaiserƒ  s    rë   c                 C   s   t  | |¡S r   )r   Úcrossr%   r   r   r   Únp_cross‡  s    rí   c                 C   s
   t | |ƒS r   r   r%   r   r   r   Ú
nb_cross2d‹  s    rî   c                 C   s
   t  | ¡S r   rd   r4   r   r   r   Úflip_lr�  s    rï   c                 C   s
   t  | ¡S r   rf   r4   r   r   r   Úflip_ud“  s    rð   c                 C   s   t  | |¡S r   )r   Zunion1dr%   r   r   r   Ú
np_union1d—  s    rñ   c                 C   s   t  | |¡S r   )r   Zasarray_chkfiniter¿   r   r   r   Únp_asarray_chkfinite›  s    rò   c                 C   s   || kS r   r   )r&   Úkeyr   r   r   Úarray_containsŸ  s    rô   c                 C   s   t  | ||¡S r   )r   Úswapaxes)r&   Úa1Úa2r   r   r   rõ   £  s    rõ   ç        c                 C   s   t j| ||d�S )N©ÚcopyÚnan)r   Ú
nan_to_num)ÚXrú   rû   r   r   r   rü   §  s    rü   c                       sö  e Zd ZdZ‡ fdd„Zeddddfdd„Zdd	„ Zd
d„ Zdd„ Z	efdd„Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Zd:d;„ Z d<d=„ Z!d>d?„ Z"d@dA„ Z#dBdC„ Z$dDdE„ Z%dFdG„ Z&dHdI„ Z'dJdK„ Z(dLdM„ Z)dNdO„ Z*dPdQ„ Z+dRdS„ Z,dTdU„ Z-dVdW„ Z.�drdXdY„Z/dZd[„ Z0d\d]„ Z1d^d_„ Z2d`da„ Z3dbdc„ Z4ddde„ Z5dfdg„ Z6dhdi„ Z7djdk„ Z8e9dldm„ ƒZ:dndo„ Z;dpdq„ Z<drds„ Z=dtdu„ Z>dvdw„ Z?dxdy„ Z@dzd{„ ZAd|d}„ ZBd~d„ ZC�dsd�d‚„ZDdƒd„„ ZEd…d†„ ZFd‡dˆ„ ZGd‰dŠ„ ZHd‹dŒ„ ZId�dŽ„ ZJd�d�„ ZKd‘d’„ ZLd“d”„ ZMd•d–„ ZNd—d˜„ ZOd™dš„ ZPd›dœ„ ZQd�dž„ ZRdŸd „ ZSd¡d¢„ ZTd£d¤„ ZUd¥d¦„ ZVd§d¨„ ZWd©dª„ ZXd«d¬„ ZYd­d®„ ZZd¯d°„ Z[d±d²„ Z\d³d´„ Z]dµd¶„ Z^d·d¸„ Z_d¹dº„ Z`d»d¼„ Zad½d¾„ Zbd¿dÀ„ ZcdÁdÂ„ ZddÃdÄ„ ZedÅdÆ„ ZfegdÇdÈ„ ƒZhdÉdÊ„ ZiegdËdÌ„ ƒZjegdÍdÎ„ ƒZkegdÏdÐ„ ƒZlegdÑdÒ„ ƒZmdÓdÔ„ ZnegdÕdÖ„ ƒZoegd×dØ„ ƒZpegdÙdÚ„ ƒZqegdÛdÜ„ ƒZrdÝdÞ„ Zsdßdà„ Ztdádâ„ Zudãdä„ Zvdådæ„ Zwdçdè„ Zxdédê„ Zydëdì„ Zzdídî„ Z{dïdð„ Z|dñdò„ Z}dódô„ Z~dõdö„ Zd÷dø„ Z€dùdú„ Z�dûdü„ Z‚dýdþ„ Zƒdÿ�d „ Z„�d�d„ Z…�d�d„ Z†�d�d„ Z‡�d�d„ Zˆ�d	�d
„ Z‰�d�d„ ZŠ�d�d„ Z‹eŒ ��d¡�d�d„ ƒZŽ�d�d„ Z��d�d„ Z��d�d„ Z‘�d�d„ Z’�d�d„ Z“�d�d„ Z”�d�d„ Z•�d �d!„ Z–�d"�d#„ Z—�d$�d%„ Z˜�d&�d'„ Z™�d(�d)„ Zš�d*�d+„ Z›�d,�d-„ Zœ�d.�d/„ Z��d0�d1„ Zž�d2�d3„ ZŸ�d4�d5„ Z �d6�d7„ Z¡�d8�d9„ Z¢�d:�d;„ Z£�d<�d=„ Z¤�d>�d?„ Z¥�d@�dA„ Z¦�dB�dC„ Z§�dD�dE„ Z¨�dF�dG„ Z©�dH�dI„ Zª�dJ�dK„ Z«�dL�dM„ Z¬�dN�dO„ Z­�dP�dQ„ Z®�dR�dS„ Z¯�dT�dU„ Z°�dV�dW„ Z±�dX�dY„ Z²�dZ�d[„ Z³�d\�d]„ Z´�d^�d_„ Zµ�d`�da„ Z¶�db�dc„ Z·�dd�de„ Z¸�df�dg„ Z¹�dh�di„ Zº�dj�dk„ Z»�dl�dm„ Z¼�dn�do„ Z½�dp�dq„ Z¾‡  Z¿S (t  ÚTestNPFunctionsz,
    Tests for various Numpy functions.
    c                    s(   t t| ƒ ¡  tƒ | _tj d¡| _d S )Né*   )	Úsuperrþ   ÚsetUpr   Úccacher   ÚrandomZRandomStateÚrnd©Úself©Ú	__class__r   r   r  °  s    zTestNPFunctions.setUpNFc	              
   K   sÞ   t ||ƒD ]Î\}
}|dkr$dg }}t ||ƒD ]¨\}}| jj||
f| |d�}|j}||f|žŽ }||f|žŽ }z
|
j}W n tk
r’   |
}Y nX |tjtjfkr¨dnd}d||f }| j	||f||||dœ|	—Ž q.q
dS )a’  
        Runs tests for a unary function operating in the numerical real space.

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

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

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



1:
B(#;
.-U@
 %-1E)N*E:37.3A.%$2,%Brþ   c                   @   sv   e Zd ZdZdd„ Zdd„ Ze edkd¡dd	„ ƒZ	d
d„ Z
dd„ Ze de  koZdk n  d¡ejdd„ ƒƒZdS )ÚTestNPMachineParametersz0
def foo():
    ty = np.%s
    return np.%s(ty)
c           	      G   sH   |}t dd�|ƒ}||Ž }||Ž }|D ]}|  t||ƒt||ƒ¡ q&d S rÂ  )r   r  Úgetattr)	r  r  ÚattrsrL   r  r  r  r  Úattrr   r   r   r#  ¶  s    ÿzTestNPMachineParameters.checkc                 C   s4   |j }|j }| j||f }tt|ddƒƒ tƒ d S )Nz<string>Úexecr½  )rG  ÚtemplateÚevalr  Úlocals)r  ZbasefuncÚtyZtystrZbasestrZfuncstrr   r   r   Úcreate_harcoded_variantÂ  s
    z/TestNPMachineParameters.create_harcoded_variant)rr   r�  zNumPy < 1.24 requiredc                 C   s   d}|   t|¡ d S )N)ZibetaÚitÚmachepr!  ÚnegepÚepsnegÚiexpZminexpZxminÚmaxexpZxmaxZirndZngrdÚepsilonÚtinyZhugeÚ	precisionÚ
resolution)r#  rO   )r  rá  r   r   r   Útest_MachArË  s    z#TestNPMachineParameters.test_MachArc              	   C   sÄ   t jt jt jt jg}d}|D ]0}|  t||dƒ¡ |  t j|¡}|  ||¡ q|  t	¡�}t
dd�tƒ}|dƒ W 5 Q R X d}|  |t|jƒ¡ |  ¡ �" t
dd�tƒ}|t  d¡ƒ W 5 Q R X d S )N)r!  rì  rí  rê  rÌ  rî  rë  ZnexpZnmantrñ  rò  rð  Úbitsrr   Tr@  r`  z(Unknown attribute 'machar' of type finforu  )r   r  r;  r  r>  r#  rb   rè  rB  r   r   rc   rC  rA  rD  r†  rå  )r  r	   rá  rç  Úhc_funcrG  r  r  r   r   r   Ú
test_finfoÒ  s    
z"TestNPMachineParameters.test_finfoc              	   C   s’   t jt jt jt jt jt jt jt jg}d}|D ]0}|  	t
||dƒ¡ |  t j
|¡}|  	||¡ q,|  ¡ �" tdd�t
ƒ}|t  d¡ƒ W 5 Q R X d S )N)r<  rÌ  rô  rr   Tr@  ru  )r   rÀ  r’  rå  ræ  rU  Zuint16r™  rš  r#  ra   rè  r†  r   r;  )r  r	   rá  rç  rõ  r  r   r   r   Ú
test_iinfoç  s     ÿ
z"TestNPMachineParameters.test_iinfo)rr   é   zNeeds NumPy >= 1.22, < 1.24c              	   C   sf   d}t jdd��(}t jd|td� tdd„ ƒ}|ƒ  W 5 Q R X |  t|ƒd¡ |  d	t|d
 ƒ¡ d S )Nz(`np.MachAr` is deprecated \(NumPy 1.22\)T)ÚrecordÚalways)ÚmessageÚcategoryc                   S   s
   t  ¡ jS r   )r   rN   r!  r   r   r   r   Ú<lambda>  ó    zJTestNPMachineParameters.test_np_MachAr_deprecation_np122.<locals>.<lambda>rr   z`np.MachAr` is deprecatedr   )	ÚwarningsÚcatch_warningsÚfilterwarningsr   r   r•  r<  rC  rA  )r  r  r<   Úfr   r   r   Ú test_np_MachAr_deprecation_np122ö  s    
ÿz8TestNPMachineParameters.test_np_MachAr_deprecation_np122N)rG  rH  rI  rä  r#  rè  rÜ  ZskipIfr   ró  rö  r÷  Z
skipUnlessr   Zrun_test_in_subprocessr  r   r   r   r   rß  ­  s   	
ÿrß  c                   @   s   e Zd Zdd„ ZdS )ÚTestRegistryImportsc                 C   s8   t dƒ}t|ƒ\}}|  d| ¡ ¡ |  d| ¡ ¡ d S )NzÊ
            import numba
            import numpy as np
            @numba.njit
            def foo():
                np.array([1 for _ in range(1)])
            foo()
            print("OK")
        s   OKrþ  )r   r   r^  Ústrip)r  ÚcodeÚresultÚerrorr   r   r   Útest_unsafe_import_in_registry  s    	z2TestRegistryImports.test_unsafe_import_in_registryN)rG  rH  rI  r	  r   r   r   r   r    s   r  Ú__main__)Nr   )N)N)rY   rZ   F)rm   )rr   )r   )r   )N)r   )Nr   )r   )r   )N)r   N)r   )r   )r   )N)r   N)r   )NF)NTFN)NT)NN)rY   rZ   F)NN)r   )N)Trø   )“rç  rÈ  r®  Ú	functoolsr   r   rÿ  Útextwrapr   Únumpyr   Znumba.core.compilerr   r�  r   r   r   Z
numba.corer	   Znumba.typedr
   r   Znumba.np.numpy_supportr   Znumba.core.errorsr   r   Znumba.core.configr   Znumba.core.utilsr   Znumba.np.extensionsr   Znumba.tests.supportr   r   r   r   r   rÜ  rÚ  Znrtr   r!   r#   r$   r(   r,   r/   r0   r5   r7   r9   r=   r?   rA   rG   rI   rJ   rM   rO   rP   rQ   rR   rS   rT   rU   rX   r[   r`   ra   rb   rc   re   rg   rh   rl   ro   rq   rt   ru   rx   ry   rz   r~   r�   rƒ   r…   r‰   r‹   rŽ   r�   r“   r•   r˜   rš   rœ   r�   rŸ   r    r¡   r¢   r¤   r¥   r¦   r©   r¬   r­   r²   r´   r¸   r»   rÀ   r;  rÂ   rÃ   rÄ   rÉ   rË   rÏ   rÑ   rÒ   rÔ   rÕ   rÜ   rÝ   rã   rä   ræ   rç   rè   ré   rë   rí   rî   rï   rð   rñ   rò   rô   rõ   rü   rþ   rß  r  rG  Úmainr   r   r   r   Ú<module>   sD  




























                                      (^
