
    .i T              *       H   d dl m Z  d dlZd dlZd dlZd dlmZmZmZm	Z	 d dl
mZ d Zd Zej                  j!                  ddgddgg      ej                  j!                  d	d
D  cg c]  }  ej"                  g d|        c}  ej$                  d       ej$                  d       ej$                  d       ej$                  d       ej$                  d      g ej$                  dd       ej$                  dd       ej$                  dd       ej$                  dd       ej$                  dd      g ej$                  d       ej$                  d       z
   ej$                  d       ej$                  d       z
   ej$                  d       ej$                  d       z
   ej$                  d       ej$                  d       z
   ej$                  d       ej$                  d       z
  g ej$                  d      j'                  d       ej$                  d      j'                  d       ej$                  d      j'                  d       ej$                  d      j'                  d       ej$                  d      j'                  d      ggz   d       ej                  j!                  ddddg dfdddg dfdddg dfdddg dfdddg dfdddg dfdddg d fdddg d!fd"ddg d#fd"ddg d$fd"ddg d%fd"ddg d&fd'ddg d(fd'ddg d)fd'ddg d*fd'ddg d+fd,ddg d-fd,ddg d.fd,ddg d fd,ddg d/fg      d0                      Zej                  j!                  ddgddgg      ej                  j!                  d	ej*                   ej*                   ej,                  d1ej,                  ej*                  ej*                  gg      ej                  j!                  d2ddd3d4d4ej,                  d5ej,                  d6d6gfddd7g d8fddd9g d:fddd3d6d6ej,                  d5ej,                  d4d4gfddd7g d;fddd9g d<fddd3d1d1ej,                  d=ej,                  d>d>gfddd7g d?fddd9g d@fddd3d>d>ej,                  d=ej,                  d1d1gfddd7g dAfddd9g dBfd"dd3dCdCej,                  d=ej,                  dDdDgfd"dd7g dEfd"dd9g dFfd"dd3dDdDej,                  d=ej,                  dCdCgfd"dd7g dGfd"dd9g dHfd'dd3d1dCej,                  d=ej,                  d>dDgfd'dd7g dIfd'dd9g dJfd'dd3d>dDej,                  d=ej,                  d1dCgfd'dd7g dKfd'dd9g dLfd,dd3d1d1ej,                  dCej,                  d=d=gfd,dd7g dMfd,dd9g dNfd,dd3d=d=ej,                  dCej,                  d1d1gfd,dd7g dOfd,dd9g dPfg      dQ                      Zej                  j!                  ddgddgg      ej                  j!                  d	dRD  cg c]<  }  ej"                  dSdSej,                  dTdSdUej,                  ej,                  g|       > c}  ej$                  d       ej$                  d      ej,                   ej$                  d       ej$                  d       ej$                  d      ej,                  ej,                  g ej$                  dd       ej$                  dd      ej,                   ej$                  dd       ej$                  dd       ej$                  dd      ej,                  ej,                  g ej$                  d       ej$                  d       z
   ej$                  d       ej$                  d       z
  ej,                   ej$                  d       ej$                  d       z
   ej$                  d       ej$                  d       z
   ej$                  d       ej$                  d       z
  ej,                  ej,                  g ej$                  d      j'                  d       ej$                  d      j'                  d      ej,                   ej$                  d      j'                  d       ej$                  d      j'                  d       ej$                  d      j'                  d      ej,                  ej,                  ggz   dV       ej                  j!                  dWg ddd3ddCdCej,                  dDdCd>ej,                  ej,                  gfddd3ddXdXej,                  d1dXdYej,                  ej,                  gfddd3dd>d>ej,                  d1d>dCej,                  ej,                  gfddd3ddYdYej,                  dZdYdXej,                  ej,                  gfddd3dd1d1ej,                  dDd1d>ej,                  ej,                  gfddd3ddZdZej,                  d1dZdYej,                  ej,                  gfddd3dd=d=ej,                  d1d=dCej,                  ej,                  gfddd3dd[d[ej,                  dZd[dXej,                  ej,                  gfd"dd3dd=d=ej,                  dDd=d>ej,                  ej,                  gfd"dd3dd[d[ej,                  d1d[dYej,                  ej,                  gfd"dd3ddDdDej,                  d1dDdCej,                  ej,                  gfd"dd3dd1d1ej,                  dZd1dXej,                  ej,                  gfd'dd3dd1dCej,                  dDd=d>ej,                  ej,                  gfd'dd3ddZdXej,                  d1d[dYej,                  ej,                  gfd'dd3dd=d>ej,                  d1dDdCej,                  ej,                  gfd'dd3dd[dYej,                  dZd1dXej,                  ej,                  gfd,dd3dd1d1ej,                  d=d1dCej,                  ej,                  gfd,dd3dd\d\ej,                  d1d\d]ej,                  ej,                  gfd,dd3dd=d=ej,                  d1d=dCej,                  ej,                  gfd,dd3dd1d1ej,                  d\d1d]ej,                  ej,                  gfddd9dg d^fddd9dg d_fddd9dg d`fddd9dg dafddd9dg dbfddd9dg dcfddd9dg ddfddd9dg defd"dd9dg dffd"dd9dg dgfd"dd9dg dhfd"dd9dg difd'dd9dg djfd'dd9dg dkfd'dd9dg dlfd'dd9dg dmfd,dd9dg dnfd,dd9dg dofd,dd9dg dpfd,dd9dg dqf      dr                      Zej                  j!                  dsdg dtfdg dufg      dv        Zej                  j!                  dwg dx      ej                  j!                  dyddg      dz               Zej                  j!                  d{g d|      ej                  j!                  d}ddg      ej                  j!                  d	g d~dej,                  dej,                  dgg      d                      Zej                  j!                  d{g d      ej                  j!                  d}ddg      ej                  j!                  d	g d~dej,                  dej,                  dgdej,                  dSej,                  d5gg      d                      Zd Zej                  j!                  dddSgddgd1d1gfg dg dg dfg dddSdej,                  gdd1d1ej,                  gfg dddSej,                  gdd1ej,                  gfg      d        Zd Zej                  j!                  dddg      d        Z d Z!d Z"ej                  j!                  d{d7d9g      d        Z#yc c} w c c} w )    )datetimeN)	DataFrameNaTSeriesconcatc                     t        j                  g d      } t        |       }|j                         }d}|j	                  | d      }t        j                  t        |      5  |j                          d d d        |j	                  | d      }t        j                  t        |      5  |j                          d d d        y # 1 sw Y   QxY w# 1 sw Y   y xY w)NForderedz0Cannot perform rank with non-ordered Categorical)observedmatch)	pdCategoricalr   to_framegroupbypytestraises	TypeErrorrank)catserdfmsggbgb2s         d/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/groupby/methods/test_rank.py)test_rank_unordered_categorical_typeerrorr      s    
..U
+C
+C	B
<C	S5	)B	y	, 
	 **S5*
)C	y	, 
 	  s   #C*CCCc                     t        j                  dgdz  t              } t        j                  dgdz  t              }t         j                  j	                  d      j                  dddt        	      }t         j                  j	                  d      j                  dddt        	      }t        t         j                  j	                  d      j                  d      | j                  |      |j                  |      d
      }|j                  ddg      j                  j                         }|j                  ddg      D cg c]  \  }}|j                  j                         ! }}}t        |d      }|j                  |j                        }t!        j"                  ||       |j                  ddg      j                  j                  d      }|j                  ddg      D cg c]!  \  }}|j                  j                  d      # }}}t        |d      }|j                  |j                        }t!        j"                  ||       y c c}}w c c}}w )N
