o
    0Zc/                     @   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' qe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      g | ]}|j qS  __name__).0kr   r   W/var/www/chikooza/env/lib/python3.10/site-packages/numpy/lib/tests/test_nanfunctions.py
<listcomp>8       zTestSignatureMatch.<listcomp>...c                 C   sT   g }t | }|j D ]}|jt jju r|| 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%   prm_listr'   prmr   r   r!   get_signature:   s   

z TestSignatureMatch.get_signatureznan_func,funcidsc                 C   s&   |  |}|  |}tj|| d S N)r2   nptestingr   )selfnan_funcr/   r'   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)r6   r7   r   setIDSlibnanfunctions__all__r8   r   r   r!   test_exhaustivenessO   s   z&TestSignatureMatch.test_exhaustivenessN)r$   )*r   
__module____qualname__r6   nanminaminnanmaxamax	nanargminargmin	nanargmaxargmaxnansumsumnanprodprod	nancumsumcumsum
nancumprodcumprodnanmeanmean	nanmedianmediannanpercentile
percentilenanquantilequantilenanvarvarnanstdstdNANFUNCSr=   staticmethodr2   pytestmarkparametrizeitemsr;   rB   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   *   t  }| jD ]}|| t|t  qd S r5   _ndatcopynanfuncsr   r8   ndatfr   r   r!   test_mutation[   
   
z%TestNanFunctions_MinMax.test_mutationc                 C   \   t d}t| j| jD ]\}}dD ]}|||dd}|||dd}t|j|jk qqd S N   Nr      Taxiskeepdimsr6   eyeziprl   stdfuncsr   ndimr8   matnfrfrx   tgtresr   r   r!   test_keepdimsb      
z%TestNanFunctions_MinMax.test_keepdimsc                 C   ^   t d}t| j| jD ] \}}t d}||dd}||d|d}t|| t|| qd S Nrt   rv   rx   rx   outr6   r{   r|   rl   r}   zerosr   r8   r   r   r   resoutr   r   r   r   r!   test_outj      


z TestNanFunctions_MinMax.test_outc                 C   s   d}t | j| jD ]<\}}|D ]5}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efdgFDGrt   dtyperv   r   r|   rl   r}   r6   r{   r   typer   r8   codesr   r   cr   r   r   r   r   r!   test_dtype_from_inputs   s   z-TestNanFunctions_MinMax.test_dtype_from_inputc                    D   t | j| jD ]\}  fddtD }|tdd}t|| qd S )Nc                       g | ]} |qS r   r   r   dr   r   r!   r"          z>TestNanFunctions_MinMax.test_result_values.<locals>.<listcomp>rv   r   r|   rl   r}   _rdatrj   r   r8   r   r   r   r   r   r!   test_result_values   
   z*TestNanFunctions_MinMax.test_result_valuesrx   ru   r   AllFloatarrayrt   rt   0d2dr3   c              	   C   s   |d ur|j dkrtd ||}d}| jD ]0}tjt|d |||d}W d    n1 s2w   Y  t|	 s@J |j
|j
ksHJ qd S Nr   *`axis != None` not supported for 0d arraysAll-NaN slice encounteredmatchr   )r~   rc   skipastyperl   warnsRuntimeWarningr6   isnanallr   r8   rx   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 ]#}||dd}|tdd}t|| t|j| tt 	|
   qd S )Nrv   r   )r6   mafix_invalidrj   _maskrk   rE   r   r   isinfany)r8   r   mskro   r   r   r   r   r!   test_masked   s   

