U
    ¸mœdþµ  ã                   @   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   úZ/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/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©Z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ÚziprS   Ú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 ©NrY   r[   ©r]   ©r]   Úout©r$   r`   ra   rS   rb   Úzerosr   ©r&   re   rf   rg   Úresoutrh   ri   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ÚefdgFDGrY   ©Údtyper[   rl   ©ra   rS   rb   r$   r`   rv   Útyper   ©r&   Úcodesrf   rg   Úcre   rh   ri   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©rg   r   r   r   ƒ   s     z>TestNanFunctions_MinMax.test_result_values.<locals>.<listcomp>r[   rl   ©ra   rS   rb   Ú_rdatrQ   r   ©r&   rf   rh   ri   r   r   r   Útest_result_values�   s    z*TestNanFunctions_MinMax.test_result_valuesr]   Nr   r[   rv   ÚAllFloatÚarray©rY   rY   Ú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©Úmatchrl   )rc   rK   ÚskipÚastyperS   ÚwarnsÚRuntimeWarningr$   ÚisnanÚallÚAssertionErrorrv   ©r&   r]   rv   r…   r�   r    rn   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[   rl   )r$   ÚmaZfix_invalidrQ   Z_maskrR   r0   r   r   ÚisinfÚany)r&   re   ZmskrV   ri   rh   r   r   r   Útest_masked™   s    

z#TestNanFunctions_MinMax.test_maskedc                 C   s    | j D ]}t|dƒdkƒ qd S ©Nr   ©rS   r   ©r&   rV   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.   r/   r   r   r   r   Ú	MyNDArray¨   s   r    rY   r   rl   ©rY   r[   r   T©ÚrecordÚalwaysé   úno warning raised)r$   Úndarrayr`   ÚviewrS   r   Ú
isinstanceÚshapeÚnanÚwarningsÚcatch_warningsÚsimplefilterr™   r’   ÚlenÚ
issubclassÚcategoryr‘   )r&   r    ÚminerV   ri   Ú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       @ç      @ru   r   rl   Tr¢   r¤   r[   r¦   )r$   r…   r«   Úobjectr   r0   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«   rS   r1   rv   r”   r¨   )r&   rv   r    ÚarrV   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º   rY   r   ru   Fé   é   r»   ©Úwherer¾   )r$   r§   r¿   Úreshaper�   r«   Ú	ones_likeÚbool_rS   r0   rv   r”   r¨   )	r&   rv   r    rÀ   rÇ   rV   Ú	referencerÁ   rÂ   r   r   r   Ú
test_whereñ   s    
z"TestNanFunctions_MinMax.test_where)r   r.   r/   r$   r0   r1   rS   ÚminÚmaxrb   rW   rj   rs   r|   rƒ   rK   rL   rM   Ú	typecodesr…   r«   Úfullr–   rš   rž   r´   r¹   rÃ   rÌ   r   r   r   r   rO   W   s0   	
þý
+
rO   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#   rP   rT   r   r   r   rW     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)ra   rS   r$   ZgreaterÚlessrQ   r
   Úfilterr‘   r   r’   r™   Úequal)r&   rV   ZfcmpÚrowÚsupÚindÚvalr   r   r   rƒ     s    z0TestNanFunctions_ArgminArgmax.test_result_valuesr]   Nr   r[   rv   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‰   )rc   rK   rŽ   r�   rS   ZraisesÚ
