3
KdŔ              
   @   s  d dl Z d dlZd dlZd dlmZmZ d dlmZm	Z	m
Z
mZmZmZmZ ejdejddejdgdd5ejd
ddgejejejdejd6gdejejddejggZejddddgejdd7d
ddgejdd8gejdddggZejddddddgdd9dd
ddgdddddd:gddddddggZej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G dd dZG dd dZG dd dZG dd dZG dd deZG dd deZG d d! d!eZG d"d# d#ZG d$d% d%ZG d&d' d'Zejj d(ejejd)ejej!gejd*d+d*d+gfejd,d-d.d/gej"d0d+fejd*d+d*d+gd+fejejd)gejej!ggej#d0ejd*d+gd*d+ggfgd1d2 Z$d3d4 Z%dS )=    N)	_nan_mask_replace_nan)assert_assert_equalassert_almost_equalassert_no_warningsassert_raisesassert_array_equalsuppress_warningsgs?g&S:?g?gʡE?g	?g?gzG?gL
F%u?g6<R!?g[B>٬?g:M?gS㥛?gz):?g	h"?g      ?g        c               @   st   e Zd ZejejgZejej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dS )TestNanFunctions_MinMaxc             C   s.   t j }x | jD ]}|| t|t  qW d S )N)_ndatcopynanfuncsr   )selfndatf r   U/var/www/html/virt/lib64/python3.6/site-packages/numpy/lib/tests/test_nanfunctions.pytest_mutation+   s    z%TestNanFunctions_MinMax.test_mutationc             C   sd   t jd}xTt| j| jD ]B\}}x8dD ]0}|||dd}|||dd}t|j|jk q(W qW d S )N   r      T)axiskeepdims)Nr   r   )npeyezipr   stdfuncsr   ndim)r   matnfrfr   tgtresr   r   r   test_keepdims2   s    

z%TestNanFunctions_MinMax.test_keepdimsc             C   sb   t jd}xRt| j| jD ]@\}}t jd}||dd}||d|d}t|| t|| qW d S )Nr   r   )r   )r   out)r   r   r   r   r   zerosr   )r   r   r   r    resoutr!   r"   r   r   r   test_out:   s    


z TestNanFunctions_MinMax.test_outc             C   s   d}xt | j| jD ]|\}}xr|D ]j}tjd|d}||ddjj}||ddjj}t||k ||d djj}||d djj}t||k q"W qW d S )NefdgFDGr   )dtyper   )r   )r   r   r   r   r   r)   typer   )r   codesr   r    cr   r!   r"   r   r   r   test_dtype_from_inputC   s    
z-TestNanFunctions_MinMax.test_dtype_from_inputc                sH   xBt | j| jD ]0\}  fddtD }|tdd}t|| qW d S )Nc                s   g | ]} |qS r   r   ).0d)r    r   r   
<listcomp>R   s    z>TestNanFunctions_MinMax.test_result_values.<locals>.<listcomp>r   )r   )r   r   r   _rdatr   r   )r   r   r!   r"   r   )r    r   test_result_valuesP   s    z*TestNanFunctions_MinMax.test_result_valuesc             C   s   t jt jgd jdd}x| jD ]}xnd
D ]f}tjddP}tjd tt j	|||dj
  tt|dkd	 tt|d jt W d Q R X q,W tjddJ}tjd tt j	|t j tt|dkd	 tt|d jt W d Q R X q"W d S )N	   r   r   r   T)recordalways)r   zno warning raised)Nr   r   )r   arraynanreshaper   warningscatch_warningssimplefilterr   isnanalllen
issubclasscategoryRuntimeWarning)r   r   r   r   wr   r   r   test_allnansV   s    

"
z$TestNanFunctions_MinMax.test_allnansc             C   sn   t jjt}|jj }xRt jgD ]F}||dd}|tdd}t|| t|j| tt j	|j
   q W d S )Nr   )r   )r   maZfix_invalidr   Z_maskr   nanminr   r   isinfany)r   r   Zmskr   r"   r!   r   r   r   test_maskedf   s    

