U
    U‚gþµ  ã                   @   s`  d dl Z d dlZd dlZd dlZd dlmZ d dlmZm	Z	 d dl
mZmZmZmZmZmZ e dejddejdgd	d
ejdddgejejejdejdgdejejddejgg¡Ze ddddg¡e d	d
dddg¡e ddg¡e dddg¡gZe ddddddgd	d
ddddgddddddgddddddgg¡Ze ddddddgd	d
ddddgddddddgddddddgg¡ZG dd„ dƒZG dd„ dƒZG dd„ dƒZe d¡e ddddd g¡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 !¡ d)�G d*d+„ d+ƒƒƒZ"G d,d-„ d-ƒZ#G d.d/„ d/e#ƒZ$G d0d1„ d1e#ƒZ%G d2d3„ d3e#ƒZ&d4Z'e(ej d& ƒZ)e)d5d6„ e'D ƒ7 Z)G d7d8„ d8ƒZ*G d9d:„ d:ƒZ+G d;d<„ d<ƒZ,ej d=e ejd>ejej-g¡e d"d?d"d?g¡fejd@ddAdBgej.dC�d?fe d"d?d"d?g¡d?fejejd>gejej-ggej/dC�e d"d?gd"d?gg¡fg¡dDdE„ ƒZ0dFdG„ Z1dS )Hé    N)Únormalize_axis_tuple)Ú	_nan_maskÚ_replace_nan)Úassert_Úassert_equalÚassert_almost_equalÚassert_raisesÚassert_array_equalÚsuppress_warningsg³êsµûã?g&S£’:Ñ?gàœ¥½Á‡?gÁÊ¡E¶ó½?gÞ	Šá?g»¸�ðî¿gáz®GáÊ?gL¦
F%uÞ?g6<½R–!Ò?g[B>èÙ¬º?g“:M„ã¿gÏ÷Sã¥›Ä?gzÇ):’ËÇ?g•Ô	h"Ô?ç      ð?ç        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   úE/tmp/pip-unpacked-wheel-qf11kc36/numpy/lib/tests/test_nanfunctions.pyÚ
<listcomp>9   s     zTestSignatureMatch.<listcomp>ú...c                 C   sT   g }t  | ¡}|j ¡ D ]0}|jt jjkr6| |¡ q| |j|d�¡ qt  	|¡S )z?Construct a signature and replace all default parameter-values.)Údefault)
ÚinspectÚ	signatureÚ
parametersÚvaluesr   Ú	ParameterÚemptyÚappendÚreplaceÚ	Signature)Úfuncr   Zprm_listr   Zprmr   r   r   Úget_signature;   s    
z TestSignatureMatch.get_signatureznan_func,func©Úidsc                 C   s&   |   |¡}|   |¡}tj ||¡ d S ©N)r!   ÚnpÚtestingr   )ÚselfZnan_funcr    r   Znan_signaturer   r   r   Útest_signature_matchG   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)r%   r&   r   ÚsetÚIDSÚlibZnanfunctionsÚ__all__©r'   r   r   r   Útest_exhaustivenessP   s     ÿz&TestSignatureMatch.test_exhaustivenessN)r   )*r   Ú
__module__Ú__qualname__r%   Ú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*   Ústaticmethodr!   ÚpytestÚmarkÚparametrizeÚitemsr(   r.   r   r   r   r   r   (   sF                 ò
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dddg¡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 r$   ©Ú_ndatÚcopyÚnanfuncsr   ©r'   Ú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©r%   ÚeyeÚziprT   Ústdfuncsr   Úndim©r'   ÚmatÚnfÚrfr^   ÚtgtÚresr   r   r   Útest_keepdimsc   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 ©NrZ   r\   ©r^   ©r^   Úout©r%   ra   rb   rT   rc   Úzerosr   ©r'   rf   rg   rh   Úresoutri   rj   r   r   r   Útest_outk   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||kƒ ||d d�jj}||d d�jj}t||kƒ qqd S )NÚefdgFDGrZ   ©Údtyper\   rm   ©rb   rT   rc   r%   ra   rw   Útyper   ©r'   Úcodesrg   rh   Úcrf   ri   rj   r   r   r   Útest_dtype_from_inputt   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©rh   r   r   r   ƒ   s     z>TestNanFunctions_MinMax.test_result_values.<locals>.<listcomp>r\   rm   ©rb   rT   rc   Ú_rdatrR   r   ©r'   rg   ri   rj   r   r€   r   Útest_result_values�   s    z*TestNanFunctions_MinMax.test_result_valuesr^   Nr   r\   rw   ÚAllFloatÚarray©rZ   rZ   Ú0dÚ2dr"   c              
   C   s‚   |d k	r|j dkrt d¡ | |¡}d}| jD ]L}tjt|d�� |||d�}W 5 Q R X t |¡ 	¡ slt
‚|j|jks0t
‚q0d S ©Nr   ú*`axis != None` not supported for 0d arraysúAll-NaN slice encountered©Úmatchrm   )rd   rL   ÚskipÚastyperT   ÚwarnsÚRuntimeWarningr%   ÚisnanÚallÚAssertionErrorrw   ©r'   r^   rw   r†   rŽ   r    ro   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 )Nr\   rm   )r%   ÚmaZfix_invalidrR   Z_maskrS   r1   r   r   ÚisinfÚany)r'   rf   ZmskrW   rj   ri   r   r   r   Útest_masked™   s    

z#TestNanFunctions_MinMax.test_maskedc                 C   s    | j D ]}t|dƒdkƒ qd S ©Nr   ©rT   r   ©r'   rW   r   r   r   Útest_scalar£   s    
z#TestNanFunctions_MinMax.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(t j|d< | jD �]T}t	j
d	d
��P}t	 d¡ ||dd�}tt||ƒƒ tt  t  |¡¡ ƒ tt|ƒdkƒ W 5 Q R X t	j
d	d
��†}t	 d¡ ||dd�}tt||ƒƒ tt  |d ¡�opt  |d ¡ �opt  |d ¡ ƒ tt|ƒdkdƒ tt|d jtƒƒ W 5 Q R X t	j
d	d
��D}t	 d¡ ||ƒ}t|jdkƒ t|t jkƒ tt|ƒdkƒ W 5 Q R X q¤d S )Nc                   @   s   e Zd ZdS )z8TestNanFunctions_MinMax.test_subclass.<locals>.MyNDArrayN©r   r/   r0   r   r   r   r   Ú	MyNDArray¨   s   r¡   rZ   r   rm   ©rZ   r\   r   T©ÚrecordÚalwaysé   úno warning raised)r%   Úndarrayra   ÚviewrT   r   Ú
isinstanceÚshapeÚnanÚwarningsÚcatch_warningsÚsimplefilterrš   r“   ÚlenÚ
issubclassÚcategoryr’   )r'   r¡   ÚminerW   rj   Úwr   r   r   Útest_subclass§   sD    



$ÿ
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��V}t d	¡ tt	t j|d
d�ƒddt jgƒ t
t|ƒd
kdƒ t
t|d jtƒƒ W 5 Q R X d S )Nr   g       @ç      @rv   r   rm   Tr£   r¥   r\   r§   )r%   r†   r¬   Úobjectr   r1   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 ]h}|t jkrHdnd}|||d�}|j|ksft‚||ksrt‚|| 	|¡|d�}|j|ks’t‚||ks6t‚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)
r%   r¨   Úaranger�   r¬   rT   r2   rw   r•   r©   )r'   rw   r¡   ÚarrW   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	krtdnd	}|||d
d�}|j
|ks”t‚||ks t‚|| |¡|d
d�}|j
|ksÂt‚||ksbt‚qbd S )Nc                   @   s   e Zd ZdS )z5TestNanFunctions_MinMax.test_where.<locals>.MyNDArrayNr    r   r   r   r   r¡   ó   s   r¡   r»   rZ   r   rv   Fé   é   r¼   ©Úwherer¿   )r%   r¨   rÀ   Úreshaper�   r¬   Ú	ones_likeÚbool_rT   r1   rw   r•   r©   )	r'   rw   r¡   rÁ   rÈ   rW   Ú	referencerÂ   rÃ   r   r   r   Ú
test_whereñ   s    
z"TestNanFunctions_MinMax.test_where)r   r/   r0   r%   r1   r2   rT   ÚminÚmaxrc   rX   rk   rt   r}   r„   rL   rM   rN   Ú	typecodesr†   r¬   Úfullr—   r›   rŸ   rµ   rº   rÄ   rÍ   r   r   r   r   rP   W   s0   	
þý
+
rP   c                	   @   sÔ   e Zd ZejejgZdd„ Zdd„ Ze	j
 ddddg¡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 r$   rQ   rU   r   r   r   rX     s    
z+TestNanFunctions_ArgminArgmax.test_mutationc                 C   sœ   t | jtjtjgƒD ]‚\}}tD ]t}tƒ �d}| td¡ ||ƒ}|| }t	t 
|¡ ƒ t	|||ƒ ¡  ƒ t	t ||d |… ¡ ¡  ƒ W 5 Q R X q qd S )Nzinvalid value encountered in)rb   rT   r%   ZgreaterZlessrR   r
   Úfilterr’   r   r“   rš   Úequal)r'   rW   ZfcmpÚrowÚsupÚindÚvalr   r   r   r„     s    z0TestNanFunctions_ArgminArgmax.test_result_valuesr^   Nr   r\   rw   r…   r†   r‡   rˆ   r‰   r"   c              
   C   s\   |d k	r|j dkrt d¡ | |¡}| jD ]*}tjtdd�� |||d� W 5 Q R X q,d S rŠ   )rd   rL   r�   r�   rT   ZraisesÚ
ValueError)r'   r^   rw   r†   r    r   r   r   r—     s    


z*TestNanFunctions_ArgminArgmax.test_allnansc                 C   sZ   t  d¡}| jD ]D}dD ]}tt|||d� qdD ] }|||d�}t|t  d¡ƒ q2qd S )N©r   rZ   ©r   Nrm   ©r\   r   )r%   rq   rT   r   rÙ   r   )r'   rf   rW   r^   rj   r   r   r   Ú
test_empty.  s    

z(TestNanFunctions_ArgminArgmax.test_emptyc                 C   s    | j D ]}t|dƒdkƒ qd S rœ   r�   rž   r   r   r   rŸ   7  s    
z)TestNanFunctions_ArgminArgmax.test_scalarc                 C   s˜   G dd„ dt jƒ}t  d¡ |¡}| jD ]j}||dd�}tt||ƒƒ t|jdkƒ ||dd�}tt||ƒƒ t|jdkƒ ||ƒ}t|jdkƒ q(d S )	Nc                   @   s   e Zd ZdS )z>TestNanFunctions_ArgminArgmax.test_subclass.<locals>.MyNDArrayNr    r   r   r   r   r¡   <  s   r¡   rZ   r   rm   r¢   r\   r   )r%   r¨   ra   r©   rT   r   rª   r«   )r'   r¡   r³   rW   rj   r   r   r   rµ   ;  s    
z+TestNanFunctions_ArgminArgmax.test_subclassc                 C   sh   t  d¡ |¡}t j|d d…< | jD ]>}|t jkr6dnd}||dd�}|j|jksVt‚||ks$t‚q$d S )Nr»   r¼   rÆ   T)r_   )r%   rÀ   r�   r¬   rT   r3   rd   r•   ©r'   rw   rÁ   rW   rÌ   Úretr   r   r   rk   L  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krFdnd}|||d�}||ksbt‚||ks$t‚q$d S )Nr»   r¼   r   rv   rÆ   ©ro   )	r%   rÀ   r�   r¬   rT   rq   Úintpr3   r•   )r'   rw   rÁ   rW   ro   rÌ   rß   r   r   r   rt   W  s    
z&TestNanFunctions_ArgminArgmax.test_out)r   r/   r0   r%   r3   r5   rT   rX   r„   rL   rM   rN   rÐ   r†   r¬   rÑ   r—   rÝ   rŸ   rµ   rk   rt   r   r   r   r   rÒ     s&   
þý		

rÒ   r¼   é   é'   é]   éW   é.   )rˆ   Z1dF)Úwriterw   Z
AllIntegerr…   ÚOrf   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iZdd„ eD ƒZejj de !¡ ed�ej"dd�dd„ ƒƒZ#ejj dej$ej%fej&ej'fgd	d
gd�dd„ ƒZ(ejj dejejfejejfgddgd�dd„ ƒZ)dS )ÚTestNanFunctions_NumberTypesc                 C   s   g | ]
}|j ‘qS r   r   ©r   Úir   r   r   r   �  s     z'TestNanFunctions_NumberTypes.<listcomp>znanfunc,funcr"   Úignore)Zoverc                 C   sV   |  |¡}||ƒ}||ƒ}t||ƒ |dkrBt|ƒt|ƒksRt‚n|j|jksRt‚d S )Nrè   ©r�   r   ry   r•   rw   ©r'   rf   rw   Znanfuncr    ri   ro   r   r   r   Útest_nanfuncƒ  s    

z)TestNanFunctions_NumberTypes.test_nanfuncrE   rC   c                 C   s^   |  |¡}||dd�}||dd�}t||ƒ |dkrJt|ƒt|ƒksZt‚n|j|jksZt‚d S )Nr\   ©Úqrè   rí   rî   r   r   r   Útest_nanfunc_q�  s    

z+TestNanFunctions_NumberTypes.test_nanfunc_qrG   rI   c                 C   s^   |  |¡}||dd�}||dd�}t||ƒ |dkrJt|ƒt|ƒksZt‚n|j|jksZt‚d S )Nç      à?©Úddofrè   rí   rî   r   r   r   Útest_nanfunc_ddof   s    

z.TestNanFunctions_NumberTypes.test_nanfunc_ddofN)*r   r/   r0   r%   r1   rÎ   r2   rÏ   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rG   rH   rI   rJ   rT   Znanfunc_idsrL   rM   rN   rO   Zerrstaterï   rE   rF   rC   rD   rò   rö   r   r   r   r   ré   m  sR               ô
ý
ý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 r$   rQ   rU   r   r   r   rX   ²  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 rY   r`   re   r   r   r   rk   ¹  s    
z*SharedNanFunctionsTestsMixin.test_keepdimsc                 C   s^   t  d¡}t| j| jƒD ]@\}}t  d¡}||dd�}||d|d�}t||ƒ t||ƒ qd S rl   rp   rr   r   r   r   rt   Á  s    


