o
    ðT·j`Ð  ã                   @   s   d dl Z d dlZd dlZd dlmZ d dlZd dlmZ d dl	m
Z
mZ d dlmZmZ d dlmZmZmZmZmZmZmZ e dejdd	ejd
gddejdddgejejejdejdgdejejddejgg¡Ze g d¢¡e g d¢¡e ddg¡e g d¢¡gZe g d¢g d¢g d¢g d¢g¡Ze g d¢g d¢g d¢g d¢g¡ZG d d!„ d!ƒZG d"d#„ d#ƒZG d$d%„ d%ƒZe d&¡e g d'¢¡d(œZ e  !¡ D ]Z"e"j#d)d*� qËej$ %d+ej&d, ej&d-  d. ¡ej$j%d/e  !¡ e  '¡ d0�G d1d2„ d2ƒƒƒZ(G d3d4„ d4ƒZ)G d5d6„ d6e)ƒZ*G d7d8„ d8e)ƒZ+G d9d:„ d:e)ƒZ,d;Z-e.ej&d- ƒZ/e/d<d=„ e-D ƒ7 Z/G d>d?„ d?ƒZ0G d@dA„ dAƒZ1G dBdC„ dCƒZ2ej$ %dDe ejdEejej3g¡e g dF¢¡fejg dG¢ej4dH�dIfe g dF¢¡dIfejejdEgejej3ggej5dH�e d)dIgd)dIgg¡fg¡dJdK„ ƒZ6dLdM„ Z7dS )Né    N)Úpartial)Únormalize_axis_tuple)Ú	AxisErrorÚComplexWarning)Ú	_nan_maskÚ_replace_nan)Úassert_Úassert_equalÚassert_almost_equalÚassert_raisesÚassert_raises_regexÚassert_array_equalÚsuppress_warningsç³êsµûã?ç&S£’:Ñ?çàœ¥½Á‡?çÁÊ¡E¶ó½?çÞ	Šá?ç»¸�ðî¿çáz®GáÊ?çL¦
F%uÞ?ç6<½R–!Ò?ç[B>èÙ¬º?ç“:M„ã¿çÏ÷Sã¥›Ä?çzÇ):’ËÇ?ç•Ô	h"Ô?)r   r   r   r   )r   r   r   r   r   )r   r   r   )r   ç      ð?r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   ç        r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   c                   @   sÂ   e Zd Zejejejejejej	ej
ejejejejejejejejejejejejejejejejejejejejejiZ dd„ e D ƒZ!e"ddd„ƒZ#e$j%j&de  '¡ e!d�dd	„ ƒZ(d
d„ Z)dS )ÚTestSignatureMatchc                 C   ó   g | ]}|j ‘qS © ©Ú__name__)Ú.0Úkr!   r!   úd/home/dinkstrade/pdmp-scanner/venv/lib/python3.10/site-packages/numpy/lib/tests/test_nanfunctions.pyÚ
<listcomp>;   ó    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.)Údefault)
ÚinspectÚ	signatureÚ
parametersÚvaluesr*   Ú	ParameterÚemptyÚappendÚreplaceÚ	Signature)Úfuncr*   Úprm_listr,   Úprmr!   r!   r&   Úget_signature=   s   

z TestSignatureMatch.get_signatureznan_func,func©Úidsc                 C   s&   |   |¡}|   |¡}tj ||¡ d S ©N)r7   ÚnpÚtestingr	   )ÚselfÚnan_funcr4   r,   Únan_signaturer!   r!   r&   Útest_signature_matchI   s   

z'TestSignatureMatch.test_signature_matchc                 C   s"   t j t| jƒtt jjjƒ¡ dS )z4Validate that all nan functions are actually tested.N)r;   r<   r	   ÚsetÚIDSÚlibÚ_nanfunctions_implÚ__all__©r=   r!   r!   r&   Útest_exhaustivenessR   s   ÿz&TestSignatureMatch.test_exhaustivenessN)r)   )*r#   Ú
__module__Ú__qualname__r;   ÚnanminÚaminÚnanmaxÚamaxÚ	nanargminÚargminÚ	nanargmaxÚargmaxÚnansumÚsumÚnanprodÚprodÚ	nancumsumÚcumsumÚ
nancumprodÚcumprodÚnanmeanÚmeanÚ	nanmedianÚmedianÚnanpercentileÚ
percentileÚnanquantileÚquantileÚnanvarÚvarÚnanstdÚstdÚNANFUNCSrB   Ústaticmethodr7   ÚpytestÚmarkÚparametrizeÚitemsr@   rG   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 r:   ©Ú_ndatÚcopyÚnanfuncsr	   ©r=   Ú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©r;   ÚeyeÚziprq   Ústdfuncsr   Úndim©r=   ÚmatÚnfÚrfr}   ÚtgtÚresr!   r!   r&   Útest_keepdimse   ó   
ýÿz%TestNanFunctions_MinMax.test_keepdimsc                 C   ó^   t  d¡}t| j| jƒD ] \}}t  d¡}||dd�}||d|d�}t||ƒ t||ƒ qd S ©Nry   r{   ©r}   ©r}   Úout©r;   r€   r�   rq   r‚   Úzerosr
   ©r=   r…   r†   r‡   Úresoutrˆ   r‰   r!   r!   r&   Útest_outm   ó   


û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ÚefdgFDGry   ©Údtyper{   rŽ   ©r�   rq   r‚   r;   r€   r™   Útyper   ©r=   Úcodesr†   r‡   Úcr…   rˆ   r‰   r!   r!   r&   Útest_dtype_from_inputv   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©r‡   r!   r&   r'   …   ó    z>TestNanFunctions_MinMax.test_result_values.<locals>.<listcomp>r{   rŽ   ©r�   rq   r‚   Ú_rdatro   r
   ©r=   r†   rˆ   r‰   r!   r¤   r&   Útest_result_valuesƒ   ó
   ýz*TestNanFunctions_MinMax.test_result_valuesr}   rz   r™   ÚAllFloatÚarray©ry   ry   Ú0dÚ2dr8   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Ž   )rƒ   rh   ÚskipÚastyperq   ÚwarnsÚRuntimeWarningr;   ÚisnanÚallr™   ©r=   r}   r™   r¬   r´   r4   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 )Nr{   rŽ   )r;   ÚmaÚfix_invalidro   Ú_maskrp   rJ   r	   r   ÚisinfÚany)r=   r…   Úmskrt   r‰   rˆ   r!   r!   r&   Útest_masked›   s   

ûz#TestNanFunctions_MinMax.test_maskedc                 C   ó    | j D ]
}t|dƒdkƒ qd S ©Nr   ©rq   r   ©r=   rt   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   ƒ n	1 �sw   Y  qRd S )Nc                   @   ó   e Zd ZdS )z8TestNanFunctions_MinMax.test_subclass.<locals>.MyNDArrayN©r#   rH   rI   r!   r!   r!   r&   Ú	MyNDArrayª   ó    rÌ   ry   r   rŽ   ©ry   r{   r!   T©ÚrecordÚalwaysé   úno warning raised)r;   Úndarrayr€   Úviewrq   r   Ú
isinstanceÚshapeÚnanÚwarningsÚcatch_warningsÚsimplefilterrÁ   r¹   ÚlenÚ
issubclassÚcategoryr¸   )r=   rÌ   Úminert   r‰   Úwr!   r!   r&   Útest_subclass©   sN   



û
 ÿù	
û€ï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   ç       @ç      @r˜   r   rŽ   TrÏ   rÑ   r{   rÓ   )r;   r¬   rØ   Úobjectr	   rJ   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 ]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)	r;   rÔ   Úaranger¶   rØ   rq   rL   r™   rÕ   )r=   r™   rÌ   Úarrt   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è   ry   r   r˜   Fé   é   ré   ©Úwhererì   )r;   rÔ   rí   Úreshaper¶   rØ   Ú	ones_likeÚboolrq   rJ   r™   rÕ   )	r=   r™   rÌ   rî   rõ   rt   Ú	referencerï   rð   r!   r!   r&   Ú
test_whereó   s   
÷z"TestNanFunctions_MinMax.test_whereN)r#   rH   rI   r;   rJ   rL   rq   ÚminÚmaxr‚   ru   rŠ   r•   rŸ   r©   rh   ri   rj   Ú	typecodesr¬   rØ   Úfullr¼   rÃ   rÈ   rá   rç   rñ   rú   r!   r!   r!   r&   rl   Y   s2    	
þý
+
rl   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   rm   r:   rn   rr   r!   r!   r&   ru     rv   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   ƒ n1 sOw   Y  qq
d S )Nzinvalid value encountered in)r�   rq   r;   ÚgreaterÚlessro   r   Úfilterr¸   r   r¹   rÁ   Úequal)r=   rt   ÚfcmpÚrowÚsupÚindÚvalr!   r!   r&   r©     s    ø€ÿÿz0TestNanFunctions_ArgminArgmax.test_result_valuesr}   rz   r™   r«   r¬   r­   r®   r¯   r8   c              	   C   sp   |d ur|j dkrt d¡ | |¡}| jD ]}tjtdd�� |||d� W d   ƒ n1 s0w   Y  qd S r°   )rƒ   rh   rµ   r¶   rq   ÚraisesÚ
ValueError)r=   r}   r™   r¬   r4   r!   r!   r&   r¼   !  s   


ÿ€ÿz*TestNanFunctions_ArgminArgmax.test_allnansc              	   C   s\   t  d¡}| jD ]#}dD ]}ttd|||d� qdD ]}|||d�}t|t  d¡ƒ qqd S )N©r   ry   ©r   Nz*attempt to get argm.. of an empty sequencerŽ   ©r{   r   )r;   r’   rq   r   r
  r	   )r=   r…   rt   r}   r‰   r!   r!   r&   Ú
test_empty0  s   

ýþúz(TestNanFunctions_ArgminArgmax.test_emptyc                 C   rÄ   rÅ   rÆ   rÇ   r!   r!   r&   rÈ   <  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Ì   A  rÍ   rÌ   ry   r   rŽ   rÎ   r{   r!   )r;   rÔ   r€   rÕ   rq   r   rÖ   r×   )r=   rÌ   rß   rt   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)r~   )r;   rí   r¶   rØ   rq   rN   rƒ   ©r=   r™   rî   rt   rù   Úretr!   r!   r&   rŠ   Q  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�   )r;   rí   r¶   rØ   rq   r’   ÚintprN   )r=   r™   rî   rt   r�   rù   r  r!   r!   r&   r•   \  s   
ûz&TestNanFunctions_ArgminArgmax.test_outN)r#   rH   rI   r;   rN   rP   rq   ru   r©   rh   ri   rj   rý   r¬   rØ   rþ   r¼   r  rÈ   rá   rŠ   r•   r!   r!   r!   r&   rÿ   	  s(    
þý	

rÿ   ré   )é   é'   é]   éW   é.   )r®   Ú1dF)Úwriter™   Ú
AllIntegerr«   ÚOr…   r8   c                   @   s*  e Zd Zejejejejejej	ej
ejejejejejejejejejejejejejejejejejiZdd„ eD ƒZejj de !¡ ed�ej"dd�dd„ ƒƒZ#ejj dej$ej%fej&ej'fgd	d
gd�dd„ ƒZ(ejj dejejfejejfgddgd�dd„ ƒZ)ej  dejejg¡dd„ ƒZ*dS )ÚTestNanFunctions_NumberTypesc                 C   r    r!   r"   ©r$   Úir!   r!   r&   r'   †  r(   z'TestNanFunctions_NumberTypes.<listcomp>znanfunc,funcr8   Úignore)Ú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™   ©r=   r…   r™   Únanfuncr4   rˆ   r�   r!   r!   r&   Útest_nanfuncˆ  s   

z)TestNanFunctions_NumberTypes.test_nanfuncr`   r^   c                 C   s�   |  |¡}|jjdkrtt||dd� tt||dd� d S ||dd�}||dd�}t||ƒ |dkr>t|ƒt|ƒu s<J ‚d S |j|jksFJ ‚d S )Nrž   r{   )Úqr  )r¶   r™   Úkindr   Ú	TypeErrorr
   r›   r"  r!   r!   r&   Útest_nanfunc_q•  s   

