
    .iC                     h    d dl m Z mZ d dlZd dlZd dlmZmZ d dlm	Z	m
Z
mZ d dlmZ  G d d      Zy)    )datetime	timedeltaN)InfinityNegInfinity)	DataFrameIndexSeriesc                      e Zd Z eddddej
                  dddej
                  dg
      Z eeed      Z ej                  ddd	d
ej
                  d
ddej
                  dg
       ej                  ddddej
                  dddej
                  dg
       ej                  ddddej
                  dddej
                  dg
       ej                  ddddej
                  dddej
                  dg
       ej                  ddddej
                  dddej
                  dg
      dZ
d Zd Zd Zd Zd Zd Zej$                  j'                  dddg      d        Zej$                  j'                  dg d      d        Zej$                  j'                  dddg      ej$                  j'                  ddeg      d               Zej$                  j'                  dd g d!g d"g d#gfd$g d%g d&g d'gfd(g d!g d)g d*gfd+g d,g d-g d.gfd/g d%g d0g d*gfg      d1        Zej$                  j2                  d2        Zej$                  j'                  d3ej6                   d4d5d6d7d8dd9d:d;dd<ej6                  gd=fej6                   d4d5d6d7d>dd9d:d;dd<ej6                  gd?f ej8                  ej:                        j<                  ddd@ ej8                  ej:                        j>                  gdAf ej8                  ej@                        j<                  dBdddCdDdE ej8                  ej@                        j>                  gdFf e!       dGdHdIdJdK e"       gdLf e#dMdd       e#dMdd       e#dMdd      gdNfg      dO        Z$dP Z%dQ Z&ej$                  j'                  dRdSdTg dUfdSdVg dWfdXdTg dYfdXdVg dZfg      d[        Z'ej$                  j'                  dRdXdTg d\fdXdVg d\fdSdTg d]fdSdVg d]fg      d^        Z(ej$                  j'                  d_g d`g dadb edcg ddi e)dcgee      f      fdgg d`i e e*d      g h      fg      di        Z+dj Z,y)kTestRank               AB      ?g      @      @      @g       @         )averageminmaxfirstdensec                    t        j                  d      }t        j                  |j                  d d ddf<   t        j                  |j                  d d ddf<   t        j                  |j                  d d ddf<   t        j                  |j                  d d dd	f<   |j                         }|j                  d
      }t        j                  |j                        }|j                  t        j                        j                  }t        j                  |j                  d|      }t        j                  ||<   t        j                  |j                  d
|      }t        j                  ||<   t        j                  |j                  |       t        j                  |j                  |       t        t        j                  j!                  d      j#                  ddd      j%                  d            }	|	j                         }
|	j'                  t(              j                         }t        j*                  |
|       |	j                  d
      }
|	j'                  t(              j                  d
      }t        j*                  |
|       y )Nscipy.statsr   r   r   r   r   Cr   Dr   r   (   )size)
   r   )pytestimportorskipnpnanlocrankisnanvaluesfillnainfapply_along_axisrankdatatmassert_almost_equalr   randomdefault_rngintegersreshapeastypefloatassert_frame_equal)selffloat_framesp_statsranks0ranks1maskfvalsexp0exp1dfresultexps               b/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/frame/methods/test_rank.py	test_rankzTestRank.test_rank"   s   &&}5$&FF!S!$&FF!S!$&FF!S!$&FF!S!!!#!!!$xx**+""266*11""8#4#4a?VVT
""8#4#4a?VVT

v}}d3
v}}d3 II!!!$--a-<DDWM
 ii##%
fc*ii##A&
fc*    c                 
   t        g dg dg      }t        g dg dg      dz  }|j                  dd      }t        j                  ||       t        g dg dg      }|j                  d      d	z  }|j                  dd      }t        j                  ||       t        g d
g dg      }t        g dg dg      }|j                  dd      }t        j                  ||       t        g dg dg      }|j                  dd      }t        j                  ||       t        dt        j
                  dgg dg      }t        d	t        j
                  dgg dg      }|j                  dd      }t        j                  ||       t        d	t        j
                  dgg dg      }|j                  dd      }t        j                  ||       t        ddd      t        j
                  t        ddd      gt        ddd      t        ddd      t        ddd      gg}t        |      }t        d	t        j
                  dgg dg      }|j                  ddd      }t        j                  ||       t        dt        j
                  d	gg dg      }|j                  ddd      }t        j                  ||       t        dg di      }t        dg di      }t        j                  |j                         |       y )N)r   r   r   )r   r   r         ?      @       @rM   r   Tpctr   rN   )bca)rS   rR   rQ   rN   rM   rL   Fnumeric_only)rN   r   rL   )r   r   r   rQ   rS   rL   )rL   rL   rN     r   r   i  r   )rV   	ascendingrN   rL   rM   )#B;rZ   r%   gDcLg_QPgKH9)r   rL   r   g      @g      @r   rN   )r   r+   r2   r:   r(   r)   r   )r;   rD   expectedrE   datarF   s         rG   
