a
    Ib/                     @   s  d dl Z 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 edejddejdgdd	ejd
ddgejejejdejdgdejejddejggZeg deg deddgeg dgZeg dg dg dg dgZeg dg dg dg dgZG dd dZG dd  d ZG d!d" d"Zed#eg d$d%Ze D ]Zejd&d' qjejd(ejd) ejd*  d+ ejjd,e e d-G d.d/ d/Z G d0d1 d1Z!G d2d3 d3e!Z"G d4d5 d5e!Z#G d6d7 d7e!Z$d8Z%e&ejd* Z'e'd9d: e%D 7 Z'G d;d< d<Z(G d=d> d>Z)G d?d@ d@Z*ejdAeejdBejej+geg dCfejg dDej,dEdFfeg dCdFfejejdBgejej+ggej-dEed&dFgd&dFggfgdGdH Z.dIdJ Z/dS )K    N)	_nan_mask_replace_nan)assert_assert_equalassert_almost_equalassert_raisesassert_array_equalsuppress_warningss?&S:??ʡE?	?绸zG?L
F%u?6<R!?[B>٬?:MS㥛?z):?	h"?)r
   r   r   r   )r   r   r   r   r   )r   r   r   )r
         ?r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r
           r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   c                   @   s   e Zd Zejejejejejej	ej
ejejejejejejejejejejejejejejejejejejejejejiZ dd e D Z!e"dddZ#e$j%j&de ' e!ddd	 Z(d
d Z)dS )TestSignatureMatchc                 C   s   g | ]
}|j qS  __name__).0kr   r   ^/var/www/html/barcode/barcode/lib/python3.9/site-packages/numpy/lib/tests/test_nanfunctions.py
<listcomp>8       zTestSignatureMatch.<listcomp>...c                 C   sT   g }t | }|j D ]0}|jt jju r6|| q||j|d qt 	|S )z?Construct a signature and replace all default parameter-values.)default)
inspect	signature
parametersvaluesr$   	Parameteremptyappendreplace	Signature)funcr$   Zprm_listr&   Zprmr   r   r    get_signature:   s    
z TestSignatureMatch.get_signatureznan_func,funcidsc                 C   s&   |  |}|  |}tj|| d S N)r/   nptestingr   )selfZnan_funcr.   r&   Znan_signaturer   r   r    test_signature_matchF   s    

z'TestSignatureMatch.test_signature_matchc                 C   s"   t jt| jtt jjj dS )z4Validate that all nan functions are actually tested.N)r3   r4   r   setIDSlibZnanfunctions__all__r5   r   r   r    test_exhaustivenessO   s    z&TestSignatureMatch.test_exhaustivenessN)r#   )*r   
__module____qualname__r3   nanminZaminnanmaxZamax	nanargminargmin	nanargmaxargmaxnansumsumnanprodprod	nancumsumcumsum
nancumprodcumprodnanmeanmean	nanmedianmediannanpercentile
percentilenanquantilequantilenanvarvarnanstdstdZNANFUNCSr8   staticmethodr/   pytestmarkparametrizeitemsr6   r<   r   r   r   r    r   '   s*   
r   c                	   @   s   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ejdg dejdejd ejjdeejedejgddgddd Zdd Zdd Zdd Zdd Zejdejd dd Zejdejd d d! Zd"S )#TestNanFunctions_MinMaxc                 C   s*   t  }| jD ]}|| t|t  qd S r2   _ndatcopynanfuncsr   r5   ndatfr   r   r    test_mutation[   s    
z%TestNanFunctions_MinMax.test_mutationc                 C   s\   t d}t| j| jD ]>\}}dD ]0}|||dd}|||dd}t|j|jk q$qd S N   Nr      Taxiskeepdimsr3   eyeziprb   stdfuncsr   ndimr5   matnfrfrl   tgtresr   r   r    test_keepdimsb   s    
z%TestNanFunctions_MinMax.test_keepdimsc                 C   s^   t d}t| j| jD ]@\}}t d}||dd}||d|d}t|| t|| qd S Nrh   rj   rl   rl   outr3   ro   rp   rb   rq   zerosr   r5   rt   ru   rv   resoutrw   rx   r   r   r    test_outj   s    


