a
    Pªf¸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   ú^/var/www/ai-form-bot/venv/lib/python3.9/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   s   | j S ©N©Úparam©Úrequestr   r   r   Úresults   s    
r$   ÚobjectÚfloat64Zint64ÚFloat64ZInt64úfloat64[pyarrow]Úpyarrow©Zmarkszint64[pyarrow]c                 C   s   | j S 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)Z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ÚisnanZfillnaÚinfr   Úrankdatar2   ÚarangeÚrepeatr9   Úcopyr	   Zilocr   ÚarrayÚrandomÚdefault_rngZpermutationÚlen)ÚselfZdatetime_seriesÚsp_statsÚranksZoranksÚmaskZfilledÚexpÚiseriesZiranksÚrngÚvaluesZ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0    Y  tj	t
|d! |
jddd W d   ƒ n1 sP0    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)r4   ç       @ç      @r.   r5   r<   )r<   r5   r.   rY   rX   r4   )r   ÚsecondÚthirdÚfourthÚfifthÚsixthT)Ú
categoriesÚorderedF©Ú	ascending)rX   r.   r<   rY   r4   r5   )r   r   r   r   r   r   r   rZ   r[   r\   r]   r^   )r   rZ   r[   r\   r]   r^   Zseventh)rX   rY   r.   r5   r<   r   r4   )r4   rX   rY   r.   r5   r<   r   r4   rX   rY   r.   r5   r<   Útop)Ú	na_optionÚbottomÚkeep)r   r<   r5   r.   rY   rX   r4   )r<   r5   r.   rY   rX   r4   r   )rd   rb   z3na_option must be one of 'keep', 'top', or 'bottom'©ÚmatchÚbad)r   rZ   r[   r\   )çš™™™™™Ù?ç333333ã?çš™™™™™é?r4   çš™™™™™É?©rm   rj   rk   rl   r4   ç      Ð?ç      à?ç      è?)rd   r7   )r   rB   r
   rC   rD   rA   r   r   r?   ÚraisesÚ
