o
    Gg                     @   s   d dl Z d dlZd dlZd dlmZ d dlZd dlmZ d dl	m
Z
mZ 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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 ' d0G d1d2 d2Z(G d3d4 d4Z)G d5d6 d6e)Z*G d7d8 d8e)Z+G d9d: d:e)Z,d;Z-e.ej&d- Z/e/d<d= e-D 7 Z/G d>d? d?Z0G d@dA dAZ1G dBdC dCZ2ej$%dDeejdEejej3geg dFfejg dGej4dHdIfeg dFdIfejejdEgejej3ggej5dHed)dIgd)dIggfgdJdK Z6dLdM Z7dS )N    N)partial)normalize_axis_tuple)	AxisErrorComplexWarning)	_nan_mask_replace_nan)assert_assert_equalassert_almost_equalassert_raisesassert_raises_regex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!   bC:\Users\micha\Documents\internet-seite\env\Lib\site-packages\numpy/lib/tests/test_nanfunctions.py
<listcomp>;       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*   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)r5   nptestingr	   )selfZnan_funcr4   r,   Znan_signaturer!   r!   r&   test_signature_matchI   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)r9   r:   r	   setIDSlibZ_nanfunctions_impl__all__r;   r!   r!   r&   test_exhaustivenessR   s   z&TestSignatureMatch.test_exhaustivenessN)r)   )*r#   
__module____qualname__r9   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NANFUNCSr>   staticmethodr5   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 r8   _ndatcopynanfuncsr	   r;   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r9   eyezipri   stdfuncsr   ndimr;   matnfrfru   tgtresr!   r!   r&   test_keepdimse      
z%TestNanFunctions_MinMax.test_keepdimsc                 C   ^   t d}t| j| jD ] \}}t d}||dd}||d|d}t|| t|| qd S Nrq   rs   ru   ru   outr9   rx   ry   ri   rz   zerosr
   r;   r}   r~   r   resoutr   r   r!   r!   r&   test_outm      


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efdgFDGrq   dtypers   r   ry   ri   rz   r9   rx   r   typer   r;   codesr~   r   cr}   r   r   r!   r!   r&   test_dtype_from_inputv   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>rs   r   ry   ri   rz   _rdatrg   r
   r;   r~   r   r   r!   r   r&   test_result_values   
   z*TestNanFunctions_MinMax.test_result_valuesru   rr   r   AllFloatarrayrq   rq   0d2dr6   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{   r`   skipastyperi   warnsRuntimeWarningr9   isnanallr   r;   ru   r   r   r   r4   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 )Nrs   r   )r9   maZfix_invalidrg   Z_maskrh   rE   r	   r   isinfany)r;   r}   Zmskrl   r   r   r!   r!   r&   test_masked   s   

z#TestNanFunctions_MinMax.test_maskedc                 C       | j D ]
}t|ddk qd S Nr   ri   r   r;   rl   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   rq   r   r   rq   rs   r!   Trecordalways   no warning raised)r9   ndarrayrx   viewri   r   
isinstanceshapenanwarningscatch_warningssimplefilterr   r   len
issubclasscategoryr   )r;   r   minerl   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          @      @r   r   r   Tr   r   rs   r   )r9   r   r   objectr	   rE   r   r   r   listr   r   r   r   r   )r;   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)	r9   r   aranger   r   ri   rF   r   r   )r;   r   r   arrl   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   rq   r   r   F      r   wherer   )r9   r   r   reshaper   r   	ones_likeboolri   rE   r   r   )	r;   r   r   r   r   rl   	referencer   r   r!   r!   r&   
test_where   s   
z"TestNanFunctions_MinMax.test_whereN)r#   rC   rD   r9   rE   rF   ri   minmaxrz   rm   r   r   r   r   r`   ra   rb   	typecodesr   r   fullr   r   r   r   r   r   r   r!   r!   r!   r&   rd   Y   s2    	

+
rd   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   re   r8   rf   rj   r!   r!   r&   rm     rn   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)ry   ri   r9   Zgreaterlessrg   r   filterr   r   r   r   equal)r;   rl   Zfcmprowsupindvalr!   r!   r&   r     s    z0TestNanFunctions_ArgminArgmax.test_result_valuesru   rr   r   r   r   r   r   r   r6   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{   r`   r   r   ri   Zraises
ValueError)r;   ru   r   r   r4   r!   r!   r&   r   !  s   


z*TestNanFunctions_ArgminArgmax.test_allnansc              	   C   s\   t d}| jD ]#}dD ]}ttd|||d qdD ]}|||d}t|t d qqd S )Nr   rq   r   Nz*attempt to get argm.. of an empty sequencer   rs   r   )r9   r   ri   r   r   r	   )r;   r}   rl   ru   r   r!   r!   r&   
test_empty0  s   

z(TestNanFunctions_ArgminArgmax.test_emptyc                 C   r   r   r   r   r!   r!   r&   r   <  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   A  r   r   rq   r   r   r   rs   r!   )r9   r   rx   r   ri   r   r   r   )r;   r   r   rl   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)rv   )r9   r   r   r   ri   rG   r{   r;   r   r   rl   r   retr!   r!   r&   r   Q  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   )r9   r   r   r   ri   r   intprG   )r;   r   r   rl   r   r   r  r!   r!   r&   r   \  s   
z&TestNanFunctions_ArgminArgmax.test_outN)r#   rC   rD   r9   rG   rI   ri   rm   r   r`   ra   rb   r   r   r   r   r   r   r   r   r   r   r!   r!   r!   r&   r   	  s(    
	

r   r   )   '   ]   W   .   )r   Z1dF)writer   Z
AllIntegerr   Or}   r6   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)ej dejejgdd Z*dS )TestNanFunctions_NumberTypesc                 C   r    r!   r"   r$   ir!   r!   r&   r'     r(   z'TestNanFunctions_NumberTypes.<listcomp>znanfunc,funcr6   ignore)Z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   r;   r}   r   nanfuncr4   r   r   r!   r!   r&   test_nanfunc  s   