z TestNanFunctions_MinMax.test_outc                 C   s   d}t | j| jD ]x\}}|D ]j}tjd|d}||ddjj}||ddjj}t||u  ||d djj}||d djj}t||u  qqd S )NefdgFDGrh   dtyperj   r{   rp   rb   rq   r3   ro   r   typer   r5   codesru   rv   crt   rw   rx   r   r   r    test_dtype_from_inputs   s    z-TestNanFunctions_MinMax.test_dtype_from_inputc                    sD   t | j| jD ]0\}  fddtD }|tdd}t|| qd S )Nc                    s   g | ]} |qS r   r   r   drv   r   r    r!      r"   z>TestNanFunctions_MinMax.test_result_values.<locals>.<listcomp>rj   r{   rp   rb   rq   _rdatr`   r   r5   ru   rw   rx   r   r   r    test_result_values   s    z*TestNanFunctions_MinMax.test_result_valuesrl   ri   r   AllFloatarrayrh   rh   0d2dr0   c              	   C   s   |d ur|j dkrtd ||}d}| jD ]`}tjt|d |||d}W d    n1 sd0    Y  t|	 sJ |j
|j
ks0J q0d S Nr   *`axis != None` not supported for 0d arraysAll-NaN slice encounteredmatchr{   )rr   rZ   skipastyperb   warnsRuntimeWarningr3   isnanallr   r5   rl   r   r   r   r.   r}   r   r   r    test_allnans   s    


*z$TestNanFunctions_MinMax.test_allnansc                 C   sj   t jt}|j }t jfD ]F}||dd}|tdd}t|| t|j| tt 	|
   qd S )Nrj   r{   )r3   maZfix_invalidr`   Z_maskra   r?   r   r   isinfany)r5   rt   Zmskre   rx   rw   r   r   r    test_masked   s    

z#TestNanFunctions_MinMax.test_maskedc                 C   s    | j D ]}t|ddk qd S Nr   rb   r   r5   re   r   r   r    test_scalar   s    
z#TestNanFunctions_MinMax.test_scalarc              	   C   sB  G dd dt j}t d|}| jD ]j}||dd}tt|| t|jdk ||dd}tt|| t|jdk ||}t|jdk q(t j|d< | jD ]}t	j
d	d
Z}t	d ||dd}tt|| tt t |  tt|dk W d    n1 s0    Y  t	j
d	d
}t	d ||dd}tt|| tt |d ot |d  ot |d   tt|dkd tt|d jt W d    n1 s0    Y  t	j
d	d
N}t	d ||}t|jdk t|t jk tt|dk W d    q1 s20    Y  qd S )Nc                   @   s   e Zd ZdS )z8TestNanFunctions_MinMax.test_subclass.<locals>.MyNDArrayNr   r=   r>   r   r   r   r    	MyNDArray   s   r   rh   r   r{   rh   rj   r   Trecordalways   no warning raised)r3   ndarrayro   viewrb   r   
isinstanceshapenanwarningscatch_warningssimplefilterr   r   len
issubclasscategoryr   )r5   r   minere   rx   wr   r   r    test_subclass   sD    


0
$4
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 |d tt j|ddddg tjdd`}td	 tt	t j|d
dddt jg t
t|d
kd t
t|d jt W d    n1 s0    Y  d S )Nr   g       @      @r   r   r{   Tr   r   rj   r   )r3   r   r   objectr   r?   r   r   r   listr   r   r   r   r   )r5   arrr   r   r   r    test_object_array   s    &
 z)TestNanFunctions_MinMax.test_object_arrayc                 C   s   G dd dt j}t d|}t j|d d< | jD ]h}|t ju rHdnd}|||d}|j|ksfJ ||ksrJ ||||d}|j|ksJ ||ks6J q6d S )Nc                   @   s   e Zd ZdS )z7TestNanFunctions_MinMax.test_initial.<locals>.MyNDArrayNr   r   r   r   r    r      s   r   	      d   r   initial)	r3   r   aranger   r   rb   r@   r   r   )r5   r   r   arre   r   ret1ret2r   r   r    test_initial   s    
z$TestNanFunctions_MinMax.test_initialc           	      C   s   G dd dt j}t ddd|}t j|dd d f< t j|t jd}d|d d df< | jD ]l}|t j	u rtdnd	}|||d
d}|j
|ksJ ||ksJ ||||d
d}|j
|ksJ ||ksbJ qbd S )Nc                   @   s   e Zd ZdS )z5TestNanFunctions_MinMax.test_where.<locals>.MyNDArrayNr   r   r   r   r    r      s   r   r   rh   r   r   F      r   wherer   )r3   r   r   reshaper   r   	ones_likebool_rb   r?   r   r   )	r5   r   r   r   r   re   	referencer   r   r   r   r    
test_where   s    
z"TestNanFunctions_MinMax.test_whereN)r   r=   r>   r3   r?   r@   rb   minmaxrq   rf   ry   r   r   r   rZ   r[   r\   	typecodesr   r   fullr   r   r   r   r   r   r   r   r   r   r    r^   V   s0   	

+
r^   c                	   @   s   e Zd ZejejgZdd Zdd Ze	j
dg de	j
dejd e	j
jd	eejed
ejgddgddd Zdd Zdd Zdd Ze	j
dejd dd Ze	j
dejd dd ZdS )TestNanFunctions_ArgminArgmaxc                 C   s*   t  }| jD ]}|| t|t  qd S r2   r_   rc   r   r   r    rf   
  s    
