o
    vh8.                     @   sR  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d Zd	d
 Zdd Zdd Zd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d Zdd Zdd Zejj dd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&d' Z#ejd(d)ej"fd*ej"fd+d,d-gd.d/ Z$d0d1 Z%d2d3 Z&ejd4d#i g d5fd#d$d ig d5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 d6fd%d$d ig d6fd%d$didej"dgfd%d$diej"ej"ej"gfgd7d8 Z'd9d: Z(dS );    )datetime)methodcallerN)	DataFrameIndexSeries	Timestamp)Grouper)
date_rangec                   C   s"   t tjddtddddS )N     z1/1/2000periodsindex)r   nprandomdefault_rngstandard_normalr	    r   r   e/var/www/html/hyperkenya/venv/lib/python3.10/site-packages/pandas/tests/resample/test_time_grouper.pytest_series   s   
r   c                 C   sj   t dddd}| |}dd }||}| dd |}|jd|_|jd|_t|| d S )	NYErightfreqlabelclosedc                 S   s   |   dd  S )N)sort_valuesxr   r   r   f       ztest_apply.<locals>.fc                 S      | j S Nyearr   r   r   r   <lambda>$       ztest_apply.<locals>.<lambda>r   )r   groupbyapplyr   	dropleveltmassert_series_equal)r   groupergroupedr!   appliedexpectedr   r   r   
test_apply   s   

r2   c                 C   sx   t j| d d d< | dd  }tdddd}| | }|j|_t|| | d }|j|_t|| d S )N   c                 S   r#   r$   r%   r   r   r   r   r'   .   r(   ztest_count.<locals>.<lambda>r   r   r   )	r   nanr)   countr   r   r,   r-   resample)r   r1   r.   resultr   r   r   
test_count+   s   r8   c                 C   sr   | j ddd }d}tjt|d | dd tj}W d    n1 s(w   Y  |j|_t	|| d S )Nr   r   )r   zusing SeriesGroupBy.prodmatchc                 S   r#   r$   r%   r   r   r   r   r'   ?   r(   z&test_numpy_reduction.<locals>.<lambda>)
r6   prodr,   assert_produces_warningFutureWarningr)   aggr   r   r-   )r   r7   msgr1   r   r   r   test_numpy_reduction:   s   r@   c            	      C   sp   d} t dd| d}tddd|d}td	d
}||\}}|j|dd}dd }||}t|j|j d S )Nr   
2000-01-01D)startr   r      r
   )opencloser   MEr   F)
group_keysc                 S   s   | d | d  S )NrF   rE   r   )dfr   r   r   r!   Q   r"   ztest_apply_iteration.<locals>.f)	r	   r   r   _get_grouperr)   r*   r,   assert_index_equalr   )	NindrJ   tgr.   _r/   r!   r7   r   r   r   test_apply_iterationE   s   

rQ   r   rD   r
   abg?g@c                 C   sr   t | j}tdtt| i| d}d| d}tjt|d |t	dd W d    d S 1 s2w   Y  d S )NrR   r   zVOnly valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of ''r9   rB   rH   )
type__name__r   rangelenpytestraises	TypeErrorr)   r   )r   namerJ   r?   r   r   r   test_fails_on_no_datetime_indexY   s   

"r]   c                  C   s2  d} t jd| df}t|g dd}tdddtdddtdddtdddtddd	gd |d
< |td
dd}t	|
tddd|d d d	  t	|
tddd|dd d	  t	|
tddd|dd d	  t	|
tddd|dd d	  t	|
tddd	|dd d	  d S )N   r
      ABCrB   columns  rD   r3      keyrB   rh   r   )r   r   r   r   r   r   r)   r   r,   assert_frame_equal	get_group)ndatarJ   r/   r   r   r   test_aaa_group_ordern   s"   




$$$$(rn   c              	   C   s   t jdd}t|g dd}g dd |d< t|g dd}ttdd	d	tdd	dtdd	d
tdd	dtdd	dgd dd|d< |d}|tddd}t	||  }t	||  }t
ddddd|_t|| dS )?Check TimeGrouper's aggregation is identical as normal groupby.r
   r^   r_   r`   rd   rD   r
   r3   r_   rg   r_   rh   rf   rD   r3   rg   M8[ns]dtyperB   ri   
2013-01-01rC   r   r   r\   N)r   r   r   r   r   r   r   r)   r   getattrr	   r   r,   assert_equal)resample_methodrm   	normal_dfdt_dfnormal_grouped
dt_groupedr1   	dt_resultr   r   r   test_aggregate_normal   s*   






r   z7if TimeGrouper is used included, 'nth' doesn't work yet)reasonc                  C   s   t jdd} t| g dd}g dd |d< t| g dd}tdd	d	tdd	dtdd	d
tdd	dtdd	dgd |d< |d}|tddd}|d
}t	ddddd|_
|d
}t|| dS )ro   r
   rp   r`   rd   rq   r_   rh   rf   rD   r3   rg   rB   ri   ru   rv   N)r   r   r   r   r   r   r)   r   nthr	   r   r,   rj   )rm   rz   r{   r|   r}   r1   r~   r   r   r   test_aggregate_nth   s$   







