
    Owg=.                     V   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j2                  j5                  d e	ddg       e	ddg       e	ddg      ej6                  j9                  ddgddgg      g      d        Zd Zd Zej2                  jA                  d      d        Z!ej2                  j5                  ddi d fddd id fdddiejD                  fdi dfddd idfdddiejD                  fg      d        Z#ej2                  j5                  ddejD                  fd ejD                  fd!d"d#g      d$        Z$d% Z%d& Z&ej2                  j5                  d'di g d(fddd ig d(fdddidejD                  dgfdddiejD                  ejD                  ejD                  gfdi g d)fddd ig d)fdddidejD                  dgfdddiejD                  ejD                  ejD                  gfg      d*        Z'd+ Z(y),    )datetime)methodcallerN)	DataFrameIndexSeries	Timestamp)Grouper)
date_rangec                      t        t        j                  j                  d      j	                  d      t        dd            S )N     z1/1/2000periodsindex)r   nprandomdefault_rngstandard_normalr
        ^/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/resample/test_time_grouper.pytest_seriesr      s6    
		a 006T2 r   c                 X   t        ddd      }| j                  |      }d }|j                  |      }| j                  d       j                  |      }|j                  j	                  d      |_        |j                  j	                  d      |_        t        j                  ||       y )NYErightfreqlabelclosedc                 (    | j                         dd  S )N)sort_valuesxs    r   fztest_apply.<locals>.f    s    }}rs##r   c                     | j                   S Nyearr$   s    r   <lambda>ztest_apply.<locals>.<lambda>$   
    QVV r   r   )r	   groupbyapplyr   	dropleveltmassert_series_equal)r   groupergroupedr&   appliedexpecteds         r   
test_applyr6      s    4ww?G!!'*G$ mmAG""#34::1=HMM++A.GM^^--a0HN7H-r   c                    t         j                  | d d d<   | j                  d       j                         }t	        ddd      }| j                  |      j                         }|j
                  |_        t        j                  ||       | j                  d      j                         }|j
                  |_        t        j                  ||       y )N   c                     | j                   S r(   r)   r$   s    r   r+   ztest_count.<locals>.<lambda>.   r,   r   r   r   r   )	r   nanr-   countr	   r   r0   r1   resample)r   r5   r2   results       r   
test_countr>   +   s    vvK!""#34::<H4ww?G  )//1F\\HN68,!!$'--/F\\HN68,r   c                 V   | j                  dd      j                         }d}t        j                  t        |      5  | j                  d       j                  t        j                        }d d d        |j                  _        t        j                  ||       y # 1 sw Y   1xY w)Nr   r   )r    zusing SeriesGroupBy.prodmatchc                     | j                   S r(   r)   r$   s    r   r+   z&test_numpy_reduction.<locals>.<lambda>?   s
     r   )
r<   prodr0   assert_produces_warningFutureWarningr-   aggr   r   r1   )r   r=   msgr5   s       r   test_numpy_reductionrH   :   s    !!$w!7<<>F
$C		#	#M	= F&&'78<<RWWEF\\HN68,	F Fs   0BB(c                  &   d} t        dd|       }t        ddd|      }t        d	
      }|j                  |      \  }}|j	                  |d      }d }|j                  |      }t        j                  |j                  |j                         y )Nr   
2000-01-01D)startr   r      r   )opencloser   MEr   F)
group_keysc                     | d   | d   z  S )NrO   rN   r   )dfs    r   r&   ztest_apply_iteration.<locals>.fQ   s    '{RZ''r   )	r
   r   r	   _get_grouperr-   r.   r0   assert_index_equalr   )	NindrT   tgr2   _r3   r&   r=   s	            r   test_apply_iterationr[   E   s    A
<c1
=C	A*#	6B	d	B$JGQ jjUj3G( ]]1F&,,1r   r   rM   r   abg?g@c                    t        |       j                  }t        dt        t	        |             i|       }d| d}t        j                  t        |      5  |j                  t        d             d d d        y # 1 sw Y   y xY w)Nr\   r   zVOnly valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of ''r@   rK   rQ   )
type__name__r   rangelenpytestraises	TypeErrorr-   r	   )r   namerT   rG   s       r   test_fails_on_no_datetime_indexrh   Y   sy     ;D	Cs5z*+5	9B	337&	;  
y	, &


7$%& & &s   A==Bc            	      b   d} t         j                  j                  d      j                  | 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
<   |j                  t        d
d            }t        j                  |j                  t        ddd            |d d d	          t        j                  |j                  t        ddd            |dd d	          t        j                  |j                  t        ddd            |dd d	          t        j                  |j                  t        ddd            |dd d	          t        j                  |j                  t        ddd	            |dd d	          y )N   r      ABCrK   columns  rM   r8      keyrK   rt   r   )r   r   r   r   r   r   r-   r	   r0   assert_frame_equal	get_group)ndatarT   r3   s       r   test_aaa_group_orderrz   n   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                 @   t         j                  j                  d      j                  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<   |j                  d      }|j                  t        dd            } t        ||              } t        ||              }t        dddd      |_        t        j                  ||       y)?Check TimeGrouper's aggregation is identical as normal groupby.r   rj   rk   rl   rp   rM   r   r8   rk   rs   rk   rt   rr   rM   r8   rs   M8[ns]dtyperK   ru   
2013-01-01rL   r   r   rg   N)r   r   r   r   r   r   r   r-   r	   getattrr
   r   r0   assert_equal)resample_methodry   	normal_dfdt_dfnormal_grouped
