U
    O8c_G                    @   s@  d dl Z d dlZd dlZd dlZd dlmZ d dlZd dlZd dlZd dl	m
Z
 d dlmZ d dlZd dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlm   m!Z" d dl#m$Z$ d dl%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZE d dlFmGZG d	d
 ZHdd ZIG dd dZJG dd dZKG dd dZLG dd dZMG dd dZNG dd dZOG dd dZPG dd dZQG dd dZRG dd  d ZSG d!d" d"ZTG d#d$ d$ZUG d%d& d&ZVG d'd( d(ZWG d)d* d*ZXG d+d, d,ZYG d-d. d.ZZG d/d0 d0Z[G d1d2 d2Z\G d3d4 d4Z]dvd6d7Z^dwd9d:Z_G d;d< d<Z`G d=d> d>ZaG d?d@ d@ZbG dAdB dBZcejdedCdDejfdE  ejfdF  ejdedGd dHdIgG dJdK dKZgG dLdM dMZhG dNdO dOZiG dPdQ dQZjG dRdS dSZkG dTdU dUZlG dVdW dWZmG dXdY dYZnG dZd[ d[ZoG d\d] d]ZpG d^d_ d_ZqG d`da daZrG dbdc dcZsG ddde deZtG dfdg dgZuG dhdi diZvG djdk dkZwG dldm dmZxG dndo doZyG dpdq dqZzG drds dsZ{G dtdu duZ|dS )x    NFraction)arrays)ma)assert_assert_equalassert_array_equalassert_almost_equalassert_array_almost_equalassert_raisesassert_allcloseIS_PYPYassert_warnsassert_raises_regexsuppress_warningsHAS_REFCOUNTIS_WASM)rand) add_newdoc_ufuncangleaveragebartlettblackmancorrcoefcovdeletediffdigitizeextractflipudgradienthamminghanningi0insertinterpkaisermeshgridmsort	piecewiseplacerot90selectsetxor1dsinctrapz
trim_zerosunwrapunique	vectorize)normalize_axis_tuplec                 C   s   t | }t j||}|S N)nparangeaddouter)ndata r<   F/tmp/pip-unpacked-wheel-fd_gsd75/numpy/lib/tests/test_function_base.pyget_mat   s    
r>   c                 C   s(   t t | |jt j}| |_||_|S )za
    Like real + 1j * imag, but behaves as expected when imag contains non-finite
    values
    )r6   zeros	broadcastshapecomplex_realimag)rC   rD   retr<   r<   r=   _make_complex%   s    rF   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )	TestRot90c                 C   s  t tttd t tttddd t tttddd t tttddd t tttddd d	d
dgdddgg}ddgd
dgd	dgg}dddgdd
d	gg}dd	gdd
gddgg}d	d
dgdddgg}tdddD ]}tt||d| qtdddD ]}tt||d| qtdddD ]}tt||d| q(td	ddD ]}tt||d| qNttt|dddd| tt|d
ddt|ddd d S )N      rJ   rJ   r      rJ   axesrJ   rJ   r   rJ   rL   rL   )rL   r   rL   rJ            )krR   r   rL   rL   r   rW   rN   )r   
ValueErrorr+   r6   onesranger   )selfaZb1Zb2Zb3Zb4rW   r<   r<   r=   
test_basic1   s@    zTestRot90.test_basicc                 C   sR   t d}tt|jd tt|ddt|dd tt|ddt|dd d S )N)2   (   rS   )rc   rb   rS   rP   rM   r   rX   rL   rJ   rR   rX   )r6   r]   r   r+   rA   r_   r`   r<   r<   r=   	test_axesQ   s    
zTestRot90.test_axesc                 C   s   t dd}ddgddggddgd	d
ggg}ddgddggd
dgd	dggg}d	dgddggd
dgddggg}d	d
gddggddgddggg}tt|dd| tt|dd| tt|dd| tdd
D ]&}tt||ddt||d dd qd S )N   rI   rJ   rS         r   rL   rH   rT   rY   rM   rZ   re   )rJ   r   r[   )r6   r7   reshaper   r+   r^   )r_   r`   Z
a_rot90_01Z
a_rot90_12Z
a_rot90_20Z
a_rot90_10rW   r<   r<   r=   test_rotation_axesW   sH    zTestRot90.test_rotation_axesN)__name__
__module____qualname__ra   rh   rm   r<   r<   r<   r=   rG   0   s    rG   c                   @   sT   e Z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S )TestFlipc                 C   sl   t tjtjtddd t tjtjtddd t tjtjtddd t tjtjtddd d S )NrH   rL   axisrH   rH   rJ   rU   r   rS   )r   r6   	AxisErrorflipr]   r_   r<   r<   r=   rh   v   s    zTestFlip.test_axesc                 C   sn   t d}|d d d d df }tt|d| dddgdddgg}dddgdddgg}tt|d| d S )NrH   rX   rL   r   rJ   rS   rT   r>   r   r6   rw   r_   r`   br<   r<   r=   test_basic_lr|   s    zTestFlip.test_basic_lrc                 C   sn   t d}|d d dd d f }tt|d| dddgdddgg}dddgdddgg}tt|d| d S )NrH   rX   r   rL   rJ   rS   rT   ry   rz   r<   r<   r=   test_basic_ud   s    zTestFlip.test_basic_udc                 C   sb   t ddgddggddgddggg}t ddgddggddgddggg}tt |d| d S 	Nr   rL   rJ   rS   rH   rT   rj   rk   r6   arrayr   rw   rz   r<   r<   r=   test_3d_swap_axis0   s    

zTestFlip.test_3d_swap_axis0c                 C   sb   t ddgddggddgddggg}t ddgddggddgddggg}tt |d| d S r~   r   rz   r<   r<   r=   test_3d_swap_axis1   s    

zTestFlip.test_3d_swap_axis1c                 C   sb   t ddgddggddgddggg}t ddgddggddgddggg}tt |d| d S r~   r   rz   r<   r<   r=   test_3d_swap_axis2   s    

zTestFlip.test_3d_swap_axis2c              	   C   sR   t ddddd}t|jD ],}tt ||t |d||d q d S )Nx   rJ   rS   rH   rT   r   )	r6   r7   rl   r^   ndimr   rw   r   swapaxes)r_   r`   ir<   r<   r=   test_4d   s
    zTestFlip.test_4dc                 C   sH   t dddgdddgg}t dddgdddgg}tt || d S )NrL   rJ   rS   rH   rT   rj   r   rz   r<   r<   r=   test_default_axis   s    zTestFlip.test_default_axisc                 C   s   t ddgddggddgddggg}tt j|d	d
| t ddgddggddgddggg}tt j|dd
| t ddgddggddgddggg}tt j|dd
| d S )Nr   rL   rJ   rS   rH   rT   rj   rk   r<   rr   rP   re   r   r_   r`   r{   cr<   r<   r=   test_multiple_axes   s0    


zTestFlip.test_multiple_axesN)rn   ro   rp   rh   r|   r}   r   r   r   r   r   r   r<   r<   r<   r=   rq   t   s   

rq   c                   @   s   e Zd Zdd Zdd ZdS )TestAnyc                 C   sT   ddddg}ddddg}ddddg}t t| t t| t t|  d S Nr   rL   )r   r6   anyr_   y1y2y3r<   r<   r=   ra      s    zTestAny.test_basicc                 C   sb   dddgdddgdddgg}t t| ttj|dddddg ttj|dddddg d S Nr   rL   rr   )r   r6   r   r   Zsometruer_   r   r<   r<   r=   test_nd   s    zTestAny.test_ndNrn   ro   rp   ra   r   r<   r<   r<   r=   r      s   r   c                   @   s   e Zd Zdd Zdd ZdS )TestAllc                 C   sl   ddddg}ddddg}ddddg}t t|  t t| t t|  t tt|  d S r   )r   r6   allr   r   r<   r<   r=   ra      s    zTestAll.test_basicc                 C   sd   dddgdddgdddgg}t t|  ttj|dddddg ttj|dddddg d S r   )r   r6   r   r   Zalltruer   r<   r<   r=   r      s    zTestAll.test_ndNr   r<   r<   r<   r=   r      s   	r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestCopyc                 C   sR   t ddgddgg}t |}t|| d|d< t|d d t|d d d S )NrL   rJ   rS   rH   
   )r   r   )r6   r   copyr   r   )r_   r`   a_copyr<   r<   r=   ra      s    

zTestCopy.test_basicc                 C   s   t ddgddgg}t|jj t|jj  t jddgddggdd}t|jj  t|jj t |}t|jj t|jj  t |}t|jj  t|jj d S )NrL   rJ   rS   rH   Forder)r6   r   r   flagsc_contiguousf_contiguousr   )r_   r`   Za_fortr   Za_fort_copyr<   r<   r=   
test_order  s    

zTestCopy.test_orderc                 C   sV   t d}tt tj|dd  tt tj|dd tt t|  d S )NrT   F)ZsubokT)r   r]   r   ZisMaskedArrayr6   r   )r_   Zmxr<   r<   r=   
test_subok  s    
zTestCopy.test_subokN)rn   ro   rp   ra   r   r   r<   r<   r<   r=   r      s   r   c                   @   s   e Zd Zdd Zejddddgddgdd	dgd
gdgfdddgdddggddddggddgdddggd	d	d	ggfgdd Zdd Zdd Z	dd Z
dd Zdd Zd d! ZdS )"TestAveragec                 C   s   t dddg}tt|dddk t dddg}tt|dddk d	d	d	g}tt|ddd	k t d
}d|d< d|d< t|dt|d t|dt|d tdd}t|dt|d t|dt|d d S )NrL   rJ   rS   r   rr          @      ?      @        rt   rY   rZ   rT   )r6   r   r   r   r]   r	   meanr   )r_   r   r   r   Zy4Zy5r<   r<   r=   ra   #  s    


zTestAverage.test_basicz<x, axis, expected_avg, weights, expected_wavg, expected_wsumrL   rJ   rS   Nr   rH         ?       @rT   rj      r   r         @      @      #@c           
      C   s   t j||dd}|jt |ks$tt|| t j|||dd}|jt |ksTtt|| t j|||ddd\}}	|jt |kstt|| |	jt |kstt|	| d S )NTrs   keepdims)rs   weightsr   )rs   r   returnedr   )r6   r   rA   AssertionErrorr   )
r_   xrs   Zexpected_avgr   Zexpected_wavgZexpected_wsumavgZwavgZwsumr<   r<   r=   test_basic_keepdims5  s    



zTestAverage.test_basic_keepdimsc                 C   s  t d}t d}t||d}t dd  d t d  }t|| t dddgddd	gg}ddg}t||d
d}t dddg}t|| d
d
dg}t||dd}t ddg}t|| d
d
dgd
d
dgg}t ddg}tt||dd| tt||dd td	t j
}	td	t j}
tt j|	|
djt |	|
k t dddgdd}t ddd	gdd}t j||ddd}t dddg}t|| t j||ddd}t dgdgdgg}t|| d S )Nr   r   rJ   r   rL   rS   rH   rT   rj   r   )r   rs   r   r   r         @F)r   rs   r   r   T)r6   r7   r   sumr	   r   r   r   r   astypefloat32float64r   dtyperesult_typerl   )r_   ywactualZdesiredr   w0w1w2r   Zw3r   r<   r<   r=   test_weightsL  s:    

$



 
zTestAverage.test_weightsc                 C   s&  t dddgdddgg}t|dd\}}t|d	 t|d
dd\}}t|t dddg t|ddd\}}t|t ddg ddg}t||d
dd\}}t|t dddg dddg}t||ddd\}}t|t d	d	g d
d
dgdddgg}t||ddd\}}t|t dd	g d S )NrL   rJ   rS   rH   rT   rj   T)r   r   r   r   r   )r   rs   r   r   )r6   r   r   r   r   )r_   r   r   Zsclr   r   r   r<   r<   r=   test_returnedx  s     

zTestAverage.test_returnedc                 C   sz   G dd dt j}t ddgddgg|}t ddgddgg|}ttt || ttt j||d| d S )Nc                   @   s   e Zd ZdS )z-TestAverage.test_subclasses.<locals>.subclassNrn   ro   rp   r<   r<   r<   r=   subclass  s   r   rL   rJ   rS   rH   r   )r6   ndarrayr   viewr   typer   )r_   r   r`   r   r<   r<   r=   test_subclasses  s
    zTestAverage.test_subclassesc                 C   sr   dddddg}|D ]Z\}}}t jddgdd	gg|d
}t jddgdd	gg|d
}tt j||djt | qd S )N)i4r   f8)r   f4r   )r   r   r   )r   r   r   )r   r   r   rL   rJ   rS   rH   r   r   )r6   r   r   r   r   )r_   Ztypsatwtrtr`   r   r<   r<   r=   test_upcasting  s     zTestAverage.test_upcastingc                 C   sX   t dd tdD }t dd tdD }||  }t|dt||d d S )Nc                 S   s   g | ]}t |qS r<   decimalDecimal).0r   r<   r<   r=   
<listcomp>  s     z1TestAverage.test_object_dtype.<locals>.<listcomp>r   c                 S   s   g | ]}t d qS rL   r   )r   _r<   r<   r=   r     s     r   r   )r6   r   r^   r   r	   r   r   )r_   r`   r   r<   r<   r=   test_object_dtype  s    zTestAverage.test_object_dtypec                 C   s4   t tddtddg}tt |tdd d S )NrL   rT   rS   rJ   )r6   r   r   r   r   rg   r<   r<   r=    test_average_class_without_dtype  s    z,TestAverage.test_average_class_without_dtype)rn   ro   rp   ra   pytestmarkparametrizer   r   r   r   r   r   r   r<   r<   r<   r=   r   !  s$     
 

,	r   c                   @   s   e Zd Zedddgedddgeddd	ggZed
d
d
ged
dd
ged
d
dggZdddZdd Zdd Z	dd Z
dd Zdd Zdd ZdS )
TestSelectrL   rJ   rS   rH   rT   rj   rk   ri   	   FTr   c                    s<   g }t t|D ]& | fddt||D p2|g7 }q|S )Nc                    s    g | ]\}}|  r|  qS r<   r<   )r   VCmr<   r=   r     s      z&TestSelect._select.<locals>.<listcomp>)r^   lenzip)r_   Zcondvaluesdefaultoutputr<   r   r=   _select  s    $zTestSelect._selectc                 C   sL   | j }| j}tt||dd| j||dd tt|d tt|d d S )N   r   rS   )choices
conditionsr   r,   r   r   r   r_   r   r   r<   r<   r=   ra     s    zTestSelect.test_basicc                 C   sf   t dt dddgg}dt dddg}tt||t d ttdgdgdgd	jd
 d S )NTFrL      rH   rS   rH   rS   r   r   r   )	r6   r   r7   rl   r   r,   r]   r   rA   r_   r   r   r<   r<   r=   test_broadcasting  s    zTestSelect.test_broadcastingc                 C   s   t t| j| jdjtj dd | jD }t t| j|jtj tdddtj	ddg}t
|}t t|g|gd	d	d	tj	d	d	g d S )
N              ?c                 S   s   g | ]}| tjqS r<   )r   r6   int8)r   choicer<   r<   r=   r     s     z0TestSelect.test_return_dtype.<locals>.<listcomp>rL   rJ   rS   rT   rk   r   )r   r,   r   r   r   r6   rB   r   r   nanisnan)r_   r   dr   r<   r<   r=   test_return_dtype  s    
zTestSelect.test_return_dtypec                 C   s"   t ttg g d t ttg g  d S )N              @)r   r\   r,   rx   r<   r<   r=   test_deprecated_empty  s    z TestSelect.test_deprecated_emptyc                 C   sj   | j }| jd d  }|d tj|d< ttt|| |d tj|d< ttt|| ttt|| d S Nr   )	r   r   r   r6   int_r   	TypeErrorr,   uint8r   r<   r<   r=   test_non_bool_deprecation  s    z$TestSelect.test_non_bool_deprecationc                 C   s2   t dggd }t dggd }t|| d S )NFd   rL   )r6   r   r,   r   r<   r<   r=   test_many_arguments  s    zTestSelect.test_many_argumentsN)r   )rn   ro   rp   r6   r   r   r   r   ra   r   r   r  r  r  r<   r<   r<   r=   r     s   
		r   c                   @   s^   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	e
jdddgdd ZdS )
TestInsertc              
   C   s  dddg}t t|ddddddg t t|ddddddg t t|dddgdddgddddddg t t|ddddgddddddg t t|dddgdddddddg t t|tdd ddddddddg t t|dddgdddgddddddg tjddgtjd	}t t|d|d d
