
    MhD                     h    S SK J r Jr  S SKrS SKrS SKJrJr  S SKJ	r	J
r
Jr  S SKJr   " S S5      rg)    )datetime	timedeltaN)InfinityNegInfinity)	DataFrameIndexSeriesc                   N	   \ rS rSr\" SSSS\R                  SSS\R                  S/
5      r\" \\S.5      r	\R                  " SS	S
S\R                  SSS\R                  S	/
5      \R                  " SSSS\R                  SSS\R                  S/
5      \R                  " SSSS\R                  SSS\R                  S/
5      \R                  " SSSS\R                  SSS\R                  S/
5      \R                  " SSSS\R                  SSS\R                  S/
5      S.r\R                  " / SQS9S 5       rS rS rS rS rS rS r\R*                  R-                  SSS/5      \R*                  R-                  S/ SQ5      S 5       5       r\R*                  R-                  S/ SQ5      S 5       r\R*                  R-                  S SS/5      \R*                  R-                  SS!\/5      S" 5       5       r\R*                  R-                  S#S$/ S%Q/ S&Q/ S'Q/4S(/ S)Q/ S*Q/ S+Q/4S,/ S%Q/ S-Q/ S.Q/4S// S0Q/ S1Q/ S2Q/4S3/ S)Q/ S4Q/ S.Q/4/5      S5 5       r\R*                  R8                  S6 5       r\R*                  R-                  S7\R<                  * S8S9S:S;S<SS=S>S?SS@\R<                  /SA4\R<                  * S8S9S:S;SBSS=S>S?SS@\R<                  /SC4\R>                  " \R@                  5      RB                  SSSD\R>                  " \R@                  5      RD                  /SE4\R>                  " \RF                  5      RB                  SFSSSGSHSI\R>                  " \RF                  5      RD                  /SJ4\$" 5       SKSLSMSNSO\%" 5       /SP4\&" SQSS5      \&" SQSS5      \&" SQSS5      /SR4/5      SS 5       r'ST r(SU r)\R*                  R-                  SVSWSX/ SYQ4SWSZ/ S[Q4S\SX/ S]Q4S\SZ/ S^Q4/5      S_ 5       r*\R*                  R-                  SVS\SX/ S`Q4S\SZ/ S`Q4SWSX/ SaQ4SWSZ/ SaQ4/5      Sb 5       r+\R*                  R-                  Sc/ SdQ/ SeQSf.\" Sg/ ShQ0\," Sg/\Si9Sj94Sk/ SdQ0\" \-" S5      / Sl94/5      Sm 5       r.\R*                  R-                  SnSoSp/5      Sq 5       r/Srr0g!)sTestRank                  AB      ?g      @      @      @g       @         )averageminmaxfirstdense)paramsc                     UR                   $ )z%
Fixture for trying all rank methods
)param)selfrequests     V/var/www/html/env/lib/python3.13/site-packages/pandas/tests/frame/methods/test_rank.pymethodTestRank.method"   s    
 }}    c                    [         R                  " S5      n[        R                  UR                  S S S2S4'   [        R                  UR                  S S S2S4'   [        R                  UR                  S S S2S4'   [        R                  UR                  S S S2S	4'   UR                  5       nUR                  S
5      n[        R                  " UR                  5      nUR                  [        R                  5      R                  n[        R                  " UR                  SU5      n[        R                  Xu'   [        R                  " UR                  S
U5      n[        R                  X'   [        R                  " UR                  U5        [        R                  " UR                  U5        [        [        R                  R!                  S5      R#                  SSSS9R%                  S5      5      n	U	R                  5       n
U	R'                  [(        5      R                  5       n[        R*                  " X5        U	R                  S
5      n
U	R'                  [(        5      R                  S
5      n[        R*                  " X5        g )Nscipy.statsr   r   r   r   r   Cr   Dr   r   (   )size)
   r   )pytestimportorskipnpnanlocrankisnanvaluesfillnainfapply_along_axisrankdatatmassert_almost_equalr   randomdefault_rngintegersreshapeastypefloatassert_frame_equal)r#   float_framesp_statsranks0ranks1maskfvalsexp0exp1dfresultexps               r%   	test_rankTestRank.test_rank)   s   &&}5$&FF!S!$&FF!S!$&FF!S!$&FF!S!!!#!!!$xx**+""266*11""8#4#4a?VV
""8#4#4a?VV

v}}d3
v}}d3 II!!!$--a-<DDWM
 ii##%
