o
    ÛÁgÓ`  ã                   @   sd   d dl Zd dlZd dlmZmZmZmZmZm	Z	m
Z
 d dlmZ d dlm  mZ G dd„ dƒZdS )é    N)Ú	DataFrameÚIndexÚ
MultiIndexÚSeriesÚ	TimestampÚ
date_rangeÚto_datetimec                   @   sÌ  e Zd Zdd„ Zdd„ Zdd„ Zej dde	 
d	¡g¡d
d„ ƒZej dde	 d	¡dg¡dd„ ƒZej ddde g d¢¡g¡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d&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Z d6d7„ Z!d8d9„ Z"d:d;„ Z#d<d=„ Z$d>d?„ Z%ej d@dAdBdCgdD fdAdEdCgdF dGg fdAdHdCgdF dIg fdJdBdCgdD fdJdEdCgdF dGg fdJdHdCgdF dIg fdBdBdCgdD fdBdEdCgdF dGg fdBdHdCgdF dIg fdKdBdCgdD fdKdEdCgdF dGg fdKdHdCgdF dIg fdLdBdCgdD fdLdEdCgdF dGg fdLdHdCgdF dIg fg¡dMdN„ ƒZ&ej dOdPdEej'dQej (dR¡dSdTdUdVdWdXdBdHg
¡dYdZ„ ƒZ)d[d\„ Z*d]d^„ Z+d_d`„ Z,dadb„ Z-dcdd„ Z.dedf„ Z/dgdh„ Z0diS )jÚTestRollingTSc                 C   s`   t tddddtdƒdœƒ d¡| _t dtdƒiƒ| _tdƒtd	ƒtd
ƒtdƒtdƒg| j_d S )NÚ20130101é   Ús©ÚperiodsÚfreq©ÚAÚBr   r   ú20130101 09:00:00ú20130101 09:00:02ú20130101 09:00:03ú20130101 09:00:05ú20130101 09:00:06)r   r   ÚrangeÚ	set_indexÚregularÚraggedr   Úindex)ÚselfÚmethod© r   úh/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/window/test_timeseries_window.pyÚsetup_method   s   ÿþûzTestRollingTS.setup_methodc                 C   sP   t ddddtjdgitdƒtdƒtdƒtd	ƒtd
ƒgd}| | d¡ ¡  d S )Nr   r   é   é   é   r   r   r   r   r   ©r   Ú2s)r   ÚnpÚnanr   ÚrollingÚsum©r   Údfr   r   r    Útest_doc_string&   s   ûþ
zTestRollingTS.test_doc_stringc                 C   sŠ   d}t jt|d | jjdd W d   ƒ n1 sw   Y  d}t jt|d | j ¡ jdd W d   ƒ d S 1 s>w   Y  d S )Nz@passed window foobar is not compatible with a datetimelike index©ÚmatchÚfoobar©Úwindowúwindow must be an integer)ÚpytestÚraisesÚ
ValueErrorr   r)   Úreset_index)r   Úmsgr   r   r    Útest_invalid_window_non_int5   s   ÿ"ÿz)TestRollingTS.test_invalid_window_non_intr   Ú2MSr#   c                 C   sF   d}t jt|d | jj|d W d   ƒ d S 1 sw   Y  d S )Nz-\<2 \* MonthBegins\> is a non-fixed frequencyr.   r1   ©r4   r5   r6   r   r)   )r   r   r8   r   r   r    Útest_invalid_window_nonfixed@   s   "ÿz*TestRollingTS.test_invalid_window_nonfixedÚ1DÚ2msc                 C   s   | j j|d d S )Nr1   )r   r)   )r   r   r   r   r    Útest_valid_windowH   s   zTestRollingTS.test_valid_windowÚminpç      ð?Úfoo)r"   r#   é   c                 C   sH   d}t jt|d | jjd|d W d   ƒ d S 1 sw   Y  d S )NzQlocal variable 'minp' referenced before assignment|min_periods must be an integerr.   r=   ©r2   Úmin_periodsr;   )r   r@   r8   r   r   r    Útest_invalid_minpL   s
   ÿ"ÿzTestRollingTS.test_invalid_minpc                 C   sÌ   | j }d}tjt|d |jddd W d   ƒ n1 sw   Y  | ¡ }tdt|ƒd|d< |jd	dd ¡  d
}tjt|d |jd	dd W d   ƒ n1 sUw   Y  |jd	ddj	 ¡  d S )NzSinvalid on specified as foobar, must be a column \(of DataFrame\), an Index or Noner.   r&   r0   )r2   Úonr
   ©r   ÚCÚ2dr3   r   )
r   r4   r5   r6   r)   Úcopyr   Úlenr*   r   )r   r,   r8   r   r   r    Útest_onV   s   ÿÿÿzTestRollingTS.test_onc                 C   sb   t tddddtdƒdœƒ}|jjsJ ‚|jddd ¡  | d¡}|jjs(J ‚| d¡ ¡  d S )	Nr
   r   r   r   r   r&   r   ©rG   )	r   r   r   r   Úis_monotonicr)   r*   r   r   r+   r   r   r    Útest_monotonic_ono   s   ÿ
zTestRollingTS.test_monotonic_onc                 C   sà   t tddddtdƒdœƒ}| d¡}|j ¡ }|d |d< ||_|jjr'J ‚d	}tjt	|d
 | 
d¡ ¡  W d   ƒ n1 sBw   Y  | ¡ }d}tjt	|d
 |j
ddd ¡  W d   ƒ d S 1 siw   Y  d S )Nr
   r   r   r   r   r   rC   r   zindex must be monotonicr.   r&   zNinvalid on specified as A, must be a column \(of DataFrame\), an Index or NonerN   )r   r   r   r   r   Úto_listrO   r4   r5   r6   r)   r*   r7   )r   r,   Únon_monotonic_indexr8   r   r   r    Útest_non_monotonic_on}   s$   ÿ

ÿÿ"ÿz#TestRollingTS.test_non_monotonic_onc                 C   sÎ   t tdƒtdddddœƒ}tdƒtdƒtdƒtdƒtd	ƒg|d
< | d
¡ d¡j ¡ jdd}|jdd
dj ¡ }t	 
||¡ | d
¡ d¡dg  ¡  ¡ dd
g }|jdd
ddg  ¡ }t	 ||¡ d S )Nr   r   Ú3sr   )r   rI   r   r   r   r   r   r&   T)ÚdroprN   r   )r   r   r   r   r   r)   r   r*   r7   ÚtmÚassert_series_equalÚassert_frame_equal©r   r,   ÚexpectedÚresultr   r   r    Útest_frame_on–   s    ÿû	$	ÿzTestRollingTS.test_frame_onc              
   C   s  t g d¢dddtjdgttdƒtdƒtdƒtd	ƒtd
ƒgƒdœg d¢d}t g d¢dddtjdg|d dœg d¢d}|jddd ¡ }|}t ||¡ t	dddtjdgdd}|jdddj
 ¡ }t ||¡ |g d¢ }|jdddg d¢  ¡ }t ||¡ d S )N)r   r"   r#   rC   r$   r   r"   r#   r$   r   r   r   r   r   ©r   r   rI   )r   rI   r   )Úcolumns©ç        r"   rC   rC   é   rC   rI   r&   rN   r   )Úname)r   r'   r(   r   r   r)   r*   rV   rX   r   r   rW   )r   r,   Ú	expected1r[   rZ   r   r   r    Útest_frame_on2·   s6   ûÿýòþzTestRollingTS.test_frame_on2c                 C   sè   | j  ¡ }tdddd|_|jddd ¡ }|jdd ¡ }t ||¡ tddd	d|_|jddd ¡ }|jd	dd ¡ }t ||¡ |jddd ¡ }|jd	dd ¡ }t ||¡ |jdd ¡ }|jd	d ¡ }t ||¡ d S )
Nr
   r   ÚDr   r"   rD   r=   r1   Ú2D)r   rK   r   r   r)   r*   rV   rX   rY   r   r   r    Útest_basic_regularÜ   s   
z TestRollingTS.test_basic_regularc                 C   sf   | j }|jddd ¡ }| d¡ ¡ }t ||¡ |jddd ¡ }|jddd ¡ }t ||¡ d S )Nr#   r"   ©rE   r&   )r   r)   r*   rV   rX   rY   r   r   r    Útest_min_periodsò   s   zTestRollingTS.test_min_periodsc                 C   sn  t ddgd itdƒtdƒtdƒtdƒtdƒgd	}d
}tjt|d | jjddd W d   ƒ n1 s6w   Y  | ¡ }g d¢|d< |jddd ¡ }t	 
||¡ | d¡ ¡ }t	 
||¡ | ¡ }g d¢|d< |jddd ¡ }t	 
||¡ | ¡ }tjddddg|d< |jddd ¡ }t	 
||¡ | ¡ }tjdddtjg|d< |jddd ¡ }t	 
||¡ d S )Nr   r"   r   z20130101 09:00:01r   r   z20130101 09:00:04r   r%   z3closed must be 'right', 'left', 'both' or 'neither'r.   r&   Úblabla)r2   Úclosed)rA   r#   r#   r#   r"   Úright)rk   )rA   r#   rC   rC   r#   ÚbothrA   r#   ÚleftÚneither)r   r   r4   r5   r6   r   r)   rK   r*   rV   rX   r'   r(   )r   r,   r8   rZ   r[   r   r   r    Útest_closed   s>   ûþÿzTestRollingTS.test_closedc                 C   s®  | j }|jddd ¡ }| ¡ }g d¢|d< t ||¡ |jddd ¡ }| ¡ }g d¢|d< t ||¡ |jddd ¡ }| ¡ }tjtjd	tjd
g|d< t ||¡ |jddd ¡ }| ¡ }g d¢|d< t ||¡ |jdd ¡ }| ¡ }g d¢|d< t ||¡ |jddd ¡ }| ¡ }g d¢|d< t ||¡ |jdd	d ¡ }| ¡ }tjtjd	ddg|d< t ||¡ |jddd ¡ }| ¡ }g d¢|d< t ||¡ d S )NÚ1sr"   rD   ©r`   r"   r#   rC   r$   r   r&   r_   r#   rC   ra   rT   )r`   r"   rC   r   ra   r1   Ú4s)r`   r"   rC   é   é	   rt   ru   Ú5s)r`   r"   rC   rt   é
   )r   r)   r*   rK   rV   rX   r'   r(   ©r   r,   r[   rZ   r   r   r    Útest_ragged_sum,  sB   zTestRollingTS.test_ragged_sumc                 C   ón   | j }|jddd ¡ }| ¡ }g d¢|d< t ||¡ |jddd ¡ }| ¡ }g d¢|d< t ||¡ d S ©Nrq   r"   rD   rr   r   r&   ©r`   r"   g      ø?ç      @g      @)r   r)   ÚmeanrK   rV   rX   rx   r   r   r    Útest_ragged_meanW  ó   zTestRollingTS.test_ragged_meanc                 C   rz   r{   )r   r)   ÚmedianrK   rV   rX   rx   r   r   r    Útest_ragged_mediand  r€   z TestRollingTS.test_ragged_medianc                 C   sr   | j }|jddd d¡}| ¡ }g d¢|d< t ||¡ |jddd d¡}| ¡ }g d¢|d< t ||¡ d S )	Nrq   r"   rD   ç      à?rr   r   r&   r|   )r   r)   ÚquantilerK   rV   rX   rx   r   r   r    Útest_ragged_quantileq  s   z"TestRollingTS.test_ragged_quantilec                 C   óø   | j }|jdddjdd}| ¡ }dgd |d< t ||¡ |jdddjdd}| ¡ }tjgd |d< t ||¡ |jd	ddjdd}| ¡ }dgd