r   zmethod, method_args, unitsum	min_countr;   c                 C   st   t dgd tjgd  tdddd}t| fi ||d}tjdd	gd
dd}t d|g|d}t	|| d S )Nr   r
   2017r_   r   r   2dz
2017-01-01z
2017-01-03rr   2Drt   r   g        )
r   r   r4   r	   r   r6   pdDatetimeIndexr,   r-   )methodmethod_argsunitserr7   exp_dtir1   r   r   r   !test_resample_entirely_nat_window   s
   &r   zfunc, fill_valueminmax)r   r   )r;   rD   )r5   r   c              	   C   sD  d}t jd|dfd}t|g dd}ddt jddgd |d	< t|g dd}ttd
ddtd
ddt	j
td
ddtd
ddgd dd|d	< |d	}|td	dd}t||  }t||  }	t|gd gdgg dd}
t	||
g}| }tdddd	|d	 jjd}|d |_t||	 |	jjd	ksJ d S )Nr^   r
   r_   int64r`   rd   rD   rg   rh   rf   rr   rs   rB   ri   r3   )r   re   ru   rC   r   r   r\   r   )r   r   r   r   astyper   r4   r   r   r   NaTr)   r   rw   concat
sort_indexr	   _valuesr   
_with_freqr   r,   rj   r\   )func
fill_valuerl   rm   rz   r{   r|   r}   normal_resultr~   padr1   dtir   r   r   test_aggregate_with_nat   sB   	






r   c            
   	   C   s,  d} t jd| dfd}t|g dd}ddt jddgd |d	< t|g dd}ttd
ddtd
ddt	j
td
ddtd
ddgd dd|d	< |d	}|td	dd}| }| }tdgdgd}t	||g}	|	 }	tdddd	|d	 jjdd |	_t|	| |jjd	ksJ d S )Nr^   r
   r_   r   r`   rd   rD   rg   rh   rf   rr   rs   rB   ri   r   r3   r   ru   r   )r   r   r   r   r   r   r4   r   r   r   r   r)   r   sizer   r   r   r	   r   r   r   r   r,   r-   r\   )
rl   rm   rz   r{   r|   r}   r   r~   r   r1   r   r   r   test_aggregate_with_nat_size   sD   






r   c                  C   sF   t tddd} d}| |ksJ t tdddd} d}| |ks!J d S )Nra   hri   zTimeGrouper(key='A', freq=<Hour>, axis=0, sort=True, dropna=True, closed='left', label='left', how='mean', convention='e', origin='start_day')rA   )rh   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   )r7   r1   r   r   r   	test_repr'  s   r   z$method, method_args, expected_values)rD   r   rD   )rD   rD   rD   c                 C   sd   t dtddddd}|d}tjg dd	dd
}t| fi ||}t ||d}t|| d S )NrD   r   r
   r   r   r   r   30min)z2017-01-01T00:00:00z2017-01-01T00:30:00z2017-01-01T01:00:00rr   r   )r   r	   r6   r   r   r   r,   r-   )r   r   expected_valuesr   	resampledr   r7   r1   r   r   r   test_upsample_sum:  s   
r   c                  C   s   g dg dd} t | }tdddd|d< d	}tjt|d
 |dddjdd}W d    n1 s9w   Y  dgd dg }t	tddt
dg }tjj||gddgd}t g ddgd dg d|d}t|| d S )N)
      	   )2   <   r   )pricevolumez
01/01/2018r3   Wr   week_startingz:DataFrameGroupBy.resample operated on the grouping columnsr9   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@)rm   r   )r   r	   r,   r<   r=   	set_indexr)   r6   interpolatelistr   r   
MultiIndexfrom_arraysrj   )drJ   r?   r7   r   r   expected_indr1   r   r   r   !test_groupby_resample_interpolateT  s6   r   ))r   operatorr   numpyr   rY   pandasr   r   r   r   r   pandas._testing_testingr,   pandas.core.groupby.grouperr   pandas.core.indexes.datetimesr	   fixturer   r2   r8   r@   rQ   markparametrizer   r   r]   rn   r   xfailr   r4   r   r   r   r   r   r   r   r   r   r   <module>   sx    




	

	
,(
