
    .i*<                     F   d dl Zd dlZd dlZd dlmZmZ d dlmZ	 ej                  j                  dg d      ej                  j                  dg dg dfg dg d	fg dg d	fg d
g dfdej                  dej                  dgdej                  dej                  dgfej                  dej                  dej                  gej                  dej                  dej                  gf ej                  ddd       ej                  ddd      ddd   f ej                  ddd      j                  d       ej                  ddd      ddd   j                  d      fej                  gdz  ej                  gdz  fg	      ej                  j                  dg d      d                      Zd Zd Zd Zd Zej                  j                  ddd g      ej                  j                  d!d gd d"gg      ej                  j                  dd#d$gg      d%                      Zd& Zd' Zd( Zej                  j                  d)dej                  dej                  g ed*      ddgd+dgfdej                  ddg ed*      ddgd+d,gfd-d.d.ej                  g ed*      d-d.gd d/gfd gd0gd gd1gfg g  ej2                  g d23       ej2                  g d23      fg      d4        Zej                  j                  d5 ej2                  g d6d7z  d83       ej2                  g d9d7z  d:3      g      ej                  j                  dd#g d;g      d<               Zej                  j                  dd#g d;g      ej                  j                  d=d>d?g      d@               ZdA ZdB Zej                  j                  dCg dD      dE        Zej                  j                  ddFdGg      dH        Z ej                  j                  dIdJdKg      dL        Z!dM Z"dN Z#dO Z$dP Z%y)Q    N)	DataFrameIndexinterpolation)linearlowerhighernearestmidpointza_vals,b_vals)               )r   r   r   r   r   )r   r   r   r   )r   r   r   r   )      ?       @      @      @      @)r   r   r   r   r   r   r   r   r   r   z1/1/18Dr   )freqperiodssq)r         ?      ?      ?r   c                    t        j                  t        j                  |      t        j                  |      g      }t        j                  |      j                  ||       }t        j                  |      j                  ||       }t	        dgt        |      z  dgt        |      z  z   |d      }t	        ||gdgt        ddgd            }|j                  j                  d	k(  rA|j                  j                  d
   j                  d	k(  r|j                  |j                        }|j                  d      j                  ||       }	t        j                  |	|       y )N)r   abkeyvalr#   r"   name)columnsindexMr   )pdconcatSeriesquantiler   lenr   dtypekinddtypesvaluesastypegroupbytmassert_frame_equal)
r   a_valsb_valsr   all_vals
a_expected
b_expecteddfexpectedresults
             h/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/groupby/methods/test_quantile.pytest_quantiler?      s%   < yy"))F+RYYv->?@H6"++A]+KJ6"++A]+KJ	C53v;.#V1DDXV	WB	Z 5'SzPU9VH ~~c!hoo&<&<Q&?&D&D&K ??8>>2ZZ'''GF&(+    c                     t        dg di      } t        j                  g dt        j                        }| j	                  |      j                  dg      }t        j                  j                  ddgdgg      }t        dddgi|	      }t        j                  ||       t        g d
g dd      } t        j                  j                  ddgddgg      }t        j                  g dt        j                        }| j	                  |      j                  ddg      }t        g dg dd|	      }t        j                  ||       y )NAr   r   r   r   r   )r   r   r   r   r   r.   r   r   r         @r'   )r   r   r   r   )r   r         rB   Br   )r   r   r   r   )r   r   g      @g      @)g      @g      @g      @g      @r   nparrayint64r3   r,   r)   
MultiIndexfrom_productr4   r5   )r;   r"   r=   r'   r<   s        r>   test_quantile_arrayrQ   =   s
   	C)	*B
((?"((
3CZZ_%%tf-FMM&&A'78E#d|,E:H&(+	L9	:BMM&&At'=>E
((<rxx
0CZZ_%%tTl3F&-EFeH &(+r@   c                     t         j                  j                  d      j                  dddt         j                        } t        | t        d            }|j                  d      j                  d	d
g      }t        g dg ddt        j                  j                  g dd	d
ggdd g            }t        j                  ||       y )Nr   r   r   )
   r   )sizer.   ABCr&   rB   333333?ffffff?)