gd  |d< t ||¡ |jdddjdd}| ¡ }tjddddg|d< t ||¡ d S )Nrq   r"   rD   r   ©Úddofr`   r   r   rT   rƒ   r$   rv   g»¹øÛž æ?rA   gÊPSé§ô?)r   r)   ÚstdrK   rV   rX   r'   r(   rx   r   r   r    Útest_ragged_std~  ó"   zTestRollingTS.test_ragged_stdc                 C   r†   )Nrq   r"   rD   r   r‡   r`   r   r   rT   g      Ð?r$   rv   rƒ   rA   gªªªªªªú?)r   r)   ÚvarrK   rV   rX   r'   r(   rx   r   r   r    Útest_ragged_var•  r‹   zTestRollingTS.test_ragged_varc                 C   s~   | j }|jddd ¡ }| ¡ }tjgd |d< t ||¡ |jddd ¡ }| ¡ }tjgd g d¢ |d< t ||¡ d S )	NrT   r"   rD   r   r   rv   r#   )r`   r`   r`   )r   r)   ÚskewrK   r'   r(   rV   rX   rx   r   r   r    Útest_ragged_skew¬  s   zTestRollingTS.test_ragged_skewc                 C   s|   | j }|jddd ¡ }| ¡ }tjgd |d< t ||¡ |jddd ¡ }| ¡ }tjgd dg |d< t ||¡ d S )	NrT   r"   rD   r   r   rv   r$   g333333ó¿)r   r)   ÚkurtrK   r'   r(   rV   rX   rx   r   r   r    Útest_ragged_kurt¹  s   zTestRollingTS.test_ragged_kurtc                 C   sÎ   | j }|jddd ¡ }| ¡ }g d¢|d< t ||¡ | j }|jdd ¡ }t ||¡ |jddd ¡ }| ¡ }g d¢|d< t ||¡ |jdd	d ¡ }| ¡ }tjtjd	tjd	g|d< t ||¡ d S )
Nrq   r"   rD   )rA   r"   r"   r"   r"   r   r1   r&   )rA   r"   r#   r"   r#   r#   )r   r)   ÚcountrK   rV   rX   r'   r(   rx   r   r   r    Útest_ragged_countÆ  s    zTestRollingTS.test_ragged_countc                 C   sÞ   t tddddg d¢dœƒ d¡}| d¡ ¡ }| ¡ }g d¢|d	< t ||¡ t tddddg d
¢dœƒ d¡}t ||¡ | d¡ ¡ }| ¡ }g d¢|d	< t ||¡ | d¡ ¡ }| ¡ }g d¢|d	< t ||¡ d S )Nr
   r   r   r   rr   r   r   rq   r   )r   r$   rC   r$   r   r&   )ç      @r$   rC   rC   r$   rv   )r”   r$   rC   rC   rC   )r   r   r   r)   ÚminrK   rV   rX   rx   r   r   r    Útest_regular_minÜ  s.   ÿþÿþzTestRollingTS.test_regular_minc                 C   s    | j }|jddd ¡ }| ¡ }g d¢|d< t ||¡ |jddd ¡ }| ¡ }g d¢|d< t ||¡ |jddd ¡ }| ¡ }g d	¢|d< t ||¡ d S )
