o
    Ö­jò#  ã                   @   s¢   d dl Z d dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZmZ d dlmZmZmZ eej d	¡gZejjZG d
d„ dƒZdS )é    N)Úsuppress_warnings)Ú	variation)Ú	AxisError)Úarray_api_compatible)Úis_numpy)Úxp_assert_equalÚxp_assert_close)Útoo_small_nd_omitÚtoo_small_nd_not_omitÚSmallSampleWarningÚskip_xp_backendsc                   @   sœ  e Zd ZdZdd„ Zej dddg¡dd„ ƒZd	d
„ Z	ej dde
jfde
 d¡d fg¡eddd�dd„ ƒƒZeddd�dd„ ƒZeddd�dd„ ƒZeddd�dd„ ƒZeddd�ej dde
 d¡fde
jde
jd �fg¡d!d"„ ƒƒZeddd�ej d#de
jfde
jfg¡d$d%„ ƒƒZeddd�d&d'„ ƒZedd(d�d)d*„ ƒZd+d,„ Zd-d.„ Zej d/d0gd1 dd2e
jd3gg¡d4d5„ ƒZej ddg fde
jgd6 fd7e
jfg¡d8d9„ ƒZd:d;„ Zeddd�d<d=„ ƒZeddd�ej d>ddg¡d?d@„ ƒƒZeddd�ej dAde
 dB¡e
 dC¡e
jde
jd0e
jgfddDe
 dE¡e
jde
jde
jgfd2e
 dD¡e
 dF¡e
je
je
jde
jgfg¡dGdH„ ƒƒZ eddd�dIdJ„ ƒZ!d7S )KÚTestVariationz.
    Test class for scipy.stats.variation
    c                 C   s0   |  d¡}tt|dd�| t d¡d ¡ƒ d S )Nç      "@é   ©Úddofg      @é   )Úaranger   r   ÚasarrayÚmathÚsqrt©ÚselfÚxpÚx© r   ú]/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/stats/tests/test_variation.pyÚ	test_ddof   s   
&zTestVariation.test_ddofÚsgnr   éÿÿÿÿc                 C   sD   |  g d¢¡}t|| ƒ}|  |t d¡ d ¡}t||dd� d S )N©ç      ð?ç       @ç      @ç      @g      @é   é   g»½×Ùß|Û=)Úrtol)r   r   r   r   r   )r   r   r   r   ÚvÚexpectedr   r   r   Ú	test_sign   s   zTestVariation.test_signc                 C   s   t tdƒdƒ d S )Nr$   ç        )r   r   ©r   r   r   r   r   Útest_scalar#   s   zTestVariation.test_scalarznan_policy, expectedÚ	propagateÚomitg«ªªªªª@r   Tz(`nan_policy` only supports NumPy backend)Únp_onlyÚreasonc                 C   s*   |  d¡}|j|d< tt||d�|ƒ d S )Nç      $@é	   ©Ú
nan_policy)r   Únanr   r   )r   r5   r)   r   r   r   r   r   Útest_variation_nan'   s   

z TestVariation.test_variation_nanc                 C   sT   |  dd|jdg¡}tjtdd�� t|dd� W d   ƒ d S 1 s#w   Y  d S )Nr!   r"   r#   zinput contains nan©ÚmatchÚraiser4   )r   r6   ÚpytestÚraisesÚ
ValueErrorr   r   r   r   r   Útest_nan_policy_raise1   s   "ÿz#TestVariation.test_nan_policy_raisec                 C   sD   t jtdd�� tg d¢dd� W d   ƒ d S 1 sw   Y  d S )Nzmust be one ofr8   ©r   r%   r&   Úfoobarr4   )r;   r<   r=   r   r,   r   r   r   Útest_bad_nan_policy8   s   "ÿz!TestVariation.test_bad_nan_policyz&`keepdims` only supports NumPy backendc                 C   sT   |  | d¡d¡}t|ddd�}t t d¡d gt d¡d gg¡}t||ƒ d S )Né
   )r%   é   r   T©ÚaxisÚkeepdimsr%   é   )Úreshaper   r   ÚnpÚarrayr   r   )r   r   r   Úyr)   r   r   r   Útest_keepdims>   s   ÿzTestVariation.test_keepdimszaxis, expectedr   ©r   r   )rC   r   ©Ú
fill_valuec                 C   sl   |  d¡}|dkr(tjttd�� t||dd�}W d   ƒ n1 s"w   Y  nt||dd�}t||ƒ d S )N)rC   r   r   r8   TrD   )Úzerosr;   Úwarnsr   r
   r   r   )r   rE   r)   r   r   rK   r   r   r   Útest_keepdims_size0G   s   
