
    Pi4                     ,   d dl m Z  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 dlmZ d dlmZ ej        d             Zd Zd	 Zd
 Zd Zej                            d e	ddg           e	ddg           e	ddg          ej                            ddgddgg          g          d             Zd Zd Zej                             d          d             Z!ej                            ddi d fddd id fdddiej"        fdi dfddd idfdddiej"        fg          d             Z#ej                            ddej"        fd ej"        fd!d"d#g          d$             Z$d% Z%d& Z&ej                            d'di g d(fddd ig d(fdddidej"        dgfdddiej"        ej"        ej"        gfdi g d)fddd ig d)fdddidej"        dgfdddiej"        ej"        ej"        gfg          d*             Z'ej        d+             Z(d, Z)d- Z*d. Z+dS )/    )datetime)methodcallerN)	DataFrameIndexSeries	Timestamp)Grouper)
date_rangec                      t          t          j                            d                              d          t          dd                    S )N     z1/1/2000)periodsindex)r   nprandomdefault_rngstandard_normalr
        {/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pandas/tests/resample/test_time_grouper.pytest_seriesr      sJ    
	a  0066T222   r   c                 |   t          ddd          }|                     |          }d }|                    |          }|                     d                               |          }|j                            d          |_        |j                            d          |_        t          j        ||           d S )NYErightfreqlabelclosedc                 :    |                                  dd          S )N)sort_valuesxs    r   fztest_apply.<locals>.f    s    }}rss##r   c                     | j         S Nyearr#   s    r   <lambda>ztest_apply.<locals>.<lambda>$       QV r   r   )r	   groupbyapplyr   	dropleveltmassert_series_equal)r   groupergroupedr%   appliedexpecteds         r   
test_applyr5      s    4ww???G!!'**G$ $ $ mmAG""#3#344::1==HM++A..GM^--a00HN7H-----r   c                    t           j        | d d d<   |                     d                                           }t	          ddd          }|                     |                                          }|j        |_        t          j        ||           |                     d                                          }|j        |_        t          j        ||           d S )N   c                     | j         S r'   r(   r#   s    r   r*   ztest_count.<locals>.<lambda>.   r+   r   r   r   r   )	r   nanr,   countr	   r   r/   r0   resample)r   r4   r1   results       r   
test_countr=   +   s    vK!""#3#344::<<H4ww???G  ))//11F\HN68,,,!!$''--//F\HN68,,,,,r   c                     |                      dd                                          }|                     d                               t          j                  }|j        |_        t          j        ||           d S )Nr   r   )r   c                     | j         S r'   r(   r#   s    r   r*   z&test_numpy_reduction.<locals>.<lambda><   r+   r   )r;   prodr,   aggr   r   r/   r0   )r   r<   r4   s      r   test_numpy_reductionrB   :   so    !!$w!77<<>>F""#3#34488AAH\HN68,,,,,r   c                  B   d} t          dd|           }t          ddd|          }t          d	
          }|                    |          \  }}|                    |d          }d }|                    |          }t          j        |j        |j                   d S )Nr   
2000-01-01D)startr   r      r   )opencloser   MEr   F)
group_keysc                 $    | d         | d         z  S )NrI   rH   r   )dfs    r   r%   ztest_apply_iteration.<locals>.fM   s    '{RZ''r   )	r
   r   r	   _get_grouperr,   r-   r/   assert_index_equalr   )	NindrN   tgr1   _r2   r%   r<   s	            r   test_apply_iterationrU   A   s    A
<c1
=
=
=C	A**#	6	6	6B	d			B$$JGQ jjUj33G( ( ( ]]1F&,11111r   r   rG   r   abg?g@c                 B   t          |           j        }t          dt          t	          |                     i|           }d| d}t          j        t          |          5  |                    t          d                     d d d            d S # 1 swxY w Y   d S )NrV   r   zVOnly valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of ''matchrE   rK   )
type__name__r   rangelenpytestraises	TypeErrorr,   r	   )r   namerN   msgs       r   test_fails_on_no_datetime_indexre   U   s     ;;D	Cs5zz**+5	9	9	9B	;37	; 	; 	;  
y	,	,	, & &


7$$$%%%& & & & & & & & & & & & & & & & & &s   #$BBBc            	         d} t           j                            d                              | df          }t	          |g d          }t          ddd          t          ddd          t          ddd          t          ddd          t          ddd	          gdz  |d
<   |                    t          d
d                    }t          j	        |
                    t          ddd                    |d d d	                    t          j	        |
                    t          ddd                    |dd d	                    t          j	        |
                    t          ddd                    |dd d	                    t          j	        |
                    t          ddd                    |dd d	                    t          j	        |
                    t          ddd	                    |dd d	                    d S )N   r      ABCrE   columns  rG   r7      keyrE   rq   r   )r   r   r   r   r   r   r,   r	   r/   assert_frame_equal	get_group)ndatarN   r2   s       r   test_aaa_group_orderrw   j   s    	A9  ##33QF;;D	4!5!5!5	6	6	6Bq!q!q!q!q! 	