z%SharedNanFunctionsTestsMixin.test_outc           	      C   sâ   t  d¡}d}t| j| jƒD ]À\}}|D ]²}tƒ �¢}|t jt jhkrX|dkrX| t j	¡ ||t  
|¡dd�j
j}||t  
|¡dd�j
j}t||kƒ ||t  
|¡d d�j
j}||t  
|¡d d�j
j}t||kƒ W 5 Q R X q(qd S ©NrZ   ru   ZFDGr\   )rw   r^   ©r%   ra   rb   rT   rc   r
   rI   rG   rÓ   ÚComplexWarningrw   ry   r   ©	r'   rf   r{   rg   rh   r|   rÖ   ri   rj   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krX|dkrX| t j	¡ |||dd�j
j}|||dd�j
j}t||kƒ |||d d�j
j}|||d d�j
j}t||kƒ W 5 Q R X 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||kd||f ƒ ||d d�jj}||d d�jj}t||kƒ qqd S )Nru   rZ   rv   r\   rm   zres %s, tgt %srx   rz   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   û  s     zCSharedNanFunctionsTestsMixin.test_result_values.<locals>.<listcomp>r\   rm   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¡   rZ   r   rm   r\   )r%   r¨   ra   r©   rT   r«   r   rª   )r'   r¡   r†   r³   rW   Zexpected_shaperj   r   r   r   rµ     s     