z+TestNanFunctions_NumberTypes.test_nanfunc_qrb   rd   c                 C   s`   |  |¡}||dd�}||dd�}t||ƒ |dkr&t|ƒt|ƒu s$J ‚d S |j|jks.J ‚d S )Nç      à?©Úddofr  r!  r"  r!   r!   r&   Útest_nanfunc_ddof«  s   

z.TestNanFunctions_NumberTypes.test_nanfunc_ddofr#  c                 C   sž   |  |¡}t||dd�||dd�ƒ d}tt|ƒ� ||ddd� W d   ƒ n1 s+w   Y  tt|ƒ� ||ddd� W d   ƒ d S 1 sHw   Y  d S )Nr)  )Ú
correctionr*  z5ddof and correction can't be provided simultaneously.)r+  r-  r{   r   )r¶   r
   r   r
  )r=   r…   r™   r#  Úerr_msgr!   r!   r&   Útest_nanfunc_correction»  s   
ÿÿ"ÿz4TestNanFunctions_NumberTypes.test_nanfunc_correctionN)+r#   rH   rI   r;   rJ   rû   rL   rü   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   rb   rc   rd   re   rq   Únanfunc_idsrh   ri   rj   rk   Úerrstater$  r`   ra   r^   r_   r(  r,  r/  r!   r!   r!   r&   r  r  sD    ô
ý
ý
ÿ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   rm   r:   rn   rr   r!   r!   r&   ru   Í  rv   z*SharedNanFunctionsTestsMixin.test_mutationc                 C   rw   rx   r   r„   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 ]i\}}|D ]b}tƒ �U}|t jt jhv r+|dv r+| t	¡ ||t  
|¡dd�j
j}||t  
|¡dd�j
j}t||u ƒ ||t  
|¡d d�j
j}||t  
|¡d d�j
j}t||u ƒ W d   ƒ n1 sqw   Y  qqd S ©Nry   r—   ÚFDGr{   )r™   r}   ©r;   r€   r�   rq   r‚   r   rd   rb   r  r   r™   r›   r   ©	r=   r…   r�   r†   r‡   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 ]V}tƒ �I}|t jt jhv r+|dv r+| t	¡ |||dd�j
j}|||dd�j
j}t||u ƒ |||d d�j
j}|||d d�j
j}t||u ƒ W d   ƒ n1 sew   Y  qqd S r3  r5  r6  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—   ry   r˜   r{   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>r{   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Ì   ry   r   rŽ   r{   )r;   rÔ   r€   rÕ   rq   r×   r   rÖ   )r=   rÌ   r¬   rß   rt   Úexpected_shaper‰   r!   r!   r&   rá     s"   



ôz*SharedNanFunctionsTestsMixin.test_subclassN)r#   rH   rI   ru   rŠ   r•   r7  r8  rŸ   r©   rÈ   rá   r!   r!   r!   r&   r2  Ì  s    	r2  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_SumProdr}   rz   r™   r«   r¬   r­   r®   r¯   r8   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±   r{   rŽ   ©	rƒ   rh   rµ   r¶   r�   rq   r;   rº   r™   ©r=   r}   r™   r¬   r4   Ú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   r{   r  ry   rŽ   )r�   r;   rR   rT   r’   r	   ©r=   rt   Ú	tgt_valuer…   rˆ   r‰   r!   r!   r&   r  J  s   