z#TestNanFunctions_MinMax.test_maskedc                 C       | j D ]
}t|ddk qd S Nr   rl   r   r8   ro   r   r   r!   test_scalar      
z#TestNanFunctions_MinMax.test_scalarc              	   C   s8  G dd dt j}t d|}| jD ]5}||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
-}t	d ||dd}tt|| tt t |  tt|dk W d    n1 sw   Y  t	j
d	d
F}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 sw   Y  t	j
d	d
'}t	d ||}t|jdk t|t jk tt|dk W d    n	1 sw   Y  qRd S )Nc                   @      e Zd ZdS )z8TestNanFunctions_MinMax.test_subclass.<locals>.MyNDArrayNr   rC   rD   r   r   r   r!   	MyNDArray       r   rt   r   r   rt   rv   r   Trecordalways   no warning raised)r6   ndarrayr{   viewrl   r   
isinstanceshapenanwarningscatch_warningssimplefilterr   r   len
issubclasscategoryr   )r8   r   minero   r   wr   r   r!   test_subclass   sN   




 	
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1}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    d S 1 saw   Y  d S )Nr   g       @      @r   r   r   Tr   r   rv   r   )r6   r   r   objectr   rE   r   r   r   listr   r   r   r   r   )r8   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 ]4}|t ju r$dnd}|||d}|j|ks3J ||ks9J ||||d}|j|ksIJ ||ksOJ qd S )Nc                   @   r   )z7TestNanFunctions_MinMax.test_initial.<locals>.MyNDArrayNr   r   r   r   r!   r      r   r   	      d   r   initial)	r6   r   aranger   r   rl   rG   r   r   )r8   r   r   arro   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 ]6}|t j	u r:dnd	}|||d
d}|j
|ksJJ ||ksPJ ||||d
d}|j
|ksaJ ||ksgJ q1d S )Nc                   @   r   )z5TestNanFunctions_MinMax.test_where.<locals>.MyNDArrayNr   r   r   r   r!   r      r   r   r   rt   r   r   F      r   wherer   )r6   r   r   reshaper   r   	ones_likebool_rl   rE   r   r   )	r8   r   r   r   r   ro   	referencer   r   r   r   r!   
test_where   s   
z"TestNanFunctions_MinMax.test_whereN)r   rC   rD   r6   rE   rG   rl   minmaxr}   rp   r   r   r   r   rc   rd   re   	typecodesr   r   fullr   r   r   r   r   r   r   r   r   r   r!   rg   V   s2    	

+
rg   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   rh   r5   ri   rm   r   r   r!   rp   
  rq   z+TestNanFunctions_ArgminArgmax.test_mutationc              
   C   s   t | jtjtjgD ]K\}}tD ]D}t 7}|td ||}|| }t	t
|  t	|||   t	t||d |    W d    n1 sOw   Y  qq
d S )Nzinvalid value encountered in)r|   rl   r6   greaterlessrj   r	   filterr   r   r   r   equal)r8   ro   fcmprowsupindvalr   r   r!   r     s    z0TestNanFunctions_ArgminArgmax.test_result_valuesrx   ru   r   r   r   r   r   r   r3   c              	   C   sp   |d ur|j dkrtd ||}| jD ]}tjtdd |||d W d    n1 s0w   Y  qd S r   )r~   rc   r   r   rl   raises
ValueError)r8   rx   r   r   r/   r   r   r!   r     s   


z*TestNanFunctions_ArgminArgmax.test_allnansc                 C   sZ   t d}| jD ]"}dD ]
}tt|||d qdD ]}|||d}t|t d qqd S )Nr   rt   r   Nr   rv   r   )r6   r   rl   r   r  r   )r8   r   ro   rx   r   r   r   r!   
test_empty-  s   

z(TestNanFunctions_ArgminArgmax.test_emptyc                 C   r   r   r   r   r   r   r!   r   6  r   z)TestNanFunctions_ArgminArgmax.test_scalarc                 C   s   G dd dt j}t d|}| jD ]5}||dd}tt|| t|jdk ||dd}tt|| t|jdk ||}t|jdk qd S )	Nc                   @   r   )z>TestNanFunctions_ArgminArgmax.test_subclass.<locals>.MyNDArrayNr   r   r   r   r!   r   ;  r   r   rt   r   r   r   rv   r   )r6   r   r{   r   rl   r   r   r   )r8   r   r   ro   r   r   r   r!   r   :  s   
z+TestNanFunctions_ArgminArgmax.test_subclassc                 C   sh   t d|}t j|d d< | jD ]}|t ju rdnd}||dd}|j|jks+J ||ks1J qd S )Nr   r   r   T)ry   )r6   r   r   r   rl   rI   r~   r8   r   r   ro   r   retr   r   r!   r   K  s   
z+TestNanFunctions_ArgminArgmax.test_keepdimsc                 C   st   t d|}t j|d d< | jD ]%}t jdt jd}|t ju r#dnd}|||d}||u s1J ||ks7J qd S )Nr   r   r   r   r   r   )r6   r   r   r   rl   r   intprI   )r8   r   r   ro   r   r   r
  r   r   r!   r   V  s   
