o
    TiA                     @   s^   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 dZdS )    )datetime	timedeltaN)InfinityNegInfinity)	DataFrameSeriesc                   @   s  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	ddd	d
ejd
ddejdg
e	ddddejdddejdg
e	ddddejdddejdg
e	ddddejdddejdg
e	ddddejdddejdg
dZ
ejg dddd Zdd Zdd Zdd Zdd Zdd Zdd Zejdd dgejd!g dd"d# Zejd$g d%d&d' Zejd(d dgejd$d)egd*d+ Zejd,d-g d.g d/g d0gfd1g d2g d3g d4gfd5g d.g d6g d7gfd8g d9g d:g d;gfd<g d2g d=g d7gfgd>d? Zejjd@dA ZejdBej dCdDdEdFdGd dHdIdJddKejgdLfej dCdDdEdFdMd dHdIdJddKejgdNfeejj dddOeejj!gdPfeej"j dQd ddRdSdTeej"j!gdUfe# dVdWdXdYdZe$ gd[fe%d\dde%d\dde%d\ddgd]fgd^d_ Z&d`da Z'dbdc Z(ejdddedfg dgfdedhg difdjdfg dkfdjdhg dlfgdmdn Z)ejdddjdfg dofdjdhg dofdedfg dpfdedhg dpfgdqdr Z*ejdsg dtg dudvedwg dxifdyg dtiee+dg dzfgd{d| Z,d)S )}TestRank               AB      ?g      @      @      @g       @         )averageminmaxfirstdense)paramsc                 C   s   |j S )z5
        Fixture for trying all rank methods
        )param)selfrequest r    d/var/www/html/evchargy.com/venv/lib/python3.10/site-packages/pandas/tests/frame/methods/test_rank.pymethod!   s   zTestRank.methodc                 C   sL  t 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}|tj	j}t
|jd|}tj||< t
|jd
|}tj||< t|j| t|j| ttjdjddddd}	|	 }
|	t }t|
| |	d
}
|	td
}t|
| 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integersZreshapeastypefloatassert_frame_equal)r   float_framesp_statsranks0ranks1maskfvalsexp0exp1dfresultexpr    r    r!   	test_rank(   s0   




zTestRank.test_rankc                 C   sP  t g dg dg}t g dg dgd }|jddd}t|| t g dg dg}|dd	 }|jddd}t|| t g d
g dg}t g dg dg}|jddd}t|| t g dg dg}|jddd}t|| t dtjdgg dg}t d	tjdgg dg}|jddd}t|| t d	tjdgg dg}|jddd}t|| 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d}t|| t dtjd	gg dg}|jdddd}t|| t dg di}t dg di}t| | d S )N)r	   r
   r   )r	   r   r
         ?      @       @rK   r	   Tpctr   rL   )bca)rQ   rP   rO   rL   rK   rJ   Fnumeric_only)rL   r   rJ   )r	   r   r   rO   rQ   rJ   )rJ   rJ   rL     r   r   i  r
   )rT   	ascendingrL   rJ   rK   )#B;rX   r(   gDcLg_QPgKH9)r   rJ   r   g      @g      @r   rL   )r   r.   r5   r<   r+   r,   r   )r   rE   expectedrF   datarG   r    r    r!   
test_rank2L   sF    zTestRank.test_rank2c                 C   s>   t tjdddd}| }|  |}t|| d S )Nr   )r(   r
   float64dtype)	r   r+   r7   r8   Zstandard_normalcopyr.   r5   r<   r   rE   rZ   rF   r    r    r!   test_rank_does_not_mutate}   s   z"TestRank.test_rank_does_not_mutatec                 C   sh   t  |d< tddd|d< |jdd tjtdd |jdd	 W d    d S 1 s-w   Y  d S )