öz#TestNanFunctions_SumProd.test_emptyc                 C   sf   t  d¡ |¡}t j|d d…< | jD ]}|t ju rdnd}||dd�}|j|ks*J ‚||ks0J ‚qd S )Nrè   ré   é   i   rÒ   rë   )r;   rí   r¶   rØ   rq   rR   r™   r  r!   r!   r&   rñ   W  s   
üz%TestNanFunctions_SumProd.test_initialc                 C   s”   t  d¡ dd¡ |¡}t j|dd d …f< t j|t jd�}d|d d …df< | jD ]}|t ju r1dnd}|||dd	�}|j	|ksAJ ‚||ksGJ ‚q(d S )
Nrè   ry   r   r˜   Fé   iÀ  rÒ   rô   )
r;   rí   rö   r¶   rØ   r÷   rø   rq   rR   r™   )r=   r™   rî   rõ   rt   rù   r  r!   r!   r&   rú   b  s   
üz#TestNanFunctions_SumProd.test_whereN)r#   rH   rI   r;   rR   rT   rq   rS   rU   r‚   rh   ri   rj   rý   r¬   rØ   rþ   r¼   r  rñ   rú   r!   r!   r!   r&   r:  5  s"    
þý


r:  c                	   @   sž   e Zd ZejejgZejejgZ	e
j dg d¢¡e
j dejd ¡e
jjde ej¡e dej¡gddgd	�d
d„ ƒƒƒZdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestNanFunctions_CumSumProdr}   rz   r™   r«   r¬   r­   r®   r¯   r8   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±   r{   r;  r<  r!   r!   r&   r¼   u  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   r{   r  rŽ   )r�   rq   r;   r’   Úonesr	   r>  r!   r!   r&   r  …  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 )
Nry   rz   r�   ©ry   ré   é   é   r   r)  rŽ   )iƒ  rò   )r�   rq   r‚   r;   r€   r   rƒ   rC  ÚrandomÚRandomStaterØ   Úrandr×   r	   rí   )	r=   rt   Úgr…   r}   rˆ   r‰   r£   Úrsr!   r!   r&   rŠ   ’  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   r{   NrŽ   )	r;   rY   Ú
_ndat_onesrX   ro   r
   rW   Ú_ndat_zerosrV   )r=   r}   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 )Nry   )rL  rM  r   r{   rŽ   r�   )r;   r€   r�   rq   r‚   r
   )r=   r…   r†   r‡   r”   r}   rˆ   r‰   r!   r!   r&   r•   ®  s   