z#TestNanFunctions_MinMax.test_maskedc             C   s$   x| j D ]}t|ddk qW d S )Ng        )r   r   )r   r   r   r   r   test_scalarp   s    z#TestNanFunctions_MinMax.test_scalarc             C   s
  G dd dt j}t jdj|}xt| jD ]j}||dd}tt|| t|jdk ||dd}tt|| t|jdk ||}t|jf k q*W t j|d< x`| jD ]T}t	j
ddP}t	jd	 ||dd}tt|| tt jt j|  tt|dk W d Q R X t	j
dd}t	jd	 ||dd}tt|| tt j|d oxt j|d  oxt j|d
   tt|dkd tt|d jt W d Q R X t	j
ddD}t	jd	 ||}t|jf k t|t jk tt|dk W d Q R X qW d S )Nc               @   s   e Zd ZdS )z8TestNanFunctions_MinMax.test_subclass.<locals>.MyNDArrayN)__name__
__module____qualname__r   r   r   r   	MyNDArrayu   s   rM   r   r   )r   r   T)r4   r5      zno warning raised)r   )r   )r   ndarrayr   viewr   r   
isinstanceshaper7   r9   r:   r;   rG   r<   r>   r?   r@   rA   )r   rM   miner   r"   rB   r   r   r   test_subclasst   sB    


$
z%TestNanFunctions_MinMax.test_subclassc             C   s   t jddgt jdgt jt jggtd}tt j|d tt j|ddddg tjddV}tjd	 tt	t j|d
dddt jg t
t|d
kd t
t|d jt W d Q R X d S )Ng      ?g       @g      @)r)   r   )r   T)r4   r5   r   zno warning raised)r   r6   r7   objectr   rE   r9   r:   r;   listr   r>   r?   r@   rA   )r   arrrB   r   r   r   test_object_array   s    &
 z)TestNanFunctions_MinMax.test_object_arrayN)rJ   rK   rL   r   rE   nanmaxr   minmaxr   r   r#   r'   r-   r2   rC   rH   rI   rT   rX   r   r   r   r   r   &   s   	
+r   c               @   sH   e Zd ZejejgZdd Zdd Zdd Z	dd Z
d	d
 Zdd ZdS )TestNanFunctions_ArgminArgmaxc             C   s.   t j }x | jD ]}|| t|t  qW d S )N)r   r   r   r   )r   r   r   r   r   r   r      s    z+TestNanFunctions_ArgminArgmax.test_mutationc             C   s   xt | jtjtjgD ]\}}x|tD ]t}t d}|jtd ||}|| }t	tj
|  t	|||j   t	tj||d | j   W d Q R X q$W qW d S )Nzinvalid value encountered in)r   r   r   ZgreaterZlessr   r
   filterrA   r   r<   rG   equal)r   r   Zfcmprowsupindvalr   r   r   r2      s    
z0TestNanFunctions_ArgminArgmax.test_result_valuesc             C   sZ   t jt jgd jdd}x:| jD ]0}xdD ]}tt|||d q,W tt|t j q"W d S )Nr3   r   r   r   )r   )Nr   r   )r   r6   r7   r8   r   r   
ValueError)r   r   r   r   r   r   r   rC      s
    
z*TestNanFunctions_ArgminArgmax.test_allnansc             C   sf   t jd}xV| jD ]L}xdD ]}tt|||d qW x(dD ] }|||d}t|t jd q:W qW d S )Nr   r   )r   r   )r   r   )r   N)r   )r   r%   r   r   rc   r   )r   r   r   r   r"   r   r   r   
test_empty   s    


z(TestNanFunctions_ArgminArgmax.test_emptyc             C   s$   x| j D ]}t|ddk qW d S )Ng        )r   r   )r   r   r   r   r   rI      s    z)TestNanFunctions_ArgminArgmax.test_scalarc             C   s   G dd dt j}t jdj|}xt| jD ]j}||dd}tt|| t|jdk ||dd}tt|| t|jdk ||}t|jf k q*W d S )	Nc               @   s   e Zd ZdS )z>TestNanFunctions_ArgminArgmax.test_subclass.<locals>.MyNDArrayN)rJ   rK   rL   r   r   r   r   rM      s   rM   r   r   )r   r   )r   )r   )r   rO   r   rP   r   r   rQ   rR   )r   rM   rS   r   r"   r   r   r   rT      s    z+TestNanFunctions_ArgminArgmax.test_subclassN)rJ   rK   rL   r   	nanargmin	nanargmaxr   r   r2   rC   rd   rI   rT   r   r   r   r   r\      s   	r\   c               @   s   e Zd Zejejejejejej	ej
ejfZej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dd Zdd ZdS )TestNanFunctions_IntTypes   '   ]   W   .   c             c   s"   x| j D ]}| jj|V  qW d S )N)	int_typesr   astype)r   r)   r   r   r   integer_arrays   s    z(TestNanFunctions_IntTypes.integer_arraysc             C   s2   t j| j}x | j D ]}tt j|| qW d S )N)r   rZ   r   ro   r   rE   )r   r!   r   r   r   r   test_nanmin   s    z%TestNanFunctions_IntTypes.test_nanminc             C   s2   t j| j}x | j D ]}tt j|| qW d S )N)r   r[   r   ro   r   rY   )r   r!   r   r   r   r   test_nanmax   s    z%TestNanFunctions_IntTypes.test_nanmaxc             C   s2   t j| j}x | j D ]}tt j|| qW d S )N)r   Zargminr   ro   r   re   )r   r!   r   r   r   r   test_nanargmin   s    z(TestNanFunctions_IntTypes.test_nanargminc             C   s2   t j| j}x | j D ]}tt j|| qW d S )N)r   Zargmaxr   ro   r   rf   )r   r!   r   r   r   r   test_nanargmax  s    z(TestNanFunctions_IntTypes.test_nanargmaxc             C   s2   t j| j}x | j D ]}tt j|| qW d S )N)r   sumr   ro   r   nansum)r   r!   r   r   r   r   test_nansum	  s    z%TestNanFunctions_IntTypes.test_nansumc             C   s2   t j| j}x | j D ]}tt j|| qW d S )N)r   prodr   ro   r   nanprod)r   r!   r   r   r   r   test_nanprod  s    z&TestNanFunctions_IntTypes.test_nanprodc             C   s2   t j| j}x | j D ]}tt j|| qW d S )N)r   cumsumr   ro   r   	nancumsum)r   r!   r   r   r   r   test_nancumsum  s    z(TestNanFunctions_IntTypes.test_nancumsumc             C   s2   t j| j}x | j D ]}tt j|| qW d S )N)r   cumprodr   ro   r   
nancumprod)r   r!   r   r   r   r   test_nancumprod  s    z)TestNanFunctions_IntTypes.test_nancumprodc             C   s2   t j| j}x | j D ]}tt j|| qW d S )N)r   meanr   ro   r   nanmean)r   r!   r   r   r   r   test_nanmean  s    z&TestNanFunctions_IntTypes.test_nanmeanc             C   sf   t j| j}x | j D ]}tt j|| qW t j|dd}x$| j D ]}tt j|dd| qFW d S )Nr   )ddof)r   varr   ro   r   nanvar)r   r!   r   r   r   r   test_nanvar"  s    z%TestNanFunctions_IntTypes.test_nanvarc             C   sh   t j| j}x | j D ]}tt j|| qW t j| jdd}x$| j D ]}tt j|dd| qHW d S )Nr   )r   )r   stdr   ro   r   nanstd)r   r!   r   r   r   r   test_nanstd+  s    z%TestNanFunctions_IntTypes.test_nanstdN)rJ   rK   rL   r   Zint8Zint16int32int64Zuint8Zuint16Zuint32Zuint64rm   r6   r   ro   rp   rq   rr   rs   rv   ry   r|   r   r   r   r   r   r   r   r   rg      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 )SharedNanFunctionsTestsMixinc             C   s.   t j }x | jD ]}|| t|t  qW d S )N)r   r   r   r   )r   r   r   r   r   r   r   6  s    z*SharedNanFunctionsTestsMixin.test_mutationc             C   sd   t jd}xTt| j| jD ]B\}}x8dD ]0}|||dd}|||dd}t|j|jk q(W qW d S )Nr   r   r   T)r   r   )Nr   r   )r   r   r   r   r   r   r   )r   r   r   r    r   r!   r"   r   r   r   r#   =  s    

z*SharedNanFunctionsTestsMixin.test_keepdimsc             C   sb   t jd}xRt| j| jD ]@\}}t jd}||dd}||d|d}t|| t|| qW d S )Nr   r   )r   )r   r$   )r   r   r   r   r   r%   r   )r   r   r   r    r&   r!   r"   r   r   r   r'   E  s    


z%SharedNanFunctionsTestsMixin.test_outc       	      C   s   t jd}d}xt| j| jD ]\}}x|D ]}t }|t jt jhkr\|dkr\|jt j	 ||t j
|ddj
j}||t j
|ddj
j}t||k ||t j
|d dj
j}||t j
|d dj
j}t||k W d Q R X q,W qW d S )Nr   r(   FDGr   )r)   r   )r   r   r   r   r   r
   r   r   r]   ComplexWarningr)   r*   r   )	r   r   r+   r   r    r,   r`   r!   r"   r   r   r   test_dtype_from_dtypeN  s    

