o
    V=ºiÑ²  ã                   @   sô  d dl Z d dlZd dlZd dl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 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 ¡ d-�G d.d/„ d/ƒƒƒZ G d0d1„ d1ƒZ!G d2d3„ d3e!ƒZ"G d4d5„ d5e!ƒZ#G d6d7„ d7e!ƒZ$d8Z%e&ejd* ƒZ'e'd9d:„ e%D ƒ7 Z'G d;d<„ d<ƒZ(G d=d>„ d>ƒZ)G d?d@„ d@ƒZ*ej dAe ejdBejej+g¡e g dC¢¡fejg dD¢ej,dE�dFfe g dC¢¡dFfejejdBgejej+ggej-dE�e d&dFgd&dFgg¡fg¡dGdH„ ƒZ.dIdJ„ Z/dS )Ké    N)Ú	_nan_maskÚ_replace_nan)Úassert_Úassert_equalÚassert_almost_equalÚassert_raisesÚ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   ó   g | ]}|j ‘qS © ©Ú__name__)Ú.0Úkr   r   úgC:\Users\psant\Downloads\PAF backend\school\venv\Lib\site-packages\numpy/lib/tests/test_nanfunctions.pyÚ
<listcomp>8   ó    zTestSignatureMatch.<listcomp>ú...c                 C   sT   g }t  | ¡}|j ¡ D ]}|jt jju r| |¡ q| |j|d�¡ qt  	|¡S )z?Construct a signature and replace all default parameter-values.)ÚdefaultN)
Ú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)r0   ÚnpÚtestingr   )ÚselfZnan_funcr/   r'   Znan_signaturer   r   r!   Útest_signature_matchF   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)r4   r5   r   ÚsetÚIDSÚlibZnanfunctionsÚ__all__©r6   r   r   r!   Útest_exhaustivenessO   s   ÿz&TestSignatureMatch.test_exhaustivenessN)r$   )*r   Ú
__module__Ú__qualname__r4   Ú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NANFUNCSr9   Ústaticmethodr0   ÚpytestÚmarkÚparametrizeÚitemsr7   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   ó*   t  ¡ }| jD ]}||ƒ t|t ƒ qd S r3   ©Ú_ndatÚcopyÚnanfuncsr   ©r6   ÚndatÚfr   r   r!   Útest_mutation[   ó
   
þz%TestNanFunctions_MinMax.test_mutationc                 C   ó\   t  d¡}t| j| jƒD ]\}}dD ]}|||dd�}|||dd�}t|j|jkƒ qqd S ©Né   ©Nr   é   T©ÚaxisÚkeepdims©r4   ÚeyeÚziprd   Ústdfuncsr   Úndim©r6   ÚmatÚnfÚrfrp   ÚtgtÚresr   r   r!   Útest_keepdimsb   ó   
ýÿz%TestNanFunctions_MinMax.test_keepdimsc                 C   ó^   t  d¡}t| j| jƒD ] \}}t  d¡}||dd�}||d|d�}t||ƒ t||ƒ qd S ©Nrl   rn   ©rp   ©rp   Úout©r4   rs   rt   rd   ru   Úzerosr   ©r6   rx   ry   rz   Úresoutr{   r|   r   r   r!   Útest_outj   ó   


ûz TestNanFunctions_MinMax.test_outc                 C   s�   d}t | j| jƒD ]<\}}|D ]5}tjd|d�}||dd�jj}||dd�jj}t||u ƒ ||d d�jj}||d d�jj}t||u ƒ qq	d S )NÚefdgFDGrl   ©Údtypern   r�   ©rt   rd   ru   r4   rs   rŒ   Útyper   ©r6   Úcodesry   rz   Úcrx   r{   r|   r   r   r!   Útest_dtype_from_inputs   s   øÿz-TestNanFunctions_MinMax.test_dtype_from_inputc                    óD   t | j| jƒD ]\}‰ ‡ fdd„tD ƒ}|tdd�}t||ƒ qd S )Nc                    ó   g | ]}ˆ |ƒ‘qS r   r   ©r   Úd©rz   r   r!   r"   ‚   ó    z>TestNanFunctions_MinMax.test_result_values.<locals>.<listcomp>rn   r�   ©rt   rd   ru   Ú_rdatrb   r   ©r6   ry   r{   r|   r   r—   r!   Útest_result_values€   ó
   ýz*TestNanFunctions_MinMax.test_result_valuesrp   rm   rŒ   ÚAllFloatÚarray©rl   rl   Ú0dÚ2dr1   c              	   C   s–   |d ur|j dkrt d¡ | |¡}d}| jD ]0}tjt|d�� |||d�}W d   ƒ n1 s2w   Y  t |¡ 	¡ s@J ‚|j