test_rank2zTestRank.test_rank2F   s   	9-.oy9:S@%
fh/	9-.771:#%
fh/9:oy9:/
fh/o{;</
fh/bffc*O<=sBFFC0/BC/
fh/sBFFC0/BC/
fh/ dAq!2668D!Q+?@dAq!8D!Q#7$19MN
 t_ sBFFC0/BC$?
fh/sBFFC0/BC%@
fh/NOPABC
bggi-rI   c                     t        t        j                  j                  d      j	                  d      d      }|j                         }|j                          |}t        j                  ||       y )Nr   )r%   r   float64dtype)	r   r(   r4   r5   standard_normalcopyr+   r2   r:   r;   rD   r\   rE   s       rG   test_rank_does_not_mutatez"TestRank.test_rank_does_not_mutatew   sX     II!!!$44W=Y
 779
	
fh/rI   c                     t        j                         |d<   t        dd      |d<   |j                  d       t	        j
                  t        d      5  |j                  d	       d d d        y # 1 sw Y   y xY w)
Nr   r   )dayssecondsr   FrU   z"not supported between instances ofmatchaxis)r   nowr   r+   r&   raises	TypeError)r;   float_string_frames     rG   test_rank_mixed_framezTestRank.test_rank_mixed_frame   sk    )1:&*3A*F;'U3]]9,PQ 	,###+	, 	, 	,s   A11A:c                 
   t        j                  d      }t        j                  |j                  d d ddf<   t        j                  |j                  d d ddf<   t        j                  |j                  d d ddf<   t        j                  |j                  d d dd	f<   |j                  d
      }|j                  dd
      }|j                  t        j                        j                  }t        j                  |j                  d|      }t        j                  |j                  d|      }t        j                  |j                  |       t        j                  |j                  |       |j                  d      }|j                  dd      }|j                  |j                         dz
  j                               j                  }|j                  }	|	j                  |	j                         dz
  j                               j                  }	|	j                  t        j                        j                  }	t        j                  |j                  d|      }t        j                  |j                  d|	      }t        j                  |j                  |       t        j                  |j                  |       |j                  dd      }|j                  ddd      }|j                  t        j                        j                  }t        j                  |j                  d|       }t        j                  |j                  d|       }t        j                  |j                  |       t        j                  |j                  |       |j                  d
d      }|j                  dd
d      }|j                  |j                         dz
  j                               j                  }|j                  }	|	j                  |	j                         dz
  j                               j                  }	|	j                  t        j                        j                  }	t        j                  |j                  d|       }t        j                  |j                  d|	       }t        j                   |j                  |       t        j                   |j                  |       d}
t        j"                  t$        |
      5  |j                  dd       d d d        t        j"                  t$        |
      5  |j                  dd       d d d        y # 1 sw Y   AxY w# 1 sw Y   y xY w)Nr    r   r   r   r   r   r!   r   r"   bottom)	na_optionr   r   topF)ru   rX   z3na_option must be one of 'keep', 'top', or 'bottom'rj   badT)r&   r'   r(   r)   r*   r+   r.   r/   r-   r0   r1   r2   r3   r   to_dictTassert_numpy_array_equalro   
ValueError)r;   r<   r=   r>   r?   rA   rB   rC   fval0fval1msgs              rG   test_rank_na_optionzTestRank.test_rank_na_option   s7   &&}5$&FF!S!$&FF!S!$&FF!S!$&FF!S! !!H!5!!!x!8""266*11""8#4#4a?""8#4#4a?
v}}d3
v}}d3 !!E!2!!!u!5""KOO$5$9#B#B#DELLeiikAo6689;;RVV$++""8#4#4a?""8#4#4a?
v}}d3
v}}d3
 !!EU!C!!!u!F""266*11""8#4#4a%@""8#4#4a%@
v}}d3
v}}d3
 !!H!F!!!x5!I""KOO$5$9#B#B#DELLeiikAo6689;;RVV$++""8#4#4a%@""8#4#4a%@
