
    o[weC                     l    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
 d dlmZ  G d d          ZdS )    )datetime	timedeltaN)InfinityNegInfinity)	DataFrame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                            dddg          ej                            dg d          d                         Zej                            dg d          d             Zej                            dddg          ej                            dd eg          d!                         Ze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        j        d5             Ze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                  j!        gdDf ej        ej"                  j         dEdddFdGdH ej        ej"                  j!        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                            dUdVdWg dXfdVdYg dZfd[dWg d\fd[dYg d]fg          d^             Z)ej                            dUd[dWg d_fd[dYg d_fdVdWg d`fdVdYg d`fg          da             Z*ej                            dbg dcg ddde edfg dgi          fdhg dci e e+d          g i          fg          dj             Z,ej                            dkdldmg          dn             Z-d S )oTestRank               AB      ?g      @      @      @g       @         )averageminmaxfirstdense)paramsc                     |j         S )z5
        Fixture for trying all rank methods
        )param)selfrequests     Dlib/python3.11/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<   |                                }|                    d
          }t          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                            d                              ddd                              d                    }	|	                                }
|	                    t(                                                    }t          j        |
|           |	                    d
          }
|	                    t(                                        d
          }t          j        |
|           d S )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5$&F!S!$&F!S!$&F!S!$&F!S!!!##!!!$$x*++""26**1"8#4a??VT
"8#4a??VT

v}d333
v}d333 I!!!$$--a-<<DDWMM
 
 ii##%%
fc***ii##A&&
fc*****r%   c                    t          g dg dg          }t          g dg dg          dz  }|                    dd          }t          j        ||           t          g dg dg          }|                    d          d	z  }|                    dd          }t          j        ||           t          g d
g dg          }t          g dg dg          }|                    dd          }t          j        ||           t          g dg dg          }|                    dd          }t          j        ||           t          dt          j        dgg dg          }t          d	t          j        dgg dg          }|                    dd          }t          j        ||           t          d	t          j        dgg dg          }|                    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          }|                    ddd          }t          j        ||           t          dt          j        d	gg dg          }|                    ddd          }t          j        ||           t          dg di          }t          dg di          }t          j        |                                |           d S )N)r   r   r   )r   r   r         ?      @       @rQ   r   Tpctr   rR   )bca)rW   rV   rU   rR   rQ   rP   Fnumeric_only)rR   r   rP   )r   r   r   rU   rW   rP   )rP   rP   rR     r   r   i  r   )rZ   	ascendingrR   rP   rQ   )#B;r^   r,   gDcLg_QPgKH9)r   rP   r   g      @g      @r   rR   )r   r2   r9   rA   r/   r0   r   )r!   rJ   expectedrK   datarL   s         r#   
test_rank2zTestRank.test_rank2L   sS   			999-..oooyyy9::S@%%
fh///			999-..771::#%%
fh///9::oooyyy9:://
fh///ooo{{{;<<//
fh///bfc*OOO<==sBFC0///BCC//
fh///sBFC0///BCC//
fh/// dAq!!268D!Q+?+?@dAq!!8D!Q#7#7$19M9MN
 t__ sBFC0///BCC$??