z)TestNanFunctions_NumberTypes.test_nanfuncrY   rW   c                 C   s   | |}|jjdkrtt||dd tt||dd d S ||dd}||dd}t|| |dkr>t|t|u s<J d S |j|jksFJ d S )Nr   rs   )qr  )r   r   kindr   	TypeErrorr
   r   r  r!   r!   r&   test_nanfunc_q  s   

z+TestNanFunctions_NumberTypes.test_nanfunc_qr[   r]   c                 C   s`   | |}||dd}||dd}t|| |dkr&t|t|u s$J d S |j|jks.J d S )N      ?ddofr  r  r  r!   r!   r&   test_nanfunc_ddof  s   

z.TestNanFunctions_NumberTypes.test_nanfunc_ddofr  c                 C   s   | |}t||dd||dd d}tt| ||ddd W d    n1 s+w   Y  tt| ||ddd W d    d S 1 sHw   Y  d S )Nr  )
correctionr  z5ddof and correction can't be provided simultaneously.)r  r  rs   r   )r   r
   r   r   )r;   r}   r   r  err_msgr!   r!   r&   test_nanfunc_correction  s   
"z4TestNanFunctions_NumberTypes.test_nanfunc_correctionN)+r#   rC   rD   r9   rE   r   rF   r   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   r[   r\   r]   r^   ri   Znanfunc_idsr`   ra   rb   rc   Zerrstater  rY   rZ   rW   rX   r  r  r  r!   r!   r!   r&   r  r  sD    


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   re   r8   rf   rj   r!   r!   r&   rm     rn   z*SharedNanFunctionsTestsMixin.test_mutationc                 C   ro   rp   rw   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 ]i\}}|D ]b}t U}|t jt jhv r+|dv r+|t	 ||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 sqw   Y  qqd S Nrq   r   ZFDGrs   )r   ru   r9   rx   ry   ri   rz   r   r]   r[   r   r   r   r   r   	r;   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 ]V}t I}|t jt jhv r+|dv r+|t	 |||ddj
j}|||ddj
j}t||u  |||d dj
j}|||d dj
j}t||u  W d    n1 sew   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   rq   r   rs   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>rs   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   rq   r   r   rs   )r9   r   rx   r   ri   r   r   r   )r;   r   r   r   rl   Zexpected_shaper   r!   r!   r&   r     s"   