Nr   r	   )dayssecondsr   FrS   z"not supported between instances ofmatchaxis)r   nowr   r.   r)   raises	TypeError)r   Zfloat_string_framer    r    r!   test_rank_mixed_frame   s   "zTestRank.test_rank_mixed_framec                 C   s  t 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
d}|jdd
d}|tjj}t	|j
d|}t	|j
d|}t|j| t|j| |jdd}|jddd}|| d  j}|j}	|	|	 d  j}	|	tjj}	t	|j
d|}t	|j
d|	}t|j| t|j| |jddd}|jdddd}|tjj}t	|j
d| }t	|j
d| }t|j| t|j| |jd
dd}|jdd
dd}|| d  j}|j}	|	|	 d  j}	|	tjj}	t	|j
d| }t	|j
d|	 }t|j| t|j| d}
t jt|
d |jddd W d    n	1 sSw   Y  t jt|
d |jddd W d    d S 1 ssw   Y  d S )Nr#   r   r   r
   r   r   r$   r   r%   bottom)	na_optionr	   r   topF)rn   rV   z3na_option must be one of 'keep', 'top', or 'bottom're   badT)r)   r*   r+   r,   r-   r.   r1   r2   r0   r3   r4   r5   r6   r   to_dictTZassert_numpy_array_equalrj   
ValueError)r   r=   r>   r?   r@   rB   rC   rD   Zfval0Zfval1msgr    r    r!   test_rank_na_option   s\   
$zTestRank.test_rank_na_optionc                 C   sP   t ddgddgg}t|jdd|jdd t|jdd|jdd d S )	Nr   r	   r   r
   r   rg   indexcolumns)r   r5   r<   r.   )r   rE   r    r    r!   test_rank_axis   s    zTestRank.test_rank_axisaxr   mc                 C   s   t d}tjdddd}|d d }dd t|jd	 D }||d
 |d fD ]3}t||d}|j	||d}t
|j|||dkrF|nd}	|	tj}	t|	|dd}
t||
 q+d S )Nr#   r   r      )d      g      $@c                 S   s   g | ]
}t td | qS )z)chrord).0ir    r    r!   
<listcomp>   s    z4TestRank.test_rank_methods_frame.<locals>.<listcomp>r	   g    .Agư>)rw   )rh   r"   r   Zordinalr]   )r)   r*   r+   r7   r8   r9   rangeshaper   r.   r3   r4   r:   r]   r5   r<   )r   ry   rz   r>   ZxscolsvalsrE   rF   ZsprankrZ   r    r    r!   test_rank_methods_frame   s   
z TestRank.test_rank_methods_framer_   )Of8i8c                 C   s   d|v r| j  |}n| j |}|jdd}| |  }t|| | | j|d}|dkrC|j|ddd}t|| |j|ddd}t|| d S )Nr   F)rV   )r"   r   T)r"   rV   rT   )rE   Zdropnar:   r.   r   r5   r<   )r   r"   r_   rE   resrZ   Zres2Zres3r    r    r!   test_rank_descending   s   zTestRank.test_rank_descendingrh   Nc                 C   s@   | j }ddd}|d u r|n||}||| j| ||d d S )Nr   r   c                 S   s@   t ||d}|dkr| j} |j}| j||d}t|| d S )Nr   r	   r"   rh   )r   rr   r.   r5   r<   )rE   rZ   r"   rh   Zexp_dfrF   r    r    r!   _check2d  s   z3TestRank.test_rank_2d_tie_methods.<locals>._check2dr   )r   r   )rE   r:   results)r   r"   rh   r_   rE   r   framer    r    r!   test_rank_2d_tie_methods
  s   