fh///sBFC0///BCC%@@
fh///NNNOPPAAABCC
bggii-----r%   c                    t          t          j                            d                              d          d          }|                                }|                                 |}t          j        ||           d S )Nr   )r,   r   float64dtype)	r   r/   r;   r<   standard_normalcopyr2   r9   rA   r!   rJ   r`   rK   s       r#   test_rank_does_not_mutatez"TestRank.test_rank_does_not_mutate}   su     I!!!$$44W==Y
 
 
 7799
			
fh/////r%   c                    t          j                    |d<   t          dd          |d<   |                    d           t	          j        t          d          5  |                    d	           d d d            d S # 1 swxY w Y   d S )
Nr   r   )dayssecondsr   FrY   z"not supported between instances ofmatchaxis)r   nowr   r2   r-   raises	TypeError)r!   float_string_frames     r#   test_rank_mixed_framezTestRank.test_rank_mixed_frame   s    )1:&*3A*F*F*F;'U333]9,PQQQ 	, 	,###+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   B  BBc                 0
   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<   |                    d
          }|                    dd
          }|                    t          j                  j        }t          j	        |j
        d|          }t          j	        |j
        d|          }t          j        |j        |           t          j        |j        |           |                    d          }|                    dd          }|                    |                                dz
                                            j        }|j        }	|	                    |	                                dz
                                            j        }	|	                    t          j                  j        }	t          j	        |j
        d|          }t          j	        |j
        d|	          }t          j        |j        |           t          j        |j        |           |                    dd          }|                    ddd          }|                    t          j                  j        }t          j	        |j
        d|           }t          j	        |j
        d|           }t          j        |j        |           t          j        |j        |           |                    d
d          }|                    dd
d          }|                    |                                dz
                                            j        }|j        }	|	                    |	                                dz
                                            j        }	|	                    t          j                  j        }	t          j	        |j
        d|           }t          j	        |j
        d|	           }t          j        |j        |           t          j        |j        |           d}
t          j        t$          |
          5  |                    dd           d d d            n# 1 swxY w Y   t          j        t$          |
          5  |                    dd           d d d            d S # 1 swxY w Y   d S )Nr'   r   r   r   r   r   r(   r   r)   bottom)	na_optionr   r   topF)ry   r\   z3na_option must be one of 'keep', 'top', or 'bottom'rn   badT)r-   r.   r/   r0   r1   r2   r5   r6   r4   r7   r8   r9   r:   r   to_dictTassert_numpy_array_equalrs   
ValueError)r!   rB   rC   rD   rE   rG   rH   rI   fval0fval1msgs              r#   test_rank_na_optionzTestRank.test_rank_na_option   s   &}55$&F!S!$&F!S!$&F!S!$&F!S! !!H!55!!!x!88""26**1"8#4a??"8#4a??
v}d333
v}d333 !!E!22!!!u!55""KOO$5$5$9#B#B#D#DEELeiikkAo668899;RV$$+"8#4a??"8#4a??
v}d333
v}d333
 !!EU!CC!!!u!FF""26**1"8#4a%@@"8#4a%@@
v}d333
v}d333
 !!H!FF!!!x5!II""KOO$5$5$9#B#B#D#DEELeiikkAo668899;RV$$+"8#4a%@@"8#4a%@@
#FM4888
#FM4888 D]:S111 	? 	?u>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? ]:S111 	> 	>tu===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s$   S  SS&TTTc                 $   t          ddgddgg          }t          j        |                    d          |                    d                     t          j        |                    d          |                    d                     d S )	Nr   r   r   r   r   rp   indexcolumns)r   r9   rA   r2   )r!   rJ   s     r#   test_rank_axiszTestRank.test_rank_axis   s|    AA'((
bgg1goorwwGw/D/DEEE
bgg1goorwwIw/F/FGGGGGr%   axr   mc                 R   t          j        d          }t          j                            d                              ddd          }|dz
  dz  }d t          |j        d                   D             }||d	z   |d
z  fD ]}t          ||          }|	                    ||          }t          j
        |j        |||dk    r|nd          }	|	                    t          j                  }	t          |	|                              d          }
t          j        ||
           d S )Nr'   r   r      )d      g      $@c                 L    g | ]!}t          t          d           |z
            "S )z)chrord).0is     r#   
<listcomp>z4TestRank.test_rank_methods_frame.<locals>.<listcomp>   s*    >>>aCHHqL!!>>>r%   r   g    .Agư>)r   )rq   r$   r   ordinalrd   )r-   r.   r/   r;   r<   r=   rangeshaper   r2   r7   r8   r?   rd   r9   rA   )r!   r   r   rC   xscolsvalsrJ   rK   sprankr`   s              r#   test_rank_methods_framez TestRank.test_rank_methods_frame   s.    &}55Y""1%%..q"i@@4i4>>5!+=+=>>>c29- 		4 		4D4...BWW"QW//F(!2t!w,,QQI F ]]2:..F 666==iHHH!&(3333		4 		4r%   rf   )Of8i8c                 Z   d|v r-| j                                                             |          }n| j                             |          }|                    d          }|                                |z
                                  }t          j        ||           |                                |z
                      |          }|dk    r-|                    |dd          }t          j        ||           |                    |dd          }t          j        ||           d S )Nr   F)r\   r$   r   T)r$   r\   rZ   )rJ   dropnar?   r2   r   r9   rA   )r!   r$   rf   rJ   resr`   res2res3s           r#   test_rank_descendingzTestRank.test_rank_descending   s   %<<!!((//BB&&Bggg&&FFHHrM''))
c8,,,FFHHrM''v'66C<<77&E7MMD!$111wwfEwJJ
dH-----r%   rq   Nc                     | j         }dd}||n|                    |          } ||| j        |         ||           d S )Nr   r   c                     t          ||d          }|dk    r| j        } |j        }|                     ||          }t          j        ||           d S )Nr   r   r$   rq   )r   r}   r2   r9   rA   )rJ   r`   r$   rq   exp_dfrK   s         r#   _check2dz3TestRank.test_rank_2d_tie_methods.<locals>._check2d  s\    XH==>>FqyyTWWFW66F!&&11111r%   r   )r   r   )rJ   r?   results)r!   r$   rq   rf   rJ   r   frames          r#   test_rank_2d_tie_methodsz!TestRank.test_rank_2d_tie_methods
  s`     W	2 	2 	2 	2 m5)9)9V,V$GGGGGGr%   z
method,expr   )rP   rP   rP   )rP         ?UUUUUU?)rP   r   UUUUUU?r   )r   rP   rP   )r   r   r   )r   r   r   r   )rP   r   r   )rP   r   r   r   )r   rP   rP   )r   r   r   )r   r   r   r   )r   r   r   c                     t          g dg dg dg          }|                    |d          }t          |          }t          j        ||           d S )N)  B   r   )r   A   r   )r   r   r   T)r$   rT   )r   r2   r9   rA   )r!   r$   rL   rJ   rK   r`   s         r#   test_rank_pct_truezTestRank.test_rank_pct_true  s^    B }}}mmmDEED11S>>
fh/////r%   c                     t          t          j        d          t          j        ddd          d          }|                    d                                          }|dk                                    sJ d S )Ni  r   r   TrS   r   )r   r/   aranger2   r   all)r!   rJ   rK   s      r#   test_pct_max_many_rowszTestRank.test_pct_max_many_rowsC  sy     )I&&RYy!R-H-HII
 
 T""&&((!  """""""r%   zcontents,dtypeir   g#Bǻg}gJzgWw'&l7r^   g|=r*   rd   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                            d                              t	          t          |                    d          }t          j	        |||          }t          j	        ||t           j                  }t           j                            d          
                    t          |                    }	 |||	                   }
 |||	         d          }|
                                }t          j        ||           d S )Nnat)rd   r   r   r   re   rd   rP   r   r   )r/   r0   r   arrayr   lenr;   r<   choiceinsertpermutationr2   r9   assert_equal)r!   contentsrf   frame_or_seriesdtype_na_mapr4   	exp_orderna_valuenan_indicesrandom_orderobjr`   rK   s                r#   test_rank_inf_and_nanzTestRank.test_rank_inf_and_nanL  sU   | vv-..	
 
 (%000HU3v;;//yAAACG	L  #E*H)//2299%F:L:LaPPKYv{H==F	)["&AAI y,,Q//;;CKKHHof\233"?9\#:)LL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	          }|                                }|                                }|d
                                         |d
<   |d                                         |d<   t          j        ||           d S )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   )ra   r   rf   r   r   )r/   r0   r6   r   r2   rh   r9   rA   )r!   r   r   r   rJ   	df_resultseries_results          r#   "test_df_series_inf_nan_consistencyz+TestRank.test_df_series_inf_nan_consistency  s    ///---1bfaArvrvq26'B  
 
 
 GGII			 "6
 1 1f "6
 1 1f
i77777r%   c                     t          dt          j         dt          j        gi          }t          dg di          }|                                }t	          j        ||           d S )NrW   r   rP   rR   rQ   )r   r/   r6   r2   r9   rA   ri   s       r#   test_rank_both_infzTestRank.test_rank_both_inf  s]    rvgq"&1233c???344
fh/////r%   zna_option,ascending,expectedrz   T)rQ   rP   rR   Fr]   rx   rX   rO   c                      |t           j        t           j        t           j         g          }|                    |||          } ||          }t	          j        ||           d S )Nr$   ry   r\   )r/   r6   r0   r2   r9   r   )r!   r   r$   ry   r\   r`   r   rK   s           r#   test_rank_inf_nans_na_optionz%TestRank.test_rank_inf_nans_na_option  s`     orvrvw7889	RR"?8,,
)))))r%   )rP   rR         @rQ   )rR   rQ   rP   r   c                      |g d          }|                     d||          } ||          }t          j        ||           d S )Nfoor   Nr   r   r   )r2   r9   r   )r!   r   ry   r\   r`   r   rK   s          r#   test_rank_object_firstzTestRank.test_rank_object_first  sX     o999::ISS"?8,,
)))))r%   zdata,expected)r   r   rW   )r   r   r   )rW   rU   rU   r   rW   )r   r   c                    t          |          }t          j        t          d          5  |                                 d d d            n# 1 swxY w Y   |                    d          }t          j        ||           d S )Nz&'<' not supported between instances ofrn   TrY   )r   r-   rs   rt   r2   r9   rA   )r!   ra   r`   rJ   rK   s        r#   test_rank_mixed_axis_zeroz"TestRank.test_rank_mixed_axis_zero  s     t__]9,TUUU 	 	GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	d++
fh/////s   AAAzdtype, exp_dtype)zstring[pyarrow]Int64)zstring[pyarrow_numpy]rd   c                     t          j        d           t          g d|          }|                    d          }t          g d|          }t	          j        ||           d S )Npyarrowr   re   r   r   )r   r   Nr   )r-   r.   r   r2   r9   assert_series_equal)r!   rf   	exp_dtyper   rK   r`   s         r#   test_rank_string_dtypezTestRank.test_rank_string_dtype  sp     	I&&&000>>>))///;;;
vx00000r%   ).__name__
__module____qualname__r   r/   r0   sr   rJ   r   r   r-   fixturer$   rM   rb   rj   rv   r   r   markparametrizer   r   r   r   r   
single_cpur   r6   iinfor   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r%   r#   r
   r
      s(       1aBFAq!RVQ788A	##	$	$B 28S#sCc3PSTUUrxAq!RVQ1bfa@AArxAq!RVQ1bfa@AA1aArvq!QBCC1aArvq!QBCC G V^FFFGGG  HG"+ "+ "+H/. /. /.b	0 	0 	0, , ,J> J> J>XH H H [TAq6**[S"M"M"MNN4 4 ON +*4$ [W&7&7&788. . 98.& [VaV,,[WtVn55H H 65 -,H  [(;(;(;=P=P=PQR'''//////  "9"9"9;R;R;RS
 $$$&=&=&=?V?V?VW
 '''//////%	
 <0 0= <0 [# # # [ VGF !( VGF !$ bhrx  $aC"(1C1C1GH'R BHRX&&*BHRX&&*	  kmmS#tT3

CXN$1%%xxa';';XXdAq=Q=QRi8	
; ;x* *y; ;x*48 8 8*0 0 0 [&D///*E???+t___-uooo.		
 * * * [&t1112u2223D.../E///0		
 * * * [;;YYY//C;Q1R1RS;;;q2!F!F!FG	
 0 0 0 [	%'KL 1 1	 1 1 1r%   r
   )r   r   numpyr/   r-   pandas._libs.algosr   r   pandasr   r   pandas._testing_testingr9   r
   r   r%   r#   <module>r      s          
            
             a1 a1 a1 a1 a1 a1 a1 a1 a1 a1r%   