U
    ¾mœd†[  ã                   @   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Z ejdd„ ƒZejdd„ ƒ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_range)Úoffsetsc                   C   s"   t tdddd�tdƒdœƒ d¡S )NÚ20130101é   Ús©ÚperiodsÚfreq©ÚAÚBr   )r   r   ÚrangeÚ	set_index© r   r   úc/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/pandas/tests/window/test_timeseries_window.pyÚregular   s
    ÿþr   c                  C   s8   t dtdƒiƒ} tdƒtdƒtdƒtdƒtdƒg| _| S )Nr   r   ú20130101 09:00:00ú20130101 09:00:02ú20130101 09:00:03ú20130101 09:00:05ú20130101 09:00:06)r   r   r   Úindex)Údfr   r   r   Úragged   s    ûr   c                   @   s¤  e Z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-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Z d7d8„ Z!d9d:„ Z"d;d<„ Z#d=d>„ Z$ej d?d@dAdBgdC fd@dDdBgdE dFg fd@dGdBgdE dHg fdIdAdBgdC fdIdDdBgdE dFg fdIdGdBgdE dHg fdAdAdBgdC fdAdDdBgdE dFg fdAdGdBgdE dHg fdJdAdBgdC fdJdDdBgdE dFg fdJdGdBgdE dHg fdKdAdBgdC fdKdDdBgdE dFg fdKdGdBgdE dHg fg¡dLdM„ ƒZ%ej dNdOdDdPdQdRdSdTdUdAdGg
¡dVdW„ ƒZ&dXdY„ Z'dZd[„ Z(d\d]„ Z)d^d_„ Z*d`da„ Z+dbS )cÚTestRollingTSc                 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©Úselfr   r   r   r   Útest_doc_string*   s    ûþ
zTestRollingTS.test_doc_stringc              	   C   s\   d}t jt|d�� |jdd� W 5 Q R X d}t jt|d�� | ¡ 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(   Úreset_index)r+   r   Úmsgr   r   r   Útest_invalid_window_non_int8   s    z)TestRollingTS.test_invalid_window_non_intr   Z2MSr"   c              	   C   s.   d}t jt|d�� |j|d� W 5 Q R X d S )Nz-\<2 \* MonthBegins\> is a non-fixed frequencyr-   r0   ©r3   r4   r5   r(   )r+   r   r   r7   r   r   r   Útest_invalid_window_nonfixedB   s    z*TestRollingTS.test_invalid_window_nonfixedÚ1DZ2msc                 C   s   |j |d� d S )Nr0   )r(   )r+   r   r   r   r   r   Útest_valid_windowI   s    zTestRollingTS.test_valid_windowÚminpç      ð?Zfoor!   é   c              	   C   s0   d}t jt|d�� |jd|d� W 5 Q R X d S )NzQlocal variable 'minp' referenced before assignment|min_periods must be an integerr-   r;   ©r1   Úmin_periodsr9   )r+   r=   r   r7   r   r   r   Útest_invalid_minpM   s    ÿzTestRollingTS.test_invalid_minpc              	   C   s¢   |}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%   r/   )r1   Úonr
   ©r   ÚCZ2dr2   r   )	r3   r4   r5   r(   Úcopyr   Úlenr)   r   )r+   r   r   r7   r   r   r   Útest_onW   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   ©rC   )
