U
    fª/eÓ`  ã                   @   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 dd	dg¡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/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Z d7d8„ Z!d9d:„ Z"d;d<„ Z#d=d>„ Z$d?d@„ Z%ej dAdBdCdDgdE fdBdFdDgdG dHg fdBdIdDgdG dJg fdKdCdDgdE fdKdFdDgdG dHg fdKdIdDgdG dJg fdCdCdDgdE fdCdFdDgdG dHg fdCdIdDgdG dJg fdLdCdDgdE fdLdFdDgdG dHg fdLdIdDgdG dJg fdMdCdDgdE fdMdFdDgdG dHg fdMdIdDgdG dJg fg¡dNdO„ ƒZ&ej dPdQdFej'dRej (dS¡dTdUdVdWdXdYdCdIg
¡dZd[„ ƒZ)d\d]„ Z*d^d_„ Z+d`da„ Z,dbdc„ Z-ddde„ Z.dfdg„ Z/dhdi„ Z0djS )kÚ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   úN/tmp/pip-unpacked-wheel-tiezk1ph/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 5 Q R X d}t jt|d | j ¡ jdd W 5 Q R X 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   Z2MSr#   c              	   C   s0   d}t jt|d | jj|d W 5 Q R X 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Ú1DZ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ç      ð?Zfoor"   é   c              	   C   s2   d}t jt|d | jjd|d W 5 Q R X 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 5 Q R X | ¡ }tdt|ƒd|d< |jd	dd ¡  d
}tjt|d |jd	dd W 5 Q R X |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   ÚCZ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(t‚|jddd ¡  | d¡}|j	jsPt‚| d¡ ¡  d S )	Nr
   r   r   r   r   r&   r   ©rD   )
r   r   r   r   Úis_monotonicÚAssertionErrorr)   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rNt‚d	}tj	t
|d
 | d¡ ¡  W 5 Q R X | ¡ }d}tj	t
|d
 |jddd ¡  W 5 Q R X d S )Nr
   r   r   r   r   r   r@   r   zindex must be monotonicr.   r&   zNinvalid on specified as A, must be a column \(of DataFrame\), an Index or NonerJ   )r   r   r   r   r   Zto_listrK   rL   r4   r5   r6   r)   r*   r7   )r   r,   Z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   rF   r   r   r   r   r   r&   T)ÚdroprJ   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 dddddgdddtjdgttdƒtdƒtdƒtd	ƒtd
ƒgƒdœdddgd}t dddddgdddtjdg|d dœdddgd}|jddd ¡ }|}t ||¡ t	dddtjdgdd}|jdddj
 ¡ }t ||¡ |dddg }|jddddddg  ¡ }t ||¡ d S )Nr   r"   r#   r@   r$   r   r   r   r   r   ©r   r   rF   r   rF   r   )Úcolumnsç        é   r&   rJ   )Úname)r   r'   r(   r   r   r)   r*   rQ   rS   r   r   rR   )r   r,   Z	expected1rV   rU   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"   rA   r<   r1   Z2D)r   rG   r   r   r)   r*   rQ   rS   rT   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"   ©rB   r&   )r   r)   r*   rQ   rS   rT   r   r   r    Útest_min_periodsò   s    zTestRollingTS.test_min_periodsc              	   C   sf  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 5 Q R X | ¡ }dddddg|d< |jddd ¡ }t	 
||¡ | d¡ ¡ }t	 
||¡ | ¡ }dddddg|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&   Zblabla)r2   Úclosedr?   r#   Úright)rb   r@   ZbothÚleftZneither)r   r   r4   r5   r6   r   r)   rG   r*   rQ   rS   r'   r(   )r   r,   r8   rU   rV   r   r   r    Útest_closed   s<    ûþzTestRollingTS.test_closedc                 C   sÒ  | j }|jddd ¡ }| ¡ }dddddg|d< t ||¡ |jd	dd ¡ }| ¡ }ddddd
g|d< t ||¡ |jd	dd ¡ }| ¡ }tjtjdtjd
g|d< t ||¡ |jddd ¡ }| ¡ }ddddd
g|d< t ||¡ |jdd ¡ }| ¡ }ddddd
g|d< t ||¡ |jddd ¡ }| ¡ }dddddg|d< t ||¡ |jddd ¡ }| ¡ }tjtjdddg|d< t ||¡ |jddd ¡ }| ¡ }dddddg|d< t ||¡ d S )NÚ1sr"   rA   rZ   r#   r@   r$   r   r&   r[   rO   r   r1   Ú4sé   é	   Ú5sé
   )r   r)   r*   rG   rQ   rS   r'   r(   ©r   r,   rV   rU   r   r   r    Útest_ragged_sum,  sB    zTestRollingTS.test_ragged_sumc                 C   sz   | j }|jddd ¡ }| ¡ }dddddg|d< t ||¡ |jd	dd ¡ }| ¡ }ddd