üþz$TestNanFunctions_CumSumProd.test_outN)r#   rH   rI   r;   rV   rX   rq   rW   rY   r‚   rh   ri   rj   rý   r¬   rØ   rþ   r¼   r  rŠ   r©   r•   r!   r!   r!   r&   rB  p  s     
þý
	rB  c                	   @   sÒ   e Zd ZejejejgZejej	ej
gZdd„ Zdd„ Zdd„ Zdd„ Zej d	g d
¢¡ej dejd ¡ejjde ej¡e dej¡gddgd�dd„ ƒƒƒZdd„ Zej dejd ¡dd„ ƒZdd„ ZdS )ÚTestNanFunctions_MeanVarStdc              	   C   s8   | j D ]}tjtjtjfD ]}tt|td|d� qqd S )Nr{   )r}   r™   )rq   r;   rø   Úint_Úobject_r   r'  ro   )r=   rt   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˜   r{   r�   )
rq   r;   rø   rQ  rR  r0   ro   r×   r   r'  )r=   rt   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   r{   c                    s   g | ]}ˆ|ˆ d �‘qS )r*  r!   r¢   ©r+  r‡   r!   r&   r'   Î  ó    z9TestNanFunctions_MeanVarStd.test_ddof.<locals>.<listcomp>r{   ©r}   r+  )	r;   rb   rd   rc   re   r�   r§   ro   r
   )r=   rq   r‚   r†   rˆ   r‰   r!   rV  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 ]W\}}tdƒD ]N‰ tƒ �A}| 	t
¡ | t¡ ‡ fdd„|D ƒ}|tdˆ d�}tt  |¡|ƒ t|ƒrVtt|jƒdkƒ n	tt|jƒdkƒ W d   ƒ n1 siw   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¥   r{   rX  r   )r;   rb   rd   rc   re   r§   r�   Úranger   rÐ   r¸   r  r   ro   r	   r¹   rÁ   r   rÜ   Úlog)	r=   rq   r‚   Údsizer†   r‡   r  rˆ   r‰   r!   r*  r&   Útest_ddof_too_bigÒ  s&   