BuI jjU55566G'++HT1a,@,@AA2ccc7KKK'++HT1a,@,@AA2add8LLL'++HT1a,@,@AA2add8LLL'++HT1a,@,@AA2add8LLL'++HT1a,@,@AA2add8LLLLLr   c                    t           j                            d                              d          }t	          |g d          }g ddz  |d<   t	          |g d          }t          t          dd	d	          t          dd	d          t          dd	d
          t          dd	d          t          dd	d          gdz  d          |d<   |                    d          }|                    t          dd                    } t          ||                       } t          ||                       }t          ddddd          |_        t          j        ||           dS )?Check TimeGrouper's aggregation is identical as normal groupby.r   rg   rh   ri   rm   rG   r   r7   rh   rp   rh   rq   ro   rG   r7   rp   M8[ns]dtyperE   rr   
2013-01-01ns)rF   r   r   unitrc   N)r   r   r   r   r   r   r   r,   r	   getattrr
   r   r/   assert_equal)resample_methodrv   	normal_dfdt_dfnormal_grouped
dt_groupedr4   	dt_results           r   test_aggregate_normalr      s    9  ##33G<<D$(<(<(<===I&*Ied$8$8$8999ET1a  T1a  T1a  T1a  T1a  	
 	 
 
 
E%L &&u--Nw5s;;;<<J7w~7799H4
O4466Iad  HN OHi(((((r   z7if TimeGrouper is used included, 'nth' doesn't work yet)reasonc            	         t           j                            d                              d          } t	          | g d          }g ddz  |d<   t	          | g d          }t          dd	d	          t          dd	d          t          dd	d
          t          dd	d          t          dd	d          gdz  |d<   |                    d          }|                    t          dd                    }|                    d
          }t          dddd          |_
        |                    d
          }t          j        ||           dS )ry   r   rz   ri   rm   r{   rh   rq   ro   rG   r7   rp   rE   rr   r   )rF   r   r   rc   N)r   r   r   r   r   r   r,   r	   nthr
   r   r/   rs   )rv   r   r   r   r   r4   r   s          r   test_aggregate_nthr      sT    9  ##33G<<D$(<(<(<===I&*Ied$8$8$8999Eq!q!q!q!q! 	

E%L &&u--Nw5s;;;<<J!!!$$HlaeTTTHNq!!I(I.....r   zmethod, method_args, unitsum	min_countr@   c                 F   t          dgdz  t          j        gdz  z   t          ddd                    } t	          | fi ||                    d                    }t          j        d	d
gdd          }t          d|g|          }t          j	        ||           d S )Nr   r   2017rh   r   )r   r   r   2Dz
2017-01-01z
2017-01-03r|   r~   r   g        )
r   r   r9   r
   r   r;   pdDatetimeIndexr/   r0   )methodmethod_argsr   serr<   exp_dtir4   s          r   !test_resample_entirely_nat_windowr      s     !qBF8a<'z&!RV/W/W/W
X
X
XC0\&00K00d1C1CDDFl;8RVWWWGsDk111H68,,,,,r   zfunc, fill_valueminmax)r   r   )r@   rG   )r:   r   c                    d}t           j                            d                              |df                              d          }t          |g d          }ddt           j        ddgdz  |d	<   t          |g d          }t          t          d
dd          t          d
dd          t          j
        t          d
dd          t          d
dd          gdz  d          |d	<   |                    d	          }|                    t          d	d                    } t          ||                       } t          ||                       }	t          |gdz  gdgg d          }
t          j        ||
g          }|                                }t!          dddd	|d	         j        j                  }|                    d           |_        t+          j        ||	           |	j        j        d	k    sJ d S )Nrg   r   rh   int64ri   rm   rG   rp   rq   ro   r|   r}   rE   rr   r7   )r   rn   r   rF   r   r   rc   r   )r   r   r   r   astyper   r9   r   r   r   NaTr,   r	   r   concat
sort_indexr
   _valuesr   
_with_freqr   r/   rs   rc   )func
fill_valueru   rv   r   r   r   r   normal_resultr   padr4   dtis                r   test_aggregate_with_natr      s    	A9  ##33QF;;BB7KKD$(<(<(<===I1bfa+a/Ied$8$8$8999ET1a  T1a  FT1a  T1a  	
 	 
 
 
E%L &&u--Nw5s;;;<<J1GND1133M)
D))++I
j\A%&qc;O;O;O
P
P
PCy--..H""$$H
5\!&  C ^^D))HN(I...?5((((((r   c                     d} t           j                            d                              | df                              d          }t          |g d          }ddt           j        ddgdz  |d	<   t          |g d          }t          t          d
dd          t          d
dd          t          j
        t          d
dd          t          d
dd          gdz  d          |d	<   |                    d	          }|                    t          d	d                    }|                                }|                                }t          dgdg          }t          j        ||g          }	|	                                }	t#          dddd	|d	         j        j                                      d           |	_        t-          j        |	|           |j        j        d	k    sJ d S )Nrg   r   rh   r   ri   rm   rG   rp   rq   ro   r|   r}   rE   rr   r   r7   r   r   r   )r   r   r   r   r   r   r9   r   r   r   r   r,   r	   sizer   r   r   r
   r   r   r   r   r/   r0   rc   )