r   r   gffffff@g@rW   rX   g	@r   rW   rX   )
r   r   gffffff?g@rW   rX   g@r   333333?gffffff@)rJ   CrC   namesrF   )rL   randomdefault_rngintegersrN   r   listr3   r,   r)   rO   rP   r4   r5   )arrr;   r=   r<   s       r>   test_quantile_array2rb   R   s    
))


"
+
+Aqwbhh
+
OC	3U	,BZZ_%%sCj1FCR	
 mm((sCj)#t ) 
H &(+r@   c                  :   t        g dg dd      } t        j                  g dt        j                        }| j	                  |d      j                  g d      }t        g d	g d
dt        j                  j                  ddgg dg            }t        j                  ||       | j	                  |d      j                  ddg      }t        g dg ddt        j                  j                  ddgddgg            }t        j                  ||       y )Nr   r   r   r   r   r   rI   )r   r   r   rD   F)sort)r   r   r   )r   r         ?r   r   r   )      @r         @r   r   r   r   r   rF   r   r   )rg   r   r   r   )ri   rh   r   r   rK   )r;   r"   r=   r<   s       r>   test_quantile_array_no_sortrj   c   s    	3	4B
((9BHH
-CZZ%Z(112CDF,3QRmm((1a&2C)DEH &(+ZZ%Z(114,?F")=>mm((1a&4,)?@H &(+r@   c                     t        g dg dg dg dd      } | j                  ddg      j                  dd	g      }t        j                  j                  g d
g d      }t        g dg dd|      }t        j                  ||       y )Nrd   re   )r   r   r   )r   r   r    )rB   rJ   cdrl   rm   r   r   ))r   r   r   )r   r   r   )r   r    r   )r   r    r   )rl   rm   Nr[   )r   r   r   r   )g      
@g      @r   r   rI   rF   )r   r3   r,   r)   rO   from_tuplesr4   r5   )r;   r=   r'   r<   s       r>   #test_quantile_array_multiple_levelsro   u   s    	ioOT
B ZZc
#,,dD\:FMM%%P & E $+AB%H &(+r@   
frame_size)r   r   )d   rS   r3   r   r   g333333?c           
      t   | \  }}t        t        j                  t        |      D cg c]  }||dz  gz   c}      t        |            }t        j                  t        |d            gt        |      z  |gz   }t        t        |d            D cg c]  }|D ]  }|  c}}gt        |      z  t        t        t        |                  t        |d      z  gz   }	t        j                  ||	g |d       }
t        t        |d            D cg c]$  }|D ]  }t        |      g|t        |      z
  z   & }}}t        |      D cg c]	  }||vs| }}t        ||
|      }|j                  |      j                  |      }t        j                  ||       y c c}w c c}}w c c}}w c c}w )Nr   rV   )levelscodesr\   r'   r&   )r   rL   rM   rangearangeminr-   r`   r)   rO   floatr3   r,   r4   r5   )rp   r3   r   nrowncol_r;   
idx_levelsx	idx_codesexpected_indexexpected_valuesexpected_columnsr<   r=   s                  r>   6test_groupby_quantile_with_arraylike_q_and_int_columnsr      s   
 JD$	288U4[ATQUG^ABERVK	XB))CaL)*S\9QC?J"3tQ<0<!<Q!<!<=GLU3q6]c$l*P I ]]2BG2BT2BN 5:#dA,4G/0QRLMq
dS\)**O  $);Ca!72BCC~7GH ZZ ))!,F&(+% B = Ds   F$F))F/	F5F5c                      t        ddgddgddggddg      } d}t        j                  t        |	      5  | j	                  d      j                          d d d        y # 1 sw Y   y xY w)
Nfoor   r    rl   r"   r#   rV   z:dtype '(object|str)' does not support operation 'quantile'match)r   pytestraises	TypeErrorr3   r,   )r;   msgs     r>   test_quantile_raisesr      sb    	UCL5#,=u~	VB
FC	y	, %


