a
    Lfi                     @   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   s   g | ]
}|j qS  __name__).0kr    r    Z/var/www/ai-form-bot/venv/lib/python3.9/site-packages/numpy/lib/tests/test_nanfunctions.py
<listcomp>;       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Zidsc                 C   s&   |  |}|  |}tj|| d S N)r4   nptestingr	   )selfZnan_funcr3   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)r7   r8   r	   setIDSlibZ_nanfunctions_impl__all__r9   r    r    r%   test_exhaustivenessR   s    z&TestSignatureMatch.test_exhaustivenessN)r(   )*r"   
__module____qualname__r7   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<   staticmethodr4   pytestmarkparametrizeitemsr:   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 r6   _ndatcopynanfuncsr	   r9   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r7   eyeziprf   stdfuncsr   ndimr9   matnfrfrp   tgtresr    r    r%   test_keepdimse   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 Nrl   rn   rp   rp   outr7   rs   rt   rf   ru   zerosr
   r9   rx   ry   rz   resoutr{   r|   r    r    r%   test_outm   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efdgFDGrl   dtypern   r   rt   rf   ru   r7   rs   r   typer   r9   codesry   rz   crx   r{   r|   r    r    r%   test_dtype_from_inputv   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rz   r    r%   r&      r'   z>TestNanFunctions_MinMax.test_result_values.<locals>.<listcomp>rn   r   rt   rf   ru   _rdatrd   r
   r9   ry   r{   r|   r    r   r%   test_result_values   s    z*TestNanFunctions_MinMax.test_result_valuesrp   rm   r   AllFloatarrayrl   rl   0d2dr5   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   )rv   r^   skipastyperf   warnsRuntimeWarningr7   isnanallr   r9   rp   r   r   r   r3   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 )Nrn   r   )r7   maZfix_invalidrd   Z_maskre   rC   r	   r   isinfany)r9   rx   Zmskri   r|   r{   r    r    r%   test_masked   s    

z#TestNanFunctions_MinMax.test_maskedc                 C   s    | j D ]}t|ddk qd S Nr   rf   r   r9   ri   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"   rA   rB   r    r    r    r%   	MyNDArray   s   r   rl   r   r   rl   rn   r    Trecordalways   no warning raised)r7   ndarrayrs   viewrf   r   
isinstanceshapenanwarningscatch_warningssimplefilterr   r   len
issubclasscategoryr   )r9   r   mineri   r|   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          @      @r   r   r   Tr   r   rn   r   )r7   r   r   objectr	   rC   r   r   r   listr   r   r   r   r   )r9   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)	r7   r   aranger   r   rf   rD   r   r   )r9   r   r   arri   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   rl   r   r   F      r   wherer   )r7   r   r   reshaper   r   	ones_likeboolrf   rC   r   r   )	r9   r   r   r   r   ri   	referencer   r   r    r    r%   
test_where   s    
z"TestNanFunctions_MinMax.test_whereN)r"   rA   rB   r7   rC   rD   rf   minmaxru   rj   r}   r   r   r   r^   r_   r`   	typecodesr   r   fullr   r   r   r   r   r   r   r    r    r    r%   rb   Y   s0   	

+
rb   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 r6   rc   rg   r    r    r%   rj     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)rt   rf   r7   Zgreaterlessrd   r   filterr   r   r   r   equal)r9   ri   Zfcmprowsupindvalr    r    r%   r     s    z0TestNanFunctions_ArgminArgmax.test_result_valuesrp   rm   r   r   r   r   r   r   r5   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   )rv   r^   r   r   rf   Zraises
ValueError)r9   rp   r   r   r3   r    r    r%   r   !  s    


z*TestNanFunctions_ArgminArgmax.test_allnansc              	   C   s\   t d}| jD ]F}dD ]}ttd|||d qdD ] }|||d}t|t d q4qd S )Nr   rl   r   Nz*attempt to get argm.. of an empty sequencer   rn   r   )r7   r   rf   r   r   r	   )r9   rx   ri   rp   r|   r    r    r%   
test_empty0  s    

z(TestNanFunctions_ArgminArgmax.test_emptyc                 C   s    | j D ]}t|ddk qd S r   r   r   r    r    r%   r   <  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   A  s   r   rl   r   r   r   rn   r    )r7   r   rs   r   rf   r   r   r   )r9   r   r   ri   r|   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)rq   )r7   r   r   r   rf   rE   rv   r9   r   r   ri   r   retr    r    r%   r}   Q  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   )r7   r   r   r   rf   r   intprE   )r9   r   r   ri   r   r   r   r    r    r%   r   \  s    
z&TestNanFunctions_ArgminArgmax.test_outN)r"   rA   rB   r7   rE   rG   rf   rj   r   r^   r_   r`   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   Orx   r5   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   s   g | ]
}|j qS r    r!   r#   ir    r    r%   r&     r'   z'TestNanFunctions_NumberTypes.<listcomp>znanfunc,funcr5   ignore)Zoverc                 C   sV   | |}||}||}t|| |dkrBt|t|u sRJ n|j|jksRJ d S )Nr   r   r
   r   r   r9   rx   r   nanfuncr3   r{   r   r    r    r%   test_nanfunc  s    

z)TestNanFunctions_NumberTypes.test_nanfuncrW   rU   c                 C   s   | |}|jjdkr8tt||dd tt||dd nP||dd}||dd}t|| |dkrxt|t|u sJ n|j|jksJ d S )Nr   rn   )qr   )r   r   kindr   	TypeErrorr
   r   r  r    r    r%   test_nanfunc_q  s    