z+TestNanFunctions_ArgminArgmax.test_mutationc              
   C   s   t | jtjtjgD ]\}}tD ]}t n}|td ||}|| }t	t
|  t	|||   t	t||d |    W d    q 1 s0    Y  q qd S )Nzinvalid value encountered in)rp   rb   r3   ZgreaterZlessr`   r	   filterr   r   r   r   equal)r5   re   Zfcmprowsupindvalr   r   r    r     s    z0TestNanFunctions_ArgminArgmax.test_result_valuesrl   ri   r   r   r   r   r   r   r0   c              	   C   sp   |d ur|j dkrtd ||}| jD ]>}tjtdd |||d W d    q,1 s`0    Y  q,d S r   )rr   rZ   r   r   rb   Zraises
ValueError)r5   rl   r   r   r.   r   r   r    r     s    


z*TestNanFunctions_ArgminArgmax.test_allnansc                 C   sZ   t d}| jD ]D}dD ]}tt|||d qdD ] }|||d}t|t d q2qd S )Nr   rh   r   Nr{   rj   r   )r3   r   rb   r   r   r   )r5   rt   re   rl   rx   r   r   r    
test_empty-  s    

z(TestNanFunctions_ArgminArgmax.test_emptyc                 C   s    | j D ]}t|ddk qd S r   r   r   r   r   r    r   6  s    
z)TestNanFunctions_ArgminArgmax.test_scalarc                 C   s   G dd dt j}t d|}| jD ]j}||dd}tt|| t|jdk ||dd}tt|| t|jdk ||}t|jdk q(d S )	Nc                   @   s   e Zd ZdS )z>TestNanFunctions_ArgminArgmax.test_subclass.<locals>.MyNDArrayNr   r   r   r   r    r   ;  s   r   rh   r   r{   r   rj   r   )r3   r   ro   r   rb   r   r   r   )r5   r   r   re   rx   r   r   r    r   :  s    
z+TestNanFunctions_ArgminArgmax.test_subclassc                 C   sh   t d|}t j|d d< | jD ]>}|t ju r6dnd}||dd}|j|jksVJ ||ks$J q$d S )Nr   r   r   T)rm   )r3   r   r   r   rb   rA   rr   r5   r   r   re   r   retr   r   r    ry   K  s    
z+TestNanFunctions_ArgminArgmax.test_keepdimsc                 C   st   t d|}t j|d d< | jD ]J}t jdt jd}|t ju rFdnd}|||d}||u sbJ ||ks$J q$d S )Nr   r   r   r   r   r}   )r3   r   r   r   rb   r   intprA   )r5   r   r   re   r}   r   r   r   r   r    r   V  s    
z&TestNanFunctions_ArgminArgmax.test_outN)r   r=   r>   r3   rA   rC   rb   rf   r   rZ   r[   r\   r   r   r   r   r   r   r   r   ry   r   r   r   r   r    r     s&   
		

r   r   )   '   ]   W   .   )r   Z1dF)writer   Z
AllIntegerr   Ort   r0   c                   @   s  e Zd Zejejejejejej	ej
ejejejejejejejejejejejejejejejejejiZdd eD Zejj de! edej"dddd Z#ejj dej$ej%fej&ej'fgd	d
gddd Z(ejj dejejfejejfgddgddd Z)dS )TestNanFunctions_NumberTypesc                 C   s   g | ]
}|j qS r   r   )r   ir   r   r    r!     r"   z'TestNanFunctions_NumberTypes.<listcomp>znanfunc,funcr0   ignore)Zoverc                 C   sV   | |}||}||}t|| |dkrBt|t|u sRJ n|j|jksRJ d S )Nr   r   r   r   r   r5   rt   r   Znanfuncr.   rw   r}   r   r   r    test_nanfunc  s    

z)TestNanFunctions_NumberTypes.test_nanfuncrS   rQ   c                 C   s^   | |}||dd}||dd}t|| |dkrJt|t|u sZJ n|j|jksZJ d S )Nrj   qr   r   r   r   r   r    test_nanfunc_q  s    

z+TestNanFunctions_NumberTypes.test_nanfunc_qrU   rW   c                 C   s^   | |}||dd}||dd}t|| |dkrJt|t|u sZJ n|j|jksZJ d S )N      ?ddofr   r   r   r   r   r    test_nanfunc_ddof  s    