ddg|d< t ||¡ d S ©Nrf   r"   rA   rZ   r#   r@   r$   r   r&   ç      ø?ç      @ç      @)r   r)   ÚmeanrG   rQ   rS   rl   r   r   r    Útest_ragged_meanW  s    zTestRollingTS.test_ragged_meanc                 C   sz   | j }|jddd ¡ }| ¡ }dddddg|d< t ||¡ |jd	dd ¡ }| ¡ }ddd
ddg|d< t ||¡ d S rn   )r   r)   ÚmedianrG   rQ   rS   rl   r   r   r    Útest_ragged_mediand  s    z TestRollingTS.test_ragged_medianc                 C   s~   | j }|jddd d¡}| ¡ }dddddg|d	< t ||¡ |jd
dd d¡}| ¡ }dddddg|d	< t ||¡ d S )Nrf   r"   rA   ç      à?rZ   r#   r@   r$   r   r&   ro   rp   rq   )r   r)   ÚquantilerG   rQ   rS   rl   r   r   r    Útest_ragged_quantileq  s    z"TestRollingTS.test_ragged_quantilec                 C   sø   | 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 )Nrf   r"   rA   r   ©ZddofrZ   r   r   rO   rv   r$   rj   g»¹øÛž æ?r?   gÊPSé§ô?)r   r)   ÚstdrG   rQ   rS   r'   r(   rl   r   r   r    Útest_ragged_std~  s"    zTestRollingTS.test_ragged_stdc                 C   sø   | 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 )Nrf   r"   rA   r   ry   rZ   r   r   rO   g      Ð?r$   rj   rv   r?   gªªªªªªú?)r   r)   ÚvarrG   rQ   rS   r'   r(   rl   r   r   r    Útest_ragged_var•  s"    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 dddg |d< t ||¡ d S )	NrO   r"   rA   r   r   rj   r#   rZ   )r   r)   ÚskewrG   r'   r(   rQ   rS   rl   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 )	NrO   r"   rA   r   r   rj   r$   g333333ó¿)r   r)   ÚkurtrG   r'   r(   rQ   rS   rl   r   r   r    Útest_ragged_kurt¹  s    zTestRollingTS.test_ragged_kurtc                 C   sÚ   | j }|jddd ¡ }| ¡ }dddddg|d< t ||¡ | j }|jdd ¡ }t ||¡ |jddd ¡ }| ¡ }dddddg|d< t ||¡ |jddd ¡ }| ¡ }tjtjdtjdg|d< t ||¡ d S )	Nrf   r"   rA   r?   r   r1   r&   r#   )r   r)   ÚcountrG   rQ   rS   r'   r(   rl   r   r   r    Útest_ragged_countÆ  s     zTestRollingTS.test_ragged_countc                 C   sü   t tddddddddd	gd
œƒ d¡}| d¡ ¡ }| ¡ }ddddd	g|d< t ||¡ t tdddddd	dd	dgd
œƒ d¡}t ||¡ | d¡ ¡ }| ¡ }dd	ddd	g|d< t ||¡ | d¡ ¡ }| ¡ }dd	dddg|d< t ||¡ d S )Nr
   r   r   r   rZ   r"   r#   r@   r$   r   r   rf   r   r&   g      @rj   )r   r   r   r)   ÚminrG   rQ   rS   rl   r   r   r    Útest_regular_minÜ  s.    ÿþÿþzTestRollingTS.test_regular_minc                 C   s²   | j }|jddd ¡ }| ¡ }dddddg|d< t ||¡ |jd	dd ¡ }| ¡ }dddddg|d< t ||¡ |jd
dd ¡ }| ¡ }dddddg|d< t ||¡ d S )Nrf   r"   rA   rZ   r#   r@   r$   r   r&   rj   r   )r   r)   r„   rG   rQ   rS   rl   r   r   r    Útest_ragged_minõ  s    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^t	‚|jddd	 ¡ }| d¡ ¡ }|| dk  ¡  ¡ s–t	‚d S )Ni'  r   r
   r   r   r%   r#   r"   r`   r&   g{®Gáz„?éÈ   Z200s)