z2SharedNanFunctionsTestsMixin.test_dtype_from_dtypec       	      C   s   t jd}d}xt| j| jD ]\}}x|D ]}t }|t jt jhkr\|dkr\|jt j	 |||ddj
j}|||ddj
j}t||k |||d dj
j}|||d dj
j}t||k W d Q R X q,W qW d S )Nr   r(   r   r   )r)   r   )r   r   r   r   r   r
   r   r   r]   r   r)   r*   r   )	r   r   r+   r   r    r,   r`   r!   r"   r   r   r   test_dtype_from_char_  s    

z1SharedNanFunctionsTestsMixin.test_dtype_from_charc             C   s   d}xt | j| jD ]\}}x||D ]t}tjd|d}||ddjj}||ddjj}t||kd||f  ||d djj}||d djj}t||k q"W qW d S )Nr(   r   )r)   r   )r   zres %s, tgt %s)r   r   r   r   r   r)   r*   r   )r   r+   r   r    r,   r   r!   r"   r   r   r   r-   p  s    
z2SharedNanFunctionsTestsMixin.test_dtype_from_inputc                sH   xBt | j| jD ]0\}  fddtD }|tdd}t|| qW d S )Nc                s   g | ]} |qS r   r   )r.   r/   )r    r   r   r0     s    zCSharedNanFunctionsTestsMixin.test_result_values.<locals>.<listcomp>r   )r   )r   r   r   r1   r   r   )r   r   r!   r"   r   )r    r   r2   }  s    z/SharedNanFunctionsTestsMixin.test_result_valuesc             C   s$   x| j D ]}t|ddk qW d S )Ng        )r   r   )r   r   r   r   r   rI     s    z(SharedNanFunctionsTestsMixin.test_scalarc             C   s   G dd dt j}t jd}|j|}x| jD ]}||ddj}||dd}tt|| t|j|k ||ddj}||dd}tt|| t|j|k ||j}||}tt|| t|j|k q.W d S )Nc               @   s   e Zd ZdS )z=SharedNanFunctionsTestsMixin.test_subclass.<locals>.MyNDArrayN)rJ   rK   rL   r   r   r   r   rM     s   rM   r   r   )r   r   )r   rO   r   rP   r   rR   r   rQ   )r   rM   r6   rS   r   Zexpected_shaper"   r   r   r   rT     s     


z*SharedNanFunctionsTestsMixin.test_subclassN)rJ   rK   rL   r   r#   r'   r   r   r-   r2   rI   rT   r   r   r   r   r   5  s   	r   c               @   s4   e Zd ZejejgZejejgZ	dd Z
dd ZdS )TestNanFunctions_SumProdc             C   s   t jdd}t jd tjtjgd d d}t|dkd tt|dkd tjtj}t|dkd tt|dkd tjdgd d d tt|dkd	 W d Q R X d S )
NT)r4   r5   r   )r   r   zresult is not 0zwarning raisedzunwanted warning raised)r9   r:   r;   r   ru   r7   r   r>   )r   rB   r"   r   r   r   rC     s    
z%TestNanFunctions_SumProd.test_allnansc             C   s   xt tjtjgddgD ]f\}}tjd}|gd }||dd}t|| g }||dd}t|| |}||d d}t|| qW d S )Nr   r   r   )r   )r   r   )r   r   ru   rx   r%   r   )r   r   	tgt_valuer   r!   r"   r   r   r   rd     s     



z#TestNanFunctions_SumProd.test_emptyN)rJ   rK   rL   r   ru   rx   r   rt   rw   r   rC   rd   r   r   r   r   r     s   r   c               @   sL   e Zd ZejejgZejejgZ	dd Z
dd Zdd Zdd Zd	d
 ZdS )TestNanFunctions_CumSumProdc             C   s   xt | jddgD ]\}}t ~ |tjgd d d}|tjd }ttj||d|  |tj}|tjd }ttj||d|  |dgd d d W d Q R X qW d S )Nr   r   r   )r   zresult is not %s * np.ones((3))zresult is not %s * np.ones((1)))r   r   r   r   r7   onesr   Zarray_equal)r   r   r   r"   r!   r   r   r   rC     s    
z(TestNanFunctions_CumSumProd.test_allnansc             C   s   xt | jddgD ]p\}}tjd}|tjd }||dd}t|| |}||dd}t|| tjd}||d d}t|| qW d S )Nr   r   r   )r   )r   r   )r   r   )r   r   r   r%   r   r   )r   r   r   r   r!   r"   r   r   r   rd     s    



z&TestNanFunctions_CumSumProd.test_emptyc       	      C   s   x^t | j| jD ]L\}}tjd}x8dD ]0}|||d d}|||d d}t|j|jk q(W qW x~| jD ]t}tjd}tjj	d}tj
||j|j dk < ||d d	}t|jd x*tjdD ]}|||d	}t|jd qW qhW d S )Nr   r   r   )r   r$            g      ?)r        )Nr   r   )r   r   r   r   )r   )r   r   r   r   )r   r   r   r   r   r   r   r   randomZRandomStater7   randrR   r   arange)	r   r   gr   r   r!   r"   r/   rsr   r   r   r#     s    


z)TestNanFunctions_CumSumProd.test_keepdimsc             C   s^   xXdD ]P}t jt|d}t jt|d}t|| t jt|d}t jt|d}t|| qW d S )NrN   r   r   )r   )r   r   r   r   N)	r   r}   
_ndat_onesr~   r   r   rz   _ndat_zerosr{   )r   r   r!   r"   r   r   r   r2     s    

z.TestNanFunctions_CumSumProd.test_result_valuesc             C   sp   t jd}x`t| j| jD ]N\}}t jd}x:d	D ]2}|||d}||||d}t|| t|| q2W qW d S )
Nr   rN   r   r   )r   )r   r$   r   r   )r   r   r   r   )r   r   r   r   r   r   )r   r   r   r    r&   r   r!   r"   r   r   r   r'     s    