z.TestNanFunctions_NumberTypes.test_nanfunc_ddofN)*r   r=   r>   r3   r?   r   r@   r   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rU   rV   rW   rX   rb   Znanfunc_idsrZ   r[   r\   r]   Zerrstater   rS   rT   rQ   rR   r   r  r   r   r   r    r   l  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 )SharedNanFunctionsTestsMixinc                 C   s*   t  }| jD ]}|| t|t  qd S r2   r_   rc   r   r   r    rf     s    
z*SharedNanFunctionsTestsMixin.test_mutationc                 C   s\   t d}t| j| jD ]>\}}dD ]0}|||dd}|||dd}t|j|jk q$qd S rg   rn   rs   r   r   r    ry     s    
z*SharedNanFunctionsTestsMixin.test_keepdimsc                 C   s^   t d}t| j| jD ]@\}}t d}||dd}||d|d}t|| t|| qd S rz   r~   r   r   r   r    r     s    


z%SharedNanFunctionsTestsMixin.test_outc           	   
   C   s   t d}d}t| j| jD ]\}}|D ]}t }|t jt jhv rX|dv rX|t j	 ||t 
|ddj
j}||t 
|ddj
j}t||u  ||t 
|d dj
j}||t 
|d dj
j}t||u  W d    q(1 s0    Y  q(qd S Nrh   r   ZFDGrj   )r   rl   r3   ro   rp   rb   rq   r	   rW   rU   r   ComplexWarningr   r   r   	r5   rt   r   ru   rv   r   r   rw   rx   r   r   r    test_dtype_from_dtype  s    
z2SharedNanFunctionsTestsMixin.test_dtype_from_dtypec           	   
   C   s   t d}d}t| j| jD ]\}}|D ]}t }|t jt jhv rX|dv rX|t j	 |||ddj
j}|||ddj
j}t||u  |||d dj
j}|||d dj
j}t||u  W d    q(1 s0    Y  q(qd S r  r  r  r   r   r    test_dtype_from_char  s    
z1SharedNanFunctionsTestsMixin.test_dtype_from_charc                 C   s   d}t | j| jD ]\}}|D ]t}tjd|d}||ddjj}||ddjj}t||u d||f  ||d djj}||d djj}t||u  qqd S )Nr   rh   r   rj   r{   zres %s, tgt %sr   r   r   r   r    r     s    z2SharedNanFunctionsTestsMixin.test_dtype_from_inputc                    sD   t | j| jD ]0\}  fddtD }|tdd}t|| qd S )Nc                    s   g | ]} |qS r   r   r   r   r   r    r!     r"   zCSharedNanFunctionsTestsMixin.test_result_values.<locals>.<listcomp>rj   r{   r   r   r   r   r    r     s    z/SharedNanFunctionsTestsMixin.test_result_valuesc                 C   s    | j D ]}t|ddk qd S r   r   r   r   r   r    r     s    
z(SharedNanFunctionsTestsMixin.test_scalarc                 C   s   G dd dt j}t d}||}| 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,d S )Nc                   @   s   e Zd ZdS )z=SharedNanFunctionsTestsMixin.test_subclass.<locals>.MyNDArrayNr   r   r   r   r    r     s   r   rh   r   r{   rj   )r3   r   ro   r   rb   r   r   r   )r5   r   r   r   re   Zexpected_shaperx   r   r   r    r     s     



z*SharedNanFunctionsTestsMixin.test_subclassN)r   r=   r>   rf   ry   r   r  r	  r   r   r   r   r   r   r   r    r    s   	r  c                	   @   s   e Zd ZejejgZejejgZ	e
jdg de
jdejd e
jjdeejedejgddgd	d
d Zdd Ze
jdejd dd Ze
jdejd dd ZdS )TestNanFunctions_SumProdrl   ri   r   r   r   r   r   r   r0   c                 C   sr   |d ur|j dkrtd ||}t| jddgD ]6\}}|||d}t||ks\J |j|jks6J q6d S )Nr   r   rj   r{   	rr   rZ   r   r   rp   rb   r3   r   r   r5   rl   r   r   r.   identityr}   r   r   r    r     s    

z%TestNanFunctions_SumProd.test_allnansc                 C   s   t tjtjgddgD ]f\}}td}|gd }||dd}t|| g }||dd}t|| |}||d d}t|| qd S )Nr   rj   r   rh   r{   )rp   r3   rE   rG   r   r   r5   re   Z	tgt_valuert   rw   rx   r   r   r    r   .  s    



z#TestNanFunctions_SumProd.test_emptyc                 C   sf   t d|}t j|d d< | jD ]<}|t ju r6dnd}||dd}|j|ksTJ ||ks$J q$d S )Nr   r      i   r   r   )r3   r   r   r   rb   rE   r   r   r   r   r    r   ;  s    
z%TestNanFunctions_SumProd.test_initialc                 C   s   t ddd|}t j|dd d f< t j|t jd}d|d d df< | jD ]>}|t ju rbdnd}|||dd	}|j	|ksJ ||ksPJ qPd S )
Nr   rh   r   r   F   i  r   r   )
r3   r   r   r   r   r   r   rb   rE   r   )r5   r   r   r   re   r   r   r   r   r    r   F  s    
z#TestNanFunctions_SumProd.test_whereN)r   r=   r>   r3   rE   rG   rb   rF   rH   rq   rZ   r[   r\   r   r   r   r   r   r   r   r   r   r   r   r    r
    s    