z!TestRank.test_rank_2d_tie_methodsz
method,expr   )rJ   rJ   rJ   )rJ         ?UUUUUU?)rJ   r   UUUUUU?r   )r   rJ   rJ   )r   r   r   )r   r   r   r   )rJ   r   r   )rJ   r   r   r   )r   rJ   rJ   )r   r   r   )r   r   r   r   )r   r   r   c                 C   s@   t g dg dg dg}|j|dd}t |}t|| d S )N)  B   r
   )r   A   r   )r   r   r	   T)r"   rN   )r   r.   r5   r<   )r   r"   rG   rE   rF   rZ   r    r    r!   test_rank_pct_true  s   !zTestRank.test_rank_pct_truec                 C   sB   t tdtdddd}|jdd }|dk sJ d S )Ni  r   r   TrM   r	   )r   r+   Zaranger.   r   all)r   rE   rF   r    r    r!   test_pct_max_many_rowsC  s
   zTestRank.test_pct_max_many_rowszcontents,dtypeir   g#Bǻg}gJzgWw'&l7rX   g|=r&   r]   gj7֖float32r|   uint8ii'  i g    _Bint641r   ZBAZBar$   objectrU   
datetime64c                 C   s   t jt jd t dd}t j||d}t jtt|ddd }||v rE|| }t jdtt|d}t 	|||}t 	||t j}t jd
t|}	|||	 }
|||	 dd}|
 }t|| d S )NZnat)r]   r   r   r   r^   r]   rJ   r   r   )r+   r,   r   arrayr   lenr7   r8   choiceinsertZpermutationr.   r5   assert_equal)r   contentsr_   frame_or_seriesZdtype_na_mapr0   Z	exp_orderZna_valueZnan_indicesZrandom_orderobjrZ   rF   r    r    r!   test_rank_inf_and_nanL  s"   >
zTestRank.test_rank_inf_and_nanc              
   C   s   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  |d< t|| 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   )r[   rv   r_   r   r   )r+   r,   r2   r   r.   r`   r5   r<   )r   rv   r   r   rE   Z	df_resultZseries_resultr    r    r!   "test_df_series_inf_nan_consistency  s   "z+TestRank.test_df_series_inf_nan_consistencyc                 C   s@   t dtj dtjgi}t dg di}| }t|| d S )NrQ   r   rJ   rL   rK   )r   r+   r2   r.   r5   r<   ra   r    r    r!   test_rank_both_inf  s   zTestRank.test_rank_both_infzna_option,ascending,expectedro   T)rK   rJ   rL   FrW   rm   rR   rI   c                 C   s>   |t jt jt j g}|j|||d}||}t|| d S )Nr"   rn   rV   )r+   r2   r,   r.   r5   r   )r   r   r"   rn   rV   rZ   r   rF   r    r    r!   test_rank_inf_nans_na_option  s   z%TestRank.test_rank_inf_nans_na_option)rJ   rL         @rK   )rL   rK   rJ   r   c                 C   s4   |g d}|j d||d}||}t|| d S )N)foor   Nr   r   r   )r.   r5   r   )r   r   rn   rV   rZ   r   rF   r    r    r!   test_rank_object_first  s   
zTestRank.test_rank_object_firstzdata,expected)r	   r   rQ   )r   r   r   )rQ   rO   rO   r   rQ   )rv   rw   c                 C   sZ   t |}tjtdd |  W d    n1 sw   Y  |jdd}t|| d S )Nz&'<' not supported between instances ofre   TrS   )r   r)   rj   rk   r.   r5   r<   )r   r[   rZ   rE   rF   r    r    r!   test_rank_mixed_axis_zero  s   
z"TestRank.test_rank_mixed_axis_zero)-__name__
__module____qualname__r   r+   r,   sr   rE   r   r   r)   Zfixturer"   rH   r\   rb   rl   ru   rx   markZparametrizer   r   r   r   r   Z
single_cpur   r2   Ziinfor   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r    r    r!   r      s         
$1L
	
	
$
 
<
	
	 r   )r   r   numpyr+   r)   Zpandas._libs.algosr   r   Zpandasr   r   Zpandas._testingZ_testingr5   r   r    r    r    r!   <module>   s    