##FMM48
##FMM48 D]]:S1 	?u>	? ]]:S1 	>tu=	> 	>		? 	?	> 	>s   U:U#U #U,c                     t        ddgddgg      }t        j                  |j                  d      |j                  d             t        j                  |j                  d      |j                  d             y )	Nr   r   r   r   r   rl   indexcolumns)r   r2   r:   r+   )r;   rD   s     rG   test_rank_axiszTestRank.test_rank_axis   sc    AA'(
bgg1gorwwGw/DE
bgg1gorwwIw/FGrI   axr   c                 p   t        j                  d      }t        j                  j	                  d      j                  ddd      }|dz
  dz  }t        |j                  d         D cg c]  }t        t        d      |z
         }}||d	z   |d
z  fD ]  }t        ||      }|j                  ||      }	t        j                  |j                  |||dk7  r|nd      }
|
j                  t        j                        }
t        |
|      j                  d      }t!        j"                  |	|        y c c}w )Nr    r   r      )d      g      $@r   zg    .Agư>r   )rm   methodr   ordinalr`   )r&   r'   r(   r4   r5   r6   rangeshapechrordr   r+   r0   r1   r8   r`   r2   r:   )r;   r   rank_methodr=   xsicolsvalsrD   rE   sprankr\   s               rG   test_rank_methods_framez TestRank.test_rank_methods_frame   s   &&}5YY""1%..q"i@4i4+0!+=>aCHqL!>>c29- 	4D4.BWW"[W9F((!!*g59	F ]]2::.F 6==iHH!!&(3	4 ?s   (D3rb   )Of8i8c                     d|v r*| j                   j                         j                  |      }n| j                   j                  |      }|j                  d      }|j	                         |z
  j                         }t        j                  ||       |j	                         |z
  j                  |      }|dk7  r*|j                  |dd      }t        j                  ||       |j                  |dd      }t        j                  ||       y )Nr   F)rX   r   r   T)r   rX   rV   )rD   dropnar8   r+   r   r2   r:   )r;   r   rb   rD   resr\   res2res3s           rG   test_rank_descendingzTestRank.test_rank_descending   s    %<!((/B&Bggg&FFHrM'')
c8,FFHrM''{';C<77+T7RD!!$1wwkUwO
dH-rI   rm   Nc                     | j                   }dfd	}||n|j                  |      } ||| j                     |       y )Nc                     t        ||d      }|dk(  r| j                  } |j                  }| j                  |      }t        j                  ||       y )Nr   r   r   rm   )r   ry   r+   r2   r:   )rD   r\   r   rm   exp_dfrE   r   s         rG   _check2dz3TestRank.test_rank_2d_tie_methods.<locals>._check2d  sM    XH=>FqyTTWWKdW;F!!&&1rI   r   )r   r   )rD   r8   results)r;   r   rm   rb   rD   r   frames    `     rG   test_rank_2d_tie_methodsz!TestRank.test_rank_2d_tie_methods  s@     WW	2 m5)9[1+DQrI   zrank_method,expr   )rL   rL   rL   )rL         ?UUUUUU?)rL   r   UUUUUU?r   )r   rL   rL   )r   r   r   )r   r   r   r   )rL   r   r   )rL   r   r   r   )r   rL   rL   )r   r   r   )r   r   r   r   )r   r   r   c                     t        g dg dg dg      }|j                  |d      }t        |      }t        j                  ||       y )N)  B   r   )r   A   r   )r   r   r   T)r   rP   )r   r+   r2   r:   )r;   r   rF   rD   rE   r\   s         rG   test_rank_pct_truezTestRank.test_rank_pct_true  sA    B }mDE6S>
fh/rI   c                     t        t        j                  d      t        j                  ddd      d      }|j                  d      j	                         }|dk(  j                         sJ y )Ni  r   r   TrO   r   )r   r(   aranger+   r   all)r;   rD   rE   s      rG   test_pct_max_many_rowszTestRank.test_pct_max_many_rows?  sY     RYYy1		)QPR8STUT"&&(!  """rI   zcontents,dtypeir   g#Bǻg}gJzgWw'&l7rZ   g|=r#   r`   gj7֖float32r   uint8ii'  i g    _Bint641r   BABar!   objectrW   
datetime64c                    t         j                  t         j                  d t        j                  d      d}t        j                  ||      }t        j                  t	        t        |            d      dz   }||v r||   }t         j                  j                  d      j                  t	        t        |            d      }t        j                  |||      }t        j                  ||t         j                        }t         j                  j                  d      j                  t        |            }	 |||	         }
 |||	   d      }|
j                         }t        j                  ||       y )Nnat)r`   r   r   r   ra   r`   rL   r   r   )r(   r)   r   arrayr   lenr4   r5   choiceinsertpermutationr+   r2   assert_equal)r;   contentsrb   frame_or_seriesdtype_na_mapr-   	exp_orderna_valuenan_indicesrandom_orderobjr\   rE   s                rG   test_rank_inf_and_nanzTestRank.test_rank_inf_and_nanF  s   | vvvv--.	
 (%0HHU3v;/yACG	L #E*H))//299%F:LaPKYYv{H=F		)["&&AI yy,,Q/;;CKHf\23"9\#:)L
)rI   c           
         g d}g d}ddt         j                  dddt         j                  t         j                  dt         j                   g
}t        ||d|d	      }|j	                         }|j                         }|d
   j	                         |d