z$TestNanFunctions_CumSumProd.test_outN)rJ   rK   rL   r   r{   r~   r   rz   r}   r   rC   rd   r#   r2   r'   r   r   r   r   r     s   	r   c               @   s\   e Zd ZejejejgZejej	ej
gZdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestNanFunctions_MeanVarStdc          	   C   s@   x:| j D ]0}x*tjtjtjgD ]}tt|td|d qW qW d S )Nr   )r   r)   )r   r   bool_int_object_r   	TypeErrorr   )r   r   r)   r   r   r   test_dtype_error  s    z,TestNanFunctions_MeanVarStd.test_dtype_errorc          	   C   sT   xN| j D ]D}x>tjtjtjgD ]*}tjtjd |d}tt	|td|d qW qW d S )Nr   )r)   r   )r   r$   )
r   r   r   r   r   emptyr   rR   r   r   )r   r   r)   r$   r   r   r   test_out_dtype_error  s    z0TestNanFunctions_MeanVarStd.test_out_dtype_errorc                sn   t jt jg}t jt jg}xPt||D ]B\}x8dD ]0  fddtD }|td d}t|| q2W q$W d S )Nr   r   c                s   g | ]}| d qS ))r   r   )r.   r/   )r   r    r   r   r0     s    z9TestNanFunctions_MeanVarStd.test_ddof.<locals>.<listcomp>)r   r   )r   r   )	r   r   r   r   r   r   r1   r   r   )r   r   r   r   r!   r"   r   )r   r    r   	test_ddof  s    
z%TestNanFunctions_MeanVarStd.test_ddofc       	         s   t jt jg}t jt jg}dd tD }xt||D ]\}}xtdD ] t z}|j	t
 |jt j  fdd|D }|td d}tt j|| t|rtt|jdk ntt|jdk W d Q R X qDW q2W d S )Nc             S   s   g | ]}t |qS r   )r>   )r.   r/   r   r   r   r0   #  s    zATestNanFunctions_MeanVarStd.test_ddof_too_big.<locals>.<listcomp>r   c                s   g | ]} |kqS r   r   )r.   r/   )r   r   r   r0   )  s    r   )r   r   r   )r   r   r   r   r   r1   r   ranger
   r4   rA   r]   r   r   r   r<   rG   r   r>   log)	r   r   r   Zdsizer   r    r`   r!   r"   r   )r   r   test_ddof_too_big   s    
z-TestNanFunctions_MeanVarStd.test_ddof_too_bigc             C   s   t jt jgd jdd}x| jD ]}xd
D ]}tjdd}tjd tt j	|||dj
  tt|dk tt|d jt tt j	|t j tt|d	k tt|d jt W d Q R X q,W q"W d S )Nr3   r   r   r   T)r4   r5   )r   rN   )Nr   r   )r   r6   r7   r8   r   r9   r:   r;   r   r<   r=   r>   r?   r@   rA   )r   r   r   r   rB   r   r   r   rC   1  s    

z(TestNanFunctions_MeanVarStd.test_allnansc             C   s   t jd}x| jD ]}xld	D ]d}tjddN}tjd tt j|||dj  tt	|dk tt
|d jt W d Q R X qW xVd
D ]N}tjdd8}tjd t|||dt jg  tt	|dk W d Q R X qW qW d S )Nr   r   T)r4   r5   )r   r   )r   r   )r   N)r   )r   r%   r   r9   r:   r;   r   r<   r=   r>   r?   r@   rA   r   )r   r   r   r   rB   r   r   r   rd   ?  s    


"

z&TestNanFunctions_MeanVarStd.test_emptyN)rJ   rK   rL   r   r   r   r   r   r   r   r   r   r   r   r   r   rC   rd   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dS )TestNanFunctions_Medianc             C   s    t j }tj| t|t  d S )N)r   r   r   	nanmedianr   )r   r   r   r   r   r   Q  s    
z%TestNanFunctions_Median.test_mutationc             C   s^  t jd}x@dD ]8}t j||d dd}t j||d dd}t|j|jk qW t jd}t jjdt j|j	d d d f  }|j
t j}t j|t|< t  }|jt t j|d dd}t|j	d t j|ddd}t|j	d t j|ddd}t|j	d t j|ddd}t|j	d t j|ddd}t|j	d t j|ddd}t|j	d W d Q R X d S )Nr   r   r   F)r   r$   overwrite_inputr   r   r   r      T)r   r   rN   )Nr   r   )r   r   r   r   )r   r   )r   r   r   r   )r   r   )r   r   r   r   )r   r   )r   r   r   r   )r   )r   r   r   r   )r   r   rN   r   )r   r   r   r   )r   r   r   )r   r   r   r   )r   r   medianr   r   r   r   r   r6   rR   rn   intpr7   tupler
   r]   rA   r   )r   r   r   r!   r"   r/   rB   r`   r   r   r   r#   W  s.    


