
    5[g#                         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mZ d dlmZmZmZ eej(                  j+                  d      gZej(                  j.                  Z G d	 d
      Zy)    N)suppress_warnings)	variation)	AxisError)array_api_compatible)xp_assert_equalxp_assert_closeis_numpy)too_small_nd_omittoo_small_nd_not_omitSmallSampleWarningskip_xp_backendsc                      e Zd ZdZd Zej                  j                  dddg      d        Zd Z	ej                  j                  dd	e
j                  fd
 e
j                  d      dz  fg       eddg      d               Z eddg      d        Z eddg      d        Z eddg      d        Z eddg      ej                  j                  dd e
j$                  d      fd e
j&                  de
j                        fg      d               Z eddg      ej                  j                  dde
j*                  fde
j                  fg      d               Z eddg      d        Z eddg      d        Zd  Zd! Z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g      d,        Z eddg      ej                  j                  d-d	d
g      d.               Z eddg      ej                  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g      d6        Z!y))7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/html/bid-api/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    c                 .    t        t        d      d       y )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reasonsc                 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_raise0   sE     JJS"&&#./]]:-ABaG, CBBs   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   r1   s     r   test_bad_nan_policyz!TestVariation.test_bad_nan_policy7   s)     ]]:-=>iH5 ?>>s   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_size0F   sd     HHV1908MNadT: ON !$6A8$	 ONs   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_incrT   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   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\   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_nonef   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_axism   s<    JJ	9-.]]Iz23ab! 433s   AAc                 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_zeros   su     JJ/0aL2::bff-.XXq$q&k"r"BJJ'789r    r   r0   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~   s7    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%ad3 XW "!$/Aad+ ! 	2::h/0 XW ! 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)   r4   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*   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"bffa("bffa("bffa(* + 08IJaaJ? KJ !!
;ABFFBFFBFFDIIcN14DEF	 KJs   #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'   )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     ffJJc3,,c3,c3,c3,,,. / \\,4EF!!$6BA G8$ GFs   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   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   su    
 JJ+,

Aq!RVVQ266:;aa %F;499S>!+,Ezzr    )"__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 [[UQG,1 -1- [[3*BFF3%wrwwt}Q79: dIJLGL:
G
 dIJL-L-
 dIJL6L6 dGHJ%J% dGHJ[[- ("((6"23 '"''&RVV"DEGH%HJ
% dGHJ[[2a[1bff+4NOF PJF
 dIJLELE d-S,TU/ V/"	: [[SB46Aq"&&!+<"=>> ?> [[- "gBFF8A:rvvGI1I1D dIJL,L, dIJL[[\K+@A	G BL	G dIJL[[
gbggclGBGGCL"&&!RVVS"&&I	J
c72773<BFFArvv>	?
gbggclGBGGCL"&&"&&"&&!RVVL	M	O%L%" dIJLLr    r   )r   numpyrR   rB   numpy.testingr   scipy.statsr   scipy._lib._utilr   scipy.conftestr   scipy._lib._array_apir   r   r	   scipy.stats._axis_nan_policyr
   r   r   r   usefixtures
pytestmarkr   r   r   r    r   <module>r      sb       + ! & / L L> > #FKK$;$;<N$OP
;;// C Cr    