r   r'   ÚrandomZrandnr   r)   r„   ÚallÚboolrL   )r   ÚNZdfprU   rV   r   r   r    Útest_perf_min  s     ÿzTestRollingTS.test_perf_minc                 C   s²   | j }|jddd ¡ }| ¡ }dddddg|d< t ||¡ |jd	dd ¡ }| ¡ }dddddg|d< t ||¡ |jd
dd ¡ }| ¡ }dddddg|d< t ||¡ d S )Nrf   r"   rA   rZ   r#   r@   r$   r   r&   rj   )r   r)   ÚmaxrG   rQ   rS   rl   r   r   r    Útest_ragged_max  s    zTestRollingTS.test_ragged_maxzfreq, op, result_dataÚmsr„   rZ   rk   rr   ri   gÇqÇqÌ?r   g       @r   Úhr^   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Ú1rk   )Ústartr   r   r   )Údatar   r"   r#   éÿÿÿÿÚ10r1   )	r   r   r'   r(   ZilocÚgetattrr)   rQ   rR   )r   r   ÚopZresult_datar   r   rV   rU   r   r   r    Útest_freqs_ops*  s    
zTestRollingTS.test_freqs_opsÚfr*   r‚   z ignore:min_periods:FutureWarning)Zmarksrt   rz   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   rf   rv   )r   r)   r–   rQ   rS   rw   )r   r™   r,   ZerÚrrV   rU   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:00Z5Hr1   c                    s"   |   dd¡} t| jdddˆ ƒƒ S )Nrž   rŸ   r   r"   r`   )Úbetween_timer–   r)   ©Úx©r™   r   r    Ú
agg_by_day|  s    z+TestRollingTS.test_all2.<locals>.agg_by_dayr   T)ÚlevelrP   )r   r'   Úaranger   r    r)   r–   Úgroupbyr   ÚdayÚapplyr7   rQ   rS   )r   Zarithmetic_win_operatorsr,   Zdftrš   rV   r¤   rU   r   r£   r    Ú	test_all2j  s     ÿÿzTestRollingTS.test_all2c                 C   s¼   dddgdddgdddgdddgd	d
dgd	ddgd	ddgdddgdddgdddgg
}t |dddgd}t|d ƒ|d< | d¡ d¡ dd„ ¡}| d¡jdddd  ¡ }t ||¡ d S )NZDavidz1/1/2015éd   z1/5/2015iô  z	5/30/2015rœ   z	7/25/2015ZRyanz1/4/2014z	1/19/2015z	3/31/2016ZJoez7/1/2015z9/9/2015z
10/15/2015r\   ÚdateÚamount)r“   rY   c                 S   s   |   d¡d  ¡ S )NÚ180Dr­   )r)   r*   r¡   r   r   r    Ú<lambda>ž  ó    z6TestRollingTS.test_groupby_monotonic.<locals>.<lambda>r®   rJ   )	r   r   r   r§   r©   r)   r*   rQ   rR   )r   r“   r,   rU   rV   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#   é   r@   é   é(   rX   r   rg   r   rJ   c                 S   s   |   d¡d  ¡ S )Nrg   rF   )r)   rr   r¡   r   r   r    r¯   ±  r°   z2TestRollingTS.test_non_monotonic.<locals>.<lambda>)r   r   r'   Zconcatenater¦   r§   r)   rF   rr   r   r©   rQ   rR   Zsort_values)r   Údatesr,   rV   rU   Z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é   Z1hr   r%   Z2hrv   r"   r#   r`   Z3hr?   r@   )
r   r   r'   r¦   rH   r)   Zcovr(   rQ   rR   )r   ÚidxÚssrV   rU   Z	expected2r   r   r    Útest_rolling_cov_offset¹  s    "$z%TestRollingTS.test_rolling_cov_offsetc                 C   st   t dƒt dƒt dƒt dƒt dƒg}tddddd	d
gi|d}| d¡ ¡ }tddddddg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Úcolumnr@   r$   r   rh   r%   rj   rp   g      @ç      @)r   r   r)   r„   rQ   rS   )r   r   r,   rV   rU   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%   rj   )r   r)   r„   rQ   rS   rl   r   r   r    Útest_rolling_on_emptyÜ  s    z#TestRollingTS.test_rolling_on_emptyc                 C   sz   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ddddddgi|jd
}t	 
||¡ d S )Nr¼   rh   Z20190101r@   rE   r#   r¬   Úseq)Únamesr%   Z10drJ   rZ   r?   rp   r½   g      $@g      .@)r   r   r   Zfrom_productr   r)   r   Zget_level_valuesr*   rQ   rS   rl   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   ÚmarkZparametrizeÚoffsetsZ
MonthBeginr;   ZDayr=   r'   ÚarrayrC   rI   rM   rN   rW   r]   r_   ra   re   rm   rs   ru   rx   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	   )Znumpyr'   r4   Zpandasr   r   r   r   r   r   r   Zpandas._testingZ_testingrQ   Zpandas.tseries.offsetsZtseriesrÇ   r	   r   r   r   r    Ú<module>   s
   $	