ValueError)r&   r]   rv   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   rY   ©r   Nrl   ©r[   r   )r$   rp   rS   r   rÙ   r   )r&   re   rV   r]   ri   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    rY   r   rl   r¡   r[   r   )r$   r§   r`   r¨   rS   r   r©   rª   )r&   r    r²   rV   ri   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«   rS   r2   rc   r”   ©r&   rv   rÀ   rV   rË   Úretr   r   r   rj   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   ru   rÅ   ©rn   )	r$   r¿   r�   r«   rS   rp   Úintpr2   r”   )r&   rv   rÀ   rV   rn   rË   rß   r   r   r   rs   W  s    
z&TestNanFunctions_ArgminArgmax.test_out)r   r.   r/   r$   r2   r4   rS   rW   rƒ   rK   rL   rM   rÏ   r…   r«   rÐ   r–   rÝ   rž   r´   rj   rs   r   r   r   r   rÑ     s&   
þý		

rÑ   r»   é   é'   é]   éW   é.   )r‡   Z1dF)Úwriterv   Z
AllIntegerr„   ÚOre   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   rx   r”   rv   ©r&   re   rv   Znanfuncr    rh   rn   r   r   r   Útest_nanfuncƒ  s    

z)TestNanFunctions_NumberTypes.test_nanfuncrD   rB   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_qrF   rH   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.   r/   r$   r0   rÍ   r1   rÎ   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rF   rG   rH   rI   rS   Znanfunc_idsrK   rL   rM   rN   Zerrstaterï   rD   rE   rB   rC   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#   rP   rT   r   r   r   rW   ²  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 rX   r_   rd   r   r   r   rj   ¹  s    
z*SharedNanFunctionsTestsMixin.test_keepdimsc                 C   s^   t  d¡}t| j| jƒD ]@\}}t  d¡}||dd�}||d|d�}t||ƒ t||ƒ qd S rk   ro   rq   r   r   r   rs   Á  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 ©NrY   rt   ZFDGr[   )rv   r]   ©r$   r`   ra   rS   rb   r
   rH   rF   rÓ   ÚComplexWarningrv   rx   r   ©	r&   re   rz   rf   rg   r{   rÖ   rh   ri   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 )Nrt   rY   ru   r[   rl   zres %s, tgt %srw   ry   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[   rl   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    rY   r   rl   r[   )r$   r§   r`   r¨   rS   rª   r   r©   )r&   r    r…   r²   rV   Zexpected_shaperi   r   r   r   r´     s     



z*SharedNanFunctionsTestsMixin.test_subclassN)r   r.   r/   rW   rj   rs   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[   rv   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[   rl   ©
rc   rK   rŽ   r�   ra   rS   r$   r“   r”   rv   ©r&   r]   rv   r…   r    Úidentityrn   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Ú   rY   rl   )ra   r$   r6   r8   rp   r   ©r&   rV   Z	tgt_valuere   rh   ri   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«   rS   r6   rv   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º   rY   r   ru   Fé   iÀ  r¥   rÆ   )r$   r¿   rÈ   r�   r«   rÉ   rÊ   rS   r6   rv   r”   )r&   rv   rÀ   rÇ   rV   rË   rß   r   r   r   rÌ   G  s    
z#TestNanFunctions_SumProd.test_where)r   r.   r/   r$   r6   r8   rS   r7   r9   rb   rK   rL   rM   rÏ   r…   r«   rÐ   r–   rÝ   rÃ   rÌ   r   r   r   r   rþ     s    
þý


rþ   c                	   @   s    e Zd ZejejgZejejgZ	e
j d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[   rv   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Ú   rl   )ra   rS   r$   rp   Ú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 )
NrY   rZ   rm   ©rY   r»   é   é   r   ró   rl   )iƒ  rÄ   )ra   rS   rb   r$   r`   r   rc   r  ÚrandomZRandomStater«   Úrandrª   r   r¿   )	r&   rV   Úgre   r]   rh   ri   r~   Úrsr   r   r   rj   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[   Nrl   )	r$   r=   Ú
_ndat_onesr<   rQ   r   r;   Ú_ndat_zerosr:   )r&   r]   rh   ri   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 )NrY   )r  r  r   r[   rl   rm   )r$   r`   ra   rS   rb   r   )r&   re   rf   rg   rr   r]   rh   ri   r   r   r   rs   “  s    


z$TestNanFunctions_CumSumProd.test_out)r   r.   r/   r$   r:   r<   rS   r;   r=   rb   rK   rL   rM   rÏ   r…   r«   rÐ   r–   rÝ   rj   rƒ   rs   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]   rv   )rS   r$   rÊ   Úint_Úobject_r   Ú	TypeErrorrQ   )r&   rV   rv   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   ru   r[   rm   )
rS   r$   rÊ   r  r  r   rQ   rª   r   r  )r&   rV   rv   rn   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õ   rg   r   r   r   ³  s     z9TestNanFunctions_MeanVarStd.test_ddof.<locals>.<listcomp>r[   ©r]   rõ   )	r$   rF   rH   rG   rI   ra   r�   rQ   r   )r&   rS   rb   rf   rh   ri   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$   rF   rH   rG   rI   r�   ra   Úranger
   r£   r‘   rÓ   rú   rQ   r   r’   r™   r   r¯   Úlog)	r&   rS   rb   Zdsizerf   rg   rÖ   rh   ri   r   rô   r   Útest_ddof_too_big·  s    
z-TestNanFunctions_MeanVarStd.test_ddof_too_bigr]   Nr   r[   rv   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Œ   rl   )rc   rK   rŽ   r�   rS   r�   r‘   r$   r’   r“   r”   r>   rv   Ú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¤   rl   r[   r   rÜ   )r$   rp   rS   r¬   r­   r®   r   r’   r“   r¯   r°   r±   r‘   r   )r&   re   rV   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º   rY   r   ru   Fr¥   )rÇ   )r$   r¿   rÈ   r�   r«   rÉ   rÊ   ra   rS   rb   r>   Úrealrv   r”   r%   Zassert_allclose)	r&   rv   rÀ   rÇ   rV   Zf_stdrË   Zdtype_referencerß   r   r   r   rÌ   ï  s    z&TestNanFunctions_MeanVarStd.test_where)r   r.   r/   r$   r>   rF   rH   rS   r?   rG   rI   rb   r  r  r  r  rK   rL   rM   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     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#   )rQ   rR   r$   r@   r   ©r&   rU   r   r   r   rW   
  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 )NrY   rZ   F©r]   rn   Úoverwrite_inputr  ©rÄ   éÈ   Tr\   ©r[   r[   r[   r[   r  ©r[   r[   r  r	  rÚ   ©r[   r»   r  r[   rÜ   ©rY   r[   r  r	  ©r   r[   r¥   rY   ©r   r[   rY   ©r[   r[   r  r[   )r$   r`   rA   r@   r   rc   r  r
  r…   rª   r�   rá   r«   Útupler
   rÓ   r‘   r   ©r&   re   r]   rh   ri   r~   r³   rÖ   r   r   r   rj     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  r4  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^   rn   )r$   r  r
  r…   rª   r�   rá   r«   r=  rc   r   r  r   r@   r”   r   )r&   r]   r³   Ú	shape_outrn   Úresultr   rF  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 )	NrY   r   r¥   r[   rl   rm   r   r  )	r$   r
  r  Úinsertr«   rp   rA   r@   r   ©r&   re   Únan_matrr   rh   ri   r   r   r   rs   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   r5  iè  rÄ   r   r»   )Úsizer   T)r3  r  rl   )r$   r
  ZrandnÚrandintrQ  r«   ZravelÚcompressr’   r   rA   r	   r@   )r&   r(  r~   r³   rh   Ú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$   rA   r}   r   r   r   r   j  s     z>TestNanFunctions_Median.test_result_values.<locals>.<listcomp>r[   rl   )r�   r$   r@   rQ   r   ©r&   rh   ri   r   r   r   rƒ   i  s    z*TestNanFunctions_Median.test_result_valuesr   rv   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†   rl   r[   rY   r   r¥   rÄ   )r$   rÐ   r«   r�   r
   r£   r‘   r@   rv   r”   r’   r“   r   r¯   r  r…   )r&   rv   r]   re   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$   rp   r¬   r­   r®   r   r’   r@   r“   r¯   r°   r±   r‘   r   ©r&   re   r]   r³   r   r   r   rÝ   ‰  s    

 