z*SharedNanFunctionsTestsMixin.test_subclassN)r   r/   r0   rX   rk   rt   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dddg¡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_SumProdr^   Nr   r\   rw   r…   r†   r‡   rˆ   r‰   r"   c                 C   sr   |d k	r|j dkrt d¡ | |¡}t| jddgƒD ]6\}}|||d�}t ||k¡s\t‚|j	|j	ks6t‚q6d S )Nr   r‹   r\   rm   ©
rd   rL   r�   r�   rb   rT   r%   r”   r•   rw   ©r'   r^   rw   r†   r    Úidentityro   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   r\   rÚ   rZ   rm   )rb   r%   r7   r9   rq   r   ©r'   rW   Z	tgt_valuerf   ri   rj   r   r   r   rÝ   /  s    



z#TestNanFunctions_SumProd.test_emptyc                 C   sf   t  d¡ |¡}t j|d d…< | jD ]<}|t jkr6dnd}||dd�}|j|ksTt‚||ks$t‚q$d S )Nr»   r¼   é   i   r¦   r¾   )r%   rÀ   r�   r¬   rT   r7   rw   r•   rÞ   r   r   r   rÄ   <  s    
z%TestNanFunctions_SumProd.test_initialc                 C   s”   t  d¡ dd¡ |¡}t j|dd d …f< t j|t jd�}d|d d …df< | jD ]>}|t jkrbdnd}|||dd	�}|j	|ks‚t
‚||ksPt
‚qPd S )
Nr»   rZ   r   rv   Fé   iÀ  r¦   rÇ   )r%   rÀ   rÉ   r�   r¬   rÊ   rË   rT   r7   rw   r•   )r'   rw   rÁ   rÈ   rW   rÌ   rß   r   r   r   rÍ   G  s    
z#TestNanFunctions_SumProd.test_where)r   r/   r0   r%   r7   r9   rT   r8   r:   rc   rL   rM   rN   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dddg¡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_CumSumProdr^   Nr   r\   rw   r…   r†   r‡   rˆ   r‰   r"   c                 C   sn   |d k	r|j dkrt d¡ | |¡}t| jddgƒD ]2\}}||ƒ}t ||k¡sXt‚|j	|j	ks6t‚q6d S )Nr   r‹   r\   rÿ   r   r   r   r   r—   Z  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   r\   rÚ   rm   )rb   rT   r%   rq   Úonesr   r  r   r   r   rÝ   j  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 )
NrZ   r[   rn   ©rZ   r¼   é   é   r   ró   rm   )iƒ  rÅ   )rb   rT   rc   r%   ra   r   rd   r  ÚrandomZRandomStater¬   Úrandr«   r   rÀ   )	r'   rW   Úgrf   r^   ri   rj   r   Úrsr   r   r   rk   w  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   r\   Nrm   )	r%   r>   Ú
_ndat_onesr=   rR   r   r<   Ú_ndat_zerosr;   )r'   r^   ri   rj   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 )NrZ   )r  r  r   r\   rm   rn   )r%   ra   rb   rT   rc   r   )r'   rf   rg   rh   rs   r^   ri   rj   r   r   r   rt   “  s    