z&TestNanFunctions_ArgminArgmax.test_outN)r   rC   rD   r6   rI   rK   rl   rp   r   rc   rd   re   r   r   r   r   r   r  r   r   r   r   r   r   r   r!   r     s(    
		

r   r   )   '   ]   W   .   )r   1dF)writer   
AllIntegerr   Or   r3   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   r   r   r   )r   ir   r   r!   r"     r#   z'TestNanFunctions_NumberTypes.<listcomp>znanfunc,funcr3   ignore)overc                 C   sX   | |}||}||}t|| |dkr"t|t|u s J d S |j|jks*J d S )Nr  r   r   r   r   r8   r   r   nanfuncr/   r   r   r   r   r!   test_nanfunc  s   

z)TestNanFunctions_NumberTypes.test_nanfuncr[   rY   c                 C   `   | |}||dd}||dd}t|| |dkr&t|t|u s$J d S |j|jks.J d S )Nrv   qr  r  r  r   r   r!   test_nanfunc_q     

z+TestNanFunctions_NumberTypes.test_nanfunc_qr]   r_   c                 C   r  )N      ?ddofr  r  r  r   r   r!   test_nanfunc_ddof  r"  z.TestNanFunctions_NumberTypes.test_nanfunc_ddofN)*r   rC   rD   r6   rE   r   rG   r   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   r]   r^   r_   r`   rl   nanfunc_idsrc   rd   re   rf   errstater  r[   r\   rY   rZ   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   rh   r5   ri   rm   r   r   r!   rp     rq   z*SharedNanFunctionsTestsMixin.test_mutationc                 C   rr   rs   rz   r   r   r   r!   r     r   z*SharedNanFunctionsTestsMixin.test_keepdimsc                 C   r   r   r   r   r   r   r!   r     r   z%SharedNanFunctionsTestsMixin.test_outc           	   
   C   s   t d}d}t| j| jD ]j\}}|D ]c}t V}|t jt jhv r,|dv r,|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    n1 srw   Y  qqd S Nrt   r   FDGrv   )r   rx   r6   r{   r|   rl   r}   r	   r_   r]   r   ComplexWarningr   r   r   	r8   r   r   r   r   r   r   r   r   r   r   r!   test_dtype_from_dtype  s"   
z2SharedNanFunctionsTestsMixin.test_dtype_from_dtypec           	   
   C   s   t d}d}t| j| jD ]^\}}|D ]W}t J}|t jt jhv r,|dv r,|t j	 |||ddj
j}|||ddj
j}t||u  |||d dj
j}|||d dj
j}t||u  W d    n1 sfw   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 ]A\}}|D ]:}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   rt   r   rv   r   zres %s, tgt %sr   r   r   r   r!   r     s   z2SharedNanFunctionsTestsMixin.test_dtype_from_inputc                    r   )Nc                    r   r   r   r   r   r   r!   r"     r   zCSharedNanFunctionsTestsMixin.test_result_values.<locals>.<listcomp>rv   r   r   r   r   r   r!   r     r   z/SharedNanFunctionsTestsMixin.test_result_valuesc                 C   r   r   r   r   r   r   r!   r     r   z(SharedNanFunctionsTestsMixin.test_scalarc                 C   s   G dd dt j}t d}||}| jD ]O}||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                   @   r   )z=SharedNanFunctionsTestsMixin.test_subclass.<locals>.MyNDArrayNr   r   r   r   r!   r     r   r   rt   r   r   rv   )r6   r   r{   r   rl   r   r   r   )r8   r   r   r   ro   expected_shaper   r   r   r!   r     s"   



z*SharedNanFunctionsTestsMixin.test_subclassN)r   rC   rD   rp   r   r   r/  r0  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_SumProdrx   ru   r   r   r   r   r   r   r3   c                 C   sr   |d ur|j dkrtd ||}t| jddgD ]\}}|||d}t||ks.J |j|jks6J qd S )Nr   r   rv   r   	r~   rc   r   r   r|   rl   r6   r   r   r8   rx   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 ]3\}}td}|gd }||dd}t|| g }||dd}t|| |}||d d}t|| qd S )Nr   rv   r  rt   r   )r|   r6   rM   rO   r   r   r8   ro   	tgt_valuer   r   r   r   r   r!   r  .  s   



z#TestNanFunctions_SumProd.test_emptyc                 C   sf   t d|}t j|d d< | jD ]}|t ju rdnd}||dd}|j|ks*J ||ks0J qd S )Nr   r      i   r   r   )r6   r   r   r   rl   rM   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 r1dnd}|||dd	}|j	|ksAJ ||ksGJ q(d S )
Nr   rt   r   r   F   i  r   r   )
r6   r   r   r   r   r   r   rl   rM   r   )r8   r   r   r   ro   r   r
  r   r   r!   r   F  s   
