a
    Pf=.                     @   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   `/var/www/ai-form-bot/venv/lib/python3.9/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)Zsort_valuesxr   r   r   f    s    ztest_apply.<locals>.fc                 S   s   | j S Nyearr   r   r   r   <lambda>$       ztest_apply.<locals>.<lambda>r   )r   groupbyapplyr   Z	dropleveltmassert_series_equal)r   groupergroupedr    Zappliedexpectedr   r   r   
test_apply   s    

r-   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   s   | j S r!   r"   r   r   r   r   r$   .   r%   ztest_count.<locals>.<lambda>r   r   r   )	r   nanr&   countr   r   r(   r)   resample)r   r,   r*   resultr   r   r   
test_count+   s    r3   c                 C   sr   | j ddd }d}tjt|d& | dd tj}W d    n1 sP0    Y  |j|_t	|| d S )Nr   r   )r   zusing SeriesGroupBy.prodmatchc                 S   s   | j S r!   r"   r   r   r   r   r$   ?   r%   z&test_numpy_reduction.<locals>.<lambda>)
r1   prodr(   assert_produces_warningFutureWarningr&   Zaggr   r   r)   )r   r2   msgr,   r   r   r   test_numpy_reduction:   s    4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   ZMEr   F)Z
group_keysc                 S   s   | d | d  S )Nr@   r?   r   )dfr   r   r   r    Q   s    ztest_apply_iteration.<locals>.f)	r	   r   r   Z_get_grouperr&   r'   r(   Zassert_index_equalr   )	NindrB   tgr*   _r+   r    r2   r   r   r   test_apply_iterationE   s    

rG   r   r>   r
   abg?g@c                 C   sp   t | j}tdtt| i| d}d| d}tjt|d  |t	dd W d    n1 sb0    Y  d S )NrH   r   zVOnly valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of ''r4   r<   rA   )
type__name__r   rangelenpytestZraises	TypeErrorr&   r   )r   namerB   r9   r   r   r   test_fails_on_no_datetime_indexY   s    

rR   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Cr<   columns  r>   r.      keyr<   r]   r   )r   r   r   r   r   r   r&   r   r(   assert_frame_equalZ	get_group)ndatarB   r+   r   r   r   test_aaa_group_ordern   s"    




$$$$rb   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
   rS   rT   rU   rY   r>   r
   r.   rT   r\   rT   r]   r[   r>   r.   r\   M8[ns]dtyper<   r^   
2013-01-01r=   r   r   rQ   N)r   r   r   r   r   r   r   r&   r   getattrr	   r   r(   Zassert_equal)Zresample_methodra   	normal_dfdt_dfnormal_grouped
dt_groupedr,   	dt_resultr   r   r   test_aggregate_normal   s*    






rq   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 )rc   r
   rd   rU   rY   re   rT   r]   r[   r>   r.   r\   r<   r^   ri   rj   N)r   r   r   r   r   r   r&   r   Znthr	   r   r(   r_   )ra   rl   rm   rn   ro   r,   rp   r   r   r   test_aggregate_nth   s$    







rs   zmethod, method_args, unitsumZ	min_countr6   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
   2017rT   r   r   Z2dz
2017-01-01z
2017-01-03rf   Z2Drh   r   g        )
r   r   r/   r	   r   r1   pdDatetimeIndexr(   r)   )methodmethod_argsunitserr2   Zexp_dtir,   r   r   r   !test_resample_entirely_nat_window   s
    &r}   zfunc, fill_valueminmax)rt   r   )r6   r>   )r0   r   c              	   C   sF  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sBJ d S )NrS   r
   rT   int64rU   rY   r>   r\   r]   r[   rf   rg   r<   r^   r.   )r   rZ   ri   r=   r   r   rQ   r{   )r   r   r   r   astyper   r/   r   r   rw   NaTr&   r   rk   concat
sort_indexr	   _valuesr{   
_with_freqr   r(   r_   rQ   )funcZ
fill_valuer`   ra   rl   rm   rn   ro   normal_resultrp   padr,   Z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s*J d S )NrS   r
   rT   r   rU   rY   r>   r\   r]   r[   rf   rg   r<   r^   r   r.   r   ri   r   )r   r   r   r   r   r   r/   r   r   rw   r   r&   r   sizer   r   r   r	   r   r{   r   r   r(   r)   rQ   )
r`   ra   rl   rm   rn   ro   r   rp   r   r,   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sBJ d S )NrV   hr^   zTimeGrouper(key='A', freq=<Hour>, axis=0, sort=True, dropna=True, closed='left', label='left', how='mean', convention='e', origin='start_day')r;   )r]   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   )r2   r,   r   r   r   	test_repr'  s    r   z$method, method_args, expected_values)r>   r   r>   )r>   r>   r>   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 )Nr>   ru   r
   r   r   r   r   Z30min)z2017-01-01T00:00:00z2017-01-01T00:30:00z2017-01-01T01:00:00rf   rv   )r   r	   r1   rw   rx   r   r(   r)   )ry   rz   Zexpected_valuesr|   Z	resampledr   r2   r,   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 sr0    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   )Zpricevolumez
01/01/2018r.   Wr   week_startingz:DataFrameGroupBy.resample operated on the grouping columnsr4   r   Z1DZlinear)ry   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@)ra   r   )r   r	   r(   r7   DeprecationWarningZ	set_indexr&   r1   Zinterpolatelistr   rw   
MultiIndexfrom_arraysr_   )drB   r9   r2   r   r   Zexpected_indr,   r   r   r   !test_groupby_resample_interpolateT  s8    
 r   ))r   operatorr   numpyr   rO   Zpandasrw   r   r   r   r   Zpandas._testingZ_testingr(   Zpandas.core.groupby.grouperr   Zpandas.core.indexes.datetimesr	   Zfixturer   r-   r3   r:   rG   markZparametrizer   r   rR   rb   rq   Zxfailrs   r/   r}   r   r   r   r   r   r   r   r   r   <module>   sv   



	


	
,(
