U
    Läf’[  ã                   @   s†   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ej dddgdd gg¡d	d
„ ƒZdS )é    N)Ú	DataFrameÚIndexÚ
MultiIndexÚNaTÚSeriesÚ	TimestampÚ
date_rangec                   @   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.dfS )gÚ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-eb6vo0j3/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 values 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)ra   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   rY   r#   r@   r$   r   r&   rZ   rO   r   r1   Z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 ©Nre   r"   rA   rY   r#   r@   r$   r   r&   ç      ø?ç      @ç      @)r   r)   ÚmeanrG   rQ   rS   rj   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 rl   )r   r)   ÚmedianrG   rQ   rS   rj   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 )Nre   r"   rA   ç      à?rY   r#   r@   r$   r   r&   rm   rn   ro   )r   r)   ÚquantilerG   rQ   rS   rj   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 )Nre   r"   rA   r   ©ZddofrY   r   r   rO   rt   r$   rh   g»¹øÛž æ?r?   gÊPSé§ô?)r   r)   ÚstdrG   rQ   rS   r'   r(   rj   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 )Nre   r"   rA   r   rw   rY   r   r   rO   g      Ð?r$   rh   rt   r?   gªªªªªªú?)r   r)   ÚvarrG   rQ   rS   r'   r(   rj   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   rh   r#   rY   )r   r)   ÚskewrG   r'   r(   rQ   rS   rj   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   rh   r$   g333333ó¿)r   r)   ÚkurtrG   r'   r(   rQ   rS   rj   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 )	Nre   r"   rA   r?   r   r1   r&   r#   )r   r)   ÚcountrG   rQ   rS   r'   r(   rj   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   rY   r"   r#   r@   r$   r   r   re   r   r&   g      @rh   )r   r   r   r)   ÚminrG   rQ   rS   rj   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 )Nre   r"   rA   rY   r#   r@   r$   r   r&   rh   r   )r   r)   r‚   rG   rQ   rS   rj   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 )Nre   r"   rA   rY   r#   r@   r$   r   r&   rh   )r   r)   ÚmaxrG   rQ   rS   rj   r   r   r    Útest_ragged_max  s    zTestRollingTS.test_ragged_maxzfreq, op, result_dataÚmsr‚   rY   ri   rp   rg   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Ú1ri   )Ú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marksrr   rx   rz   r~   r|   c                 C   sj   | j d }|jdd}|jdd}t||ƒƒ }t||ƒƒ }t ||¡ | d¡}| d¡}t ||¡ d S )Nr#   r"   r1   re   rt   )r   r)   r”   rQ   rS   ru   )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Þ   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2hrt   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   rf   r%   rh   rn   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%   rh   )r   r)   r‚   rQ   rS   rj   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¬   rf   Z20190101r@   rE   r#   ÚdateÚseq)Únamesr%   Z10drJ   rY   r?   rn   r­   g      $@g      .@)r   r   r   Zfrom_productr   r)   r   Zget_level_valuesr*   rQ   rS   rj   r   r   r    Ú!test_rolling_on_multi_index_level°  s    
 ÿþ ÿz/TestRollingTS.test_rolling_on_multi_index_levelN)/Ú__name__Ú
__module__Ú__qualname__r!   r-   r9   r4   ÚmarkÚparametrizeÚoffsetsZ
MonthBeginr;   ZDayr=   r'   ÚarrayrC   rI   rM   rN   rW   r\   r^   r`   rd   rk   rq   rs   rv   ry   r{   r}   r   r   rƒ   r„   rŠ   rŒ   r–   ÚparamÚfilterwarningsr™   r§   r«   r®   r¯   r³   r   r   r   r    r	      s’   


	!%,+ñþ

þóþ
r	   z	msg, axisr¬   r"   r   c              	   C   sh   t dƒtg}|dkrdnd|i}tt d¡f|Ž}tjt| › dd |jd|d	 	¡  W 5 Q R X d S )
NZ2020r"   rX   r   r#   z values must not have NaTr.   r]   )Úaxis)
r   r   r   r'   Zeyer4   r5   r6   r)   rp   )r8   r½   r©   Úkwargsr,   r   r   r    Útest_nat_axis_error¿  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   r   r   r    Ú<module>   s   $	     2