a
    d.                     @   s,  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jdd Zd	d
 Zdd Zdd Zdd Zejdejejejdd 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$d-d. Z%d/d0 Z&ejd1di g d2fdd d ig d2fdd d!id!ej"d!gfdd d3iej"ej"ej"gfd"i g d4fd"d d ig d4fd"d d!id!ej"d!gfd"d d3iej"ej"ej"gfgd5d6 Z'd7d8 Z(dS )9    )datetime)methodcallerN)	DataFrame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   p/var/www/html/stable-diffusion-webui/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A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    r2   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>)
r0   prodr'   Zassert_produces_warningFutureWarningr%   Zaggr   r   r(   )r   r1   msgr+   r   r   r   test_numpy_reduction9   s    4r8   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   Mr   F)Z
group_keysc                 S   s   | d | d  S )Nr>   r=   r   )dfr   r   r   r   P   s    ztest_apply_iteration.<locals>.f)	r   r   r   Z_get_grouperr%   r&   r'   Zassert_index_equalr   )	NindrA   tgr)   _r*   r   r1   r   r   r   test_apply_iterationD   s    

rF   funcc                 C   s   t | dS )Nr	   )r'   ZmakeCustomIndex)mr   r   r   r#   ^   r$   r#   c                 C   s   d}| |}t |j}tdtjd|i|d}d| d}tjt	|d  |
tdd W d    n1 st0    Y  d S )	Nr	   ar   zVOnly valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of ''r3   r:   r@   )type__name__r   r   r   r   r   pytestZraises	TypeErrorr%   r   )rG   nr   namerA   r7   r   r   r   test_fails_on_no_datetime_indexX   s    

rQ   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	      r   BCr:   columns  r<   r-      keyr:   r[   r   )r   r   r   r   r   r   r%   r   r'   assert_frame_equalZ	get_group)rO   datarA   r*   r   r   r   test_aaa_group_ordero   s"    




$$$$r_   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	   )rR   rS   rT   rW   )r<   r	   r-   rS   rZ   rS   r[   rY   r<   r-   rZ   r:   r\   
2013-01-01r;   r   r   rP   N)r   r   r   r   r   r   r%   r   getattrr   r   r'   Zassert_equal)Zresample_methodr^   	normal_dfdt_dfnormal_grouped
dt_groupedr+   	dt_resultr   r   r   test_aggregate_normal   s$    





ri   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 r`   )r   r   r   r   r   r   r%   r   Znthr   r   r'   r]   )r^   rd   re   rf   rg   r+   rh   r   r   r   test_aggregate_nth   s$    







rk   zmethod, method_args, unitsumZ	min_countr<   r5   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	   2017rS   r   r   Z2dg        z
2017-01-01z
2017-01-03Z2Dr@   )
r   r   r.   r   r   r0   pdDatetimeIndexr'   r(   )methodmethod_argsunitsr1   r+   r   r   r   !test_resample_entirely_nat_window   s    &rt   zfunc, fill_valueminmax)rl   r   )r5   r<   )r/   r   c                 C   s4  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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||
g}| }tdddd	d}|d |_t||	 |	jjd	ks0J d S )NrR   r	   rS   int64rT   rW   r<   rZ   r[   rY   r:   r\   r-   )r   rX   ra   rb   )r   r   r   r   astyper   r.   r   rn   NaTr%   r   rc   concat
sort_indexr   
_with_freqr   r'   r]   rP   )rG   Z
fill_valuerO   r^   rd   re   rf   rg   normal_resultrh   padr+   Zdtir   r   r   test_aggregate_with_nat   s0    	




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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||g}	|	 }	tdddd	dd |	_t|	| |jjd	ksJ d S )NrR   r	   rS   rw   rT   rW   r<   rZ   r[   rY   r:   r\   r   r-   r   ra   rb   )r   r   r   r   rx   r   r.   r   rn   ry   r%   r   sizer   rz   r{   r   r|   r   r'   r(   rP   )
rO   r^   rd   re   rf   rg   r}   rh   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sBJ d S )Nr   Hr\   zTimeGrouper(key='A', freq=<Hour>, axis=0, sort=True, dropna=True, closed='left', label='left', how='mean', convention='e', origin='start_day')r9   )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   )r1   r+   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<   rm   r	   r   r   r   r   Z30T)z2017-01-01T00:00:00z2017-01-01T00:30:00z2017-01-01T01:00:00r@   )r   r   r0   rn   ro   r   r'   r(   )rp   rq   Zexpected_valuesrs   Z	resampledr   r1   r+   r   r   r   test_upsample_sum%  s    
r   c                  C   s0  g dg dd} t | }tdddd|d< |dd	d
jdd}tjj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dt	df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   Zweek_startingr   Z1DZlinear)rp   r   z
2018-01-07z
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@   )r^   r   )r   r   Z	set_indexr%   r0   Zinterpolatern   Z
MultiIndexfrom_tuplesr   r'   r]   )drA   r1   Zexpected_indr+   r   r   r   !test_groupby_resample_interpolate>  sL    
















r   ))r   operatorr   numpyr   rM   Zpandasrn   r   r   r   Zpandas._testingZ_testingr'   Zpandas.core.groupby.grouperr   Zpandas.core.indexes.datetimesr   Zfixturer   r,   r2   r8   rF   markZparametrizeZmakeIntIndexZmakeStringIndexZmakeFloatIndexrQ   r_   ri   Zxfailrk   r.   rt   r   r   r   r   r   r   r   r   r   <module>   sv   
	


	
" 
