
    bMhD                     p    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dS )    )datetime	timedeltaN)InfinityNegInfinity)	DataFrameIndexSeriesc                   h   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 e+dfgeh          i          fdjg dci e e,d          g k          fg          dl             Z-dm Z.d S )nTestRank               AB      ?g      @      @      @g       @         )averageminmaxfirstdense)paramsc                     |j         S )z5
        Fixture for trying all rank methods
        )param)selfrequests     d/var/www/html/test/jupyter/venv/lib/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         ?      @       @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   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   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~   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   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   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)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   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   rq   indexcolumns)r   r:   rB   r3   )r"   rK   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   )rr   r%   r   ordinalre   )r.   r/   r0   r<   r=   r>   rangeshaper   r3   r8   r9   r@   re   r:   rB   )r"   r   r   rD   xscolsvalsrK   rL   sprankra   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&   rg   )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]   r[   )rK   dropnar@   r3   r   r:   rB   )r"   r%   rg   rK   resra   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&   rr   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%   rr   )r   r~   r3   r:   rB   )rK   ra   r%   rr   exp_dfrL   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   )rK   r@   results)r"   r%   rr   rg   rK   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   )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          }|                    |d          }t          |          }t          j        ||           d S )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  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   TrT   r   )r   r0   aranger3   r   all)r"   rK   rL   s      r$   test_pct_max_many_rowszTestRank.test_pct_max_many_rowsD  sy     )I&&RYy!R-H-HI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                            d                              t	          t          |                    d          }t          j	        |||          }t          j	        ||t           j                  }t           j                            d          
                    t          |                    }	 |||	                   }
 |||	         d          }|
                                }t          j        ||           d S )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  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   )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    ///---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 )NrX   r   rQ   rS   rR   )r   r0   r7   r3   r:   rB   rj   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,expectedr{   T)rR   rQ   rS   Fr^   ry   rY   rP   c                      |t           j        t           j        t           j         g          }|                    |||          } ||          }t	          j        ||           d S )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  s`     orvrvw7889	RR"?8,,
)))))r&   )rQ   rS         @rR   )rS   rR   rQ   r   c                      |g d          }|                     d||          } ||          }t          j        ||           d S )Nfoor   Nr   r   r   )r3   r:   r   )r"   r   rz   r]   ra   r   rL   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   rX   )r   r   r   )rX   rV   rV   r   rf   r   rX   )r   r   c           	      r   t          |t          t          |                                          t                              }t          j        t          d          5  |                                 d d d            n# 1 swxY w Y   |                    d          }t          j
        ||           d S )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  s     tU4		+<+<F%K%K%KLLL]9,TUUU 	 	GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	d++
fh/////s    BBBc                     t          g d|          }|                    d          }|dk    rdnd}|j        dk    rd}t          g d	|          }t          j        ||           d S )
Nr   rf   r   r   zstring[pyarrow]Float64re   python)r   r   Nr   )r	   r3   storager:   assert_series_equal)r"   string_dtype_no_objectr   rL   	exp_dtypera   s         r$   test_rank_string_dtypezTestRank.test_rank_string_dtype  s    0008NOOO))/3DDDII) 	 ")X55!I///;;;
vx0000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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		
 * * * [ "kk			22	30%%V:T:T:TUUU ;;;q2!F!F!FG	
	 	0 0	 	01 1 1 1 1r&   r   )r   r   numpyr0   r.   pandas._libs.algosr   r   pandasr   r   r	   pandas._testing_testingr:   r   r   r&   r$   <module>r     s          
            
         
      e1 e1 e1 e1 e1 e1 e1 e1 e1 e1r&   