d
dg t t|g g | tjddR}tddt	 t t|tdgd ddddddddg t
|d jt	k W 5 Q R X d S )NrL   rJ   rS   r   rX   r   rk   ri   r   r   r   Trecordalways rH   )r   r$   slicer6   r   r   warningscatch_warningsfilterwarningsFutureWarningr   category)r_   r`   r{   r   r<   r<   r=   ra     s$    
*$$&* zTestInsert.test_basicc              
   C   s  dddgg}dddgdddgg}t t|ddgddddg t t|ddddgdd| t t|dddd| t t|ddddddddgg tddgddgddgg}tddddd}tj|d d ddf tdddddj|d d ddf fdd}t t|dgdgdgdggdd| t t|dgdddgdd| t t|ddddgdd| t t|ddgdgdggdd| tddd}t t|d d d df d|d d df dd| t t|d dd d f d|dd d f dd| tdd}t t|d|d d d d df d	dt|d|d d d d df dd t t|d|d d dd d f d
dt|d|d d dd d f dd t	tj
t|d|d d dd d f dd t	tj
t|d|d d dd d f dd tdd}t t|d|d d d d df d	dt|d|d d d d df dd t t|d|d d dd d f d
dt|d|d d dd d f dd d S )NrL   rJ   r   rr   rS   rH      rJ   rS   rH   rX   rR   )r   r$   r6   r   r7   repeatrl   ZconcatenateTr   rv   )r_   r`   rr{   r   r<   r<   r=   test_multidim  sN     ,$"22" " ((" " zTestInsert.test_multidimc              	   C   s\   t d}tt j t|g ddd W 5 Q R X tt t|g ddd W 5 Q R X d S )NrL   rJ   r   rr   nonsense)r6   r   r   raisesrv   r$   r  rg   r<   r<   r=   test_0d,  s
    
zTestInsert.test_0dc              	   C   s   G dd dt j}t d|}ttt |ddg| ttt |g g | ttt |ddgddg| ttt |tddddg| ttt |tdddg | t d|}ttt |ddg| d S )	Nc                   @   s   e Zd ZdS )z*TestInsert.test_subclass.<locals>.SubClassNr   r<   r<   r<   r=   SubClass4  s   r  r   r   rL   rJ   rR   rX   )	r6   r   r7   r   r   
isinstancer$   r  r   r_   r  r`   r<   r<   r=   test_subclass3  s     " zTestInsert.test_subclassc                 C   sD   t dddg}t dddg|dddg t|t dddg d S )NrL   r   rJ   rS   rH   rT   )r6   r   r$   r   r_   r   r<   r<   r=   test_index_array_copied@  s    z"TestInsert.test_index_array_copiedc                 C   s   t jdddgddgd}d}t |d|}t|d t j||jd dgd	 }t |dd	g|}t|dd
g t j||jd d S )N)rL   r`   )rJ   r{   )rS   r   )foor   )bara1r   )rH   r   r   rJ   rS   )r6   r   r$   r   r   )r_   r`   valr{   r<   r<   r=   test_structured_arrayE  s    
z TestInsert.test_structured_arrayc              	   C   sp   t t( tdddgtddgddg W 5 Q R X t t$ tdddgtjg tdg  W 5 Q R X d S )	Nr   rL   rJ   r   r   r      r   )r   r  
IndexErrorr6   r$   r   floatrx   r<   r<   r=   test_index_floatsO  s    ,zTestInsert.test_index_floatsidxrH   r  c              	   C   s8   t jtdd  tdddg|gddg W 5 Q R X d S )Nzout of boundsmatchr   rL   rJ   rS   rH   )r   r  r*  r6   r$   )r_   r-  r<   r<   r=   test_index_out_of_boundsU  s    z#TestInsert.test_index_out_of_boundsN)rn   ro   rp   ra   r  r  r!  r#  r(  r,  r   r   r   r0  r<   r<   r<   r=   r	    s   *
r	  c                   @   s   e Zd Zdd ZdS )TestAmaxc                 C   sv   dddddddg}t t|d ddd	gddd
gdddgg}t tj|ddddd	g t tj|ddd	ddg d S )NrS   rH   rT   r   rU   r         $@      "@r   ri   r   r   r   rr   r   rL   )r   r6   Zamaxrz   r<   r<   r=   ra   ]  s    zTestAmax.test_basicNrn   ro   rp   ra   r<   r<   r<   r=   r1  [  s   r1  c                   @   s   e Zd Zdd ZdS )TestAminc                 C   sv   dddddddg}t t|d ddd	gdd
dgdddgg}t tj|dddddg t tj|dddddg d S )NrS   rH   rT   r   rU   r2  r   g      r4  r3  r   ri   r   r   r   rr   rL   r   )r   r6   Zaminrz   r<   r<   r=   ra   i  s    zTestAmin.test_basicNr5  r<   r<   r<   r=   r6  g  s   r6  c                   @   s   e Zd Zdd ZdS )TestPtpc              	   C   s   t dddddddg}t|jdd	d
 t dddgdddgdddgg}t|jdd	dddg t|jdd	dddg t|jddddddgg t|jddddgg d S )NrS   rH   rT   r   rU   r2  r   r   rr         .@r4  r3  r   ri   r   r         @rX   Tr   rY   r   )r6   r   r   Zptprz   r<   r<   r=   ra   u  s    zTestPtp.test_basicNr5  r<   r<   r<   r=   r7  s  s   r7  c                   @   s   e Zd Zdd ZdS )
TestCumsumc              
   C   s,  dddddddg}ddddgddd	d
gddddgg}t jt jt jt jt jt jt jt jt j	t j
f
D ]}t ||}t ||}t dddddddg|}tt j|dd| t ddddgddddgddddgg|}tt j|dd| t ddddgddddgddddgg|}tt j|dd| q`d S )NrL   rJ   r   r   rj   rT   rH   rS   rk   r   rV   r     #   '   r   rr   ri                     )r6   r   r  int16uint16int32uint32r   r   	complex64
complex128r   r   cumsum)r_   baba2ctyper`   a2tgtr<   r<   r=   ra     s.    "       zTestCumsum.test_basicNr5  r<   r<   r<   r=   r:    s   r:  c                   @   s   e Zd Zdd ZdS )TestProdc              	   C   s   dddddddg}ddddgddd	d
gddddgg}t jt jt jt jt jt jt jt jfD ]}t 	||}t 	||}|dkrt
tt j| t
tt j|d qXt|jddd t|jddt 	ddddg| t|jddt 	dddg| qXd S )NrL   rJ   r   r   rj   rT   rH   rS   rk   r   1r{   r   rr    g  rb   $   T      rX   r  b  X  )r6   rD  rE  rF  rG  r   r   rH  rI  r   r   ArithmeticErrorprodr   r   r_   rK  rL  rM  r`   rN  r<   r<   r=   ra     s(    "   zTestProd.test_basicNr5  r<   r<   r<   r=   rP    s   rP  c                   @   s   e Zd Zdd ZdS )TestCumprodc                 C   sN  dddddddg}ddddgddd	d
gddddgg}t jt jt jt jt jt jt jt jfD ]}t 	||}t 	||}|dkrt
tt j| t
tt j|d t
tt j| qXtt j|ddt 	dddddddg| tt j|ddt 	ddddgddddgddddgg| tt j|ddt 	ddddgddddgddddgg| qXd S ) NrL   rJ   r   r   rj   rT   rH   rS   rk   r   rQ  rX   rr   r)     i(  i  rS  r   r      rT  rb   rU  rV  r  r;     rW  r   rX  )r6   rD  rE  rF  rG  r   r   rH  rI  r   r   rY  Zcumprodr   r[  r<   r<   r=   ra     sN    "     



zTestCumprod.test_basicNr5  r<   r<   r<   r=   r\    s   r\  c                   @   sL   e Z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S )TestDiffc                 C   s   dddddg}t ddddg}t d	d	dg}t d
dg}tt|| tt|dd| tt|dd| dddddg}t ddddg}tt|| ddddg}t dddg}t ddg}tt|| tt|dd| d S )NrL   rH   rj   rk   r   rS   rJ   rT   rX   r   r:   皙?皙@r   gɿ皙g?g	皙?TF)r6   r   r   r   r	   )r_   r   outout2out3r<   r<   r=   ra     s    zTestDiff.test_basicc                 C   s   t d}d|d d dd dd d f< t d}d|d d dd dd d f< tt|t d tt|ddt d tt|ddt d	 tt|dd| tt|d
d| tt jt|dd tt jt|dd t dt j}tt	t| d S )N)r   r)  r;  rL   rJ   )r      r;  rX   )r   r)     rr   r   )r   r)  r;  rR   rS   r  gq?)
r6   r?   r]   r   r   r   rv   r   r   r\   )r_   r   expr<   r<   r=   	test_axis  s    

zTestDiff.test_axisc                 C   s*  dt ddd }|d d d d dd f |d d d d d df  }|d d d d dd f |d d d d d df  }|dd d d d d f |d dd d d d f  }|dd d d d d f |d dd d d d f  }tt|| tt|dd| tt|dd	| tt|ddd
| d S )Nr)  r   r;  rL   rX   rJ   ra  r   rr   )r:   rs   )r   r   r   )r_   r   Zout1rg  rh  Zout4r<   r<   r=   r     s    4444zTestDiff.test_ndc                    s   t td ttt dd  fddtddD }ddgdgg g g}tt dd k tt||dd	D ]R\}\}}tt|t	j
k t|| t|jt	j tt|tdt |  qld S )
NrS   rX   ra  c                    s   g | ]}t  |d qS )ra  )r   )r   r:   r   r<   r=   r     s     z#TestDiff.test_n.<locals>.<listcomp>rL   rT   r   start)listr^   r   r\   r   r   	enumerater   r   r6   r   r   r   r   r  r   max)r_   r   expectedr:   rf  r<   rm  r=   test_n  s    
zTestDiff.test_nc                 C   s   t jddt jd}t jddgddt jdgddg}|t jg ddgd  t|ddD ],\}}t||d	}t|| t|j	|j	 qZd S )
Nz
1066-10-13z
1066-10-16r   rL   timedelta64[D]r   rS   rn  ra  )
r6   r7   Z
datetime64r   extendrq  r   r   r   r   )r_   r   rs  r:   rk  rf  r<   r<   r=   
test_times  s    
zTestDiff.test_timesc                 C   s   t jddgddgddgddgd	d
ggddgddgddgddgddggd}t|}t|jdgdgdgdgdgg t|jdgdgdgdgdgg tt|t|k t|dd}t|jg g g g g g t|jg g g g g g tt|t|k d S )NrL   rJ   rS   rH   rT   rj   rk   ri   r   r   FTmaskra  )r   r   r   r   r;   ry  r   r   )r_   r   rf  rh  r<   r<   r=   r!    s&    $     zTestDiff.test_subclassc                 C   sN  t dd }tt|ddt d tt|dgdt d tt t j|dd| tt|ddgdt d t ddd}t j|ddd	}ddgddgg}t|| t j|ddgdggd	}t|| t j|ddd	}ddgddgg}t|| t j|dddggd	}t|| ttt j|t 	d
d tt j
t|ddd d S )NrT   rL   r   )prependrX   rj   rH   rJ   )rs   rz  rS   rS   rS   )rz  rs   )r6   r7   r   r   r]   rJ  rl   r   r\   r?   rv   r_   r   resultrs  r<   r<   r=   test_prepend  s$    



zTestDiff.test_prependc                 C   sB  t d}t|dd}dddddg}t|| t|dgd}t|| t|ddgd}|dg }t|| t ddd}t j|ddd}dd	gdd
gg}t|| t j|ddgdggd}t|| t j|ddd}ddgdd
gg}t|| t j|dddggd}t|| ttt j|t dd tt jt|ddd d S )NrT   r   )appendrL   r  rJ   rH   )rs   r  rX   rU   rR   r{  rS   )r  rs   )	r6   r7   r   r   rl   r   r\   r?   rv   r|  r<   r<   r=   test_append7  s,    