z*SharedNanFunctionsTestsMixin.test_subclassN)r#   rC   rD   rm   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e
jdejd dd Ze
jdejd dd ZdS )TestNanFunctions_SumProdru   rr   r   r   r   r   r   r   r6   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   rs   r   	r{   r`   r   r   ry   ri   r9   r   r   r;   ru   r   r   r4   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   rs   r   rq   r   )ry   r9   rK   rM   r   r	   r;   rl   Z	tgt_valuer}   r   r   r!   r!   r&   r   J  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   )r9   r   r   r   ri   rK   r   r  r!   r!   r&   r   W  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   rq   r   r   F   i  r   r   )
r9   r   r   r   r   r   r   ri   rK   r   )r;   r   r   r   rl   r   r  r!   r!   r&   r   b  s   
z#TestNanFunctions_SumProd.test_whereN)r#   rC   rD   r9   rK   rM   ri   rL   rN   rz   r`   ra   rb   r   r   r   r   r   r   r   r   r!   r!   r!   r&   r%  5  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_CumSumProdru   rr   r   r   r   r   r   r   r6   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   rs   r&  r'  r!   r!   r&   r   u  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   rs   r   r   )ry   ri   r9   r   onesr	   r)  r!   r!   r&   r     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 )
Nrq   rr   r   rq   r         r   r  r   )i  r   )ry   ri   rz   r9   rx   r   r{   r-  randomRandomStater   randr   r	   r   )	r;   rl   gr}   ru   r   r   r   rsr!   r!   r&   r     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   rs   Nr   )	r9   rR   
_ndat_onesrQ   rg   r
   rP   _ndat_zerosrO   )r;   ru   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 )Nrq   )r6  r7  r   rs   r   r   )r9   rx   ry   ri   rz   r
   )r;   r}   r~   r   r   ru   r   r   r!   r!   r&   r     s   


z$TestNanFunctions_CumSumProd.test_outN)r#   rC   rD   r9   rO   rQ   ri   rP   rR   rz   r`   ra   rb   r   r   r   r   r   r   r   r   r   r!   r!   r!   r&   r,  p  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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 )Nrs   )ru   r   )ri   r9   r   int_object_r   r  rg   )r;   rl   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   rs   r   )
ri   r9   r   r;  r<  r0   rg   r   r   r  )r;   rl   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   rs   c                    s   g | ]}| d qS )r  r!   r   r  r   r!   r&   r'         z9TestNanFunctions_MeanVarStd.test_ddof.<locals>.<listcomp>rs   ru   r  )	r9   r[   r]   r\   r^   ry   r   rg   r
   )r;   ri   rz   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 }t||D ]W\}}tdD ]N t A}|	t
 |t  fdd|D }|td d}tt || t|rVtt|jdk n	tt|jdk W d    n1 siw   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   rs   rB  r   )r9   r[   r]   r\   r^   r   ry   ranger   r   r   r   r   rg   r	   r   r   r   r   log)	r;   ri   rz   Zdsizer~   r   r   r   r   r!   r  r&   test_ddof_too_big  s&   

z-TestNanFunctions_MeanVarStd.test_ddof_too_bigru   rr   r   r   r   r   r   r   r6   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{   r`   r   r   ri   r   r   r9   r   r   rS   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   rs   r   r   )r9   r   ri   r   r   r   r   r   r   r   r   r   r   r	   )r;   r}   rl   ru   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   rq   r   r   Fr   )r   )r9   r   r   r   r   r   r   ry   ri   rz   rS   realr   r:   Zassert_allclose)	r;   r   r   r   rl   Zf_stdr   Zdtype_referencer  r!   r!   r&   r   
  s   z&TestNanFunctions_MeanVarStd.test_wherec                 C   s   t jd}|dddd }t j|d d dd d f< t d}t d}t j||ddd	}||u s4J t j||dd|d
}||u sDJ |j|jksLJ |jdksSJ t j|ddd}|j|jkscJ t	|| d S )Ni  
      r   r  )rJ  rs   r   rs   T)r   ru   rv   )r   ru   rv   rT   rt   )
r9   r1  r2  randnr   r   rS   r]   r   r
   )r;   rngAZmean_outZstd_outrT   r^   Zstd_oldr!   r!   r&   test_nanstd_with_mean_keyword  s.   

z9TestNanFunctions_MeanVarStd.test_nanstd_with_mean_keywordN)r#   rC   rD   r9   rS   r[   r]   ri   rT   r\   r^   rz   r=  r>  rC  rF  r`   ra   rb   r   r   r   r   r   r   r   rO  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'   C  rA  r'   c                   @   s   e Zd Zdd Zdd Zejjdg ddejd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 r8   )rg   rh   r9   rU   r	   r;   rk   r!   r!   r&   rm   H  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 )Nrq   rr   Fru   r   overwrite_inputr.  r      Trt   rs   rs   rs   rs   r?  rs   rs   r/  r0  r   rs   r   r/  rs   r   rq   rs   r/  r0  r   rs   r   rq   r   rs   rq   rs   rs   r/  rs   )r9   rx   rV   rU   r   r{   r-  r1  r   r   r   r  r   tupler   r   r   r	   r;   r}   ru   r   r   r   r   r   r!   r!   r&   r   N  s0   

