
    .iIU                        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
c 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j0                  d        Z ej0                  d ej4                  dd	d
dej6                  dddej6                  d	g
      gd ej4                  ddddej6                  dddej6                  dg
      gd ej4                  ddddej6                  dddej6                  dg
      gd ej4                  ddddej6                  dddej6                  dg
      gd ej4                  ddddej6                  dddej6                  dg
      ggd       d        Z ej0                  ddddd  ej:                  d! ej<                  d"      #       ej:                  d$ ej<                  d"      #       ej:                  d% ej<                  d"      #      d&d'g
(      d)        ZdMd*Z  G d+ d,      Z!ejD                  jG                  d-dgd.gfddgd/d.gfddgd.d.gfg d0g d1fg d2g d3fg d4g d5fg d6g d7fg d8g d9fg d:g d;fg	      d<        Z$ejD                  jG                  d-dgd.gfddgd/d.gfddgd/d/gfg d0g d1fg d2g d=fg d4g d5fg d6g d>fg d8g d?fg d:g d;fg	      d@        Z%ejD                  jG                  d-dgd.gfddgd/d.gfddgd.d.gfg d0g d1fg d2g dAfg d4g d5fg d6g dBfg d8g d9fg d:g d;fg	      dC        Z&ejD                  jG                  d-dgd.gfddgd/d.gfddgdDdDgfg d0g d1fg d2g dEfg d4g d5fg d6g dFfg d8g dGfg d:g d;fg	      dH        Z'ejD                  jG                  d-dgd.gfddgd/d.gfddgd/d.gfg d0g d1fg d2g d1fg d4g d5fg d6g dIfg d8g dJfg d:g d;fg	      dK        Z(ejD                  jR                  dL        Z*y)N    )chainN)InfinityNegInfinity)NANaTSeries	Timestamp
date_range)CategoricalDtypec                  d    t        ddddt        j                  dddt        j                  dg
      S )N               )r   npnan     c/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/series/methods/test_rank.pyserr      s*    1aArvvq!Q:;;r   averageg      ?g      @      @g      @g       @minr   r      r      maxr      r   firstdensec                     | d   S )Nr   r   )xs    r   <lambda>r#   %   s
    !A$ r   )paramsidsc                     | j                   S Nparamrequests    r   resultsr,      s     ==r   objectfloat64int64Float64Int64float64[pyarrow]pyarrowmarksint64[pyarrow]string[pyarrow]zstring[python]str)r$   c                     | j                   S r'   r(   r*   s    r   dtyper:   +   s     ==r   c                 b    d}| dv rd}|S | dv r|dk(  s|rd}|S d}|S | dv r|dk(  s|rd}|S d	}|S )
Nr.   )r7   r0   )r2   r6   r   zdouble[pyarrow]uint64[pyarrow])r0   r1   UInt64r   )r:   methodpct	exp_dtypes       r   expected_dtyperA   =   s}    I##	  
8	8Y#)I  *I  
&	&Y#!I  !Ir   c                      e Zd Zd Zd Zd Zd Zd Zej                  j                  dg d      ej                  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j&                  d            g      d               Zd Zej                  j                  dej.                  dgej.                  dgej0                  dgg      d        Zej                  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!        Zd" Zd# Zd$ Zd% Zd& Zy
)'TestSeriesRankc                 
   t        j                  d      }t        j                  |d d d<   d|d dd<   |j	                         }|j                  d      j	                         }t        j                  ||       t        j                  |      }|j                  t        j                        }t        |j                  |      |j                  d      }t        j                  ||<   t        j                  ||       t        t        j                  d	      j                  d            }|j	                         }	|j                  t               j	                         }t        j                  |	|       t        t        j                  d	            d