€÷€ÿÿz-TestNanFunctions_MeanVarStd.test_ddof_too_bigr}   rz   r™   r«   r¬   r­   r®   r¯   r8   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Ž   )rƒ   rh   rµ   r¶   rq   r·   r¸   r;   r¹   rº   rZ   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   ƒ n1 sCw   Y  qd	D ]1}tjdd��!}t d¡ t|||d�t  g ¡ƒ tt	|ƒdkƒ W d   ƒ n1 sww   Y  qKqd S ©
Nr  r  TrÏ   rÑ   rŽ   r{   r   r  )r;   r’   rq   rÙ   rÚ   rÛ   r   r¹   rº   rÜ   rÝ   rÞ   r¸   r	   )r=   r…   rt   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 ]-\}}||| dd … ƒ}|t j
u rA|n|jj}|||d�}|j|ksRJ ‚t j ||¡ q,d S )Nrè   ry   r   r˜   FrÒ   )rõ   )r;   rí   rö   r¶   rØ   r÷   rø   r�   rq   r‚   rZ   Úrealr™   r<   Úassert_allclose)	r=   r™   rî   rõ   rt   Úf_stdrù   Údtype_referencer  r!   r!   r&   rú   
  s   úz&TestNanFunctions_MeanVarStd.test_wherec                 C   sÔ   t j d¡}| ddd¡d }t j|d d …dd d …f< t  d¡}t  d¡}t j||ddd	�}||u s4J ‚t j||dd|d
�}||u sDJ ‚|j|jksLJ ‚|jdksSJ ‚t j|ddd�}|j|jkscJ ‚t	||ƒ d S )NiÒ  é
   é   ré   r)  )rd  r{   ré   r{   T)r�   r}   r~   )r�   r}   r~   r[   r|   )
