
    OwgD                     h    d dl m Z mZ d dlZd dlZd dlmZmZ d dlm	Z	m
Z
mZ d dlmZ  G d d      Zy)    )datetime	timedeltaN)InfinityNegInfinity)	DataFrameIndexSeriesc                   ^	   e Zd Z eddddej
                  dddej
                  dg
      Z eeed      Z ej                  ddd	d
ej
                  d
ddej
                  dg
       ej                  ddddej
                  dddej
                  dg
       ej                  ddddej
                  dddej
                  dg
       ej                  ddddej
                  dddej
                  dg
       ej                  ddddej
                  dddej
                  dg
      dZ
 ej                  g d      d        Zd Zd Zd Zd Zd Zd Zej(                  j+                  dddg      ej(                  j+                  dg d      d               Zej(                  j+                  dg d      d        Zej(                  j+                  dddg      ej(                  j+                  dd eg      d!               Zej(                  j+                  d"d#g d$g d%g d&gfd'g d(g d)g d*gfd+g d$g d,g d-gfd.g d/g d0g d1gfd2g d(g d3g d-gfg      d4        Zej(                  j6                  d5        Zej(                  j+                  d6ej:                   d7d8d9d:d;dd<d=d>dd?ej:                  gd@fej:                   d7d8d9d:dAdd<d=d>dd?ej:                  gdBf ej<                  ej>                        j@                  dddC ej<                  ej>                        jB                  gdDf ej<                  ejD                        j@                  dEdddFdGdH ej<                  ejD                        jB                  gdIf e#       dJdKdLdMdN e$       gdOf e%dPdd       e%dPdd       e%dPdd      gdQfg      dR        Z&dS Z'dT Z(ej(                  j+                  dUdVdWg dXfdVdYg dZfd[dWg d\fd[dYg d]fg      d^        Z)ej(                  j+                  dUd[dWg d_fd[dYg d_fdVdWg d`fdVdYg d`fg      da        Z*ej(                  j+                  dbg dcg ddde edfg dgi e+dfgeh      i      fdjg dci e e,d      g k      fg      dl        Z-ej(                  j+                  dmdndog      dp        Z.y )qTestRank               AB      ?g      @      @      @g       @         )averageminmaxfirstdense)paramsc                     |j                   S )z5
        Fixture for trying all rank methods
        )param)selfrequests     [/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/frame/methods/test_rank.pymethodzTestRank.method"   s    
 }}    c                    t        j                  d      }t        j                  |j                  d d ddf<   t        j                  |j                  d d ddf<   t        j                  |j                  d d ddf<   t        j                  |j                  d d dd	f<   |j                         }|j                  d
      }t        j                  |j                        }|j                  t        j                        j                  }t        j                  |j                  d|      }t        j                  ||<   t        j                  |j                  d
|      }t        j                  ||<   t        j                  |j                  |       t        j                  |j                  |       t        t        j                  j!                  d      j#                  ddd      j%                  d            }	|	j                         }
|	j'                  t(              j                         }t        j*                  |
|       |	j                  d
      }
|	j'                  t(              j                  d
      }t        j*                  |
|       y )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_rankzTestRank.test_rank)   s   &&}5$&FF!S!$&FF!S!$&FF!S!$&FF!S!!!#!!!$xx**+""266*11""8#4#4a?VVT
""8#4#4a?VVT

v}}d3
v}}d3 II!!!$--a-<DDWM
 ii##%
fc*ii##A&
fc*r&   c                 
   t        g dg dg      }t        g dg dg      dz  }|j                  dd      }t        j                  ||       t        g dg dg      }|j                  d      d	z  }|j                  dd      }t        j                  ||       t        g d
g dg      }t        g dg dg      }|j                  dd      }t        j                  ||       t        g dg dg      }|j                  dd      }t        j                  ||       t        dt        j
                  dgg dg      }t        d	t        j
                  dgg dg      }|j                  dd      }t        j                  ||       t        d	t        j
                  dgg dg      }|j                  dd      }t        j                  ||       t        ddd      t        j
                  t        ddd      gt        ddd      t        ddd      t        ddd      gg}t        |      }t        d	t        j
                  dgg dg      }|j                  ddd      }t        j                  ||       t        dt        j
                  d	gg dg      }|j                  ddd      }t        j                  ||       t        dg di      }t        dg di      }t        j                  |j                         |       y )N)r   r   r   )r   r   r         ?      @       @rR   r   Tpctr   rS   )bca)rX   rW   rV   rS   rR   rQ   Fnumeric_only)rS   r   rQ   )r   r   r   rV   rX   rQ   )rQ   rQ   rS     r   r   i  r   )r[   	ascendingrS   rQ   rR   )#B;r_   r-   gDcLg_QPgKH9)r   rQ   r   g      @g      @r   rS   )r   r3   r:   rB   r0   r1   r   )r"   rK   expectedrL   datarM   s         r$   
