o
    gj+                     @   s4  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
 d dlmZ d dlmZ d dlmZ e	ejdeddd	d
Zdd Zdd Zdd Zdd Zejddejfdejfdejfddd fgdd Zdd Z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#d/d0 Z$d1d2 Z%ejd3d!i g d4fd!d"d ig d4fd!d"d#id#ej!d#gfd!d"d5i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"d5iej!ej!ej!gfgd7d8 Z&d9d: Z'dS );    )datetime)methodcallerN)	DataFrameSeries	Timestamp)Grouper)
date_range  z1/1/2000periodsindexc                  C   sj   t dddd} t| }dd }||}tdd |}|jd|_|jd|_t|| d S )	NArightfreqlabelclosedc                 S   s   |   dd  S )N)sort_valuesx r   e/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/resample/test_time_grouper.pyf      ztest_apply.<locals>.fc                 S      | j S Nyearr   r   r   r   <lambda>       ztest_apply.<locals>.<lambda>r   )r   test_seriesgroupbyapplyr   	dropleveltmassert_series_equal)groupergroupedr   appliedexpectedr   r   r   
test_apply   s   

r,   c                  C   sx   t jtd d d< tdd  } tdddd}t| }|j| _t||  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   )
npnanr"   r#   countr   r   r&   r'   resample)r+   r(   resultr   r   r   
test_count$   s   r3   c                  C   s@   t jddd } t dd tj}| j|_t| | d S )Nr   r   )r   c                 S   r   r   r   r   r   r   r   r    6   r!   z&test_numpy_reduction.<locals>.<lambda>)	r"   r1   prodr#   aggr.   r   r&   r'   r2   r+   r   r   r   test_numpy_reduction3   s   r7   c            	      C   sr   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         )opencloser   Mr   F)
group_keysc                 S   s   | d | d  S )Nr>   r=   r   )dfr   r   r   r   H   r   ztest_apply_iteration.<locals>.f)	r   r   r   _get_grouperr#   r$   r&   assert_index_equalr   )	NindrB   tg_r(   r)   r   r2   r   r   r   test_apply_iteration<   s   

rI   z
name, func
Int64IndexIndexFloat64Index
MultiIndexc                 C   s   t | dS )Nr<   )r&   makeCustomIndex)mr   r   r   r    V   s    r    c                 C   st   d}||}t dtj|i|d}d|  d}tjt|d |tdd W d    d S 1 s3w   Y  d S )	Nr<   ar   zVOnly valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of ''matchr9   r@   )	r   r.   randomrandnpytestraises	TypeErrorr#   r   )namefuncnr   rB   msgr   r   r   test_fails_on_no_datetime_indexP   s   
"r]   c                  C   s*  d} t j| 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
< |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   BCr9   columns  r;   r<   r-      keyr9   rg   r   )
r.   rT   rU   r   r   r#   r   r&   assert_frame_equal	get_group)r[   datarB   r)   r   r   r   test_aaa_group_orderf   s"   




$$$$(rl   c                 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}t||  }t||  }tddddd|_	t
|| dS )z?Check TimeGrouper's aggregation is identical as normal groupby.r^   r_   r`   rc   )r;   r<   r-   r_   rf   rg   re   r;   r<   r-   rf   r9   rh   
2013-01-01r:   r   r   rY   N)r.   rT   rU   r   r   r#   r   getattrr   r   r&   assert_equal)resample_methodrk   	normal_dfdt_dfnormal_grouped
dt_groupedr+   	dt_resultr   r   r   test_aggregate_normal|   s&   





rw   zmethod, method_args, unitsum	min_countr;   r4   c                 C   sn   t dgd tjgd  tdddd}t| fi ||d}t d|gtjd	d
gddd}t	|| d S )Nr   r<   2017r_   r
   r   2dg        z