z+TestNanFunctions_NumberTypes.test_nanfunc_qrY   r[   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_ddofr  c                 C   s   | |}t||dd||dd d}tt| ||ddd W d    n1 sV0    Y  tt| ||ddd W d    n1 s0    Y  d S )Nr  )
correctionr	  z5ddof and correction can't be provided simultaneously.)r
  r  rn   r   )r   r
   r   r   )r9   rx   r   r  err_msgr    r    r%   test_nanfunc_correction  s    
,z4TestNanFunctions_NumberTypes.test_nanfunc_correctionN)+r"   rA   rB   r7   rC   r   rD   r   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rY   rZ   r[   r\   rf   Znanfunc_idsr^   r_   r`   ra   Zerrstater  rW   rX   rU   rV   r  r  r  r    r    r    r%   r   r  sB   


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 r6   rc   rg   r    r    r%   rj     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 rk   rr   rw   r    r    r%   r}     s    
z*SharedNanFunctionsTestsMixin.test_keepdimsc                 C   s^   t d}t| j| jD ]@\}}t d}||dd}||d|d}t|| t|| qd S r~   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 rV|dv rV|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    q(1 s0    Y  q(qd S Nrl   r   ZFDGrn   )r   rp   r7   rs   rt   rf   ru   r   r[   rY   r   r   r   r   r   	r9   rx   r   ry   rz   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 ]}t }|t jt jhv rV|dv rV|t	 |||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   rl   r   rn   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>rn   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   rl   r   r   rn   )r7   r   rs   r   rf   r   r   r   )r9   r   r   r   ri   Zexpected_shaper|   r    r    r%   r     s     