aaaaaaaaaad   dtype
bbbbbbbbbb      r   i  )sizer"   )valuekey1key2r(   r)   )axisTpct)nparrayobjectrandomdefault_rngintegersintr   standard_normaltaker   r'   r   r   reindexindextmassert_series_equal)	lev1lev2lab1lab2r   resultkeypieceexpecteds	            r   test_rank_applyrB   !   s   88XJ$F3D88XJ$F3D99  #,,Q#S,ID99  #,,Q#S,ID	YY**1-==cBIIdOIIdO	

B ZZ()//446F57ZZ@P5QRzsE  "RHRhQ'H-H68,ZZ()//444>F 68ZZ@P5Q'1sET"H  hQ'H-H68, Ss   $I-&Igrpsquxquuxvals)i8i4i2i1u8u4u2u1f8f4f2)r%   r%      r%      r!   z
2018-01-02z
2018-01-08z
2018-01-06z
US/PacifictzDc                     t        | d         S Nr   typexs    r   <lambda>r]   e       $qt*     )idszties_method,ascending,pct,expaverageTF)       @rb         @rb         @)皙?re         ?re   皙?)rd   rd   rf   rd   rb   )rg   rg   皙?rg   re   min)rf   rf   rc   rf   rd   )rh   rh   rf   rh   rg   )      @rj   rf   rj   rb   )333333?rk   rh   rk   re   max)rj   rj   rc   rj   rd   )rk   rk   rf   rk   rg   )rc   rc   rf   rc   rb   )rf   rf   rh   rf   re   first)rf   rb   rc   rj   rd   )rh   re   rf   rk   rg   )rj   rd   rf   rc   rb   )rk   rg   rh   rf   re   dense)rf   rf   rj   rf   rb   )UUUUUU?ro   rf   ro   UUUUUU?)rf   rf   ro   rf   rp   c                    t        j                  | t        |            }|}t        |      t        |       z  }t	        |t         j
                        r!t        j                  ||j                        }t        ||d      }|j                  d      j                  |||      }	t        |t        |       z  dg      }