$

z%TestNanFunctions_Median.test_keepdimsc             C   s   t jjdd}t j|ddgt jdd}t jd}t j|dd}t j|d|d}t|| t|| t jf }t j|d d}t j|d |d}t|| t|| t j|d|d}t|| t|| d S )Nr   r   rN   r   )r   )r   r$   )r   r   )	r   r   r   insertr7   r%   r   r   r   )r   r   nan_matr&   r!   r"   r   r   r   r'   r  s    






z TestNanFunctions_Median.test_outc             C   s   xdD ]}t jjd|}t jjd|j|jd d}t j|j |< d	|d d df< g }x4|D ],}t jt j| |}|j	t j
|d
d qZW tt j|dd| qW d S )Nr      3   r     r   r   )sizeg      ?T)r   r   )r   )r   r   r   r   r   r   )r   r   Zrandnrandintr   r7   Zravelcompressr<   appendr   r	   r   )r   sr/   rB   r!   xZnonanr   r   r   test_small_large  s    

z(TestNanFunctions_Median.test_small_largec             C   s*   dd t D }tjtdd}t|| d S )Nc             S   s   g | ]}t j|qS r   )r   r   )r.   r/   r   r   r   r0     s    z>TestNanFunctions_Median.test_result_values.<locals>.<listcomp>r   )r   )r1   r   r   r   r   )r   r!   r"   r   r   r   r2     s    z*TestNanFunctions_Median.test_result_valuesc             C   s   t jt jgd jdd}xdD ]}t }|jt tt jt j	||dj
  |d krntt|jdk ntt|jdk tt jt j	t j |d krtt|jdk ntt|jdk W d Q R X q W d S )	Nr3   r   r   r   )r   rN   r   )Nr   r   )r   r6   r7   r8   r
   r4   rA   r   r<   r   r=   r>   r   )r   r   r   r`   r   r   r   rC     s    

z$TestNanFunctions_Median.test_allnansc             C   s   t jd}xnd	D ]f}tjddP}tjd tt jt j||dj  tt	|dk tt
|d jt W d Q R X qW xXd
D ]P}tjdd:}tjd tt j||dt jg  tt	|dk W d Q R X qW d S )Nr   r   T)r4   r5   )r   r   )r   r   )r   N)r   )r   r%   r9   r:   r;   r   r<   r   r=   r>   r?   r@   rA   r   )r   r   r   rB   r   r   r   rd     s    


"

z"TestNanFunctions_Median.test_emptyc             C   s   t tjddk d S )Ng        )r   r   r   )r   r   r   r   rI     s    z#TestNanFunctions_Median.test_scalarc             C   sp   t j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   r   r   r   )r   r   r   r   )r   r   r   r   r   )r   r   )r   r   )r   r   )r   r   r   	AxisErrorr   rc   )r   r/   r   r   r   test_extended_axis_invalid  s    
z2TestNanFunctions_Median.test_extended_axis_invalidc             C   s  t  }|jt xtjtj gD ]}tj|tjgtjtjgg}ttj|dd|tjg ttj|dd|tjg ttj|| tjtjtj|gtjtj|gg}ttj|| ttj|ddtjtj|g ttj|dd| tj||g||gg}ttj|dd| tj|d| dgdtjtjdgdtjtj|ggtj	d	}|dkrttj|ddd
d| dg ttj|d n.ttj|dddd| dg ttj|d ttj|dddd|g x
t
ddD ]}xt
ddD ]}tjtjg| |g|  gd }ttj|| ttj|dd| ttj|ddtjg| |g|   tjtjg| | g|  gd }ttj||  ttj|dd|  ttj|ddtjg| | g|   qW qW q&W W d Q R X d S )Nr   )r   r   r   r3   
   r   r   )r)   g      @g      @g      @g      @g      $@g      "@g      @g      ?rN   iig      $g      "g      r   g      g      )r
   r]   rA   r   infr6   r7   r   r   float32r   )r   r`   r   aijr   r   r   test_float_special  sH    



