
    -ii$                         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	m
Z
 d dlmZmZ d dlmZmZmZ ej        j        Z e	e           G d d                      ZdS )	    N	variation)	AxisError)make_xp_test_caseeager_warns)xp_assert_equalxp_assert_close)too_small_nd_omittoo_small_nd_not_omitSmallSampleWarningc                      e Zd ZdZd Zej                            dddg          d             Z e	dd	          d
             Z
ej                            ddej        fd ej        d          dz  fg           e	dd	          d                         Z e	dd	          d             Z e	dd	          d             Z e	dd	          d             Z e	dd	          ej                            dd ej        d          fd ej        dej                  fg          d                         Z e	dd	          ej                            ddej        fdej        fg          d                         Z e	dd	          d             Z e	dd	          d              Zd! Zej                            d"          d#             Zej                            d$          ej                            d%d&gd'z  dd(ej        d)gg          d*                         Zej                            d+          ej                            ddg fdej        gd,z  fd-ej        fg          d.                         Zej                            d"          d/             Z e	dd	          d0             Z e	dd	          ej                            d1ddg          d2                         Z  e	dd	          ej                            d3d ej        d4           ej        d5          ej        dej        d&ej        gfdd6 ej        d7          ej        dej        dej        gfd( ej        d6           ej        d8          ej        ej        ej        dej        gfg          d9                         Z! e	dd	          d:             Z"d-S );TestVariationz.
    Test class for scipy.stats.variation
    c                     |                     d          }t          t          |d          |                    t	          j        d          dz                       d S )N      "@   ddofg      @   )aranger	   r   asarraymathsqrtselfxpxs      f/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/scipy/stats/tests/test_variation.py	test_ddofzTestVariation.test_ddof   sM    IIcNN	!!,,,bjj49J.K.KLLLLL    sgnr   c                     |                     g d          }t          ||z            }|                     |t          j        d          z  dz            }t	          ||d           d S )N      ?       @      @      @g      @      g|=)rtol)r   r   r   r   r	   )r   r    r   r   vexpecteds         r   	test_signzTestVariation.test_sign   si    JJ+++,,c!e::c$)A,,.q0118%000000r   Tztest plain python scalar input)np_onlyreasonc                 0    t          d          dk    sJ d S )Nr'           r   r   r   s     r   test_scalarzTestVariation.test_scalar"   s!     ~~$$$$$$r   znan_policy, expected	propagateomitg@r   z(`nan_policy` only supports NumPy backendc                     |                     d          }|j        |d<   t          t          ||          |           d S )N      $@	   
nan_policy)r   nanr	   r   )r   r:   r,   r   r   s        r   test_variation_nanz TestVariation.test_variation_nan'   sA     IIcNNv!	!
;;;XFFFFFr   c                     |                     dd|j        dg          }t          j        t          d          5  t          |d           d d d            d S # 1 swxY w Y   d S )Nr$   r%   r&   zinput contains nanmatchraiser9   )r   r;   pytestraises
ValueErrorr   r   s      r   test_nan_policy_raisez#TestVariation.test_nan_policy_raise1   s     JJS"&#.//]:-ABBB 	- 	-aG,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   AA Ac                     t          j        t          d          5  t          g dd           d d d            d S # 1 swxY w Y   d S )Nzmust be one ofr>   r   r(   r)   foobarr9   )rA   rB   rC   r   r2   s     r   test_bad_nan_policyz!TestVariation.test_bad_nan_policy8   s     ]:-=>>> 	6 	6iiiH5555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s   =AAz&`keepdims` only supports NumPy backendc                     |                     |                    d          d          }t          |dd          }t          j        t          j        d          dz  gt          j        d          dz  gg          }t          ||           d S )N
   )r(      r   Taxiskeepdimsr(      )reshaper   r   nparrayr   r	   )r   r   r   yr,   s        r   test_keepdimszTestVariation.test_keepdims>   s     JJryy}}f--aa$///8bgajjl^ gajjl^- . .8$$$$$r   zaxis, expectedr   r   r   )rK   r   