t        j                  |	|
       y )Nr!   r?   valr?   )method	ascendingr,   rs   columnsr-   repeatlenlist
isinstancendarrayr.   r"   r   r   r   r8   assert_frame_equal)rC   rF   ties_methodru   r,   expr?   	orig_valsr   r>   exp_dfs              r   test_rank_argsr   @   s    B ))D#d)
$CI:D	!D)RZZ(xxIOO4	3t,	-BZZ##;)QT#UFsSY8F&&)r_   rf   z#ties_method,ascending,na_option,expkeep      ?         @top)      @r   r   rc   r         @r   bottom)r   r   r   rj   r   r   r   )r   r   r   rc   r   r   r   )r   r   r   rj   r   r   r   rj   rd   )rj   rj   rf   rc   rf         @r   )rf   rf   r   rj   r   rd   rd   )r   r   rf   rc   rf   rj   rj   )rd   rd   r   rj   r   rf   rf   rb   rc   )rd   rd   rb   rc   rb         @r   )rb   rb   r   rj   r   rc   rc   )r   r   rb   rc   rb   rd   rd   )rc   rc   r   rj   r   rb   rb   )rj   rd   rf   rc   rb   r   r   )rf   rb   r   rj   r   rd   rc   )r   r   rf   rc   rb   rj   rd   )rd   rc   r   rj   r   rf   rb   )rb   rb   rf   rj   rf   rd   rd   )rf   rf   rd   rb   rd   rj   rj   )rd   rd   rf   rj   rf   rb   rb   )rj   rj   rd   rb   rd   rf   rf   c                     t        j                  | t        |            }|t        |       z  }t        ||d      }|j	                  d      j                  |||      }t        |t        |       z  dg      }	t        j                  ||	       y )Nrr   r?   )rt   ru   	na_optionrs   rv   )r-   ry   rz   r   r   r   r8   r~   )
rC   rF   r   ru   r   r   r?   r   r>   r   s
             r   test_infs_n_nansr      s    R ))D#d)