|j
ksHJ ‚qd S ©Nr   ú*`axis != None` not supported for 0d arraysúAll-NaN slice encountered©Úmatchr�   )rv   r[   ÚskipÚastyperd   ÚwarnsÚRuntimeWarningr4   ÚisnanÚallrŒ   ©r6   rp   rŒ   rŸ   r§   r/   rƒ   r   r   r!   Útest_allnans†   s   


ÿüz$TestNanFunctions_MinMax.test_allnansc                 C   sj   t j t¡}|j ¡ }t jfD ]#}||dd�}|tdd�}t||ƒ t|j|ƒ tt  	|¡ 
¡  ƒ qd S )Nrn   r�   )r4   ÚmaZfix_invalidrb   Z_maskrc   r@   r   r   ÚisinfÚany)r6   rx   Zmskrg   r|   r{   r   r   r!   Útest_masked˜   s   

ûz#TestNanFunctions_MinMax.test_maskedc                 C   ó    | j D ]
}t|dƒdkƒ qd S ©Nr   ©rd   r   ©r6   rg   r   r   r!   Útest_scalar¢   ó   
ÿz#TestNanFunctions_MinMax.test_scalarc              	   C   s8  G dd„ dt jƒ}t  d¡ |¡}| jD ]5}||dd�}tt||ƒƒ t|jdkƒ ||dd�}tt||ƒƒ t|jdkƒ ||ƒ}t|jdkƒ qt j|d< | jD ]Ç}t	j
d	d
��-}t	 d¡ ||dd�}tt||ƒƒ tt  t  |¡¡ ƒ tt|ƒdkƒ W d   ƒ n1 sŠw   Y  t	j
d	d
��F}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Þw   Y  t	j
d	d
��'}t	 d¡ ||ƒ}t|jdkƒ t|t jkƒ tt|ƒdkƒ W d   ƒ qR1 �sw   Y  qRd S )Nc                   @   ó   e Zd ZdS )z8TestNanFunctions_MinMax.test_subclass.<locals>.MyNDArrayN©r   r>   r?   r   r   r   r!   Ú	MyNDArray§   ó    r¼   rl   r   r�   ©rl   rn   r   T©ÚrecordÚalwaysé   úno warning raised)r4   Úndarrayrs   Úviewrd   r   Ú
isinstanceÚshapeÚnanÚwarningsÚcatch_warningsÚsimplefilterr²   r¬   ÚlenÚ
issubclassÚcategoryr«   )r6   r¼   Úminerg   r|   Úwr   r   r!   Útest_subclass¦   sL   



û
 ÿù	
 ûïz%TestNanFunctions_MinMax.test_subclassc                 C   sÐ   t jddgt jdgt jt jggtd�}tt  |¡dƒ tt j|dd�ddgƒ tjdd��1}t d	¡ tt	t j|d
d�ƒddt jgƒ t
t|ƒd
kdƒ t
t|d jtƒƒ W d   ƒ d S 1 saw   Y  d S )Nr   g       @ç      @r‹   r   r�   Tr¿   rÁ   rn   rÃ   )r4   rŸ   rÈ   Úobjectr   r@   rÉ   rÊ   rË   Úlistr   rÌ   rÍ   rÎ   r«   )r6   ÚarrrÐ   r   r   r!   Útest_object_arrayÑ   s   &
 "ûz)TestNanFunctions_MinMax.test_object_arrayc                 C   s¤   G dd„ dt jƒ}t  d¡ |¡}t j|d d…< | jD ]4}|t ju r$dnd}|||d�}|j|ks3J ‚||ks9J ‚|| |¡|d�}|j|ksIJ ‚||ksOJ ‚qd S )Nc                   @   rº   )z7TestNanFunctions_MinMax.test_initial.<locals>.MyNDArrayNr»   r   r   r   r!   r¼   ß   r½   r¼   é	   é   éd   r   ©Úinitial)	r4   rÄ   Úaranger©   rÈ   rd   rA   rŒ   rÅ   )r6   rŒ   r¼   Úarrg   rÛ   Úret1Úret2r   r   r!   Útest_initialÝ   s   