test_rank2zTestRank.test_rank2M   s   	9-.oy9:S@%
fh/	9-.771:#%
fh/9:oy9:/
fh/o{;</
fh/bffc*O<=sBFFC0/BC/
fh/sBFFC0/BC/
fh/ dAq!2668D!Q+?@dAq!8D!Q#7$19MN
 t_ sBFFC0/BC$?
fh/sBFFC0/BC%@
fh/NOPABC
bggi-r&   c                     t        t        j                  j                  d      j	                  d      d      }|j                         }|j                          |}t        j                  ||       y )Nr   )r-   r   float64dtype)	r   r0   r<   r=   standard_normalcopyr3   r:   rB   r"   rK   ra   rL   s       r$   test_rank_does_not_mutatez"TestRank.test_rank_does_not_mutate~   sX     II!!!$44W=Y
 779
	
fh/r&   c                     t        j                         |d<   t        dd      |d<   |j                  d       t	        j
                  t        d      5  |j                  d	       d d d        y # 1 sw Y   y xY w)
Nr   r   )dayssecondsr   FrZ   z"not supported between instances ofmatchaxis)r   nowr   r3   r.   raises	TypeError)r"   float_string_frames     r$   test_rank_mixed_framezTestRank.test_rank_mixed_frame   sk    )1:&*3A*F;'U3]]9,PQ 	,###+	, 	, 	,s   A11A:c                 
   t        j                  d      }t        j                  |j                  d d ddf<   t        j                  |j                  d d ddf<   t        j                  |j                  d d ddf<   t        j                  |j                  d d dd	f<   |j                  d
      }|j                  dd
      }|j                  t        j                        j                  }t        j                  |j                  d|      }t        j                  |j                  d|      }t        j                  |j                  |       t        j                  |j                  |       |j                  d      }|j                  dd      }|j                  |j                         dz
  j                               j                  }|j                  }	|	j                  |	j                         dz
  j                               j                  }	|	j                  t        j                        j                  }	t        j                  |j                  d|      }t        j                  |j                  d|	      }t        j                  |j                  |       t        j                  |j                  |       |j                  dd      }|j                  ddd      }|j                  t        j                        j                  }t        j                  |j                  d|       }t        j                  |j                  d|       }t        j                  |j                  |       t        j                  |j                  |       |j                  d
d      }|j                  dd
d      }|j                  |j                         dz
  j                               j                  }|j                  }	|	j                  |	j                         dz
  j                               j                  }	|	j                  t        j                        j                  }	t        j                  |j                  d|       }t        j                  |j                  d|	       }t        j                   |j                  |       t        j                   |j                  |       d}
t        j"                  t$        |
      5  |j                  dd       d d d        t        j"                  t$        |
      5  |j                  dd       d d d        y # 1 sw Y   AxY w# 1 sw Y   y xY w)Nr(   r   r   r   r   r   r)   r   r*   bottom)	na_optionr   r   topF)rz   r]   z3na_option must be one of 'keep', 'top', or 'bottom'ro   badT)r.   r/   r0   r1   r2   r3   r6   r7   r5   r8   r9   r:   r;   r   to_dictTassert_numpy_array_equalrt   
ValueError)r"   rC   rD   rE   rF   rH   rI   rJ   fval0fval1msgs              r$   test_rank_na_optionzTestRank.test_rank_na_option   s7   &&}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>	? ]]:S1 	>tu=	> 	>		? 	?	> 	>s   U:U#U #U,c                     t        ddgddgg      }t        j                  |j                  d      |j                  d             t        j                  |j                  d      |j                  d             y )	Nr   r   r   r   r   rq   indexcolumns)r   r:   rB   r3   )r"   rK   s     r$   test_rank_axiszTestRank.test_rank_axis   sc    AA'(
bgg1gorwwGw/DE
bgg1gorwwIw/FGr&   axr   mc                 p   t        j                  d      }t        j                  j	                  d      j                  ddd      }|dz
  dz  }t        |j                  d         D cg c]  }t        t        d      |z
         }}||d	z   |d