$C#d)D	3t,	-BZZ##i9 $ F sSY8F&&)r_   )rO   rP   rQ   r%   rR   rS   c                     t        | d         S rX   rY   r[   s    r   r]   r]      r^   r_   z'ties_method,ascending,na_option,pct,expre   rg   rh   rk   ro   rp   )rb   rb   r   rc   rb   rd   r   r   )      ?r         ?      ?r         ?r   r   )rd   rd   r   rf   rd   rb   r   r   )r   r   r         ?r   r   r   r   )rf   rf   r   rc   rf   rd   r   r   )r   r         ?r   r   r   r   r   )rj   rj   r   rf   rj   rb   r   r   )      ?r   r   r   r   r   r   r   )rj   rj          @rc   rj   rd   r   r   )r   r   rf   r   r   r   rf   rf   )rc   rc   r   rf   rc   rb   r   r   )r   r   rf   r   r   r   rf   rf   )rf   rb   r   rc   rj   rd   r   r   )r   r   r   r   r   r   r   rf   )rj   rd   r   rf   rc   rb   r   r   )r   r   r   r   r   r   r   rf   )rf   rf   rd   rj   rf   rb   rd   rd   )r   r   rf   r   r   r   rf   rf   )rj   rj   rd   rf   rj   rb   rd   rd   )r   r   rf   r   r   r   rf   rf   c                    t        j                  | t        |            }|}t        |      t        |       z  }t	        |t         j
                        r!t        j                  ||j                        }t        ||d      }	|	j                  d      j                  ||||      }
t        |t        |       z  dg      }t        j                  |
|       y )Nr!   rr   r?   rt   ru   r   r,   rs   rv   rx   )rC   rF   r   ru   r   r,   r   r?   r   r   r>   r   s               r   test_rank_args_missingr      s    b ))D#d)
$CI:D	!D)RZZ(xxIOO4	3t,	-BZZ##i9# $ F sSY8F&&)r_   zpct,exp)rj   rj   rj   rj   rj   )rk   rk   rk   rk   rk   c                     t        g ddgdz  d      }|j                  d      j                  |       }t        |dz  dg	      }t        j                  ||       y )
N)
ar   r   r   r   br   r   r   r      
   rr   r?   r+   r%   rs   rv   r   r   r   r8   r~   )r,   r   r   r>   r   s        r   test_rank_resets_each_groupr     s]     
BA3QS8T
B ZZ###,FsQw0F&&)r_   r"   )int64int32uint64uint32float64float32upperc                    |r+| d   j                         | dd  z   } | j                  dd      } t        dgdz  dgdz  d      }|d   j                  |       |d<   |d   j                  | k(  sJ |j                  d	      j                         }t        g d
dg      }|r|j                  d      }t        j                  ||       y )Nr   r   UiUIr      rr   rs   r?   )      @r   r   r   rv   Float64)	r   replacer   astyper"   r   r   r8   r~   )r"   r   r   r>   r   s        r   test_rank_avg_even_valsr     s    
 a 59,dD)	C519aS1W5	6B5	  'BuIe9??e###ZZ##%F+eW=Fy)&&)r_   r   )r   r   r   r,   )barr   foor   bazr   r   r   c                    t        dgdz  |d      }|d   j                         }|j                  d      }|j                  | |||      }|j	                         r4t        dgdz  dt
        j                  dt
        j                  d	gd      }	nt        dgdz  g d
d      }	|	j                  d      }
|
j                  | |||      }t        j                  ||       y )Nr      rr   rs   r?   r   r   r%   r   )r   r   r%   r   r   )	r   isnar   r   anyr-   nanr8   r~   )rank_methodru   r   r,   rF   r   maskr   resdf2r   alts               r   test_rank_object_dtyper     s     
E7Q;t4	5Be9>>D	E	B
''	YTW'
XC xxz!Q26614MNO!ODE
++e
C
((i9#  C #s#r_   )Tbadr   r   c                     t        dgdz  |d      }d}t        j                  t        |      5  |j	                  d      j                  | |||       d d d        y # 1 sw Y   y xY w)Nr   r   rr   z3na_option must be one of 'keep', 'top', or 'bottom'r   r?   r   )r   r   r   
ValueErrorr   r   )r   ru   r   r,   rF   r   r   s          r   test_rank_naoption_raisesr     sf     
E7Q;t4	5B
?C	z	- 



5)yc 	 	

 
 