fill_valuec                    |                     d          }|dk    rKt          j        t          t                    5  t          ||d          }d d d            n# 1 swxY w Y   nt          ||d          }t          ||           d S )N)rK   r   r   r>   TrL   )zerosrA   warnsr   r   r   r   r   rM   r,   r   r   rS   s         r   test_keepdims_size0z!TestVariation.test_keepdims_size0G   s     HHV19908MNNN ; ;adT:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; !$666A8$$$$$s   AA"Azincr, expected_fillc                     |                     g dg dg          }t          |d|j        d         |z   d          }t          ||                    d|                     d S )N)r   r   r(   r(   )r   r(   r)   r)   r   T)rM   r   rN   )r(   r   rV   )r   r   shaper   full)r   increxpected_fillr   r   rS   s         r   'test_keepdims_and_ddof_eq_len_plus_incrz5TestVariation.test_keepdims_and_ddof_eq_len_plus_incrU   si     JJlll344aaagaj4&7$GGG2776m7DDEEEEEr   c                     |                     |                    dt                    d          }|j        |d<   t	          |dd          }t          |t          j        d          d	z  |j        gd
           d S )N   dtype)r(   r!   rU   r   r4   rM   r:         ?      ?gV瞯<)atol)rP   r   floatr;   r   r	   r   r   )r   r   ar+   s       r   test_propagate_nanz TestVariation.test_propagate_nan]   su    
 JJryy%y00'::&$aaK888DIcNN3.7eDDDDDDr   z$Python list input uses NumPy backendc                 ~    t          ddgddggd           }t          |t          j        d          dz             d S )Nr   r   r(   r)   rM   rh   ri   )r   r	   r   r   )r   r   rS   s      r   test_axis_nonezTestVariation.test_axis_noneg   sF     1v1v&T22249S>>#-.....r   c                     |                     g dg dg          }t          j        t          t          f          5  t          |d           d d d            d S # 1 swxY w Y   d S )NrF   )r   rK      rJ   ro   )r   rA   rB   r   
IndexErrorr   r   s      r   test_bad_axiszTestVariation.test_bad_axisn   s    JJ			999-..]Iz233 	" 	"ab!!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   AA"Az5ignore:divide by zero encountered:RuntimeWarning:daskc                 V   |                     g d          }t          |          }t          ||                     |j                             |                    |d|z  g          }t          |d          }t          ||                     |j        |j        g                     d S )N)r7         r$         rw   g      $r   ro   )r   r   r   infstack)r   r   r   rS   x2y2s         r   test_mean_zerozTestVariation.test_mean_zerot   s     JJ///00aLL2::bf--...XXq$q&k""r"""BJJ'78899999r   z4ignore:invalid value encountered:RuntimeWarning:daskr   r1   rK   r(   r8   c                     |                     |          }t          |          }t          ||                     |j        |j                             d S )Nre   )r   r   r   r;   rf   )r   r   r   rS   s       r   test_return_nanzTestVariation.test_return_nan   sH     JJqMMaLL2::bfAG:<<=====r   z4ignore:Invalid value encountered:RuntimeWarning:daskr)   Nc                 $   |                     d          }|dk    r@t          t          |          5  t          ||          }d d d            n# 1 swxY w Y   nt          ||          }t	          ||                    |                     d S )N)r)   r   r   )r   ro   )emptyr   r   r   r   r   r[   s         r   test_2d_size_zero_with_axisz)TestVariation.test_2d_size_zero_with_axis   s     HHV199 /B777 , ,ad+++, , , , , , , , , , , , , , , !$'''A2::h//00000s   AAAc                     |                     ddg          }t          t          |d          |                     |j                              d S )Nrv   g      r(   r   )r   r   r   rx   )r   r   x1s      r   test_neg_infzTestVariation.test_neg_inf   sL     ZZc
##	"1---rzz26'/B/BCCCCCr   c                     |                     |j        dd|j        gdd|j        |j        gg          }t          t          |ddd          |j         |j         g           d S )Nr   iir(   r5   rM   r   r:   )r   r;   r   r   rx   )r   r   rz   s      r   test_neg_inf_nanzTestVariation.test_neg_inf_nan   sz     ZZ"&!S"&1r262624 5 5	"11HHH&26'*	, 	, 	, 	, 	,r   r:   c           	         |                     dd|j        dgdd|j        dgdd|j        dgg          }|dk    rKt          j        t          t
                    5  t          |d|	          }d d d            n# 1 swxY w Y   nt          |d|	          }t          ||j        |j        |j        t          j
        d
          dz  g           d S )Nr   rJ   r   r(   r)   r5   r>   rg   gUUUUUU?)r   r;   rA   rZ   r   r
   r   r	   rx   r   r   )r   r:   r   r   rS   s        r   test_combined_edge_casesz&TestVariation.test_combined_edge_cases   s,    JJB*B*B*, - - 08IJJJ @ @aaJ???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !!