Nrq   r"   rD   rr   r   r&   )r`   r"   r"   rC   rC   rv   )r`   r   r   r"   r"   )r   r)   r•   rK   rV   rX   rx   r   r   r    Útest_ragged_minõ  ó   zTestRollingTS.test_ragged_minc                 C   sš   d}t dtj |¡itd|ddd}|jddd	 ¡ }| d
¡ ¡ }|| dk  ¡  ¡ s/J ‚|jddd	 ¡ }| d¡ ¡ }|| dk  ¡  ¡ sKJ ‚d S )Ni'  r   r
   r   r   r%   r#   r"   rh   r&   g{®Gáz„?éÈ   Ú200s)	r   r'   ÚrandomÚrandnr   r)   r•   ÚallÚbool)r   ÚNÚdfprZ   r[   r   r   r    Útest_perf_min  s   ÿzTestRollingTS.test_perf_minc                 C   s    | j }|jddd ¡ }| ¡ }g d¢|d< t ||¡ |jddd ¡ }| ¡ }g d¢|d< t ||¡ |jddd ¡ }| ¡ }g d¢|d< t ||¡ d S )Nrq   r"   rD   rr   r   r&   rv   )r   r)   ÚmaxrK   rV   rX   rx   r   r   r    Útest_ragged_max  r˜   zTestRollingTS.test_ragged_maxzfreq, op, result_dataÚmsr•   r`   rw   r~   ru   gÇqÇqÌ?r¢   g       @r   Úhre   c                 C   sl   t dd|› dd}td|d}tj|jd< d|jd	< t|jd