z"TestNanFunctions_Median.test_emptyc                 C   s   t t d¡dkƒ d S r›   )r   r$   r@   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  éûÿÿÿrl   ©r   rY  rÄ   ©r   rÄ   ©r[   r[   )r$   r  r   Ú	AxisErrorr@   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   rl   r[   r  i÷ÿÿÿiöÿÿÿr»   rÄ   ru   rµ   g      @ç      @g      @g      $Àg      "Àg      Àr  g      ð¿é
   r¥   )r
   rÓ   r‘   r$   Úinfr…   r«   r   r@   Úfloat32r  )r&   rÖ   rb  Úarë   Újr   r   r   Útest_float_special¢  sR    

ÿþý
"ÿ$ÿz*TestNanFunctions_Median.test_float_special)r   r.   r/   rW   rj   rK   rL   rM   ÚfilterwarningsrK  rs   rU  rƒ   Ú_TYPE_CODESr–   rÝ   rž   r_  rf  r   r   r   r   r0    s.   ûþ

r0  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é   )rQ   rR   r$   rB   r   r1  r   r   r   rW   Ó  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 )NrY   rZ   éF   Fr2  r  r4  éZ   Tr\   r6  r  r7  rÚ   r8  rÜ   r9  r:  r;  r<  )r$   r`   rC   rB   r   rc   r  r
  r…   rª   r�   rá   r«   r=  r
   rÓ   r‘   r   r>  r   r   r   rj   Ù  s6    
ÿÿ
$
z)TestNanFunctions_Percentile.test_keepdimsrñ   r  r[   r]   NrÜ   r  r?  rA  rC  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  r4  rÜ   c                 3   s$   | ]}|ˆ krd nˆj | V  qdS rD  rE  rê   rF  r   r   rG    s    z@TestNanFunctions_Percentile.test_keepdims_out.<locals>.<genexpr>TrH  )r$   r  r
  r…   rª   r�   rá   r«   r=  rc   r   r  r   rB   r”   r   )r&   rñ   r]   r³   rI  rn   rJ  r   rF  r   rK  ö  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 )
NrY   r   r¥   r[   rl   é*   rm   r   r  )	r$   r
  r  rL  r«   rp   rC   rB   r   rM  r   r   r   rs     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$   rC   r}   r   r   r   r   (  s     zBTestNanFunctions_Percentile.test_result_values.<locals>.<listcomp>r  r[   rl   c                 S   s   g | ]}t  |d ¡‘qS )©r  éb   rn  r}   r   r   r   r   ,  s     ro  )r�   r$   rB   rQ   r   Z	transposerV  r   r   r   rƒ   '  s    
z.TestNanFunctions_Percentile.test_result_valuesr   rv   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Œ   é<   rl   )rc   rK   rŽ   r�   r�   r‘   r$   rB   r’   r“   r”   rv   ©r&   r]   rv   r…   rn   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¤   é(   rl   r[   r   rÜ   )r$   rp   r¬   r­   r®   r   r’   rB   r“   r¯   r°   r±   r‘   r   rX  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   rl   g      @)r   r$   rB   r¿   r   Zisscalar)r&   rd  Ú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»   rY  ©rñ   r]   rZ  rÄ   r[  r\  )r$   r  r   r]  rB   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 )Nru  r¼   )rÄ   rY   )rY   rÄ   r»   r   r¥   rÄ   rY   rZ   )FTr‹   r\   )rY   rÄ   r»   rt  )r[   r¥   rl   )r¥   rY   rt  )
r$   r  r«   r
   rÓ   r‘   rC   rB   r   rª   )r&   Úpercre   rN  Z	large_matr]   ZkeepdimrÖ   rØ   Znan_valZmegamatr   r   r   Útest_multiple_percentiles]  s0    


"
ÿ
ÿ
ÿ
z5TestNanFunctions_Percentile.test_multiple_percentiles)r   r.   r/   rW   rj   rK   rL   rM   rg  rK  rs   rƒ   r$   rÏ   r…   r«   rÐ   r–   rÝ   rž   r_  ry  r   r   r   r   ri  Ñ  s:   ûþ

	
þý
ri  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¥   rY   rÄ   r   r[   ró   rð   ru  rw  ç      Ð?ç      è?é   éK   )	r$   r¿   rÈ   r�   Úfloatr«   r   rD   rB   )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   rD   )r&   rT  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…   rR   rD   r¿   r	   Útolist)r&   Úp0Úpr   r   r   Útest_no_p_overwrite�  s    
z-TestNanFunctions_Quantile.test_no_p_overwriter]   Nr   r[   rv   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[   rl   )rc   rK   rŽ   r�   r�   r‘   r$   rD   r’   r“   r”   rv   rr  r   r   r   r–   ›  s    

z&TestNanFunctions_Quantile.test_allnans)r   r.   r/   r�  r‚  r‡  rK   rL   rM   r$   rÏ   r…   r«   rÐ   r–   r   r   r   r   rz  x  s   
þýrz  zarr, expectedr`  Tr[   r  rº   ru   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 )Nru   rà   T)	r$   r   rª   rÊ   r   r   rx   r§   r”   )r¸   Úexpectedrn   Ú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[   ru   Nr¥   FTr  )r$   rÊ   Zint32Úint64r…   r   r”   rc  Zfloat64r“   r   r«   r’   )rv   r¸   rJ  ÚmaskZarr_nanZ
result_nanZmask_nanr   r   r   Útest__replace_nanÆ  s"    
r�  )2r¬   rK   r   Únumpyr$   Znumpy.core.numericr   Znumpy.lib.nanfunctionsr   r   Znumpy.testingr   r   r   r   r	   r
   r…   r«   rQ   r�   r  r  r   rO   rÑ   Z_TEST_ARRAYSr   Ú_vZsetflagsrL   rM   rÏ   Úkeysré   r÷   rþ   r  r  Z_TIME_UNITSr·   rh  r0  ri  rz  rb  r‹  Z	complex64rŠ  r�  r   r   r   r   Ú<module>   s–    ýýýý/ 1_þþ?i;Ia J (3ÿÿÿ
ÿÿ
ÿþõ
