
    A>i4                        S SK J r   S SKJr  S SKrS SKrS SKrS SKJrJ	r	J
r
Jr  S SKJr  S SKJr  S SKJr  \R&                  S 5       rS rS	 rS
 rS r\R2                  R5                  S\	" SS/5      \	" SS/5      \	" SS/5      \R6                  R9                  SS/SS//5      /5      S 5       rS rS r\R2                  RA                  SS9S 5       r!\R2                  R5                  SS0 S 4SSS 0S 4SSS0\RD                  4S0 S4SSS 0S4SSS0\RD                  4/5      S 5       r#\R2                  R5                  SS\RD                  4S \RD                  4S!S"S#/5      S$ 5       r$S% r%S& r&\R2                  R5                  S'S0 / S(Q4SSS 0/ S(Q4SSS0S\RD                  S/4SSS0\RD                  \RD                  \RD                  /4S0 / S)Q4SSS 0/ S)Q4SSS0S\RD                  S/4SSS0\RD                  \RD                  \RD                  /4/5      S* 5       r'\R&                  S+ 5       r(S, r)S- r*S. r+g)/    )datetime)methodcallerN)	DataFrameIndexSeries	Timestamp)Grouper)
date_rangec                  ~    [        [        R                  R                  S5      R	                  S5      [        SSS9S9$ )N     z1/1/2000)periodsindex)r   nprandomdefault_rngstandard_normalr
        f/var/www/html/land-tabula/venv/lib/python3.13/site-packages/pandas/tests/resample/test_time_grouper.pytest_seriesr      s6    
		a 006T2 r   c                 R   [        SSSS9nU R                  U5      nS nUR                  U5      nU R                  S 5      R                  U5      nUR                  R	                  S5      Ul        UR                  R	                  S5      Ul        [
        R                  " XE5        g )NYErightfreqlabelclosedc                 (    U R                  5       SS  $ )N)sort_valuesxs    r   ftest_apply.<locals>.f    s    }}rs##r   c                     U R                   $ Nyearr#   s    r   <lambda>test_apply.<locals>.<lambda>$       QVVr   r   )r	   groupbyapplyr   	dropleveltmassert_series_equal)r   groupergroupedr%   appliedexpecteds         r   
test_applyr7      s    4ww?G!!'*G$ mmAG""#34::1=HMM++A.GM^^--a0HN7-r   c                    [         R                  U S S S2'   U R                  S 5      R                  5       n[	        SSSS9nU R                  U5      R                  5       nUR
                  Ul        [        R                  " X15        U R                  S5      R                  5       nUR
                  Ul        [        R                  " X15        g )N   c                     U R                   $ r(   r)   r#   s    r   r+   test_count.<locals>.<lambda>.   r-   r   r   r   r   )	r   nanr.   countr	   r   r1   r2   resample)r   r6   r3   results       r   
test_countr@   +   s    vvK!""#34::<H4ww?G  )//1F\\HN6,!!$'--/F\\HN6,r   c                     U R                  SSS9R                  5       nU R                  S 5      R                  [        R                  5      nUR
                  Ul        [        R                  " X5        g )Nr   r   )r   c                     U R                   $ r(   r)   r#   s    r   r+   &test_numpy_reduction.<locals>.<lambda><   r-   r   )r>   prodr.   aggr   r   r1   r2   )r   r?   r6   s      r   test_numpy_reductionrF   :   sY    !!$w!7<<>F""#3488AH\\HN6,r   c                     Sn [        SSU S9n[        SSS.US9n[        S	S
9nUR                  U5      u  pEUR	                  USS9nS nUR                  U5      n[        R                  " UR                  UR                  5        g )Nr   
2000-01-01D)startr   r      r   )opencloser   MEr   F)
group_keysc                     U S   U S   -  $ )NrM   rL   r   )dfs    r   r%   test_apply_iteration.<locals>.fM   s    '{RZ''r   )	r
   r   r	   _get_grouperr.   r/   r1   assert_index_equalr   )	NindrR   tgr3   _r4   r%   r?   s	            r   test_apply_iterationrZ   A   s    A
<c1
=C	A*#	6B	d	B$JG jjUj3G( ]]1F&,,1r   r   rK   r   abg?g@c                    [        U 5      R                  n[        S[        [	        U 5      5      0U S9nSU S3n[
        R                  " [        US9   UR                  [        SS95        S S S 5        g ! , (       d  f       g = f)Nr[   r   zVOnly valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of ''matchrI   rO   )
type__name__r   rangelenpytestraises	TypeErrorr.   r	   )r   namerR   msgs       r   test_fails_on_no_datetime_indexrj   U   sp     ;D	Cs5z*+5	9B	337&	;  
y	,