|› d|ƒƒ }t||d}t ||¡ d S )Nz2018-1-1 01:00:00Ú1rw   )Ústartr   r   r   )Údatar   r"   r#   éÿÿÿÿÚ10r1   )	r   r   r'   r(   ÚilocÚgetattrr)   rV   rW   )r   r   ÚopÚresult_datar   r   r[   rZ   r   r   r    Útest_freqs_ops*  s   
zTestRollingTS.test_freqs_opsÚfr*   r’   z ignore:min_periods:FutureWarning)Úmarksr   r‰   rŒ   r   rŽ   c                 C   sj   | j d }|jdd}|jdd}t||ƒƒ }t||ƒƒ }t ||¡ | d¡}| d¡}t ||¡ d S )Nr#   r"   r1   rq   rƒ   )r   r)   r¬   rV   rX   r„   )r   r°   r,   ÚerÚrr[   rZ   r   r   r    Útest_allI  s   


zTestRollingTS.test_allc                    s‚   |‰ t dt d¡itddddd}| dd¡}|jd	d
}t|ˆ ƒƒ }‡ fdd„}| |jj	¡ 
|¡jddd}t ||¡ d S )Nr   é2   r
   ÚHr   r%   ú09:00ú16:00Ú5Hr1   c                    s"   |   dd¡} t| jdddˆ ƒƒ S )Nr·   r¸   r   r"   rh   )Úbetween_timer¬   r)   ©Úx©r°   r   r    Ú