z  fD ]  }t        ||      }|j                  ||      }	t        j                  |j                  |||dk7  r|nd      }
|
j                  t        j                        }
t        |
|      j                  d      }t!        j"                  |	|        y c c}w )Nr(   r   r      )d      g      $@r   zg    .Agư>r   )rr   r%   r   ordinalre   )r.   r/   r0   r<   r=   r>   rangeshapechrordr   r3   r8   r9   r@   re   r:   rB   )r"   r   r   rD   xsicolsvalsrK   rL   sprankra   s               r$   test_rank_methods_framez TestRank.test_rank_methods_frame   s    &&}5YY""1%..q"i@4i4+0!+=>aCHqL!>>c29- 		4D4.BWW"QW/F((!!2t!w,QIF ]]2::.F 6==iHH!!&(3		4 ?s   (D3rg   )Of8i8c                     d|v r*| j                   j                         j                  |      }n| j                   j                  |      }|j                  d      }|j	                         |z
  j                         }t        j                  ||       |j	                         |z
  j                  |      }|dk7  r*|j                  |dd      }t        j                  ||       |j                  |dd      }t        j                  ||       y )Nr   F)r]   r%   r   T)r%   r]   r[   )rK   dropnar@   r3   r   r:   rB   )r"   r%   rg   rK   resra   res2res3s           r$   test_rank_descendingzTestRank.test_rank_descending   s    %<!((/B&Bggg&FFHrM'')
c8,FFHrM''v'6C<77&E7MD!!$1wwfEwJ
dH-r&   rr   Nc                     | j                   }dd}||n|j                  |      } ||| j                  |   ||       y )Nc                     t        ||d      }|dk(  r| j                  } |j                  }| j                  ||      }t        j                  ||       y )Nr   r   r%   rr   )r   r~   r3   r:   rB   )rK   ra   r%   rr   exp_dfrL   s         r$   _check2dz3TestRank.test_rank_2d_tie_methods.<locals>._check2d  sL    XH=>FqyTTWWFW6F!!&&1r&   r   )r   r   )rK   r@   results)r"   r%   rr   rg   rK   r   frames          r$   test_rank_2d_tie_methodsz!TestRank.test_rank_2d_tie_methods  s?     WW	2 m5)9V,V$Gr&   z
method,expr   )rQ   rQ   rQ   )rQ         ?UUUUUU?)rQ   r   UUUUUU?r   )r   rQ   rQ   )r   r   r   )r   r   r   r   )rQ   r   r   )rQ   r   r   r   )r   rQ   rQ   )r   r   r   )r   r   r   r   )r   r   r   c                     t        g dg dg dg      }|j                  |d      }t        |      }t        j                  ||       y )N)  B   r   )r   A   r   )r   r   r   T)r%   rU   )r   r3   r:   rB   )r"   r%   rM   rK   rL   ra   s         r$   test_rank_pct_truezTestRank.test_rank_pct_true  sA    B }mDED1S>
fh/r&   c                     t        t        j                  d      t        j                  ddd      d      }|j                  d      j	                         }|dk(  j                         sJ y )Ni  r   r   TrT   r   )r   r0   aranger3   r   all)r"   rK   rL   s      r$   test_pct_max_many_rowszTestRank.test_pct_max_many_rowsD  s]     ))I&RYYy!R-HI
 T"&&(!  """r&   zcontents,dtypeir   g#Bǻg}gJzgWw'&l7r_   g|=r+   re   gj7֖float32r   uint8ii'  i g    _Bint641r   BABar)   objectr\   
datetime64c                    t         j                  t         j                  d t        j                  d      d}t        j                  ||      }t        j                  t	        t        |            d      dz   }||v r||   }t         j                  j                  d      j                  t	        t        |            d      }t        j                  |||      }t        j                  ||t         j                        }t         j                  j                  d      j                  t        |            }	 |||	         }
 |||	   d      }|