zTestDiff.test_appendN)rn   ro   rp   ra   rl  r   rt  rw  r!  r~  r  r<   r<   r<   r=   r`    s   r`  c                   @   s   e Z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jdedgdggdd Zdd ZdS )
TestDeletec                 C   s,   t d| _t ddddd| _d S )NrT   rJ   rL   )r6   r7   r`   r  rl   nd_arx   r<   r<   r=   setup_methodV  s    zTestDelete.setup_methodc                 C   s   t | j|}t | j|dd}d| }tt|| j|f | j|d t|dd d df | jd|df }t|| jdd d df |d d S )NrL   rr   zDelete failed for obj: %r)err_msgr   )r   r`   r  r   r-   )r_   indicesa_delnd_a_delmsgxorr<   r<   r=   _check_inverse_of_slicingZ  s    $z$TestDelete._check_inverse_of_slicingc                 C   sV   dddddddg}dd	dd
g}|D ].}|D ]$}|D ]}t |||}| | q2q*q"d S )NrR   r   rL   rJ   rH   rT   rU   rX   rS   )r  r  )r_   ZlimsZstepsro  stopstepsr<   r<   r=   test_slicesc  s    zTestDelete.test_slicesc              	   C   s   |  tddgddgg tt t| jdg W 5 Q R X tt t| jdg W 5 Q R X |  ddddg |  dddddg tt t| jd W 5 Q R X tt t| jd W 5 Q R X tt t| jdgd	  W 5 Q R X d S )
Nr   rL   rJ   r  irX   TFrH   )	r  r6   r   r   r  r*  r   r`   r\   rx   r<   r<   r=   
test_fancyl  s    zTestDelete.test_fancyc                 C   s   |  d |  d d S )Nr   r  )r  rx   r<   r<   r=   test_single  s    
zTestDelete.test_singlec              	   C   sX   t d}tt j t|g dd W 5 Q R X tt t|g dd W 5 Q R X d S )NrL   r   rr   r  )r6   r   r   r  rv   r   r  rg   r<   r<   r=   r    s
    
zTestDelete.test_0dc                 C   s   G dd dt j}| j|}ttt|d| ttt|g | ttt|ddg| ttt|tdd| ttt|tdd| d S )Nc                   @   s   e Zd ZdS )z*TestDelete.test_subclass.<locals>.SubClassNr   r<   r<   r<   r=   r    s   r  r   rL   rJ   rR   )r6   r   r`   r   r   r  r   r  r   r<   r<   r=   r!    s    zTestDelete.test_subclassc                 C   sR   t djdddd}t|tdd dd}t|jj|jj t|jj|jj d S )	Nr   rJ   rT   r   r   <   rL   rr   )	r6   r7   rl   r   r  r   r   r   r   )r_   rW   r   r<   r<   r=   test_array_order_preserve  s    z$TestDelete.test_array_order_preservec              	   C   sh   t t" tdddgtddg W 5 Q R X t t" tdddgtjg td W 5 Q R X d S )Nr   rL   rJ   r   r   r   )r   r  r*  r6   r   r   r+  rx   r<   r<   r=   r,    s    &zTestDelete.test_index_floatsindexerrL   c                 C   sX   t | jd}t | j|}t|| t | jddd}t | jtdgdd}t|| d S )NrL   rr   )r   r`   r   r  r6   r   )r_   r  Z	a_del_intr  Znd_a_del_intr  r<   r<   r=   test_single_item_array  s    
z!TestDelete.test_single_item_arrayc              	   C   s   t tdtdg}t|td td}tjdgtd}tjdgtd}t ||dd}t|| t ||dd}t||d d d df  tt" t td	tjdgt	d W 5 Q R X tt" t td	tjdgd
d W 5 Q R X d S )NrL   F)rS   rL   r   TrX   rr   r   rJ   zm8[ns])
r   r6   r]   r   r   boolr   r  r*  object)r_   resr   Z
false_maskZ	true_maskr<   r<   r=   test_single_item_array_non_int  s    

&z)TestDelete.test_single_item_array_non_intN)rn   ro   rp   r  r  r  r  r  r  r!  r  r,  r   r   r   r6   r   r  r  r<   r<   r<   r=   r  T  s   		


	r  c                   @   s   e Z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jdejejejejgdd Zejdejejejejgdd Zejdejejejejgdd Zejdejejejejgdd  Zd!S )"TestGradientc                 C   sf   ddgddgg}t |}t ddgddggt ddgddggg}tt|| tt|| d S )NrL   rS   rH   r   r   r   r   )r6   r   r   r    r_   vr   dxr<   r<   r=   ra     s    
zTestGradient.test_basicc              	   C   s   t t d}dddddg}t ddd}tt dd tt dt d tt d| t|d	 t|t d	 t||| t||d
 t||dd ttdt|t j	|gd
 ddd d S )NrT   r   r   r   r4        &@   r         ?rJ   rL   rr   z.*scalars or 1drX   )
r6   rJ  r]   r7   rl   r    r   r   r\   stack)r_   r  Z	dx_unevenf_2dr<   r<   r=   	test_args  s"    
   zTestGradient.test_argsc                 C   s   t ddd}t t d}ttt||t d ttt|dt d ttt|t dt d ttt|| ttt||dd ttt|||| ttt|ddd ttt|||dd ttt|dddd d S )Nr  rT   rJ   rL   rY   rr   )	r6   r7   rl   rJ  r]   r   r\   r    r  )r_   r  r   r<   r<   r=   test_badargs  s    zTestGradient.test_badargsc                 C   s^   t jdddddddgdd	}t jd
ddddddgdd	}tt|| t|jt dk d S )Nz
1910-08-16z
1910-08-11z
1910-08-10z
1910-08-12z
1910-10-12z
1910-12-12z
1912-12-12zdatetime64[D]r   r2  rU   r      =   i  i  ru  r6   r   r   r    r   r   r_   r   r  r<   r<   r=   test_datetime64  s      zTestGradient.test_datetime64c                 C   s   t jjddgddggddgddggd}t|d }tt|t| t|j|jk	 t jd}t jj	|d< t j|dd	 t
|jddd
ddg d S )NrL   rS   rH   Frx  r   rT   rJ   
edge_orderT)r6   r   r   r    r   r   r   Z_maskr7   maskedr   ry  )r_   r   rf  x2r<   r<   r=   test_masked  s    zTestGradient.test_maskedc                 C   s  t ddd}|d |d  }d|d  d|d   d|  }d|d  d|  d }t t j||dd	| d }tt |d
k dk t jd t t jd}d|d  d|d   d|  }d|d  d|  d }t t j||dd	| d }tt |d
k dk d S )Nr   rL   r   rJ   rS   rH   rj   ri   r  gQ?T)	r6   linspaceabsr    r   r   randomseedsort)r_   r   r  r   Z
analyticalZ	num_errorr<   r<   r=   test_second_order_accurate  s      z'TestGradient.test_second_order_accuratec                 C   s  t ddddddg}t |d|dd }t d	d
ddddg}t d}t ddddd
d	gd}t ddddd
dgd}t dddd
dd	gd}t dddd
ddgd}d|fd|ffD ]\}}	t|dd|d}
t|||d|d}t|||d |d}t|
| t|| t|
d |	j t|
d |	 t|dd|d}
t||d|d}t	|
j
|j
k t||	j t|dd|d}
t||d|d}t	|
j
|j
k t||	 qd|fd|ffD ]\}}	t|||d|d}
t|||d |d}t|
| t|
d |	j t|
d |	 t||d|d}
t|
|	j t||d|d}
t|
|	 qt|||ddd}
t|||ddd}t|
d |d  t|
d |d  t|
d |j t|
d | t|||ddd}
t|||ddd}t|
d |d  t|
d |d  t|
d |j t|
d | d S )Nr   r   r   r   r   )rj   rL   rX   rL   r         ?r   r9  r   r        @      g333333?      ?g      пrJ   rY   )rs   r  rZ   )r6   r   Ztilerl   r7   r    r   r	   r  r   rA   )r_   fZx_unevenZx_evenZfdx_even_ord1Zfdx_even_ord2Zfdx_uneven_ord1Zfdx_uneven_ord2r  Zexp_resres1res2res3r<   r<   r=   test_spacing+  st    
  

  
zTestGradient.test_spacingc                 C   s@  ddgddgg}t |}t ddgddggt ddgddggg}tt|dd	|d  tt|dd	|d  tt|d
d	|d  tt|dd	|d |d g tt|d d	|d |d g tt|d d	t| tt|dddd	|d d |d d g ttt|dddd	 tt jt|dd	 tt jt|dd	 d S )NrL   rS   rH   r   r   r   r   r   rr   rX   rZ   rJ   rU   )r6   r   r   r    r	   r   r  rv   r  r<   r<   r=   test_specific_axesk  s"    
zTestGradient.test_specific_axesc                 C   s^   t jdddddddgdd	}t jd
ddddddgdd	}tt|| t|jt dk d S )Nr2  rU   r   r   r  iA  ,  ru  r   rJ   rk   r     w   ir  r  r<   r<   r=   test_timedelta64  s    zTestGradient.test_timedelta64c                 C   sF   t jt jt jfD ]0}t jdddg|d}tt|jt |j qd S )NrL   rJ   rS   r   )	r6   float16r   r   r   r   r    r   r   )r_   dtr   r<   r<   r=   test_inexact_dtypes  s    z TestGradient.test_inexact_dtypesc                 C   s   t tddd t tddd ttt tddd ttt tddd ttt tddd ttt tddd ttt tddd d S )NrJ   rL   r  rS   r   )r    r6   r7   r   r\   rx   r<   r<   r=   test_values  s    zTestGradient.test_valuesf_dtypec                 C   s8   t jdddddg|d}t|}t|dgt|  d S )NrT   rH   rS   rJ   rL   r   rX   r6   r   r    r   r   )r_   r  r  gr<   r<   r=   test_f_decreasing_unsigned_int  s    z+TestGradient.test_f_decreasing_unsigned_intc                 C   sR   t |j}t ddg}t jd|g|d}t||}t||d d gd  d S )NrL   rS   rX   r   rJ   )r6   iinforr  r   r    r   )r_   r  maxintr   r  dfdxr<   r<   r=   test_f_signed_int_big_jump  s
    
z'TestGradient.test_f_signed_int_big_jumpx_dtypec                 C   sF   t jdddg|d}t dddg}t||}t|dgt|  d S )NrS   rJ   rL   r   r   rH   rR   r  )r_   r  r   r  r  r<   r<   r=   test_x_decreasing_unsigned  s    
z'TestGradient.test_x_decreasing_unsignedc                 C   sX   t |j}t |j}t jd|g|d}t |d dg}t||}t|ddg d S )NrX   r   rJ   r   r  )r6   r  minrr  r   r    r   )r_   r  Zminintr  r   r  r  r<   r<   r=   test_x_signed_int_big_jump  s    
z'TestGradient.test_x_signed_int_big_jumpN)rn   ro   rp   ra   r  r  r  r  r  r  r  r  r  r  r   r   r   r6   r  rE  rG  Zuint64r  r   rD  rF  Zint64r  r  r  r<   r<   r<   r=   r    s>   @ 
 
 
 r  c                   @   s   e Zd Zdd Zdd ZdS )	TestAnglec                 C   s   dt dd dt d d  dddddd	g}t|}t d
t ddt jd t jt j d t d
 t jt d
 g}t|dd}t |d t j }t||d t||d d S )N      ?      @rJ   r   r   rL   rX                      ?      y            @r   r   r   T)degrV  r   )r6   sqrtr   arctanpir   r
   )r_   r   r   ZyozZzor<   r<   r=   ra     s,              

 zTestAngle.test_basicc                 C   s   t jddt dd d g}t jj|d< t jt ddt dg}t jj|d< t|}tt|t| t|j	|j	 t|| d S )Nr  rL   rJ         ?      ?r   r   r   )
r6   r   r   r  r  r  r   r   r   ry  )r_   r   rs  r   r<   r<   r=   r!    s     zTestAngle.test_subclassN)rn   ro   rp   ra   r!  r<   r<   r<   r=   r    s   r  c                
   @   s   e Zd ZeddddddddgZeeZee	Z
eeZdd Zdd	 Zd
d Zdd Zdd Zdd Zejdedddgedddgedddggdd Zdd Zdd ZdS )TestTrimZerosr   rL   rJ   rS   rH   c                    s   d} fdd|D S )N)r`   r{   r   r   c                 3   s   | ]}t  |V  qd S r5   )getattr)r   namerx   r<   r=   	<genexpr>  s     z'TestTrimZeros.values.<locals>.<genexpr>r<   )r_   Z
attr_namesr<   rx   r=   r     s    zTestTrimZeros.valuesc                 C   s6   t jdd }|  D ]}t|}t|||  qd S )NrJ   rX   r6   s_r   r0   r   r_   slcarrr  r<   r<   r=   ra     s    zTestTrimZeros.test_basicc                 C   s:   t jd d }|  D ]}t|dd}t|||  qd S )NrX   r{   Ztrimr  r  r<   r<   r=   test_leading_skip  s    zTestTrimZeros.test_leading_skipc                 C   s:   t jdd  }|  D ]}t|dd}t|||  qd S )NrJ   r   r  r  r  r<   r<   r=   test_trailing_skip  s    z TestTrimZeros.test_trailing_skipc                 C   sZ   |   D ]L}tj||jd}t|dd}t|dks8tt|dd}t|dkstqd S )Nr   Br  r   r  )r   r6   Z
zeros_liker   r0   r   r   )r_   Z_arrr  r  r  r<   r<   r=   test_all_zero  s    zTestTrimZeros.test_all_zeroc                 C   s    t d}t|}t|| d S r  )r6   r?   r0   r   r_   r  r  r<   r<   r=   test_size_zero  s    
zTestTrimZeros.test_size_zeror  l            l            l            c                 C   s(   t jdd }t|}t|||  d S )NrL   rJ   )r6   r  r0   r   )r_   r  r  r  r<   r<   r=   test_overflow  s    zTestTrimZeros.test_overflowc                 C   s&   t d dd g}t|}t|| d S NrL   )r6   r   r0   r   r  r<   r<   r=   test_no_trim  s    zTestTrimZeros.test_no_trimc                 C   s    t | j }t|tstd S r5   )r0   r`   tolistr  rp  r   )r_   r  r<   r<   r=   test_list_to_list  s    zTestTrimZeros.test_list_to_listN)rn   ro   rp   r6   r   r`   r   r+  r{   complexr   r  r   r   ra   r  r  r  r  r   r   r   r  r  r  r<   r<   r<   r=   r    s(   




r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )
TestExtinsc              	   C   s>   t dddddddg}t|dk|}t|dddddg d S )NrL   rS   rJ   )r6   r   r   r   rz   r<   r<   r=   ra   "  s    zTestExtins.test_basicc              	      s  t ttdddgddgddg tdddddd	d
g t dddddddgdddg t ddddddd
g t td
g  t tdd	 t dddddddgd	dg t d	dddd	ddg tt	d fdd tddg t ddgd t ddg d S )NrL   rJ   rS   TFr   rH   rT   ri   rk   rj   r   z!Cannot insert from an empty arrayc                	      s   t  dddddddgg S r   )r*   r<   r`   r<   r=   <lambda>6      z'TestExtins.test_place.<locals>.<lambda>Z12Z349)
r   r  r*   r6   r   r   r?   r7   r   r\   rx   r<   r  r=   
test_place'  s     
zTestExtins.test_placec                 C   sH   t d}|dk}| }t||}t||d t||| t|| d S )Nr   r  r   )r   r   r   r*   r   )r_   r`   ry  acr   r<   r<   r=   	test_both=  s    
zTestExtins.test_bothN)rn   ro   rp   ra   r  r  r<   r<   r<   r=   r     s   r  r   c                 C   s   |t |  S r5   mathfloorr   r   r<   r<   r=   _foo1I  s    r  r   c                 C   s   |t |  | S r5   r  )r   r   r  r<   r<   r=   _foo2M  s    r   c                   @   s$  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=d> Z!d?d@ Z"dAdB Z#dCdD Z$dEdF Z%dGS )HTestVectorizec                 C   s@   dd }t |}|ddddgdddd	g}t|dddd
g d S )Nc                 S   s   | |kr| | S | | S d S r5   r<   r`   r{   r<   r<   r=   addsubtractT  s    z.TestVectorize.test_simple.<locals>.addsubtractr   rS   rj   r   rL   rT   rk   rJ   r3   r   r_   r  r  r  r<   r<   r=   test_simpleS  s    zTestVectorize.test_simplec                 C   s8   dd }t |}|ddddgd}t|ddd	d
g d S )Nc                 S   s   | |kr| | S | | S d S r5   r<   r  r<   r<   r=   r  _  s    z.TestVectorize.test_scalar.<locals>.addsubtractr   rS   rj   r   rT   ri   rL   rH   r  r  r<   r<   r=   test_scalar^  s    zTestVectorize.test_scalarc                 C   s0   t ddd}tdd }||}t|| d S )NrU   rJ   i'  c                 S   s   | S r5   r<   rm  r<   r<   r=   r  k  r  z*TestVectorize.test_large.<locals>.<lambda>)r6   r  r3   r   )r_   r   r  r   r<   r<   r=   
test_largei  s    zTestVectorize.test_largec                 C   sR   t tj}tddtj tjdtj dtj g}||}t|}t|| d S )Nr   r  r  rJ   )r3   r  cosr6   r   r  r
   )r_   r  argsr1r2r<   r<   r=   
test_ufunco  s
    
(
zTestVectorize.test_ufuncc                 C   sl   ddd}t |}tdddg}||}tdddg}t|| ||d}tdddg}t|| d S )	NrL   c                 S   s   | | S r5   r<   r  r<   r<   r=   r$  x  s    z(TestVectorize.test_keywords.<locals>.foorJ   rS   rH   rT   )rL   r3   r6   r   r   r_   r$  r  r
  r  r  r<   r<   r=   test_keywordsv  s    


zTestVectorize.test_keywordsc                 C   s:   t ttgd}|tdd}|td}t|| d S Notypesr   r   r3   r  r+  r6   r7   r   r_   r  r  r  r<   r<   r=    test_keywords_with_otypes_order1  s    z.TestVectorize.test_keywords_with_otypes_order1c                 C   s:   t ttgd}|td}|tdd}t|| d S r  r  r  r<   r<   r=    test_keywords_with_otypes_order2  s    z.TestVectorize.test_keywords_with_otypes_order2c                 C   sT   t ttgd}|td}|tddd}|td}t|| t|| d S )Nr  r   r   r   r  r_   r  r  r  Zr3r<   r<   r=    test_keywords_with_otypes_order3  s    
z.TestVectorize.test_keywords_with_otypes_order3c                 C   sd   t ttgd}|ddd}|ddd}|d}t|tddd t|tddd t|td d S )Nr  $@r  )r  rX   r  r3   r   r+  r   r  r<   r<   r=   +test_keywords_with_otypes_several_kwd_args1  s    z9TestVectorize.test_keywords_with_otypes_several_kwd_args1c                 C   sR   t ttgd}|dddd}|ddd}t|tdddd t|tddd d S )	Nr  r  r  rX   )r  r   r   rL   rJ   rS   r  r  r<   r<   r=   +test_keywords_with_otypes_several_kwd_args2  s
    z9TestVectorize.test_keywords_with_otypes_several_kwd_args2c                 C   s6   dd l }zt|j W n tk
r0   t Y nX d S r  )r  r3   	randrange	Exceptionr   )r_   r  r<   r<   r=   test_keywords_no_func_code  s
    z(TestVectorize.test_keywords_no_func_codec                 C   s   ddd}t |}tdddg}||d}tdddg}t|| |d|d}t|| ||dd	}tddd
g}t|| d S )NrL   c                 S   s   | | S r5   r<   r  r<   r<   r=   r$    s    z5TestVectorize.test_keywords2_ticket_2100.<locals>.foorJ   rS   r  rH   )r{   r`   r{   rT   )rL   r  r  r<   r<   r=   test_keywords2_ticket_2100  s    



z(TestVectorize.test_keywords2_ticket_2100c                 C   sx   dd }t j|ddgd}ddg}t||ddgdd	dgd
 t||ddgdd	dgd t||ddgdd	dg d S )Nc                 S   s.   t |}|d}|r*||  |d }q|S r  )rp  pop)r   pZ_pr  r<   r<   r=   	mypolyval  s
    
z;TestVectorize.test_keywords3_ticket_2100.<locals>.mypolyvalr%  rL   )excludedrS   rj   r   rJ   )r   r%  )r%  )r6   r3   r   )r_   r&  ZvpolyvalZansr<   r<   r=   test_keywords3_ticket_2100  s    z(TestVectorize.test_keywords3_ticket_2100c                 C   s.   t dd }t|ddgddgdddg d S )	Nc                  [   s   d}| D ]}|| | 9 }q|S Nr   r<   )kwr  Z_kr<   r<   r=   r    s    z3TestVectorize.test_keywords4_ticket_2100.<locals>.frL   rJ   rS   rH   r  ri   r  r_   r  r<   r<   r=   test_keywords4_ticket_2100  s    
z(TestVectorize.test_keywords4_ticket_2100c                 C   s,   t dd }t|ddgddgddg d S )Nc                  W   s
   t | S r5   )r6   rZ  )r  r<   r<   r=   r    s    z3TestVectorize.test_keywords5_ticket_2100.<locals>.frL   rJ   rS   rH   ri   r  r+  r<   r<   r=   test_keywords5_ticket_2100  s    