r
  c                	   @   s   e Zd ZejejgZejejgZ	e
jdg de
jdejd e
jjdeejedejgddgd	d
d Zdd Zdd Zdd Zdd ZdS )TestNanFunctions_CumSumProdrl   ri   r   r   r   r   r   r   r0   c                 C   sn   |d ur|j dkrtd ||}t| jddgD ]2\}}||}t||ksXJ |j|jks6J q6d S )Nr   r   rj   r  r  r   r   r    r   Y  s    

z(TestNanFunctions_CumSumProd.test_allnansc                 C   s   t | jddgD ]p\}}td}|td }||dd}t|| |}||dd}t|| td}||d d}t|| qd S )Nr   rj   r   r{   )rp   rb   r3   r   onesr   r  r   r   r    r   i  s    



z&TestNanFunctions_CumSumProd.test_emptyc           	      C   s   t | j| jD ]H\}}td}dD ]0}|||d d}|||d d}t|j|jk q$q| jD ]p}td}tj	d}tj
||j|j dk < ||d d}t|jd td	D ]}|||d}t|jd qq^d S )
Nrh   ri   r|   rh   r         r   r   r{   )i  r   )rp   rb   rq   r3   ro   r   rr   r  randomZRandomStater   randr   r   r   )	r5   re   grt   rl   rw   rx   r   rsr   r   r    ry   v  s    