"$z*TestNanFunctions_Median.test_float_specialN)rJ   rK   rL   r   r#   r'   r   r2   rC   rd   rI   r   r   r   r   r   r   r   O  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 )TestNanFunctions_Percentilec             C   s"   t j }tj|d t|t  d S )N   )r   r   r   nanpercentiler   )r   r   r   r   r   r     s    z)TestNanFunctions_Percentile.test_mutationc             C   sn  t jd}xDdD ]<}t j|d|d dd}t j|d|d dd}t|j|jk qW t jd}t jjdt j|j	d d d f  }|j
t j}t j|t|< t  }|jt t j|dd dd}t|j	d t j|dddd}t|j	d t j|dddd}t|j	d t j|dddd}t|j	d t j|dddd}t|j	d t j|dddd}t|j	d W d Q R X d S )Nr   r   r   F   F)r   r$   r   r   r   r   r   r   Z   T)r   r   rN   )Nr   r   )r   r   r   r   )r   r   )r   r   r   r   )r   r   )r   r   r   r   )r   r   )r   r   r   r   )r   )r   r   r   r   )r   r   rN   r   )r   r   r   r   )r   r   r   )r   r   r   r   )r   r   
percentiler   r   r   r   r   r6   rR   rn   r   r7   r   r
   r]   rA   r   )r   r   r   r!   r"   r/   rB   r`   r   r   r   r#     s2    