r;   rG  rH  ÚrandnrØ   r’   rZ   rd   r×   r
   )r=   ÚrngÚAÚmean_outÚstd_outr[   re   Ústd_oldr!   r!   r&   Útest_nanstd_with_mean_keyword  s.   

ýüz9TestNanFunctions_MeanVarStd.test_nanstd_with_mean_keywordN)r#   rH   rI   r;   rZ   rb   rd   rq   r[   rc   re   r‚   rS  rT  rY  r]  rh   ri   rj   rý   r¬   rØ   rþ   r¼   r  rú   rl  r!   r!   r!   r&   rP  ¹  s(    	
þý
rP  )Ú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'   C  rW  r'   c                   @   s¤   e Zd Zdd„ Zdd„ Zejjdg d¢d�ej d¡d	d
„ ƒƒZ	dd„ Z
dd„ Zdd„ Zej dg d¢¡ej de¡dd„ ƒƒZdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestNanFunctions_Medianc                 C   s    t  ¡ }t |¡ t|t ƒ d S r:   )ro   rp   r;   r\   r	   ©r=   rs   r!   r!   r&   ru   H  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 )Nry   rz   F©r}   r�   Úoverwrite_inputrD  ©rò   éÈ   Tr|   ©r{   r{   r{   r{   rU  ©r{   r{   rE  rF  r  ©r{   ré   rE  r{   r  ©ry   r{   rE  rF  ©r   r{   rÒ   ry   ©r   r{   ry   ©r{   r{   rE  r{   )r;   r€   r]   r\   r   rƒ   rC  rG  r¬   r×   r¶   r  rØ   Útupler   r  r¸   r	   ©r=   r…   r}   rˆ   r‰   r£   rà   r  r!   r!   r&   rŠ   N  s0   

$
"óz%TestNanFunctions_Median.test_keepdimsr}   ©Nr{   r  rU  )éýÿÿÿrM  ©ÚargnamesÚ	argvaluesú#ignore:All-NaN slice:RuntimeWarningc                    s¾   t  d¡‰t j d¡t  ˆj¡d d …d f  }| t j¡}t jˆt|ƒ< |d u r.dˆj	 }nt
|ˆj	ƒ‰ t‡ ‡fdd„tˆj	ƒD ƒƒ}t  |¡}t jˆ|d|d�}||u sWJ ‚t|j|ƒ d S )NrD  r€  r  c                 3   ó&   � | ]}|ˆ v r
d nˆj | V  qdS ©r{   N©r×   r  ©Ú	axis_normr£   r!   r&   Ú	<genexpr>~  ó   € 
ÿz<TestNanFunctions_Median.test_keepdims_out.<locals>.<genexpr>T©r}   r~   r�   )r;   rC  rG  r¬   r×   r¶   r  rØ   r‰  rƒ   r   rZ  r0   r\   r	   )r=   r}   rà   Ú	shape_outr�   Úresultr!   r”  r&   Útest_keepdims_outi  s   
$ÿ
z)TestNanFunctions_Median.test_keepdims_outc                 C   sÆ   t j dd¡}t j|ddgt jdd�}t  d¡}t j|dd�}t j|d|d�}t||ƒ t||ƒ t  d¡}t j|d d�}t j|d |d�}t||ƒ t||ƒ t j|d|d�}t||ƒ t||ƒ d S )	Nry   r   rÒ   r{   rŽ   r�   r!   rU  )	r;   rG  rI  ÚinsertrØ   r’   r]   r\   r
   )r=   r…   Ú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é   re  é3   r�  iè  rò   r   ré   ©Úsizer   T)r  rM  rŽ   )r;   rG  rf  Úrandintr   rØ   ÚravelÚcompressr¹   r1   r]   r   r\   )r=   rs  r£   rà   rˆ   ÚxÚ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!   )r;   r]   r¢   r!   r!   r&   r'   ¨  s    z>TestNanFunctions_Median.test_result_values.<locals>.<listcomp>r{   rŽ   )r§   r;   r\   ro   r
   )r=   rˆ   r‰   r!   r!   r&   r©   §  s   z*TestNanFunctions_Median.test_result_valuesrz   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Ž   r{   ry   r!   rÒ   rò   )r;   rþ   rØ   r¶   r   rÐ   r¸   r\   r™   r¹   rº   r   rÜ   r[  r¬   )r=   r™   r}   r…   r  ÚoutputÚscalarÚoutput_scalarr!   r!   r&   r¼   ¬  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   ƒ n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   ƒ n1 stw   Y  qGd S r_  )r;   r’   rÙ   rÚ   rÛ   r   r¹   r\   rº   rÜ   rÝ   rÞ   r¸   r	   ©r=   r…   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\   rF   r!   r!   r&   rÈ   Õ  s   z#TestNanFunctions_Median.test_scalarc                 C   sh   t  d¡}ttt j|dd� ttt j|dd� ttt j|dd� ttt j|dd� ttt j|dd� d S )NrD  éûÿÿÿrŽ   ©r   r«  rò   ©r   rò   ©r{   r{   )r;   rC  r   r   r\   r
  ©r=   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Ž   r{   rE  i÷ÿÿÿiöÿÿÿré   rò   r˜   rã   g      @ç      @g      @g      $Àg      "Àg      ÀrM  g      ð¿rd  rÒ   )r   r  r¸   r;   Úinfr¬   rØ   r	   r\   Úfloat32rZ  )r=   r  r²  Úar  Újr!   r!   r&   Útest_float_specialà  sZ   

ÿþý"ÿ$ÿöÿã$þz*TestNanFunctions_Median.test_float_specialN)r#   rH   rI   ru   rŠ   rh   ri   rj   Úfilterwarningsr›  r•   r¦  r©   Ú_TYPE_CODESr¼   r  rÈ   r°  r¶  r!   r!   r!   r&   r|  F  s&    þ

r|  c                	   @   sV  e Zd Zdd„ Zdd„ Zej ddddgg¡ejjdg d	¢d
�ej d¡dd„ ƒƒƒZ	ej dddg¡dd„ ƒZ
dd„ Zej dddg¡ej dddg¡dd„ ƒƒZej dg d¢¡ej dejd ¡ejjde ej¡e dej¡gddgd�d d!„ ƒƒƒZd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zej d*g d+¢¡d,d-„ ƒZej dg d.¢¡d/d0„ ƒZd1S )2ÚTestNanFunctions_Percentilec                 C   s"   t  ¡ }t |d¡ t|t ƒ d S )Né   )ro   rp   r;   r^   r	   r}  r!   r!   r&   ru     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 )Nry   rz   éF   Fr~  rD  r€  éZ   Tr|   r‚  rU  rƒ  r  r„  r  r…  r†  r‡  rˆ  )r;   r€   r_   r^   r   rƒ   rC  rG  r¬   r×   r¶   r  rØ   r‰  r   r  r¸   r	   rŠ  r!   r!   r&   rŠ     s8   
ÿÿ
$
"óz)TestNanFunctions_Percentile.test_keepdimsr%  rE  r{   r}   r‹  r�  r�  c                    sÎ   t  d¡‰t j d¡t  ˆj¡d d …d f  }| t j¡}t jˆt|ƒ< |d u r.dˆj	 }nt
|ˆj	ƒ‰ t‡ ‡fdd„tˆj	ƒD ƒƒ}t  |¡| }t  |¡}t jˆ||d|d�}||u s_J ‚t|j|ƒ d S )NrD  r€  r  c                 3   r‘  r’  r“  r  r”  r!   r&   r–  J  r—  z@TestNanFunctions_Percentile.test_keepdims_out.<locals>.<genexpr>Tr˜  )r;   rC  rG  r¬   r×   r¶   r  rØ   r‰  rƒ   r   rZ  r0   r^   r	   )r=   r%  r}   rà   r™  r�   rš  r!   r”  r&   r›  4  s   
$ÿ
z-TestNanFunctions_Percentile.test_keepdims_outÚweightedFTc           	      C   s*  t j dd¡}t j|ddgt jdd�}t  d¡}|r+t  |¡ddœ}t  |¡ddœ}ntƒ }tƒ }t j|dfd	di|¤Ž}t j	|dfd|d
œ|¤Ž}t
||ƒ t
||ƒ t  d¡}t j|dfd	d i|¤Ž}t j	|dfd |d
œ|¤Ž}t
||ƒ t
||ƒ t j	|dfd|d
œ|¤Ž}t
||ƒ t
||ƒ d S )Nry   r   rÒ   r{   rŽ   Úinverted_cdf©ÚweightsÚmethodé*   r}   r�   r!   rU  )r;   rG  rI  rœ  rØ   r’   r÷   Údictr_   r^   r
   )	r=   r½  r…   r�  r”   Úw_argsÚ
