o
    1فiM                     @   s  d dl mZ d dlZd dlZd dlZd dlmZmZ d dl	m
  mZ d dlmZmZmZmZmZ d dlmZ d dlmZ ejdd Zejded	d
ddejdd	dejd
g
gdeddddejdddejdg
gdeddddejdddejdg
gdeddddejdddejdg
gdeddddejdddejdg
ggdd ddd Zejdd d!d"d#ejd$ed%d&ejd'ed%d&ejd(ed%d&d)d*g
d+d,d- ZdYd/d0Z G d1d2 d2Z!ej"#d3dgd4gfddgd5d4gfddgd4d4gfg d6g d7fg d8g d9fg d:g d;fg d<g d=fg d>g d?fg d@g dAfg	dBdC Z$ej"#d3dgd4gfddgd5d4gfddgd5d5gfg d6g d7fg d8g dDfg d:g d;fg d<g dEfg d>g dFfg d@g dAfg	dGdH Z%ej"#d3dgd4gfddgd5d4gfddgd4d4gfg d6g d7fg d8g dIfg d:g d;fg d<g dJfg d>g d?fg d@g dAfg	dKdL Z&ej"#d3dgd4gfddgd5d4gfddgdMdMgfg d6g d7fg d8g dNfg d:g d;fg d<g dOfg d>g dPfg d@g dAfg	dQdR Z'ej"#d3dgd4gfddgd5d4gfddgd5d4gfg d6g d7fg d8g d7fg d:g d;fg d<g dSfg d>g dTfg d@g dAfg	dUdV Z(ej"j)dWdX Z*dS )Z    )chainN)InfinityNegInfinity)NANaTSeries	Timestamp
date_range)CategoricalDtypec                   C   s    t ddddtjdddtjdg
S )N               )r   npnan r   r   f/home/test-dt/pcm-url-check/venv/lib/python3.10/site-packages/pandas/tests/series/methods/test_rank.pyser   s    r   averageg      ?g      @      @g      @g       @minr   r      r      maxr      r   firstdensec                 C   s   | d S )Nr   r   )xr   r   r   <lambda>%   s    r   )paramsidsc                 C      | j S Nparamrequestr   r   r   results   s   r(   objectfloat64int64Float64Int64float64[pyarrow]pyarrowmarksint64[pyarrow]string[pyarrow]zstring[python]str)r    c                 C   r"   r#   r$   r&   r   r   r   dtype+   s   r5   Fc                 C   s8   d}| dv r
d}|S | dv r|dks|rd}|S d}|S )Nr*   )r3   r,   )r.   r2   r   zdouble[pyarrow]uint64[pyarrow]r   )r5   methodpct	exp_dtyper   r   r   expected_dtype=   s   r:   c                   @   s  e Z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ej	dg dej	ddde
 e fdejejej fdeejej fejdeejej eddgdd Zdd Zej	dg dej	dejdgejdgejdggd d! Zej	d"d#gd#gfd$gd#gfdgd#gfd$d$gd#d#gfg d%g d%fg d&g d'fg d(g d)fg d*g d+fgd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 ZdS )8TestSeriesRankc                 C   s2  t d}tj|d d d< d|d dd< | }|d }t|| t|}|	tj
}t|||jdd}tj||< t|| ttd	d}| }	|t }t|	| ttd	d
 }|d }|jdd}	t|	| ttdd}ttdd}|jdd}	t|	| |d}tj|d< ttdd}tj|d< |jdd}	t|	| ttd	d
 }tj|d< |d }|jdd}	t|	| tttjd}| }|jdd}	t|	| ttd	ddd }tj|d< |d }|jdd}	t|	| tdd	d}
ttd	|
ddd }tj|jd< |d }|jdd}	t|	| tg d}tg d}| }	t|	| tdddtgdd}tdddtjg}| }	t|	| tjg ddd}tjdt|}t|| }t|d
 dd}| }	t|	| d S )Nscipy.statsr         @
   r   Ots)indexnamer         ?      @Tr8   r   d   g)\(?floatg@_)?r   r5   z1/1/1990)periods)gJz5g0.++#B;g{Gz?gIf;g?)r   r   r   r   r         @z3 dayz	1 day 10mz-2 dayzm8[ns])ig#Bǻg}gJzr   gWw'&l7rJ   g|=r   (   r*   )pytestimportorskipr   r   rankastypetmassert_series_equalisnanfillnainfr   rankdatarA   arangerepeatrG   copyr	   ilocr   arrayrandomdefault_rngpermutationlen)selfdatetime_seriessp_statsranksoranksmaskfilledexpiseriesiranksrngvaluesrandom_orderr   r   r   	test_rankL   s   







