o
    �¨Êh¸F  ã                   @   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„ ƒZejdddd d!ejd"e d#¡d$�ejd%e d#¡d$�gd�d&d'„ ƒZG d(d)„ d)ƒZ ej! "d*dgd+gfddgd,d+gfddgd+d+gfg d-¢g d.¢fg d/¢g d0¢fg d1¢g d2¢fg d3¢g d4¢fg d5¢g d6¢fg d7¢g d8¢fg	¡d9d:„ ƒZ#ej! "d*dgd+gfddgd,d+gfddgd,d,gfg d-¢g d.¢fg d/¢g d;¢fg d1¢g d2¢fg d3¢g d<¢fg d5¢g d=¢fg d7¢g d8¢fg	¡d>d?„ ƒZ$ej! "d*dgd+gfddgd,d+gfddgd+d+gfg d-¢g d.¢fg d/¢g d@¢fg d1¢g d2¢fg d3¢g dA¢fg d5¢g d6¢fg d7¢g d8¢fg	¡dBdC„ ƒZ%ej! "d*dgd+gfddgd,d+gfddgdDdDgfg d-¢g d.¢fg d/¢g dE¢fg d1¢g d2¢fg d3¢g dF¢fg d5¢g dG¢fg d7¢g d8¢fg	¡dHdI„ ƒZ&ej! "d*dgd+gfddgd,d+gfddgd,d+gfg d-¢g d.¢fg d/¢g d.¢fg d1¢g d2¢fg d3¢g dJ¢fg d5¢g dK¢fg d7¢g d8¢fg	¡dLdM„ ƒZ'ej!j(dNdO„ ƒZ)dS )Pé    )Ú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   úW/var/www/html/env/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Údense)Úparamsc                 C   ó   | j S ©N©Úparam©Úrequestr   r   r   Úresults   s   
r%   ÚobjectÚfloat64Úint64ÚFloat64ÚInt64úfloat64[pyarrow]Úpyarrow©Úmarkszint64[pyarrow]c                 C   r   r    r!   r#   r   r   r   Údtype*   s   r/   c                   @   sÂ  e Zd Zdd„ Zdd„ Zdd„ Zej dde	g¡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/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ ZdS )9Ú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©Úpctr   éd   g)\�Âõ(à?Úfloatg¥@­_)à?r   ©r/   z1/1/1990)Úperiods)g¸ÔJzî�5g0Žä.ÿ++ç#B’¡œÇ;g{®Gáz„?gIfœ¡œÇ;gš™™™™™¹?)r   r   r   r   r   ç      @z3 dayz	1 day 10mz-2 dayzm8[ns])iÎÿÿÿéÿÿÿÿg#B’¡œÇ»gÙ}ÚõÐò¾ºg¸ÔJzî�µr   gœWw'&l¡7r@   g»½×Ùß|Û=r   é(   r'   )ÚpytestÚimportorskipr   r   ÚrankÚastypeÚtmÚassert_series_equalÚisnanÚfillnaÚinfr   Úrankdatar6   ÚarangeÚrepeatr=   Ú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_rank:   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)r8   ç       @ç      @r2   r9   rA   )rA   r9   r2   rf   re   r8   )r   ÚsecondÚthirdÚfourthÚfifthÚsixthT)Ú
categoriesÚorderedF©Ú	ascending)re   r2   rA   rf   r8   r9   )r   r   r   r   r   r   r   rg   rh   ri   rj   rk   )r   rg   rh   ri   rj   rk   Úseventh)re   rf   r2   r9   rA   r   r8   )r8   re   rf   r2   r9   rA   r   r8   re   rf   r2   r9   rA   Útop)Ú	na_optionÚbottomÚkeep)r   rA   r9   r2   rf   re   r8   )rA   r9   r2   rf   re   r8   r   )rr   ro   z3na_option must be one of 'keep', 'top', or 'bottom'©ÚmatchÚbad)r   rg   rh   ri   )çš™™™™™Ù?ç333333ã?çš™™™™™é?r8   çš™™™™™É?©r{   rx   ry   rz   r8   ç      Ð?ç      à?ç      è?)rr   r;   )r   rG   r
   rH   rI   rF   r   r   rD   ÚraisesÚ