z#TestNanFunctions_SumProd.test_whereN)r   rC   rD   r6   rM   rO   rl   rN   rP   r}   rc   rd   re   r   r   r   r   r   r  r   r   r   r   r   r!   r2    s"    



r2  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_CumSumProdrx   ru   r   r   r   r   r   r   r3   c                 C   sn   |d ur|j dkrtd ||}t| jddgD ]\}}||}t||ks,J |j|jks4J qd S )Nr   r   rv   r3  r4  r   r   r!   r   Y  s   

z(TestNanFunctions_CumSumProd.test_allnansc                 C   s   t | jddgD ]8\}}td}|td }||dd}t|| |}||dd}t|| td}||d d}t|| qd S )Nr   rv   r  r   )r|   rl   r6   r   onesr   r6  r   r   r!   r  i  s   



z&TestNanFunctions_CumSumProd.test_emptyc           	      C   s   t | j| jD ]$\}}td}dD ]}|||d d}|||d d}t|j|jk qq| jD ]8}td}tj	d}tj
||j|j dk < ||d d}t|jd td	D ]}|||d}t|jd qXq/d S )
Nrt   ru   r   rt   r         r   r#  r   )i  r   )r|   rl   r}   r6   r{   r   r~   r;  randomRandomStater   randr   r   r   )	r8   ro   gr   rx   r   r   r   rsr   r   r!   r   v  s$   


z)TestNanFunctions_CumSumProd.test_keepdimsc                 C   sZ   dD ](}t jt|d}t jt|d}t|| t jt|d}t jt|d}t|| qd S )N)r   rv   Nr   )	r6   rT   
_ndat_onesrS   rj   r   rR   _ndat_zerosrQ   )r8   rx   r   r   r   r   r!   r     s   
z.TestNanFunctions_CumSumProd.test_result_valuesc                 C   sh   t d}t| j| jD ]%\}}t d}dD ]}|||d}||||d}t|| t|| qqd S )Nrt   )rD  rE  r   rv   r   r   )r6   r{   r|   rl   r}   r   )r8   r   r   r   r   rx   r   r   r   r   r!   r     s   


z$TestNanFunctions_CumSumProd.test_outN)r   rC   rD   r6   rQ   rS   rl   rR   rT   r}   rc   rd   re   r   r   r   r   r   r  r   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 )Nrv   )rx   r   )rl   r6   r   int_object_r   	TypeErrorrj   )r8   ro   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   rv   r   )
rl   r6   r   rI  rJ  r+   rj   r   r   rK  )r8   ro   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 ]  fddtD }|td d}t|| qqd S )Nr   rv   c                    s   g | ]}| d qS )r$  r   r   r%  r   r   r!   r"         z9TestNanFunctions_MeanVarStd.test_ddof.<locals>.<listcomp>rv   rx   r%  )	r6   r]   r_   r^   r`   r|   r   rj   r   )r8   rl   r}   r   r   r   r   rO  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 ]X\}}tdD ]O t B}|	t
 |t j  fdd|D }|td d}tt || t|rWtt|jdk n	tt|jdk W d    n1 sjw   Y  q qd 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   rv   rQ  r   )r6   r]   r_   r^   r`   r   r|   ranger	   r   r   r   r-  rj   r   r   r   r   r   log)	r8   rl   r}   dsizer   r   r   r   r   r   r$  r!   test_ddof_too_big  s&   
z-TestNanFunctions_MeanVarStd.test_ddof_too_bigrx   ru   r   r   r   r   r   r   r3   c              	   C   s   |d ur|j dkrtd ||}d}| jD ]A}tjt|d |||d}W d    n1 s2w   Y  t|	 s@J |tj
u rN|j|jksMJ q|jt|jksYJ qd S )Nr   r   z:(Degrees of freedom <= 0 for slice.)|(Mean of empty slice)r   r   )r~   rc   r   r   rl   r   r   r6   r   r   rU   r   absr   r   r   r!   r     s   



z(TestNanFunctions_MeanVarStd.test_allnansc              
   C   s   t d}| jD ]u}dD ]<}tjdd,}td tt |||d  tt	|dk tt
|d jt W d    n1 sCw   Y  qd	D ]1}tjdd!}td t|||dt g  tt	|dk W d    n1 sww   Y  qKqd S 
Nr  r  Tr   r   r   rv   r   r  )r6   r   rl   r   r   r   r   r   r   r   r   r   r   r   )r8   r   ro   rx   r   r   r   r!   r    s&   



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 ]-\}}||| dd  }|t j
u rA|n|jj}|||d}|j|ksRJ t j|| q,d S )Nr   rt   r   r   Fr   )r   )r6   r   r   r   r   r   r   r|   rl   r}   rU   realr   r7   assert_allclose)	r8   r   r   r   ro   f_stdr   dtype_referencer
  r   r   r!   r     s   z&TestNanFunctions_MeanVarStd.test_whereN)r   rC   rD   r6   rU   r]   r_   rl   rV   r^   r`   r}   rL  rM  rR  rV  rc   rd   re   r   r   r   r   r   r  r   r   r   r   r!   rH    s&    	