z$TestNanFunctions_CumSumProd.test_out)r   r/   r0   r%   r;   r=   rT   r<   r>   rc   rL   rM   rN   rÐ   r†   r¬   rÑ   r—   rÝ   rk   r„   rt   r   r   r   r   r  U  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	d
ddg¡ej dejd ¡ejjde ej¡e dej¡gddgd�dd„ ƒƒƒZdd„ Zej dejd ¡dd„ ƒZd
S )ÚTestNanFunctions_MeanVarStdc              	   C   s8   | j D ],}tjtjtjfD ]}tt|td|d� qqd S )Nr\   )r^   rw   )rT   r%   rË   Úint_Úobject_r   Ú	TypeErrorrR   )r'   rW   rw   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   rv   r\   rn   )
rT   r%   rË   r  r  r   rR   r«   r   r  )r'   rW   rw   ro   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   r\   c                    s   g | ]}ˆ|ˆ d �‘qS )rô   r   r~   ©rõ   rh   r   r   r   ³  s     z9TestNanFunctions_MeanVarStd.test_ddof.<locals>.<listcomp>r\   ©r^   rõ   )	r%   rG   rI   rH   rJ   rb   r‚   rR   r   )r'   rT   rc   rg   ri   rj   r   r  r   Ú	test_ddof®  s    z%TestNanFunctions_MeanVarStd.test_ddofc           	         sÒ   t jt jg}t jt jg}dd„ tD ƒ}t||ƒD ]œ\}}tdƒD ]Š‰ tƒ �z}| 	t
¡ | t j¡ ‡ fdd„|D ƒ}|tdˆ d�}tt  |¡|ƒ t|ƒr®tt|jƒdkƒ ntt|jƒdkƒ W 5 Q R X q@q0d S )Nc                 S   s   g | ]}t |ƒ‘qS r   )r°   r~   r   r   r   r   º  s     zATestNanFunctions_MeanVarStd.test_ddof_too_big.<locals>.<listcomp>r¼   c                    s   g | ]}ˆ |k‘qS r   r   r~   rô   r   r   r   À  s     r\   r  r   )r%   rG   rI   rH   rJ   r‚   rb   Úranger
   r¤   r’   rÓ   rú   rR   r   r“   rš   r   r°   Úlog)	r'   rT   rc   Zdsizerg   rh   rÖ   ri   rj   r   rô   r   Útest_ddof_too_big·  s    