5""$% % %s    AA(c                  `   t        g dt        d      d      } | j                  g d      }t        j                  t
        d      5  |j                  d       d d d        t        j                  t
        d      5  |j                  d       d d d        y # 1 sw Y   ?xY w# 1 sw Y   y xY w)	N)r   r   r   r   r   r   rG   r   r    zGot '50.0' insteadr   2   zGot '-1.0' insteadr   )r   rv   r3   r   r   
ValueErrorr,   )r;   gs     r>   $test_quantile_out_of_bounds_q_raisesr      s    	+%(;	<B


%&A	z)=	> 	

2 
z)=	> 	

2   s   B=B$B!$B-c                      t        j                  dt         j                  dg      } t        | t	        d      d      }|j                  d      }t	        d      D ]  }|j                           y )Nr   r   r!   r"   rq   )rL   rM   nanr   rv   r3   r,   )datar;   grpr|   s       r>   /test_quantile_missing_group_values_no_segfaultsr      sZ    88S"&&#&'D	4a1	2B **U
C3Z r@   z$key, val, expected_key, expected_valr           rE   r   r    rg   *   g      E@float64rD   c                    t        | |d      }t        |t        |d      dg      }|j                  d      }|j                  d      }t	        j
                  ||       |j                         }t	        j
                  ||       y )Nr!   r"   r$   r#   ru   r   )r   r   r3   r,   r4   r5   )r"   r#   expected_keyexpected_valr;   r<   r   r=   s           r>   2test_quantile_missing_group_values_correct_resultsr      sv     
3s+	,BE,U;eWH **U
C\\#F&(+\\^F&(+r@   r1   )r   r   Nr   Int64)TFNbooleanr   r   r   c                 |   t        dgdz  dgdz  z   | d      }|j                  d      d   j                  |      }t        |t              r,t
        j                  j                  ddg|fdd g      }g d}nt        ddgd	      }d
g}t        j                  |dz  |dd      }t        j                  ||       y )Nr~   r   yr   r   r    r[   r   r$   r   r   Float64r'   r%   r.   )r   r3   r,   
isinstancer`   r)   rO   rP   r   r+   r4   assert_series_equal)r1   r   r;   r=   idxtrue_quantilesr<   s          r>   $test_groupby_quantile_nullable_arrayr      s     
#cUQY.V<	=BZZ_S!**1-F!Tmm((3*ad(L(S#JS)yy!+3S	RH68,r@   numeric_onlyTFc                    t        dgdgdgd      }|r]|j                  d      j                  | |      }|j                  d      dg   j                  |       }t        j                  ||       y d}t        j                  t        |	      5  |j                  d      j                  | |       d d d        y # 1 sw Y   y xY w)
Nr   r   r~   )r   r    rl   r   )r   r    z0dtype '.*' does not support operation 'quantile'r   )r   r3   r,   r4   r5   r   r   r   )r   r   r;   r=   r<   r   s         r>   -test_groupby_quantile_raises_on_invalid_dtyper      s     
!C5u5	6BC))!,)G::c?C5)2215
fh/@]]9C0 	CJJsO$$Q\$B	C 	C 	Cs   #B;;Cc                    t        j                  g |       j                  }t        |t        j                        rt        j
                  nt         j                  }t        ddgd|gd|       }|j                  d      d   j                  d      }t        dg| d	      }| d