z   }|dz  }|j	                  d      }	t        j                  |	|       t        t        j                  dd            }t        t        j                  dd            }|j	                  d      }	t        j                  |	|       |j                  d      }t        j                  |d<   t        t        j                  dd            }t        j                  |d<   |j	                  d      }	t        j                  |	|       t        t        j                  d	            d
z   }t        j                  |d<   |dz  }|j	                  d      }	t        j                  |	|       t        t        j                  t        j                  d            }|}|j	                  d      }	t        j                  |	|       t        t        j                  d	      d      dz   }t        j                  |d<   |dz  }|j	                  d      }	t        j                  |	|       t#        dd	      }
t        t        j                  d	      |
d      dz   }t        j                  |j$                  d<   |dz  }|j	                  d      }	t        j                  |	|       t        g d      }t        g d      }|j	                         }	t        j                  |	|       t        dddt&        gd      }t        dddt        j                  g      }|j	                         }	t        j                  |	|       t        j(                  g dd      }t        j*                  j-                  d      j/                  t1        |            }t        ||         }t        |d
z   d      }|j	                         }	t        j                  |	|       y )Nscipy.statsr         @
   r   Ots)indexnamer         ?      @Tr?   r   d   g)\(?floatg@_)?r   r:   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'&l7rS   g|=r   (   r.   )pytestimportorskipr   r   rankastypetmassert_series_equalisnanfillnainfr   rankdatarJ   arangerepeatrP   r
   ilocr   arrayrandomdefault_rngpermutationlen)selfdatetime_seriessp_statsranksoranksmaskfilledexpiseriesiranksrngvaluesrandom_orders                r   	test_rankzTestSeriesRank.test_rankQ   s,   &&}5!vv!!$A$$& '',113
uf-xx( ''/ X&&v.fllNFFD	
uc*1,,Q/0nnU#((*
vs+1&,m$'
vs+1c*+RYYuc*+$'
vs+ ..)VV
RYY{C01A$'
vs+1&,VV
m$'
vs+2663/0$'
vs+ 1W59VV
m$'
vs+Q/1s':Q>&&Qm$'
vs+JK)*
vs+ ';#>hOaArvv&'
vs+L
 yy,,Q/;;CKH-.\C'y9
vs+r   c           	         t        g d      }t        g d      }t        g d      j                  t        g dd            }t        j                  |j                         |       t        j                  |j                  d      |       t        g d      j                  t        g dd            }t        g d      }|j                         }t        j                  ||       t        g d	      j                  t        g d	d            }t        g d      }|j                         }	t        j                  |	|       t        d
dddddt        j                  g      j                  t        g dd            }
t        g d      }t        g d      }t        ddddddt        j                  g      }t        j                  |
j                  d      |       t        j                  |
j                  d      |       t        j                  |
j                  d      |       t        g d      }t        g d      }t        ddddddt        j                  g      }t        j                  |
j                  dd      |       t        j                  |
j                  dd      |       t        j                  |
j                  dd      |       d }t        j                  t        |!      5  |
j                  d"d       d d d        t        j                  t        |!      5  |
j                  dd       d d d        t        d
dddt        j                  g      j                  t        g d#d            }
t        g d$      }t        g d%      }t        d&d'd(dt        j                  g      }t        j                  |
j                  dd)      |       t        j                  |
j                  dd)      |       t        j                  |
j                  dd)      |       y # 1 sw Y   (xY w# 1 sw Y   xY w)*N)rL          @      @rF   rM   rT   )rT   rM   rF   ry   rx   rL   )r   secondthirdfourthfifthsixthT)
categoriesorderedF	ascending)rx   rF   rT   ry   rL   rM   )r   r   r   r   r   r   r   rz   r{   r|   r}   r~   )r   rz   r{   r|   r}   r~   seventh)rx   ry   rF   rM   rT   r   rL   )rL   rx   ry   rF   rM   rT   r   rL   rx   ry   rF   rM   rT   top	na_optionbottomkeep)r   rT   rM   rF   ry   rx   rL   )rT   rM   rF   ry   rx   rL   r   )r   r   z3na_option must be one of 'keep', 'top', or 'bottom'matchbad)r   rz   r{   r|   )皙?333333?皙?rL   皙?r   r   r   r   rL         ?      ?      ?)r   r?   )r   rZ   r   r[   r\   rY   r   r   rW   raises
ValueError)ri   rp   exp_descr   	unorderedexp_unorderedres
unordered1exp_unordered1res1na_serexp_topexp_botexp_keepmsgs                  r   test_rank_categoricalz$TestSeriesRank.test_rank_categorical   s    3489D

&S
 	 	w||~s3
w||e|<hG D

&S
 	 =>nn
sM2./66/7

   >? 
t^4 h7GRVVL

