+
    nDj52                         ^ RI t^ RIHtHt ^ RIt^ RIHt ^ RIH	t	 ^ RI
HtHt ^ RIHtHtHtHt ]P$                  P&                  t ! R R4      t]! ]P                  4       ! R	 R
4      4       tR# )    N)assert_equalassert_array_equal)stats)skip_xp_invalid_arg)rankdata
tiecorrect)xp_assert_equalmake_xp_test_casexp_result_typexp_default_dtypec                   >   a  ] tR t^t o R tR tR tR tR tRt	V t
R# )TestTieCorrectc                    \         P                  ! . \         P                  R7      p\        V4      p\	        VR4       R# )z9An empty array requires no correction, should return 1.0.dtype      ?Nnparrayfloat64r   r   selfrankscs   &  U/data/cameron/venvs/s3viz/lib/python3.14/site-packages/scipy/stats/tests/test_rank.py
test_emptyTestTieCorrect.test_empty   s*    2::.uQ    c                    \         P                  ! R.\         P                  R7      p\        V4      p\	        VR4       R# )z;A single element requires no correction, should return 1.0.r   r   Nr   r   s   &  r   test_oneTestTieCorrect.test_one   s,    #bjj1uQr   c                    \         P                  ! R4      p\        V4      p\        VR4       \         P                  ! R4      p\        V4      p\        VR4       R# )z*Arrays with no ties require no correction.       @r         @N)r   aranger   r   r   s   &  r   test_no_correction!TestTieCorrect.test_no_correction   sD    		#uQ		#uQr   c                t   \         P                  ! . RO4      p\        V4      pRpVP                  pRV^,          V,
          V^,          V,
          ,          ,
          p\	        W%4       \         P                  ! . RO4      p\        V4      pRpVP                  pRV^,          V,
          V^,          V,
          ,          ,
          p\	        W%4       \         P                  ! . RO4      p\        V4      pRpVP                  pRV^,          V,
          V^,          V,
          ,          ,
          p\	        W%4       \         P                  ! . RO4      p\        V4      pRpRpVP                  pRV^,          V,
          V^,          V,
          ,           V^,          V,
          ,          ,
          p\	        W%4       R# )	z8Check a few basic examples of the tie correction factor.r   r#   r$   N)r         @r)   )      ?r*   r$   )r   r$   r$   r$   )r*   r*         @r+   r+   )r   r   r   sizer   )r   r   r   TNexpectedT1T2s   &       r   
test_basicTestTieCorrect.test_basic$   sR    )uJJ!Q$(q!tax00Q! )uJJ!Q$(q!tax00Q! -.uJJ!Q$(q!tax00Q! 23uJJ2q52:"a%"*5!Q$(CCQ!r   c           	     ,   R ^r!\         P                  ! \         P                  ! V4      V4      pVP                  p\	        \        V4      4      p\        VRW!^,          V,
          ,          \        V^,          V,
          4      ,          ,
          4       R# )i  r   N)r   repeatr%   r,   r   r   r   float)r   ntiekanouts   &     r   test_overflowTestTieCorrect.test_overflowG   sc    aIIbiilD)FF!%S#1Wt^ 4uQTAX FFGr    N)__name__
__module____qualname____firstlineno__r   r    r&   r2   r<   __static_attributes____classdictcell____classdict__s   @r   r   r      s&     !"FH Hr   r   c                     a  ] tR t^Ot o R tR tR t]P                  P                  RR#.4      ]P                  P                  RR.]
! ^4      O4      R 4       4       tR tR	 t]R
 4       t]P                  P!                  RRR7      R 4       tR t]P                  P                  R. R$O4      R 4       tR t. R%Ot]P                  P                  R^ ^.4      ]P                  P                  R]4      R 4       4       t]P                  P                  R]