$
"z%TestNanFunctions_Median.test_keepdimsru   Nrs   r   r?  )r7  argnamesZ	argvalues#ignore:All-NaN slice:RuntimeWarningc                    s   t dt jdt jd d d f  }|t j}t jt|< |d u r.dj	 }nt
|j	 t fddtj	D }t |}t j|d|d}||u sWJ t|j| d S )Nr.  rb  r   c                 3   &    | ]}| v r
d nj | V  qdS rs   Nr   r  Z	axis_normr   r!   r&   	<genexpr>~      
z<TestNanFunctions_Median.test_keepdims_out.<locals>.<genexpr>Tru   rv   r   )r9   r-  r1  r   r   r   r  r   rk  r{   r   rD  r0   rU   r	   )r;   ru   r   	shape_outr   resultr!   ru  r&   test_keepdims_outi  s   
$
z)TestNanFunctions_Median.test_keepdims_outc                 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 )	Nrq   r   r   rs   r   r   r!   r?  )	r9   r1  r3  insertr   r   rV   rU   r
   )r;   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   rK  3   rc  i  r   r   r   sizer   T)ra  r7  r   )r9   r1  rL  randintr  r   Zravelcompressr   r1   rV   r   rU   )r;   rV  r   r   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 |qS r!   )r9   rV   r   r!   r!   r&   r'     s    z>TestNanFunctions_Median.test_result_values.<locals>.<listcomp>rs   r   )r   r9   rU   rg   r
   )r;   r   r   r!   r!   r&   r     s   z*TestNanFunctions_Median.test_result_valuesrr   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   rs   rq   r!   r   r   )r9   r   r   r   r   r   r   rU   r   r   r   r   r   rE  r   )r;   r   ru   r}   r   outputZscalarZoutput_scalarr!   r!   r&   r     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 rH  )r9   r   r   r   r   r   r   rU   r   r   r   r   r   r	   r;   r}   ru   r   r!   r!   r&   r     s"   


z"TestNanFunctions_Median.test_emptyc                 C   s   t tddk d S r   )r   r9   rU   rA   r!   r!   r&   r     s   z#TestNanFunctions_Median.test_scalarc                 C   sh   t d}ttt j|dd ttt j|dd ttt j|dd ttt j|dd ttt j|dd d S )Nr.  r   r   r  r   r   r   rs   rs   )r9   r-  r   r   rU   r   r;   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   rs   r/  iir   r   r   r   g      @      @g      @g      $g      "g      r7  g      rJ  r   )r   r   r   r9   infr   r   r	   rU   float32rD  )r;   r   r  ar  jr!   r!   r&   test_float_special  sZ   

"$$z*TestNanFunctions_Median.test_float_specialN)r#   rC   rD   rm   r   r`   ra   rb   filterwarningsr{  r   r  r   _TYPE_CODESr   r   r   r  r  r!   r!   r!   r&   r^  F  s&    