ValueError)rW   r^   Úexp_descrm   Ú	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   ©Úmethodz,No axis named average for object type Seriesru   )r   rF   rD   r€   r�   )rW   Úsr�   r   r   r   Útest_rank_signatureí   s   "ÿz"TestSeriesRank.test_rank_signaturer/   Nc                 C   s>   |\}}|d u r
|n|  |¡}|j|d�}t |t|ƒ¡ d S )Nr�   )rG   rF   rH   rI   r   )rW   r   r%   r/   r�   r^   Úresultr   r   r   Útest_rank_tie_methodsô   s   z$TestSeriesRank.test_rank_tie_methodsro   TFr�   ©r   r   r   r   r   rr   )rq   rs   rt   z!dtype, na_value, pos_inf, neg_infr&   r'   r)   r+   r,   r-   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   zuint64[pyarrow]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•   rq   r   r   r   rs   rB   )r�   rr   ro   )rD   rE   r   r   r   Úlistr   Úfrom_iterablerF   rH   rI   )rW   r�   rr   ro   r/   Úna_valueÚpos_infÚneg_infÚ	exp_dtypeÚchunkÚin_arrr_   Ú	exp_ranksrZ   Ú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   é   Frn   r   r   r   r'   r>   )r   r   r   rL   rF   rH   rI   )rW   r_   r“   r^   r   r   r   Útest_rank_desc_mix_nans_infs/  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 )Nr1   r   r—   c                    s   g | ]}ˆ |d … ‘qS r    r   ©Ú.0Úi©Úxsr   r   Ú
<listcomp>D  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¬   G  s    )r6   r�   r   Úordinalr'   )rD   rE   r   rS   rT   Ústandard_normalÚconcatenateÚrangeÚshufflerV   r   rF   rM   rG   rH   rI   )rW   r�   ÚopÚvaluerY   r6   Úvalsr5   r“   Úsprankr£   r   rª   r   Útest_rank_methods_series7  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   ©éûÿÿÿéüÿÿÿéýÿÿÿéþÿÿÿrB   )r   r   r   r   r   c                 C   s:   t |ƒ |¡}|jdd�}t |ƒ |j¡}t ||¡ d S )Nr   r�   ©r   rG   rF   r/   rH   rI   )rW   r/   r   r^   r‘   r“   r£   r   r   r   Útest_rank_dense_methodO  s   z%TestSeriesRank.test_rank_dense_methodc           
      C   s~   |\}}d|v r|  ¡ }n| |¡}|jdd�}| ¡ |  ¡ }t ||¡ | ¡ | j|d�}|j|dd�}	t |	|¡ d S )Nr©   Frn   r�   )r�   ro   )ÚdropnarG   rF   r   rH   rI   )
rW   r   r%   r/   r�   Ú_r‘   r…   r£   Úres2r   r   r   Útest_rank_descendingb  s   

z#TestSeriesRank.test_rank_descendingc                 C   sF   |\}}|  ¡  d¡}|j|d�}t|ƒ  ¡ }|j|_t ||¡ d S )NÚi8r�   )rÄ   rG   rF   r   r6   rH   rI   )rW   r   r%   r�   r^   r‘   r“   r£   r   r   r   Útest_rank_intq  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é    Trn   F)r   r   r   rG   r&   rF   )rW   r   r   r   Útest_rank_object_bugz  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   rP   rF   rH   rI   )rW   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¶*"¨¾Fg¦3Ø!äÇ»g{èQÁí ½:g1AÙ;Æ-:r)   r>   r   r�   r   r   r   r   )r   r   rF   r   r   rH   rI   )rW   r   r“   r£   r   r   r   Útest_rank_ea_small_values‹  s   þz(TestSeriesRank.test_rank_ea_small_values) Ú__name__Ú
__module__Ú__qualname__rd   rŽ   r’   rD   ÚmarkÚparametrizer&   r”   r   r   r   r   rL   r   r"   ÚtdÚ
skip_if_nor¤   r¦   ÚoperatorÚaddÚmulr¹   rÃ   rÇ   rÉ   rË   rÌ   rÍ   r   r   r   r   r0   9   sh    [X
ûüþ"ýþ


øþ
	
r0   rº   r8   r~   r˜   )çUUUUUUÕ?çUUUUUUå?r8   )r   r   r   )r~   r8   r8   r»   )r8   rÙ   rØ   r¼   )rØ   rØ   r8   r8   rÙ   )r   r   r   r   r   r   )rØ   rØ   rÙ   rÙ   r8   r8   r½   r|   c                 C   ó<   t |ƒ | ¡}|jddd�}t |ƒ |j¡}t ||¡ d S )Nr   T©r�   r;   rÂ   ©r/   r   r^   r‘   r“   r£   r   r   r   Útest_rank_dense_pct™  ó   rÝ   )rØ   rÙ   rÙ   )r{   r{   rz   rz   ry   )çUUUUUUÅ?rß   r~   r~   ç«ªªªªªê?rà   c                 C   rÚ   )Nr   TrÛ   rÂ   rÜ   r   r   r   Útest_rank_min_pct®  rÞ   rá   )rØ   r8   r8   )rx   rx   r8   r8   ry   c                 C   rÚ   )Nr   TrÛ   rÂ   rÜ   r   r   r   Útest_rank_max_pctÃ  rÞ   râ   r   )rØ   rà   rà   )ç333333Ó?rã   çÍÌÌÌÌÌì?rä   ry   )r}   r}   ç«ªªªªªâ?rå   çUUUUUUí?ræ   c                 C   rÚ   )Nr   TrÛ   rÂ   rÜ   r   r   r   Útest_rank_average_pctØ  rÞ   rç   )r{   rx   rz   r8   ry   )rß   rØ   r~   rÙ   rà   r8   c                 C   rÚ   )Nr   TrÛ   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  Tr:   r   )r   r   rN   rF   r   )r‘   r“   r   r   r   Útest_pct_max_many_rows  s   ré   )*Ú	itertoolsr   rÕ   Únumpyr   rD   Úpandas._libs.algosr   r   Úpandas.util._test_decoratorsÚutilÚ_test_decoratorsrÓ   Úpandasr   r   r   r   r	   Úpandas._testingÚ_testingrH   Úpandas.api.typesr
   Úfixturer   rR   r   r%   r"   rÔ   r/   r0   rÑ   rÒ   rÝ   rá   râ   rç   rè   Ú
single_cpuré   r   r   r   r   Ú<module>   sÔ    
$$$$$ûÿ
	ùÿ
  b
÷þ

÷þ

÷þ

÷þ

÷þ