j                         }t        j                  ||       y )Nnat)re   r   r   r   rf   re   rQ   r   r   )r0   r1   r   arrayr   lenr<   r=   choiceinsertpermutationr3   r:   assert_equal)r"   contentsrg   frame_or_seriesdtype_na_mapr5   	exp_orderna_valuenan_indicesrandom_orderobjra   rL   s                r$   test_rank_inf_and_nanzTestRank.test_rank_inf_and_nanM  s   | vvvv--.	
 (%0HHU3v;/yACG	L #E*H))//299%F:LaPKYYv{H=F		)["&&AI yy,,Q/;;CKHf\23"9\#:)L
)r&   c           
         g d}g d}ddt         j                  dddt         j                  t         j                  dt         j                   g
}t        ||d|d	      }|j	                         }|j                         }|d
   j	                         |d
<   |d   j	                         |d<   t        j                  ||       y )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   )rb   r   rg   r   r   )r0   r1   r7   r   r3   ri   r:   rB   )r"   r   r   r   rK   	df_resultseries_results          r$   "test_df_series_inf_nan_consistencyz+TestRank.test_df_series_inf_nan_consistency  s    /-1bffaArvvrvvq266'B 
 GGI		 "6
 1f "6
 1f
i7r&   c                     t        dt        j                   dt        j                  gi      }t        dg di      }|j                         }t	        j
                  ||       y )NrX   r   rQ   rS   rR   )r   r0   r7   r3   r:   rB   rj   s       r$   test_rank_both_infzTestRank.test_rank_both_inf  sL    rvvgq"&&123c?34
fh/r&   zna_option,ascending,expectedr{   T)rR   rQ   rS   Fr^   ry   rY   rP   c                      |t         j                  t         j                  t         j                   g      }|j                  |||      } ||      }t	        j
                  ||       y )Nr%   rz   r]   )r0   r7   r1   r3   r:   r   )r"   r   r%   rz   r]   ra   r   rL   s           r$   test_rank_inf_nans_na_optionz%TestRank.test_rank_inf_nans_na_option  sO     rvvrvvw789	R"8,
)r&   )rQ   rS         @rR   )rS   rR   rQ   r   c                      |g d      }|j                  d||      } ||      }|r!t        |t              r|j                  d      }t	        j
                  ||       y )Nfoor   Nr   r   r   uint64)r3   
isinstancer	   r@   r:   r   )r"   r   rz   r]   ra   using_infer_stringr   rL   s           r$   test_rank_object_firstzTestRank.test_rank_object_first  sU     9:IS"8,*S&"9x0H
)r&   zdata,expected)r   r   rX   )r   r   r   )rX   rV   rV   r   rf   r   rX   )r   r   c           	      :   t        |t        t        |j                               t                    }t        j                  t        d      5  |j                          d d d        |j                  d      }t        j                  ||       y # 1 sw Y   2xY w)Nrf   r   z&'<' not supported between instances ofro   TrZ   )r   r   listkeysr   r.   rt   ru   r3   r:   rB   )r"   rb   ra   rK   rL   s        r$   test_rank_mixed_axis_zeroz"TestRank.test_rank_mixed_axis_zero  so     tU4		+<F%KL]]9,TU 	GGI	d+
fh/	 	s   BBzdtype, exp_dtype)zstring[pyarrow]Int64)zstring[pyarrow_numpy]re   c                     t        j                  d       t        g d|      }|j                  d      }t        g d|      }t	        j
                  ||       y )Npyarrowr   rf   r   r   )r   r   Nr   )r.   r/   r	   r3   r:   assert_series_equal)r"   rg   	exp_dtyper   rL   ra   s         r$   test_rank_string_dtypezTestRank.test_rank_string_dtype  sK     	I&0>)/;
vx0r&   )/__name__
__module____qualname__r	   r0   r1   sr   rK   r   r   r.   fixturer%   rN   rc   rk   rw   r   r   markparametrizer   r   r   r   r   
single_cpur   r7   iinfor   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r&   r$   r   r      s   1aBFFAq!RVVQ78A	#	$B 288S#sCc3PSTUrxxAq!RVVQ1bffa@ArxxAq!RVVQ1bffa@A1aArvvq!QBC1aArvvq!QBCG V^^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 !$ bhhrxx $$aC"((1C1G1GH'R BHHRXX&**BHHRXX&**	  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   numpyr0   r.   pandas._libs.algosr   r   pandasr   r   r	   pandas._testing_testingr:   r   r   r&   r$   <module>r     s2   
  
 
 h1 h1r&   