z*SharedNanFunctionsTestsMixin.test_subclassN)r"   rA   rB   rj   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_SumProdrp   rm   r   r   r   r   r   r   r5   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   rn   r   	rv   r^   r   r   rt   rf   r7   r   r   r9   rp   r   r   r3   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   rn   r   rl   r   )rt   r7   rI   rK   r   r	   r9   ri   Z	tgt_valuerx   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 r6dnd}||dd}|j|ksTJ ||ks$J q$d S )Nr   r      i   r   r   )r7   r   r   r   rf   rI   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 rbdnd}|||dd	}|j	|ksJ ||ksPJ qPd S )
Nr   rl   r   r   F   i  r   r   )
r7   r   r   r   r   r   r   rf   rI   r   )r9   r   r   r   ri   r   r   r    r    r%   r   b  s    
z#TestNanFunctions_SumProd.test_whereN)r"   rA   rB   r7   rI   rK   rf   rJ   rL   ru   r^   r_   r`   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_CumSumProdrp   rm   r   r   r   r   r   r   r5   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   rn   r  r  r    r    r%   r   u  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   rn   r   r   )rt   rf   r7   r   onesr	   r  r    r    r%   r     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 )
Nrl   rm   r   rl   r         r   r  r   )i  r   )rt   rf   ru   r7   rs   r   rv   r  randomRandomStater   randr   r	   r   )	r9   ri   grx   rp   r{   r|   r   rsr    r    r%   r}     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   rn   Nr   )	r7   rP   
_ndat_onesrO   rd   r
   rN   _ndat_zerosrM   )r9   rp   r{   r|   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 )Nrl   )r&  r'  r   rn   r   r   )r7   rs   rt   rf   ru   r
   )r9   rx   ry   rz   r   rp   r{   r|   r    r    r%   r     s    


z$TestNanFunctions_CumSumProd.test_outN)r"   rA   rB   r7   rM   rO   rf   rN   rP   ru   r^   r_   r`   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 )Nrn   )rp   r   )rf   r7   r   int_object_r   r  rd   )r9   ri   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   rn   r   )
rf   r7   r   r+  r,  r/   rd   r   r   r  )r9   ri   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   rn   c                    s   g | ]}| d qS )r	  r    r   r
  rz   r    r%   r&     r'   z9TestNanFunctions_MeanVarStd.test_ddof.<locals>.<listcomp>rn   rp   r
  )	r7   rY   r[   rZ   r\   rt   r   rd   r
   )r9   rf   ru   ry   r{   r|   r    r0  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  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'   rn   r1  r   )r7   rY   r[   rZ   r\   r   rt   ranger   r   r   r   r   rd   r	   r   r   r   r   log)	r9   rf   ru   Zdsizery   rz   r   r{   r|   r    r	  r%   test_ddof_too_big  s    

z-TestNanFunctions_MeanVarStd.test_ddof_too_bigrp   rm   r   r   r   r   r   r   r5   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   )rv   r^   r   r   rf   r   r   r7   r   r   rQ   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   rn   r   r   )r7   r   rf   r   r   r   r   r   r   r   r   r   r   r	   )r9   rx   ri   rp   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   rl   r   r   Fr   )r   )r7   r   r   r   r   r   r   rt   rf   ru   rQ   realr   r8   Zassert_allclose)	r9   r   r   r   ri   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 shJ t j||dd|d
}||u sJ |j|jksJ |jdksJ t j|ddd}|j|jksJ t	|| d S )Ni  
      r   r  )r9  rn   r   rn   T)r   rp   rq   )r   rp   rq   rR   ro   )
r7   r!  r"  randnr   r   rQ   r[   r   r
   )r9   rngAZmean_outZstd_outrR   r\   Zstd_oldr    r    r%   test_nanstd_with_mean_keyword  s.    

z9TestNanFunctions_MeanVarStd.test_nanstd_with_mean_keywordN)r"   rA   rB   r7   rQ   rY   r[   rf   rR   rZ   r\   ru   r-  r.  r2  r5  r^   r_   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&   C  r'   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 r6   )rd   re   r7   rS   r	   r9   rh   r    r    r%   rj   H  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 )Nrl   rm   Frp   r   overwrite_inputr  r      Tro   rn   rn   rn   rn   r/  rn   rn   r  r   r   rn   r   r  rn   r   rl   rn   r  r   r   rn   r   rl   r   rn   rl   rn   rn   r  rn   )r7   rs   rT   rS   r   rv   r  r!  r   r   r   r   r   tupler   r   r   r	   r9   rx   rp   r{   r|   r   r   r   r    r    r%   r}   N  s.    