÷z$TestNanFunctions_MinMax.test_initialc           	      C   sÔ   G dd„ dt jƒ}t  d¡ dd¡ |¡}t j|dd d …f< t j|t jd�}d|d d …df< | jD ]6}|t j	u r:dnd	}|||d
d�}|j
|ksJJ ‚||ksPJ ‚|| |¡|d
d�}|j
|ksaJ ‚||ksgJ ‚q1d S )Nc                   @   rº   )z5TestNanFunctions_MinMax.test_where.<locals>.MyNDArrayNr»   r   r   r   r!   r¼   ò   r½   r¼   r×   rl   r   r‹   Fé   é   rØ   ©ÚwhererÛ   )r4   rÄ   rÜ   Úreshaper©   rÈ   Ú	ones_likeÚbool_rd   r@   rŒ   rÅ   )	r6   rŒ   r¼   rÝ   rä   rg   Ú	referencerÞ   rß   r   r   r!   Ú
test_whereð   s   
÷z"TestNanFunctions_MinMax.test_whereN)r   r>   r?   r4   r@   rA   rd   ÚminÚmaxru   rh   r}   rˆ   r’   rœ   r[   r\   r]   Ú	typecodesrŸ   rÈ   Úfullr¯   r³   r¸   rÑ   rÖ   rà   ré   r   r   r   r!   r_   V   s2    	
þý
+
r_   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   r`   r3   ra   re   r   r   r!   rh   
  ri   z+TestNanFunctions_ArgminArgmax.test_mutationc              
   C   s°   t | jtjtjgƒD ]K\}}tD ]D}tƒ �7}| td¡ ||ƒ}|| }t	t 
|¡ ƒ t	|||ƒ ¡  ƒ t	t ||d |… ¡ ¡  ƒ W d   ƒ q1 sOw   Y  qq
d S )Nzinvalid value encountered in)rt   rd   r4   ZgreaterZlessrb   r	   Úfilterr«   r   r¬   r²   Úequal)r6   rg   ZfcmpÚrowÚsupÚindÚvalr   r   r!   rœ     s    øÿÿz0TestNanFunctions_ArgminArgmax.test_result_valuesrp   rm   rŒ   rž   rŸ   r    r¡   r¢   r1   c              	   C   sp   |d ur|j dkrt d¡ | |¡}| jD ]}tjtdd�� |||d� W d   ƒ q1 s0w   Y  qd S r£   )rv   r[   r¨   r©   rd   ZraisesÚ
ValueError)r6   rp   rŒ   rŸ   r/   r   r   r!   r¯     s   


ÿÿz*TestNanFunctions_ArgminArgmax.test_allnansc                 C   sZ   t  d¡}| jD ]"}dD ]
}tt|||d� qdD ]}|||d�}t|t  d¡ƒ qqd S )N©r   rl   ©r   Nr�   ©rn   r   )r4   r…   rd   r   rõ   r   )r6   rx   rg   rp   r|   r   r   r!   Ú
test_empty-  s   

þýz(TestNanFunctions_ArgminArgmax.test_emptyc                 C   r´   rµ   r¶   r·   r   r   r!   r¸   6  r¹   z)TestNanFunctions_ArgminArgmax.test_scalarc                 C   s˜   G dd„ dt jƒ}t  d¡ |¡}| jD ]5}||dd�}tt||ƒƒ t|jdkƒ ||dd�}tt||ƒƒ t|jdkƒ ||ƒ}t|jdkƒ qd S )	Nc                   @   rº   )z>TestNanFunctions_ArgminArgmax.test_subclass.<locals>.MyNDArrayNr»   r   r   r   r!   r¼   ;  r½   r¼   rl   r   r�   r¾   rn   r   )r4   rÄ   rs   rÅ   rd   r   rÆ   rÇ   )r6   r¼   rÏ   rg   r|   r   r   r!   rÑ   :  s   
øz+TestNanFunctions_ArgminArgmax.test_subclassc                 C   sh   t  d¡ |¡}t j|d d…< | jD ]}|t ju rdnd}||dd�}|j|jks+J ‚||ks1J ‚qd S )Nr×   rØ   râ   T)rq   )r4   rÜ   r©   rÈ   rd   rB   rv   ©r6   rŒ   rÝ   rg   rè   Úretr   r   r!   r}   K  s   
üz+TestNanFunctions_ArgminArgmax.test_keepdimsc                 C   st   t  d¡ |¡}t j|d d…< | jD ]%}t jdt jd�}|t ju r#dnd}|||d�}||u s1J ‚||ks7J ‚qd S )Nr×   rØ   r   r‹   râ   ©rƒ   )r4   rÜ   r©   rÈ   rd   r…   ÚintprB   )r6   rŒ   rÝ   rg   rƒ   rè   rû   r   r   r!   rˆ   V  s   
ûz&TestNanFunctions_ArgminArgmax.test_outN)r   r>   r?   r4   rB   rD   rd   rh   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   r1   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   r   r   r   )r   Úir   r   r!   r"   €  r#   z'TestNanFunctions_NumberTypes.<listcomp>znanfunc,funcr1   Úignore)Zoverc                 C   sX   |  |¡}||ƒ}||ƒ}t||ƒ |dkr"t|ƒt|ƒu s J ‚d S |j|jks*J ‚d S )Nr  ©r©   r   rŽ   rŒ   ©r6   rx   rŒ   Znanfuncr/   r{   rƒ   r   r   r!   Útest_nanfunc‚  s   

z)TestNanFunctions_NumberTypes.test_nanfuncrT   rR   c                 C   ó`   |  |¡}||dd�}||dd�}t||ƒ |dkr&t|ƒt|ƒu s$J ‚d S |j|jks.J ‚d S )Nrn   ©Úqr  r  r	  r   r   r!   Útest_nanfunc_q�  ó   

z+TestNanFunctions_NumberTypes.test_nanfunc_qrV   rX   c                 C   r  )Nç      à?©Úddofr  r  r	  r   r   r!   Útest_nanfunc_ddofŸ  r  z.TestNanFunctions_NumberTypes.test_nanfunc_ddofN)*r   r>   r?   r4   r@   rê   rA   rë   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rV   rW   rX   rY   rd   Znanfunc_idsr[   r\   r]   r^   Zerrstater
  rT   rU   rR   rS   r  r  r   r   r   r!   r  l  s<    ô
