o
    EÜh-  ã                   @   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é   é   )Zminutes©ÚdataÚindexZ1minú0 dayé   ©ÚperiodsÚfreq)	r   r   ÚresampleÚasfreqÚnpÚnanr   ÚtmÚassert_frame_equal)ÚdfÚresultÚexpected© r   úDlib/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30miné2   ©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   ÿr7   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 dayr6   r.   r"   r   )r   r    r   r   )r   ÚlistÚranger   r   r4   r   r5   )r6   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   r5   )r
   Zseriesr   r   r   r   r   Ú#test_resample_timedelta_idempotencyJ   s
   
r@   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   é   r6   ©Ústartr   r   r   r"   r   Z5s)ÚoffsetZ25s©rC   Ú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   rM   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+   é   r6   r0   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)rN   rQ   r   )Zaxis)r   r#   r$   r9   r:   r>   r   ZaggÚTimedeltaIndexr   ZarrayZas_unitZreindexr   r   )r   r   Zexp_tdir   r   r   r   Ú2test_resample_categorical_data_with_timedeltaindexb   s   "ÿþrZ   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 )
Nr8   z6 dayZ4Dr(   Útimer"   Ú2D)r
   Únamer   )
r   r   r   r#   r%   Úilocr   Úfirstr   r5   )Útimesr   Ztimes2ZexpÚresr   r   r   Útest_resample_timedelta_valuess   s   rb   zstart, end, freq, resample_freq))Ú8hÚ21h59min50srR   Ú3h)re   Z22hZ1hZ5h)Z527DZ5006DZ3DÚ10D)Ú1Drf   rg   r\   )rc   rd   rR   Z2h)Z0hrd   rR   re   )rf   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 )NrE   r"   )r   rC   rF   éÿÿÿÿ)r   r   r   r2   rI   r   r/   r   rJ   r
   r   Zisnanr^   )rC   rF   r   Zresample_freqÚidxr6   r   Zexpected_indexr   r   r   Ú!test_resample_timedelta_edge_case…   s   rk   Ú
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   rm   Z	3906250nsrB   r"   )r+   ÚBr+   ÚCr!   Z3sc                 S   s   t | ƒS )N)rI   rS   r   r   r   rU   ©   s    zEtest_resample_with_timedelta_yields_no_empty_groups.<locals>.<lambda>i   r   é   i  é   )r   r   rG   rH   Znormalr   ÚcolumnsÚlocr   Zapplyr   r   )rl   r   r   r   r   r   r   Ú3test_resample_with_timedelta_yields_no_empty_groupsž   s   þ
&þru   r1   )r6   ÚmsÚusrX   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   r6   r0   Z20200101ZUTC)r   Útzr"   r\   g®Gáz®ï?z0 days 00:00:00.990000z0 days 00:00:02.990000r   )r   ry   r   )r   rW   r   r#   r$   r2   r>   Z
date_ranger   ZquantileÚ	Timedeltar   r   )r1   rW   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,   ©Zseconds©r#   rz   ©Ú.0Úir   r   r   Ú
<listcomp>Ê   ó     z.test_resample_closed_right.<locals>.<listcomp>r)   r"   r/   Úright)ÚclosedZlabel)r   r   é   é   é   r=   c                 S   r|   )r}   é<   r~   r   r€   r   r   r   rƒ   Ð   r„   é   r(   )	r#   ÚIndexr:   r   r   r4   rY   r   r5   )rj   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 )Nr8   r    )r   zduration[ns][pyarrow]rV   r"   rg   )r#   rŒ   r   r   r   r2   Zfloat64r   r&   r   r5   )rj   r   r   r   r   r   Útest_arrow_duration_resampleÖ   s   rŽ   )#Zdatetimer   Znumpyr   ZpytestZpandas.util._test_decoratorsÚutilZ_test_decoratorsZtdZpandasr#   r   r   Zpandas._testingZ_testingr   Zpandas.core.indexes.timedeltasr   r   r'   r*   r7   r;   r@   rM   rZ   rb   ZmarkZparametrizerk   ru   r{   r   Z
skip_if_norŽ   r   r   r   r   Ú<module>   s:    
	þ