z)TestNanFunctions_CumSumProd.test_keepdimsc                 C   sZ   dD ]P}t jt|d}t jt|d}t|| t jt|d}t jt|d}t|| qd S )N)r   rj   Nr{   )	r3   rL   
_ndat_onesrK   r`   r   rJ   _ndat_zerosrI   )r5   rl   rw   rx   r   r   r    r     s    
z.TestNanFunctions_CumSumProd.test_result_valuesc                 C   sh   t d}t| j| jD ]J\}}t d}dD ]2}|||d}||||d}t|| t|| q.qd S )Nrh   )r  r  r   rj   r{   r|   )r3   ro   rp   rb   rq   r   )r5   rt   ru   rv   r   rl   rw   rx   r   r   r    r     s    


z$TestNanFunctions_CumSumProd.test_outN)r   r=   r>   r3   rI   rK   rb   rJ   rL   rq   rZ   r[   r\   r   r   r   r   r   r   ry   r   r   r   r   r   r    r  T  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ejd	g d
ejdejd ejjdeejedejgddgddd Zdd Zejdejd dd ZdS )TestNanFunctions_MeanVarStdc              	   C   s8   | j D ],}tjtjtjfD ]}tt|td|d qqd S )Nrj   )rl   r   )rb   r3   r   int_object_r   	TypeErrorr`   )r5   re   r   r   r   r    test_dtype_error  s    
z,TestNanFunctions_MeanVarStd.test_dtype_errorc              	   C   sL   | j D ]@}tjtjtjfD ]*}tjtjd |d}tt	|td|d qqd S )Nr   r   rj   r|   )
rb   r3   r   r  r   r*   r`   r   r   r!  )r5   re   r   r}   r   r   r    test_out_dtype_error  s    
z0TestNanFunctions_MeanVarStd.test_out_dtype_errorc                    sf   t jt jg}t jt jg}t||D ]>\}dD ]0  fddtD }|td d}t|| q.q"d S )Nr   rj   c                    s   g | ]}| d qS )r   r   r   r  rv   r   r    r!     r"   z9TestNanFunctions_MeanVarStd.test_ddof.<locals>.<listcomp>rj   rl   r  )	r3   rU   rW   rV   rX   rp   r   r`   r   )r5   rb   rq   ru   rw   rx   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 }t||D ]\}}tdD ] t }|	t
 |t j  fdd|D }|td d}tt || t|rtt|jdk ntt|jdk W d    q@1 s0    Y  q@q0d S )Nc                 S   s   g | ]}t |qS r   )r   r   r   r   r    r!     r"   zATestNanFunctions_MeanVarStd.test_ddof_too_big.<locals>.<listcomp>r   c                    s   g | ]} |kqS r   r   r   r   r   r    r!     r"   rj   r&  r   )r3   rU   rW   rV   rX   r   rp   ranger	   r   r   r   r  r`   r   r   r   r   r   log)	r5   rb   rq   Zdsizeru   rv   r   rw   rx   r   r   r    test_ddof_too_big  s    
z-TestNanFunctions_MeanVarStd.test_ddof_too_bigrl   ri   r   r   r   r   r   r   r0   c              	   C   s   |d ur|j dkrtd ||}d}| jD ]}tjt|d |||d}W d    n1 sd0    Y  t|	 sJ |tj
u r|j|jksJ q0|jt|jks0J q0d S )Nr   r   z:(Degrees of freedom <= 0 for slice.)|(Mean of empty slice)r   r{   )rr   rZ   r   r   rb   r   r   r3   r   r   rM   r   absr   r   r   r    r     s    


*
z(TestNanFunctions_MeanVarStd.test_allnansc              
   C   s   t d}| jD ]}dD ]x}tjddX}td tt |||d  tt	|dk tt
|d jt W d    q1 s0    Y  qd	D ]b}tjddB}td t|||dt g  tt	|dk W d    q1 s0    Y  qqd S 
Nr   r   Tr   r   r{   rj   r   r   )r3   r   rb   r   r   r   r   r   r   r   r   r   r   r   )r5   rt   re   rl   r   r   r   r    r     s    


4
z&TestNanFunctions_MeanVarStd.test_emptyc           	      C   s   t ddd|}t j|dd d f< t j|t jd}d|d d df< t| j| j	D ]Z\}}||| dd  }|t j
u r|n|jj}|||d}|j|ksJ t j|| qXd S )Nr   rh   r   r   Fr   )r   )r3   r   r   r   r   r   r   rp   rb   rq   rM   realr   r4   Zassert_allclose)	r5   r   r   r   re   Zf_stdr   Zdtype_referencer   r   r   r    r     s    z&TestNanFunctions_MeanVarStd.test_whereN)r   r=   r>   r3   rM   rU   rW   rb   rN   rV   rX   rq   r"  r#  r'  r*  rZ   r[   r\   r   r   r   r   r   r   r   r   r   r   r    r    s$   	
r  )YMWDhmsmsusnsZpsfsasc                 C   s   g | ]}d | dqS )zm8[]r   )r   unitr   r   r    r!     r"   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g dej	
dedd Zdd Zdd Zdd Zdd ZdS )TestNanFunctions_Medianc                 C   s    t  }t| t|t  d S r2   )r`   ra   r3   rO   r   r5   rd   r   r   r    rf   	  s    
z%TestNanFunctions_Median.test_mutationc                 C   sn  t d}dD ]8}t j||d dd}t j||d dd}t|j|jk qt d}t jdt |j	d d d f  }|
t j}t j|t|< t }|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    n1 s`0    Y  d S )Nrh   ri   Frl   r}   overwrite_inputr  r      Trk   rj   rj   rj   rj   r$  rj   rj   r  r  r   rj   r   r  rj   r   rh   rj   r  r  r   rj   r   rh   r   rj   rh   rj   rj   r  rj   )r3   ro   rP   rO   r   rr   r  r  r   r   r   r   r   tupler	   r   r   r   r5   rt   rl   rw   rx   r   r   r   r   r   r    ry     s.    

$
z%TestNanFunctions_Median.test_keepdimsc                 C   s   t jdd}t j|ddgt jdd}t d}t j|dd}t j|d|d}t|| t|| t d}t j|d d}t j|d |d}t|| t|| t j|d|d}t|| t|| d S )	Nrh   r   r   rj   r{   r|   r   r$  )	r3   r  r  insertr   r   rP   rO   r   r5   rt   nan_matr   rw   rx   r   r   r    r   *  s    






z TestNanFunctions_Median.test_outc                 C   s   dD ]}t jd|}t jjd|j|jd d}t j| |< d|d d df< g }|D ],}t t | |}|	t j
|dd qVtt j|d	d
| qd S )N)r      3   rA  i  r   r   r   )sizer   T)r?  r  r{   )r3   r  ZrandnrandintrP  r   Zravelcompressr   r+   rP   r   rO   )r5   r4  r   r   rw   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 |qS r   )r3   rP   r   r   r   r    r!   M  r"   z>TestNanFunctions_Median.test_result_values.<locals>.<listcomp>rj   r{   )r   r3   rO   r`   r   r5   rw   rx   r   r   r    r   L  s    z*TestNanFunctions_Median.test_result_valuesrl   ri   r   c                 C   s  t dt j|}t }|t t j||d}|j|jksDJ t 	|
 sVJ |d u rrtt|jdk ntt|jdk t t j|d }t |}|j|jksJ t 	|sJ |d u rtt|jdk ntt|jdk W d    n1 s0    Y  d S )Nr   r{   rj   rh   r   r   r   )r3   r   r   r   r	   r   r   rO   r   r   r   r   r   r)  r   )r5   r   rl   rt   r   outputZscalarZoutput_scalarr   r   r    r   Q  s     

