
    _Mh#                         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          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                      e Zd ZdZd Zej                            dddg          d             Z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d! Zej                            d"d#gd$z  dd%e
j        d&gg          d'             Zej                            ddg fde
j        gd(z  fd)e
j        fg          d*             Zd+ Z edd          d,             Z edd          ej                            d-d	d
g          d.                         Z edd          ej                            d/d e
j        d0           e
j        d1          e
j        de
j        d#e
j        gfdd2 e
j        d3          e
j        de
j        de
j        gfd% e
j        d2           e
j        d4          e
j        e
j        e
j        de
j        gfg          d5                         Z  edd          d6             Z!d)S )7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      `/var/www/html/test/jupyter/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    c                 @    t          t          d          d           d S )Nr(           )r   r   r   r   s     r   test_scalarzTestVariation.test_scalar#   s    	#,,,,,r    znan_policy, expected	propagateomitg@r   Tz(`nan_policy` only supports NumPy backend)np_onlyreasonc                     |                     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raiser:   )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*   foobarr:   )rB   rC   rD   r   r1   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   )rL   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)rL   r   r   r?   TrM   )zerosrB   warnsr   r   r   r   )r   rN   r-   r   r   rT   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)rN   r   rO   )r)   r   rW   )r   r   shaper   full)r   increxpected_fillr   r   rT   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"   rV   r   r3   rN   r;         ?      ?gV瞯<)atol)rQ   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*   rN   rh   ri   )r   r	   r   r   )r   r   rT   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 )NrG   )r   rL      rK   ro   )r   rB   rC   r   
IndexErrorr   r   s      r   test_bad_axiszTestVariation.test_bad_axisn   s    JJ			999-..]Iz233 	" 	"ab!!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   AA"Ac                 V   |                     g d          }t          |          }t          ||                     |j                             |                    |d|z  g          }t          |d          }t          ||                     |j        |j        g                     d S )N)r8         r%         rw   g      $r   ro   )r   r   r   infstack)r   r   r   rT   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    r   r0   rL   r)   r9   c                     |                     |          }t          |          }t          ||                     |j        |j                             d S )Nre   )r   r   r   r<   rf   )r   r   r   rT   s       r   test_return_nanzTestVariation.test_return_nan   sF    JJqMMaLL2::bfAG:<<=====r    r*   Nc                    |                     d          }t                      5 }|                    t          d           |dk    rft	          |          rEt          j        t          d          5  t          ||          }d d d            n# 1 swxY w Y   n#t          ||          }nt          ||          }d d d            n# 1 swxY w Y   t          ||
                    |                     d S )N)r*   r   zstd*r   zSee documentation...r?   ro   )emptyr   filterUserWarningr   rB   r[   r   r   r   r   )r   rN   r-   r   r   suprT   s          r   test_2d_size_zero_with_axisz)TestVariation.test_2d_size_zero_with_axis   si    HHV   
	,CJJ{F+++qyyB<< 0&8@VWWW 4 4%ad3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 "!$///AAad+++
	, 
	, 
	, 
	, 
	, 
	, 
	, 
	, 
	, 
	, 
	, 
	, 
	, 
	, 
	, 	2::h//00000s6   AC	0BC	B	C	B	'C		CC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)   r4   rN   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   rK   r   r)   r*   r4   r?   rg   gUUUUUU?)rS   r<   rB   r[   r   r
   r   r	   rx   r   r   )r   r;   r   r   rT   s        r   test_combined_edge_casesz&TestVariation.test_combined_edge_cases   s,    HHq"bfa("bfa("bfa(* + + 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'   )r0   r(   r'   r%   g      r   r   )r'   r'   r'   r'   )r0   r0   r0   r0   r?   r   r4   r   )r<   r   rB   r[   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   rL   r   r4   )r;   r   g      @)r   r<   r   r	   r   r   )r   r   rl   nan_arT   nan_ys         r   test_variation_ddofz!TestVariation.test_variation_ddof   s    
 JJ+++,,

Aq!RVQ26:;;aa   %F;;;49S>>!+,,,Ezzzzzzr    )"__name__
__module____qualname____doc__r   rB   markparametrizer.   r2   rR   r<   r   r   r=   rE   rI   rU   r   r_   r\   rx   rb   rm   rp   rt   r|   r~   r   r   r   r   r   r    r    r   r   r      s        M M M [UQG,,1 1 -,1- - - [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/" " "	: 	: 	: [SB46Aq"&!+<"=>>> > ?>> [- "gBF8A:rvGI I1 1I I1D D 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   numpyrR   rB   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   <module>r      s+         + + + + + + ! ! ! ! ! ! & & & & & & / / / / / / * * * * * * H H H H H H H H> > > > > > > > > > #FK$;$;<N$O$OP
;/ C C C C C C C C C Cr    