<   |d   j	                         |d<   t        j                  ||       y )N)
r   r   r   r   r   r   r   r   	   r%   )
r   r   r   r   r   r   r   r   r   r   r   r   r   r   )col1col2r   )r]   r   rb   r   r   )r(   r)   r/   r   r+   rd   r2   r:   )r;   r   r   r   rD   	df_resultseries_results          rG   "test_df_series_inf_nan_consistencyz+TestRank.test_df_series_inf_nan_consistency  s    /-1bffaArvvrvvq266'B 
 GGI		 "6
 1f "6
 1f
i7rI   c                     t        dt        j                   dt        j                  gi      }t        dg di      }|j                         }t	        j
                  ||       y )NrS   r   rL   rN   rM   )r   r(   r/   r+   r2   r:   re   s       rG   test_rank_both_infzTestRank.test_rank_both_inf  sL    rvvgq"&&123c?34
fh/rI   zna_option,ascending,expectedrv   T)rM   rL   rN   FrY   rt   rT   rK   c                      |t         j                  t         j                  t         j                   g      }|j                  |||      } ||      }t	        j
                  ||       y )Nr   ru   rX   )r(   r/   r)   r+   r2   r   )r;   r   r   ru   rX   r\   r   rE   s           rG   test_rank_inf_nans_na_optionz%TestRank.test_rank_inf_nans_na_option  sO     rvvrvvw78	YW"8,
)rI   )rL   rN         @rM   )rN   rM   rL   r   c                 |     |g d      }|j                  d||      } ||      }t        j                  ||       y )Nfoor   Nr   r   r   )r+   r2   r   )r;   r   ru   rX   r\   r   rE   s          rG   test_rank_object_firstzTestRank.test_rank_object_first  s;     9:IS"8,
)rI   zdata,expected)r   r   rS   )r   r   r   )rS   rQ   rQ   r   ra   r   rS   )r   r   c           	      :   t        |t        t        |j                               t                    }t        j                  t        d      5  |j                          d d d        |j                  d      }t        j                  ||       y # 1 sw Y   2xY w)Nra   r   z&'<' not supported between instances ofrj   TrU   )r   r   listkeysr   r&   ro   rp   r+   r2   r:   )r;   r]   r\   rD   rE   s        rG   test_rank_mixed_axis_zeroz"TestRank.test_rank_mixed_axis_zero  so     tU4		+<F%KL]]9,TU 	GGI	d+
fh/	 	s   BBc                     t        g d|      }|j                  d      }|dk(  rdnd}|j                  dk(  rd}t        g d	|      }t        j                  ||       y )
Nr   ra   r   r   zstring[pyarrow]Float64r`   python)r   r   Nr   )r	   r+   storager2   assert_series_equal)r;   string_dtype_no_objectr   rE   	exp_dtyper\   s         rG   test_rank_string_dtypezTestRank.test_rank_string_dtype  sc    08NO)/3DDI) 	 "))X5!I/;
vx0rI   )-__name__
__module____qualname__r	   r(   r)   sr   rD   r   r   rH   r^   rf   rr   r   r   r&   markparametrizer   r   r   r   r   
single_cpur   r/   iinfor   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    rI   rG   r   r      s;   1aBFFAq!RVVQ78A	#	$B 288S#sCc3PSTUrxxAq!RVVQ1bffa@ArxxAq!RVVQ1bffa@A1aArvvq!QBC1aArvvq!QBCG"+H/.b	0,J>XH [[TAq6*4 +4* [[W&78. 9.& [[VaV,[[WtVn5R 6 -R  [[(;=PQR'//  "9;RS
 $&=?VW
 '//%	
<0=<0 [[# # [[ VVGFF !( VVGFF !$ bhhrxx $$aC"((1C1G1GH'R BHHRXX&**BHHRXX&**	  mS#tT3
CXN$1%xa';XdAq=QRi8	
;x*y;x*48*0 [[&D/*E?+t_-uo.		
** [[&t12u23D./E/0		
** [[ "	230%V:TU ;q2!FG	
	0	01rI   r   )r   r   numpyr(   r&   pandas._libs.algosr   r   pandasr   r   r	   pandas._testing_testingr2   r   r   rI   rG   <module>r      s2   
  
 
 ^1 ^1rI   