;;;ABFBFBFDIcNN14DEFFFFFs   A99A= A=zddof, expectedgUUUUUU?g      ?      ?g?rh   c           
      .   |j         }|                    dd|dgg d|dd|g|dd|g||||gg dg d	g          }t          j        t          t
          
          5  t          |d|d          }d d d            n# 1 swxY w Y   t          ||           d S )Nr$   r%   r&   )r1   r'   r&   r$   g      r   r   )r&   r&   r&   r&   )r1   r1   r1   r1   r>   r   r5   r   )r;   r   rA   rZ   r   r
   r   r	   )r   r   r,   r   r;   r   r+   s          r   test_more_nan_policy_omit_testsz-TestVariation.test_more_nan_policy_omit_tests   s    fJJc3,,,,c3,c3,c3,,,,,,,. / / \,4EFFF 	C 	C!!$6BBBA	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C8$$$$$s   A::A>A>c           	          |                     g d          }|                     ddd|j        dd|j        g          }t          |d          }t          |dd	          }t          |t	          j        d
          dz             ||k    sJ d S )Nr#   r   r(   r)   r   rK   r   r5   )r:   r   g      @)r   r;   r   r	   r   r   )r   r   rl   nan_arS   nan_ys         r   test_variation_ddofz!TestVariation.test_variation_ddof   s    
 JJ+++,,

Aq!RVQ26:;;aa   %F;;;49S>>!+,,,Ezzzzzzr   )#__name__
__module____qualname____doc__r   rA   markparametrizer-   skip_xp_backendsr3   rQ   r;   r   r<   rD   rH   rT   r   r_   r\   rx   rb   rm   rp   rt   filterwarningsr|   r~   r   r   r   r   r   r    r   r   r   r      s5        M M M [UQG,,1 1 -,1 d+KLLL% % ML% [3*BF3%wrwt}}Q79: : dGI I IG GI I: :
G
 dGI I I- -I I-
 dGI I I6 6I I6 dEG G G% %G G% dEG G G[- ("(6"2"23 '"'&RV"D"D"DEGH H% %H HG G
% dEG G G[2a[1bf+4NOOF F POG GF
 dGI I IE EI IE d+QRRR/ / SR/" " " [ WXX	: 	: YX	: [ VWW[SB46Aq"&!+<"=>>> > ?> XW> [ VWW[- "gBF8A:rvGI I	1 	1I I XW	1 [ WXXD D YXD dGI I I, ,I I, dGI I I[\K+@AA	G 	G BAI I	G dGI I I[
gbgcllGBGCLL"&!RVS"&I	J
c7273<<BFArv>	?
gbgcllGBGCLL"&"&"&!RVL	M	O % % I I%" dGI I I I I  r   r   )r   numpyrQ   rA   scipy.statsr   scipy._lib._utilr   scipy._lib._array_apir   r   scipy._lib._array_api_no_0dr   r	   scipy.stats._axis_nan_policyr
   r   r   r   r   r   r   r   r   <module>r      s
         ! ! ! ! ! ! & & & & & & @ @ @ @ @ @ @ @ H H H H H H H H> > > > > > > > > > ;/  9D D D D D D D D D Dr   