o
    ÀvháM  ã                   @   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   úc/var/www/html/hyperkenya/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¸Ô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¡7rJ   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¶*"¨¾Fg¦3Ø!äÇ»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
÷þ
	
÷þ
	
÷þ
	
÷þ
	
÷þ
	