&S
 	 <=<=3S#sC@A
v{{U{;WE
v{{X{>H
v{{V{<hG <=<=3S#sC@A
v{{Ue{LgV
KK(eK<g	
 	v{{Vu{MxX D]]:S1 	:KK%5K9	: ]]:S1 	9KK$%K8	9 (GXrvvFGNNCTJ
 23234dC89
v{{U{EwO
v{{X4{H'R
v{{V{FQ#	: 	:	9 	9s   8P2/P?2P<?Qc                     t        g dd      }|j                  d      }t        g dd      }t        j                  ||       y )N)Nr   Nr   r   r   r   r   r1   rQ   r   r   )N      @NrM   rM   r   rM   rL   r0   )r   rY   r[   r\   )ri   rp   resultexpecteds       r   test_rank_nullable_integerz)TestSeriesRank.test_rank_nullable_integer  s<    37CF+DIV
vx0r   c                     t        ddg      }|j                  d       d}t        j                  t        |      5  |j                  d       d d d        y # 1 sw Y   y xY w)Nr   r   r   r>   z,No axis named average for object type Seriesr   )r   rY   rW   r   r   )ri   sr   s      r   test_rank_signaturez"TestSeriesRank.test_rank_signature  sQ    Aq6N	i <]]:S1 	FF9	 	 	s   AA!c                 |   |\  }}|dk(  s|dv r|r|s|dk(  rt        j                  d       ||n|j                  |      }|dv r~|s|t        |t	        j
                  |j                  t        j                  t        j                              <   t	        j
                  |      }|j                  t              }t        ||<   |j                  |      }	|dk(  r5|s3t	        j
                  |      }|j                  t              }t        ||<   t        |t        ||      	      }
t        j                  |	|
       y )
Nr/   )r6   r<   r1   r8   zint64/str does not support NaNr2   r0   )r:   na_valuer   r7   rQ   )rW   skiprZ   r   r   r]   to_numpyr.   r   r-   rY   r   rA   r[   r\   )ri   r   r,   r:   using_infer_stringusing_nan_is_nar>   rp   rn   r   r   s              r   test_rank_tie_methodsz$TestSeriesRank.test_rank_tie_methods  s    W GG'&5E>KK89]c

5(933OMOCBJJHIJ88C=D**V$CCI(%%o88C=D**V$CCI#^E6%BC
vx0r   r   )r   r   r   z!dtype, na_value, pos_inf, neg_infr-   Nr.   r0   r2   r3   r4   c	                    t        j                  d       |dk(  r|dk(  rd}	nd}	n|dk(  r|dk(  rd}	nd}	nd}	d}
|g|
z  |g|
z  z   |g|
z  z   }t        ||	      }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}nK|dk(  r|d   |d   |d   g}n7|dv r|s|d   t        g|
z  |d   g}n|d   t        j
                  g|
z  |d   g}|r|n|d d d   }t        t        j                  |            }|j                  |||      }t        ||		      }t        j                  ||       y )Nscipyr2   r   r<   r0   r=   r.   r   rQ   )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   r   r   r   r   r   rU   )r>   r   r   )rW   rX   r   r   r   r   listr   from_iterablerY   r[   r\   )ri   rank_methodr   r   r:   r   pos_infneg_infr   r@   chunkin_arrrq   	exp_ranksrl   orderr   r   exp_sers                      r   "test_rank_tie_methods_on_infs_nansz1TestSeriesRank.test_rank_tie_methods_on_infs_nans5  s   6 	G$&&i'.	-	ii'%	$	!IU"hZ%%777)e:KKu-!9i8y)4y)4I6I6
	 +&1XuQxq2E("1XuQxq2E55o1Xte|U1X6E1Xx%/q:E%552;++H56)y  
 3
vw/r   c                 
   t        dt        j                  t        j                  t        j                   dg      }|j	                  d      }t        dt        j                  dddgd	      }t        j                  ||       y )