nan_w_argsrˆ   r‰   r!   r!   r&   r•   S  sB   

ÿ


ÿÿÿ

ÿÿÿ
z$TestNanFunctions_Percentile.test_outc                 C   ój   t jg d¢dd�}ttt j|dƒ t jg d¢dd�}ttt j|dƒ t jg d¢dd�}ttt j|dƒ d S ©N)y      à?      @yÍÌÌÌÌÌ @      à?yš™™™™™ù?ffffff@ÚGr˜   r)  rp  ÚF)r;   r¬   r   r'  r^   ©r=   Úarr_cr!   r!   r&   Útest_complexr  ó   z(TestNanFunctions_Percentile.test_complexÚuse_outc                    sÔ   |rt tjdd�‰t tjdd�}dd„ ‰ n
tj‰tj}dd„ ‰ ‡ ‡fdd„tD ƒ}|r0t |¡nd }|tdd	ˆ tƒ|d
�}t||ƒ t ‡ ‡fdd„tD ƒ¡}|rVt |¡nd }|tdd	ˆ tƒ|d
�}t||ƒ d S )Nr¾  ©rÁ  c                 S   s
   t  | ¡S r:   )r;   r÷   ©r£   r!   r!   r&   Úgen_weights�  s   
zCTestNanFunctions_Percentile.test_result_values.<locals>.gen_weightsc                 S   s   d S r:   r!   rÐ  r!   r!   r&   rÑ  ˆ  s   c                    ó   g | ]}ˆ|d ˆ |ƒd�‘qS )r@  ©rÀ  r!   r¢   ©rÑ  r_   r!   r&   r'   ‹  s    zBTestNanFunctions_Percentile.test_result_values.<locals>.<listcomp>r@  r{   )r}   rÀ  r�   c                    rÒ  )©r@  éb   rÓ  r!   r¢   rÔ  r!   r&   r'   ‘  s    ÿrÕ  )	r   r;   r_   r^   r§   Ú
empty_likero   r
   Ú	transpose)r=   r½  rÎ  r^   rˆ   r�   r‰   r!   rÔ  r&   r©   z  s*   
ÿ
ÿÿz.TestNanFunctions_Percentile.test_result_valuesrz   r™   ÚFloatr¬   r­   r®   r¯   r8   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Ž   )rƒ   rh   rµ   r¶   r·   r¸   r;   r^   r¹   rº   r™   ©r=   r}   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   ƒ n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   ƒ n1 svw   Y  qHd S )Nr  r  TrÏ   rÑ   é(   rŽ   r{   r   r  )r;   r’   rÙ   rÚ   rÛ   r   r¹   r^   rº   rÜ   rÝ   rÞ   r¸   r	   rª  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	   r;   r^   rí   r   Úisscalar)r=   r´  Úrr!   r!   r&   rÈ   ¶  s
   

z'TestNanFunctions_Percentile.test_scalarc                 C   sr   t  d¡}ttt j|ddd� ttt j|ddd� ttt j|ddd� ttt j|ddd� ttt j|ddd� d S )	NrD  ré   r«  ©r%  r}   r¬  rò   r­  r®  )r;   rC  r   r   r^   r
  r¯  r!   r!   r&   r°  ½  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   ƒ n1 s~w   Y  q8q4t  d¡}
tt j|
|dd�j	dƒ d S )Nrà  rê   )rò   ry   )ry   rò   ré   r   rÒ   rò   ry   rz   )FTr²   r|   )ry   rò   ré   rß  )r{   rÒ   rŽ   )rÒ   ry   rß  )
r;   rC  rØ   r   r  r¸   r_   r^   r	   r×   )r=   Úpercr…   r�  Ú	large_matr}   Úkeepdimr  r  Únan_valÚmegamatr!   r!   r&   Útest_multiple_percentilesÅ  s:   


"
ÿ
ÿ
ÿõ€ÿ
ÿz5TestNanFunctions_Percentile.test_multiple_percentilesÚ
nan_weight)r   r{   rÒ   ry   çZb××çtic                 C   s^   dt jddg}t  d¡}t j|ddd�}t||ƒ d|ddg}t j|d|dd	�}t||ƒ d S )
Nr{   rÒ   ry   râ   rà  r¾  rÏ  r   r¿  )r;   rØ   Úfloat64r^   r	   )r=   rê  r¤  rš  Úq_unweightedrà   Ú
q_weightedr!   r!   r&   Útest_nan_value_with_weightá  s   

z6TestNanFunctions_Percentile.test_nan_value_with_weight©r   r{   rÒ   c                 C   s  t j d¡ t jjdd�}| ¡ }t j|t  d¡t  d¡df< t  g d¢g d¢g¡}t  |¡}d|t  |¡< t j	||||dd	�}t j
|||dd
�}t||ƒ d|t  |¡< t j
||||dd	�}t||ƒ t  |¡}	t j
|||||	dd�}
|
|	u szJ ‚t|	|ƒ d S )Nr{   )rê   éc   rÒ   rŸ  rñ  r   )g      4@g      I@rº  )r»  é!   éP   r¾  )r}   rÀ  rÁ  )r}   rÁ  rë  )r}   rÀ  r�   rÁ  )r;   rG  Úseedrp   rØ   rí   r¬   r÷   r¹   r_   r^   r	   r×  )r=   r}   Úx_no_nanr¤  ÚprÀ  Ú
p_expectedÚp_unweightedÚ
p_weightedr�   r‰   r!   r!   r&   Útest_nan_value_with_weight_ndimí  s2   