ru   rv   r   r   r   r   r   r   r   r4   s
             r   test_aggregate_with_nat_sizer      s   
A9  ##33QF;;BB7KKD$(<(<(<===I1bfa+a/Ied$8$8$8999ET1a  T1a  FT1a  T1a  	
 	 
 
 
E%L &&u--Nw5s;;;<<J"''))M!!I
!QC
 
 
 Cy--..H""$$H5\!&   j N 8Y///?5((((((r   c                      t          t          dd                    } d}| |k    sJ t          t          ddd                    } d}| |k    sJ d S )Nrj   hrr   zTimeGrouper(key='A', freq=<Hour>, sort=True, dropna=True, closed='left', label='left', how='mean', convention='e', origin='start_day')rD   )rq   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<   r4   s     r   	test_reprr   %  sy    'c,,,--F	. 
 X'cLAAABBF	C 
 Xr   z$method, method_args, expected_values)rG   r   rG   )rG   rG   rG   c           	         t          dt          dddd                    }|                    d          }t          j        g d	d
d          } t          | fi ||          }t          ||          }t          j        ||           d S )NrG   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   r/   r0   )r   r   expected_valuesr   	resampledr   r<   r4   s           r   test_upsample_sumr   8  s     *VQStLLL
M
M
MCW%%IMMM  E
 1\&00K00;;FoU333H68,,,,,r   c            	      T    t          g dg ddt          dddd          	          S )
N)
      	   )2   <   r   )pricevolumez
01/01/2018r7   Wr   r   r   )r   r
   r   r   r   groupy_test_dfr   R  s@    ++66qsFFF   r   c                 6   |                                  }d |j        _        | |g}|D ]q}t          j        t
          d          5  |                    d                              d                              d           d d d            n# 1 swxY w Y   rd S )Nz?Direct interpolation of MultiIndex data frames is not supportedrZ   r   1Dlinearr   )	copyr   rc   r`   ra   NotImplementedErrorr,   r;   interpolate)r   !groupy_test_df_without_index_namedfsrN   s       r   (test_groupby_resample_interpolate_raisesr   Z  s    )7(;(;(=(=%37%+0<
=C M M]S
 
 
 	M 	M JJx  ))$//;;8;LLL		M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	MM Ms   =BB	B	c           	         |                                  }d |j        _        | |g}|D ]}|                    d                              d           }dgdz  dgz   }g t          t          ddd	                    t          d
          }t          j	        
                    ||gd|j        j        g          }t          dg di|          }t          j        ||           d S )Nr   c                 T    |                      d                              d          S )Nr   r   r   r;   r   r#   s    r   r*   zEtest_groupby_resample_interpolate_with_apply_syntax.<locals>.<lambda>v  s#    ajj&&22(2CC r   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      "@      &@rv   r   )r   r   rc   r,   r-   listr
   r   r   
MultiIndexfrom_arraysr   r/   rs   )	r   r   r   rN   r<   r   week_startingexpected_indr4   s	            r   3test_groupby_resample_interpolate_with_apply_syntaxr   k  s4    )7(;(;(=(=%37%+0<
=C &0 &0H%%++CC
 
 bT!
*\<dCCCDD
l##
 }00]#RX]+ 1 
 

    ( +
 
 
. 	fh////M&0 &0r   c                    |                      d                              d           }g d}t          j        t	          d          t	          d          t	          d          g                              d          }t          j                            ||gddg	          }t          d
g di|          }t          j
        ||d           dS )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                 T    |                      d                              d          S )N265hr   r   r   r#   s    r   r*   zNtest_groupby_resample_interpolate_with_apply_syntax_off_grid.<locals>.<lambda>  s#    !**V$$000AA r   )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   r/   rs   )r   r<   r   r   r   r4   s         r   <test_groupby_resample_interpolate_with_apply_syntax_off_gridr     s    
 ##H--33AA F \\F$l##+,,l##	
  gdmm  =,,	) -  L
 ((()  H &(>>>>>>r   ),r   operatorr   numpyr   r`   pandasr   r   r   r   r   pandas._testing_testingr/   pandas.core.groupby.grouperr	   pandas.core.indexes.datetimesr
   fixturer   r5   r=   rB   rU   markparametrizer   r   re   rw   r   xfailr   r9   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      s!         ! ! ! ! ! !                           / / / / / / 4 4 4 4 4 4   . . . - - -- - -2 2 2( q!fsCjsCj
!!Aq6C:"677	 	& 	& 	&M M M,) ) )> STT/ / UT/2 	A	a !$	a "&)	Q	+q!1%	+q!26*
 
- -
 
- RV_ubfoz;M )) ))	 ))X%) %) %)P  & *	III	a ))),	a 1bfa.1	a 262626":;	YYY	+q!999-	+q!Arvq>2	+q!BFBFBF#;<	 
- 
- 
-   M M M"/0 /0 /0d? ? ? ? ?r   