
    S_f                     P    d dl Zd dlmZmZ d dlZd dlmZ d dlm	Z	  G d d      Z
y)    N)assert_equalassert_allclose)	variation)	AxisErrorc                      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      d        Zd Zd Zd Zej                  j                  dd e
j"                  d      fd e
j$                  de
j                        fg      d        Zej                  j                  dde
j(                  fde
j                  fg      d        Zd Zd Zd Zd Zej                  j                  d e
j4                  d      g 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j                  j                  d&d	d
g      d'        Zej                  j                  d(d e
j                  d)       e
j                  d*      e
j(                  de
j                  d+e
j                  gfdd, e
j                  d-      e
j(                  de
j                  de
j                  gfd e
j                  d,       e
j                  d.      e
j(                  e
j                  e
j                  de
j                  gfg      d/        Zd0 Z y#)1TestVariationz.
    Test class for scipy.stats.variation
    c                     t        j                  d      }t        t        |d      t        j                  d      dz         y )N      "@   ddofg      @   )nparanger   r   sqrtselfxs     @lib/python3.12/site-packages/scipy/stats/tests/test_variation.py	test_ddofzTestVariation.test_ddof   s,    IIcN	!!,bggdmAo>    sgnr   c                     t        j                  g d      }t        ||z        }|t        j                  d      z  dz  }t	        ||d       y )Nr         r      r   r   g|=)rtol)r   arrayr   r   r   )r   r   r   vexpecteds        r   	test_signzTestVariation.test_sign   s@    HH_%c!erwwqz>!#8%0r   c                 .    t        t        d      d       y )N      @        )r   r   r   s    r   test_scalarzTestVariation.test_scalar   s    Ys^S)r   znan_policy, expected	propagateomitg@r   c                     t        j                  d      }t         j                  |d<   t        t	        ||      |       y )Ng      $@	   
nan_policy)r   r   nanr   r   )r   r.   r"   r   s       r   test_variation_nanz TestVariation.test_variation_nan   s/     IIcNvv!	!
;XFr   c                     t        j                  ddt         j                  dg      }t        j                  t
        d      5  t        |d       d d d        y # 1 sw Y   y xY w)N      ?       @      @zinput contains nanmatchraiser-   )r   r    r/   pytestraises
ValueErrorr   r   s     r   test_nan_policy_raisez#TestVariation.test_nan_policy_raise$   sK    HHc3,-]]:-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 ofr5   r   r   r   foobarr-   )r8   r9   r:   r   r'   s    r   test_bad_nan_policyz!TestVariation.test_bad_nan_policy)   s0    ]]:-=> 	6iH5	6 	6 	6s   5>c                    t        j                  d      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   r   Taxiskeepdims   )r   r   reshaper   r    r   r   )r   r   yr"   s       r   test_keepdimszTestVariation.test_keepdims-   sh    IIbM!!!Q'aa$/88bggajl^ ggajl^- .8$r   zaxis, expectedr   r   r   )r   r   
fill_valuec                 b    t        j                  d      }t        ||d      }t        ||       y )N)r   r   TrB   )r   zerosr   r   r   rC   r"   r   rG   s        r   test_keepdims_size0z!TestVariation.test_keepdims_size04   s*     HHVadT2Q!r   zincr, expected_fillc                     t        j                  g dg dg      }t        |d|j                  d   |z   d      }t	        |t        j
                  d|             y )N)r   r   r   r   )r   r   r   r   r   T)rC   r   rD   )r   r   rJ   )r   r    r   shaper   full)r   increxpected_fillr   rG   s        r   'test_keepdims_and_ddof_eq_len_plus_incrz5TestVariation.test_keepdims_and_ddof_eq_len_plus_incr<   sG    HHlL12aaaggaj4&7$GQ=ABr   c                    t        j                  d      j                  dd      j                  t              }t         j
                  |d<   t        |dd      }t        |t        j                  d      d	z  t         j
                  gd
       y )N   r   r   rI   r   r)   rC   r.         ?      ?gV瞯<)atol)	r   r   rF   astypefloatr/   r   r   r   )r   ar!   s      r   test_propagate_nanz TestVariation.test_propagate_nanB   sf     IIaL  B'..u5&&$aaK8BGGCL,bff5EBr   c                 n    t        ddgddggd       }t        |t        j                  d      dz         y )Nr   r   r   r   rC   rY   rZ   )r   r   r   r   )r   rG   s     r   test_axis_nonezTestVariation.test_axis_noneJ   s4     1v1v&T22773<+,r   c                     t        j                  g dg dg      }t        j                  t              5  t        |d       d d d        y # 1 sw Y   y xY w)Nr=   )r   r      rA   ra   )r   r    r8   r9   r   r   r   s     r   test_bad_axiszTestVariation.test_bad_axisP   s@    HHi+,]]9% 	"ab!	" 	" 	"s   AAc                    t        j                  g d      }t        |      }t        |t         j                         t        j                  |d|z  g      }t        |d      }t        |t         j                  t         j                  g       y )N)rA   r   rh   r   ra   )r   r    r   r   inf)r   r   rG   x2y2s        r   test_mean_zerozTestVariation.test_mean_zeroV   sc     HH()aLQXXq#a%j!r"R"&&"&&)*r   r   r   r   r,   c                 N    t        |      }t        |t        j                         y )N)r   r   r   r/   )r   r   rG   s      r   test_return_nanzTestVariation.test_return_nana   s     aLQr   r   Nc                 `    t        j                  d      }t        ||      }t        ||       y )N)r   r   ra   )r   emptyr   r   rN   s        r   test_2d_size_zero_with_axisz)TestVariation.test_2d_size_zero_with_axisg   s(     HHVad#Q!r   c                    t        j                  ddg      }t        t        |d      t         j                          t        j                  t         j
                  ddt         j
                  gddt         j
                  t         j
                  gg      }t        t        |ddd	      t         j                   t         j                   g       y )