z(TestVectorize.test_keywords5_ticket_2100c                 C   s    dd }t |}t| d d S )Nc                   S   s   dS r  r<   r<   r<   r<   r=   r$    s    z5TestVectorize.test_coverage1_ticket_2100.<locals>.foorL   r  r_   r$  r  r<   r<   r=   test_coverage1_ticket_2100  s    z(TestVectorize.test_coverage1_ticket_2100c                 C   s>   dd }t |}t|j|j d}t ||d}t|j| d S )Nc                 S   s   | S )zOriginal documentationr<   rm  r<   r<   r=   r$    s    z3TestVectorize.test_assigning_docstring.<locals>.foozProvided documentation)doc)r3   r   __doc__)r_   r$  r  r0  r<   r<   r=   test_assigning_docstring  s    z&TestVectorize.test_assigning_docstringc                 C   s`   G dd d}t t| jtdtdd  t t|j| tdtdd  d S )Nc                   @   s   e Zd ZdZdd ZdS )z9TestVectorize.test_UnboundMethod_ticket_1156.<locals>.FoorJ   c                 S   s
   || j  S r5   r"  rg   r<   r<   r=   r%    s    z=TestVectorize.test_UnboundMethod_ticket_1156.<locals>.Foo.barN)rn   ro   rp   r{   r%  r<   r<   r<   r=   Foo  s   r3  r   rJ   )r   r3   r%  r6   r7   )r_   r3  r<   r<   r=   test_UnboundMethod_ticket_1156  s    z,TestVectorize.test_UnboundMethod_ticket_1156c                 C   sl   t dd }|td}|tdd}t dd }|tdd}|td}t|| t|| d S )Nc                 S   s   | S r5   r<   rm  r<   r<   r=   r    r  z@TestVectorize.test_execution_order_ticket_1487.<locals>.<lambda>rS   re  c                 S   s   | S r5   r<   rm  r<   r<   r=   r    r  )r3   r6   r7   r   )r_   f1Zres1aZres1bf2Zres2bZres2ar<   r<   r=    test_execution_order_ticket_1487  s    
z.TestVectorize.test_execution_order_ticket_1487c                 C   s$   t dd }d}t||| d S )Nc                 S   s   | S r5   r<   rm  r<   r<   r=   r  '  r  z7TestVectorize.test_string_ticket_1892.<locals>.<lambda>Zd0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789)r6   r3   r   )r_   r  r  r<   r<   r=   test_string_ticket_1892%  s    z%TestVectorize.test_string_ticket_1892c                    sN   dg t  fdd}d|_td}t||||  t d t| d S )Nr   c                    s    d  d7  < | d S )Nr   rL   rJ   r<   rm  Z_callsr<   r=   r  /  s    z#TestVectorize.test_cache.<locals>.fTrT   )r3   cacher6   r7   r   r   r   r_   r  r   r<   r9  r=   
test_cache+  s    
zTestVectorize.test_cachec                 C   s0   t dd }d|_t d}t||| d S )Nc                 S   s   | S r5   r<   rm  r<   r<   r=   r  :  r  z+TestVectorize.test_otypes.<locals>.<lambda>r   rT   )r6   r3   r  r7   r   r;  r<   r<   r=   test_otypes9  s    
zTestVectorize.test_otypesc              	   C   s  t tddgdgf t tddgdgf t tdddgdgf t tddgdgf t td	dgddgf t td
dddgdgf t tddgdgf t tddgdgf t tdddgdgf t tddgdgf t tddgddgf t tddddgdgf tt td W 5 Q R X tt td W 5 Q R X tt td W 5 Q R X d S )Nz(x)->()rm  r<   z	(x,y)->()r  z(x),(y)->()r  z(x)->(y)z(x)->(y),()z(),(a,b,c),(d)->(d,e))r`   r{   r   )r   )r   ez(x )->()z( x , y )->(  )z(x),( y) ->()z(  x)-> (y )  z (x)->( y),( )z*(  ), ( a,  b,c )  ,(  d)   ->   (d  ,  e)z
(x)(y)->()z	(x),(y)->z
((x))->(x))r   nfbZ_parse_gufunc_signaturer   r\   rx   r<   r<   r=   test_parse_gufunc_signature?  sP    















z)TestVectorize.test_parse_gufunc_signaturec                 C   sD   dd }t |dd}|ddddgd	dd
dg}t|d	dd	dg d S )Nc                 S   s   | |kr| | S | | S d S r5   r<   r  r<   r<   r=   r  b  s    z8TestVectorize.test_signature_simple.<locals>.addsubtractz	(),()->()	signaturer   rS   rj   r   rL   rT   rk   rJ   r  r  r<   r<   r=   test_signature_simplea  s    z#TestVectorize.test_signature_simplec                 C   s:   dd }t |dd}|ddgddgg}t|ddg d S )	Nc                 S   s   |   S r5   r   r  r<   r<   r=   r   m  s    z4TestVectorize.test_signature_mean_last.<locals>.meanz(n)->()rA  rL   rS   rJ   rH   r  )r_   r   r  r  r<   r<   r=   test_signature_mean_lastl  s    z&TestVectorize.test_signature_mean_lastc                 C   sB   dd }t |dd}|ddgddgg}t|d	dgd	dgg d S )
Nc                 S   s   | |    S r5   rD  r  r<   r<   r=   centeru  s    z3TestVectorize.test_signature_center.<locals>.center(n)->(n)rA  rL   rS   rJ   rH   rX   r  )r_   rF  r  r  r<   r<   r=   test_signature_centert  s    z#TestVectorize.test_signature_centerc                 C   sd   t dd dd}|dddg}tt|to4t|dk t|d dddg t|d dddg d S )	Nc                 S   s   | | fS r5   r<   rm  r<   r<   r=   r  }  r  z:TestVectorize.test_signature_two_outputs.<locals>.<lambda>	()->(),()rA  rL   rJ   rS   r   )r3   r   r  tupler   r   r_   r  r  r<   r<   r=   test_signature_two_outputs|  s
    z(TestVectorize.test_signature_two_outputsc                 C   s  t tjdd}|ddgdddg}t|dddgdddgg |ddgggdddg}t|dddgdddgggg |ddgddggdddg}t|dddgdddggdddgdddggg |ddgdddgdddgg}t|dddgdddggdddgdddggg d S )	Nz(a),(b)->(a,b)rA  rL   rJ   rS   rH   rj   r   )r3   r6   r9   r   rK  r<   r<   r=   test_signature_outer  s    z"TestVectorize.test_signature_outerc                 C   s^   t dd dd}|dddg}t|ddg |dddgdddgg}t|ddgddgg d S )	Nc                 S   s   | d d S NrX   r<   rm  r<   r<   r=   r    r  z<TestVectorize.test_signature_computed_size.<locals>.<lambda>z(n)->(m)rA  rL   rJ   rS   rH   r  rK  r<   r<   r=   test_signature_computed_size  s
    z*TestVectorize.test_signature_computed_sizec                 C   sV   ddd}t |ddhd}t|dddgddd	g t|dddgd
ddddg d S )NrL   c                 S   s   | | S r5   r<   r  r<   r<   r=   r$    s    z2TestVectorize.test_signature_excluded.<locals>.foo()->()r{   )rB  r'  rJ   rS   rH   r   r"  )rL   r  r.  r<   r<   r=   test_signature_excluded  s    
z%TestVectorize.test_signature_excludedc                 C   sH   t dd ddgd}|dddg}t|jtd t|dddg d S )	Nc                 S   s   | S r5   r<   rm  r<   r<   r=   r    r  z5TestVectorize.test_signature_otypes.<locals>.<lambda>rG  r   rB  r  rL   rJ   rS   )r3   r   r   r6   r   rK  r<   r<   r=   test_signature_otypes  s    z#TestVectorize.test_signature_otypesc              	   C   s   t tjdd}ttd |ddg W 5 Q R X ttd |dd W 5 Q R X ttd |ddgdddg W 5 Q R X t tjd	d}ttd |dd W 5 Q R X d S )
Nz(n),(n)->(n)rA  zwrong number of positionalrL   rJ   zdoes not have enough dimensions$inconsistent size for core dimensionrS   rP  )r3   operatorr8   r   r  r\   r+  r<   r<   r=   test_signature_invalid_inputs  s       z+TestVectorize.test_signature_invalid_inputsc              	   C   s   t dd dd}ttd |dddg W 5 Q R X t d	d d
d}ttd |d W 5 Q R X t dd dd}ttd |ddg W 5 Q R X d S )Nc                 S   s   | d d S rN  r<   rm  r<   r<   r=   r    r  z>TestVectorize.test_signature_invalid_outputs.<locals>.<lambda>rG  rA  rT  rL   rJ   rS   c                 S   s   | S r5   r<   rm  r<   r<   r=   r    r  rI  zwrong number of outputsc                 S   s   | | fS r5   r<   rm  r<   r<   r=   r    r  rP  )r3   r   r\   r+  r<   r<   r=   test_signature_invalid_outputs  s     z,TestVectorize.test_signature_invalid_outputsc              	   C   s   t dd }t jddgtd}ttd || W 5 Q R X d|_t||| t jdd d	d
}ttd || W 5 Q R X t jdd d	dd}t||| t jdd ddd}t||| t jdd dd
}t||j|j t jdd ddd}ttd || W 5 Q R X d S )Nc                 S   s   | S r5   r<   rm  r<   r<   r=   r    r  z5TestVectorize.test_size_zero_output.<locals>.<lambda>r   rT   r   r  r   c                 S   s   | S r5   r<   rm  r<   r<   r=   r    r  rP  rA  c                 S   s   | S r5   r<   rm  r<   r<   r=   r    r  rR  c                 S   s   | S r5   r<   rm  r<   r<   r=   r    r  rG  c                 S   s   | S r5   r<   rm  r<   r<   r=   r    r  c                 S   s   | gS r5   r<   rm  r<   r<   r=   r    r  z()->(n)znew output dimensions)	r6   r3   r?   intr   r\   r  r   r  r;  r<   r<   r=   test_size_zero_output  s$    z#TestVectorize.test_size_zero_outputc                 C   s   G dd dt j}t dddgdddgdddgg|}t dddgddd	gd
ddgg|}t jt jdd}|||}tt|| t|dddgdd	dgd
ddgg t dd }|||}tt|| t|||  d S )Nc                   @   s   e Zd ZdS )z/TestVectorize.test_subclasses.<locals>.subclassNr   r<   r<   r<   r=   r     s   r   r   r   r   r   r   r   r   r9  r   r4  z(m,m),(m)->(m)rA  c                 S   s   | | S r5   r<   r  r<   r<   r=   r    r  z/TestVectorize.test_subclasses.<locals>.<lambda>)r6   r   r   r   r3   matmulr   r   )r_   r   r   r  Zmatvecr  Zmultr<   r<   r=   r     s     (
"
zTestVectorize.test_subclassesN)&rn   ro   rp   r  r  r  r  r  r  r  r  r  r  r!  r#  r(  r,  r-  r/  r2  r4  r7  r8  r<  r=  r@  rC  rE  rH  rL  rM  rO  rQ  rS  rV  rW  rY  r   r<   r<   r<   r=   r  Q  sF   

"	r  c                   @   sL   e Zd ZG dd dZejje ddejddej	fdgdd	 Z
d
S )	TestLeaksc                   @   s$   e Zd ZdZdd Zedd ZdS )zTestLeaks.Ar)  c                 G   s   dS r  r<   r_   r
  r<   r<   r=   bound  s    zTestLeaks.A.boundc                  G   s   dS r  r<   )r
  r<   r<   r=   unbound  s    zTestLeaks.A.unboundN)rn   ro   rp   itersr]  staticmethodr^  r<   r<   r<   r=   A  s   ra  Python lacks refcountsreasonz