zTestSeriesRank.test_rankc                 C   s  t g d}t g d}t g dtg ddd}t| | t|jdd| t g dtg ddd}t g d}| }t|| t g d	tg d	d}t g d}| }	t|	| t d
dddddtjgtg dd}
t g d}t g d}t ddddddtjg}t|
jdd| t|
jdd| t|
jdd| t g d}t g d}t ddddddtjg}t|
jddd| t|
jddd| t|
jddd| d }tj	t
|d! |
jd"dd W d    n	1 s	w   Y  tj	t
|d! |
jddd W d    n	1 s(w   Y  t d
dddtjgtg d#d}
t g d$}t g d%}t d&d'd(dtjg}t|
jddd)| t|
jddd)| t|
jddd)| d S )*N)rC          @      @r=   rD   rK   )rK   rD   r=   rp   ro   rC   )r   secondthirdfourthfifthsixthT)
categoriesorderedF	ascending)ro   r=   rK   rp   rC   rD   )r   r   r   r   r   r   r   rq   rr   rs   rt   ru   )r   rq   rr   rs   rt   ru   seventh)ro   rp   r=   rD   rK   r   rC   )rC   ro   rp   r=   rD   rK   r   rC   ro   rp   r=   rD   rK   top)	na_optionbottomkeep)r   rK   rD   r=   rp   ro   rC   )rK   rD   r=   rp   ro   rC   r   )r|   ry   z3na_option must be one of 'keep', 'top', or 'bottom'matchbad)r   rq   rr   rs   )皙?333333?皙?rC   皙?r   r   r   r   rC         ?      ?      ?)r|   r8   )r   rQ   r
   rR   rS   rP   r   r   rN   raises
ValueError)ra   rh   exp_descrw   	unorderedexp_unorderedres
unordered1exp_unordered1res1na_serexp_topexp_botexp_keepmsgr   r   r   test_rank_categorical   s   	z$TestSeriesRank.test_rank_categoricalc                 C   sZ   t ddg}|jdd d}tjt|d |d W d    d S 1 s&w   Y  d S )Nr   r   r   r7   z,No axis named average for object type Seriesr   )r   rP   rN   r   r   )ra   sr   r   r   r   test_rank_signature   s   "z"TestSeriesRank.test_rank_signaturec                 C   sn   |\}}|dks|dks|s|dkrt d |d u r|n||}|j|d}t|t|t||d d S )Nr+   r-   r4   zint64/str does not support NaNr   rH   )rN   skiprQ   rP   rR   rS   r   r:   )ra   r   r(   r5   using_infer_stringr7   rh   resultr   r   r   test_rank_tie_methods  s   
z$TestSeriesRank.test_rank_tie_methodsry   TFr7   r   r   r   r   r   r|   )r{   r}   r~   z!dtype, na_value, pos_inf, neg_infr)   Nr*   r,   r.   r/   r0   c                 C   sp  t d |dkr|dkrd}nd}nd}d}	|g|	 |g|	  |g|	  }
t|
|d}g dg d	g d
fg dg dg dfg dg dg dfg dg dg dfg dg dg dfd}|| }|dkru|d |d |d g}n|dkr|d |d |d g}n|d tjg|	 |d g}|r|n|d d d }tt|}|j|||d}t	
|t||d d S )Nscipyr.   r   r6   r*   r   rH   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )	   r   r   r   r   r   )r   r   r   )r   r   r   r   r{   r   r   r   r}   rL   )r7   r|   ry   )rN   rO   r   r   r   listr   from_iterablerP   rR   rS   )ra   r7   r|   ry   r5   na_valuepos_infneg_infr9   chunkin_arrri   	exp_ranksrd   orderexpectedr   r   r   r   "test_rank_tie_methods_on_infs_nans  s2   
z1TestSeriesRank.test_rank_tie_methods_on_infs_nansc                 C   sN   t dtjtjtj dg}|jdd}t dtjdddgdd	}t|| d S )
Nr      Frx   r   r   r   r*   rH   )r   r   r   rV   rP   rR   rS   )ra   ri   r   rh   r   r   r   test_rank_desc_mix_nans_infsG  s   z+TestSeriesRank.test_rank_desc_mix_nans_infsz	op, valuer   g    .Agư>c                    s   t d}tjdd t fddtdddD  tjd  dd tt	 D }| |}t
||d}|j|d	}|||d
krL|nd}	t
|	|dd}
t||
 d S )Nr<   r   r   c                    s   g | ]} |d  qS r#   r   .0ixsr   r   