$

z)TestNanFunctions_Percentile.test_keepdimsc             C   s   t jjdd}t j|ddgt jdd}t jd}t j|ddd}t j|dd|d}t|| t|| t jf }t j|dd d}t j|dd |d}t|| t|| t j|dd|d}t|| t|| d S )	Nr   r   rN   r   )r   *   )r   r$   )r   r   )	r   r   r   r   r7   r%   r   r   r   )r   r   r   r&   r!   r"   r   r   r   r'     s    






z$TestNanFunctions_Percentile.test_outc             C   sZ   dd t D }tjtddd}t|| tjdd t D }tjtddd}t|| d S )	Nc             S   s   g | ]}t j|d qS )   )r   r   )r.   r/   r   r   r   r0   +  s    zBTestNanFunctions_Percentile.test_result_values.<locals>.<listcomp>r   r   )r   c             S   s   g | ]}t j|dqS )r   b   )r   r   )r   r   )r.   r/   r   r   r   r0   /  s    r   )r   r   )r1   r   r   r   r   Z	transpose)r   r!   r"   r   r   r   r2   *  s    
z.TestNanFunctions_Percentile.test_result_valuesc             C   s   t jt jgd jdd}xdD ]}tjdd}tjd tt jt j	|d|d	j
  |d krttt|dk ntt|dk tt|d jt tt jt j	t jd |d krtt|d
k ntt|dk tt|d jt W d Q R X q W d S )Nr3   r   r   r   T)r4   r5   <   )r   rN   r   )Nr   r   )r   r6   r7   r8   r9   r:   r;   r   r<   r   r=   r>   r?   r@   rA   )r   r   r   rB   r   r   r   rC   3  s    

z(TestNanFunctions_Percentile.test_allnansc             C   s   t jd	}xpd
D ]h}tjddR}tjd tt jt j|d|dj  tt	|dk tt
|d jt W d Q R X qW xZdD ]R}tjdd<}tjd tt j|d|dt jg  tt	|dk W d Q R X qW d S )Nr   r   T)r4   r5   (   )r   r   )r   r   )r   N)r   )r   r%   r9   r:   r;   r   r<   r   r=   r>   r?   r@   rA   r   )r   r   r   rB   r   r   r   rd   F  s    