name, incrr]  )r^  r   c           	      C   s   dd l }t| j|}|  zt|}t| jjD ]2}|  }t	
t||dd|_|t	d}q4d }tt|||  tdD ]}|  qtt|| W 5 |  X d S )Nr   rL   r   rT   )gcr  ra  disableenablesysgetrefcountr^   r_  r6   Z
frompyfuncr  r7   r   Zcollect)	r_   r  incrre  ZA_funcrefcountr   r`   rf  r<   r<   r=   test_frompyfunc_leaks  s    

zTestLeaks.test_frompyfunc_leaksN)rn   ro   rp   ra  r   r   skipifr   r   r_  rl  r<   r<   r<   r=   r[    s   
r[  c                   @   sz   e Z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jjdddd ZdS )TestDigitizec                 C   s2   t dd}t dd}tt||t d d S )Nr  rT   r2  r   r6   r7   r   r   r_   r   binsr<   r<   r=   test_forward#  s    zTestDigitize.test_forwardc                 C   s6   t ddd}t ddd}tt||t d d S )NrT   r  rX   r2  r   ro  rp  r<   r<   r=   test_reverse(  s    zTestDigitize.test_reversec                 C   s:   t d}t| | d}ttt||dk d S )Nr   r   r   r6   r  r  rr  r   r   r   )r_   r   binr<   r<   r=   test_random-  s    zTestDigitize.test_randomc                 C   sf   dddddddg}dddg}dddd	dd	dg}t t||| dddddd	dg}t t||d
| d S )NrL   rT   rH   r   ri   r   r   rJ   rS   T)r   r   )r_   r   rq  Zdefault_answerZright_answerr<   r<   r=   test_right_basic2  s    
zTestDigitize.test_right_basicc                 C   s4   t dd}t dd}tt||dt d d S )Nr  rT   rH   Tr   ro  rp  r<   r<   r=   test_right_open:  s    zTestDigitize.test_right_openc                 C   s8   t ddd}t ddd}tt||dt d d S )NrT   r  rX   rH   Tr   ro  rp  r<   r<   r=   test_right_open_reverse?  s    z$TestDigitize.test_right_open_reversec                 C   s<   t d}t| | d}ttt||ddk d S )Nr   Trt  rp  r<   r<   r=   test_right_open_randomD  s    z#TestDigitize.test_right_open_randomc                 C   s   ddddg}dddg}t t||dddddg t t||dddddg dddg}t t||dddddg t t||dddddg ddddg}t t||dddddg t t||dddddg ddddg}ttt|| ddddg}ttt|| d S )	NrX   r   rL   rJ   FrS   TrH   )r   r   r   r\   rp  r<   r<   r=   test_monotonicI  s    

zTestDigitize.test_monotonicc                 C   s>   dddg}dddg}t tt|| || }}t tt|| d S )NrL   rJ   y      @      ?rS   )r   r  r   rp  r<   r<   r=   test_casting_errorY  s
    


zTestDigitize.test_casting_errorc                 C   sh   G dd dt j}t d|}t dd|}ttt||d|  ttt||d|  d S )Nc                   @   s   e Zd ZdS )z(TestDigitize.test_return_type.<locals>.ANr   r<   r<   r<   r=   ra  b  s   ra  rT   rL   rS   FT)r6   r   r7   r   r   r  r   )r_   ra  r`   r{   r<   r<   r=   test_return_type`  s
    zTestDigitize.test_return_typec                 C   s&   d}t t||d |d gd d S Nl          rL   r   r6   r   r"  r<   r<   r=   test_large_integers_increasingi  s    z+TestDigitize.test_large_integers_increasingz8gh-11022: np.core.multiarray._monoticity loses precisionrc  c                 C   s&   d}t t||d |d gd d S r~  r  r"  r<   r<   r=   test_large_integers_decreasingn  s    z+TestDigitize.test_large_integers_decreasingN)rn   ro   rp   rr  rs  rv  rw  rx  ry  rz  r{  r|  r}  r  r   r   xfailr  r<   r<   r<   r=   rn  !  s   	rn  c                   @   s   e Zd Zdd Zdd ZdS )
TestUnwrapc                 C   sH   t tdddtj  gddg tttttdd tjk  d S )NrL   rJ   r   r  )r   r1   r6   r  r   r   r   r   rx   r<   r<   r=   r  x  s     zTestUnwrap.test_simplec                 C   s   t tddgddddg tttttdd dddk  tdd	d
ddg}t|d}t t|dd| tdd	d
dddg}t|d}t|dd}t |dd	d
dddg t|ddd}t |dd	d
dddg |j	|j	kst
d S )NrL   i     periodrJ   r     r   K         r  i     rV     )r  Zdiscont)r   r1   r   r6   r   r   r   r   modr   r   )r_   Z
simple_seqZwrap_seqZ
uneven_seqZwrap_unevenZ
no_discontZ
sm_discontr<   r<   r=   test_period~  s    &zTestUnwrap.test_periodN)rn   ro   rp   r  r  r<   r<   r<   r=   r  v  s   r  r   O
AllIntegerZFloatMrL   r   c                   @   sf   e Zd ZeeddddZeeddddZeeddddZeeddd	d
ZeeddddZ	dS )TestFilterwindowsN)r   r  returnc                 C   s   t j||dd }t|}|dkr*t j}nt |jt j}|j|ksHtt|t| |dk rpt	|t g  n0|dkrt	|t 
d ntt j|dddd d S )	Nr   r<   r  rL   r   rr         @rH   )r6   r   r"   r   r   r   r   r   r   r   r]   r	   r   r_   r   r  Zscalarr   Z	ref_dtyper<   r<   r=   test_hanning  s    zTestFilterwindows.test_hanningc                 C   s   t j||dd }t|}|dkr*t j}nt |jt j}|j|ksHtt|t| |dk rpt	|t g  n0|dkrt	|t 
d ntt j|dddd d S )	Nr   r<   r  rL   r   rr   g(\@rH   )r6   r   r!   r   r   r   r   r   r   r   r]   r	   r   r  r<   r<   r=   test_hamming  s    zTestFilterwindows.test_hammingc                 C   s   t j||dd }t|}|dkr*t j}nt |jt j}|j|ksHtt|t| |dk rpt	|t g  n0|dkrt	|t 
d ntt j|dddd d S )	Nr   r<   r  rL   r   rr   g^)@rH   )r6   r   r   r   r   r   r   r   r   r   r]   r	   r   r  r<   r<   r=   test_bartlett  s    zTestFilterwindows.test_bartlettc                 C   s   t j||dd }t|}|dkr*t j}nt |jt j}|j|ksHtt|t| |dk rpt	|t g  n0|dkrt	|t 
d ntt j|dddd d S )	Nr   r<   r  rL   r   rr   g=
ףp=@rH   )r6   r   r   r   r   r   r   r   r   r   r]   r	   r   r  r<   r<   r=   test_blackman  s    zTestFilterwindows.test_blackmanc                 C   s   t j||dd }t|d}|dkr,t j}nt |jt j}|j|ksJtt|t| |dk rrt	|t g  n0|dkrt	|t 
d ntt j|dddd d S )	Nr   r<   r   r  rL   rr   r   r   )r6   r   r&   r   r   r   r   r   r   r   r]   r	   r   r  r<   r<   r=   test_kaiser  s    
zTestFilterwindows.test_kaiser)
rn   ro   rp   strrX  r  r  r  r  r  r<   r<   r<   r=   r    s
   r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )	TestTrapzc                 C   sH   t ddd}tt d|d  t dt j  dd}t|dd d S )	Nr   re  r  rJ   )r  rL   rk   )r6   r7   r/   rk  r  r  r	   )r_   r   r  r<   r<   r=   r    s    *zTestTrapz.test_simplec                 C   s&  t ddd}t ddd}t ddd}t ||d |d   }|d  d  < |d  d  < t ||d |d   }|d  d  < |d  d  < t ||d |d   }|d  d  < |d  d  < |d d d d f |d d d d f  |d d d d f  }||d d d d f  jdd}||d d d d f  jdd}	||d d d d f  jdd}
t||d d d d f dd	}t|| t||d d d d f dd	}t||	 t||d d d d f dd	}t||
 t||dd	}t|| t||dd	}t||	 t||dd	}t||
 d S )
Nr   rL   rS   rJ   ri   rV   rX   rr   )r   rs   )r6   r  Z	ones_liker   r/   r	   )r_   r   r   r  ZwxZwyZwzqZqxZqyZqzr  r<   r<   r=   	test_ndim	  s8    6




zTestTrapz.test_ndimc                 C   s   t d}|| }|dk}t jj||d}d}tt||| t jj||d}tt||| t jj||d}tt||| d S )NrT   rJ   rx  g      *@)r6   r7   r   r   r	   r/   )r_   r   r   ry  Zymr  Zxmr<   r<   r=   r  .  s    
zTestTrapz.test_maskedN)rn   ro   rp   r  r  r  r<   r<   r<   r=   r    s   %r  c                   @   s   e Zd Zdd Zdd ZdS )TestSincc                 C   s6   t tddk ttddd}t|t|d d S )Nr   rL   rX   r  rk   )r   r.   r6   r  r
   r   r_   r   r<   r<   r=   r  A  s    zTestSinc.test_simplec                 C   sF   ddg}t t|}t t|}t t|}t|| t|| d S )Nr   r  )r.   r6   r   rp  rJ  r   )r_   r   r   r   r   r<   r<   r=   test_array_likeG  s    
zTestSinc.test_array_likeN)rn   ro   rp   r  r  r<   r<   r<   r=   r  ?  s   r  c                   @   s   e Zd Zdd ZdS )
TestUniquec                 C   s   t dddddddddg	}tt t|dddddgk ttt dddddgt dgk dddd	ddg}tt t|d	dddgk t d
dddd
g}tt t|ddd
dgk d S )NrH   rS   rJ   rL   r   ZwidgetZhamr$  r%  y      @      @r  y      ?      $@r   )r6   r   r   r   r2   r"  r<   r<   r=   r  R  s     (zTestUnique.test_simpleNrn   ro   rp   r  r<   r<   r<   r=   r  P  s   r  c                   @   s   e Zd Zdd Zdd ZdS )TestCheckFinitec                 C   sR   dddg}ddt jg}ddt jg}t j| ttt jj| ttt jj| d S )NrL   rJ   rS   )r6   infr   libasarray_chkfiniter   r\   r   r<   r<   r=   r  ^  s    
zTestCheckFinite.test_simplec                 C   s2   dddg}t jj|dt jd}t|jt jk d S )NrL   rJ   rS   r   )r   r   )r6   r  r  r   r   r   rg   r<   r<   r=   test_dtype_orderf  s    
z TestCheckFinite.test_dtype_orderN)rn   ro   rp   r  r  r<   r<   r<   r=   r  \  s   r  c                   @   s6  e Zd Zedddgdddgddd	ggZed
ddgdddgdddggZedddgdddgdddggZeddddddgddddddgddddddgddddd d!gdddd dd"gdddd!d"dggZd#d$ Z	d%d& Z
d'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zejd3ejejejejgd4d5 Zd6S )7TestCorrCoefg^?g.{<?g$,?g4?gp)?gJG?gY?g?gވ0v?gة?gBFU?g G)t?g3TB?gL\?gA?g>
?gqFE`?g5?r   gޛ?gr@gp]4?g?'L?g(8?g4V}?gw{g,H5?gjS,?gg)h?g5#A?gtogBC,g@02v?c                 C   s.   t tdddgdddgddgddgg d S )Nr   rL   r         )r	   r6   r   rx   r<   r<   r=   test_non_array  s    zTestCorrCoef.test_non_arrayc                 C   sd   t | j}t|| j ttt|dk t | j| j}t|| j	 ttt|dk d S r)  )
r   ra  r	   r  r   r6   r   r  r  r  )r_   Ztgt1Ztgt2r<   r<   r=   r    s    
zTestCorrCoef.test_simplec              	   C   s   t  }td ttt| jdd |t tt| jdd| j	 tt| j| j
dd| j tt| jdd| j	 tt| j| j
dd| j W 5 Q R X d S )Nr  rX   ZddofrS   )r   r  simplefilterr   DeprecationWarningr   ra  filterr	   r  r  r  r_   supr<   r<   r=   	test_ddof  s    

zTestCorrCoef.test_ddofc              	   C   sh   t  X}td ttt| j| jdd ttt| jdd |t t	t| jdd| j
 W 5 Q R X d S )Nr  rL   r   )Zbias)r   r  r  r   r  r   ra  r  r  r	   r  r  r<   r<   r=   	test_bias  s    

zTestCorrCoef.test_biasc                 C   s^   t dddgdddgg}t|}t ddgddgg}t|| tt t |dk d S 	NrL   rJ   rS   r                  @r   r   r  )r6   r   r   r   r   r   r  )r_   r   r  rO  r<   r<   r=   test_complex  s
    
zTestCorrCoef.test_complexc                 C   sL   t dddgg}t dddgg}tt ||t ddgddgg d S r  )r6   r   r   r   r_   r   r   r<   r<   r=   test_xy  s    zTestCorrCoef.test_xyc              	   C   s   t jdd t dt tttg tj tttg 	ddtg 	dd tttg 	ddttjtjgtjtjgg W 5 Q R X d S NTr
  r  r   rJ   )
r  r  r  RuntimeWarningr   r   r6   r   r   rl   rx   r<   r<   r=   
test_empty  s    zTestCorrCoef.test_emptyc              	   C   sh   ddgddgg}t jdd t|}W 5 Q R X t|t ddgddgg tt t |dk d S )Ng0.++g}Ô%ITraise)r   r   r  )r6   Zerrstater   r
   r   r   r   r  )r_   r   r   r<   r<   r=   test_extreme  s
    zTestCorrCoef.test_extreme	test_typec                 C   s*   | j |}t||d}||jks&td S Nr   )ra  r   r   r   r   )r_   r  Zcast_Ar  r<   r<   r=   test_corrcoef_dtype  s    z TestCorrCoef.test_corrcoef_dtypeN)rn   ro   rp   r6   r   ra  r  r  r  r  r  r  r  r  r  r  r  r   r   r   halfsingledouble
longdoubler  r<   r<   r<   r=   r  m  sJ   	
	r  c                   @   sh  e Zd ZeddgddgddggjZeddgddggZejdddgddZedd	dgZ	edgdgdgdgdgdggjZ
ed
dgdd
ggZejdejdZedddgZeddgddggZedZedddddg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jd*ej ej!ej"ej#gd+d, Z$d-S ).TestCovr   rJ   rL   r   r  r   r   )ndminrH   皙?gٿrS   r   r   gUUUUUU?gUUUUUUg&S:?go_?g#~j?gZӼ?gQ|?c                 C   s   t t| j| j d S r5   )r   r   x1r  rx   r<   r<   r=   ra     s    zTestCov.test_basicc                 C   sZ   t dddgdddgg}t ddgddgg}tt|| tt|t dd	| d S )
NrL   rJ   rS   r   r  r   r   r  aweights)r6   r   r   r   r]   )r_   r   r  r<   r<   r=   r    s    zTestCov.test_complexc                 C   sJ   t dddgg}t dddgg}tt||t ddgddgg d S r  )r6   r   r   r   r  r<   r<   r=   r    s    zTestCov.test_xyc              	   C   s   t jdd t dt tttg tj tttg 	ddtg 	dd tttg 	ddttjtjgtjtjgg W 5 Q R X d S r  )
r  r  r  r  r   r   r6   r   r   rl   rx   r<   r<   r=   r    s    zTestCov.test_emptyc              	   C   sZ   t jddD t dt tt| jddttj	tj	 gtj	 tj	gg W 5 Q R X d S )NTr
  r  rT   r  )
r  r  r  r  r   r   r  r6   r   r  rx   r<   r<   r=   test_wrong_ddof  s    zTestCov.test_wrong_ddofc                 C   sP   t t| jt| jdd tdddddg}t t| j|t| j|dd d S )NF)Zrowvarg+?g4@?g&S?go_?gJ4?)r   r   x3r6   r   r_   r   r<   r<   r=   test_1D_rowvar  s    zTestCov.test_1D_rowvarc                 C   s$   t t| jddtj| jdd d S )NrL   r  )r   r   r  r6   varrx   r<   r<   r=   test_1D_variance  s    zTestCov.test_1D_variancec                 C   s   t t| j| jdt| j t t| j| jd| j t t| j| jd| j | jd }t	t
t| j|d tjdtjd}t	tt| j|d tjdtjd}t	tt| j|d dtjdtjd }t	tt| j|d d S )N)fweightsr  rJ   rS   r   rJ   rX   rS   )r   r   r  frequencies
x2_repeatsr  r  unit_frequenciesr  r   r  r6   r]   r  RuntimeErrorr\   )r_   Znonintr  r<   r<   r=   test_fweights  s"    
zTestCov.test_fweightsc                 C   s   t t| j| jd| j t t| jd| j dt| j| jd t t| j| jd| j td}t	t
t| j|d td}t	t
t| j|d dtd }t	tt| j|d d S )Nr  r   r  rJ   r  rS   )r   r   r  r   r  unit_weightsr  r6   r]   r   r  r\   r  r<   r<   r=   test_aweights	  s    

zTestCov.test_aweightsc                 C   s   t t| j| j| jdt| j t t| j| j| jd| j t t| j| j| jd| j	 t t| j| j| j
d| j t t| j| jd| j
 dt| j| j
d t t| j| j| jd| j	 d S )N)r  r  r   r  )r   r   r  r  r  r  r  r  r  r  r   r  rx   r<   r<   r=   test_unit_fweights_and_aweights	  s<    z'TestCov.test_unit_fweights_and_aweightsr  c                 C   s*   | j |}t||d}||jks&td S r  )r  r   r   r   r   )r_   r  Zcast_x1r  r<   r<   r=   test_cov_dtype+	  s    zTestCov.test_cov_dtypeN)%rn   ro   rp   r6   r   r  r  r  r  r  r  r  r]   r  r  r   r  r  r  ra   r  r  r  r  r  r  r  r  r  r   r   r   r  r  r  r  r  r<   r<   r<   r=   r    s.   $
	r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )Test_I0c              
   C   s   t tdtd tdddddg}tdd	d
ddg}t t|| t t| | tddgddgddgddgddgg}t t|tddgddgddgddgdd gg td!g}t|jd" ttd!gtd#g d S )$Nr  gǒ#?gC7?gmM?g3a,?g$WV?ۏ?r3  gֿN^?gE ?g閡1?g%m? ?gDn@g>@v?guͥ?gVX˳?gua&?gB-sJ?g-^?g_V?gX.?gVaX?gj?gp?g~-@?gD/b?gݦ?g,Y1ؔ?g[!?gQL?gWsU+?g@?gfxw?r   r   r   )r	   r#   r6   r   r   rA   r   )r_   ra  rs  r  Zi0_0r<   r<   r=   r  4	  s4    

zTest_I0.test_simplec                    sV   t d G  fddd}tt | |s2tt  }t | }t|| d S )NrH   c                       s   e Zd Z jZdd ZdS )z*Test_I0.test_non_array.<locals>.array_likec                 S   s   | S r5   r<   )r_   r  r<   r<   r=   __array_wrap__V	  s    z9Test_I0.test_non_array.<locals>.array_like.__array_wrap__N)rn   ro   rp   Z__array_interface__r  r<   r  r<   r=   
array_likeS	  s   r  )r6   r7   r  r  r   r#   r   )r_   r  rk  r  r<   r  r=   r  P	  s    

zTest_I0.test_non_arrayc              	   C   s4   t ddg}tjtdd t|}W 5 Q R X d S )Nr   y      ?       @z#i0 not supported for complex valuesr.  )r6   r   r   r  r  r#   )r_   r`   r  r<   r<   r=   r  `	  s    zTest_I0.test_complexN)rn   ro   rp   r  r  r  r<   r<   r<   r=   r  2	  s   r  c                   @   s   e Zd Zdd Zdd ZdS )
TestKaiserc              	   C   s   t ttdd ttddtg  ttddtddg ttddtdddddg ttddtd	d
dd
d	g d S )NrL   r   r   rJ   g oF?rT   gvT=?gg?g?gYJ?)r   r6   isfiniter&   r	   r   rx   r<   r<   r=   r  h	  s&    



 

 zTestKaiser.test_simplec                 C   s   t dd d S )NrS   rH   )r&   rx   r<   r<   r=   test_int_betau	  s    zTestKaiser.test_int_betaN)rn   ro   rp   r  r  r<   r<   r<   r=   r  f	  s   r  c                   @   s   e Zd Zdd ZdS )	TestMsortc              
   C   sl   t dddgdddgddd	gg}tjtd
d2 tt|t ddd	gdddgdddgg W 5 Q R X d S )Ng\?gbCQ?gהs?gw?gkl?g*dta?gӯ?g6H?gܘC?zmsort is deprecatedr.  )r6   r   r   Zwarnsr  r	   r(   )r_   ra  r<   r<   r=   r  {	  s    zTestMsort.test_simpleNr  r<   r<   r<   r=   r  y	  s   r  c                   @   sd   e Z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S )TestMeshgridc              
   C   s   t dddgddddg\}}t|tdddgdddgdddgdddgg t|tdddgdddgdddgdddgg d S )NrL   rJ   rS   rH   rT   rj   rk   r'   r   r6   r   r_   XYr<   r<   r=   r  	  s    zTestMeshgrid.test_simplec                 C   s.   t ddddg\}t|tddddg d S )NrL   rJ   rS   rH   r  )r_   r  r<   r<   r=   test_single_input	  s    zTestMeshgrid.test_single_inputc                 C   s*   g }t g t|  t g t|ddi d S )Nr   F)r   r'   r\  r<   r<   r=   test_no_input	  s    zTestMeshgrid.test_no_inputc              
   C   s  dddg}ddddg}t ||dd	\}}t|tddddgddddgddddgg t|tddddgddddgddddgg d
dg}tt ||d jdk tt ||dd	d jdk tt |||d jdk tt |||dd	d jdk ttt ||dd	 d S )NrL   rJ   rS   rH   rT   rj   rk   ijZindexingri   r   r   r   rS   rH   )rH   rS   rJ   )rS   rH   rJ   Znotvalid)r'   r   r6   r   r   rA   r   r\   )r_   r   r   r  r  r  r<   r<   r=   test_indexing	  s"    