dt_groupedr5   	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7w~79H4
O46IlaeTHNOOHi(r   z7if TimeGrouper is used included, 'nth' doesn't work yet)reasonc            	      *   t         j                  j                  d      j                  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<   |j                  d      }|j                  t        dd            }|j                  d
      }t        dddd      |_
        |j                  d
      }t        j                  ||       y)r|   r   r}   rl   rp   r~   rk   rt   rr   rM   r8   rs   rK   ru   r   r   N)r   r   r   r   r   r   r-   r	   nthr
   r   r0   rv   )ry   r   r   r   r   r5   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(I.r   zmethod, method_args, unitsum	min_countrC   c                 &   t        dgdz  t        j                  gdz  z   t        dd            } t	        | fi ||j                  d            }t        j                  dd	gd
d      }t        d|g|      }t        j                  ||       y )Nr   r   2017rk   r   r   2dz
2017-01-01z
2017-01-03r   2Dr   r   g        )
r   r   r:   r
   r   r<   pdDatetimeIndexr0   r1   )methodmethod_argsunitserr=   exp_dtir5   s          r   !test_resample_entirely_nat_windowr      s     !qBFF8a<'z&!/L
MC0\&0K0d1CDFl;8RVWGsDk1H68,r   zfunc, fill_valueminmax)r   r   )rC   rM   )r;   r   c                    d}t         j                  j                  d      j                  |df      j	                  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	<   |j                  d	      }|j                  t        d	d            } t        ||              } t        ||              }	t        |gdz  gdgg d      }
t        j                  ||
g      }|j                         }t!        dddd	|d	   j"                  j$                        }|j'                  d       |_        t+        j,                  ||	       |	j(                  j.                  d	k(  sJ y )Nrj   r   rk   int64rl   rp   rM   rs   rt   rr   r   r   rK   ru   r8   )r   rq   r   rL   r   r   rg   r   )r   r   r   r   astyper   r:   r   r   r   NaTr-   r	   r   concat
sort_indexr
   _valuesr   
_with_freqr   r0   rv   rg   )func
fill_valuerx   ry   r   r   r   r   normal_resultr   padr5   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1GND13M)
D)+I
j\A%&qc;O
PCyy--.H""$H
5\!!&&C ^^D)HN(I.??5(((r   c                  z   d} t         j                  j                  d      j                  | df      j	                  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	<   |j                  d	      }|j                  t        d	d            }|j                         }|j                         }t        dgdg      }t        j                  ||g      }	|	j!                         }	t#        dddd	|d	   j$                  j&                        j)                  d       |	_        t-        j.                  |	|       |j*                  j0                  d	k(  sJ y )Nrj   r   rk   r   rl   rp   rM   rs   rt   rr   r   r   rK   ru   r   r8   r   r   r   )r   r   r   r   r   r   r:   r   r   r   r   r-   r	   sizer   r   r   r
   r   r   r   r   r0   r1   rg   )
rx   ry   r   r   r   r   r   r   r   r5   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 8Y/??5(((r   c                      t        t        dd            } d}| |k(  sJ t        t        ddd            } d}| |k(  sJ y )Nrm   hru   zTimeGrouper(key='A', freq=<Hour>, axis=0, sort=True, dropna=True, closed='left', label='left', how='mean', convention='e', origin='start_day')rJ   )rt   r   originzTimeGrouper(key='A', freq=<Hour>, axis=0, sort=True, dropna=True, closed='left', label='left', how='mean', convention='e', origin=Timestamp('2000-01-01 00:00:00')))reprr	   )r=   r5   s     r   	test_reprr   '  s[    'c,-F	. 
 X'cLABF	C 
 Xr   z$method, method_args, expected_values)rM   r   rM   )rM   rM   rM   c                     t        dt        ddd            }|j                  d      }t        j                  g dd	d
      } t        | fi ||      }t        ||      }t        j                  ||       y )NrM   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   r0   r1   )r   r   expected_valuesr   	resampledr   r=   r5   s           r   test_upsample_sumr   :  st     *VQSA
BCW%IME
 1\&0K0;FoU3H68,r   c                  2   g dg dd} t        |       }t        ddd      |d<   d	}t        j                  t        |
      5  |j                  d      j                  d      j                  d      j                  d      }d d d        dgdz  dgz   }t        t        dd            t        d      gz   }t        j                  j                  ||gddg      }t        g ddgdz  dgz   d|      }t        j                  |       y # 1 sw Y   xY w)N)
      	   )2   <   r   )pricevolumez
01/01/2018r8   Wr   week_startingz:DataFrameGroupBy.resample operated on the grouping columnsr@   r   1Dlinear)r   r      r   z
2018-01-07z
2018-01-21z
2018-01-14)names)g      $@gm۶m#@gn۶m۶#@g%I$I#@g۶m۶m#@g$I$I#@gI$I$#@g      #@gm۶m"@gn۶m۶"@g%I$I"@g۶m۶m"@g$I$I"@gI$I$"@g      "@g      &@g      I@)ry   r   )r   r
   r0   rD   DeprecationWarning	set_indexr-   r<   interpolatelistr   r   
MultiIndexfrom_arraysrv   )drT   rG   r=   r   r   expected_indr5   s           r   !test_groupby_resample_interpolater   T  s&   6A	1B$\13GB
FC		#	#$6c	B 
LL)WXXd^[[)	 	
 TBY"FL,?@,D M ==,,	) - L
 $ frkRD('
* -H0 &(+S
 
s   A DD))r   operatorr   numpyr   rd   pandasr   r   r   r   r   pandas._testing_testingr0   pandas.core.groupby.grouperr	   pandas.core.indexes.datetimesr
   fixturer   r6   r>   rH   r[   markparametrizer   r   rh   rz   r   xfailr   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#;<	
-
-2,r   