
    Yh$                         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mZ d dlmZmZmZ ej        j        Z edd	
           G d d                      ZdS )    N)suppress_warnings	variation)	AxisError)is_numpy)xp_assert_equalxp_assert_close)too_small_nd_omittoo_small_nd_not_omitSmallSampleWarningtorchzdata-apis/array-api-compat#271)reasonc                   2   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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                            d0ddg          d1                         Z  e	dd	          ej                            d2d ej        d3           ej        d4          ej        dej        d&ej        gfdd5 ej        d6          ej        dej        dej        gfd( ej        d5           ej        d7          ej        ej        ej        dej        gfg          d8                         Z! e	dd	          d9             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      r/var/www/tools.fuzzalab.pt/emblema-extractor/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_onlyr   c                 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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   r3   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   r5   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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)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!   z4ignore:invalid value encountered:RuntimeWarning:daskr   r2   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   sH     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*   r6   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+   r6   r?   rg   gUUUUUU?)r   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,    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(   )r2   r)   r(   r&   g      r   r   )r(   r(   r(   r(   )r2   r2   r2   r2   r?   r   r6   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   r6   )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/   skip_xp_backendsr4   rR   r<   r   r=   rE   rI   rU   r   r_   r\   rx   rb   rm   rp   rt   filterwarningsr|   r~   r   r   r   r   r   r    r!   r   r   r      s        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> [- "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._lib._array_apir   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> > > > > > > > > > ;/  '"BCCCF F F F F F F DCF F Fr!   