zTestMeshgrid.test_indexingc                 C   s\   t dddgddddgdd	\}}t|tdddgg t|tdgdgdgdgg d S )
NrL   rJ   rS   rH   rT   rj   rk   Tsparser  r  r<   r<   r=   test_sparse	  s     zTestMeshgrid.test_sparsec                 C   s$   t ttdddgddddgdd	 d S )
NrL   rJ   rS   rH   rT   rj   rk   r  )r  )r   r  r'   rx   r<   r<   r=   test_invalid_arguments	  s
     
 z#TestMeshgrid.test_invalid_argumentsc                 C   s   t jddt jd}t jddt jd}t ||\}}t|j|jk t|j|jk t j||dd\}}t|j|jk t|j|jk t j||dd\}}t|j|jk t|j|jk d S )Nr   r   r   r)  T)r   r  )r6   r7   r   r   r'   r   r   )r_   r   r   r  r  r<   r<   r=   r}  	  s    zTestMeshgrid.test_return_typec                 C   sr   t ddg}t ddg}t j||ddd\}}d|dd d f< t|dd d f d t|d	d d f | d S )
Nrb  rc  gffffff
@g@FT)r  r   r   rL   )r6   r   r'   r   )r_   r  r  r   r   r<   r<   r=   test_writeback	  s    zTestMeshgrid.test_writebackc                 C   sh   t jdd tddD  \}}}}}d}t|j| t|j| t|j| t|j| t|j| d S )Nc                 s   s   | ]}d g| V  qdS )r   Nr<   r   r   r<   r<   r=   r  	  s     z-TestMeshgrid.test_nd_shape.<locals>.<genexpr>rL   rj   )rJ   rL   rS   rH   rT   )r6   r'   r^   r   rA   )r_   r`   r{   r   r   r>  Zexpected_shaper<   r<   r=   test_nd_shape	  s    $zTestMeshgrid.test_nd_shapec                 C   s~   t dgddgdddg\}}}t|dddggdddggg t|dddggdddggg t|dddggdddggg d S )Nr   rL   rJ   rS   rH   rT   r6   r'   r   r   r<   r<   r=   test_nd_values	  s     zTestMeshgrid.test_nd_valuesc                 C   s|   t jdgddgdddgdd\}}}t|dddgdddggg t|dddgdddggg t|dddgdddggg d S )	Nr   rL   rJ   rS   rH   rT   r  r  r  r   r<   r<   r=   test_nd_indexing	  s    $zTestMeshgrid.test_nd_indexingN)rn   ro   rp   r  r  r  r  r  r  r}  r  r  r  r  r<   r<   r<   r=   r  	  s   
	r  c                   @   sT   e Z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S )TestPiecewisec              	   C   s6  t ddgddgdg}t|ddg t ddgddggdg}t|ddg t ddgtddgdg}t|ddg t ddgtddgdg}t|ddg t ddgtddggdg}t|ddg t ddgddggdd g}t|ddg ttdt ddgddggg  ttdt ddgddggdd	d
g d S )Nr   TFrL   c                 S   s   dS rN  r<   rm  r<   r<   r=   r  
  r  z+TestPiecewise.test_simple.<locals>.<lambda>rX   z1 or 2 functions are expectedrJ   rS   )r)   r   r6   r   r   r\   r"  r<   r<   r=   r  	  s0          zTestPiecewise.test_simplec                 C   s2   t ddgddgddggddg}t|ddg d S )NrL   rJ   TFrS   rH   r)   r   r"  r<   r<   r=   test_two_conditions
  s     z!TestPiecewise.test_two_conditionsc                 C   s&   t ddddgdddg}t|d d S )NrS   TFrH   rJ   r   )r)   r   r"  r<   r<   r=   $test_scalar_domains_three_conditions
  s    z2TestPiecewise.test_scalar_domains_three_conditionsc                 C   sN   t ddgddgdg}t|ddg t ddgddgddg}t|ddg d S )NrL   rJ   TFr   rS   r  r"  r<   r<   r=   test_default
  s    zTestPiecewise.test_defaultc                 C   s   t d}t||dkddg}t|jdk t|dk d}t|ddgddg}t|jdk t|dk t|dddgdddg}t|d d S )	NrS   rH   r   rT   TFrL   rJ   )r6   r   r)   r   r   r   r  r<   r<   r=   r  %
  s    
zTestPiecewise.test_0dc              
   C   s   d}t ||dk|dkgddg}t|d d}t ||dk|dk|dk |dkgdddg}t|d ttdt ||dk|dkgdg ttdt ||dk|dkgddddg d S )NrS   rH   r   rT   rL   rJ   z2 or 3 functions are expected)r)   r   r   r   r\   r  r<   r<   r=   test_0d_comparison4
  s$    
,
      
z TestPiecewise.test_0d_comparisonc                 C   s8   t d}t |dk}t||gddg}t|d d S )NrS   rL   rJ   )r6   r   r)   r   )r_   r   r   r   r<   r<   r=   test_0d_0d_conditionC
  s    
z"TestPiecewise.test_0d_0d_conditionc                 C   s\   t dddgdddgg}t||dk |dkgd	d
dg}t|t dddgdddgg d S )Ng      g      r  r  r  r  r   rJ   rX   rL   rS   r  r   r   )r6   r   r)   r   r  r<   r<   r=   test_multidimensional_extrafuncI
  s    z-TestPiecewise.test_multidimensional_extrafuncc                 C   sf   G dd dt j}t d|}t||dk |dkgdddg}tt|| t|dddddg d S )	Nc                   @   s   e Zd ZdS )z/TestPiecewise.test_subclasses.<locals>.subclassNr   r<   r<   r<   r=   r   Q
  s   r   r   r   rH   r  r   r   )r6   r   r7   r   r)   r   r   )r_   r   r   r  r<   r<   r=   r   P
  s
    zTestPiecewise.test_subclassesN)rn   ro   rp   r  r  r  r  r  r  r  r   r   r<   r<   r<   r=   r  	  s   	r  c                   @   s   e Z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jje dddd Zejdddggdgdd ZdS )TestBincountc                 C   s$   t t d}t|t d d S )NrH   )r6   bincountr7   r   r]   r  r<   r<   r=   r  [
  s    zTestBincount.test_simplec              
   C   s:   t t dddddg}t|t ddddddg d S )NrL   rT   rJ   rH   r   )r6   r  r   r   r  r<   r<   r=   test_simple2_
  s    zTestBincount.test_simple2c                 C   s6   t d}t ddddg}t ||}t|| d S )NrH   皙?333333?r  re  )r6   r7   r   r  r   r_   r   r   r   r<   r<   r=   test_simple_weightc
  s    
zTestBincount.test_simple_weightc              
   C   sT   t dddddg}t dddddg}t ||}t|t d	ddd	ddg d S )
NrL   rJ   rH   rT   r  r  r  re  r   r6   r   r  r   r  r<   r<   r=   test_simple_weight2i
  s    z TestBincount.test_simple_weight2c                 C   s^   t dddddg}t j|dd}t|t dddg g }t j|dd}t|t g  d S )Nr   rL   rS   Z	minlengthrJ   r  r  r<   r<   r=   test_with_minlengtho
  s    z TestBincount.test_with_minlengthc              	   C   sh   t dddddddg}t j|dd}t|t ddddg t j|dd}t|t ddddg d S )Nr   rL   rJ   rS   r
  r  r  r<   r<   r=   )test_with_minlength_smaller_than_maxvaluew
  s
    z6TestBincount.test_with_minlength_smaller_than_maxvaluec                 C   sZ   t dddddg}t dddddg}t ||d	}t|t d
ddd
ddd
d
g d S )NrL   rJ   rH   rT   r  r  r  re  ri   r   r  r  r<   r<   r=   test_with_minlength_and_weights~
  s    z,TestBincount.test_with_minlength_and_weightsc                 C   s&   t jg td}t |}t|| d S r  )r6   r   rX  r  r   r  r<   r<   r=   r  
  s    
zTestBincount.test_emptyc                 C   s4   t jg td}t j|dd}t|t jdtd d S )Nr   rT   r
  )r6   r   rX  r  r   r?   r  r<   r<   r=   test_empty_with_minlength
  s    z&TestBincount.test_empty_with_minlengthc                    sl   t jg td ttd fdd ttd fdd t d ttd fdd ttd fd	d d S )
Nr   z"'str' object cannot be interpretedc                      s   t j ddS Nfoobarr
  r6   r  r<   rm  r<   r=   r  
  r  z<TestBincount.test_with_incorrect_minlength.<locals>.<lambda>zmust not be negativec                      s   t j ddS NrX   r
  r  r<   rm  r<   r=   r  
  r  rT   c                      s   t j ddS r  r  r<   rm  r<   r=   r  
  r  c                      s   t j ddS r  r  r<   rm  r<   r=   r  
  r  )r6   r   rX  r   r  r\   r7   rx   r<   rm  r=   test_with_incorrect_minlength
  s$    




z*TestBincount.test_with_incorrect_minlengthrb  rc  c                 C   s   t ttj}t ttj}tdD ]}tdddg q,tt ttj| tt ttj| tdD ]}tdddgdddg qztt ttj| tt ttj| d S )Nr   rL   rJ   rS   rH   rT   rj   )	rh  ri  r6   r   Zintpr  r^   r  r   )r_   Zintp_refcountZdouble_refcountjr<   r<   r=   test_dtype_reference_leaks
  s    z'TestBincount.test_dtype_reference_leaksvalsrJ   c              	   C   sJ   t |}tt t | W 5 Q R X tt t | W 5 Q R X d S r5   )r6   asarrayr   r\   r  )r_   r  Zvals_arrr<   r<   r=   test_error_not_1d
  s
    


zTestBincount.test_error_not_1dN)rn   ro   rp   r  r  r  r	  r  r  r  r  r  r  r   r   rm  r   r  r   r  r<   r<   r<   r=   r  Y
  s   
r  c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	dd dd dd dd gddddg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)S )*
TestInterpc                 C   st   t ttdg g  t ttddgddg t ttdddgddgdd t ttdg g dd t ttddgddgdd d S )Nr   rL   rJ   r  h  )r   r\   r%   rx   r<   r<   r=   test_exceptions
  s
    zTestInterp.test_exceptionsc                 C   sB   t ddd}t ddd}t ddd}tt |||| d S )Nr   rL   rT   rb   )r6   r  r	   r%   r_   r   r   x0r<   r<   r=   ra   
  s    zTestInterp.test_basicc           
      C   s  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|||}t|||}tjddddgtd}|d d d }	t|| t||	 t|||dd}t|||dd}tjddddgtd}|d d d }	t|| t||	 t|||dd}t|||dd}tjddddgtd}|d d d }	t|| t||	 t|||ddd	}t|||ddd	}tjddddgtd}|d d d }	t|| t||	 q
d S )
NrL   r   r   rX   r   leftrJ   right)r  r!  )	r^   r6   r7   r  r]   r   r%   r+  r   )
r_   sizexpZypZincptsZdecptsZincresZdecresZinctgtZdectgtr<   r<   r=   test_right_left_behavior
  s:    






z#TestInterp.test_right_left_behaviorc                 C   s   t ddd}t ddd}d}tt |||| d}tt |||| t d}tt |||| t d}tt |||| t j}tt |||| d S )Nr   rL   rT   r  )r6   r  r	   r%   r   r   r   r  r<   r<   r=   test_scalar_interpolation_point
  s    

z*TestInterp.test_scalar_interpolation_pointc                 C   s~   dddddg}ddddg}ddt jdg}tt |||ddt jt jdg ddt jdg}tt |||ddt jt jdg d S )NrL   rJ   r  rS   rH   )r6   r  r	   r%   r   )r_   r   r#  fpr<   r<   r=    test_non_finite_behavior_exact_x
  s    "z+TestInterp.test_non_finite_behavior_exact_xc                 C   s
   t | S r5   )r6   Zfloat_rm  r<   r<   r=   r    r  zTestInterp.<lambda>c                 C   s
   t | dS r  rF   rm  r<   r<   r=   r    r  c                 C   s
   t d| S r  r(  rm  r<   r<   r=   r    r  c                 C   s   t | t| dS )NrR   )rF   r6   multiplyrm  r<   r<   r=   r    r  rC   zcomplex-realzcomplex-imagzcomplex-both)paramsidsc                 C   s   |j S )z( scale function used by the below tests )param)r_   requestr<   r<   r=   sc  s    zTestInterp.scc                 C   s   t tdtjdg|ddg|tj t tddtjg|ddg|tj t tdddg|tjdg|tj t tdddg|dtjg|tj dS )z test that nans are propagated r  rL   r   r   N)r   r6   r%   r   r_   r.  r<   r<   r=   test_non_finite_any_nan  s    (((z"TestInterp.test_non_finite_any_nanc                 C   s   t tdtj tj
 g|ddg|tj t tdddg|tj tj
 g|tj t tdddg|tj
 tj g|tj t tdtj tj
 g|ddg|d dS )z2 Test that interp between opposite infs gives nan r  r   r   rL   Nr   r6   r%   r  r   r/  r<   r<   r=   test_non_finite_inf  s    ...zTestInterp.test_non_finite_infc                 C   st  t tdtj dg|tj dg|tj t tdtj dg|tj
 dg|tj t tdtj dg|dtj g|tj t tdtj dg|dtj
 g|tj t tddtj
 g|tj dg|tj t tddtj
 g|tj
 dg|tj t tddtj
 g|dtj g|tj t tddtj
 g|dtj
 g|tj dS )z@ Test that interp where both axes have a bound at inf gives nan r  rL   r   r   Nr1  r/  r<   r<   r=   test_non_finite_half_inf_xf#  s    .......z&TestInterp.test_non_finite_half_inf_xfc                 C   s   t tdtj tj g|ddg|d t tdtj dg|ddg|d t tddtj
 g|ddg|d t tdtj
 tj
 g|ddg|d dS )z1 Test interp where the x axis has a bound at inf r  r   r   rL   Nr   r6   r%   r  r/  r<   r<   r=   test_non_finite_half_inf_x.  s    ,((z%TestInterp.test_non_finite_half_inf_xc                 C   s  t tdddg|dtj g|tj  t tdddg|dtj
 g|tj
  t tdddg|tj dg|tj  t tdddg|tj
 dg|tj
  t tdddg|tj tj g|tj  t tdddg|tj
 tj
 g|tj
  dS )z1 Test interp where the f axis has a bound at inf r  r   rL   r   Nr4  r/  r<   r<   r=   test_non_finite_half_inf_f5  s    ,,,,0z%TestInterp.test_non_finite_half_inf_fc           	      C   sH  t ddd}t ddddt ddd d  }d}|d| d  }tt |||| d}d}tt j||||d| d	}d}tt j||||d
| dddddg}ddddg}ddt jdg}ddt jd t jdg}tt |||| ddddddddg}ddddg}ddddg}d dd!d"dd#d$d%g}tt j|||d&d'| d S )(Nr   rL   rT   r   r  rX          @      @r  r   r   rJ   r  rS   rH          @      ?y              ?LVG   r  r2  m     B^  y      @      ?y      $@       @y      @      @y      @      @y      @      ?y     !@      ?y      @      ?y      
@      
@y      @      @y      @      @r  r  )r6   r  r	   r%   r  )	r_   r   r   r  Zy0r  r!  r#  r&  r<   r<   r=   test_complex_interp>  s0    $ zTestInterp.test_complex_interpc                 C   s   t ddd}t ddd}t d}tt |||| t dddg}t dddg}t t d||}t|d tt|t j t jt d||dd	}t|d
 tt|t j d S )Nr   rL   rT   r  rJ   rH   rX   r  r  r  )	r6   r  r   r	   r%   r   r   r  r   )r_   r   r   r  r#  r&  r   r<   r<   r=   )test_zero_dimensional_interpolation_pointZ  s    


z4TestInterp.test_zero_dimensional_interpolation_pointc                 C   s2   t ddd}t |}tt t j||d d S )Nr   r   g-C6?r   )r6   r7   sinr	   r%   r  )r_   r#  r&  r<   r<   r=   test_if_len_x_is_smallk  s    
z!TestInterp.test_if_len_x_is_smallc                 C   s   ddddddddg}d	d
ddg}ddddg}ddddddddg}t tj|||dd| tj|dddd}tj|dddd}t tj|||dd| d S ) Nr9  r:  r;  r<  r  r2  r   r=  r>  r?  r@  rA  rT   r   rS   rH   g      @r        !@g      @r   g      
@      @g      @r  r  r   r   rJ   rX   r   )r	   r6   r%   r   rl   )r_   r   r#  r&  r   r<   r<   r=   r  p  s    zTestInterp.test_periodN)rn   ro   rp   r  ra   r$  r%  r'  r   Zfixturer.  r0  r2  r3  r5  r6  rB  rC  rE  r  r<   r<   r<   r=   r  
  s6   &
		r  c                   @   s  e Zd Zdd Zdd Zdd Zdd Zej	d	e
jd
 dd Zdd e
jd D e
je
jfe
je
jfe
je
jfe
je
jfe
je
jfe
je
jfe
je
jfe
de
jfg Zej	ddgeej	ddgdddddddddg	dd Ze
jd e
jd
  d Zej	d	ed d! Zej	d	ed"d# Zej	d	e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(ej	dBdCdDdCggejj	dEdFdDdGdHdIgdJdKdL Z)dMdN Z*dOdP Z+dQdR Z,dSdT Z-dFS )UTestPercentilec                 C   s~   t dd }tt |dd tt |dd tt |dd t j|d	< tt |dt j tt j|dd
dt j d S )Nri   r  r   r   r  rG  rb   r   rL   nearestmethod)r6   r7   r   
percentiler   r"  r<   r<   r=   ra   }  s    
zTestPercentile.test_basicc                 C   s   dd t dD }t|td}t|td tt|t t|td}t|tdd tt|t t|td}t|tdd	 tt|t t|tdg}t|ttdd	g tt|tj d S )
Nc                 S   s   g | ]}t |d qS rJ   r   r  r<   r<   r=   r     s     z0TestPercentile.test_fraction.<locals>.<listcomp>ri   r   r  rk   rJ   rb   rH   )r^   r6   rL  r   r   r   r   r   )r_   r   r%  r<   r<   r=   test_fraction  s    zTestPercentile.test_fractionc                 C   sR   t d}t |dd d d t |dd d dd t d}t |dd |dd d S )NrT   Flinearr   )r6   r]   rL  )r_   r   or<   r<   r=   test_api  s
    

zTestPercentile.test_apic              	   C   sR   t dddgdddgdddgdddgdddgg}tt j|ddddddg d S )NrL   rH   rS   rb   r   rr   )r6   r   r   rL  r"  r<   r<   r=   test_2D  s    zTestPercentile.test_2Dr   ZAllFloatc                 C   sP   t jdt jdddg|d}t j|ddd}t j|t j t j|j|j d S )Nr8       A@      D@      I@r   rO  rJ  )r6   r  ZNANrL  testingr   r   )r_   r   r  r  r<   r<   r=   test_linear_nan_1D  s    z!TestPercentile.test_linear_nan_1Dc                 C   s   g | ]}|t jfqS r<   )r6   r   )r   Zint_typer<   r<   r=   r     s   zTestPercentile.<listcomp>r  r  input_dtypeexpected_dtyperK  rs  )inverted_cdfr)  )averaged_inverted_cdf     ;@)closest_observationr)  )interpolated_inverted_cdfr)  )hazenr\  )weibull   )rO  rj  )median_unbiasedrA  )normal_unbiasedg      ;@c                 C   s   t |}t  dkr$t |t j}t jdddddg|d}t j|d|d}t j||	|d	 |d
kr|dkrt j
t |jt j qt j
t |jt | nt j
t |jt | d S )Nlegacyr8  g      4@rS  rT  rU  r   rJ  r?  )rZ  r]  r  )r6   r   Z_get_promotion_stateZpromote_typesr   r  rL  rV  r	   r   r   )r_   rK  rs  rX  rY  r  r   r<   r<   r=   test_linear_interpolation  s&    
  z(TestPercentile.test_linear_interpolationc                 C   sD   t tjtjd|ddddd t tjtjd|ddddd d S )	Nr   r   rb   lowerrJ  rH   higherrT   r   r6   rL  r7   r_   r   r<   r<   r=   test_lower_higher  s    z TestPercentile.test_lower_higherc                 C   s   t tjtjd|ddddd t tjtjd|dd d	ddd
 t tjtjd|ddddd t tjtjd|dd	ddd
 d S )Nr   r   3   midpointrJ  r  r   rL   rb   rT   r         @rh  ri  r<   r<   r=   test_midpoint  s(    zTestPercentile.test_midpointc                 C   sD   t tjtjd|ddddd t tjtjd|ddddd d S )	Nr   r   rk  rI  rJ  rT   1   rH   rh  ri  r<   r<   r=   test_nearest  s    zTestPercentile.test_nearestc                 C   sL   t jd}t |d}t j||  t |d}t j||  d S )NrT   r  r   )r6   r  r   rL  rV  r   rr  r  )r_   r  r   r<   r<   r=   'test_linear_interpolation_extrapolation  s
    z6TestPercentile.test_linear_interpolation_extrapolationc                 C   s0   t dd }tt |dddgdddg d S )Nri   r  r   r  rb   rG  r   )r6   r7   r   rL  r"  r<   r<   r=   test_sequence  s    zTestPercentile.test_sequencec                 C   s  t ddd}tt |ddddg dddd	gdd	d
dgddddgg}tt j|ddd| dddgdddgdddgg}tt j|dddt |j t dddd	d
}tt |djd tt |djd tt j|dddjd tt j|dddjd tt j|dddjd tt j|dddjd  tt j|dddjd! tt j|dd"d#jd tt j|dd"d#jd tt j|ddd"d$jd tt j|ddd"d$jd tt j|ddd"d$jd tt j|ddd"d$jd  tt j|ddd"d$jd! d S )%Nr   rS   rH   )r  rb   r  g      @rm  r  rJ   rT   rj   rk   ri   r   r   r   r   rr         ?r        @rF  r   rL   r  r  rb   rM  )r  rb   r  rS   )rJ   rH   rT   rj   )rJ   rS   rT   rj   )rJ   rS   rH   rj   )rJ   rS   rH   rT   )rS   rS   rT   rj   rg  rJ  rs   rK  )r6   r7   rl   r   rL  r   r  rA   )r_   r   r0r  r<   r<   r=   rl    sh    " 

zTestPercentile.test_axisc                 C   s  t ddd}tt |dd tt t |d t dddd	g}tt j|dd
d| tt j|dd
dj|j t dddg}t	t j|ddd| tt j|dddj|j t 
d}tt j|d|dd t|d t 
d}tt j|dd
|d| t|| t 
d}tt j|dd|d| t|| t ddd}tt j|dddd tt t |d t dddd	g}t j|ddd
d}t|| t|j|j t dddg}t j|dddd}t	|| t|j|j t j
d|jd}t j|dd|d}t|d t|d t j
d|jd}t j|ddd
|d}t|| t|| t j
d|jd}t j|ddd|d}t|| t|| d S )Nr   rS   rH   rb   rm  r   r   r   r9  r   rr   r  r   rL   rf  rs   rf  rf  rJ  )rK  rs   r   r4  r<   r   rK  rf  rT   rK  rs   rf  )r6   r7   rl   r   rL  r   isscalarr   rA   r	   emptyr   )r_   r   rx  r  rf  Zc0Zc1r   r<   r<   r=   test_scalar_q/  sR    












zTestPercentile.test_scalar_qc                 C   s   t ttjddgddd t ttjdgd t ttjdgd t ttjdgttddg  t ttjdgttdd	g  d S )
NrL   rJ   8   r  rJ  e   rX   rb   rd  )r   r\   r6   rL  rp  r^   rx   r<   r<   r=   test_exception_  s     zTestPercentile.test_exceptionc                 C   s   t tdddgdd d S )NrL   rJ   rS   r   )r   r6   rL  rx   r<   r<   r=   test_percentile_listg  s    z#TestPercentile.test_percentile_listc                 C   s  t dddg}t d}d}t j|||d tt ||| t dddgddd	gg}t d
}t j||d|d tt j||dd| t d}t j||d|d tt j||dd| t ddd}t ddddgddddgg}t d}tt j|dd|d| t|| t dddgdddgg}t d}tt j|dd|d| t|| t ddddgddd	dgg}t jd|jd }t j|dd!d|d"}t|| t|| t ddd#gddd$gg}t jd|jd }t j|dd!d|d"}t|| t|| d S )%NrL   rJ   rS   rv  rL   rJ   rS   ry  rH   rT   rj   r{  r   rz  rr   rS   rJ   r   r   r   r   r   r   r9  )rJ   rH   ru  rs  rt  rF  r  rm  r   r  rk   r   rf  r|  ri   r   )	r6   r   r?   rL  r   r7   rl   r~  r   )r_   r   r   r%  rx  rf  r  r   r<   r<   r=   test_percentile_outj  sB    









z"TestPercentile.test_percentile_outc                 C   s  t ddddd}tt j|dddjd tt j|dddjd	 tt j|dddjd
 tt j|dddjd tt j|dddjd tt j|dddjd
 tt j|dddjd	 tt j|dddjd tt j|ddddjd
 tt j|ddddjd
 tt t j|ddgddjd tt t j|ddgddjd tt t j|ddgddjd tt t j|ddgddjd d S )NrC  r   rL   rJ   rb   r   rr   )rL   rJ   rL   )r   rJ   rL   )r   rL   rL   rS   )r   rL   rJ   rX   rR   rU   r  rl  rw  r   )rJ   rL   rJ   rL   )rJ   r   rJ   rL   )rJ   r   rL   rL   )rJ   r   rL   rJ   )r6   r7   rl   r   rL  rA   r   r_   r   r<   r<   r=   test_percentile_empty_dim  s>    z(TestPercentile.test_percentile_empty_dimc                 C   sx   t ddddg}t j|dgdd t|t ddddg t ddddg}t |dg t|t ddddg d S )NrJ   rS   rH   rL   rb   Foverwrite_inputr6   r   rL  r   rg   r<   r<   r=   test_percentile_no_overwrite  s    z+TestPercentile.test_percentile_no_overwritec                 C   s   t jdddd}t jt d|dd t|t jdddd t jdddd }t jt d|dd t|t jdddd  d S )Nr         Y@rT   )numrl  rJ  )r6   r  rL  r7   r   r  )r_   r%  r<   r<   r=   test_no_p_overwrite  s    z"TestPercentile.test_no_p_overwritec                 C   sf   t ddddg}t j|dgdd}t|t dg t jddddgdgdd}t|t dg d S )	NrJ   rS   rH   rL   rb   Tr  r  r  rz   r<   r<   r=   test_percentile_overwrite  s
    z(TestPercentile.test_percentile_overwritec              
   C   s  t jjdd}t |gd }tt j|dddt |d t |dd}tt j|dd	dt |d |dd
 }tt j|dddt |d |dd
 }tt j|ddgddt j|ddgd d tt j|ddgddt j|ddgdd t 	d
d}t j|  tt j|dddd t |d d d d d d df  d tt j|ddgddd d d
f t |d d d d d
d d f  ddg tt j|dddd t |d d d d dd d f  d tt j|dddd t |dd d d d d d f  d tt j|dddd t |dd
d d d d f  d tt j|dddd t |dd d d d d
f  d tt j|dddd t |dd d dd d f  d d S )NG      r"  r   r;  rY   rr   rX   r   rf   rL   rd   r  r  rK   r     rS   rT   rk   r   Z   r   rL   rS   rS   rL   r  rJ   rS   rL   rJ   r  rJ   rL   rL   rR   rL   rS   rO   )r6   r  normaldstackr   rL  moveaxisr   r   r7   rl   shuffleravelflattenr_   rP  r   r   r<   r<   r=   test_extended_axis  sJ    & *&&"""z!TestPercentile.test_extended_axisc                 C   s   t d}tt jt j|ddd tt jt j|ddd tt jt j|ddd tt jt j|ddd ttt j|ddd ttt j|d	dd ttt j|d
dd d S )Nr  r2  r  )rs   r  r   r2  rH   r   rH   rQ   )rX   rX   )rS   rX   )r6   r]   r   rv   rL  r\   r  r<   r<   r=   test_extended_axis_invalid  s    
z)TestPercentile.test_extended_axis_invalidc                 C   s   t d}tt j|dd ddjd tt j|ddddjd tt j|ddddjd	 tt j|dd
ddjd tt j|ddddjd tt j|ddddjd tt j|ddgdddjd tt j|ddgdddjd d S )Nr  rk   Tr   rL   rL   rL   rL   rY   rL   rL   rk   r   ru   rL   rT   rk   rL   r   rS   rL   rk   r   r   rL   rJ   rS   )r   r  rL   rL   rk   rL   rL   )rJ   rL   rL   rk   rL   )rJ   rL   rT   rk   rL   )r6   r]   r   rL  rA   r  r<   r<   r=   test_keepdims  s:    
zTestPercentile.test_keepdimsr  rk   rL   rs   Nr   rY   rU   rX   argnamesZ	argvaluesc                    s   t d|d krdj }n*t|j t fddtjD }t || }t |}t j||d|d}||kst	t
|j| d S )Nr  r   c                 3   s$   | ]}| krd nj | V  qdS rL   NrA   r  Z	axis_normr   r<   r=   r    s    z3TestPercentile.test_keepdims_out.<locals>.<genexpr>Trs   r   rf  )r6   r]   r   r4   rJ  r^   rA   r~  rL  r   r   )r_   r  rs   	shape_outrf  r}  r<   r  r=   test_keepdims_out  s    

z TestPercentile.test_keepdims_outc                 C   s   t d}t d}tt j|dd|d| tt j|ddd|d| t d}tt j|dd|d| tt j|ddd|d| t d	}tt j|d
|d| tt j|d
d|d| d S )NrH   r  r   ry  rI  r{  rv  rL   r<   rJ   )r6   r?   r]   r   rL  r_   rP  r   r<   r<   r=   test_out!  s    



zTestPercentile.test_outc              	   C   s   t jdd t ddt td}td}tj|d< ttj	|dd|d	| ttj	|ddd
|d| td}ttj	|dd|d	| ttj	|ddd
|d| td}ttj	|d|d	| ttj	|dd
|d| W 5 Q R X d S )NTr
  r  r  r  r  r  r   ry  rI  r{  rv  rL   r<   )
r  r  r  r  r6   r?   r]   r   r   rL  r  r<   r<   r=   test_out_nan.  s,    


 
 
 zTestPercentile.test_out_nanc                 C   s:  t jdtd}t j|d< tt |dt j tt j|dddt j tt j|ddgddt t jgd  t jdtdddd	}t j|d
< t j|d< tt |dt j tt |djd t t jdtdddd	dd}t j|d< t j|d< tt |dd| t t jdtdddd	ddgd}t j|d d ddf< t j|d d ddf< tt |ddgd| t t jdtdddd	dd}t j|d< t j|d< tt |dd| t t jdtdddd	ddgd}t j|d d ddf< t j|d d ddf< tt |ddgd| t t jdtdddd	dd}t j|d< t j|d< tt |dd| t t jdtdddd	ddgd}t j|d d df< t j|d d df< tt |ddgd| t jt jdtdddd	ddgddd}t j|d d df< t j|d d df< tt j|ddgddd| d S )Nr  r   rJ   r  r   rr   g333333?rS   rH   r  rL   rL   rJ   r  re   rL   r  rP   rI  rJ  )	r6   r7   r+  r   r   rL  r   rl   r   rz   r<   r<   r=   test_nan_behavior@  s    


"

 "

    

      z TestPercentile.test_nan_behaviorc              	   C   s   t jtdd tddddgtj W 5 Q R X t jtdd tddddgtjg W 5 Q R X tddd	}tj|d
< t jtdd tddddg| W 5 Q R X d S )NzPercentiles must be inr.  rL   rJ   rS   r   r   g     X@r>  r   )r   r  r\   r6   rL  r   r  )r_   r  r<   r<   r=   
test_nan_q}  s     "
zTestPercentile.test_nan_q).rn   ro   rp   ra   rN  rQ  rR  r   r   r   r6   	typecodesrW  r  r   r   r  rH  rI  Zclongdoubler   ZH_F_TYPE_CODESre  Z
TYPE_CODESrj  rn  rp  rq  rr  rl  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r<   r<   r<   r=   rH  {  s   	












	$0)	 
=rH  c                   @   s   e Zd Zdd Zdd Zejjdddd Zd	d
 Z	dd Z
ejdejd dd Zejddddddddddddddgdd  Zejeejejd!d"d#ejd$d$d%d&d'd(d)d*d+ Zd,d- Zd.S )/TestQuantilec                 C   s,   dddg}t |d}t jj|ddd d S )Nr   r  r  g?g
ףp=
?rL   )Zmaxulp)r6   quantilerV  Zassert_array_max_ulp)r_   r   r`   r<   r<   r=   test_max_ulp  s    
zTestQuantile.test_max_ulpc                 C   sH   t dd }tt |dd tt |dd tt |dd d S )Nri   r  r   r   rL   rG  r   )r6   r7   r   r  r"  r<   r<   r=   ra     s    zTestQuantile.test_basiczSee gh-19154rc  c                 C   sn   t dg}t dd}t||d  tt||j t dddg}t ||}t|| t|j|j d S )NTFr   )r6   r   r  r   r   r   r   )r_   r`   Ztf_quantZ	quant_resr<   r<   r=   test_correct_quantile_value  s    
z(TestQuantile.test_correct_quantile_valuec                 C   s8  dd t dD }t|d}t|d tt|t t|d}t|tdd tt|t t|tdd}t|tdd tt|t t|tddg}t|ttddg tt|tj t|tddgg}t|ttddgg tt|tj td}tt|tddtdd d S )	Nc                 S   s   g | ]}t |d qS rM  r   r  r<   r<   r=   r     s     z.TestQuantile.test_fraction.<locals>.<listcomp>ri   r   rL   rk   rJ   rH   )	r^   r6   r  r   r   r   r   r   r7   )r_   r   r  r<   r<   r=   rN    s$    