z$TestNanFunctions_Median.test_allnansc              	   C   s   t d}dD ]z}tjddZ}td tt t j||d  tt	|dk tt
|d jt W d    q1 s~0    Y  qd	D ]d}tjddD}td tt j||dt g  tt	|dk W d    q1 s0    Y  qd S r,  )r3   r   r   r   r   r   r   rO   r   r   r   r   r   r   r5   rt   rl   r   r   r   r    r   l  s    

4
z"TestNanFunctions_Median.test_emptyc                 C   s   t tddk d S r   )r   r3   rO   r;   r   r   r    r   z  s    z#TestNanFunctions_Median.test_scalarc                 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  r{   r   rX  r   r   r   rj   rj   )r3   r  r   	AxisErrorrO   r   r5   r   r   r   r    test_extended_axis_invalid}  s    
z2TestNanFunctions_Median.test_extended_axis_invalidc              	   C   s  t  }|t tjtj fD ]}t|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|| ttjtj|gtjtj|gg}tt|| ttj|ddtjtj|g ttj|dd| t||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|d n.ttj|dddd| dg tt|d ttj|dddd|g t
ddD ]}t
ddD ]}ttjg| |g|  gd }tt|| ttj|dd| ttj|ddtjg| |g|   ttjg| | g|  gd }tt||  ttj|dd|  ttj|ddtjg| | g|   qqq"W d    n1 s0    Y  d S )Nr   r{   rj   r  iir   r   r   r   g      @      @g      @g      $g      "g      r  g      
   r   )r	   r   r   r3   infr   r   r   rO   float32r(  )r5   r   ra  ar   jr   r   r    test_float_special  sR    


"$z*TestNanFunctions_Median.test_float_specialN)r   r=   r>   rf   ry   r   rT  r   rZ   r[   r\   _TYPE_CODESr   r   r   r^  re  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ej	d	g d
ej	de
jd ejj	de
e
je
de
jgddgddd Zdd Zdd Zdd Zdd ZdS )TestNanFunctions_Percentilec                 C   s"   t  }t|d t|t  d S )N   )r`   ra   r3   rQ   r   r=  r   r   r    rf     s    z)TestNanFunctions_Percentile.test_mutationc                 C   s~  t d}dD ]<}t j|d|d dd}t j|d|d dd}t|j|jk qt d}t jdt |j	d d d f  }|
t j}t j|t|< t }|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    n1 sp0    Y  d S )Nrh   ri   F   Fr>  r  r@  Z   Trk   rB  r$  rC  r   rD  r   rE  rF  rG  rH  )r3   ro   rR   rQ   r   rr   r  r  r   r   r   r   r   rI  r	   r   r   r   rJ  r   r   r    ry     s6    

$
z)TestNanFunctions_Percentile.test_keepdimsc                 C   s   t jdd}t j|ddgt jdd}t d}t j|ddd}t j|dd|d}t|| t|| t d}t j|dd d}t j|dd |d}t|| t|| t j|dd	|d}t|| t|| d S )
Nrh   r   r   rj   r{   *   r|   r   r$  )	r3   r  r  rK  r   r   rR   rQ   r   rL  r   r   r    r     s    