! ^4      4      ]P                  P                  R]4      R 4       4       tR tR tR t. . R. 3N. R. 3N. R. 3N. R. 3N. R. 3N^d.RR.3N^d.RR.3N^d.RR.3N^d.RR.3N^d.RR.3N. R&OR. R'O3N. R&OR. R(O3N. R&OR. R)O3N. R&OR. R(O3N. R&OR. R*O3N. R+OR. R,O3N. R+OR. R,O3N. R+OR. R,O3N. R+OR. R,O3N. R+OR. R,O3N. R-OR. R.O3N. R-OR. R/O3N. R-OR. R0O3N. R-OR. R1O3N. R-OR. R2O3N. R3OR. R4O3N. R3OR. R5O3N. R3OR. R6O3N. R3OR. R7O3N. R3OR. R8O3N^
.^,          R]P8                  ! RR4      3N5t]P                  P                  R ]4      R! 4       tR"tV t R# )9TestRankDatac                   \        VR VR7      # )T)force_floatingxp)r   )r   xrK   s   &&$r   desired_dtypeTestRankData.desired_dtypeR   s    a<<r   c                    VP                  . VP                  R7      p\        V4      p\        W1P                  . V P	                  W!R7      R7      4       R# )z;stats.rankdata of empty array should return an empty array.r   rK   Nasarrayint64r   r	   rM   )r   rK   r9   rs   &&  r   r   TestRankData.test_emptyU   sD    JJrJ*QK::b0B0B10B0L:MNr   c                    \        . 4      p\        V\        P                  ! . 4      4       \        . RO4      p\	        V. RO4       R# )(   NrW   
      rY   2   r+   r*   r$   r*         @)r   r   r   r   r   )r   rT   s   & r   	test_listTestRankData.test_list[   s3    RL1bhhrl+)*Q12r   shapeaxisNc                    VP                  WP                  R 7      p\        WBR7      pVf   RMTp\        WSP                  W`P	                  WCR7      R 7      4       R# )r   ra   NrP   )r   )emptyrS   r   r	   rM   )r   r`   ra   rK   r9   rT   expected_shapes   &&&&   r   test_empty_multidim TestRankData.test_empty_multidimc   sN     HHU((H+Q"!%588N:L:LQ:L:V8WXr   c                    ^d.pVP                  W!P                  R7      p\        V4      p\        WAP                  R.V P	                  W1R7      R7      4       R# )z/Check stats.rankdata with an array of length 1.r   r   rP   NrQ   )r   rK   datar9   rT   s   &&   r   r    TestRankData.test_onek   sK    uJJt88J,QK::se43E3Ea3E3O:PQr   c                .   \        V4      p. ROpVP                  . ROVR7      pVP                  W1P                  R7      p\        V4      p\	        Wd4       . ROpVP                  . ROVR7      pVP                  W1P                  R7      p\        V4      p\	        Wd4       . ROpVP                  . ROVR7      pVP                  W1P                  R7      p\        V4      p\	        Wd4       VP                  VR	4      p\        V4      p\	        Wd4       R# )
zBasic tests of stats.rankdata.r   N)d   rY   r[   )r$   r   r#   rX   r\   )   rm   rm   rY   rY   rY   )r]   r]   r]   r#   r#   r#   )      )r   rR   rS   r   r	   reshape)r   rK   rM   ri   r/   r9   rT   a2ds   &&      r   r2   TestRankData.test_basicr   s    (,::o]:CJJt88J,QK$#::7}:MJJt88J,QK$'::<M:RJJt88J,QK$ jjF#SM$r   c                  aaa R  oR oV3R lpVV3R lpR p\        SSVW#R7      oV3R lp. R
OpV! \        P                  P                  V^4      4       V! \        P                  P                  V^4      P	                  R4      4       \        P
                  ! . RORR7      pV! \        P                  P                  V^4      P	                  R4      4       R	# )c                 h   a V  Uau. uF  o^\        V3R lV  4       4      ,           NK!  	  up# u upi )   c              3   ,   <"   T F	  qS8  x  K  	  R # 5iNr>   .0ijs   & r   	<genexpr>MTestRankData.test_rankdata_object_string.<locals>.min_rank.<locals>.<genexpr>        -1aE1   sumr9   r{   s   &`r   min_rank:TestRankData.test_rankdata_object_string.<locals>.min_rank   s.    789q!A-1----q999s   %/c                 Z   a V  Uau. uF  o\        V3R  lV  4       4      NK  	  up# u upi )c              3   ,   <"   T F	  qS8*  x  K  	  R # 5irw   r>   rx   s   & r   r|   MTestRankData.test_rankdata_object_string.<locals>.max_rank.<locals>.<genexpr>   s     *1Qr   r   r   s   &`r   max_rank:TestRankData.test_rankdata_object_string.<locals>.max_rank   s&    456AqC***A666s   (c                 \   < S! \        V 4       UUu. uF  w  rW!3NK
  	  upp4      # u uppi rw   )	enumerate)r9   rz   rL   r   s   &  r   ordinal_rank>TestRankData.test_rankdata_object_string.<locals>.ordinal_rank   s(    	!=aV=>>=s   (
c                    < \        S! V 4      S! V 4      4       UUu. uF  w  rW,           R ,          NK  	  upp# u uppi )r#   )zip)r9   rz   r{   r   r   s   &  r   average_rank>TestRankData.test_rankdata_object_string.<locals>.average_rank   s6    .1(1+x{.KL.KdaQUcMM.KLLLs   ;c                    a \         P                  ! V 4      pV  Uau. uF  o^\        V3R lV 4       4      ,           NK!  	  up# u upi )ru   c              3   ,   <"   T F	  qS8  x  K  	  R # 5irw   r>   rx   s   & r   r|   OTestRankData.test_rankdata_object_string.<locals>.dense_rank.<locals>.<genexpr>   r~   r   )r   uniquer   )r9   br{   s   & `r   
dense_rank<TestRankData.test_rankdata_object_string.<locals>.dense_rank   s;    		!A789q!A-1----q999s   %A)minmaxordinalaveragedensec                 d   < R F(  p\        WR7      p\        VSV,          ! V 4      4       K*  	  R# )r   methodN)r   r   r   r   r   )r   r   )r9   r   r;   rankfs   &  r   check_ranks=TestRankData.test_rankdata_object_string.<locals>.check_ranks   s+    Eq0"3fa(89 Fr   objectr   N)	foobarquxxyzabcefgaceqweqaz)r   ru   rn   gX9v@ro   gT㥛 	@)dictr   randomchoiceastyper   )	r   r   r   r   r   valr   r   r   s	   &     @@@r   test_rankdata_object_string(TestRankData.test_rankdata_object_string   s    	:	7	?	M	: x)=	:
 NBII$$S#./BII$$S#.55h?@hh1BBII$$S#.55h?@r   torchz#`take_along_axis` fails with uint64)reasonc                    VP                  RR.VP                  R7      p\        V4      pV P                  W!R7      p\	        W1P                  RR.VR7      4       R# )rn   r   rP   r   r#   N                       )rR   uint64r   rM   r	   r   rK   ri   rT   rM   s   &&   r   test_large_uintTestRankData.test_large_uint   sR    zz5'*"))z<TN**4*7::sCj:FGr   c                J   VP                  RR.VP                  R7      p\        V4      pV P                  W!R7      p\	        W1P                  RR.VR7      4       VP                  RR.VP                  R7      p\        V4      p\	        W1P                  RR.VR7      4       R# )	rn   r   rP   r   r#   Nr   r   l)rR   rS   r   rM   r	   r   s   &&   r   test_large_intTestRankData.test_large_int   s    zz5'*"((z;TN**4*7::sCj:FGzz5(+288z<TN::sCj:FGr   r:   c                    VP                  V4      p\        V4      pR V^,           ,          pVP                  WS,          V P                  W2R7      R7      p\	        WF4       R# )g      ?rP   r   N)onesr   rR   rM   r	   )r   r:   rK   ri   rT   expected_rankrefs   &&&    r   test_big_tieTestRankData.test_big_tie   sP    wwqzTNq1ujj-T5G5G5G5TjUr   c                    VP                  . RO. RO.4      pVP                  . RO. RO.4      p\        V^ R7      p\        WC4       VP                  . RO. RO.4      p\        V^R7      p\        We4       R# )	r   rc   N)r   rn   ru   )   rn   rn   )r   r*   r   )r#   r*   r#   r   r$   r#   )r$   r*   r*   )rR   r   r	   )r   rK   ri   	expected0r0	expected1r1s   &&     r   	test_axisTestRankData.test_axis   sc    zz9i01JJ}=>	d#&JJn=>	d#&r   r   r   r   r   r   r   c                    RpVP                  V4      pV P                  WSR7      p\        WRVR7      p\        VP                  V4       \        VP
                  V4       \        WsP                  WFR7      4       R# )ro   rP   )r   ra   r   N)ro   r   )zerosrM   r   r   r`   r   r	   rd   )r   ra   r   rK   r`   ri   rM   rT   s   &&&&    r   test_size_0_axisTestRankData.test_size_0_axis   sd     xx**4*7Tt4QWWe$QWWm,88E8?@r   c                  a Rp\         P                  P                  R4      pVP                  VR7      pVP                  VR7      R8  pVP                  VR7      R8  pVP                  VR7      R8  p\         P                  WV&   \         P                  ) WW&   WX,          \         P                  ,
           R oV3R lp	\        WRVRR7      p
V	! WRVR	7      p\        W4       R
# )rm   im)r,   g?g?c                     \         P                  ! V 4      p\         P                  ! V 4      pW( ,          p\        WA4      pWRV( &   \         P                  W#&   V# rw   )r   
zeros_likeisnanr   nan)r9   r   r;   rz   a_compressedress   &&    r   rank_1d_omit:TestRankData.test_nan_policy_omit_3d.<locals>.rank_1d_omit   sI    --"CAR5L<0CGVVCFJr   c                 >   <a \         P                  ! VV3R  lW 4      # )c                    < S! V S4      # rw   r>   )r9   r   r   s   &r   <lambda>ITestRankData.test_nan_policy_omit_3d.<locals>.rank_omit.<locals>.<lambda>   s    a1Hr   )r   apply_along_axis)r9   r   ra   r   s   &f&r   	rank_omit7TestRankData.test_nan_policy_omit_3d.<locals>.rank_omit   s    &&'H'+0 0r   omitra   
nan_policyrc   N)rm         )r   r   RandomStater   infr   r   )r   ra   r   r`   rngr9   rz   r{   r8   r   r   res0r   s   &&&         @r   test_nan_policy_omit_3d$TestRankData.test_nan_policy_omit_3d   s     ii##H-JJEJ"JJEJ"S(JJEJ"S(JJEJ"S(vvw	rvv		0 qt?.3%r   c                   ^ \         P                  ^.^^\         P                  .. R
O.p\        \        VRRR7      R\         P                  RRR\         P                  RRR.	4       \        \        VRR	R7      \         P                  \         P                  \         P                  \         P                  \         P                  \         P                  \         P                  \         P                  \         P                  .	4       R# )r   Nr   r   r   g      @g      @r+   r#   	propagateru   rn   rn   r   r   r   r   r   ri   s   & r   test_nan_policy_2d_axis_none)TestRankData.test_nan_policy_2d_axis_none   s    BFFAArvv 	8DtGBBFFBBG	I8DtLFFBFFBFFBFFBFFBFFFFBFFBFF4	5r   c                   ^ ^^R\         P                  \         P                  .p\        P                  ! \        RR7      ;_uu_ 4        \        VRR7       RRR4       ^ \         P                  ^.^^\         P                  .\         P                  ^^..p\        P                  ! \        RR7      ;_uu_ 4        \        V^ RR7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \        V^RR7       RRR4       R#   + '       g   i     L; i  + '       g   i     L`; i  + '       g   i     R# ; i)r   zThe input contains nan)matchraiser   Nr   )r   r   pytestraises
ValueErrorr   r   s   & r   test_nan_policy_raise"TestRankData.test_nan_policy_raise  s    1aRVVRVV,]]:-EFFTg. G BFFAArvvA  ]]:-EFFTg6 G ]]:-EFFTg6 GF GF GF GFFs$   	D;D"6D5D	"D2	5E	c           	     `   ^ ^^R\         P                  \         P                  .p\        \        VRR7      \         P                  \         P                  \         P                  \         P                  \         P                  \         P                  .4       ^ \         P                  ^.^^\         P                  .. RO.p\        \        V^ RR7      ^\         P                  \         P                  .^\         P                  \         P                  .^\         P                  \         P                  ..4       \        \        V^RR7      \         P                  \         P                  \         P                  .\         P                  \         P                  \         P                  .. RO.4       R# )r   r   r   r   Nr   r   )ru   r)   r)   r   r   s   & r   test_nan_policy_propagate&TestRankData.test_nan_policy_propagate  s   1aRVVRVV,8D[AFFBFFBFFBFFBFFBFFK	M BFFAArvv 	8Dq[I///1	2 	8Dq[IVVRVVRVV4VVRVVRVV4)+	,r   r   g      ?@casec                    Vw  r4pVP                  V4      p\        VP                  V4      VR 7      pVP                  WPP                  W2R7      R7      p\        Wg4       R# )r   rP   r   N)rR   r   rM   r	   )r   r  rK   valuesr   r/   rT   r   s   &&&     r   
test_casesTestRankData.test_casesX  sU    #' F#RZZ'7jj););F);)JjKr   r>   )r   ru   rn   )i'  i i@B )r   r   r   r   r   )rl   rl   rl   )r#   r#   r#   )r   r   r   )r$   r$   r$   )r   r#   r$   )rl   ,     r   )rl   r	  r  r	  )r   r)   r+   r)   )r   r#   r+   r#   )r   r$   r+   r$   )r   r#   r$   r#   )r   r#   r+   r$   )rl   r	  r  r	  rl   )r*         @r]   r
  r*   )r   r$   r]   r$   r   )r#   r+   r]   r+   r#   )r   r#   r$   r#   r   )r   r$   r]   r+   r#   )!r?   r@   rA   rB   rM   r   r^   r   markparametrizerangerf   r    r2   r   r   skip_xp_backendsr   r   r   r   methodsr   r   r   r   r  r   r%   _rankdata_casesr  rC   rD   rE   s   @r   rH   rH   O   s    =O3 [[Wyk2[[Vd%6U1X%67Y 8 3YR%6 A AB [[!!'2W!XH YHH [[S":;  < 	' ;G[[VaV,[[Xw/A 0 -A [[VU1X.[[Xw/& 0 /&<	57",&'	Y' 
UB' 
UB	'
 
Wb' 
Y' 	C5!' u' u' #' 	C5!' 
)_5' 
%1'  
%1!'" 
'?3#'$ 
)_5%'( 
)_5)'* 
%1+', 
%1-'. 
'?3/'0 
)_51'4 
y*>?5'6 
u&:;7'8 
u&:;9': 
w(<=;'< 
y*>?='@ 
#I/HIA'B 
#E+DEC'D 
#E+DEE'F 
#G-FGG'H 
#I/HII'L Iryyd34M'OR [[V_5  6 r   rH   )numpyr   numpy.testingr   r   r   scipyr   scipy.conftestr   scipy.statsr   r   scipy._lib._array_apir	   r
   r   r   r  r  r   rH   r>   r   r   <module>r     se     :   . ,5 5 ;;// ?H ?HD 5>>"N  N  #N r   