z-TestNanFunctions_MeanVarStd.test_ddof_too_bigr^   Nr   r\   rw   r…   r†   r‡   rˆ   r‰   r"   c              
   C   s¤   |d k	r|j dkrt d¡ | |¡}d}| jD ]n}tjt|d�� |||d�}W 5 Q R X t |¡ 	¡ slt
‚|tjkrˆ|j|jksžt
‚q0|jt |¡jks0t
‚q0d S )Nr   r‹   z:(Degrees of freedom <= 0 for slice.)|(Mean of empty slice)r�   rm   )rd   rL   r�   r�   rT   r‘   r’   r%   r“   r”   r•   r?   rw   Úabsr–   r   r   r   r—   È  s    



z(TestNanFunctions_MeanVarStd.test_allnansc                 C   sØ   t  d¡}| jD ]Â}dD ]d}tjdd��N}t d¡ tt  |||d�¡ ¡ ƒ tt	|ƒdkƒ tt
|d jtƒƒ W 5 Q R X qd	D ]N}tjdd��8}t d¡ t|||d�t  g ¡ƒ tt	|ƒdkƒ W 5 Q R X q‚qd S ©
NrÚ   rÛ   Tr£   r¥   rm   r\   r   rÜ   )r%   rq   rT   r­   r®   r¯   r   r“   r”   r°   r±   r²   r’   r   )r'   rf   rW   r^   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 ]Z\}}||| dd … ƒ}|t j
kr‚|n|jj}|||d�}|j|ks¤t‚t j ||¡ qXd S )Nr»   rZ   r   rv   Fr¦   )rÈ   )r%   rÀ   rÉ   r�   r¬   rÊ   rË   rb   rT   rc   r?   Úrealrw   r•   r&   Zassert_allclose)	r'   rw   rÁ   rÈ   rW   Zf_stdrÌ   Zdtype_referencerß   r   r   r   rÍ   ï  s    z&TestNanFunctions_MeanVarStd.test_where)r   r/   r0   r%   r?   rG   rI   rT   r@   rH   rJ   rc   r  r  r  r  rL   rM   rN   rÐ   r†   r¬   rÑ   r—   rÝ   rÍ   r   r   r   r   r  ž  s$   	
þýr  )ÚYÚMÚWÚDÚhÚmÚsÚmsÚusÚnsÚpsÚfsÚasc                 C   s   g | ]}d |› d�‘qS )zm8[ú]r   )r   Úunitr   r   r   r     s     r   c                   @   s¬   e Zd Zdd„ Zdd„ Zejjddddd	d
gd�ej d¡dd„ ƒƒZ	dd„ Z
dd„ Zdd„ Zej ddddg¡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 r$   )rR   rS   r%   rA   r   ©r'   rV   r   r   r   rX   
  s    
z%TestNanFunctions_Median.test_mutationc              	   C   sX  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 5 Q R X d S )NrZ   r[   F©r^   ro   Úoverwrite_inputr  ©rÅ   éÈ   Tr]   ©r\   r\   r\   r\   r  ©r\   r\   r  r	  rÚ   ©r\   r¼   r  r\   rÜ   ©rZ   r\   r  r	  ©r   r\   r¦   rZ   ©r   r\   rZ   ©r\   r\   r  r\   )r%   ra   rB   rA   r   rd   r  r
  r†   r«   r�   rá   r¬   Útupler
   rÓ   r’   r   ©r'   rf   r^   ri   rj   r   r´   rÖ   r   r   r   rk     s.    

