a
    !ñ»jóÕ  ã                   @   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*� �q–e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_warningsç³êsµûã?ç&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    úGE:\soccer\ml_env\Lib\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 |¡ 	¡ s€J ‚|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 ¡�o†t  |d ¡ �o†t  |d ¡ ƒ tt|ƒdkdƒ tt|d jtƒƒ W d   ƒ n1 �sÆ0    Y  t	j
d	d
��N}t	 d¡ ||ƒ}t|jdkƒ t|t jkƒ tt|ƒdkƒ W d   ƒ q¤1 �s20    Y  q¤d 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 sÀ0    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s’J ‚||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s”J ‚||ks J ‚|| |¡|d
d�}|j
|ksÂJ ‚||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 sž0    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 sˆJ ‚n|j|jksˆJ ‚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 sŽ0    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 sâ0    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 sÊ0    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s‚J ‚||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ƒ q°q^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|ƒr¬tt|jƒdkƒ ntt|jƒdkƒ W d   ƒ q@1 sÒ0    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 |¡ 	¡ s€J ‚|tj
u rœ|j|jks²J ‚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 s†0    Y  qd	D ]b}tjdd��B}t d¡ t|||d�t  g ¡ƒ tt	|ƒdkƒ W d   ƒ q–1 sî0    Y  q–q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s¤J ‚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 sˆJ ‚|j|jks˜J ‚|jdks¦J ‚t j|ddd�}|j|jksÆJ ‚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 s®J ‚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s´J ‚t  	|¡sÂJ ‚|d u rÞt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   ƒ qŽ1 sè0    Y  qŽd 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�rˆt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è�qÚq"W d   ƒ n1 �sì0    Y  d S )Nr   r   rn   r  i÷ÿÿÿiöÿÿÿrÎ   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 s¾J ‚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 ƒ¡}|r¬t |¡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s†J ‚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 s€0    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   ƒ q�1 sì0    Y  q�d 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 sü0    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 sôJ ‚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s†J ‚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 ¡ sŽJ ‚||usšJ ‚t	||ƒ t jddt j
g| d�}t|dƒ\}}t	|t  g d¢¡ƒ ||usèJ ‚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ÿÿÿ
ÿÿ
ÿþõ