r^  c                	   @   sV  e Zd Zdd Zdd Zejddddggejjdg d	d
ejddd Z	ejdddgdd Z
dd Zejdddgejdddg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*g d+d,d- Zejdg d.d/d0 Zd1S )2TestNanFunctions_Percentilec                 C   s"   t  }t|d t|t  d S )N   )rg   rh   r9   rW   r	   r_  r!   r!   r&   rm     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 )Nrq   rr   F   Fr`  r.  rb  Z   Trt   rd  r?  re  r   rf  r   rg  rh  ri  rj  )r9   rx   rX   rW   r   r{   r-  r1  r   r   r   r  r   rk  r   r   r   r	   rl  r!   r!   r&   r     s8   

$
"z)TestNanFunctions_Percentile.test_keepdimsr  r/  rs   ru   rm  ro  rq  c                    s   t dt jdt jd d d f  }|t j}t jt|< |d u r.dj	 }nt
|j	 t fddtj	D }t || }t |}t j||d|d}||u s_J t|j| d S )Nr.  rb  r   c                 3   rr  rs  rt  r  ru  r!   r&   rv  J  rw  z@TestNanFunctions_Percentile.test_keepdims_out.<locals>.<genexpr>Trx  )r9   r-  r1  r   r   r   r  r   rk  r{   r   rD  r0   rW   r	   )r;   r  ru   r   ry  r   rz  r!   ru  r&   r{  4  s   
$
z-TestNanFunctions_Percentile.test_keepdims_outweightedFTc           	      C   s*  t jdd}t j|ddgt jdd}t d}|r+t |dd}t |dd}nt }t }t j|dfd	di|}t j	|dfd|d
|}t
|| t
|| t d}t j|dfd	d i|}t j	|dfd |d
|}t
|| t
|| t j	|dfd|d
|}t
|| t
|| d S )Nrq   r   r   rs   r   inverted_cdfweightsmethod*   ru   r   r!   r?  )r9   r1  r3  r|  r   r   r   dictrX   rW   r
   )	r;   r  r}   r}  r   w_argsZ
nan_w_argsr   r   r!   r!   r&   r   S  sB   







z$TestNanFunctions_Percentile.test_outc                 C   j   t jg ddd}ttt j|d t jg ddd}ttt j|d t jg ddd}ttt j|d d S N)y      ?      @y @      ?y?ffffff@Gr   r  rS  F)r9   r   r   r  rW   r;   Zarr_cr!   r!   r&   test_complexr     z(TestNanFunctions_Percentile.test_complexuse_outc                    s   |rt tjddt tjdd}dd  n
tjtj}dd   fddtD }|r0t|nd }|tdd	 t|d
}t|| t fddtD }|rVt|nd }|tdd	 t|d
}t|| d S )Nr  r  c                 S   s
   t | S r8   )r9   r   r   r!   r!   r&   gen_weights  s   
zCTestNanFunctions_Percentile.test_result_values.<locals>.gen_weightsc                 S   s   d S r8   r!   r  r!   r!   r&   r    s   c                       g | ]}|d  |dqS )r*  r  r!   r   r  rX   r!   r&   r'     s    zBTestNanFunctions_Percentile.test_result_values.<locals>.<listcomp>r*  rs   )ru   r  r   c                    r  )r*  b   r  r!   r   r  r!   r&   r'     s    r  )	r   r9   rX   rW   r   
empty_likerg   r
   Z	transpose)r;   r  r  rW   r   r   r   r!   r  r&   r   z  s*   