s   %AA'c                     d} t        g ddt        j                  dgd      }|j                  |       j                  j                  d      }t        dt        j                  dgd	
      }t        j                  ||       |j                  |       j                  d      }t        d	dt        j                  dgi      }t        j                  ||       y )NA)r   r   r   rf   rb   r   BTr+   r   r   name)
r   r-   r   r   r   r   r   r8   r9   r~   )columnr   r>   rA   s       r   test_rank_empty_groupr     s    F	#rvvs);<	=BZZ!!&&4&0FsBFFC(s3H68,ZZ$$$.F#RVVS123H&(+r_   z"input_key,input_value,output_value)r   r   r%   r%   )r   r%   r   r%   )r   rf   r   rf   r   r   r   r%   c                     t        | |d      }|j                  d      j                  dd      }t        d|i      }t        j                  ||       y )Nr   r   rn   Trt   r,   r   r   )	input_keyinput_valueoutput_valuer   r>   rA   s         r   test_rank_zero_divr     sO     
5	6BZZ_!!d!;F#|,-H&(+r_   c            
      "   t        g dt        j                  t        j                        j                  t        j                  t        j                        j
                  t        j                  t        j                        j                  gt        t        ddd      t        gd      } | j                  d      j                         }t        g dt        j                  dt        j                  gd      }t        j                  ||       y )	Nr   i  r   )grpint_coldatetimeliker   )rf   rb   rf   rf   )r   r   )r   r-   iinfor   ri   rl   r   r   r   r   r   r8   r~   r   r>   rA   s      r   test_rank_min_intr   1  s    	"&&"&&"&&
 !(4A"6<	


B ZZ##%F#bffc2665JKH &(+r_   use_nanc                 X   | rt         j                  nd}t        ddgddgd|gd|ggddg      }|j                  dg      d   j	                  dd	
      }| r.t        ddt         j                  t         j                  gd      }nt        g dd      }t        j                  ||       y )Nr   r   r%   grouprs   rv   rn   Tr   r   r   )ro   rp   r   r   )r-   r   r   r   r   r   r8   r9   )r   
fill_valuer   r>   rA   s        r   .test_rank_pct_equal_values_on_group_transitionr   G  s     #J	GG
O		
 % 
