
    Cpj52                         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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_casexp_result_typexp_default_dtypec                   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/pdf-tiff/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_overflowG   sc    IIbiilD)FF!%S#1Wt^ 4uQTAX FFGr    N)
__name__
__module____qualname____firstlineno__r   r!   r'   r4   r?   __static_attributes__rA   r   r   r   r      s    !"FHr   r   c                      \ rS rSrS 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)@TestRankDataO   c                    [        USUS9$ )NT)force_floatingxp)r   )r   xrL   s      r   desired_dtypeTestRankData.desired_dtypeR   s    a<<r   c                     UR                  / UR                  S9n[        U5      n[        X1R                  / U R	                  X!S9S95        g)z;stats.rankdata of empty array should return an empty array.r   rL   Nasarrayint64r   r	   rN   )r   rL   r<   rs       r   r   TestRankData.test_emptyU   sD    JJrJ*QK::b0B0B10B0L:MNr   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         axisNr+   c                     UR                  XR                  S9n[        XBS9nUc  SOUn[        XSR                  X`R	                  XCS9S95        g )Nr   rd   )r   rQ   )emptyrT   r   r	   rN   )r   ra   rd   rL   r<   rU   expected_shapes          r   test_empty_multidim TestRankData.test_empty_multidimc   sN     HHU((H+Q"!%588N:L:LQ:L:V8WXr   c                     S/nUR                  X!R                  S9n[        U5      n[        XAR                  S/U R	                  X1S9S95        g)z/Check stats.rankdata with an array of length 1.d   r   r   rQ   NrR   )r   rL   datar<   rU   s        r   r!   TestRankData.test_onek   sK    uJJt88J,QK::se43E3Ea3E3O:PQr   c                    [        U5      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.)rl   rZ   r\   )r%   r   r$   r   rX   r]   )   rp   rp   rZ   rZ   rZ   )r^   r^   r^   r$   r$   r$   )rc   r+   N)r   rS   rT   r   r	   reshape)r   rL   rN   rm   r1   r<   rU   a2ds           r   r4   TestRankData.test_basicr   s    (,::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 )Nrb   c              3   ,   >#    U  H	  oT:  v   M     g 7fNrA   .0ijs     r   	<genexpr>MTestRankData.test_rankdata_object_string.<locals>.min_rank.<locals>.<genexpr>        -1aE1   sumr<   r{   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rw   rA   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                 ^   > T" [        U 5       VVs/ s H  u  pX!4PM
     snn5      $ s  snnf rw   )	enumerate)r<   rz   rM   r   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<   rz   r{   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 )Nrb   c              3   ,   >#    U  H	  oT:  v   M     g 7frw   rA   rx   s     r   r|   OTestRankData.test_rankdata_object_string.<locals>.dense_rank.<locals>.<genexpr>   r~   r   )r   uniquer   )r<   br{   s     `r   
dense_rank<TestRankData.test_rankdata_object_string.<locals>.dense_rank   s8    		!A789q!A-1---q999s   "A)minmaxordinalaveragedensec                 T   > S H!  n[        XS9n[        UTU   " U 5      5        M#     g )N)r   r   r   r   r   method)r   r   )r<   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   )	foobarquxxyzabcefgaceqweqaz   object)r   rb   rc   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U R                  X!S9n[	        X1R                  SS/US95        g )N                       r   rQ   r   r$   )rS   uint64r   rN   r	   r   rL   rm   rU   rN   s        r   test_large_uintTestRankData.test_large_uint   sR    zz5'*"))z<TN**4*7::sCj:FGr   c                 *   UR                  SS/UR                  S9n[        U5      nU R                  X!S9n[	        X1R                  SS/US95        UR                  SS/UR                  S9n[        U5      n[	        X1R                  SS/US95        g )Nr   r   r   rQ   r   r$   l)rS   rT   r   rN   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=   )i'  i i@B c                     UR                  U5      n[        U5      nSUS-   -  nUR                  XS-  U R                  X2S9S9n[	        XF5        g )Ng      ?rb   rQ   r   )onesr   rS   rN   r	   )r   r=   rL   rm   rU   expected_rankrefs          r   test_big_tieTestRankData.test_big_tie   sP    wwqzTNq1ujj-T5G5G5G5TjU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   rc   rb   )   rc   rc   )r   r,   r   )r$   r,   r$   r   rf   r   r%   r$   )r%   r,   r,   rb   )rS   r   r	   )r   rL   rm   	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   rb   r   c                     SnUR                  U5      nU R                  XSS9n[        XRUS9n[        UR                  U5        [        UR
                  U5        [        XsR                  XFS95        g )N)r+   r   rQ   )r   rd   r   )zerosrN   r   r   ra   r   r	   rg   )r   rd   r   rL   ra   rm   rN   rU   s           r   test_size_0_axisTestRankData.test_size_0_axis   sd     xx**4*7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)rp         im)r.   g?g?c                     [         R                  " U 5      n[         R                  " U 5      nX)    n[        XA5      nXRU) '   [         R                  X#'   U$ rw   )r   
zeros_likeisnanr   nan)r<   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                 >   >^ [         R                  " UU4S jX 5      $ )Nc                    > T" U T5      $ rw   rA   )r<   r   r   s    r   <lambda>ITestRankData.test_nan_policy_omit_3d.<locals>.rank_omit.<locals>.<lambda>   s    a1Hr   )r   apply_along_axis)r<   r   rd   r   s    ` r   	rank_omit7TestRankData.test_nan_policy_omit_3d.<locals>.rank_omit   s    &&'H'+0 0r   omitrd   
nan_policyrf   )r   r   RandomStater   infr   r   )r   rd   r   ra   rngr<   rz   r{   r;   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   rc   rb   rc   rc   r   r   r   g      @g      @r-   r$   	propagater   r   r   r   r   rm   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   rc   r+   zThe input contains nan)matchraiser   r   r   rb   )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   rc   r+   r   r   r   r   r   r   rb   )rb   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   r   rl   r   )rl   rl   rl   )r$   r$   r$   )r   r   r   )r%   r%   r%   )r   r$   r%   )rl   ,  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%   )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$   rZ   r[   g      ?@casec                     Uu  p4nUR                  U5      n[        UR                  U5      US9nUR                  XPR                  X2S9S9n[        Xg5        g )Nr   rQ   r   )rS   r   rN   r	   )r   r  rL   valuesr   r1   rU   r   s           r   
test_casesTestRankData.test_casesX  sU    #' F#RZZ'7jj););F);)JjKr   rA   ) rB   rC   rD   rE   rN   r   r_   r   markparametrizerangeri   r!   r4   r   r   skip_xp_backendsr   r   r   r   methodsr   r   r   r   r  r   r&   _rankdata_casesr	  rF   rA   r   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   rA   r   r   <module>r     se     :   . ,5 5 ;;// ?H ?HD 5>>"N  N  #N r   