rH  )YMWDhmsmsusnspsfsasc                 C   s   g | ]}d | dqS )zm8[]r   )r   unitr   r   r!   r"     rP  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 r5   )rj   rk   r6   rW   r   r8   rn   r   r   r!   rp   	  s   
z%TestNanFunctions_Median.test_mutationc                 C   sn  t d}dD ]}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 b}|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    d S 1 sw   Y  d S )Nrt   ru   Frx   r   overwrite_inputr<  r      Trw   rv   rv   rv   rv   rN  rv   rv   r=  r>  r  rv   r   r=  rv   r  rt   rv   r=  r>  r   rv   r   rt   r   rv   rt   rv   rv   r=  rv   )r6   r{   rX   rW   r   r~   r;  r?  r   r   r   r  r   tupler	   r   r   r   r8   r   rx   r   r   r   r   r   r   r   r!   r     s0   

$
"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 )	Nrt   r   r   rv   r   r   r   rN  )	r6   r?  rA  insertr   r   rX   rW   r   r8   r   nan_matr   r   r   r   r   r!   r   *  s   






z TestNanFunctions_Median.test_outc                 C   s   dD ]J}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 q+tt j|d	d
| qd S )N)r      3   rq  i  r   r   r   )sizer   T)ro  rE  r   )r6   r?  randnrandintr  r   ravelcompressr   r,   rX   r   rW   )r8   rc  r   r   r   x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   )r6   rX   r   r   r   r!   r"   M  s    z>TestNanFunctions_Median.test_result_values.<locals>.<listcomp>rv   r   )r   r6   rW   rj   r   r8   r   r   r   r   r!   r   L  s   z*TestNanFunctions_Median.test_result_valuesrx   ru   r   c                 C   s$  t dt j|}t {}|t t j||d}|j|jks"J t 	|
 s+J |d u r9tt|jdk n	tt|jdk t t j|d }t |}|j|jksZJ t 	|saJ |d u rott|jdk ntt|jdk W d    d S W d    d S 1 sw   Y  d S )Nr   r   rv   rt   r   r   r   )r6   r   r   r   r	   r   r   rW   r   r   r   r   r   rT  r   )r8   r   rx   r   r   outputscalaroutput_scalarr   r   r!   r   Q  s&   

"z$TestNanFunctions_Median.test_allnansc              	   C   s   t d}dD ]=}tjdd-}td tt t j||d  tt	|dk tt
|d jt W d    n1 s?w   Y  qd	D ]2}tjdd"}td tt j||dt g  tt	|dk W d    n1 stw   Y  qGd S rX  )r6   r   r   r   r   r   r   rW   r   r   r   r   r   r   r8   r   rx   r   r   r   r!   r  l  s"   


z"TestNanFunctions_Median.test_emptyc                 C   s   t tddk d S r   )r   r6   rW   rA   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   r  r   r   r   rv   rv   )r6   r;  r   	AxisErrorrW   r  r8   r   r   r   r!   test_extended_axis_invalid}  s   
z2TestNanFunctions_Median.test_extended_axis_invalidc              	   C   s  t  l}|t tjtj fD ]U}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 ]z}t
ddD ]r}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|   qqqW d    d S 1 stw   Y  d S )Nr   r   rv   r=  iir   r   r   r   g      @      @g      @g      $g      "g      rE  g      
   r   )r	   r   r   r6   infr   r   r   rW   float32rS  )r8   r   r  ar  jr   r   r!   test_float_special  sZ   

"$$z*TestNanFunctions_Median.test_float_specialN)r   rC   rD   rp   r   r   r  r   rc   rd   re   _TYPE_CODESr   r  r   r  r  r   r   r   r!   rl    s    rl  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   )rj   rk   r6   rY   r   rm  r   r   r!   rp     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 h}|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    d S 1 sw   Y  d S )Nrt   ru   F   Frn  r<  rp  Z   Trw   rr  rN  rs  r  rt  r  ru  rv  rw  rx  )r6   r{   rZ   rY   r   r~   r;  r?  r   r   r   r  r   ry  r	   r   r   r   rz  r   r   r!   r     s8   