r   r   r   r   Úis_monotonic_increasingÚ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 NonerI   )r   r   r   r   r   Zto_listrJ   rK   r3   r4   r5   r(   r)   r6   )r+   r   Znon_monotonic_indexr7   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   rE   r   r   r   r   r   r%   T)ÚdroprI   r   )r   r   r   r   r   r(   r   r)   r6   Ú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   rE   r   rE   r   )Úcolumnsç        é   r%   rI   )Úname)r   r&   r'   r   r   r(   r)   rP   rR   r   r   rQ   )r+   r   Z	expected1rT   rS   r   r   r   Útest_frame_on2µ   s6    ûÿýò$þzTestRollingTS.test_frame_on2c                 C   sæ   |  ¡ }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!   r@   r;   r0   Z2D)rF   r   r   r(   r)   rP   rR   ©r+   r   r   rS   rT   r   r   r   Útest_basic_regularÙ   s    z TestRollingTS.test_basic_regularc                 C   sd   |}|j ddd� ¡ }|  d¡ ¡ }t ||¡ |j ddd� ¡ }|j ddd� ¡ }t ||¡ d S )Nr"   r!   ©rA   r%   )r(   r)   rP   rR   r\   r   r   r   Útest_min_periodsî   s    zTestRollingTS.test_min_periodsc              	   C   sd  t ddgd itdƒtdƒtdƒtdƒtdƒgd	�}d
}tjt|d�� |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)r1   Úclosedr>   r"   Úright)r`   r?   ZbothÚleftZneither)r   r   r3   r4   r5   r(   rF   r)   rP   rR   r&   r'   )r+   r   r   r7   rS   rT   r   r   r   Útest_closedû   s<    ûþzTestRollingTS.test_closedc                 C   sÐ  |}|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!   r@   rW   r"   r?   r#   r   r%   rX   rN   r   r0   Z4sé   é	   Ú5sé
   )r(   r)   rF   rP   rR   r&   r'   ©r+   r   r   rT   rS   r   r   r   Útest_ragged_sum&  sB    zTestRollingTS.test_ragged_sumc                 C   sx   |}|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 ©Nrd   r!   r@   rW   r"   r?   r#   r   r%   ç      ø?ç      @ç      @)r(   ÚmeanrF   rP   rR   ri   r   r   r   Útest_ragged_meanP  s    zTestRollingTS.test_ragged_meanc                 C   sx   |}|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 rk   )r(   ÚmedianrF   rP   rR   ri   r   r   r   Útest_ragged_median\  s    z TestRollingTS.test_ragged_medianc                 C   s|   |}|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 )Nrd   r!   r@   ç      à?rW   r"   r?   r#   r   r%   rl   rm   rn   )r(   ÚquantilerF   rP   rR   ri   r   r   r   Útest_ragged_quantileh  s    z"TestRollingTS.test_ragged_quantilec                 C   sö   |}|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 )Nrd   r!   r@   r   ©ZddofrW   r   r   rN   rs   r#   rg   g»¹øÛž æ?r>   gÊPSé§ô?)r(   ÚstdrF   rP   rR   r&   r'   ri   r   r   r   Útest_ragged_stdt  s"    zTestRollingTS.test_ragged_stdc                 C   sö   |}|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 )Nrd   r!   r@   r   rv   rW   r   r   rN   g      Ð?r#   rg   rs   r>   gªªªªªªú?)r(   ÚvarrF   rP   rR   r&   r'   ri   r   r   r   Útest_ragged_varŠ  s"    zTestRollingTS.test_ragged_varc                 C   s~   |}|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 )	NrN   r!   r@   r   r   rg   r"   rW   )r(   ÚskewrF   r&   r'   rP   rR   ri   r   r   r   Útest_ragged_skew   s    zTestRollingTS.test_ragged_skewc                 C   sz   |}|j ddd� ¡ }| ¡ }tjgd |d< t ||¡ |j ddd� ¡ }| ¡ }tjgd dg |d< t ||¡ d S )	NrN   r!   r@   r   r   rg   r#   g333333ó¿)r(   ÚkurtrF   r&   r'   rP   rR   ri   r   r   r   Útest_ragged_kurt¬  s    zTestRollingTS.test_ragged_kurtc                 C   sÖ   |}|j ddd� ¡ }| ¡ }dddddg|d< t ||¡ |}|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 )	Nrd   r!   r@   r>   r   r0   r%   r"   )r(   ÚcountrF   rP   rR   r&   r'   ri   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   rW   r!   r"   r?   r#   r   r   rd   r   r%   g      @rg   )r   r   r   r(   ÚminrF   rP   rR   ©r+   r   rT   rS   r   r   r   Útest_regular_minÍ  s.    ÿþÿþzTestRollingTS.test_regular_minc                 C   s°   |}|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 )Nrd   r!   r@   rW   r"   r?   r#   r   r%   rg   r   )r(   r�   rF   rP   rR   ri   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ÚboolrK   )r+   ÚNZdfprS   rT   r   r   r   Útest_perf_min÷  s     ÿzTestRollingTS.test_perf_minc                 C   s°   |}|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 )Nrd   r!   r@   rW   r"   r?   r#   r   r%   rg   )r(   ÚmaxrF   rP   rR   ri   r   r   r   Útest_ragged_max  s    zTestRollingTS.test_ragged_maxzfreq, op, result_dataÚmsr�   rW   rh   ro   rf   gÇqÇqÌ?r‹   g       @r   Úhr[   c                 C   sn   t dd|› �dd�}td|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Ú1rh   )Ústartr   r   r   Úfloat)Údatar   Zdtyper!   r"   éÿÿÿÿÚ10r0   )r’   r   )	r   r   r&   r'   ZilocÚgetattrr(   rP   rQ   )r+   r   ÚopZresult_datar   r   rT   rS   r   r   r   Útest_freqs_ops  s    
zTestRollingTS.test_freqs_opsÚfr)   r   rq   rw   ry   r}   r{   c                 C   sh   |d }|j dd�}|j dd�}t||ƒƒ }t||ƒƒ }t ||¡ | d¡}| d¡}t ||¡ d S )Nr"   r!   r0   rd   rs   )r(   r•   rP   rR   rt   )r+   r˜   r   r   ZerÚrrT   rS   r   r   r   Útest_all7  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5Hr0   c                    s"   |   dd¡} t| jddd�ˆ ƒƒ S )Nr�   rž   r   r!   r^   )Úbetween_timer•   r(   )Úx©r˜   r   r   Ú
agg_by_dayf  s    z+TestRollingTS.test_all2.<locals>.agg_by_dayr   T)ÚlevelrO   )r   r&   Úaranger   rŸ   r(   r•   Úgroupbyr   ÚdayÚapplyr6   rP   rR   )r+   Zarithmetic_win_operatorsr   Zdftr™   rT   r¢   rS   r   r¡   r   Ú	test_all2T  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2hrs   r!   r"   r^   Z3hr>   r?   )
r   r   r&   r¤   rG   r(   Zcovr'   rP   rQ   )r+   ÚidxÚssrT   rS   Z	expected2r   r   r   Útest_rolling_cov_offsetp  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   re   r$   rg   rm   g      @ç      @)r   r   r(   r�   rP   rR   )r+   r   r   rT   rS   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$   rg   )r   r(   r�   rP   rR   r‚   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­   re   Z20190101r?   rD   r"   ÚdateÚseq)Únamesr$   Z10drI   rW   r>   rm   r®   g      $@g      .@)r   r   r   Zfrom_productr   r(   r   Zget_level_valuesr)   rP   rR   r‚   r   r   r   Ú!test_rolling_on_multi_index_levelš  s    
 ÿþ ÿz/TestRollingTS.test_rolling_on_multi_index_levelN),Ú__name__Ú
__module__Ú__qualname__r,   r8   r3   ÚmarkÚparametrizer	   Z
MonthBeginr:   ZDayr<   r&   ÚarrayrB   rH   rL   rM   rU   rZ   r]   r_   rc   rj   rp   rr   ru   rx   rz   r|   r~   r€   rƒ   r„   rŠ   rŒ   r—   rš   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!   rV   r   r"   z values must not have NaTr-   r[   )Úaxis)
r   r   r   r&   Úeyer3   r4   r5   r(   ro   )r7   r»   rª   Úkwargsr   r   r   r   Útest_nat_axis_error©  s
    r¾   )Únumpyr&   r3   Zpandasr   r   r   r   r   r   r   Zpandas._testingZ_testingrP   Zpandas.tseriesr	   Zfixturer   r   r    r¸   r¹   r¾   r   r   r   r   Ú<module>   s    $	

     