Nr      Fr   r   r   r   r.   rQ   )r   r   r   r_   rY   r[   r\   )ri   rq   r   rp   s       r   test_rank_desc_mix_nans_infsz+TestSeriesRank.test_rank_desc_mix_nans_infsz  sb     !RVVRVVbffWb9:.aAq);
vs+r   z	op, valuer   g    .Agư>c                    t        j                  d      }t        j                  j	                  d      j                  d      }t        j                  t        ddd      D cg c]  }||d  	 c}      }t        j                  j	                  d      j                  |       t        t        |            D cg c]  }t        t        d      |z          }} |||      }t        ||      }	|	j                  |      }
|j                  ||dk7  r|nd	      }t        ||      j                  d
      }t!        j"                  |
|       y c c}w c c}w )NrE   r   r   r   a)rJ   r   r   ordinalr.   )rW   rX   r   re   rf   standard_normalconcatenaterangeshufflerh   chrordr   rY   r`   rZ   r[   r\   )ri   r   opvaluerk   xsirJ   valsrI   r   sprankr   s                r   test_rank_methods_seriesz'TestSeriesRank.test_rank_methods_series  s    &&}5YY""1%55a8^^U1a^<RV<=
		a ((,,1#b'N;qSX\";;"e}D&,""!7+Y
 &.55i@
vx0 = <s   "E9Eser, expr   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   rU   )r   r   r   r   r   c                    |d   dk  r|j                  d      r|d d d   }t        |      j                  |      }|j                  d      }t        |      j                  t	        |d            }t        j                  ||       y )Nr   r8   rU   r    r   
startswithr   rZ   rY   rA   r[   r\   )ri   r:   r   rp   r   r   r   s          r   test_rank_dense_methodz%TestSeriesRank.test_rank_dense_method  sx     q6A:%**51dd)C3Ku%w'#;%%nUG&DE
vx0r   c           	         |\  }}|dk(  s|dv r|r|s%|dk(  r |j                         j                  |      }n|j                  |      }|j                  d      }	|j                  d      r@|j                  d      j	                         |j                  d      z
  j                         }
n!|j	                         |z
  j                         }
|dk(  r&|s$|
j                  t        j                  t              }
t        j                  |	|
j                  t        |d                   |j                  d      rB|j                  d      j	                         |j                  d      z
  j                  |	      }
n#|j	                         |z
  j                  |	      }
|j                  |d
      }|dk(  r&|s$|
j                  t        j                  t              }
t        j                  ||
j                  t        ||                   y )Nr/   )r6   r1   r0   r8   Fr   r.   r7   r   r   )r>   r   )dropnarZ   rY   r   r   replacer   r   r   r[   r\   rA   )ri   r   r,   r:   r   r   r>   _r   r   r   res2s               r   test_rank_descendingz#TestSeriesRank.test_rank_descending  s    	W??&5E>

##E*A

5!Affuf%E"+//1AHHY4GGMMOH!))+H%%o''3H
sHOON5)4T$UVE"+//1AHHY4GGMM N H !)))8HvvVuv5%%o''3H
tX__^E65R%STr   c                     |\  }}|j                         j                  d      }|j                  |      }t        |      j                         }|j                  |_        t        j                  ||       y )Ni8r   )r   rZ   rY   r   rJ   r[   r\   )ri   r   r,   r>   rp   r   r   r   s           r   test_rank_intzTestSeriesRank.test_rank_int  s^    JJL%v&#;%%'
vx0r   c                    t        t        j                  gdz        j                  t              j                  d       t        t        j                  gdz        j                  t              j                  d       y )N    Tr   F)r   r   r   rZ   r-   rY   )ri   s    r   test_rank_object_bugz#TestSeriesRank.test_rank_object_bug  sZ     	x"}$$V,11D1Ax"}$$V,11E1Br   c                     t        t        d      t        g      }|j                         }|j	                          |}t        j                  ||       y )Nz2017-01-05 10:20:27.569000)r   r	   r   copyrY   r[   r\   )ri   r   r   r   s       r   test_rank_modify_inplacez'TestSeriesRank.test_rank_modify_inplace  sB     I:;SAB668	
vx0r   c                     t        dddt        dgd      }|j                  d      }t        d	d
dt        dgd      }t        j                  ||       y )Ng*"Fg3!ǻg{Q :g1A;-:r0   rQ   r   r   r   r   r   r   r=   )r   r   rY   r[   r\   )ri   r   r   r   s       r   test_rank_ea_small_valuesz(TestSeriesRank.test_rank_ea_small_values  sV    =-]K
 '1aB*(;
vx0r   ) __name__
__module____qualname__rv   r   r   r   r   rW   markparametrizer   r   r   r   r_   r   r)   td
skip_if_nor   r   operatoraddmulr   r   r   r   r   r   r   r   r   r   rC   rC   P   s   Y,vVRp11B [[[*CD[[+tXZ70BFFRVVG,FLL"#bmmI.		
30 E 30j, [[\\1\\3\\4 	
11" [[S1#JS1#JS1#JVaV	"	"o.!?3		
11UB1C11r   rC   r   rL   r   r   )UUUUUU?UUUUUU?rL   )r   r   r   )r   rL   rL   r   )rL   r   r   r   )r   r   rL   rL   r   )r   r   r   r   r   r   )r   r   r   r   rL   rL   r   r   c                    |d   dk  r| j                  d      r|d d d   }t        |      j                  |       }|j                  dd      }t        |      j                  t	        | dd            }t        j                  ||       y )Nr   r8   rU   r    Tr>   r?   rN   r   r:   r   rp   r   r   r   s         r   test_rank_dense_pctr    |     1vze&&u-$B$is5!AVV7V-Fc{!!.T"JKH68,r   )r   r   r   )r   r   r   r   r   )UUUUUU?r  r   r   竪?r  c                    |d   dk  r| j                  d      r|d d d   }t        |      j                  |       }|j                  dd      }t        |      j                  t	        | dd            }t        j                  ||       y )Nr   r8   rU   r   Tr   rN   r   r  s         r   test_rank_min_pctr    |     1vze&&u-$B$is5!AVV5dV+Fc{!!.4"HIH68,r   )r   rL   rL   )r   r   rL   rL   r   c                    |d   dk  r| j                  d      r|d d d   }t        |      j                  |       }|j                  dd      }t        |      j                  t	        | dd            }t        j                  ||       y )Nr   r8   rU   r   Tr   rN   r   r  s         r   test_rank_max_pctr
  '  r  r   r   )r   r  r  )333333?r  ?r  r   )r   r   竪?r  UUUUUU?r  c                    |d   dk  r| j                  d      r|d d d   }t        |      j                  |       }|j                  dd      }t        |      j                  t	        | dd            }t        j                  ||       y )Nr   r8   rU   r   Tr   rN   r   r  s         r   test_rank_average_pctr  >  s|     1vze&&u-$B$is5!AVV9$V/Fc{!!.	t"LMH68,r   )r   r   r   rL   r   )r  r   r   r   r  rL   c                    |d   dk  r| j                  d      r|d d d   }t        |      j                  |       }|j                  dd      }t        |      j                  t	        | dd            }t        j                  ||       y )Nr   r8   rU   r   Tr   rN   r   r  s         r   test_rank_first_pctr  U  r  r   c                      t        t        j                  d            } | j                  d      j	                         }|dk(  sJ y )Ni  TrN   r   )r   r   ra   rY   r   )r   r   s     r   test_pct_max_many_rowsr  l  s<     	ryy#$AVVV!!#FQ;;r   )F)+	itertoolsr   r   numpyr   rW   pandas._libs.algosr   r   pandas.util._test_decoratorsutil_test_decoratorsr   pandasr   r   r   r	   r
   pandas._testing_testingr[   pandas.api.typesr   fixturer   rd   r   r,   r)   r   r:   rA   rC   r   r   r  r  r
  r  r  
single_cpur  r   r   r   <module>r!     s       * )   - < < 	HBHHc3S"&&#sCQTUVW	!Q1bffaArvvqABC	!Q1bffaArvvqABC	("((Aq!Q1aCDE	("((Aq!Q1aCDE 			 '}r}}Y/GH%]R]]9-EF&mbmmI.FG&c1 c1R 
se
Q'7#$
Q#s	/0	/0	/0	GH	ST	LM
-- 
se
Q'7#$
Q'7#$	/0	/0	/0	GH	ST	LM
-- 
se
Q'7#$
Q#s	/0	/0	/0	GH	ST	LM
-- 
se
Q'7#$
Q'7#$	/0	/0	/0	GH	ST	LM
-- 
se
Q'7#$
Q'9%&	/0	/0	/0	GH	ST	LM
--  r   