
    .i"              	       |   d dl Z d dlZd dlZd dlZd dlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d Zd Zd Zd Zd	 Zd
 Z d Z!d Z"d Z#ejH                  jK                  dg d      d        Z&ejH                  jK                  dg d e' e(d            g      d        Z)ejH                  jK                  dg dg df e' e(d            g dfg      d        Z*ejH                  jK                  dddidfi dfddidfddidfg      d        Z+ejH                  jK                  dg d       ejH                  jK                  d!d"d#g      ejH                  jK                  ddd$g      d%                      Z,ejH                  jK                  d& ed'e
d(g       ed)e
d*g      gd+ ,      d-        Z-ejH                  jK                  d.d ej\                  d d"d/      g      d0        Z/ejH                  jK                  d1 ed2d3       eg d4      g ed'd3       eg d5      gg      d6        Z0ejH                  jK                  d.d7d8g      ejH                  jK                  d9eejb                  fejd                  ejf                  fe'ejh                  fg      d:               Z5ejH                  jK                  d;g d<      d=        Z6ejH                  jK                  d>g d?      ejH                  jK                  d;g d@      ejH                  jK                  dAg dB      dC                      Z7y)D    N)CategoricalDatetimeIndexIntervalIntervalIndexNaTSeries	TimedeltaTimedeltaIndex	Timestampcut
date_rangeisnaqcuttimedelta_range)CategoricalDtype)Dayc                     t         j                  j                  d      j                  d      } t	        | dd      \  }}t        j
                  | g d      }|j                  j                  j                  }t        j                  ||d d d	      sJ |j                  j                  j                  }t        j                  ||d
d  d	      sJ t        | |d      }t        j                  ||       y )N        Tretbinsr   g      ?g      ?g      ?      ?g{Gz?)atol   )include_lowest)nprandomdefault_rngstandard_normalr   quantile
categoriesleftvaluesallcloserightr   tmassert_categorical_equal)arrlabels_ex_binsresult	ex_levelss         \/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/reshape/test_qcut.py	test_qcutr2      s    
))


"
2
24
8C S!T*IFAkk#89G##**F;;vws|$777$$++F;;vwqr{666C6I	2    c                      t         j                  j                  d      j                  d      } t	        | dd      }t        t        j                  |            dk(  sJ y )Nr   r   
   Fr,   )r   r    r!   r"   r   lenunique)r+   factors     r1   test_qcut_boundsr:   /   sK    
))


"
2
24
8C#r%(Fryy !R'''r3   c                      t         j                  j                  d      j                  d      } t	        | g d      }t	        | d      }t        j                  ||       y )Nr   d   r   r   )r   r    r!   r"   r   r)   r*   )r+   r9   expecteds      r1   test_qcut_specify_quantilesr>   6   sI    
))


"
2
23
7C#01FC|H1r3   c                      t        j                  t        d      5  t        g dd       d d d        y # 1 sw Y   y xY w)Nzedges.*uniquematch)
r   r   r   r   r   r   r   r   r   r      )pytestraises
ValueErrorr    r3   r1   test_qcut_all_bins_samerG   >   s0    	z	9 0+Q/0 0 0s   4=c            	          t        j                  d      } t        | d      }t        t	        dd      t	        dd      t	        dd      t	        dd      g      }t        j                  |j                  |       y )Nr5   r   MbPg      @g      @g      @	   )r   aranger   r   r   r)   assert_index_equalr$   )r&   iir0   s      r1   test_qcut_include_lowestrN   C   sg    YYr]F	faBVT"T3S$T1		
I "--3r3   c                      t         j                  j                  d      j                  d      } t         j                  | d d t        | d      }t        |d d       j                         sJ y )Nr   r<      r   )r   r    r!   r"   nanr   r   all)r+   r/   s     r1   test_qcut_nasrS   R   sX    
))


