
    e!h#                         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*                  j-                  d	      gZej*                  j0                  Z G d
 d      Zy)    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                  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      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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      d,        Z edd      ej                  j                  d-d	d
g      d.               Z edd      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      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      h/var/www/html/diagnosisapp-backend/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reasonc                 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   r1   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   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_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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_zerot   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 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)   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?@ @ !!
;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'   )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 	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   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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/"	: [[SB46Aq"&&!+<"=>> ?> [[- "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.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      sb       + ! & / * H> > #FKK$;$;<N$OP
;;// C Cr    