$
"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 )
Nrt   r   r   rv   r   *   r   r   rN  )	r6   r?  rA  r{  r   r   rZ   rY   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dd t D }tjtddd}t|| d S )Nc                 S      g | ]}t |d qS )r8  r6   rZ   r   r   r   r!   r"     rP  zBTestNanFunctions_Percentile.test_result_values.<locals>.<listcomp>r8  rv   r   c                 S   r  )r8  b   r  r   r   r   r!   r"     rP  r  )r   r6   rY   rj   r   	transposer  r   r   r!   r     s   
z.TestNanFunctions_Percentile.test_result_valuesrx   ru   r   r   r   r   r   r   r3   c                 C      |d ur|j dkrtd ||}tjtdd tj|d|d}W d    n1 s-w   Y  t|	 s;J |j
|j
ksCJ d S )Nr   r   r   r   <   r   )r~   rc   r   r   r   r   r6   rY   r   r   r   r8   rx   r   r   r   r   r   r!   r        

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    n1 s@w   Y  qd
D ]3}tjdd#}td tt j|d|dt g  tt	|d	k W d    n1 svw   Y  qHd S )Nr  r  Tr   r   (   r   rv   r   r  )r6   r   r   r   r   r   r   rY   r   r   r   r   r   r   r  r   r   r!   r    s"   


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   r6   rY   r   r   isscalar)r8   r  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   r  r   rx   r  r   r  r  )r6   r;  r   r  rY   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 ]P}d
D ]K}t >}|td t j||||d}t j||||d}	t|	j	|j	 t j||||d}t j||||d}	t|	| W d    n1 s~w   Y  q8q4t d}
tt j|
|ddj	d d S )Nr  r   )r   rt   )rt   r   r   r   r   r   rt   ru   )FTr   rw   )rt   r   r   r  )rv   r   r   )r   rt   r  )
r6   r;  r   r	   r   r   rZ   rY   r   r   )r8   percr   r}  	large_matrx   keepdimr   r  nan_valmegamatr   r   r!   test_multiple_percentiles!  s6   


"



z5TestNanFunctions_Percentile.test_multiple_percentilesN)r   rC   rD   rp   r   r   r   rc   rd   re   r6   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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   rt   r   r   rv   r#  r  r  r  )      ?r#        ?)   r  K   )	r6   r   r   r   floatr   r   r[   rY   )r8   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   rv   g      @g      ?)r6   r   r   r[   )r8   r  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  r  r#  r   g      Y@midpoint)method)r6   r   rk   r[   r   r   tolist)r8   p0pr   r   r!   test_no_p_overwriteS  s   
z-TestNanFunctions_Quantile.test_no_p_overwriterx   ru   r   r   r   r   r   r   r3   c                 C   r  )Nr   r   r   r   rv   r   )r~   rc   r   r   r   r   r6   r[   r   r   r   r  r   r   r!   r   _  r  z&TestNanFunctions_Quantile.test_allnansN)r   rC   rD   r  r  r  rc   rd   re   r6   r   r   r   r   r   r   r   r   r!   r  <  s    
r  zarr, expectedr  )FTFT)rv   r   r=  r   r   Tc                 C   sP   d t j| jt jdfD ]}t| |d}t|| t|t jur%|du s%J qd S )Nr   r  T)r6   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 ]Z} t jddg| d}t|d\}}|dk sGJ ||usMJ t	|| t jddt j
g| d}t|d\}}t	|t g d ||ustJ t	|t g d t |d	 sJ q-dS )
z] Test that _replace_nan returns the original array if there are no
    NaNs, not a copy.
    r   rv   r   Nr   F)FFT)r   rv   r   rE  )r6   r   int32int64r   r   r  float64r   r   r   r   )r   r   resultmaskarr_nan
result_nanmask_nanr   r   r!   test__replace_nan  s$   
r  )0r   rc   r&   numpyr6   numpy.lib.nanfunctionsr   r   numpy.testingr   r   r   r   r   r	   r   r   rj   r   rF  rG  r   rg   r   _TEST_ARRAYSr)   _vsetflagsrd   re   r   keysr  r)  r2  r:  rH  _TIME_UNITSr   r  rl  r  r  r  r  	complex64r  r  r   r   r   r!   <module>   s     

/ 1_?i;Ia . 	3