7$% 
-	,	,s   A55
Bc            	      `   Sn [         R                  R                  S5      R                  U S45      n[	        U/ SQS9n[        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS	5      /S-  US
'   UR                  [        S
SS95      n[        R                  " UR                  [        SSS5      5      US S S	2   5        [        R                  " UR                  [        SSS5      5      USS S	2   5        [        R                  " UR                  [        SSS5      5      USS S	2   5        [        R                  " UR                  [        SSS5      5      USS S	2   5        [        R                  " UR                  [        SSS	5      5      USS S	2   5        g )N   r      ABCrI   columns  rK   r9      keyrI   rv   r   )r   r   r   r   r   r   r.   r	   r1   assert_frame_equal	get_group)ndatarR   r4   s       r   test_aaa_group_orderr|   j   s    	A99  #33QF;D	4!5	6Bq!q!q!q!q! 	

BuI jjU56G'++HT1a,@A2cc7K'++HT1a,@A2add8L'++HT1a,@A2add8L'++HT1a,@A2add8L'++HT1a,@A2add8Lr   c                     [         R                  R                  S5      R                  S5      n[	        U/ SQS9n/ SQS-  US'   [	        U/ SQS9n[        [        SS	S	5      [        SS	S5      [        SS	S
5      [        SS	S5      [        SS	S5      /S-  SS9US'   UR                  S5      nUR                  [        SSS95      n[        X@5      " 5       n[        XP5      " 5       n[        SSSSSS9Ul        [        R                  " Xg5        g)?Check TimeGrouper's aggregation is identical as normal groupby.r   rl   rm   rn   rr   rK   r   r9   rm   ru   rm   rv   rt   rK   r9   ru   M8[ns]dtyperI   rw   
2013-01-01ns)rJ   r   r   unitrh   N)r   r   r   r   r   r   r   r.   r	   getattrr
   r   r1   assert_equal)resample_methodr{   	normal_dfdt_dfnormal_grouped
dt_groupedr6   	dt_results           r   test_aggregate_normalr      s    99  #33G<D$(<=I&*Ied$89ET1a T1a T1a T1a T1a 	
 	 
E%L &&u-Nw5s;<J~79H
46IadHN OOH(r   z7if TimeGrouper is used included, 'nth' doesn't work yet)reasonc            	         [         R                  R                  S5      R                  S5      n [	        U / SQS9n/ SQS-  US'   [	        U / SQS9n[        SS	S	5      [        SS	S5      [        SS	S
5      [        SS	S5      [        SS	S5      /S-  US'   UR                  S5      nUR                  [        SSS95      nUR                  S
5      n[        SSSSS9Ul
        UR                  S
5      n[        R                  " XV5        g)r~   r   r   rn   rr   r   rm   rv   rt   rK   r9   ru   rI   rw   r   )rJ   r   r   rh   N)r   r   r   r   r   r   r.   r	   nthr
   r   r1   rx   )r{   r   r   r   r   r6   r   s          r   test_aggregate_nthr      s    99  #33G<D$(<=I&*Ied$89Eq!q!q!q!q! 	

E%L &&u-Nw5s;<J!!!$HlaeTHNq!I(.r   zmethod, method_args, unitsum	min_countrD   c           	         [        S/S-  [        R                  /S-  -   [        SSSS9S9n[	        U 40 UD6" UR                  S5      5      n[        R                  " S	S
/SSS9n[        SU/US9n[        R                  " XF5        g )Nr   r   2017rm   r   )r   r   r   2Dz
2017-01-01z
2017-01-03r   r   r   g        )
r   r   r<   r
   r   r>   pdDatetimeIndexr1   r2   )methodmethod_argsr   serr?   exp_dtir6   s          r   !test_resample_entirely_nat_windowr      s     !qBFF8a<'z&!RV/W
XC&0K0d1CDFl;8RVWGsDk1H6,r   zfunc, fill_valueminmax)r   r   )rD   rK   )r=   r   c                 j   Sn[         R                  R                  S5      R                  US45      R	                  S5      n[        U/ SQS9nSS[         R                  SS/S-  US	'   [        U/ SQS9n[        [        S
SS5      [        S
SS5      [        R                  [        S
SS5      [        S
SS5      /S-  SS9US	'   UR                  S	5      nUR                  [        S	SS95      n[        X`5      " 5       n[        Xp5      " 5       n	[        U/S-  /S// SQS9n
[        R                  " X/5      nUR                  5       n[!        SSSS	US	   R"                  R$                  S9nUR'                  S 5      Ul        [*        R,                  " X5        U	R(                  R.                  S	:X  d   eg )Nrl   r   rm   int64rn   rr   rK   ru   rv   rt   r   r   rI   rw   r9   )r   rs   r   rJ   r   r   rh   r   )r   r   r   r   astyper   r<   r   r   r   NaTr.   r	   r   concat
sort_indexr
   _valuesr   
_with_freqr   r1   rx   rh   )func
fill_valuerz   r{   r   r   r   r   normal_resultr   padr6   dtis                r   test_aggregate_with_natr      s    	A99  #33QF;BB7KD$(<=I1bffa+a/Ied$89ET1a T1a FFT1a T1a 	
 	 
E%L &&u-Nw5s;<JN13M
)+I
j\A%&qc;O
PCyy--.H""$H
5\!!&&C ^^D)HN(.??5(((r   c                  X   Sn [         R                  R                  S5      R                  U S45      R	                  S5      n[        U/ SQS9nSS[         R                  SS/S-  US	'   [        U/ SQS9n[        [        S
SS5      [        S
SS5      [        R                  [        S
SS5      [        S
SS5      /S-  SS9US	'   UR                  S	5      nUR                  [        S	SS95      nUR                  5       nUR                  5       n[        S/S/S9n[        R                  " Xh/5      n	U	R!                  5       n	[#        SSSS	US	   R$                  R&                  S9R)                  S 5      U	l        [,        R.                  " X5        UR*                  R0                  S	:X  d   eg )Nrl   r   rm   r   rn   rr   rK   ru   rv   rt   r   r   rI   rw   r   r9   r   r   r   )r   r   r   r   r   r   r<   r   r   r   r   r.   r	   sizer   r   r   r
   r   r   r   r   r1   r2   rh   )
rz   r{   r   r   r   r   r   r   r   r6   s
             r   test_aggregate_with_nat_sizer      s   
A99  #33QF;BB7KD$(<=I1bffa+a/Ied$89ET1a T1a FFT1a T1a 	
 	 
E%L &&u-Nw5s;<J"'')M!I
!QC
 Cyy--.H""$H5\!!&& j N 8/??5(((r   c                  v    [        [        SSS95      n SnX:X  d   e[        [        SSSS95      n SnX:X  d   eg )Nro   hrw   zTimeGrouper(key='A', freq=<Hour>, sort=True, dropna=True, closed='left', label='left', how='mean', convention='e', origin='start_day')rH   )rv   r   originzTimeGrouper(key='A', freq=<Hour>, sort=True, dropna=True, closed='left', label='left', how='mean', convention='e', origin=Timestamp('2000-01-01 00:00:00')))reprr	   )r?   r6   s     r   	test_reprr   %  sW    'c,-F	. 
 'cLABF	C 
 r   z$method, method_args, expected_values)rK   r   rK   )rK   rK   rK   c           
          [        S[        SSSSS9S9nUR                  S5      n[        R                  " / S	QS
SS9n[        U 40 UD6" U5      n[        X%S9n[        R                  " Xg5        g )NrK   r   r   r   r   r   r   r   r   30min)z2017-01-01T00:00:00z2017-01-01T00:30:00z2017-01-01T01:00:00r   r   )r   r
   r>   r   r   r   r1   r2   )r   r   expected_valuesr   	resampledr   r?   r6   s           r   test_upsample_sumr   8  sp     *VQStL
MCW%IME
 &0K0;Fo3H6,r   c            
      8    [        / SQ/ SQS.[        SSSSS9S	9$ )
N)
      	   )2   <   r   )pricevolumez
01/01/2018r9   Wr   r   r   )r   r
   r   r   r   groupy_test_dfr   R  s%    6qsF r   c                     U R                  5       nS UR                  l        X/nU HR  n[        R                  " [
        SS9   UR                  S5      R                  S5      R                  SS9  S S S 5        MT     g ! , (       d  f       Mf  = f)Nz?Direct interpolation of MultiIndex data frames is not supportedr_   r   1Dlinearr   )	copyr   rh   re   rf   NotImplementedErrorr.   r>   interpolate)r   !groupy_test_df_without_index_namedfsrR   s       r   (test_groupby_resample_interpolate_raisesr   Z  s     )7(;(;(=%37%++0
=C]]S
 JJx ))$/;;8;L	
 
 
 
s   .A>>
B	c           
         U R                  5       nS UR                  l        X/nU H  nUR                  S5      R	                  S 5      nS/S-  S/-   n/ [        [        SSSS	95      Q[        S
5      Pn[        R                  R                  XV/SUR                  R                  /S9n[        S/ SQ0US9n[        R                  " XH5        M     g )Nr   c                 >    U R                  S5      R                  SS9$ )Nr   r   r   r>   r   r#   s    r   r+   Etest_groupby_resample_interpolate_with_apply_syntax.<locals>.<lambda>v  s    ajj&22(2Cr   r      r   
2018-01-07z
2018-01-21r   )r   
2018-01-14namesr   )      $@gm۶m#@gn۶m۶#@g%I$I#@g۶m۶m#@g$I$I#@gI$I$#@      #@gm۶m"@gn۶m۶"@g%I$I"@g۶m۶m"@g$I$I"@gI$I$"@g      "@      &@r{   r   )r   r   rh   r.   r/   listr
   r   r   
MultiIndexfrom_arraysr   r1   rx   )	r   r   r   rR   r?   r   week_startingexpected_indr6   s	            r   3test_groupby_resample_interpolate_with_apply_syntaxr   k  s     )7(;(;(=%37%++0
=CH%++C
 bT!
*\<dCD
l#
 }}00#RXX]]+ 1 

  ( +
. 	f/M r   c                 \   U R                  S5      R                  S 5      n/ SQn[        R                  " [	        S5      [	        S5      [	        S5      /5      R                  S5      n[        R                  R                  X#/SS/S	9n[        S
/ SQ0US9n[        R                  " XSS9  g)zSimilar test as test_groupby_resample_interpolate_with_apply_syntax but
with resampling that results in missing anchor points when interpolating.
See GH#21351.r   c                 >    U R                  S5      R                  SS9$ )N265hr   r   r   r#   s    r   r+   Ntest_groupby_resample_interpolate_with_apply_syntax_off_grid.<locals>.<lambda>  s    !**V$000Ar   )r   r   r   r   z2018-01-18 01:00:00r   r   r   r   r   )r   r   r   r   F)check_namesN)r.   r/   r   r   r   as_unitr   r   r   r1   rx   )r   r?   r   r   r   r6   s         r   <test_groupby_resample_interpolate_with_apply_syntax_off_gridr     s    
 ##H-33AF F$$l#+,l#	
 gdm  ==,,	) - L
 ()H &>r   ),r   operatorr   numpyr   re   pandasr   r   r   r   r   pandas._testing_testingr1   pandas.core.groupby.grouperr	   pandas.core.indexes.datetimesr
   fixturer   r7   r@   rF   rZ   markparametrizer   r   rj   r|   r   xfailr   r<   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      s    !      / 4  . --2( q!fsCjsCj
!!Aq6C:"67		&	&M,)> ST/ U/2 	A	a !$	a "&&)	Q	+q!1%	+q!266*
-
- RVV_ubffoz;M))	))X%)P& *	I	a ),	a 1bffa.1	a 266266266":;	Y	+q!9-	+q!Arvvq>2	+q!BFFBFFBFF#;<	
-
-  M"/0d?r   