2017-01-01z
2017-01-032Dr@   )
r   r.   r/   r   r   r1   pdDatetimeIndexr&   r'   )methodmethod_argsunitsr2   r+   r   r   r   !test_resample_entirely_nat_window   s   &r   zfunc, fill_valueminmax)rx   r   )r4   r;   )r0   r   c                 C   s&  d}t j|dd}t|g dd}ddt jddgd |d	< t|g dd}td
ddtd
ddtjtd
ddtd
ddgd |d	< |	d	}|	t
d	dd}t||  }t||  }	t|gd gdgg dd}
||
}| }tdddd	d}|d |_t||	 |	jjd	ksJ d S )Nr^   r_   int64r`   rc   r;   r<   rf   rg   re   r9   rh   r-   )r   rd   rm   rn   )r.   rT   rU   astyper   r/   r   r}   NaTr#   r   ro   append
sort_indexr   
_with_freqr   r&   ri   rY   )rZ   
fill_valuer[   rk   rr   rs   rt   ru   normal_resultrv   padr+   dtir   r   r   test_aggregate_with_nat   s0   	





r   c            
      C   s  d} t j| dd}t|g dd}ddt jddgd |d	< t|g dd}td
ddtd
ddtjtd
ddtd
ddgd |d	< |	d	}|	t
d	dd}| }| }tdgdgd}||}	|	 }	tdddd	dd |	_t|	| |jjd	ksJ d S )Nr^   r_   r   r`   rc   r;   r<   rf   rg   re   r9   rh   r   r-   r   rm   rn   )r.   rT   rU   r   r   r/   r   r}   r   r#   r   sizer   r   r   r   r   r   r&   r'   rY   )
r[   rk   rr   rs   rt   ru   r   rv   r   r+   r   r   r   test_aggregate_with_nat_size   s6   





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 )Nr   Hrh   zTimeGrouper(key='A', freq=<Hour>, axis=0, sort=True, closed='left', label='left', how='mean', convention='e', origin='start_day')r8   )rg   r   originzTimeGrouper(key='A', freq=<Hour>, axis=0, sort=True, closed='left', label='left', how='mean', convention='e', origin=Timestamp('2000-01-01 00:00:00')))reprr   r6   r   r   r   	test_repr   s   r   z$method, method_args, expected_values)r;   r   r;   r<   )r;   r;   r;   c                 C   sb   t dtddddd}|d}tjg ddd	}t| fi ||}t ||d}t|| d S )
Nr;   rz   r<   r   r   r   r   30T)z2017-01-01T00:00:00z2017-01-01T00:30:00z2017-01-01T01:00:00r@   )r   r   r1   r}   r~   r   r&   r'   )r   r   expected_valuesr   	resampledr   r2   r+   r   r   r   test_upsample_sum  s   
r   c                  C   sZ  g dg dd} t | }tdddd|d< |dd	d
jdd}d}tjt|d^ t	j
jddtdfdtdfdtdfdtdfdtdfdtdfdtdfdtdfdtdfdtdfdtdfdtdfdtdfdtdfdtdfgd	dgd }W d    n1 sw   Y  t g d!d"gd# dg d|d$}t|| d S )%N)
      	   )2   <   r   )pricevolumez
01/01/2018r-   Wr   week_startingr   1Dlinear)r   z containing strings is deprecatedrR   )r   z
2018-01-07r   z
2018-01-08z
2018-01-09z
2018-01-10z
2018-01-11z
2018-01-12z
2018-01-13z
2018-01-14z
2018-01-15z
2018-01-16z
2018-01-17z
2018-01-18z
2018-01-19z
2018-01-20z
2018-01-21r   )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@   )rk   r   )r   r   	set_indexr#   r1   interpolater&   assert_produces_warningFutureWarningr}   rM   from_tuplesr   ri   )drB   r2   r\   expected_indr+   r   r   r   !test_groupby_resample_interpolate&  sN   














r   )(r   operatorr   numpyr.   rV   pandasr}   r   r   r   pandas._testing_testingr&   pandas.core.groupby.grouperr   pandas.core.indexes.datetimesr   rT   rU   r"   r,   r3   r7   rI   markparametrizemakeIntIndexmakeUnicodeIndexmakeFloatIndexr]   rl   rw   r/   r   r   r   r   r   r   r   r   r   r   <module>   sr    	

	$
	
" 