$
z%TestNanFunctions_Median.test_keepdimsr^   Nr\   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 kr\dˆj	 }n*t
|ˆj	ƒ‰ t‡ ‡fdd„tˆj	ƒD ƒƒ}t  |¡}t jˆ|d|d�}||ks®t‚t|j|ƒ d S )Nr  r5  rÜ   c                 3   s$   | ]}|ˆ krd nˆj | V  qdS ©r\   N©r«   rê   ©Z	axis_normr   r   r   Ú	<genexpr>@  s    z<TestNanFunctions_Median.test_keepdims_out.<locals>.<genexpr>T©r^   r_   ro   )r%   r  r
  r†   r«   r�   rá   r¬   r>  rd   r   r  r   rA   r•   r   )r'   r^   r´   Ú	shape_outro   Úresultr   rG  r   Útest_keepdims_out+  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 )	NrZ   r   r¦   r\   rm   rn   r   r  )	r%   r
  r  Úinsertr¬   rq   rB   rA   r   ©r'   rf   Únan_matrs   ri   rj   r   r   r   rt   G  s    






z TestNanFunctions_Median.test_outc                 C   sž   dD ]”}t j d|¡}t jjd|j|jd d�}t j| ¡ |< d|d d …df< g }|D ],}t  t  |¡ |¡}| 	t j
|dd�¡ qVtt j|d	d
�|ƒ qd S )N)r¼   é   é3   r6  iè  rÅ   r   r¼   )Úsizer   T)r4  r  rm   )r%   r
  ZrandnÚrandintrR  r¬   ZravelÚcompressr“   r   rB   r	   rA   )r'   r(  r   r´   ri   ÚxZnonanr   r   r   Útest_small_largeY  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   )r%   rB   r~   r   r   r   r   j  s     z>TestNanFunctions_Median.test_result_values.<locals>.<listcomp>r\   rm   )r‚   r%   rA   rR   r   ©r'   ri   rj   r   r   r   r„   i  s    z*TestNanFunctions_Median.test_result_valuesr   rw   c              	   C   sþ   t  dt j¡ |¡}tƒ �Ú}| t¡ t j||d�}|j|jksDt	‚t  
|¡ ¡ sVt	‚|d krrtt|jƒdkƒ ntt|jƒdkƒ t  t j¡ |¡d }t  |¡}|j|jks´t	‚t  
|¡sÂt	‚|d krÞtt|jƒdkƒ ntt|jƒdkƒ W 5 Q R X d S )Nr‡   rm   r\   rZ   r   r¦   rÅ   )r%   rÑ   r¬   r�   r
   r¤   r’   rA   rw   r•   r“   r”   r   r°   r  r†   )r'   rw   r^   rf   rÖ   ÚoutputZscalarZoutput_scalarr   r   r   r—   n  s     

z$TestNanFunctions_Median.test_allnansc              
   C   sÐ   t  d¡}dD ]f}tjdd��P}t d¡ tt  t j||d�¡ ¡ ƒ tt	|ƒdkƒ tt
|d jtƒƒ W 5 Q R X qd	D ]P}tjdd��:}t d¡ tt j||d�t  g ¡ƒ tt	|ƒdkƒ W 5 Q R X qzd S r   )r%   rq   r­   r®   r¯   r   r“   rA   r”   r°   r±   r²   r’   r   ©r'   rf   r^   r´   r   r   r   rÝ   ‰  s    

 
z"TestNanFunctions_Median.test_emptyc                 C   s   t t d¡dkƒ d S rœ   )r   r%   rA   r-   r   r   r   rŸ   —  s    z#TestNanFunctions_Median.test_scalarc                 C   sp   t  d¡}tt jt j|dd� tt jt j|dd� tt jt j|dd� tt jt j|dd� ttt j|dd� d S )Nr  éûÿÿÿrm   ©r   rZ  rÅ   ©r   rÅ   ©r\   r\   )r%   r  r   Ú	AxisErrorrA   rÙ   ©r'   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 5 Q R X d S )Nr   rm   r\   r  i÷ÿÿÿiöÿÿÿr¼   rÅ   rv   r¶   g      @ç      @g      @g      $Àg      "Àg      Àr  g      ð¿é
   r¦   )r
   rÓ   r’   r%   Úinfr†   r¬   r   rA   Úfloat32r  )r'   rÖ   rc  Úarë   Újr   r   r   Útest_float_special¢  sR    

ÿþý
"ÿ$ÿz*TestNanFunctions_Median.test_float_special)r   r/   r0   rX   rk   rL   rM   rN   ÚfilterwarningsrL  rt   rV  r„   Ú_TYPE_CODESr—   rÝ   rŸ   r`  rg  r   r   r   r   r1    s.   ûþ