agg_by_day|  s   z+TestRollingTS.test_all2.<locals>.agg_by_dayr   T)ÚlevelrU   )r   r'   Úaranger   rº   r)   r¬   Úgroupbyr   ÚdayÚapplyr7   rV   rX   )r   Úarithmetic_win_operatorsr,   Údftr³   r[   r¾   rZ   r   r½   r    Ú	test_all2j  s   ÿÿzTestRollingTS.test_all2c                 C   s¦   g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d	¢g d
¢g
}t |g d¢d}t|d ƒ|d< | d¡ d¡ dd„ ¡}| d¡jdddd  ¡ }t ||¡ d S )N)ÚDavidz1/1/2015éd   )rÇ   z1/5/2015éô  )rÇ   z	5/30/2015rµ   )rÇ   z	7/25/2015rµ   )ÚRyanz1/4/2014rÈ   )rÊ   z	1/19/2015rÉ   )rÊ   z	3/31/2016rµ   )ÚJoez7/1/2015rÈ   )rË   z9/9/2015rÉ   )rË   z
10/15/2015rµ   )rb   ÚdateÚamount)r¨   r^   rÌ   rb   c                 S   ó   |   d¡d  ¡ S )NÚ180DrÍ   )r)   r*   r»   r   r   r    Ú<lambda>ž  ó    z6TestRollingTS.test_groupby_monotonic.<locals>.<lambda>rÏ   rN   rÍ   )	r   r   r   rÁ   rÃ   r)   r*   rV   rW   )r   r¨   r,   rZ   r[   r   r   r    Útest_groupby_monotonic†  s&   ö
ýz$TestRollingTS.test_groupby_monotonicc                 C   s¼   t dddd}tdgd dgd  dgd	  t ||f¡t d
¡dœƒ}| d¡jdddj ¡ }| 	d¡ d¡ 
dd„ ¡}t ||¡ | d¡}| d¡jdddj ¡ }t ||¡ d S )Nz2016-01-01 09:30:00é   r   )r§   r   r   r"   r#   é   rC   é   é(   r]   r   rs   r   rN   c                 S   rÎ   )Nrs   rI   )r)   r~   r»   r   r   r    rÐ   ±  rÑ   z2TestRollingTS.test_non_monotonic.<locals>.<lambda>)r   r   r'   ÚconcatenaterÀ   rÁ   r)   rI   r~   r   rÃ   rV   rW   Úsort_values)r   Údatesr,   r[   rZ   Údf2r   r   r    Útest_non_monotonic£  s   ýÿÿ
z TestRollingTS.test_non_monotonicc                 C   sÞ   t dddd}tt t|ƒ¡|d}| d¡ ¡ }ttjgdgt|ƒd   |d}t 	||¡ |jd	dd
 ¡ }t 	||¡ | d¡ ¡ }ttjdgdgt|ƒd	   |d}t 	||¡ |jddd
 ¡ }t 	||¡ d S )Nz
