U
    `»{jÐ[  ã                   @   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 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_rangec                   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   úi/var/www/html/bwave/python/venv/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 dNdOdDej&dPej 'dQ¡dR�dSdTdUdVdWdAdGg
¡dXdY„ ƒZ(dZd[„ Z)d\d]„ Z*d^d_„ Z+d`da„ Z,dbdc„ Z-ddS )eÚ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_int:   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,   r/   ©r2   r3   r4   r'   )r*   r   r   r6   r   r   r   Útest_invalid_window_nonfixedE   s    z*TestRollingTS.test_invalid_window_nonfixedÚ1DZ2msc                 C   s   |j |d� d S )Nr/   )r'   )r*   r   r   r   r   r   Útest_valid_windowM   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:   ©r0   Úmin_periodsr8   )r*   r<   r   r6   r   r   r   Útest_invalid_minpQ   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.   )r0   Úonr	   ©r   ÚCZ2dr1   r   )	r2   r3   r4   r'   Úcopyr   Úlenr(   r   )r*   r   r   r6   r   r   r   Útest_on[   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   ©rB   )
r   r   r   r   Úis_monotonic_increasingÚAssertionErrorr'   r(   r   r   r)   r   r   r   Útest_monotonic_ont   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 NonerH   )r   r   r   r   r   Zto_listrI   rJ   r2   r3   r4   r'   r(   r5   )r*   r   Znon_monotonic_indexr6   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   rD   r   r   r   r   r   r$   T)ÚdroprH   r   )r   r   r   r   r   r'   r   r(   r5   Ú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   rD   r   rD   r   )Úcolumnsç        é   r$   rH   )Úname)r   r%   r&   r   r   r'   r(   rO   rQ   r   r   rP   )r*   r   Z	expected1rS   rR   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:   r/   Z2D)rE   r   r   r'   r(   rO   rQ   ©r*   r   r   rR   rS   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    ©r@   r$   )r'   r(   rO   rQ   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)r0   Úclosedr=   r!   Úright)r_   r>   ZbothÚleftZneither)r   r   r2   r3   r4   r'   rE   r(   rO   rQ   r%   r&   )r*   r   r   r6   rR   rS   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?   rV   r!   r>   r"   r   r$   rW   rM   r
   r/   Z4sé   é	   Ú5sé
   )r'   r(   rE   rO   rQ   r%   r&   ©r*   r   r   rS   rR   r   r   r   Útest_ragged_sum1  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 ©Nrc   r    r?   rV   r!   r>   r"   r   r$   ç      ø?ç      @ç      @)r'   ÚmeanrE   rO   rQ   rh   r   r   r   Útest_ragged_mean\  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 rj   )r'   ÚmedianrE   rO   rQ   rh   r   r   r   Útest_ragged_mediani  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 )Nrc   r    r?   ç      à?rV   r!   r>   r"   r   r$   rk   rl   rm   )r'   ÚquantilerE   rO   rQ   rh   r   r   r   Útest_ragged_quantilev  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 )Nrc   r    r?   r   ©ZddofrV   r
   r   rM   rr   r"   rf   g»¹øÛž æ?r=   gÊPSé§ô?)r'   ÚstdrE   rO   rQ   r%   r&   rh   r   r   r   Útest_ragged_stdƒ  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 )Nrc   r    r?   r   ru   rV   r
   r   rM   g      Ð?r"   rf   rr   r=   gªªªªªªú?)r'   ÚvarrE   rO   rQ   r%   r&   rh   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 )	NrM   r    r?   r
   r   rf   r!   rV   )r'   ÚskewrE   r%   r&   rO   rQ   rh   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 )	NrM   r    r?   r
   r   rf   r"   g333333ó¿)r'   ÚkurtrE   r%   r&   rO   rQ   rh   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 )	Nrc   r    r?   r=   r   r/   r$   r!   )r'   ÚcountrE   rO   rQ   r%   r&   rh   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   rV   r    r!   r>   r"   r   r   rc   r   r$   g      @rf   )r   r   r   r'   ÚminrE   rO   rQ   ©r*   r   rS   rR   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 )Nrc   r    r?   rV   r!   r>   r"   r   r$   rf   r   )r'   r€   rE   rO   rQ   rh   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ÚboolrJ   )r*   ÚNZdfprR   rS   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 )Nrc   r    r?   rV   r!   r>   r"   r   r$   rf   )r'   ÚmaxrE   rO   rQ   rh   r   r   r   Útest_ragged_max  s    zTestRollingTS.test_ragged_maxzfreq, op, result_dataÚmsr€   rV   rg   rn   re   gÇqÇqÌ?rŠ   g       @r   ÚhrZ   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Ú1rg   )Ústartr   r   r   )Údatar   r    r!   éÿÿÿÿÚ10r/   )	r   r   r%   r&   ZilocÚgetattrr'   rO   rP   )r*   r   ÚopZresult_datar   r   rS   rR   r   r   r   Útest_freqs_ops/  s    
zTestRollingTS.test_freqs_opsÚfr(   r~   z ignore:min_periods:FutureWarning)Zmarksrp   rv   rx   r|   rz   c                 C   sh   |d }|j dd�}|j dd�}t||ƒƒ }t||ƒƒ }t ||¡ | d¡}| d¡}t ||¡ d S )Nr!   r    r/   rc   rr   )r'   r“   rO   rQ   rs   )r*   r–   r   r   ZerÚrrS   rR   r   r   r   Útest_allN  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5Hr/   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)ÚlevelrN   )r   r%   Úaranger   r�   r'   r“   Úgroupbyr   ÚdayÚapplyr5   rO   rQ   )r*   Zarithmetic_win_operatorsr   Zdftr—   rS   r    rR   r   rŸ   r   Ú	test_all2o  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2hrr   r    r!   r]   Z3hr=   r>   )
r   r   r%   r¢   rF   r'   Zcovr&   rO   rP   )r*   ÚidxÚssrS   rR   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
   rd   r#   rf   rl   g      @ç      @)r   r   r'   r€   rO   rQ   )r*   r   r   rS   rR   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#   rf   )r   r'   r€   rO   rQ   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«   rd   Z20190101r>   rC   r!   ÚdateÚseq)Únamesr#   Z10drH   rV   r=   rl   r¬   g      $@g      .@)r   r   r   Zfrom_productr   r'   r   Zget_level_valuesr(   rO   rQ   r�   r   r   r   Ú!test_rolling_on_multi_index_levelµ  s    
 ÿþ ÿz/TestRollingTS.test_rolling_on_multi_index_levelN).Ú__name__Ú
__module__Ú__qualname__r+   r7   r2   ÚmarkÚparametrizeÚoffsetsZ
MonthBeginr9   ZDayr;   r%   ÚarrayrA   rG   rK   rL   rT   rY   r\   r^   rb   ri   ro   rq   rt   rw   ry   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    rU   r   r!   z values must not have NaTr,   rZ   )Úaxis)
r   r   r   r%   Úeyer2   r3   r4   r'   rn   )r6   r¼   r¨   Úkwargsr   r   r   r   Útest_nat_axis_errorÄ  s
    r¿   )Únumpyr%   r2   Zpandasr   r   r   r   r   r   r   Zpandas._testingZ_testingrO   Zpandas.tseries.offsetsZtseriesr¸   Zfixturer   r   r   r¶   r·   r¿   r   r   r   r   Ú<module>   s    $	

     #