r1  c                	   @   sì   e Zd Zdd„ Zdd„ Zej ddddgg¡ejjdd	dd
ddgd�ej d¡dd„ ƒƒƒZ	dd„ Z
dd„ Zej dd	ddg¡ej dejd ¡ejjde ej¡e dej¡gddgd�dd„ ƒƒƒZdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd	S )'ÚTestNanFunctions_Percentilec                 C   s"   t  ¡ }t |d¡ t|t ƒ d S )Né   )rR   rS   r%   rC   r   r2  r   r   r   rX   Ó  s    z)TestNanFunctions_Percentile.test_mutationc              	   C   sh  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 5 Q R X d S )NrZ   r[   éF   Fr3  r  r5  éZ   Tr]   r7  r  r8  rÚ   r9  rÜ   r:  r;  r<  r=  )r%   ra   rD   rC   r   rd   r  r
  r†   r«   r�   rá   r¬   r>  r
   rÓ   r’   r   r?  r   r   r   rk   Ù  s6    
ÿÿ
$
z)TestNanFunctions_Percentile.test_keepdimsrñ   r  r\   r^   NrÜ   r  r@  rB  rD  c                    sÎ   t  d¡‰t j d¡t  ˆj¡d d …d f  }| t j¡}t jˆt|ƒ< |d kr\dˆj	 }n*t
|ˆj	ƒ‰ t‡ ‡fdd„tˆj	ƒD ƒƒ}t  |¡| }t  |¡}t jˆ||d|d�}||ks¾t‚t|j|ƒ d S )Nr  r5  rÜ   c                 3   s$   | ]}|ˆ krd nˆj | V  qdS rE  rF  rê   rG  r   r   rH    s    z@TestNanFunctions_Percentile.test_keepdims_out.<locals>.<genexpr>TrI  )r%   r  r
  r†   r«   r�   rá   r¬   r>  rd   r   r  r   rC   r•   r   )r'   rñ   r^   r´   rJ  ro   rK  r   rG  r   rL  ö  s    
$ÿ
z-TestNanFunctions_Percentile.test_keepdims_outc                 C   sÐ   t j dd¡}t j|ddgt jdd�}t  d¡}t j|ddd�}t j|dd|d�}t||ƒ t||ƒ t  d¡}t j|dd d�}t j|dd |d�}t||ƒ t||ƒ t j|dd	|d�}t||ƒ t||ƒ d S )
NrZ   r   r¦   r\   rm   é*   rn   r   r  )	r%   r
  r  rM  r¬   rq   rD   rC   r   rN  r   r   r   rt     s    






z$TestNanFunctions_Percentile.test_outc                 C   sZ   dd„ t D ƒ}tjtddd�}t||ƒ t dd„ t D ƒ¡}tjtddd�}t||ƒ d S )Nc                 S   s   g | ]}t  |d ¡‘qS )r  ©r%   rD   r~   r   r   r   r   (  s     zBTestNanFunctions_Percentile.test_result_values.<locals>.<listcomp>r  r\   rm   c                 S   s   g | ]}t  |d ¡‘qS )©r  éb   ro  r~   r   r   r   r   ,  s     rp  )r‚   r%   rC   rR   r   Z	transposerW  r   r   r   r„   '  s    
z.TestNanFunctions_Percentile.test_result_valuesr   rw   r…   r†   r‡   rˆ   r‰   r"   c              	   C   sv   |d k	r|j dkrt d¡ | |¡}tjtdd�� tj|d|d�}W 5 Q R X t |¡ 	¡ sbt
‚|j|jksrt
‚d S )Nr   r‹   rŒ   r�   é<   rm   )rd   rL   r�   r�   r‘   r’   r%   rC   r“   r”   r•   rw   ©r'   r^   rw   r†   ro   r   r   r   r—   0  s    

z(TestNanFunctions_Percentile.test_allnansc              
   C   sÔ   t  d¡}dD ]h}tjdd��R}t d¡ tt  t j|d|d�¡ ¡ ƒ tt	|ƒdkƒ tt
|d	 jtƒƒ W 5 Q R X qd
D ]R}tjdd��<}t d¡ tt j|d|d�t  g ¡ƒ tt	|ƒd	kƒ W 5 Q R X q|d S )NrÚ   rÛ   Tr£   r¥   é(   rm   r\   r   rÜ   )r%   rq   r­   r®   r¯   r   r“   rC   r”   r°   r±   r²   r’   r   rY  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   rm   g      @)r   r%   rC   rÀ   r   Zisscalar)r'   re  Úrr   r   r   rŸ   N  s
    

z'TestNanFunctions_Percentile.test_scalarc                 C   sz   t  d¡}tt jt j|ddd� tt jt j|ddd� tt jt j|ddd� tt jt j|ddd� ttt j|ddd� d S )	Nr  r¼   rZ  ©rñ   r^   r[  rÅ   r\  r]  )r%   r  r   r^  rC   rÙ   r_  r   r   r   r`  U  s    
z6TestNanFunctions_Percentile.test_extended_axis_invalidc                 C   s  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ƒ �r}| td¡ t j||||d�}t j||||d�}	t|	j	|j	ƒ t j||||d�}t j||||d�}	t|	|ƒ W 5 Q R X qpqht  d¡}
tt j|
|dd�j	dƒ d S )Nrv  r½   )rÅ   rZ   )rZ   rÅ   r¼   r   r¦   rÅ   rZ   r[   )FTrŒ   r]   )rZ   rÅ   r¼   ru  )r\   r¦   rm   )r¦   rZ   ru  )
r%   r  r¬   r
   rÓ   r’   rD   rC   r   r«   )r'   Úpercrf   rO  Z	large_matr^   ZkeepdimrÖ   rØ   Znan_valZmegamatr   r   r   Útest_multiple_percentiles]  s0    