ÿ€z!TestVariation.test_keepdims_size0zincr, expected_fillc                 C   sH   |  g d¢g d¢g¡}t|d|jd | dd�}t||jd|d�ƒ d S )N)r   r   r%   r%   )r   r%   r&   r&   r   T)rE   r   rF   )r%   r   rN   )r   r   Úshaper   Úfull)r   ÚincrÚexpected_fillr   r   rK   r   r   r   Ú'test_keepdims_and_ddof_eq_len_plus_incrU   s   z5TestVariation.test_keepdims_and_ddof_eq_len_plus_incrc                 C   sP   |  |jdtd�d¡}|j|d< t|ddd�}t|t d¡d	 |jgd
d� d S )Né   ©Údtype)r%   r   rM   r   r.   ©rE   r5   ç      ô?ç      ø?gVçž¯Ò<)Úatol)rH   r   Úfloatr6   r   r   r   r   )r   r   Úar(   r   r   r   Útest_propagate_nan]   s   
"z TestVariation.test_propagate_nanz$Python list input uses NumPy backendc                 C   s0   t ddgddggd d�}t|t d¡d ƒ d S )Nr   r   r%   r&   ©rE   r\   r]   )r   r   r   r   )r   r   rK   r   r   r   Útest_axis_noneg   s   zTestVariation.test_axis_nonec                 C   sV   |  g d¢g d¢g¡}t ttf¡� t|dd� W d   ƒ d S 1 s$w   Y  d S )Nr?   )r   rC   é   rB   rb   )r   r;   r<   r   Ú
IndexErrorr   r   r   r   r   Útest_bad_axisn   s   "ÿzTestVariation.test_bad_axisc                 C   sb   |  g d¢¡}t|ƒ}t||  |j¡ƒ | |d| g¡}t|dd�}t||  |j|jg¡ƒ d S )N)r2   ç      Àr!   ç      Àrh   g      $Àr   rb   )r   r   r   ÚinfÚstack)r   r   r   rK   Úx2Úy2r   r   r   Útest_mean_zerot   s   zTestVariation.test_mean_zeror   r+   rC   r%   r3   c                 C   s.   |  |¡}t|ƒ}t||j |j|jd�ƒ d S )NrY   )r   r   r   r6   rZ   )r   r   r   rK   r   r   r   Útest_return_nan   s   
zTestVariation.test_return_nanr&   Nc              	   C   s¶   |  d¡}tƒ �A}| td¡ |dkr<t|ƒr5tjtdd�� t||d�}W d   ƒ n1 s/w   Y  nt||d�}nt||d�}W d   ƒ n1 sLw   Y  t	|| 
|¡ƒ d S )N)r&   r   zstd*r   zSee documentation...r8   rb   )Úemptyr   ÚfilterÚUserWarningr   r;   rQ   r   r   r   r   )r   rE   r)   r   r   ÚsuprK   r   r   r   Útest_2d_size_zero_with_axis†   s   
ÿ€€öz)TestVariation.test_2d_size_zero_with_axisc                 C   s.   |  ddg¡}tt|dd�|  |j ¡ƒ d S )Nrg   g      Àr%   r   )r   r   r   ri   )r   r   Úx1r   r   r   Útest_neg_inf—   s    zTestVariation.test_neg_infc                 C   sL   |  |jdd|jgdd|j|jgg¡}tt|dddd�|j |j gƒ d S )Nr   iöÿÿÿiìÿÿÿéýÿÿÿr%   r/   ©rE   r   r5   )r   r6   r   r   ri   )r   r   rk   r   r   r   Útest_neg_inf_nan�   s   ÿÿzTestVariation.test_neg_inf_nanr5   c                 C   s¨   |  dd|jdgdd|jdgdd|jdgg¡}|dkr:tjttd�� t|d|d	�}W d   ƒ n1 s4w   Y  nt|d|d	�}t||j|j|jt	 
d
¡d gƒ d S )Nr   rB   r   éûÿÿÿr%   r&   r/   r8   r[   gUUUUUUå?)rJ   r6   r;   rQ   r   r	   r   r   ri   r   r   )r   r5   r   r   rK   r   r   r   Útest_combined_edge_cases¥   s   þÿ€&z&TestVariation.test_combined_edge_caseszddof, expectedgUUUUUUÅ?g      ä?ç      à?g«ªªªªªê?r\   c              
   C   s–   |j }| dd|dgg d¢|dd|g|dd|g||||gg d¢g d	¢g¡}tjttd
�� t|d|dd�}W d   ƒ n1 s?w   Y  t||ƒ d S )Nr!   r"   r#   )r+   r$   r#   r!   g      à¿r{   r   )r#   r#   r#   r#   )r+   r+   r+   r+   r8   r   r/   rw   )r6   r   r;   rQ   r   r	   r   r   )r   r   r)   r   r6   r   r(   r   r   r   Útest_more_nan_policy_omit_tests³   s   


úÿz-TestVariation.test_more_nan_policy_omit_testsc              	   C   sh   |  g d¢¡}|  ddd|jdd|jg¡}t|dd�}t|ddd	�}t|t d
¡d ƒ ||ks2J ‚d S )Nr    r   r%   r&   r   rC   r   r/   )r5   r   g      @)r   r6   r   r   r   r   )r   r   r`   Únan_arK   Únan_yr   r   r   Útest_variation_ddofÌ   s   z!TestVariation.test_variation_ddof)"Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r;   ÚmarkÚparametrizer*   r-   rI   r6   r   r   r7   r>   rA   rL   ro   rT   rR   ri   rW   ra   rc   rf   rm   rn   rs   ru   rx   rz   r|   r   r   r   r   r   r      s     
ÿÿÿÿ
ÿ
ÿ
ÿÿÿ	ÿÿ


 
ÿ
ÿ
ÿÿ& (þþÿr   )r   ÚnumpyrI   r;   Únumpy.testingr   Úscipy.statsr   Úscipy._lib._utilr   Úscipy.conftestr   Úscipy._lib._array_apir   Úscipy._lib._array_api_no_0dr   r   Úscipy.stats._axis_nan_policyr	   r
   r   r„   ÚusefixturesÚ
pytestmarkr   r   r   r   r   r   Ú<module>   s    