
    Џkh$                         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y)    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                   6   e Zd ZdZd Zej                  j                  dddg      d        Z e	dd	      d
        Z
ej                  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                  j                  dd ej$                  d      fd ej&                  dej                        fg      d               Z e	dd	      ej                  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                  j5                  d"      d#        Zej                  j5                  d$      ej                  j                  d%d&gd'z  dd(ej*                  d)gg      d*               Zej                  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                  j                  d0ddg      d1               Z  e	dd	      ej                  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"y,):TestVariationz.
    Test class for scipy.stats.variation
    c                     |j                  d      }t        t        |d      |j                  t	        j
                  d      dz               y )N      "@   ddofg      @   )aranger	   r   asarraymathsqrtselfxpxs      \/var/www/teggl/fontify/venv/lib/python3.12/site-packages/scipy/stats/tests/test_variation.py	test_ddofzTestVariation.test_ddof   s6    IIcN	!!,bjj49J.KL    sgnr   c                     |j                  g d      }t        ||z        }|j                  |t        j                  d      z  dz        }t	        ||d       y )N      ?       @      @      @g      @      g|=)rtol)r   r   r   r   r	   )r   r"   r   r   vexpecteds         r   	test_signzTestVariation.test_sign   sK    JJ+,c!e::c$))A,.q018%0r!   Tztest plain python scalar input)np_onlyr   c                 $    t        d      dk(  sJ y )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                 r    |j                  d      }|j                  |d<   t        t        ||      |       y )N      $@	   
nan_policy)r   nanr	   r   )r   r;   r.   r   r   s        r   test_variation_nanz TestVariation.test_variation_nan'   s/     IIcNvv!	!
;XFr!   c                     |j                  dd|j                  dg      }t        j                  t        d      5  t        |d       d d d        y # 1 sw Y   y xY w)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   sM     JJS"&&#./]]:-AB 	-aG,	- 	- 	-s   AAc                     t        j                  t        d      5  t        g dd       d d d        y # 1 sw Y   y xY w)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   s2     ]]:-=> 	6iH5	6 	6 	6s   5>z&`keepdims` only supports NumPy backendc                    |j                  |j                  d      d      }t        |dd      }t        j                  t        j
                  d      dz  gt        j
                  d      dz  gg      }t        ||       y )N
   )r*      r   Taxiskeepdimsr*      )reshaper   r   nparrayr   r	   )r   r   r   yr.   s        r   test_keepdimszTestVariation.test_keepdims>   sh     JJryy}f-aa$/88bggajl^ ggajl^- .8$r!   zaxis, expectedr   r   r   )rL   r   
fill_valuec                     |j                  d      }|dk(  r7t        j                  t        t              5  t        ||d      }d d d        nt        ||d      }t        |       y # 1 sw Y   xY w)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   sk     HHV1908MN ;adT:; ; !$6A8$	; ;s   A))A2zincr, expected_fillc                     |j                  g dg dg      }t        |d|j                  d   |z   d      }t        ||j	                  d|             y )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   sK     JJl34aaaggaj4&7$G2776m7DEr!   c                     |j                  |j                  dt              d      }|j                  |d<   t	        |dd      }t        |t        j                  d      d	z  |j                  gd
       y )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]   s^    
 JJryy%y0':&&$aaK8DIIcN3.7eDr!   z$Python list input uses NumPy backendc                 n    t        ddgddggd       }t        |t        j                  d      dz         y )Nr   r   r*   r+   rN   rh   ri   )r   r	   r   r   )r   r   rT   s      r   test_axis_nonezTestVariation.test_axis_noneg   s4     1v1v&T2499S>#-.r!   c                     |j                  g dg dg      }t        j                  t        t        f      5  t        |d       d d d        y # 1 sw Y   y xY w)NrG   )r   rL      rK   ro   )r   rB   rC   r   
IndexErrorr   r   s      r   test_bad_axiszTestVariation.test_bad_axisn   sE    JJ	9-.]]Iz23 	"ab!	" 	" 	"s   AAz5ignore:divide by zero encountered:RuntimeWarning:daskc                 2   |j                  g d      }t        |      }t        ||j                  |j                               |j	                  |d|z  g      }t        |d      }t        ||j                  |j                  |j                  g             y )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   su     JJ/0aL2::bff-.XXq$q&k"r"BJJ'789r!   z4ignore:invalid value encountered:RuntimeWarning:daskr   r2   rL   r*   r9   c                     |j                  |      }t        |      }t        ||j                  |j                  |j                               y )Nre   )r   r   r   r<   rf   )r   r   r   rT   s       r   test_return_nanzTestVariation.test_return_nan   s9     JJqMaL2::bffAGG:<=r!   r+   Nc                    |j                  d      }t               5 }|j                  t        d       |dk7  rKt	        |      r2t        j                  t        d      5  t        ||      }d d d        nt        ||      }nt        ||      }d d d        t        |j                  |             y # 1 sw Y   -xY w# 1 sw Y   1xY w)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   s     HHV  
	,CJJ{F+qyB<&8@VW 4%ad34 4 "!$/Aad+
	, 	2::h/04 4
	, 
	,s$   AC B4,$C 4B=	9C  C	c                     |j                  ddg      }t        t        |d      |j                  |j                                y )Nrv   g      r*   r   )r   r   r   rx   )r   r   x1s      r   test_neg_infzTestVariation.test_neg_inf   s6     ZZc
#	"1-rzz266'/BCr!   c                     |j                  |j                  dd|j                  gdd|j                  |j                  gg      }t        t        |ddd      |j                   |j                   g       y )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   sg     ZZ"&&!S"&&1r26626624 5	"11H&&266'*	,r!   r;   c           	         |j                  dd|j                  dgdd|j                  dgdd|j                  dgg      }|dk(  r7t        j                  t        t
              5  t        |d|	      }d d d        nt        |d|	      }t        |j                  |j                  |j                  t        j                  d
      dz  g       y # 1 sw Y   NxY w)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 @aaJ?@ @ !!
;ABFFBFFBFFDIIcN14DEF	@ @s   #CCzddof, expectedgUUUUUU?g      ?      ?g?rh   c           
         |j                   }|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        t        |       y # 1 sw Y   xY w)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     ffJJc3,,c3,c3,c3,,,. / \\,4EF 	C!!$6BA	C8$	C 	Cs   A??Bc           	      
   |j                  g d      }|j                  ddd|j                  dd|j                  g      }t        |d      }t        |dd	      }t        |t	        j
                  d
      dz         ||k(  sJ y )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   su    
 JJ+,

Aq!RVVQ266:;aa %F;499S>!+,Ezzr!   )#__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      sI   M [[UQG,1 -1 d+KL% M% [[3*BFF3%wrwwt}Q79: dGIGI:
G
 dGI-I-
 dGI6I6 dEG%G% dEG[[- ("((6"23 '"''&RVV"DEGH%HG
% dEG[[2a[1bff+4NOF PGF
 dGIEIE d+QR/ S/" [[ WX	: Y	: [[ VW[[SB46Aq"&&!+<"=>> ? X> [[- "gBFF8A:rvvGI1I1D dGI,I, dGI[[\K+@A	G BI	G dGI[[
gbggclGBGGCL"&&!RVVS"&&I	J
c72773<BFFArvv>	?
gbggclGBGGCL"&&"&&"&&!RVVL	M	O%I%" dG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> > ;;//  '"BCF F DFr!   