zTestQuantile.test_fractionc                 C   sp   t dddddg}| }t jt d|dd t|| | }| }t jt d|dd t|| d S )	Nr   rs  r  r  r   r  rl  rJ  )r6   r   r   r  r7   r   r  )r_   p0r%  r<   r<   r=   r    s    
z TestQuantile.test_no_p_overwriter   r  c                 C   s2   t jt jddg|ddgdd}|j|ks.td S )NrL   rJ   r   r  rI  rJ  )r6   r  r   r   r   )r_   r   r  r<   r<   r=   test_quantile_preserve_int_type  s    z,TestQuantile.test_quantile_preserve_int_typerK  rZ  r[  r]  r^  r_  r`  rO  rb  rc  rI  rf  rg  rl  c                 C   s   t ddd}t jt dddddddddddddddd	d	d
gd ||d}tt || t jddddg||d}tt || d S )Nr   rL   r  rJ   rS   rH   rT   r   ri   rk   re  rJ  r   r   r   r   )r6   r  r  r   r   r  )r_   rK  r  r  r<   r<   r=   test_quantile_monotonic  s    	&   z$TestQuantile.test_quantile_monotonicrS   r  )	min_value	max_valueFu <7u <7~)allow_infinity	allow_nanr  r  )r   rA   elements)r  c                 C   s.   t ddd}t ||}tt || d S )Nr   rL   g{Gz?)r6   r7   r  r   r  )r_   r  r  r  r<   r<   r=   test_quantile_monotonic_hypo  s    z)TestQuantile.test_quantile_monotonic_hypoc                 C   sZ   t dddgdddgg}t j|d d< t |d	}t |sBttt |d	t j d S )
Nr3  r9  r   r   r   r   r   rL   r  )r6   r   r   r  r}  r   r   )r_   r`   r   r<   r<   r=   test_quantile_scalar_nan  s
    z%TestQuantile.test_quantile_scalar_nanN)rn   ro   rp   r  ra   r   r   r  r  rN  r  r   r6   r  r  r  