$
z%TestNanFunctions_Median.test_keepdimsrp   Nrn   r   r/  )r'  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 sJ t|j| d S )Nr  rQ  r   c                 3   s$   | ]}| v rd nj | V  qdS rn   Nr   r   Z	axis_normr   r    r%   	<genexpr>~  s   z<TestNanFunctions_Median.test_keepdims_out.<locals>.<genexpr>Trp   rq   r   )r7   r  r!  r   r   r   r   r   rZ  rv   r   r3  r/   rS   r	   )r9   rp   r   	shape_outr   resultr    rc  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 )	Nrl   r   r   rn   r   r   r    r/  )	r7   r!  r#  insertr   r   rT   rS   r
   )r9   rx   nan_matr   r{   r|   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   r:  3   rR  i  r   r   r   sizer   T)rP  r'  r   )r7   r!  r;  randintrm  r   Zravelcompressr   r0   rT   r   rS   )r9   rE  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    )r7   rT   r   r    r    r%   r&     r'   z>TestNanFunctions_Median.test_result_values.<locals>.<listcomp>rn   r   )r   r7   rS   rd   r
   )r9   r{   r|   r    r    r%   r     s    z*TestNanFunctions_Median.test_result_valuesrm   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   rn   rl   r    r   r   )r7   r   r   r   r   r   r   rS   r   r   r   r   r   r4  r   )r9   r   rp   rx   r   outputZscalarZoutput_scalarr    r    r%   r     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 r7  )r7   r   r   r   r   r   r   rS   r   r   r   r   r   r	   r9   rx   rp   r   r    r    r%   r     s    

4
z"TestNanFunctions_Median.test_emptyc                 C   s   t tddk d S r   )r   r7   rS   r?   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   rt  r   r   r   rn   rn   )r7   r  r   r   rS   r   r9   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   rn   r  iir   r   r   r   g      @      @g      @g      $g      "g      r'  g      r9  r   )r   r   r   r7   infr   r   r	   rS   float32r3  )r9   r   r{  ar   jr    r    r%   test_float_special  sR    


"$z*TestNanFunctions_Median.test_float_specialN)r"   rA   rB   rj   r}   r^   r_   r`   filterwarningsrh  r   rq  r   _TYPE_CODESr   r   r   ry  r  r    r    r    r%   rM  F  s$   

rM  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   )rd   re   r7   rU   r	   rN  r    r    r%   rj     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 )Nrl   rm   F   FrO  r  rQ  Z   Tro   rS  r/  rT  r   rU  r   rV  rW  rX  rY  )r7   rs   rV   rU   r   rv   r  r!  r   r   r   r   r   rZ  r   r   r   r	   r[  r    r    r%   r}     s6    

$
z)TestNanFunctions_Percentile.test_keepdimsr  r  rn   rp   r\  r^  r`  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 sJ t|j| d S )Nr  rQ  r   c                 3   s$   | ]}| v rd nj | V  qdS ra  rb  r   rc  r    r%   rd  J  s   z@TestNanFunctions_Percentile.test_keepdims_out.<locals>.<genexpr>Tre  )r7   r  r!  r   r   r   r   r   rZ  rv   r   r3  r/   rU   r	   )r9   r  rp   r   rf  r   rg  r    rc  r%   rh  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}|rVt |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 )Nrl   r   r   rn   r   inverted_cdfweightsmethod*   rp   r   r    r/  )r7   r!  r#  ri  r   r   r   dictrV   rU   r
   )	r9   r  rx   rj  r   w_argsZ
