
    doi1                         S SK rS SKJrJr  S SKrS SKJr  S SKJ	r	  S SK
JrJr  S SKJrJr  \R                   R"                  r " S S5      r\" \R                  5       " S	 S
5      5       rg)    N)assert_equalassert_array_equal)stats)skip_xp_invalid_arg)rankdata
tiecorrect)xp_assert_equalmake_xp_test_casec                   2    \ rS rSrS rS rS rS rS rSr	g)	TestTieCorrect   c                 x    [         R                  " / [         R                  S9n[        U5      n[	        US5        g)z9An empty array requires no correction, should return 1.0.dtype      ?Nnparrayfloat64r   r   selfrankscs      W/var/www/html/land-ocr/venv/lib/python3.13/site-packages/scipy/stats/tests/test_rank.py
test_emptyTestTieCorrect.test_empty   s*    2::.uQ    c                 z    [         R                  " S/[         R                  S9n[        U5      n[	        US5        g)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                     [         R                  " S5      n[        U5      n[        US5        [         R                  " S5      n[        U5      n[        US5        g)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                    [         R                  " / SQ5      n[        U5      nSnUR                  nSUS-  U-
  US-  U-
  -  -
  n[	        X%5        [         R                  " / SQ5      n[        U5      nSnUR                  nSUS-  U-
  US-  U-
  -  -
  n[	        X%5        [         R                  " / SQ5      n[        U5      nSnUR                  nSUS-  U-
  US-  U-
  -  -
  n[	        X%5        [         R                  " / SQ5      n[        U5      nSnSnUR                  nSUS-  U-
  US-  U-
  -   US-  U-
  -  -
  n[	        X%5        g	)
z8Check a few basic examples of the tie correction factor.)r         @r(   r"   r      )      ?r*   r#   )r   r#   r#   r#   r#   )r*   r*         @r+   r+   N)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           	          Su  p[         R                  " [         R                  " U5      U5      nUR                  n[	        [        U5      5      n[        USX!S-  U-
  -  [        US-  U-
  5      -  -
  5        g )N)i     r   r)   )r   repeatr$   r,   r   r   r   float)r   ntiekanouts         r   test_overflowTestTieCorrect.test_overflowF   sc    IIbiilD)FF!%S#1Wt^ 4uQTAX FFGr    N)
__name__
__module____qualname____firstlineno__r   r   r%   r2   r=   __static_attributes__r?   r   r   r   r      s    !"FHr   r   c                      \ rS rSrS@S jrS rS r\R                  R                  SS/5      \R                  R                  SS	/\
" S
5      Q5      S 5       5       rS rS r\S 5       r\R                  R!                  SSS9S 5       rS r\R                  R                  S/ SQ5      S 5       rS r/ SQr\R                  R                  SSS/5      \R                  R                  S\5      S 5       5       r\R                  R                  S\
" S
5      5      \R                  R                  S\5      S 5       5       rS rS rS  r/ / S/ 4P/ S!/ 4P/ S"/ 4P/ S#/ 4P/ S$/ 4PS%/SS&/4PS%/S!S&/4PS%/S"S&/4PS%/S#S&/4PS%/S$S&/4P/ S'QS/ S(Q4P/ S'QS!/ S)Q4P/ S'QS"/ S*Q4P/ S'QS#/ S)Q4P/ S'QS$/ S+Q4P/ S,QS/ S-Q4P/ S,QS!/ S-Q4P/ S,QS"/ S-Q4P/ S,QS#/ S-Q4P/ S,QS$/ S-Q4P/ S.QS/ S/Q4P/ S.QS!/ S0Q4P/ S.QS"/ S1Q4P/ S.QS#/ S2Q4P/ S.QS$/ S3Q4P/ S4QS/ S5Q4P/ S4QS!/ S6Q4P/ S4QS"/ S7Q4P/ S4QS#/ S8Q4P/ S4QS$/ S9Q4PS:/S;-  S$\R8                  " S&S<5      4P7r\R                  R                  S=\5      S> 5       rS?rg	)ATestRankDataN   averagec                    U(       a  UR                  S5      R                  $ US:X  a  UR                  S5      R                  $ UR                  S5      R                  $ )Nr   rH      )asarrayr   )r   methodhas_nansxps       r   desired_dtypeTestRankData.desired_dtypeQ   sG    ::b>''''-y'8rzz"~##Qbjjm>Q>QQr   c           
          UR                  / UR                  S9n[        U5      n[        X1R                  / U R	                  US9S95        g)z;stats.rankdata of empty array should return an empty array.r   rN   NrK   int64r   r	   rO   )r   rN   r:   rs       r   r   TestRankData.test_emptyV   sD    JJrJ*QK::b0B0Bb0B0I:JKr   c                     [        / 5      n[        U[        R                  " / 5      5        [        / SQ5      n[	        U/ SQ5        g )N(   
      rZ   2   r+   r*   r#   r*         @)r   r   r   r   r   )r   rU   s     r   	test_listTestRankData.test_list\   s3    RL1bhhrl+)*Q12r   shape)r   rJ      axisNr)   c           
          UR                  XR                  S9n[        XBS9nUc  SOUn[        XSR                  X`R	                  US9S95        g )Nr   rc   )r   rR   )emptyrT   r   r	   rO   )r   ra   rc   rN   r:   rU   expected_shapes          r   test_empty_multidim TestRankData.test_empty_multidimd   sO     HHU((H+Q"!%588N:L:LPR:L:S8TUr   c           
          S/nUR                  X!R                  S9n[        U5      n[        XAR                  S/U R	                  US9S95        g)z/Check stats.rankdata with an array of length 1.d   r   r   rR   NrS   )r   rN   datar:   rU   s        r   r   TestRankData.test_onel   sK    uJJt88J,QK::se43E3E3E3L:MNr   c                    U R                  US9n/ SQnUR                  / SQUS9nUR                  X1R                  S9n[        U5      n[	        Xd5        / SQnUR                  / SQUS9nUR                  X1R                  S9n[        U5      n[	        Xd5        / SQnUR                  / SQUS9nUR                  X1R                  S9n[        U5      n[	        Xd5        UR                  US	5      n[        U5      n[	        Xd5        g
)zBasic tests of stats.rankdata.rR   )rk   rZ   r\   )r#   r   r"   r   rX   r]   )   ro   ro   rZ   rZ   rZ   )r^   r^   r^   r"   r"   r"   )rb   r)   N)rO   rK   rT   r   r	   reshape)r   rN   rO   rl   r/   r:   rU   a2ds           r   r2   TestRankData.test_basics   s    **b*1::o]:CJJt88J,QK$#::7}:MJJt88J,QK$'::<M:RJJt88J,QK$ jjF#SM$r   c                   ^^^ S mS mU4S jnUU4S jnS n[        TTUX#S9mU4S jn/ SQnU" [        R                  R                  US	5      5        U" [        R                  R                  US	5      R	                  S
5      5        [        R
                  " / SQS
S9nU" [        R                  R                  US	5      R	                  S
5      5        g )Nc                 b   ^ U  V^s/ s H  mS[        U4S jU  5       5      -   PM     sn$ s  snf )NrJ   c              3   ,   >#    U  H	  oT:  v   M     g 7fNr?   .0ijs     r   	<genexpr>MTestRankData.test_rankdata_object_string.<locals>.min_rank.<locals>.<genexpr>        -1aE1   sumr:   rz   s    `r   min_rank:TestRankData.test_rankdata_object_string.<locals>.min_rank   s+    789q!A-1---q999s   ",c                 \   ^ U  V^s/ s H  m[        U4S jU  5       5      PM     sn$ s  snf )Nc              3   ,   >#    U  H	  oT:*  v   M     g 7frv   r?   rw   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                 ^   > T" [        U 5       VVs/ s H  u  pX!4PM
     snn5      $ s  snnf rv   )	enumerate)r:   ry   xr   s      r   ordinal_rank>TestRankData.test_rankdata_object_string.<locals>.ordinal_rank   s(    	!=aV=>>=s   )
c                 t   > [        T" U 5      T" U 5      5       VVs/ s H  u  pX-   S-  PM     snn$ s  snnf )Nr"   )zip)r:   ry   rz   r   r   s      r   average_rank>TestRankData.test_rankdata_object_string.<locals>.average_rank   s4    .1(1+x{.KL.KdaQUcM.KLLLs   4c                    ^ [         R                  " U 5      nU  V^s/ s H  mS[        U4S jU 5       5      -   PM     sn$ s  snf )NrJ   c              3   ,   >#    U  H	  oT:  v   M     g 7frv   r?   rw   s     r   r{   OTestRankData.test_rankdata_object_string.<locals>.dense_rank.<locals>.<genexpr>   r}   r~   )r   uniquer   )r:   brz   s     `r   
dense_rank<TestRankData.test_rankdata_object_string.<locals>.dense_rank   s8    		!A789q!A-1---q999s   "A)minmaxordinalrH   densec                 T   > S H!  n[        XS9n[        UTU   " U 5      5        M#     g )N)r   r   r   r   rH   rL   )r   r   )r:   rL   r<   rankfs      r   check_ranks=TestRankData.test_rankdata_object_string.<locals>.check_ranks   s+    Eq0"3fa(89 Fr   )	foobarquxxyzabcefgaceqweqaz   object)r   rJ   rb   gX9v@r)   gT㥛 	@r   )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           
          UR                  SS/UR                  S9n[        U5      n[        X1R                  SS/U R	                  US9S95        g )N                       r   r   r"   rR   )rK   uint64r   r	   rO   r   rN   rl   rU   s       r   test_large_uintTestRankData.test_large_uint   sM    zz5'*"))z<TN::sCj8J8Jb8J8Q:RSr   c           
      @   UR                  SS/UR                  S9n[        U5      n[        X1R                  SS/U R	                  US9S95        UR                  SS/UR                  S9n[        U5      n[        X1R                  SS/U R	                  US9S95        g )Nr   r   r   r   r"   rR   lrS   r   s       r   test_large_intTestRankData.test_large_int   s    zz5'*"((z;TN::sCj8J8Jb8J8Q:RSzz5(+288z<TN::sCj8J8Jb8J8Q:RSr   r;   )i'  i i@B c                     UR                  U5      n[        U5      nSUS-   -  nUR                  XS-  U R                  US9S9n[	        XF5        g )Ng      ?rJ   rR   r   )onesr   rK   rO   r	   )r   r;   rN   rl   rU   expected_rankrefs          r   test_big_tieTestRankData.test_big_tie   sP    wwqzTNq1ujj-T5G5G25G5NjOr   c                     UR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/5      n[        USS9n[        XC5        UR                  / SQ/ SQ/5      n[        US	S9n[        Xe5        g )
N)r   rb   rJ   )   rb   rb   )r   r*   r   )r"   r*   r"   r   re   r   r#   r"   )r#   r*   r*   rJ   )rK   r   r	   )r   rN   rl   	expected0r0	expected1r1s          r   	test_axisTestRankData.test_axis   sc    zz9i01JJ}=>	d#&JJn=>	d#&r   )rH   r   r   r   r   r   rJ   rL   c                     SnU R                  X#S9nUR                  U5      n[        XbUS9n[        UR                  U5        [        UR
                  U5        [        XsR                  XES95        g )N)r)   r   rR   )rL   rc   r   )rO   zerosr   r   ra   r   r	   rf   )r   rc   rL   rN   ra   rO   rl   rU   s           r   test_size_0_axisTestRankData.test_size_0_axis   sd     **6*9xxTt4QWWe$QWWm,88E8?@r   c                   ^ Sn[         R                  R                  S5      nUR                  US9nUR                  US9S:  nUR                  US9S:  nUR                  US9S:  n[         R                  XV'   [         R                  * XW'   XX   [         R                  -
    S mU4S jn	[        XRUSS	9n
U	" XRUS
9n[        X5        g )N)ro         im)r,   g?g?c                     [         R                  " U 5      n[         R                  " U 5      nX)    n[        XA5      nXRU) '   [         R                  X#'   U$ rv   )r   
zeros_likeisnanr   nan)r:   rL   r<   ry   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                 >   >^ [         R                  " UU4S jX 5      $ )Nc                    > T" U T5      $ rv   r?   )r:   rL   r   s    r   <lambda>ITestRankData.test_nan_policy_omit_3d.<locals>.rank_omit.<locals>.<lambda>   s    a1Hr   )r   apply_along_axis)r:   rL   rc   r   s    ` r   	rank_omit7TestRankData.test_nan_policy_omit_3d.<locals>.rank_omit   s    &&'H'+0 0r   omitrc   
nan_policyre   )r   r   RandomStater   infr   r   )r   rc   rL   ra   rngr:   ry   rz   r9   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                    S[         R                  S/SS[         R                  // SQ/n[        [        US SS9S[         R                  S	S
S[         R                  SSS/	5        [        [        US SS9[         R                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  /	5        g )Nr   r)   r   rb   rJ   rb   rb   r   r   r   g      @g      @r+   r"   	propagater   r   r   r   r   rl   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                 .   SSSS[         R                  [         R                  /n[        R                  " [        SS9   [        USS9  S S S 5        S[         R                  S/S	S[         R                  /[         R                  SS//n[        R                  " [        SS9   [        USSS
9  S S S 5        [        R                  " [        SS9   [        USSS
9  S S S 5        g ! , (       d  f       N= f! , (       d  f       NM= f! , (       d  f       g = f)Nr   rb   r)   zThe input contains nan)matchraiser   r   r   rJ   )r   r   pytestraises
ValueErrorr   r   s     r   test_nan_policy_raise"TestRankData.test_nan_policy_raise
  s    1aRVVRVV,]]:-EFTg. G BFFAArvvA  ]]:-EFTg6 G ]]:-EFTg6 GF GF GF GFs#   C$"C5D$
C25
D
Dc           	      L   SSSS[         R                  [         R                  /n[        [        USS9[         R                  [         R                  [         R                  [         R                  [         R                  [         R                  /5        S[         R                  S/SS[         R                  // SQ/n[        [        USSS	9S
[         R                  [         R                  /S[         R                  [         R                  /S[         R                  [         R                  //5        [        [        US
SS	9[         R                  [         R                  [         R                  /[         R                  [         R                  [         R                  // SQ/5        g )Nr   rb   r)   r   r   r   r   r   r   rJ   )rJ   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   r   r   r   rk   r   )rk   rk   rk   )r"   r"   r"   )r   r   r   )r#   r#   r#   )r   r"   r#   )rk   ,  r   r   )rk   r   r  r   )r   r(   r+   r(   )r   r"   r+   r"   )r   r#   r+   r#   )r   r"   r#   r"   )r   r"   r+   r#   )rk   r   r  r   rk   )r*         @r^   r  r*   )r   r#   r^   r#   r   )r"   r+   r^   r+   r"   )r   r"   r#   r"   r   )r   r#   r^   r+   r"   rZ   r[   g      ?@casec                     Uu  p4n[        UR                  U5      US9nUR                  XPR                  XBS9S9n[        Xg5        g )Nr   rR   r   )r   rK   rO   r	   )r   r  rN   valuesrL   r/   rU   r   s           r   
test_casesTestRankData.test_casesW  sG    #' RZZ'7jj););F);)JjKr   r?   )rH   F) r@   rA   rB   rC   rO   r   r_   r   markparametrizerangerh   r   r2   r   r   skip_xp_backendsr   r   r   r   methodsr   r   r   r   r   r   r$   _rankdata_casesr  rD   r?   r   r   rF   rF   N   s   R
L3 [[Wyk2[[Vd%6U1X%67V 8 3VO%6 A AB [[!!'2W!XT YT
T [[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   rF   )numpyr   numpy.testingr   r   r   scipyr   scipy.conftestr   scipy.statsr   r   scipy._lib._array_apir	   r
   r	  r  r   rF   r?   r   r   <module>r     s\     :   . , D;;// ?H ?HD 5>>"M  M  #M r   