2017-01-01é   Ú1hr   r%   Ú2hrƒ   r"   r#   rh   Ú3hrA   rC   )
r   r   r'   rÀ   rL   r)   Úcovr(   rV   rW   )r   ÚidxÚssr[   rZ   Ú	expected2r   r   r    Útest_rolling_cov_offset¹  s   "$z%TestRollingTS.test_rolling_cov_offsetc                 C   sh   t dƒt dƒt dƒt dƒt dƒg}tdg d¢i|d}| d	¡ ¡ }tdg d
¢i|d}t ||¡ d S )Nz20190101 09:00:30z20190101 09:00:27z20190101 09:00:20z20190101 09:00:18z20190101 09:00:10Úcolumn)rC   r$   r$   r   rt   r%   rv   )r}   r}   ç      @ræ   ç      @)r   r   r)   r•   rV   rX   )r   r   r,   r[   rZ   r   r   r    Ú test_rolling_on_decreasing_indexÍ  s   ûz.TestRollingTS.test_rolling_on_decreasing_indexc                 C   s>   t dg ig d}| d¡ ¡ }t dg ig d}t ||¡ d S )Nrå   r%   rv   )r   r)   r•   rV   rX   rx   r   r   r    Útest_rolling_on_emptyÜ  s   z#TestRollingTS.test_rolling_on_emptyc                 C   sr   t dtdƒitjtdddtdƒgddgd	d
}|jd|j d¡d ¡ }t dg d¢i|jd
}t	 
||¡ d S )Nrå   rt   Ú20190101rC   rH   r#   rÌ   Úseq)Únamesr%   Ú10drN   )r`   rA   r}   rç   g      $@g      .@)r   r   r   Úfrom_productr   r)   r   Úget_level_valuesr*   rV   rX   rx   r   r   r    Ú!test_rolling_on_multi_index_levelã  s   
ÿþÿz/TestRollingTS.test_rolling_on_multi_index_levelN)1Ú__name__Ú
__module__Ú__qualname__r!   r-   r9   r4   ÚmarkÚparametrizeÚoffsetsÚ
MonthBeginr<   ÚDayr?   r'   ÚarrayrF   rM   rP   rS   r\   rd   rg   ri   rp   ry   r   r‚   r…   rŠ   r   r   r‘   r“   r–   r—   r¡   r£   r¯   ÚparamÚfilterwarningsr´   rÆ   rÒ   rÛ   rä   rè   ré   rð   r   r   r   r    r	      s˜    


	!%,+ñþ

þóþ
r	   )Únumpyr'   r4   Úpandasr   r   r   r   r   r   r   Úpandas._testingÚ_testingrV   Úpandas.tseries.offsetsÚtseriesrö   r	   r   r   r   r    Ú<module>   s    $	