Nrg   r   r   r   ri   ir*   rC   r   r.   )r   r    r   r   rj   r/   )r   x1rk   s      r   test_neg_infzTestVariation.test_neg_infn   s     XXr2hYr*RVVG4XX3/R02 3YrfEvvgw'	)r   r.   c           	      \   t        j                  ddt         j                  dgddt         j                  dgddt         j                  dgg      }t        |d|      }t	        |t         j                  t         j
                  t         j                  t        j                  d      dz  g       y )	Nr   rA   r   rt   r   r   rX   gUUUUUU?)r   r    r/   r   r   rj   r   )r   r.   r   rG   s       r   test_combined_edge_casesz&TestVariation.test_combined_edge_casesy   s    HHq"bffa("bffa("bffa(* + aaJ7BFFBFFBFFBGGCLNCDr   zddof, expectedgUUUUUU?g      ?r&         ?g?rY   c           
          t         j                  }t        j                  dd|dgg d|dd|g|dd|g||||gg dg d	g      }t        |d
|d      }t	        ||       y )Nr2   r3   r4   )r&   r%   r4   r2   g      rz   r
   )r4   r4   r4   r4   )r&   r&   r&   r&   r   r*   ru   )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   st     ffHHsCc**Cc*Cc*Cc***, - aadv>8$r   c           	      *   t        j                  g d      }t        j                  dddt         j                  ddt         j                  g      }t        |d      }t        |dd	      }t	        |t        j
                  d
      dz         ||k(  sJ y )Nr   r   r   r   r   r   r   r*   )r.   r   g      @)r   r    r/   r   r   r   )r   r^   nan_arG   nan_ys        r   test_variation_ddofz!TestVariation.test_variation_ddof   ss     HH_%!Q2661a89aa %F;2773<>*Ezzr   )!__name__
__module____qualname____doc__r   r8   markparametrizer#   r(   r   r/   r   r0   r;   r?   rH   rq   rR   rO   rj   rU   r_   rb   re   rm   rM   ro   rr   rw   ry   r|   r    r   r   r   r      s   ? [[UQG,1 -1* [[3*BFF3%wrwwt}Q79:G:G
-
6% [[- ("((6"23 '"''&RVV"DEGH"H"
 [[2a[1bff+4NOC PC
C-"	+ [[S8288A;Q26614E"FG  H 
 [[- "gBFF8A:rvvGI"I"
	) [[\K+@AE BE [[
gbggclGBGGCL"&&!RVVS"&&I	J
c72773<BFFArvv>	?
gbggclGBGGCL"&&"&&"&&!RVVL	M	O%% r   r   )numpyr   numpy.testingr   r   r8   scipy.statsr   scipy._lib._utilr   r   r   r   r   <module>r      s      7  ! &W Wr   