v r| }nd }t        j                  dg||d      }t        j                  ||       |j                  d      d   j                  ddg      }t        j                  dgdz  t         j                  j                  |ddgfdd g      d|      }t        j                  ||       y )NrD   r   皙?r~   r   r~   r   r   r   )r.   r%   )Float32r   r.   r'   r%   r   r   r[   r   )r)   r+   r.   r   rL   r   NAr   r3   r,   r   r4   r   rO   rP   )any_float_dtyper.   itemr;   r=   	exp_indexexpected_dtyper<   s           r>   test_groupby_quantile_NA_floatr      s'   IIb066Erxx0266beeD	!QsDk2/	JBZZ_S!**3/Fse?=I00(yy#nICPH68,ZZ_S!**C;7Fyy		mm(()c4[)A#t(U	H 68,r@   c           	         t        ddgddgd|       }|j                  d      d   j                  d      }t        j                  d	gd
t        dgd|       d      }t        j                  ||       |j                  d      j                  d      }t        dd	id
t        dgd|             }t        j                  ||       y )Nr   r   r   r   rD   r~   r   r   rh   r   )r%   r.   r   r.   r'   )	r   r3   r,   r)   r+   r   r4   r   r5   )any_int_ea_dtyper;   r=   r<   s       r>   test_groupby_quantile_NA_intr     s    	!Qq!f-5E	FBZZ_S!**3/Fyy	QCc)9:	H 8V,ZZ_%%c*F	c
)5!3FV+WH &(+r@   zinterpolation, val1, val2))r   r   r   )r   r   r   )r	   r   r   c           
         t        g ddddt        j                  gd|      }|j                  d      j	                  dd	g| 
      }t        d||t        j                  t        j                  gi|t        j
                  j                  t        j                  g d|      g dgdd g            }t        j                  ||       y )Nr   r   r   r   r   r   r   r   rD   r   r   rX   r   r   r    r   r   r   r   )r   rX   r   rX   r[   r   
r   r)   r   r3   r,   rO   from_arraysr+   r4   r5   )r   val1val2any_numeric_ea_dtyper;   r=   r<   s          r>   )test_groupby_quantile_all_na_group_maskedr   -  s     
!Q255!12:N
B ZZ_%%c
-%PF	tT255"%%()"mm''YY|+?@BVW+ ( 
H &(+r@   r
   r   c           
         t        g ddddt        j                  gd|      }|j                  d      j	                  dd	g| 
      }|dk(  r|}nd}t        dddt        j                  t        j                  gi|t        j
                  j                  t        j                  g d|      g dgdd g            }t        j                  ||       y )Nr   r   r   r   r   rD   r   r   r   r   r   r   r    r   rE   r   )r   r   r   r   r[   r   r   )r   r   r;   r=   r   r<   s         r>   0test_groupby_quantile_all_na_group_masked_interpr   C  s    
 
!Q255!12:N
B ZZ_%%d=%QFy(-"	sC&'mm''		,.BC& + ( 

H &(+r@   r.   r   r   c                 H   t        ddgt        j                  gdz  d|       }|j                  d      d   j	                  d      }t        j
                  t        j                  g| t        dg|       d	      }d|j                  _        t        j                  ||       y )
Nr   r   r   rD   r~   r   r   r   r   )r   r)   r   r3   r,   r+   r   r'   r%   r4   r   )r.   r;   r=   r<   s       r>   "test_groupby_quantile_allNA_columnr   `  s     
!Qruugk2%	@BZZ_S!**3/Fyy	uE3%u$=CH HNN8V,r@   c                     t        j                  t        j                  d      d      j	                  d      } t        | g dd      }|j                  d      j                  d      }t        d	t        j                  d
      t        j                  d      git        ddgd            }t        j                  ||       y )Nr   r   )unitusr   )valuegroupr   gGz?r   z0 days 00:00:00.990000z0 days 00:00:02.990000r   r   r$   rF   )r)   to_timedeltarL   rw   as_unitr   r3   r,   	Timedeltar   r4   r5   )tdir;   r=   r<   s       r>   test_groupby_timedelta_quantiler   l  s    