hypothesisgivenr   r   stZintegersfloatsr  r  r<   r<   r<   r=   r    sD   


       
 
r  c                
   @   s   e Zd Zejejdddddejdddddejdddddejdddddddd	 Zejejdddddejdddddejdddddd
dd Zejejdddddejdddddejdddddd
dd Z	dd Z
dS )TestLerpFr   rL   )r  r  r  r  r  r  )t0t1r`   r{   c                 C   sh   t |||}t |||}||ks,||kr:||ksdtn*||k ||k krX||ksdtn||ksdtd S r5   r?  _lerpr   )r_   r  r  r`   r{   Zl0l1r<   r<   r=   +test_linear_interpolation_formula_monotonic  s    	z4TestLerp.test_linear_interpolation_formula_monotonic)tr`   r{   c                 C   sV   ||kr.|t |||  kr&|ksRn tn$|t |||  krL|ksRn td S r5   r  )r_   r  r`   r{   r<   r<   r=   )test_linear_interpolation_formula_bounded	  s    &z2TestLerp.test_linear_interpolation_formula_boundedc                 C   s6   t ||dd|  }t ||d| }t|| d S r  )r?  r  r   )r_   r  r`   r{   r  r!  r<   r<   r=   +test_linear_interpolation_formula_symmetric  s    z4TestLerp.test_linear_interpolation_formula_symmetricc                 C   s8   t d}t d}t d}t|||dks4td S )NrJ   rT   r  g@)r6   r   r?  r  r   )r_   r`   r{   r  r<   r<   r=   +test_linear_interpolation_formula_0d_inputs!  s    


z4TestLerp.test_linear_interpolation_formula_0d_inputsN)rn   ro   rp   r  r  r  r  r  r  r  r  r<   r<   r<   r=   r    s^       

   
   
r  c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	
ddddgdejdgejdfdd Zdd Zdd Zdd Zej	jedddd Zdd Zdd Zd d! Zd"d# Zej	j
d$d%d&d'd(d)gd*d+d, Zd%S )-
TestMedianc                 C   sH  t d}t d}t ddd}tt |d tt |d tt |d tt j|ddd	dd
g tt j|ddddg tt j|d dd t ddddg}t|d |d  d t | t dddg}t|d t | t dddg}t|d t | tt |jd t j	|d< tt |jd d S )NrL   rJ   rj   rS   r  r  r   rr   r  rG  rH   g6-¦?g0?g}r?g4?r   rX   )
r6   r   r7   rl   r   medianr   r	   r   r   )r_   a0r&  rN  r`   r<   r<   r=   ra   *  s$    

 
zTestMedian.test_basicc                 C   s   t ddgddgddgddgg}|t jjdd	d
dfD ]B}| }t j|d d t|jD ]}t j||d q\t|| q8t	t j|ddddg t	t j|j
ddddg t	t |d t	t j|d dd t	t |j
d d S )NrJ   rS   r   rL   rj   rk   rH   rT   r  r  r  rr   rG  )r6   r   r  randintr   r  r^   r   r   r   r  )r_   a3r`   origZaxr<   r<   r=   test_axis_keyword@  s     
zTestMedian.test_axis_keywordc                 C   s  t ddgddgddgddgg}t d}t d}t ddd}tt j| d	d
d tt j| d	d
d tt j| d	d
d tt j| d	dddddg tt j| d	ddddg tt j| d	d dd tt j| d	ddddg tt j|j d	ddddg t jdt jdd}t j	
|  tt j|d dt j| d d	d tt j|ddt j| dd	d tt j|ddt j| dd	d tt j|ddt j| dd	d d S )NrJ   rS   r   rL   rj   rk   rH   rT   Tr  r  r  )r  rs   r  rG  r  r   )rS   rH   rT   rr   )rs   r  )r6   r   r7   rl   r   r  r   r  r   r  r  r  )r_   r  r  r&  rN  Za4r<   r<   r=   test_overwrite_keywordR  sV    


   z!TestMedian.test_overwrite_keywordc                 C   sH   dddg}t t|d |g}t t|d ttj|dd| d S )NrL   rJ   rS   r   rr   )r	   r6   r  r   )r_   r   r  r<   r<   r=   r  s  s
    
zTestMedian.test_array_likec                 C   s4   G dd dt j}|dddg}tt |d d S )Nc                   @   s    e Zd ZdddZdddZdS )z,TestMedian.test_subclass.<locals>.MySubClassNc                 S   s   t || }||_|S r5   )r6   r  r   info)clsZinput_arrayr  objr<   r<   r=   __new__~  s    z4TestMedian.test_subclass.<locals>.MySubClass.__new__c                 S   s   dS )Nr<   )r_   rs   r   rf  r<   r<   r=   r     s    z1TestMedian.test_subclass.<locals>.MySubClass.mean)N)NNN)rn   ro   rp   r  r   r<   r<   r<   r=   
MySubClass|  s   
r  rL   rJ   rS   r  )r6   r   r   r  )r_   r  r`   r<   r<   r=   r!  z  s    
zTestMedian.test_subclassr  r   r   r   r   c                 C   s:   G dd dt j}t t ||}t||s6tdS )z6Check that we return subclasses, even if a NaN scalar.c                   @   s   e Zd ZdS )z-TestMedian.test_subclass2.<locals>.MySubclassNr   r<   r<   r<   r=   
MySubclass  s   r  N)r6   r   r  r   r   r  r   )r_   r  r  r   r<   r<   r=   test_subclass2  s    zTestMedian.test_subclass2c                 C   sl   t d}t d}tt j|d|d| t d}tt j|d|d| t d}tt j||d| d S )Nr  r  r   ry  rv  rL   r<   )r6   r?   r]   r   r  r  r<   r<   r=   r    s    



zTestMedian.test_outc              	   C   s   t jdd t ddt td}td}tj|d< ttj	|d|d	| td
}ttj	|d|d	| td}ttj	||d	| W 5 Q R X d S )NTr
  r  r  r  r  r  r   ry  rv  rL   r<   )
r  r  r  r  r6   r?   r]   r   r   r  r  r<   r<   r=   r    s    




zTestMedian.test_out_nanc                 C   sf  t jdtd}t j|d< tt |t j tt j|ddt j t jdtdddd}t j|d< t j|d	< tt |t j tt |jd t t jdtddddd}t j|d
< t j|d< tt |d| t t jdtddddd}t j|d< t j|d< tt |d| t t jdtddddd}t j|d< t j|d< tt |d| d S )Nr  r   rJ   r   rr   rS   rH   r  r  r  re   rL   r  rP   )r6   r7   r+  r   r   r  rl   r   rz   r<   r<   r=   r    s*    


 

 

 

zTestMedian.test_nan_behaviorzfp errors don't work correctlyrc  c              	   C   sZ  t jg td}tjddF}tddt tt |t j	 t
|d jtk tt|d W 5 Q R X t jg tdd	}tjdd8}tddt tt |t j	 t
|d jtk W 5 Q R X t jg tdd	}tt j|dd
| tt j|dd
| t jt j	tdd	}tjdd:}tddt tt j|dd
| t
|d jtk W 5 Q R X d S )Nr   Tr
  r  r  r   rJ   rS   )r   r  rr   rL   )r6   r   r+  r  r  r  r  r   r  r   r   r  r   )r_   r`   r   r{   r<   r<   r=   r    s&    zTestMedian.test_emptyc                 C   sL   t d}ttt |tt t j|d< ttt |tt d S )Nr9  rJ   )	r6   r7   r   r   r  r   r  r+  r   )r_   rP  r<   r<   r=   test_object  s    

zTestMedian.test_objectc              
   C   s  t jjdd}t |gd }tt j|ddt | t |dd}tt j|ddt | |dd	 }tt j|d
dt | tt j|ddt j|d d tt j|ddt j|dd tt j|ddt j|dd t 	d
d}t j|  tt j|ddd t |d d d d d d df   tt j|ddd	 t |d d d d d	d d f   tt j|ddd t |d d d d dd d f   tt j|ddd t |dd d d d d d f   tt j|ddd t |dd	d d d d f   tt j|ddd t |dd d d d d	f   tt j|ddd t |dd d dd d f   d S )Nr  r  r   rY   rr   rX   r   rf   rL   rd   rK   r  )rX   r  r  r  r  rJ   r  r  r  r  r  rO   )r6   r  r  r  r   r  r  r   r   r7   rl   r  r  r  r  r<   r<   r=   r    sB    $$$$   zTestMedian.test_extended_axisc                 C   sp   t d}tt jt j|dd tt jt j|dd tt jt j|dd tt jt j|dd ttt j|dd d S )Nr  r2  rr   r  rH   r  rQ   )r6   r]   r   rv   r  r\   r  r<   r<   r=   r  
  s    
z%TestMedian.test_extended_axis_invalidc                 C   s   t d}tt j|d ddjd tt j|dddjd tt j|dddjd tt j|d	ddjd
 tt j|dddjd tt j|dddjd d S )Nr  Tr   r  rY   r  ru   r  r   r  r  r  r  )r6   r]   r   r  rA   r  r<   r<   r=   r    s&    
zTestMedian.test_keepdimsrs   NrL   r   rY   r  r  c                    s   t d|d krdj }n*t|j t fddtjD }t |}t j|d|d}||ksptt	|j
| d S )Nr  r   c                 3   s$   | ]}| krd nj | V  qdS r  r  r  r  r<   r=   r  1  s    z/TestMedian.test_keepdims_out.<locals>.<genexpr>Tr  )r6   r]   r   r4   rJ  r^   r~  r  r   r   rA   )r_   rs   r  rf  r}  r<   r  r=   r  !  s    

zTestMedian.test_keepdims_out)rn   ro   rp   ra   r  r  r  r!  r   r   r   r6   r   r  r  r  r  rm  r   r  r  r  r  r  r  r<   r<   r<   r=   r  (  s8   !
	 

r  c                   @   s   e Zd Zdd Zdd ZdS )TestAdd_newdoc_ufuncc                 C   s"   t ttdd t tttjd d S )NrJ   Zblah)r   r  r   r\   r6   r8   rx   r<   r<   r=   test_ufunc_arg;  s    z#TestAdd_newdoc_ufunc.test_ufunc_argc                 C   s   t tttjd d S )NrS   )r   r  r   r6   r8   rx   r<   r<   r=   test_string_arg?  s    z$TestAdd_newdoc_ufunc.test_string_argN)rn   ro   rp   r  r  r<   r<   r<   r=   r  9  s   r  c                   @   s\   e Zd Zejjejjdkddejj	e
dddd Zejjejjdkdddd Zd	S )
TestAdd_newdocrJ   Python running -OOrc  PyPy does not modify tp_docc                 C   sV   d}t tjjjjd t| | tttjjj	jdk tttj
jjjdk d S )Nz"Current flat index into the array.r  )r   r6   coreflatiterindexr1  r   r   Zufuncidentityr  Zindex_tricksZmgrid)r_   rO  r<   r<   r=   test_add_docE  s    zTestAdd_newdoc.test_add_docc                 C   s2   t jjjj}t ddd |t jjjjks.td S )Nz
numpy.corer  )r  zbad docstring)r6   r  r  r  r1  Z
add_newdocr   )r_   Zprev_docr<   r<   r=   test_errors_are_ignoredN  s    z&TestAdd_newdoc.test_errors_are_ignoredN)rn   ro   rp   r   r   rm  rh  r   optimizer  r   r  r  r<   r<   r<   r=   r  C  s
   r  c                   @   s\   e Zd Zejjejjdkddejje	dddd Z
ejjejjdkdddd Zd	S )
TestAddDocstringrJ   r  rc  r  c                 C   s0   t t jjt jjj dd }t ||j d S )Nc                   S   s   dS Z	docstringNr<   r<   r<   r<   r=   func`  s    z6TestAddDocstring.test_add_same_docstring.<locals>.func)r6   add_docstringr   flatr1  r_   r  r<   r<   r=   test_add_same_docstringZ  s    z(TestAddDocstring.test_add_same_docstringc              	   C   sP   t t ttjjd W 5 Q R X dd }t t t|d W 5 Q R X d S )Nzdifferent docstringc                   S   s   dS r   r<   r<   r<   r<   r=   r  l  s    z=TestAddDocstring.test_different_docstring_fails.<locals>.func)r   r  r6   r  r   r  r  r<   r<   r=   test_different_docstring_failsf  s
    

z/TestAddDocstring.test_different_docstring_failsN)rn   ro   rp   r   r   rm  rh  r   r  r   r  r  r<   r<   r<   r=   r  W  s
   
r  c                	   @   s6   e Zd Zejdddddddgdd	 Zd
d ZdS )TestSortComplexztype_in, type_out)lD)hr   )Hr   )r{   r   )r  r   )r  Gc                 C   sN   t jdddddg|d}t |}t ||}t|| t|j|j d S )NrT   rS   rj   rJ   rL   r   )r6   r   sort_complexr  r   r   r   )r_   Ztype_inZtype_outr`   r   rs  r<   r<   r=   test_sort_realv  s
    


zTestSortComplex.test_sort_realc                 C   sR   t jddddgdd}t jddddgdd}t |}t|| t|j|j d S )Nr7  y      ?       r  r8  r	  r   )r6   r   r  r   r   )r_   r`   rs  r   r<   r<   r=   test_sort_complex  s
    

z!TestSortComplex.test_sort_complexN)rn   ro   rp   r   r   r   r  r  r<   r<   r<   r=   r  t  s   
r  )r   )r   r   )}rU  r  rh  r   Z	fractionsr   r  r   r  Zhypothesis.extra.numpyr   Zhypothesis.strategiesZ
strategiesr  Znumpyr6   r   Znumpy.testingr   r   r   r	   r
   r   r   r   r   r   r   r   r   Znumpy.lib.function_baser  Zfunction_baser?  Znumpy.randomr   Z	numpy.libr   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   Znumpy.core.numericr4   r>   rF   rG   rq   r   r   r   r   r   r	  r1  r6  r7  r:  rP  r\  r`  r  r  r  r  r  r  r   r  r[  rn  r  r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rH  r  r  r  r  r  r  r  r<   r<   r<   r=   <module>   s   <Dg# >o u }A)

   *)U l>[j4nd` C    m2  