B ZZ	"5).. / F 32662662?.U;68,r_   c                     t        dddt        j                  gddt        j                  dd      gdz  	      } | j                  | j                  d
g      j                  j                  dd      }t        dddt        j                  gt        j                  dd      gdz  d      }t        j                  ||       y )Nrf   rb   rj   )r   r'   20170101z
US/EasternrT   r   )r7   r   T)ru   r,   r'   )r7   r   )r   r-   r   r   	Timestampr   r7   r'   r   r   r8   r9   r   s      r   test_non_unique_indexr   `  s    	Cbff%4||J<89A=
B ZZ3(..33d3MF	c3||J<89A=H
 68,r_   c                     t        j                  dddt        j                  ddgd      } t        j                  dddt        j                  d	d
gd      }t	        g d| |d      }|j                  d      }|j                         }|j                  t              j                  d      j                         }t        j                  ||       y )Nr   r   cTr	   r   r%   r   r   r   )r   r   r   r   r   r   )col1col2col3r   )r   r   r-   r   r   r   r   r   r/   r8   r~   )r   cat2r   r   r   rA   s         r   test_rank_categoricalr   o  s    
..#sCc:D
IC>>1aBFFAq14@D	.TJ	KB	F	B
'')Cyy ((0557H#x(r_   c                     t        dd gid      }|j                  dd      d   j                  d|       }t        dgd|j                  	      }t        j                  ||       y )
Nr\   r   r!   F)dropnari   )rt   r   rf   )r"   r   )r   r   r   r   r   r8   r9   )r   r   r>   rA   s       r   test_groupby_op_with_nullablesr   }  sa     
C$=		2BZZEZ*3/44EY4WFse96;;?H68,r_   )$r   numpyr-   r   pandasr   r   r   r   r   pandas._testing_testingr8   r   rB   markparametrizer.   r   	to_periodr   infr   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   s   0r   <module>r      s        "-> 5'E6?!;<
 X 	. BLL&BLL&BLL&BLL&BLL&	
 BLL,7BLL,7BLL,7BLL,7BLL,7	
 BLL&a8BLL&a8BLL&a8BLL&a8BLL&a8	
 BLL&005BLL&005BLL&005BLL&005BLL&005	
-	!D 	I  %L #	D%!:;	D$ 9:	E5";<	E4!:;	e67	d56	u78	t67	e67	d56	u78	t67	$89	$78	% 9:	%89	$89	$UV	% 9:	%VW)2*3M% =@* 5'E6?!;<
rvvgwRVVRVVRVVDE )	D&3RVVQS"IJ	D%!DE	D($GH	E6Cbffac#JK	E5"EF	E8%HI	fsCbffc3GH	e@A	h CD	vS"&&#rvvsCHI	uAB	x!DE	fsCbffc3GH	e@A	h CD	vS"&&#rvvsCHI	uAB	x!DE	$c2663S IJ	$BC	$"EF	%#sBFFCc!JK	% CD	%#FG	$c2663S IJ	$BC	$"EF	%#sBFFCc!JK	% CD	%#FG="F	*G" =N	* 5'E6?!;<
 ( 	!Q1a8F BLL&BLL&FFBLL&BLL&BLL&FFFF		
 BLL,7BLL,7FFBLL,7BLL,7BLL,7FFFF		
 BLL&a8BLL&a8FFBLL&a8BLL&a8BLL&a8FFFF		
 BLL&005BLL&005FFBLL&005BLL&005BLL&005FFFF		
?)	-\ 	a  1d -y#rvvsCbffbff=	
y #rvvsCbffbff=	
y  #rvvsCbffbff=	
y. #rvvsCbffbff=	
-y: 
fec3S#rvvrvv%VW;y< 
fdS#rvvsCbffbff$UV=y@ #rvvsCbffbff=	
?yL 
vtc3S#rvvrvv%VWMyN 
fec3S#rvvrvv%VWOyP 
fdS#rvvsCbffbff$UVQyT #rvvsCbffbff=	
Sy` 
vtc3S#rvvrvv%VWayd #rvvsCbffbff=	
cyr #rvvsCbffbff=	
qy@ #rvvsCbffbff=	
yN #rvvsCbffbff=	
My\ #rvvsCbffbff=	
[yj 		
iyJ #rvvsCbffbff=	
IyX 		
Wyv 
D(E+STwyz ?	
yyF 
E8U,TUGyJ =	
IyV 
h'OPWyZ ?	
Yyf 
x(PQgyj @	
iyv 
h'OPwyx 
h&VWyyz 
x(PQ{y~ =	
}yJ 
$%)QRKyN >	
MyZ 
%5*RS[y^ >	
]yj 
$%)QRkyl 
$$(TUmyn 
%5*RSoyp 
%4)UVqy|z*{|e1 =`*" 12T;T4UV** I 4-0* 1*  &?@u.
05"&&%QV2WX$ / A
$* &67u.
+	rvvu-	
BFFArvvq!
 / 8
, (
Q!Q#s$	|%9:	1a(3S"&&*AB	Q266NS#rvv$67	,,,, T5M2- 3-0-) uh&78- 9-wDs   %~A~