"
ÿ
ÿ
ÿ
z5TestNanFunctions_Percentile.test_multiple_percentiles)r   r/   r0   rX   rk   rL   rM   rN   rh  rL  rt   r„   r%   rÐ   r†   r¬   rÑ   r—   rÝ   rŸ   r`  rz  r   r   r   r   rj  Ñ  s:   ûþ

	
þý
rj  c                	   @   s€   e Zd Zdd„ Zdd„ Zdd„ Zej ddd	d
g¡ej de	j
d ¡ejjde	 e	j¡e	 de	j¡gddgd�dd„ ƒƒƒZdS )ÚTestNanFunctions_Quantilec                 C   sâ   t  d¡ ddd¡ t¡}t j|d d< tt j|dd�t j|d	d�ƒ tt j|ddd
�t j|d	dd
�ƒ tt j|ddd
�t j|d	dd
�ƒ tt j|dgdd
�t j|d	gdd
�ƒ tt j|dddgdd
�t j|dd	dgdd
�ƒ d S )Né   r¦   rZ   rÅ   r   r\   ró   rð   rv  rx  ç      Ð?ç      è?é   éK   )	r%   rÀ   rÉ   r�   Úfloatr¬   r   rE   rC   )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   r\   g      @g      ü?)r%   rÀ   r   rE   )r'   rU  r   r   r   Ú
test_basic‰  s    z$TestNanFunctions_Quantile.test_basicc                 C   sp   t  dddddg¡}| ¡ }t jt  d¡|dd� t||ƒ | ¡ }| ¡ }t jt  d¡|dd� t||ƒ d S )	Nr   r~  r}  ró   r   g      Y@Zmidpoint)Úmethod)r%   r†   rS   rE   rÀ   r	   Útolist)r'   Zp0Úpr   r   r   Útest_no_p_overwrite�  s    
z-TestNanFunctions_Quantile.test_no_p_overwriter^   Nr   r\   rw   r…   r†   r‡   rˆ   r‰   r"   c              	   C   sv   |d k	r|j dkrt d¡ | |¡}tjtdd�� tj|d|d�}W 5 Q R X t |¡ 	¡ sbt
‚|j|jksrt
‚d S )Nr   r‹   rŒ   r�   r\   rm   )rd   rL   r�   r�   r‘   r’   r%   rE   r“   r”   r•   rw   rs  r   r   r   r—   ›  s    

z&TestNanFunctions_Quantile.test_allnans)r   r/   r0   r‚  rƒ  r‡  rL   rM   rN   r%   rÐ   r†   r¬   rÑ   r—   r   r   r   r   r{  x  s   
þýr{  zarr, expectedra  Tr\   r  r»   rv   c                 C   sP   d t j| jt jd�fD ]4}t| |d�}t||ƒ t|ƒt jk	r|dkst‚qd S )Nrv   rà   T)	r%   r   r«   rË   r   r   ry   r¨   r•   )r¹   Úexpectedro   Úactualr   r   r   Útest__nan_mask«  s
    
rŠ  c                  C   s  t jt jt jfD ]<} t jddg| d�}t|dƒ\}}|dks@t‚||kst‚qt jt jfD ]¸} t jddg| d�}t|dƒ\}}|dk 	¡ sŽt‚||k	sšt‚t
||ƒ t jddt jg| d�}t|dƒ\}}t
|t  dddg¡ƒ ||k	sêt‚t
|t  dddg¡ƒ t  |d ¡sZt‚qZdS )	z] Test that _replace_nan returns the original array if there are no
    NaNs, not a copy.
    r   r\   rv   Nr¦   FTr  )r%   rË   Zint32Úint64r†   r   r•   rd  Zfloat64r”   r   r¬   r“   )rw   r¹   rK  ÚmaskZarr_nanZ
result_nanZmask_nanr   r   r   Útest__replace_nanÆ  s"    
r�  )2r­   rL   r   Znumpyr%   Znumpy.core.numericr   Znumpy.lib.nanfunctionsr   r   Znumpy.testingr   r   r   r   r	   r
   r†   r¬   rR   r‚   r  r  r   rP   rÒ   Z_TEST_ARRAYSr   Z_vZsetflagsrM   rN   rÐ   Úkeysré   r÷   rþ   r  r  Z_TIME_UNITSr¸   ri  r1  rj  r{  rc  r‹  Z	complex64rŠ  r�  r   r   r   r   Ú<module>   s–    ýýýý/ 1_þþ?i;Ia J (3ÿÿÿ
ÿÿ
ÿþõ