f*ii##A&
f*r(   c                    [        / SQ/ SQ/5      n[        / SQ/ SQ/5      S-  nUR                  SSS9n[        R                  " X25        [        / SQ/ SQ/5      nUR                  S5      S	-  nUR                  SSS9n[        R                  " X25        [        / S
Q/ SQ/5      n[        / SQ/ SQ/5      nUR                  SSS9n[        R                  " X25        [        / SQ/ SQ/5      nUR                  SSS9n[        R                  " X25        [        S[        R
                  S// SQ/5      n[        S	[        R
                  S// SQ/5      nUR                  SSS9n[        R                  " X25        [        S	[        R
                  S// SQ/5      nUR                  SSS9n[        R                  " X25        [        SSS5      [        R
                  [        SSS5      /[        SSS5      [        SSS5      [        SSS5      //n[        U5      n[        S	[        R
                  S// SQ/5      nUR                  SSSS9n[        R                  " X25        [        S[        R
                  S	// SQ/5      nUR                  SSSS9n[        R                  " X25        [        S/ SQ05      n[        S/ SQ05      n[        R                  " UR                  5       U5        g )N)r   r   r   )r   r   r         ?      @       @rU   r   Tpctr   rV   )bca)r[   rZ   rY   rV   rU   rT   Fnumeric_only)rV   r   rT   )r   r   r   rY   r[   rT   )rT   rT   rV     r   r   i  r   )r^   	ascendingrV   rT   rU   )#B;rb   r/   gDcLg_QPgKH9)r   rT   r   g      @g      @r   rV   )r   r5   r<   rD   r2   r3   r   )r#   rM   expectedrN   datarO   s         r%   
test_rank2TestRank.test_rank2M   s   	9-.oy9:S@%
f/	9-.771:#%
f/9:oy9:/
f/o{;</
f/bffc*O<=sBFFC0/BC/
f/sBFFC0/BC/
f/ dAq!2668D!Q+?@dAq!8D!Q#7$19MN
 t_ sBFFC0/BC$?
f/sBFFC0/BC%@
f/NOPABC
bggi-r(   c                     [        [        R                  R                  S5      R	                  S5      SS9nUR                  5       nUR                  5         Un[        R                  " X25        g )Nr   )r/   r   float64dtype)	r   r2   r>   r?   standard_normalcopyr5   r<   rD   r#   rM   rd   rN   s       r%   test_rank_does_not_mutate"TestRank.test_rank_does_not_mutate~   sV     II!!!$44W=Y
 779
	
f/r(   c                     [         R                  " 5       US'   [        SSS9US'   UR                  SS9  [        R
                  " [        SS9   UR                  SS	9  S S S 5        g ! , (       d  f       g = f)
Nr   r   )dayssecondsr   Fr]   z"not supported between instances ofmatchaxis)r   nowr   r5   r0   raises	TypeError)r#   float_string_frames     r%   test_rank_mixed_frameTestRank.test_rank_mixed_frame   sc    )1:&*3A*F;'U3]]9,PQ###+ RQQs   A''
A5c                 
   [         R                  " S5      n[        R                  UR                  S S S2S4'   [        R                  UR                  S S S2S4'   [        R                  UR                  S S S2S4'   [        R                  UR                  S S S2S	4'   UR                  S
S9nUR                  SS
S9nUR                  [        R                  5      R                  n[        R                  " UR                  SU5      n[        R                  " UR                  SU5      n[        R                  " UR                  U5        [        R                  " UR                  U5        UR                  SS9nUR                  SSS9nUR                  UR                  5       S-
  R                  5       5      R                  nUR                  n	U	R                  U	R                  5       S-
  R                  5       5      R                  n	U	R                  [        R                  5      R                  n	[        R                  " UR                  SU5      n[        R                  " UR                  SU	5      n[        R                  " UR                  U5        [        R                  " UR                  U5        UR                  SSS9nUR                  SSSS9nUR                  [        R                  5      R                  n[        R                  " UR                  SU* 5      n[        R                  " UR                  SU* 5      n[        R                  " UR                  U5        [        R                  " UR                  U5        UR                  S
SS9nUR                  SS
SS9nUR                  UR                  5       S-
  R                  5       5      R                  nUR                  n	U	R                  U	R                  5       S-
  R                  5       5      R                  n	U	R                  [        R                  5      R                  n	[        R                  " UR                  SU* 5      n[        R                  " UR                  SU	* 5      n[        R                   " UR                  U5        [        R                   " UR                  U5        Sn
[         R"                  " [$        U
S9   UR                  SSS9  S S S 5        [         R"                  " [$        U
S9   UR                  SSS9  S S S 5        g ! , (       d  f       NA= f! , (       d  f       g = f)Nr*   r   r   r   r   r   r+   r   r,   bottom)	na_optionr   r   topF)r   r`   z3na_option must be one of 'keep', 'top', or 'bottom'rt   badT)r0   r1   r2   r3   r4   r5   r8   r9   r7   r:   r;   r<   r=   r   to_dictTassert_numpy_array_equalry   
ValueError)r#   rE   rF   rG   rH   rJ   rK   rL   fval0fval1msgs              r%   test_rank_na_optionTestRank.test_rank_na_option   s'   &&}5$&FF!S!$&FF!S!$&FF!S!$&FF!S! !!H!5!!!x!8""266*11""8#4#4a?""8#4#4a?
v}}d3
v}}d3 !!E!2!!!u!5""KOO$5$9#B#B#DELLeiikAo6689;;RVV$++""8#4#4a?""8#4#4a?
v}}d3
v}}d3
 !!EU!C!!!u!F""266*11""8#4#4a%@""8#4#4a%@
v}}d3
v}}d3
 !!H!F!!!x5!I""KOO$5$9#B#B#DELLeiikAo6689;;RVV$++""8#4#4a%@""8#4#4a%@
##FMM48
##FMM48 D]]:S1u> 2 ]]:S1tu= 21	 21 21s   :U,U
U
U%c                     [        SS/SS//5      n[        R                  " UR                  SS9UR                  SS95        [        R                  " UR                  SS9UR                  SS95        g )	Nr   r   r   r   r   rv   indexcolumns)r   r<   rD   r5   )r#   rM   s     r%   test_rank_axisTestRank.test_rank_axis   sc    AA'(
bgg1gorwwGw/DE
bgg1gorwwIw/FGr(   axr   mc                 d   [         R                  " S5      n[        R                  R	                  S5      R                  SSS5      nUS-
  S-  n[        UR                  S   5       Vs/ s H  n[        [        S5      U-
  5      PM     nnXDS	-   US
-  4 H  n[        XvS9nUR                  XS9n	[        R                  " UR                  XUS:w  a  UOS5      n
U
R                  [        R                  5      n
[        XS9R                  S5      n[         R"                  " X5        M     g s  snf )Nr*   r   r      )d      g      $@r   zg    .Agư>r   )rw   r&   r   ordinalri   )r0   r1   r2   r>   r?   r@   rangeshapechrordr   r5   r:   r;   rB   ri   r<   rD   )r#   r   r   rF   xsicolsvalsrM   rN   sprankrd   s               r%   test_rank_methods_frame TestRank.test_rank_methods_frame   s    &&}5YY""1%..q"i@4i4+0!+=>+=aCHqL!+=>c29-D4.BWW"W/F((!!2!w,QIF ]]2::.F 6==iHH!!&3 . ?s   )!D-rk   )Of8i8c                    SU;   a*  U R                   R                  5       R                  U5      nOU R                   R                  U5      nUR                  SS9nUR	                  5       U-
  R                  5       n[
        R                  " XE5        UR	                  5       U-
  R                  US9nUS:w  a'  UR                  USSS9n[
        R                  " Xe5        UR                  USSS9n[
        R                  " Xu5        g )Nr   F)r`   r&   r   T)r&   r`   r^   )rM   dropnarB   r5   r   r<   rD   )r#   r&   rk   rM   resrd   res2res3s           r%   test_rank_descendingTestRank.test_rank_descending   s    %<!((/B&Bggg&FFHrM'')
c,FFHrM''v'6C<77&E7MD!!$1wwfEwJ
d-r(   rw   Nc                 z    U R                   nSS jnUc  UOUR                  U5      nU" X`R                  U   XS9  g )Nc                     [        XS.5      nUS:X  a  U R                  n UR                  nU R                  X#S9n[        R                  " XT5        g )Nr   r   r&   rw   )r   r   r5   r<   rD   )rM   rd   r&   rw   exp_dfrN   s         r%   _check2d3TestRank.test_rank_2d_tie_methods.<locals>._check2d  sF    X=>FqyTTWWFW6F!!&1r(   r   )r   r   )rM   rB   results)r#   r&   rw   rk   rM   r   frames          r%   test_rank_2d_tie_methods!TestRank.test_rank_2d_tie_methods  s;     WW	2 m5)9V,VGr(   z
method,expr   )rT   rT   rT   )rT         ?UUUUUU?)rT   r   UUUUUU?r   )r   rT   rT   )r   r   r   )r   r   r   r   )rT   r   r   )rT   r   r   r   )r   rT   rT   )r   r   r   )r   r   r   r   )r   r   r   c                     [        / SQ/ SQ/ SQ/5      nUR                  USS9n[        U5      n[        R                  " XE5        g )N)  B   r   )r   A   r   )r   r   r   T)r&   rX   )r   r5   r<   rD   )r#   r&   rO   rM   rN   rd   s         r%   test_rank_pct_trueTestRank.test_rank_pct_true  s?    B }mDED1S>
f/r(   c                     [        [        R                  " S5      [        R                  " SSS5      S.5      nUR                  SS9R	                  5       nUS:H  R                  5       (       d   eg )Ni  r   r   TrW   r   )r   r2   aranger5   r   all)r#   rM   rN   s      r%   test_pct_max_many_rowsTestRank.test_pct_max_many_rowsD  s`     ))I&RYYy!R-HI
 T"&&(!  """"r(   zcontents,dtypeir   g#Bǻg}gJzgWw'&l7rb   g|=r-   ri   gj7֖float32r   uint8ii'  i g    _Bint641r   BABar+   objectr_   
datetime64c                    [         R                  [         R                  S [         R                  " S5      S.n[         R                  " XS9n[         R                  " [	        [        U5      5      SS9S-   nX$;   a  XB   n[         R                  R                  S5      R                  [	        [        U5      5      S5      n[         R                  " XXU5      n[         R                  " Xh[         R                  5      n[         R                  R                  S5      R                  [        U5      5      n	U" XY   5      n
U" Xi   SS9nU
R                  5       n[        R                  " X5        g )Nnat)ri   r   r   r   rj   ri   rT   r   r   )r2   r3   r   arrayr   lenr>   r?   choiceinsertpermutationr5   r<   assert_equal)r#   contentsrk   frame_or_seriesdtype_na_mapr7   	exp_orderna_valuenan_indicesrandom_orderobjrd   rN   s                r%   test_rank_inf_and_nanTestRank.test_rank_inf_and_nanM  s   | vvvv--.	
 (0HHU3v;/yACG	 #*H))//299%F:LaPKYYvH=F		)"&&AI yy,,Q/;;CKHf23"9#:)L
)r(   c           
      ~   / SQn/ SQnSS[         R                  SSS[         R                  [         R                  S[         R                  * /
n[        UUS.USS	9nUR	                  5       nUR                  5       nUS
   R	                  5       US
'   US   R	                  5       US'   [        R                  " XV5        g )N)
r   r   r   r   r   r   r   r   	   r/   )
r   r   r   r   r   r   r   r   r   r   r   r   r   r   )col1col2r   )re   r   rk   r   r   )r2   r3   r9   r   r5   rm   r<   rD   )r#   r   r   r   rM   	df_resultseries_results          r%   "test_df_series_inf_nan_consistency+TestRank.test_df_series_inf_nan_consistency  s    /-1bffaArvvrvvq266'B 
 GGI		 "6
 1f "6
 1f
i7r(   c                     [        S[        R                  * S[        R                  /05      n[        S/ SQ05      nUR                  5       n[        R
                  " X25        g )Nr[   r   rT   rV   rU   )r   r2   r9   r5   r<   rD   rn   s       r%   test_rank_both_infTestRank.test_rank_both_inf  sJ    rvvgq"&&123c?34
f/r(   zna_option,ascending,expectedr   T)rU   rT   rV   Fra   r   r\   rS   c                     U" [         R                  [         R                  [         R                  * /5      nUR                  X#US9nU" U5      n[        R
                  " Xu5        g )Nr&   r   r`   )r2   r9   r3   r5   r<   r   )r#   r   r&   r   r`   rd   r   rN   s           r%   test_rank_inf_nans_na_option%TestRank.test_rank_inf_nans_na_option  sK     rvvrvvw78	R"8,
)r(   )rT   rV         @rU   )rV   rU   rT   r   c                     U" / SQ5      nUR                  SX#S9nU" U5      nU(       a&  [        U[        5      (       a  UR                  S5      n[        R
                  " Xt5        g )Nfoor   Nr   r   r   uint64)r5   
isinstancer	   rB   r<   r   )r#   r   r   r`   rd   using_infer_stringr   rN   s           r%   test_rank_object_firstTestRank.test_rank_object_first  sT     9:IS"8,*S&"9"9x0H
)r(   zdata,expected)r   r   r[   )r   r   r   )r[   rY   rY   r   rj   r   r[   )r   r   c           	      .   [        U[        [        UR                  5       5      [        S9S9n[
        R                  " [        SS9   UR                  5         S S S 5        UR                  SS9n[        R                  " XB5        g ! , (       d  f       N4= f)Nrj   r   z&'<' not supported between instances ofrt   Tr]   )r   r   listkeysr   r0   ry   rz   r5   r<   rD   )r#   re   rd   rM   rN   s        r%   test_rank_mixed_axis_zero"TestRank.test_rank_mixed_axis_zero  sh     tU4		+<F%KL]]9,TUGGI Vd+
f/ VUs   B
Bzdtype, exp_dtype)zstring[pyarrow]Int64)zstring[pyarrow_numpy]ri   c                     [         R                  " S5        [        / SQUS9nUR                  SS9n[        / SQUS9n[        R
                  " XE5        g )Npyarrowr   rj   r   r   )r   r   Nr   )r0   r1   r	   r5   r<   assert_series_equal)r#   rk   	exp_dtyper   rN   rd   s         r%   test_rank_string_dtypeTestRank.test_rank_string_dtype  sI     	I&0>)/;
v0r(    )1__name__
__module____qualname____firstlineno__r	   r2   r3   sr   rM   r   r   r0   fixturer&   rP   rf   ro   r|   r   r   markparametrizer   r   r   r   r   
single_cpur   r9   iinfor   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  __static_attributes__r  r(   r%   r   r      s   1aBFFAq!RVVQ78A	#	$B 88S#sCc3PSTUxxAq!RVVQ1bffa@AxxAq!RVVQ1bffa@A1aArvvq!QBC1aArvvq!QBCG ^^FG H"+H/.b	0,J>XH [[TAq6*[[S"MN4 O +4$ [[W&78. 9.& [[VaV,[[WtVn5H 6 -H  [[(;=PQR'//  "9;RS
 $&=?VW
 '//%	
<0=<0 [[# # [[ VVGFF !( VVGFF !$ hhrxx $$aC"((1C1G1GH'R HHRXX&**HHRXX&**	  mS#tT3
CXN$1%xa';XdAq=QRi8	
;x*y;x*48*0 [[&D/*E?+t_-uo.		
** [[&t12u23D./E/0		
** [[ "	230%V:TU ;q2!FG	
	0	0 [[	%'KL1	1r(   r   )r   r   numpyr2   r0   pandas._libs.algosr   r   pandasr   r   r	   pandas._testing_testingr<   r   r  r(   r%   <module>r     s2   
  
 
 h1 h1r(   