"
2
23
7CvvCH#q\Fs  """r3   c                      t        ddgd      } t        dd      t        dd      g}t        |d      }t        j                  | |       y )Nr   r   rI   r   Tordered)r   r   r   r)   r*   )r/   	intervalsr=   s      r1   test_qcut_indexrX   Z   sD    1a&!_F&!$hq!n5I9d3H1r3   c                 L    | t         j                  j                  ddd            }t        j                  |      }t        |d      }|j                  j                  }|j                  j                  }||k  j                         sJ |dd  |d d k  j                         sJ y )Nreshapedatazcut_data.csvrP   r   r   )
ospathjoinr   loadtxtr   r$   r%   r(   rR   )datapathcut_filer+   r/   startsendss         r1   test_qcut_binning_issuesrd   b   s    YGHH
**X
C#r]F##F""DTM   12J$s)#((***r3   c                  <   t        g d      } t        | g d      }t        j                  t	        dd      t	        dd      t	        dd      g      }t        |j                  g d            j                  t        d	            }t        j                  ||       y )
N)	r   r   r   rB   r               )r   gZd;O?gZd;O?r   rI   gZd;O@gZd;O@ri   )	r   r   r   r   r   r   r   r   r   TrU   )
r   r   r   arrayr   takeastyper   r)   assert_series_equal)serres
exp_levelsexps       r1   test_qcut_return_intervalsrr   n   s    
,
-C
s(
)C	&%	 (5%"8(5!:LMJ !<=
>
E
E&C 3$r3   r,   )foor   Tc                     t        d      }d}t        j                  t        |      5  t	        |d|        d d d        y # 1 sw Y   y xY w)Nrf   zJBin labels must either be False, None or passed in as a list-like argumentr@   r   r6   rangerC   rD   rE   r   r,   r&   msgs      r1   test_qcut_incorrect_labelsry   {   sA     1XF
VC	z	- 'VQv&' ' '   AA
)abcrB   c                     t        d      }d}t        j                  t        |      5  t	        |d|        d d d        y # 1 sw Y   y xY w)Nr5   z9Bin labels must be one fewer than the number of bin edgesr@   r   r6   ru   rw   s      r1   test_qcut_wrong_length_labelsr      sA     2YF
EC	z	- 'VQv&' ' 'rz   zlabels, expected)r   r   r   c                 |    t        d      }t        |d|       }t        |d      }t        j                  ||       y )NrB   r6   TrU   )rv   r   r   r)   r*   )r,   r=   r&   r/   s       r1   test_qcut_list_like_labelsr      s7     1XF&!F+F8T2H1r3   z
kwargs,msg
duplicatesdropzBin edges must be uniqueraisers   z(invalid value for 'duplicates' parameterc                 (   g d}|2t        j                  t        |      5  t        |dfi |  d d d        y t        |dfi | }t	        t        dd      t        dd      g      }t        j                  |j                  |       y # 1 sw Y   y xY w)N)r   r   r   r   r   r   rB   r@   rB   rI   r   )	rC   rD   rE   r   r   r   r)   rL   r$   )kwargsrx   r&   r/   r=   s        r1   test_qcut_duplicates_binr      s     #F
]]:S1 	&%f%	& 	& fa*6* (61"5x1~!FG
f//:	& 	&s   BBzdata,start,end))      "@gsh|!@r   )        rI   r   )      "gn "r   lengthr   r   Fc                 ,   t        | g|z        }t        |d|      }|@t        t        ||      g|z  d      }t        |      j	                  t        d            }nt        dg|z  t        j                        }t        j                  ||       y )	Nr   r6   r(   )closedTrU   r   dtype)
r   r   r   r   rl   r   r   intpr)   rm   )	r[   startendr   r,   rn   r/   rW   r=   s	            r1   test_single_quantiler      s     $&
!C#q(F~!8E3#7"86"A'R	)$++,<T,JK1#,bgg668,r3   rn   2018010120180103z0 days2 daysc                 ,    t        | j                        S )N)strr   )xs    r1   <lambda>r      s    #agg, r3   )idsc                    t        |       } | j                  j                  |      } t        d|      j                  |      }t        | d   |z
  t        j
                  | d   t               z
  g| j                        }t        | d   t               z
  t        j
                  | d   g| j                        }t        j                  ||      }t        t        |d            }t        | d      }t        j                  ||       y )Nr   )unitr   r   r   TrU   )r   dtas_unitr	   r   rQ   r   r   r   from_arraysr   r   r)   rm   )rn   r   tdr%   r(   rW   r=   r/   s           r1   test_qcut_natr      s     +C
&&..
C	14	 	(	(	.B3q6B;A7syyIDCFSUNBFFCF3399EE))$6Ik)T:;H#q\F68,r3   binsr   c                    d}t        t        dd|d            }t        ||       }t        t        t	        t        d|      t        d|            t	        t        d|      t        d	|            t	        t        d	|      t        d
|            g            j                  t        d            }t        j                  ||       y )Nz
US/Eastern20130101rB   ns)periodstzr   z2012-12-31 23:59:59.999999999)r   z2013-01-01 16:00:00z2013-01-02 08:00:00z2013-01-03 00:00:00TrU   )
r   r   r   r   r   r   rl   r   r)   rm   )r   r   rn   r/   r=   s        r1   test_datetime_tz_qcutr      s     
B
JbtD
EC#t_F="E3; 3;3; 3;3;	
" fd+,# $ 68,r3   zarg,expected_bins1day)r   )z1 daysr   z3 days)z
2018-01-01z
2018-01-02z
2018-01-03c                     | j                  |      } |j                  |      }t        |       }t        |dd      \  }}t        j                  ||       y )Nr   Tr   )r   r   r   r)   rL   )argexpected_binsr   rn   r/   result_binss         r1   test_date_like_qcut_binsr      sN     ++d
C!))$/M
+CsAt4FK+}5r3   rg   rh   zbox, comparec                      |g ddz        } |g ddz        }t        || d      }t        || d      } |||       y )N)r   r   r   r   r   r5   )FTTFTr   )r   )r   )r   boxcomparedata_expecteddata_resultr=   r/   s          r1   test_qcut_bool_coercion_to_intr     sI     ",-M6;<KM4F;H+t7FFHr3   q)r   rf   r5   c                    t        j                  t        j                  d      |      }t         j                  |d d d<   t        ||       }t        |j                  t              |       }t        j                  ||       y )Nr<   r   r   )
pdrj   r   rK   NAr   rl   floatr)   r*   )r   any_numeric_ea_dtyper+   r/   r=   s        r1   test_qcut_nullable_integerr      s\    
((299S>)=
>CuuC!H#q\FCJJu%q)H1r3   scale)r   gUUUUUU?g      1@)rB   rh   rJ   	precision)r   rB      c                     | t        j                  |dz         z  j                  |      }t        |||      }t	        ||      D ]  \  }}||v rJ  y )Nr   )r   )r   rK   roundr   zip)r   r   r   r+   r/   valuebuckets          r1   test_qcut_containsr   +  sZ    
 299QU##
*
*9
5C#qI.FS&) vr3   )8r\   numpyr   rC   pandasr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   pandas._testing_testingr)   pandas.api.typesr   pandas.tseries.offsetsr   r2   r:   r>   rG   rN   rS   rX   rd   rr   markparametrizery   listrv   r   r   r   r   r   linspacer   r   rm   rj   r*   assert_equalr   r   r   rF   r3   r1   <module>r      s   	         - &3$(20
4#2	+
% #34' 5' OT%(^#DE' F' 	/*	eAh#22 
	&	'(
	 "<=
	 JK	
;
; S Aq6*D%=1- 2 +
- 	z3
34#x01 	  -- ![R[[Aq%9!:;- <-6  FA.9:	

 z1-DE	
	66 !Q(	''(	2../	r ) j)2 *2 "45i(j1 2 ) 6r3   