//"))A,S
1
9
9$
?C	S<8	9BZZ ))$/F5656	
 QF)H &(+r@   c           
         t        j                  dddd|       j                  d      }t        |t	        t        dd            t	        t        dd	            d
      }|j                  d      j                  ddg      }t         j                  j                  |d d d   ddggd      }t        ddddddddddddg|      }t        j                  ||       y )Nz2020-04-19 00:00:001minrq   UTC)startr   r   tzr   1hr   e      )	timestampcategoryr   r   r   皙?c   )r   Nr[   g)@g333333\@)r   r   gH@gfffffb@g333333Q@ge@gW@gfffffh@rF   )r)   
date_rangefloorr   r`   rv   r3   r,   rO   rP   r4   r5   )r   dtir;   r=   mir<   s         r>   test_timestamp_groupby_quantiler   }  s    
--#&#%deDk  
U1c]+%S/*	

B ZZ$--sCj9F		#	#S2Yc
$;CV	#	WB....		
 H &(+r@   c                      t        j                  ddd      } t        j                  |       j                         j	                         }| j                  d      |d<   | j                  d      |d<   | | d	   z
  |d
<   t         j                  |j                  d<   t        j                  t        j                  d      d      }|j                  |      }|j                  d      }t        d      D ci c]$  }||j                  |d d   j                  d      & }}t        |      j                   j#                         }|j$                  j'                  t(              |_        t+        j,                  ||       y c c}w )Nz
2016-01-01i  ns)r   r   z
US/Pacificr   r   r   r   r   r   r      r   )r)   r   r+   to_framecopytz_localize	to_periodNaTilocrL   tilerw   r3   r,   rv   r   Tinfer_objectsr'   r2   intr4   r5   )r   r;   bygbr=   iexpr<   s           r>   #test_groupby_quantile_dt64tz_periodr     s&   
--d
>C	3	 	 	"	'	'	)BOOL)BqEMM#BqE#a&LBqE&&BGGBK	1s	#B	BB[[F 498
<a1bggaddm$$S))
<C
<~--/H^^**3/HN&(+	 =s   2)E;c                  D   t         j                  j                  g dg d      } t        j                  t	        d      |       }|j                  dd      j                  d	d
g      }t         j                  j                  g ddd g      }t        j                  g d|      }t        j                  ||       t         j                  j                  j                  j                  ddgd	d
gg      }t        j                  |j                  j                  |       y )N))r   r   rJ   )r   r   rB   )r   r    rJ   )r   r    rB   )r   r   rJ   )r   r   rB   )r   r    rJ   )r   r    rB   )samplecat0cat1r[      rF   r   F)levelrf   r   r   ))rJ   r   )rJ   r   )rB   r   )rB   r   )rY   g333333@g@g333333@rJ   rB   )r)   rO   rn   r+   rv   r3   r,   r4   r   coreindexesfrozen
FrozenListassert_equalr'   rs   )indserr=   qindr<   expected_levelss         r>   +test_groupby_quantile_nonmulti_levels_orderr    s    
--
#
#		
 ) $ C ))E!HC
(C[[vE[2;;S#JGF==$$8 % D yy-T:H68, ggoo,,77#sc3Z8PQOOOFLL''9r@   )&numpyrL   r   pandasr)   r   r   pandas._testing_testingr4   markparametrizer   r   r   r?   rQ   rb   rj   ro   r   r   r   r   rv   rM   r   r   r   r   r   r   r   r   r   r   r   r   r@   r>   <module>r     sc       I  
/*	|$	,'	"$=>
rvvsBFFC	(3RVVS*IJ
&&#rvvsBFF	+bffc2663-OP BMM(a8BMM(a82>	

 BMM(a8@@EBMM(a82>FFsK	

 &&Ax!|$)2 56, 73:,(,*,",$, 	':;aS1a&M2Szl+, , 3 <,0% *
rvvsBFF	#U1XSzC:F
rvvsC	 %(S#Jc
C
sC	 %(S#JCA
rdQC$ 	R"I.90MN	,	,& !1$q(	: sO45- 6-  sO45$7	C 8 6	C-4,& !W,,& :x*@A, B,8 9i"89- :-,",:,,:r@   