nan_w_argsr{   r|   r    r    r%   r   S  sB    







z$TestNanFunctions_Percentile.test_outc                 C   sj   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  rB  F)r7   r   r   r  rU   r9   Zarr_cr    r    r%   test_complexr  s    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 }|r`t|nd }|tdd	 t|d
}t|| t fddtD }|rt|nd }|tdd	 t|d
}t|| d S )Nr  r  c                 S   s
   t | S r6   )r7   r   r   r    r    r%   gen_weights  s    zCTestNanFunctions_Percentile.test_result_values.<locals>.gen_weightsc                 S   s   d S r6   r    r  r    r    r%   r    s    c                    s   g | ]}|d  |dqS )r  r  r    r   r  rV   r    r%   r&     r'   zBTestNanFunctions_Percentile.test_result_values.<locals>.<listcomp>r  rn   )rp   r  r   c                    s   g | ]}|d  |dqS )r  b   r  r    r   r  r    r%   r&     s   r  )	r   r7   rV   rU   r   
empty_likerd   r
   Z	transpose)r9   r  r  rU   r{   r   r|   r    r  r%   r   z  s*    

z.TestNanFunctions_Percentile.test_result_valuesrm   r   Floatr   r   r   r   r5   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   )rv   r^   r   r   r   r   r7   rU   r   r   r   r9   rp   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   rn   r   r   )r7   r   r   r   r   r   r   rU   r   r   r   r   r   r	   rs  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	   r7   rU   r   r   Zisscalar)r9   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   rt  r  rp   ru  r   rv  rw  )r7   r  r   r   rU   r   rx  r    r    r%   ry    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 )Nr  r   )r   rl   )rl   r   r   r   r   r   rl   rm   )FTr   ro   )rl   r   r   r  )rn   r   r   )r   rl   r  )
r7   r  r   r   r   r   rV   rU   r	   r   )r9   percrx   rj  Z	large_matrp   Zkeepdimr   r   Znan_valZmegamatr    r    r%   test_multiple_percentiles  s4    


"


,
z5TestNanFunctions_Percentile.test_multiple_percentiles
nan_weight)r   rn   r   rl   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 )
Nrn   r   rl   r   r  r  r  r   r  )r7   r   float64rU   r	   )r9   r  rp  rg  Zq_unweightedr   Z
q_weightedr    r    r%   test_nan_value_with_weight  s    

z6TestNanFunctions_Percentile.test_nan_value_with_weightr   rn   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 sJ t|	| d S )Nrn   )r   c   r   rl  r  r   )g      4@g      I@r  )r  !   P   r  )rp   r  r  )rp   r  r  )rp   r  r   r  )r7   r!  seedre   r   r   r   r   r   rV   rU   r	   r  )r9   rp   Zx_no_nanrp  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"   rA   rB   rj   r}   r^   r_   r`   r  rh  r   r  r   r7   r   r   r   r   r   r   r   ry  r  r  r  r    r    r    r%   r    s@   





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   rl   r   r   rn   r  r  r  r  r  r  )      ?r        ?)   r  K   )r7   r   r   r   floatr   r   r  r	   rW   rU   )r9   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   rn   g      @g      ?)r7   r   r	   rW   )r9   rp  r    r    r%   
test_basic-  s    z$TestNanFunctions_Quantile.test_basicc                 C   sj   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 r  )r7   r   r   r  rW   r  r    r    r%   r  3  s    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  )r7   r   re   rW   r   r   tolist)r9   p0r  r    r    r%   test_no_p_overwrite;  s    
z-TestNanFunctions_Quantile.test_no_p_overwriterp   rm   r   r  r   r   r   r   r5   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   rn   r   )rv   r^   r   r   r   r   r7   rW   r   r   r   r  r    r    r%   r   G  s    

.z&TestNanFunctions_Quantile.test_allnansN)r"   rA   rB   r^   r_   r`   r  r  r  r  r7   r   r   r   r   r   r    r    r    r%   r    s   

r  zarr, expectedrz  )FTFT)rn   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)r7   r/   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 ]} 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   rn   r   Nr   F)FFTr  r'  )r7   r   Zint32int64r   r   r|  r  r   r	   r   r   )r   r   rg  maskZarr_nanZ
result_nanZmask_nanr    r    r%   test__replace_nanr  s"    
r  )8r   r^   r*   	functoolsr   numpyr7   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   rd   r   r(  r)  r   rb   r   Z_TEST_ARRAYSr-   _vZsetflagsr_   r`   r   keysr   r  r  r  r*  Z_TIME_UNITSr   r  rM  r  r  r{  r  Z	complex64r  r  r    r    r    r%   <module>   s   $

/ 1bUi;I  J  	A