ý
ý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   r`   r3   ra   re   r   r   r!   rh   ±  ri   z*SharedNanFunctionsTestsMixin.test_mutationc                 C   rj   rk   rr   rw   r   r   r!   r}   ¸  r~   z*SharedNanFunctionsTestsMixin.test_keepdimsc                 C   r   r€   r„   r†   r   r   r!   rˆ   À  r‰   z%SharedNanFunctionsTestsMixin.test_outc           	   
   C   sö   t  d¡}d}t| j| jƒD ]j\}}|D ]c}tƒ �V}|t jt jhv r,|dv r,| t j	¡ ||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 srw   Y  qqd S ©Nrl   rŠ   ZFDGrn   )rŒ   rp   ©r4   rs   rt   rd   ru   r	   rX   rV   rï   ÚComplexWarningrŒ   rŽ   r   ©	r6   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 ]W}tƒ �J}|t jt jhv r,|dv r,| t j	¡ |||dd�j
j}|||dd�j
j}t||u ƒ |||d d�j
j}|||d d�j
j}t||u ƒ W d   ƒ q1 sfw   Y  qqd S r  r  r  r   r   r!   Útest_dtype_from_charÚ  s    
öÿÿz1SharedNanFunctionsTestsMixin.test_dtype_from_charc                 C   sš   d}t | j| jƒD ]A\}}|D ]:}tjd|d�}||dd�jj}||dd�jj}t||u d||f ƒ ||d d�jj}||d d�jj}t||u ƒ qq	d S )NrŠ   rl   r‹   rn   r�   zres %s, tgt %sr�   r�   r   r   r!   r’   ë  s   øÿz2SharedNanFunctionsTestsMixin.test_dtype_from_inputc                    r“   )Nc                    r”   r   r   r•   r—   r   r!   r"   ú  r˜   zCSharedNanFunctionsTestsMixin.test_result_values.<locals>.<listcomp>rn   r�   r™   r›   r   r—   r!   rœ   ø  r�   z/SharedNanFunctionsTestsMixin.test_result_valuesc                 C   r´   rµ   r¶   r·   r   r   r!   r¸   þ  r¹   z(SharedNanFunctionsTestsMixin.test_scalarc                 C   sÐ   G dd„ dt jƒ}t  d¡}| |¡}| jD ]O}||dd�j}||dd�}tt||ƒƒ t|j|kƒ ||dd�j}||dd�}tt||ƒƒ t|j|kƒ ||ƒj}||ƒ}tt||ƒƒ t|j|kƒ qd S )Nc                   @   rº   )z=SharedNanFunctionsTestsMixin.test_subclass.<locals>.MyNDArrayNr»   r   r   r   r!   r¼     r½   r¼   rl   r   r�   rn   )r4   rÄ   rs   rÅ   rd   rÇ   r   rÆ   )r6   r¼   rŸ   rÏ   rg   Zexpected_shaper|   r   r   r!   rÑ     s"   



ôz*SharedNanFunctionsTestsMixin.test_subclassN)r   r>   r?   rh   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¢   r1   c                 C   sr   |d ur|j dkrt d¡ | |¡}t| jddgƒD ]\}}|||d�}t ||k¡s.J ‚|j|jks6J ‚qd S )Nr   r¤   rn   r�   ©	rv   r[   r¨   r©   rt   rd   r4   r­   rŒ   ©r6   rp   rŒ   rŸ   r/   Úidentityrƒ   r   r   r!   r¯     s   

ýz%TestNanFunctions_SumProd.test_allnansc                 C   s‚   t tjtjgddgƒD ]3\}}t d¡}|gd }||dd�}t||ƒ g }||dd�}t||ƒ |}||d d�}t||ƒ qd S )Nr   rn   rö   rl   r�   )rt   r4   rF   rH   r…   r   ©r6   rg   Z	tgt_valuerx   r{   r|   r   r   r!   rù   .  s   



öz#TestNanFunctions_SumProd.test_emptyc                 C   sf   t  d¡ |¡}t j|d d…< | jD ]}|t ju rdnd}||dd�}|j|ks*J ‚||ks0J ‚qd S )Nr×   rØ   é   i   rÂ   rÚ   )r4   rÜ   r©   rÈ   rd   rF   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u r1dnd}|||dd	�}|j	|ksAJ ‚||ksGJ ‚q(d S )
Nr×   rl   r   r‹   Fé   iÀ  rÂ   rã   )
r4   rÜ   rå   r©   rÈ   ræ   rç   rd   rF   rŒ   )r6   rŒ   rÝ   rä   rg   rè   rû   r   r   r!   ré   F  s   
üz#TestNanFunctions_SumProd.test_whereN)r   r>   r?   r4   rF   rH   rd   rG   rI   ru   r[   r\   r]   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dd„ Zdd„ Zdd„ ZdS )ÚTestNanFunctions_CumSumProdrp   rm   rŒ   rž   rŸ   r    r¡   r¢   r1   c                 C   sn   |d ur|j dkrt d¡ | |¡}t| jddgƒD ]\}}||ƒ}t ||k¡s,J ‚|j|jks4J ‚qd S )Nr   r¤   rn   r  r  r   r   r!   r¯   Y  s   

ýz(TestNanFunctions_CumSumProd.test_allnansc                 C   s†   t | jddgƒD ]8\}}t d¡}|t d¡ }||dd�}t||ƒ |}||dd�}t||ƒ t d¡}||d d�}t||ƒ qd S )Nr   rn   rö   r�   )rt   rd   r4   r…   Úonesr   r  r   r   r!   rù   i  s   



öz&TestNanFunctions_CumSumProd.test_emptyc           	      C   sÔ   t | j| jƒD ]$\}}t d¡}dD ]}|||d d�}|||d d�}t|j|jkƒ qq| jD ]8}t d¡}tj 	d¡}tj
||j|jŽ dk < ||d d�}t|jdƒ t d	¡D ]}|||d�}t|jdƒ qXq/d S )
Nrl   rm   r‚   ©rl   rØ   é   é   r   r  r�   )iƒ  rá   )rt   rd   ru   r4   rs   r   rv   r#  ÚrandomZRandomStaterÈ   ÚrandrÇ   r   rÜ   )	r6   rg   Úgrx   rp   r{   r|   r–   Úrsr   r   r!   r}   v  s$   
ý

þùz)TestNanFunctions_CumSumProd.test_keepdimsc                 C   sZ   dD ](}t jt|d�}t jt|d�}t||ƒ t jt|d�}t jt|d�}t||ƒ qd S )N)éþÿÿÿéÿÿÿÿr   rn   Nr�   )	r4   rM   Ú
_ndat_onesrL   rb   r   rK   Ú_ndat_zerosrJ   )r6   rp   r{   r|   r   r   r!   rœ   ‰  s   
úz.TestNanFunctions_CumSumProd.test_result_valuesc                 C   sh   t  d¡}t| j| jƒD ]%\}}t  d¡}dD ]}|||d�}||||d�}t||ƒ t||ƒ qqd S )Nrl   )r+  r,  r   rn   r�   r‚   )r4   rs   rt   rd   ru   r   )r6   rx   ry   rz   r‡   rp   r{   r|   r   r   r!   rˆ   ’  s   


üþz$TestNanFunctions_CumSumProd.test_outN)r   r>   r?   r4   rJ   rL   rd   rK   rM   ru   r[   r\   r]   rì   rŸ   rÈ   rí   r¯   rù   r}   rœ   rˆ   r   r   r   r!   r"  T  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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Œ   )rd   r4   rç   Úint_Úobject_r   Ú	TypeErrorrb   )r6   rg   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‚   )
rd   r4   rç   r0  r1  r+   rb   rÇ   r   r2  )r6   rg   rŒ   rƒ   r   r   r!   Útest_out_dtype_error§  s   
þÿz0TestNanFunctions_MeanVarStd.test_out_dtype_errorc                    sf   t jt jg}t jt jg}t||ƒD ]\}‰dD ]‰ ‡ ‡fdd„tD ƒ}|tdˆ d�}t||ƒ qqd S )N©r   rn   c                    s   g | ]}ˆ|ˆ d �‘qS )r  r   r•   ©r  rz   r   r!   r"   ²  ó    z9TestNanFunctions_MeanVarStd.test_ddof.<locals>.<listcomp>rn   ©rp   r  )	r4   rV   rX   rW   rY   rt   rš   rb   r   )r6   rd   ru   ry   r{   r|   r   r6  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 ]X\}}tdƒD ]O‰ tƒ �B}| 	t
¡ | t j¡ ‡ fdd„|D ƒ}|tdˆ d�}tt  |¡|ƒ t|ƒrWtt|jƒdkƒ n	tt|jƒdkƒ W d   ƒ q 1 sjw   Y  q qd S )Nc                 S   s   g | ]}t |ƒ‘qS r   )rÌ   r•   r   r   r!   r"   ¹  r˜   zATestNanFunctions_MeanVarStd.test_ddof_too_big.<locals>.<listcomp>rØ   c                    s   g | ]}ˆ |k‘qS r   r   r•   r  r   r!   r"   ¿  r˜   rn   r8  r   )r4   rV   rX   rW   rY   rš   rt   Úranger	   rÀ   r«   rï   r  rb   r   r¬   r²   r   rÌ   Úlog)	r6   rd   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¢   r1   c              	   C   s¸   |d ur|j dkrt d¡ | |¡}d}| jD ]A}tjt|d�� |||d�}W d   ƒ n1 s2w   Y  t |¡ 	¡ s@J ‚|tj
u rN|j|jksMJ ‚q|jt |¡jksYJ ‚qd S )Nr   r¤   z:(Degrees of freedom <= 0 for slice.)|(Mean of empty slice)r¦   r�   )rv   r[   r¨   r©   rd   rª   r«   r4   r¬   r­   rN   rŒ   Úabsr®   r   r   r!   r¯   Ç  s   


ÿ
öz(TestNanFunctions_MeanVarStd.test_allnansc              
   C   s   t  d¡}| jD ]u}dD ]<}tjdd��,}t d¡ tt  |||d�¡ ¡ ƒ tt	|ƒdkƒ tt
|d jtƒƒ W d   ƒ q1 sCw   Y  qd	D ]1}tjdd��!}t d¡ t|||d�t  g ¡ƒ tt	|ƒdkƒ W d   ƒ qK1 sww   Y  qKqd S ©
Nrö   r÷   Tr¿   rÁ   r�   rn   r   rø   )r4   r…   rd   rÉ   rÊ   rË   r   r¬   r­   rÌ   rÍ   rÎ   r«   r   )r6   rx   rg   rp   rÐ   r   r   r!   rù   ß  s"   


ü
ýÿùz&TestNanFunctions_MeanVarStd.test_emptyc           	      C   s¸   t  d¡ dd¡ |¡}t j|dd d …f< t j|t jd�}d|d d …df< t| j| j	ƒD ]-\}}||| dd … ƒ}|t j
u rA|n|jj}|||d�}|j|ksRJ ‚t j ||¡ q,d S )Nr×   rl   r   r‹   FrÂ   )rä   )r4   rÜ   rå   r©   rÈ   ræ   rç   rt   rd   ru   rN   ÚrealrŒ   r5   Zassert_allclose)	r6   rŒ   rÝ   rä   rg   Zf_stdrè   Zdtype_referencerû   r   r   r!   ré   î  s   úz&TestNanFunctions_MeanVarStd.test_whereN)r   r>   r?   r4   rN   rV   rX   rd   rO   rW   rY   ru   r3  r4  r9  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"     r7  r"   c                   @   s|   e Zd 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¡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 r3   )rb   rc   r4   rP   r   ©r6   rf   r   r   r!   rh   	  s   
z%TestNanFunctions_Median.test_mutationc                 C   sn  t  d¡}dD ]}t j||d dd�}t j||d dd�}t|j|jkƒ qt  d¡}t j d¡t  |j	¡d d …d f  }| 
t j¡}t j|t|ƒ< tƒ �b}| t¡ t j|d dd�}t|j	d	ƒ t j|d
dd�}t|j	dƒ t j|ddd�}t|j	dƒ t j|ddd�}t|j	dƒ t j|ddd�}t|j	d	ƒ t j|ddd�}t|j	dƒ W d   ƒ d S 1 s°w   Y  d S )Nrl   rm   F©rp   rƒ   Úoverwrite_inputr$  ©rá   éÈ   Tro   ©rn   rn   rn   rn   r5  ©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   )r4   rs   rQ   rP   r   rv   r#  r'  rŸ   rÇ   r©   rý   rÈ   Útupler	   rï   r«   r   ©r6   rx   rp   r{   r|   r–   rÐ   rò   r   r   r!   r}     s0   

$
"óz%TestNanFunctions_Median.test_keepdimsc                 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   r5  )	r4   r'  r(  ÚinsertrÈ   r…   rQ   rP   r   ©r6   rx   Únan_matr‡   r{   r|   r   r   r!   rˆ   *  s   






z TestNanFunctions_Median.test_outc                 C   sž   dD ]J}t j d|¡}t jjd|j|jd d�}t j| ¡ |< d|d d …df< g }|D ]}t  t  |¡ |¡}| 	t j
|dd�¡ q+tt j|d	d
�|ƒ qd S )N)rØ   é   é3   rS  iè  rá   r   rØ   )Úsizer   T)rQ  r,  r�   )r4   r'  ZrandnÚrandintrb  rÈ   ZravelÚcompressr¬   r,   rQ   r   rP   )r6   rF  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   )r4   rQ   r•   r   r   r!   r"   M  s    z>TestNanFunctions_Median.test_result_values.<locals>.<listcomp>rn   r�   )rš   r4   rP   rb   r   ©r6   r{   r|   r   r   r!   rœ   L  s   z*TestNanFunctions_Median.test_result_valuesrp   rm   rŒ   c                 C   s$  t  dt j¡ |¡}tƒ �{}| t¡ t j||d�}|j|jks"J ‚t  	|¡ 
¡ s+J ‚|d u r9tt|jƒdkƒ n	tt|jƒdkƒ t  t j¡ |¡d }t  |¡}|j|jksZJ ‚t  	|¡saJ ‚|d u rott|jƒdkƒ ntt|jƒdkƒ W d   ƒ d S W d   ƒ d S 1 s‹w   Y  d S )Nr    r�   rn   rl   r   rÂ   rá   )r4   rí   rÈ   r©   r	   rÀ   r«   rP   rŒ   r¬   r­   r   rÌ   r;  rŸ   )r6   rŒ   rp   rx   rò   ÚoutputZscalarZoutput_scalarr   r   r!   r¯   Q  s&   

ë"íz$TestNanFunctions_Median.test_allnansc              	   C   sø   t  d¡}dD ]=}tjdd��-}t d¡ tt  t j||d�¡ ¡ ƒ tt	|ƒdkƒ tt
|d jtƒƒ W d   ƒ q1 s?w   Y  qd	D ]2}tjdd��"}t d¡ tt j||d�t  g ¡ƒ tt	|ƒdkƒ W d   ƒ qG1 stw   Y  qGd S r>  )r4   r…   rÉ   rÊ   rË   r   r¬   rP   r­   rÌ   rÍ   rÎ   r«   r   ©r6   rx   rp   rÐ   r   r   r!   rù   l  s   

ü
ýÿz"TestNanFunctions_Median.test_emptyc                 C   s   t t d¡dkƒ d S rµ   )r   r4   rP   r<   r   r   r!   r¸   z  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$  éûÿÿÿr�   ©r   rj  rá   ©r   rá   ©rn   rn   )r4   r#  r   Ú	AxisErrorrP   rõ   ©r6   r–   r   r   r!   Útest_extended_axis_invalid}  s   
z2TestNanFunctions_Median.test_extended_axis_invalidc              	   C   sö  t ƒ ��l}| t¡ tjtj fD �]U}t |tjgtjtjgg¡}ttj|dd�|tjgƒ ttj|dd�|tjgƒ tt |¡|ƒ t tjtj|gtjtj|gg¡}tt |¡|ƒ ttj|dd�tjtj|gƒ ttj|dd�|ƒ t ||g||gg¡}ttj|dd�|ƒ tj|d| dgdtjtjdgdtjtj|ggtj	d	�}|dk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 ]z}t
ddƒD ]r}t tjg| |g|  gd ¡}tt |¡|ƒ ttj|dd�|ƒ ttj|dd�tjg| |g|  ƒ t tjg| | g|  gd ¡}tt |¡| ƒ ttj|dd�| ƒ ttj|dd�tjg| | g|  ƒ qóqìqW d   ƒ d S 1 �stw   Y  d S )Nr   r�   rn   r%  i÷ÿÿÿiöÿÿÿrØ   rá   r‹   rÒ   g      @ç      @g      @g      $Àg      "Àg      Àr,  g      ð¿é
   rÂ   )r	   rï   r«   r4   ÚinfrŸ   rÈ   r   rP   Úfloat32r:  )r6   rò   rs  Úar  Újr   r   r!   Útest_float_special…  sZ   

ÿþý"ÿ$ÿöÿã$þz*TestNanFunctions_Median.test_float_specialN)r   r>   r?   rh   r}   rˆ   rf  rœ   r[   r\   r]   Ú_TYPE_CODESr¯   rù   r¸   rp  rw  r   r   r   r!   rN    s    rN  c                	   @   s¦   e Z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dS )ÚTestNanFunctions_Percentilec                 C   s"   t  ¡ }t |d¡ t|t ƒ d S )Né   )rb   rc   r4   rR   r   rO  r   r   r!   rh   ¶  s   z)TestNanFunctions_Percentile.test_mutationc                 C   s~  t  d¡}dD ]}t j|d|d dd�}t j|d|d dd�}t|j|jkƒ qt  d¡}t j d¡t  |j	¡d d …d f  }| 
t j¡}t j|t|ƒ< tƒ �h}| t¡ t j|dd d	d
�}t|j	dƒ t j|ddd	d
�}t|j	dƒ t j|ddd	d
�}t|j	dƒ t j|ddd	d
�}t|j	dƒ t j|ddd	d
�}t|j	dƒ t j|ddd	d
�}t|j	dƒ W d   ƒ d S 1 s¸w   Y  d S )Nrl   rm   éF   FrP  r$  rR  éZ   Tro   rT  r5  rU  rö   rV  rø   rW  rX  rY  rZ  )r4   rs   rS   rR   r   rv   r#  r'  rŸ   rÇ   r©   rý   rÈ   r[  r	   rï   r«   r   r\  r   r   r!   r}   ¼  s8   
ÿÿ
$
"óz)TestNanFunctions_Percentile.test_keepdimsc                 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 )
Nrl   r   rÂ   rn   r�   é*   r‚   r   r5  )	r4   r'  r(  r]  rÈ   r…   rS   rR   r   r^  r   r   r!   rˆ   Ù  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   ó   g | ]}t  |d ¡‘qS )r   ©r4   rS   r•   r   r   r!   r"   ì  r7  zBTestNanFunctions_Percentile.test_result_values.<locals>.<listcomp>r   rn   r�   c                 S   r~  )©r   éb   r  r•   r   r   r!   r"   ð  r7  r€  )rš   r4   rR   rb   r   Z	transposerg  r   r   r!   rœ   ë  s   
z.TestNanFunctions_Percentile.test_result_valuesrp   rm   rŒ   rž   rŸ   r    r¡   r¢   r1   c                 C   óŠ   |d ur|j dkrt d¡ | |¡}tjtdd�� tj|d|d�}W d   ƒ n1 s-w   Y  t |¡ 	¡ s;J ‚|j
|j
ksCJ ‚d S )Nr   r¤   r¥   r¦   é<   r�   )rv   r[   r¨   r©   rª   r«   r4   rR   r¬   r­   rŒ   ©r6   rp   rŒ   rŸ   rƒ   r   r   r!   r¯   ô  ó   

ÿz(TestNanFunctions_Percentile.test_allnansc              
   C   sü   t  d¡}dD ]>}tjdd��.}t d¡ tt  t j|d|d�¡ ¡ ƒ tt	|ƒdkƒ tt
|d	 jtƒƒ W d   ƒ q1 s@w   Y  qd
D ]3}tjdd��#}t d¡ tt j|d|d�t  g ¡ƒ tt	|ƒd	kƒ W d   ƒ qH1 svw   Y  qHd S )Nrö   r÷   Tr¿   rÁ   é(   r�   rn   r   rø   )r4   r…   rÉ   rÊ   rË   r   r¬   rR   r­   rÌ   rÍ   rÎ   r«   r   ri  r   r   r!   rù     s   

ü
ýÿz&TestNanFunctions_Percentile.test_emptyc                 C   sH   t t dd¡dƒ t d¡}tj|ddd�}t |dƒ tt |¡ƒ d S )Nr   rÙ   é   é2   r   r�   g      @)r   r4   rR   rÜ   r   Zisscalar)r6   ru  Úrr   r   r!   r¸     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Ø   rj  ©r  rp   rk  rá   rl  rm  )r4   r#  r   rn  rR   rõ   ro  r   r   r!   rp    s   
z6TestNanFunctions_Percentile.test_extended_axis_invalidc              
   C   s0  ddg}t  d¡}t j| }t  d¡}d|d d …ddd…d d …f< |d d …d d …dd …f  d9  < d	D ]P}d
D ]K}tƒ �>}| td¡ t j||||d�}t j||||d�}	t|	j	|j	ƒ t j||||d�}t j||||d�}	t|	|ƒ W d   ƒ q81 s~w   Y  q8q4t  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‡  )
r4   r#  rÈ   r	   rï   r«   rS   rR   r   rÇ   )r6   Úpercrx   r_  Z	large_matrp   Zkeepdimrò   rô   Znan_valZmegamatr   r   r!   Útest_multiple_percentiles!  s4   


"
ÿ
ÿ
ÿõÿ
z5TestNanFunctions_Percentile.test_multiple_percentilesN)r   r>   r?   rh   r}   rˆ   rœ   r[   r\   r]   r4   rì   rŸ   rÈ   rí   r¯   rù   r¸   rp  rŒ  r   r   r   r!   ry  ´  s$    	
þý
ry  c                	   @   s~   e Z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_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|g d¢dd
�t j|g d¢dd
�ƒ d S )Né   rÂ   rl   rá   r   rn   r  r  rˆ  rŠ  )ç      Ð?r  ç      è?)é   rˆ  éK   )	r4   rÜ   rå   r©   ÚfloatrÈ   r   rT   rR   )r6   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      ü?)r4   rÜ   r   rT   )r6   re  r   r   r!   Ú
test_basicM  s   z$TestNanFunctions_Quantile.test_basicc                 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midpoint)Úmethod)r4   rŸ   rc   rT   rÜ   r   Útolist)r6   Zp0Úpr   r   r!   Útest_no_p_overwriteS  s   
z-TestNanFunctions_Quantile.test_no_p_overwriterp   rm   rŒ   rž   rŸ   r    r¡   r¢   r1   c                 C   r‚  )Nr   r¤   r¥   r¦   rn   r�   )rv   r[   r¨   r©   rª   r«   r4   rT   r¬   r­   rŒ   r„  r   r   r!   r¯   _  r…  z&TestNanFunctions_Quantile.test_allnansN)r   r>   r?   r”  r•  r™  r[   r\   r]   r4   rì   rŸ   rÈ   rí   r¯   r   r   r   r!   r�  <  s    
þýr�  zarr, expectedrq  )FTFT)rn   rØ   r%  r×   r‹   Tc                 C   sP   d t j| jt jd�fD ]}t| |d�}t||ƒ t|ƒt jur%|du s%J ‚qd S )Nr‹   rü   T)r4   r+   rÇ   rç   r   r   rŽ   rÄ   )rÕ   Úexpectedrƒ   Úactualr   r   r!   Útest__nan_masko  s   
€ùrœ  c                  C   s  t jt jt jfD ]} t jddg| d�}t|dƒ\}}|du s J ‚||u s&J ‚qt jt jfD ]Z} t jddg| d�}t|dƒ\}}|dk ¡ sGJ ‚||usMJ ‚t	||ƒ t jddt j
g| d�}t|dƒ\}}t	|t  g d¢¡ƒ ||ustJ ‚t	|t  g d¢¡ƒ t  |d	 ¡s‡J ‚q-dS )
z] Test that _replace_nan returns the original array if there are no
    NaNs, not a copy.
    r   rn   r‹   NrÂ   F)FFT)r   rn   rÂ   r,  )r4   rç   Zint32Úint64rŸ   r   rt  Zfloat64r­   r   rÈ   r¬   )rŒ   rÕ   ÚresultÚmaskZarr_nanZ
result_nanZmask_nanr   r   r!   Útest__replace_nanŠ  s$   
ór   )0rÉ   r[   r&   Znumpyr4   Znumpy.lib.nanfunctionsr   r   Znumpy.testingr   r   r   r   r   r	   rŸ   rÈ   rb   rš   r-  r.  r   r_   rî   Z_TEST_ARRAYSr)   Z_vZsetflagsr\   r]   rì   Úkeysr  r  r  r"  r/  Z_TIME_UNITSrÔ   rx  rN  ry  r�  rs  r�  Z	complex64rœ  r   r   r   r   r!   Ú<module>   s–     ýý
ý
ý/ 1_þþ?i;Ia . 	3ÿÿÿ
ÿÿ
ÿþõ