z.TestNanFunctions_Percentile.test_result_valuesrr   r   Floatr   r   r   r   r6   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{   r`   r   r   r   r   r9   rW   r   r   r   r;   ru   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   rs   r   r   )r9   r   r   r   r   r   r   rW   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	   r9   rW   r   r   Zisscalar)r;   r  rr!   r!   r&   r     s
   

z'TestNanFunctions_Percentile.test_scalarc                 C   sr   t d}ttt j|ddd ttt j|ddd ttt j|ddd ttt j|ddd ttt j|ddd d S )	Nr.  r   r  r  ru   r  r   r  r  )r9   r-  r   r   rW   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   rq   )rq   r   r   r   r   r   rq   rr   )FTr   rt   )rq   r   r   r  )rs   r   r   )r   rq   r  )
r9   r-  r   r   r   r   rX   rW   r	   r   )r;   percr}   r}  Z	large_matru   Zkeepdimr   r   Znan_valZmegamatr!   r!   r&   test_multiple_percentiles  s:   


"



z5TestNanFunctions_Percentile.test_multiple_percentiles
nan_weight)r   rs   r   rq   Zbtic                 C   s^   dt jddg}t d}t j|ddd}t|| d|ddg}t j|d|dd	}t|| d S )
Nrs   r   rq   r   r  r  r  r   r  )r9   r   float64rW   r	   )r;   r  r  rz  Zq_unweightedr   Z
q_weightedr!   r!   r&   test_nan_value_with_weight  s   

z6TestNanFunctions_Percentile.test_nan_value_with_weightr   rs   r   c                 C   s  t jd t jjdd}| }t j|t dt ddf< t g dg dg}t |}d|t |< t j	||||dd	}t j
|||dd
}t|| d|t |< t j
||||dd	}t|| t |}	t j
|||||	dd}
|
|	u szJ t|	| d S )Nrs   )r   c   r   r  r  r   )g      4@g      I@r  )r  !   P   r  )ru   r  r  )ru   r  r  )ru   r  r   r  )r9   r1  seedrh   r   r   r   r   r   rX   rW   r	   r  )r;   ru   Zx_no_nanr  pr  Z
p_expectedZp_unweightedZ
p_weightedr   r   r!   r!   r&   test_nan_value_with_weight_ndim  s2   





z;TestNanFunctions_Percentile.test_nan_value_with_weight_ndimN)r#   rC   rD   rm   r   r`   ra   rb   r  r{  r   r  r   r9   r   r   r   r   r   r   r   r  r  r  r  r!   r!   r!   r&   r    sB    





r  c                	   @   s   e Zd Zejdddg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S )TestNanFunctions_Quantiler  FTc                 C   sJ  t ddddt}t j|d d< |rt |dd}nt }tt j	|fd	d
i|t j
|fd	di| tt j	|fd
dd|t j
|fddd| tt j	|fd
dd|t j
|fddd| tt j	|fd
gdd|t j
|fdgdd| tt j	|fg ddd|t j
|fg ddd| d S )N   r   rq   r   r   rs   r  r  r  r  r  r  )      ?r        ?)   r  K   )r9   r   r   r   floatr   r   r  r	   rY   rW   )r;   r  r   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   rs   g      @g      ?)r9   r   r	   rY   )r;   r  r!   r!   r&   
test_basic-  s   z$TestNanFunctions_Quantile.test_basicc                 C   r  r  )r9   r   r   r  rY   r  r!   r!   r&   r  3  r  z&TestNanFunctions_Quantile.test_complexc                 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@Zmidpointr  )r9   r   rh   rY   r   r   tolist)r;   p0r  r!   r!   r&   test_no_p_overwrite;  s   
z-TestNanFunctions_Quantile.test_no_p_overwriteru   rr   r   r  r   r   r   r   r6   c                 C   r  )Nr   r   r   r   rs   r   )r{   r`   r   r   r   r   r9   rY   r   r   r   r  r!   r!   r&   r   G  r  z&TestNanFunctions_Quantile.test_allnansN)r#   rC   rD   r`   ra   rb   r  r  r  r  r9   r   r   r   r   r   r!   r!   r!   r&   r    s    

r  zarr, expectedr  )FTFT)rs   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)r9   r0   r   r   r   r	   r   r   )r   expectedr   actualr!   r!   r&   test__nan_maskW  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   rs   r   Nr   F)FFTr  r7  )r9   r   Zint32int64r   r   r  r  r   r	   r   r   )r   r   rz  maskZarr_nanZ
result_nanZmask_nanr!   r!   r&   test__replace_nanr  s$   
r  )8r   r`   r+   	functoolsr   numpyr9   Znumpy._core.numericr   Znumpy.exceptionsr   r   Znumpy.lib._nanfunctions_implr   r   Znumpy.testingr   r	   r
   r   r   r   r   r   r   rg   r   r8  r9  r   rd   r   Z_TEST_ARRAYSr.   _vZsetflagsra   rb   r   keysr  r  r%  r,  r:  Z_TIME_UNITSr   r  r^  r  r  r  r  Z	complex64r  r  r!   r!   r!   r&   <module>   s    $

/ 1bUi;I  J  	A