<listcomp>\  s    z;TestSeriesRank.test_rank_methods_series.<locals>.<listcomp>r   c                 S   s   g | ]
}t td | qS )a)chrordr   r   r   r   r   _  s    )rA   r   r   ordinalr*   )rN   rO   r   r]   r^   standard_normalconcatenaterangeshuffler`   r   rP   rW   rQ   rR   rS   )ra   r7   opvaluerc   rA   valsr@   r   sprankr   r   r   r   test_rank_methods_seriesO  s   

 
z'TestSeriesRank.test_rank_methods_seriesser, expr   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   rL   )r   r   r   r   r   c                 C   sb   |d dk r| dr|d d d }t||}|jdd}t|t|d}t|| d S )Nr   r4   rL   r   r   
startswithr   rQ   rP   r:   rR   rS   )ra   r5   r   rh   r   r   r   r   r   r   test_rank_dense_methodg  s   z%TestSeriesRank.test_rank_dense_methodc                 C   s   |\}}|dks|s|dkr|  }n||}|jdd}|dr2|d |d  }	n| |  }	t||	t|d |dr\|d |d j|d}	n
| | j|d}	|j|dd}
t|
|	t|| d S )	Nr+   r4   Frx   r*   r   r   )r7   ry   )dropnarQ   rP   r   r   rR   rS   r:   )ra   r   r(   r5   r   r7   _r   r   r   res2r   r   r   test_rank_descending|  s    



z#TestSeriesRank.test_rank_descendingc                 C   sF   |\}}|  d}|j|d}t|  }|j|_t|| d S )Ni8r   )r   rQ   rP   r   rA   rR   rS   )ra   r   r(   r7   rh   r   r   r   r   r   r   test_rank_int  s   zTestSeriesRank.test_rank_intc                 C   s@   t tjgd tjdd t tjgd tjdd d S )N    Trx   F)r   r   r   rQ   r)   rP   )ra   r   r   r   test_rank_object_bug  s   "z#TestSeriesRank.test_rank_object_bugc                 C   s4   t tdtg}| }|  |}t|| d S )Nz2017-01-05 10:20:27.569000)r   r   r   rZ   rP   rR   rS   )ra   r   r   r   r   r   r   test_rank_modify_inplace  s
   z'TestSeriesRank.test_rank_modify_inplacec                 C   sF   t dddtdgdd}|jdd}t d	d
dtjdg}t|| d S )Ng*"Fg3!ǻg{Q :g1A;-:r,   rH   r   r   r   r   r   r   )r   r   rP   r   r   rR   rS   )ra   r   r   r   r   r   r   test_rank_ea_small_values  s   z(TestSeriesRank.test_rank_ea_small_values)__name__
__module____qualname__rn   r   r   r   rN   markparametrizer   r   r   r   rV   r   r%   td
skip_if_nor   r   operatoraddmulr   r   r   r   r   r   r   r   r   r   r   r;   K   sf    [X"



	
r;   r   rC   r   r   )UUUUUU?UUUUUU?rC   )r   r   r   )r   rC   rC   r   )rC   r   r   r   )r   r   rC   rC   r   )r   r   r   r   r   r   )r   r   r   r   rC   rC   r   r   c                 C   h   |d dk r|  dr|d d d }t|| }|jddd}t|t| ddd}t|| d S )Nr   r4   rL   r   Tr7   r8   rE   r   r5   r   rh   r   r   r   r   r   r   test_rank_dense_pct     r   )r   r   r   )r   r   r   r   r   )UUUUUU?r   r   r   竪?r   c                 C   r   )Nr   r4   rL   r   Tr   rE   r   r   r   r   r   test_rank_min_pct  r   r   )r   rC   rC   )r   r   rC   rC   r   c                 C   r   )Nr   r4   rL   r   Tr   rE   r   r   r   r   r   test_rank_max_pct  r   r   r   )r   r   r   )333333?r   ?r   r   )r   r   竪?r   UUUUUU?r   c                 C   r   )Nr   r4   rL   r   Tr   rE   r   r   r   r   r   test_rank_average_pct   r   r   )r   r   r   rC   r   )r   r   r   r   r   rC   c                 C   r   )Nr   r4   rL   r   Tr   rE   r   r   r   r   r   test_rank_first_pct  r   r   c                  C   s.   t td} | jdd }|dksJ d S )Ni  TrE   r   )r   r   rX   rP   r   )r   r   r   r   r   test_pct_max_many_rows.  s   r   )F)+	itertoolsr   r   numpyr   rN   pandas._libs.algosr   r   pandas.util._test_decoratorsutil_test_decoratorsr   pandasr   r   r   r   r	   pandas._testing_testingrR   pandas.api.typesr
   fixturer   r\   r   r(   r%   r   r5   r:   r;   r   r   r   r   r   r   r   
single_cpur   r   r   r   r   <module>   s    
$$$$$



  r

	

	

	

	

	