"

z&TestNanFunctions_Percentile.test_emptyc             C   sH   t tjddd tjd}tj|ddd}t |d ttj| d S )Ng        d      2   r   )r   g      @)r   r   r   r   r   Zisscalar)r   r   rr   r   r   rI   T  s
    

z'TestNanFunctions_Percentile.test_scalarc             C   sz   t j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 d S )Nr   r   r   r   )qr   r   r   r   )r   r   r   r   r   r   )r   r   )r   r   )r   r   )r   r   r   r   r   rc   )r   r/   r   r   r   r   [  s    
z6TestNanFunctions_Percentile.test_extended_axis_invalidc             C   s$  ddg}t jd}t j| }t jd}d|d d dddd d f< |d d d d dd f  d9  < xdD ]}xdD ]}t r}|jtd t j||||d}t j||||d}	t|	j	|j	 t j||||d}t j||||d}	t|	| W d Q R X qtW qjW t jd}
tt j|
|ddj	d d S )Nr   r   r   r   r   r   rN   r   FTzAll-NaN slice encountered)r   r   r   )r   )r   r   )r   r   r   )Nr   r   )FT)r   r   r   r   )r   rN   )rN   r   r   )
r   r   r7   r
   r]   rA   r   r   r   rR   )r   percr   r   Z	large_matr   Zkeepdimr`   rb   Znan_valZmegamatr   r   r   test_multiple_percentilesc  s*    


"





z5TestNanFunctions_Percentile.test_multiple_percentilesN)rJ   rK   rL   r   r#   r'   r2   rC   rd   rI   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 )TestNanFunctions_Quantilec             C   s   t jdjdddjt}t j|d d< tt j|ddt j|d	d tt j|ddd
t j|d	dd
 tt j|ddd
t j|d	dd
 tt j|dgdd
t j|d	gdd
 tt j|dddgdd
t j|dd	dgdd
 d S )N   rN   r   r   r   r   g      ?)r   r   )r   r   g      ?g      ?   K   )	r   r   r8   rn   floatr7   r   nanquantiler   )r   arr   r   r   test_regression  s    z)TestNanFunctions_Quantile.test_regressionc             C   sH   t jdd }tt j|dd tt j|dd tt j|dd d S )N   g      ?r   g        r   g      @g      ?)r   r   r   r   )r   r   r   r   r   
test_basic  s    z$TestNanFunctions_Quantile.test_basicc             C   sp   t jdddddg}|j }t jt jd|dd t|| |j }|j }t jt jd|dd t|| d S )	Nr   g      ?g      ?g      ?g      ?g      Y@Zmidpoint)interpolation)r   r6   r   r   r   r	   tolist)r   Zp0pr   r   r   test_no_p_overwrite  s    
z-TestNanFunctions_Quantile.test_no_p_overwriteN)rJ   rK   rL   r   r   r   r   r   r   r   r   ~  s   r   zarr, expectedg      @FTr   r   r   r3   )r)   c             C   sT   xNd t j| jt jdgD ]4}t| |d}t|| t|t jk	r|dkstqW d S )N)r)   )r$   T)	r   r   rR   r   r   r   r*   rO   AssertionError)rW   expectedr$   actualr   r   r   test__nan_mask  s
    
r   c              C   s   xPt jt jt jgD ]<} t jddg| d}t|d\}}|dksBt||kstqW xt jt jgD ]} t jddg| d}t|d\}}|dkj	 st||k	stt
|| t jddt jg| d}t|d\}}t
|t jdddg ||k	stt
|t jdddg t j|d s`tq`W dS )	z] Test that _replace_nan returns the original array if there are no
    NaNs, not a copy.
    r   r   )r)   NrN   FTr   )r   boolr   r   r6   r   r   r   Zfloat64r=   r   r7   r<   )r)   rW   resultmaskZarr_nanZ
result_nanZmask_nanr   r   r   test__replace_nan  s"    
r   gg:Mgg:Mgg:Mgg:M)&r9   ZpytestZnumpyr   Znumpy.lib.nanfunctionsr   r   Znumpy.testingr   r   r   r   r   r	   r
   r6   r7   r   r1   r   r   r   r\   rg   r   r   r   r   r   r   r   markZparametrizer   r   Z	complex64r   r   r   r   r   r   <module>   sZ   $ >Ki"GH % #
