o
    թZh-                     @   s  d dl mZ d dlZd dlZd dlm  mZ d dl	Z
d dl	mZmZ d dlmZ d dlmZ dd Zdd Zd	d
 Zdd Zdd Zdd Zdd Zdd Zdd Zejdg ddd Zejdddgdd Zejd g d!d"d# Zd$d% Z e!d&d'd( Z"dS ))    )	timedeltaN)	DataFrameSeries)timedelta_rangec                  C   s\   t ddgt tddgd} | d }t dtjtjdgtddddd}t|| d S )	N      )minutesdataindexZ1min0 day   periodsfreq)	r   r   resampleasfreqnpnanr   tmassert_frame_equal)dfresultexpected r   [/var/www/html/lang_env/lib/python3.10/site-packages/pandas/tests/resample/test_timedelta.pytest_asfreq_bug   s   r   c                  C   s`   t dt jdg} tdg di| d }tddtjdgitdd	dd
d}t	
|| d S )N0s2svalue)   r      1sg      @g      @r   r   r   r   )pdto_timedeltaNaTr   r   meanr   r   r   r   r   )r   r   r   r   r   r   test_resample_with_nat   s   r(   c                  C   sr   t dddd} tdg di| d}|d }dd	tjtjtjtjd
gi}t|t ddddd}t|| d S )Nz00:00:00z00:10:00Z5minr   r   )r   r!   
   r	   Z2minr   r*   )r   r   r   r   r   r   r   r   )r   r   r   Zexpected_datar   r   r   r   $test_resample_as_freq_with_subperiod&   s   r+   c                  C   s   t dtdi} | | jd  } tdddd| _t dtditjtddd	d
}|	d }t
||  |d }|	d }t
|| d  d S )NAi     z0 daysZ30min2   r   r   minunitr#   )r   r   arangegroupbyr   sumr   r$   r%   r   r   r   assert_series_equal)r   r   r   sr   r   r   test_resample_with_timedeltas2   s   r8   c                  C   sV   t ttdtddddd} | d }t g dtddddd}t|| d S )	Nr!   1 dayr7   r/   r#   r   )r   r!   r   r   )r   listranger   r   r5   r   r6   )r7   r   r   r   r   r   %test_resample_single_period_timedeltaC   s   r<   c                  C   sF   t dddd} ttd| d}|d }|t}t|| d S )N0	   Z10msr   r#   )	r   r   r;   r   r'   astypefloatr   r6   )r   Zseriesr   r   r   r   r   #test_resample_timedelta_idempotencyJ   s
   
rA   c                  C   s   t dddd} ttjdt| | d}|jddd	 }|d }t dd
dd}t dddd}t	
|j| t	
|j| d S )Nr      r7   startr   r   r    r#   r   Z5s)offsetZ25srD   endr   Z29s)r   r   r   randomdefault_rngZstandard_normallenr   r'   r   assert_index_equalr   )rngtsZ	with_baseZwithout_baseZexp_without_baseZexp_with_baser   r   r   (test_resample_offset_with_timedeltaindexS   s   rN   c                  C   s   t dditjttdddd} | d d| d< | d	d
d }tjt	j
ddgddd	dd}t ddgddgd|d}|jddgdd}|d d|d< t|| d S )N	Group_objr,      r7   r1   r#   categoryGroup10sc                 S   s   |   jd S )Nr   )Zvalue_countsr   xr   r   r   <lambda>f   s    zDtest_resample_categorical_data_with_timedeltaindex.<locals>.<lambda>r   r*   zm8[s]dtyper)   ns)rO   rR   r   )Zaxis)r   r$   r%   r:   r;   r?   r   ZaggTimedeltaIndexr   arrayZas_unitZreindexr   r   )r   r   Zexp_tdir   r   r   r   2test_resample_categorical_data_with_timedeltaindexb   s   "r\   c                  C   s   t dddd} td| i| d}t dddd}t||dd}tj|jd	< |d d }t	|| |d d }t	|| d S )
Nr9   z6 dayZ4Dr)   timer#   2D)r   namer   )
r   r   r   r$   r&   ilocr   firstr   r6   )timesr   Ztimes2expresr   r   r   test_resample_timedelta_valuess   s   re   zstart, end, freq, resample_freq))8h21h59min50srS   3h)rh   Z22hZ1hZ5h)Z527DZ5006DZ3D10D)1Dri   rj   r^   )rf   rg   rS   Z2h)Z0hrg   rS   rh   )ri   Z85DDr^   c                 C   sx   t | ||d}ttt||d}|| }t || |d}t|j	| |j	j
|j
ks0J t|jd r:J d S )NrF   r#   )r   rD   rG   )r   r   r   r3   rJ   r   r0   r   rK   r   r   isnanr`   )rD   rG   r   Zresample_freqidxr7   r   Zexpected_indexr   r   r   !test_resample_timedelta_edge_case   s   ro   
duplicatesTFc                 C   s   t tjdjddtddddd}| rg d	|_|jd
d d d f d	dd }t dgd gd dgd g td
dddd}|j|_t
|| d S )Nr    )'  r   )sizer   rq   Z	3906250nsrC   r#   )r,   Br,   Cr"   Z3sc                 S   s   t | S )N)rJ   rT   r   r   r   rV      s    zEtest_resample_with_timedelta_yields_no_empty_groups.<locals>.<lambda>i   r      i     )r   r   rH   rI   normalr   columnslocr   applyr   r   )rp   r   r   r   r   r   r   3test_resample_with_timedelta_yields_no_empty_groups   s   
&r{   r2   )r7   msusrY   c                 C   s   t d|  d}tdtjt ddd|itjdddd	d
}|d	d}tdt
dt
dgitjdddddd
|}t|| d S )Nzm8[]r   r   r7   r1   Z20200101UTC)r   tzr#   r^   gGz?z0 days 00:00:00.990000z0 days 00:00:02.990000r    )r   r   r   )r   rX   r   r$   r%   r3   r?   Z
date_ranger   Zquantile	Timedeltar   r   )r2   rX   r   r   r   r   r   r    test_resample_quantile_timedelta   s"   	r   c                  C   st   t dd tdD } ttd| d}|jdddd }tg dt jd	d td
D ddd}t|| d S )Nc                 S       g | ]}t jd |d  dqS )x   r-   secondsr$   r   .0ir   r   r   
<listcomp>        z.test_resample_closed_right.<locals>.<listcomp>r*   r#   r0   right)closedlabel)r   r            r>   c                 S   r   )r   <   r   r   r   r   r   r   r      r      r)   )	r$   Indexr;   r   r   r5   rZ   r   r6   )rn   Zserr   r   r   r   r   test_resample_closed_right   s   r   Zpyarrowc                  C   sL   t jtddddd} ttjdtjd| d}|d }t	
|| d S )Nr9   r!   )r   zduration[ns][pyarrow]rW   r#   rj   )r$   r   r   r   r   r3   Zfloat64r   r'   r   r6   )rn   r   r   r   r   r   test_arrow_duration_resample   s   r   )#datetimer   numpyr   ZpytestZpandas.util._test_decoratorsutilZ_test_decoratorstdZpandasr$   r   r   Zpandas._testingZ_testingr   Zpandas.core.indexes.timedeltasr   r   r(   r+   r8   r<   rA   rN   r\   re   markZparametrizero   r{   r   r   Z
skip_if_nor   r   r   r   r   <module>   s:    
	