ValueError)rO   rS   Zexp_descr`   Ú	unorderedZexp_unorderedÚresZ
unordered1Zexp_unordered1Zres1Zna_serZexp_topZexp_botZexp_keepÚmsgr   r   r   Útest_rank_categorical•   s‚    ÿþýÿþýÿÿþý	ÿ..ÿz$TestSeriesRank.test_rank_categoricalc                 C   sX   t ddgƒ}|jdd d}tjt|d | d¡ W d   ƒ n1 sJ0    Y  d S )Nr   r   r   ©Úmethodz,No axis named average for object type Seriesrg   )r   rA   r?   rr   rs   )rO   Úsrv   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 )Nrx   )rB   rA   rC   rD   r   )rO   r   r$   r+   ry   rS   Úresultr   r   r   Útest_rank_tie_methodsô   s    z$TestSeriesRank.test_rank_tie_methodsrb   TFry   ©r   r   r   r   r   rd   )rc   re   rf   z!dtype, na_value, pos_inf, neg_infr%   r&   r'   r(   r)   r*   c                 C   st  t  d¡ |dkr&|dkr d}q*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rê|d |d |d g}n<|dkr|d |d |d g}n|d tjg|	 |d g}|r0|n|d d d… }tt |¡ƒ}|j|||d}t	 
|t||d¡ d S )NZ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~   rc   r   r   r   re   r=   )ry   rd   rb   )r?   r@   r   r   r   Úlistr   Úfrom_iterablerA   rC   rD   )rO   ry   rd   rb   r+   Zna_valueZpos_infZneg_infZ	exp_dtypeÚchunkZin_arrrT   Z	exp_ranksrQ   Ú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   é   Fra   r   r   r   r&   r:   )r   r   r   rF   rA   rC   rD   )rO   rT   r|   rS   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r˜|nd¡}	t
|	|d d¡}
t ||
¡ d S )Nr-   r   r   c                    s   g | ]}ˆ |d … ‘qS r   r   ©Ú.0Úi©Zxsr   r   Ú
<listcomp>D  ó    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  rŽ   )r2   rx   r   Zordinalr&   )r?   r@   r   rL   rM   Zstandard_normalZconcatenateÚrangeÚshufflerN   r   rA   rG   rB   rC   rD   )rO   ry   ÚopÚvaluerP   r2   Úvalsr1   r|   Z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   ©éûÿÿÿéüÿÿÿéýÿÿÿéþÿÿÿr=   )r   r   r   r   r   c                 C   s:   t |ƒ |¡}|jdd}t |ƒ |j¡}t ||¡ d S )Nr   rx   ©r   rB   rA   r+   rC   rD   )rO   r+   r   rS   rz   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‹   Fra   rx   )ry   rb   )ÚdropnarB   rA   r   rC   rD   )
rO   r   r$   r+   ry   Ú_rz   ru   r…   Zres2r   r   r   Útest_rank_descendingb  s    

z#TestSeriesRank.test_rank_descendingc                 C   sF   |\}}|  ¡  d¡}|j|d}t|ƒ  ¡ }|j|_t ||¡ d S )NÚi8rx   )r¢   rB   rA   r   r2   rC   rD   )rO   r   r$   ry   rS   rz   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é    Tra   F)r   r   r   rB   r%   rA   )rO   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   rJ   rA   rC   rD   )rO   rz   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   rx   r   r   r   r   )r   r   rA   r   r   rC   rD   )rO   r   r|   r…   r   r   r   Útest_rank_ea_small_values‹  s    þz(TestSeriesRank.test_rank_ea_small_values) Ú__name__Ú
__module__Ú__qualname__rW   rw   r{   r?   ÚmarkÚparametrizer%   r}   r   r   r   r   rF   r   r!   ÚtdÚ
skip_if_nor†   rˆ   ÚoperatorÚaddÚmulr—   r¡   r¤   r¦   r¨   r©   rª   r   r   r   r   r,   9   sf   [X
ûüþ"ýþ


øþ
	
r,   r˜   r4   rp   r€   )çUUUUUUÕ?çUUUUUUå?r4   )r   r   r   )rp   r4   r4   r™   )r4   r¶   rµ   rš   )rµ   rµ   r4   r4   r¶   )r   r   r   r   r   r   )rµ   rµ   r¶   r¶   r4   r4   r›   rn   c                 C   s<   t |ƒ | ¡}|jddd}t |ƒ |j¡}t ||¡ d S )Nr   T©ry   r7   r    ©r+   r   rS   rz   r|   r…   r   r   r   Útest_rank_dense_pct™  s    r¹   )rµ   r¶   r¶   )rm   rm   rl   rl   rk   )çUUUUUUÅ?rº   rp   rp   ç«ªªªªªê?r»   c                 C   s<   t |ƒ | ¡}|jddd}t |ƒ |j¡}t ||¡ d S )Nr   Tr·   r    r¸   r   r   r   Útest_rank_min_pct®  s    r¼   )rµ   r4   r4   )rj   rj   r4   r4   rk   c                 C   s<   t |ƒ | ¡}|jddd}t |ƒ |j¡}t ||¡ d S )Nr   Tr·   r    r¸   r   r   r   Útest_rank_max_pctÃ  s    r½   rq   )rµ   r»   r»   )ç333333Ó?r¾   çÍÌÌÌÌÌì?r¿   rk   )ro   ro   ç«ªªªªªâ?rÀ   çUUUUUUí?rÁ   c                 C   s<   t |ƒ | ¡}|jddd}t |ƒ |j¡}t ||¡ d S )Nr   Tr·   r    r¸   r   r   r   Útest_rank_average_pctØ  s    rÂ   )rm   rj   rl   r4   rk   )rº   rµ   rp   r¶   r»   r4   c                 C   s<   t |ƒ | ¡}|jddd}t |ƒ |j¡}t ||¡ d S )Nr   Tr·   r    r¸   r   r   r   Útest_rank_first_pctí  s    rÃ   c                  C   s.   t t d¡ƒ} | jdd ¡ }|dks*J ‚d S )Ni  Tr6   r   )r   r   rH   rA   r   )rz   r|   r   r   r   Útest_pct_max_many_rows  s    rÄ   )*Ú	itertoolsr   r²   Únumpyr   r?   Zpandas._libs.algosr   r   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsr°   Zpandasr   r   r   r   r	   Zpandas._testingZ_testingrC   Zpandas.api.typesr
   Zfixturer   rK   r   r$   r!   r±   r+   r,   r®   r¯   r¹   r¼   r½   rÂ   rÃ   Z
single_cpurÄ   r   r   r   r   Ú<module>   sÒ   
$$$$$ûÿ	
ùÿ
  b
÷þ

÷þ

÷þ

÷þ

÷þ