z$TestNanFunctions_Percentile.test_outc                 C   sZ   dd t D }tjtddd}t|| tdd t D }tjtddd}t|| d S )Nc                 S   s   g | ]}t |d qS )r  r3   rR   r   r   r   r    r!     r"   zBTestNanFunctions_Percentile.test_result_values.<locals>.<listcomp>r  rj   r{   c                 S   s   g | ]}t |d qS )r  b   rl  r   r   r   r    r!     r"   rm  )r   r3   rQ   r`   r   Z	transposerU  r   r   r    r     s    
z.TestNanFunctions_Percentile.test_result_valuesrl   ri   r   r   r   r   r   r   r0   c                 C   s   |d ur|j dkrtd ||}tjtdd  tj|d|d}W d    n1 sZ0    Y  t|	 svJ |j
|j
ksJ d S )Nr   r   r   r   <   r{   )rr   rZ   r   r   r   r   r3   rQ   r   r   r   r5   rl   r   r   r}   r   r   r    r     s    

.z(TestNanFunctions_Percentile.test_allnansc              
   C   s   t d}dD ]|}tjdd\}td tt t j|d|d  tt	|dk tt
|d	 jt W d    q1 s0    Y  qd
D ]f}tjddF}td tt j|d|dt g  tt	|d	k W d    q1 s0    Y  qd S )Nr   r   Tr   r   (   r{   rj   r   r   )r3   r   r   r   r   r   r   rQ   r   r   r   r   r   r   rW  r   r   r    r     s    

4
z&TestNanFunctions_Percentile.test_emptyc                 C   sH   t tddd td}tj|ddd}t |d tt| d S )Nr   r      2   r   r{   g      @)r   r3   rQ   r   r   Zisscalar)r5   rc  rr   r   r    r     s
    

z'TestNanFunctions_Percentile.test_scalarc                 C   sz   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 d S )	Nr  r   rX  r   rl   rY  r   rZ  r[  )r3   r  r   r\  rQ   r   r]  r   r   r    r^    s    
z6TestNanFunctions_Percentile.test_extended_axis_invalidc              
   C   s0  ddg}t d}t j| }t d}d|d d dddd d f< |d d d d dd f  d9  < d	D ]}d
D ]}t |}|td t j||||d}t j||||d}	t|	j	|j	 t j||||d}t j||||d}	t|	| W d    qp1 s0    Y  qpqht d}
tt j|
|ddj	d d S )Nrs  r   )r   rh   )rh   r   r   r   r   r   rh   ri   )FTr   rk   )rh   r   r   rr  )rj   r   r{   )r   rh   rr  )
r3   r  r   r	   r   r   rR   rQ   r   r   )r5   percrt   rM  Z	large_matrl   Zkeepdimr   r   Znan_valZmegamatr   r   r    test_multiple_percentiles!  s0    


"


,
z5TestNanFunctions_Percentile.test_multiple_percentilesN)r   r=   r>   rf   ry   r   r   rZ   r[   r\   r3   r   r   r   r   r   r   r   r^  rw  r   r   r   r    rg    s"   	

rg  c                	   @   s~   e Zd Zdd Zdd Zdd Zejdg dejd	e	j
d
 ejjde	e	je	de	jgddgddd ZdS )TestNanFunctions_Quantilec                 C   s   t dddd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|g ddd
t j|g ddd
 d S )N   r   rh   r   r   rj   r   r   rs  ru  )      ?r         ?)   rs  K   )	r3   r   r   r   floatr   r   rS   rQ   )r5   r   r   r   r    test_regression?  s    z)TestNanFunctions_Quantile.test_regressionc                 C   sH   t dd }tt |dd tt |dd tt |dd d S )Nr   r   r   r   rj   g      @g      ?)r3   r   r   rS   )r5   rS  r   r   r    
test_basicM  s    z$TestNanFunctions_Quantile.test_basicc                 C   sj   t g d}| }t jt d|dd t|| | }| }t jt d|dd t|| d S )N)r   r{  rz  r   r   g      Y@Zmidpoint)method)r3   r   ra   rS   r   r   tolist)r5   Zp0pr   r   r    test_no_p_overwriteS  s    
z-TestNanFunctions_Quantile.test_no_p_overwriterl   ri   r   r   r   r   r   r   r0   c                 C   s   |d ur|j dkrtd ||}tjtdd  tj|d|d}W d    n1 sZ0    Y  t|	 svJ |j
|j
ksJ d S )Nr   r   r   r   rj   r{   )rr   rZ   r   r   r   r   r3   rS   r   r   r   rp  r   r   r    r   _  s    

.z&TestNanFunctions_Quantile.test_allnansN)r   r=   r>   r  r  r  rZ   r[   r\   r3   r   r   r   r   r   r   r   r   r    rx  <  s   
rx  zarr, expectedr_  )FTFT)rj   r   r  r   r   Tc                 C   sP   d t j| jt jdfD ]4}t| |d}t|| t|t jur|du sJ qd S )Nr   r   T)r3   r*   r   r   r   r   r   r   )r   expectedr}   actualr   r   r    test__nan_masko  s
    
r  c                  C   s  t jt jt jfD ]<} t jddg| d}t|d\}}|du s@J ||u sJ qt jt jfD ]} t jddg| d}t|d\}}|dk sJ ||usJ t	|| t jddt j
g| d}t|d\}}t	|t g d ||usJ t	|t g d t |d	 sZJ qZdS )
z] Test that _replace_nan returns the original array if there are no
    NaNs, not a copy.
    r   rj   r   Nr   F)FFT)r   rj   r   r  )r3   r   int32int64r   r   rb  float64r   r   r   r   )r   r   resultmaskZarr_nanZ
result_nanZmask_nanr   r   r    test__replace_nan  s"    
r  )0r   rZ   r%   numpyr3   Znumpy.lib.nanfunctionsr   r   Znumpy.testingr   r   r   r   r   r	   r   r   r`   r   r  r  r   r^   r   Z_TEST_ARRAYSr(   Z_vZsetflagsr[   r\   r   keysr   r  r
  r  r  Z_TIME_UNITSr   rf  r<  rg  rx  ra  r  Z	complex64r  r  r   r   r   r    <module>   s    

/ 1_?i;Ia . 	3