ÿÿ

ÿ

ÿz;TestNanFunctions_Percentile.test_nan_value_with_weight_ndimN)r#   rH   rI   ru   rŠ   rh   ri   rj   r·  r›  r•   rÌ  r©   r;   rý   r¬   rØ   rþ   r¼   r  rÈ   r°  ré  rï  rú  r!   r!   r!   r&   r¹    sB    þ



þý

r¹  c                	   @   s˜   e Zd Zej dddg¡dd„ ƒZdd„ Zdd	„ Zd
d„ Z	ej dg d¢¡ej de
jd ¡ejjde
 e
j¡e
 de
j¡gddgd�dd„ ƒƒƒZdS )ÚTestNanFunctions_Quantiler½  FTc                 C   sJ  t  d¡ ddd¡ t¡}t j|d d< |rt  |¡ddœ}ntƒ }tt j	|fd	d
i|¤Žt j
|fd	di|¤Žƒ tt j	|fd
ddœ|¤Žt j
|fdddœ|¤Žƒ tt j	|fd
ddœ|¤Žt j
|fdddœ|¤Žƒ tt j	|fd
gddœ|¤Žt j
|fdgddœ|¤Žƒ tt j	|fg d¢ddœ|¤Žt j
|fg d¢ddœ|¤Žƒ d S )Né   rÒ   ry   rò   r   r{   r¾  r¿  r%  r)  rà  rã  )ç      Ð?r)  ç      è?)é   rà  éK   )r;   rí   rö   r¶   ÚfloatrØ   r÷   rÃ  r	   r`   r^   )r=   r½  rî   rÄ  r!   r!   r&   Útest_regression  s(   ÿÿÿÿÿz)TestNanFunctions_Quantile.test_regressionc                 C   sH   t  d¡d }tt  |d¡dƒ tt  |d¡dƒ tt  |d¡dƒ d S )Nró   r)  r   r   r{   g      @g      ü?)r;   rí   r	   r`   )r=   r¤  r!   r!   r&   Ú
test_basic-  s   z$TestNanFunctions_Quantile.test_basicc                 C   rÆ  rÇ  )r;   r¬   r   r'  r`   rÊ  r!   r!   r&   rÌ  3  rÍ  z&TestNanFunctions_Quantile.test_complexc                 C   sj   t  g d¢¡}| ¡ }t jt  d¡|dd� t||ƒ | ¡ }| ¡ }t jt  d¡|dd� t||ƒ d S )N)r   rþ  rý  r)  r   g      Y@ÚmidpointrÏ  )r;   r¬   rp   r`   rí   r   Útolist)r=   Úp0rö  r!   r!   r&   Útest_no_p_overwrite;  s   
z-TestNanFunctions_Quantile.test_no_p_overwriter}   rz   r™   rÙ  r¬   r­   r®   r¯   r8   c                 C   rÚ  )Nr   r±   r²   r³   r{   rŽ   )rƒ   rh   rµ   r¶   r·   r¸   r;   r`   r¹   rº   r™   rÜ  r!   r!   r&   r¼   G  rÝ  z&TestNanFunctions_Quantile.test_allnansN)r#   rH   rI   rh   ri   rj   r  r  rÌ  r  r;   rý   r¬   rØ   rþ   r¼   r!   r!   r!   r&   rû    s    

þýrû  zarr, expectedr±  )FTFT)r{   ré   rE  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)r;   r0   r×   rø   r   r	   r›   rÔ   )ræ   Úexpectedr�   Úactualr!   r!   r&   Útest__nan_maskW  s   
€ùr
  c                  C   s  t jt jt jfD ]} t jddg| d�}t|dƒ\}}|du s J ‚||u s&J ‚qt jt jfD ]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   r{   r˜   NrÒ   F)FFTrð  rM  )r;   rø   Úint32Úint64r¬   r   r³  rì  rº   r	   rØ   r¹   )r™   ræ   rš  ÚmaskÚarr_nanÚ
result_nanÚmask_nanr!   r!   r&   Útest__replace_nanr  s$   
ór  )8rÙ   rh   r+   Ú	functoolsr   Únumpyr;   Únumpy._core.numericr   Únumpy.exceptionsr   r   Únumpy.lib._nanfunctions_implr   r   Únumpy.testingr   r	   r
   r   r   r   r   r¬   rØ   ro   r§   rN  rO  r   rl   rÿ   Ú_TEST_ARRAYSr.   Ú_vÚsetflagsri   rj   rý   Úkeysr  r2  r:  rB  rP  Ú_TIME_UNITSrå   r¸  r|  r¹  rû  r²  r  Ú	complex64r
  r  r!   r!   r!   r&   Ú<module>   s     $ýý
ý
ý/ 1bþþUi;I  J  	Aÿÿÿ
ÿÿ
ÿþõ
