a
    é´«jº^  ã                   @   sÄ   d dl Zd dlZd dlm  mZ d dlmZ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e d¡dd„ ƒZdS )é    N)Ú	DataFrameÚDatetimeIndexÚ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   úi/var/www/html/laksyashrimp/venv/lib/python3.9/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 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d.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Z d6d7„ Z!d8d9„ Z"d:d;„ Z#d<d=„ Z$ej d>d?d@dAgdB fd?dCdAgdD dEg fd?dFdAgdD dGg fdHd@dAgdB fdHdCdAgdD dEg fdHdFdAgdD dGg fd@d@dAgdB fd@dCdAgdD dEg fd@dFdAgdD dGg fdId@dAgdB fdIdCdAgdD dEg fdIdFdAgdD dGg fdJd@dAgdB fdJdCdAgdD dEg fdJdFdAgdD dGg fg¡dKdL„ ƒZ%ej dMg dN¢¡dOdP„ ƒZ&dQdR„ Z'dSdT„ Z(dUdV„ Z)dWdX„ Z*dYdZ„ Z+d[S )\Ú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 d   ƒ n1 s40    Y  d}t jt|d��  | ¡ jdd� W d   ƒ n1 sv0    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)   Úreset_index)r,   r   Úmsgr   r   r   Útest_invalid_window_non_int;   s    *z)TestRollingTS.test_invalid_window_non_intr   Z2MSr#   c                 C   sB   d}t jt|d�� |j|d� W d   ƒ n1 s40    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_nonfixedE   s    z*TestRollingTS.test_invalid_window_nonfixedÚ1DZ2msc                 C   s   |j |d� d S )Nr1   )r)   )r,   r   r   r   r   r   Útest_valid_windowL   s    zTestRollingTS.test_valid_windowÚminpç      ð?Zfoo)r"   r#   é   c                 C   sD   d}t jt|d�� |jd|d� W d   ƒ n1 s60    Y  d S )NzQlocal variable 'minp' referenced before assignment|min_periods must be an integerr.   r<   ©r2   Úmin_periodsr:   )r,   r>   r   r8   r   r   r   Útest_invalid_minpP   s    ÿzTestRollingTS.test_invalid_minpc                 C   sÊ   |}d}t jt|d�� |jddd� W d   ƒ n1 s:0    Y  | ¡ }tdt|ƒd�|d< |jd	dd� ¡  d
}t jt|d�� |jd	dd� W d   ƒ n1 s¨0    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   ÚCZ2dr3   r   )	r4   r5   r6   r)   Úcopyr	   Úlenr*   r   )r,   r   r   r8   r   r   r   Útest_onZ   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sPJ ‚| d¡ ¡  d S )	Nr   r   r   r   r   r&   r   ©rD   )	r   r	   r   r   Úis_monotonic_increasingr)   r*   r   r   r+   r   r   r   Útest_monotonic_onr   s    ÿ
zTestRollingTS.test_monotonic_onc                 C   sÞ   t tdddd�tdƒdœƒ}| d¡}|j ¡ }|d |d< ||_|jjrNJ ‚d	}tjt	|d
�� | 
d¡ ¡  W d   ƒ n1 s„0    Y  | ¡ }d}tjt	|d
��" |j
ddd� ¡  W d   ƒ n1 sÐ0    Y  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   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 tdƒtdƒtdƒtdƒtdƒgƒ |¡}tg d¢ddd	tj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 )Nr   r   r   r   r   )r   r"   r#   r@   r$   r   r"   r#   r$   )r   r   rF   )r   rF   r   )Úcolumns©ç        r"   r@   r@   é   r@   rF   r&   rJ   r   )Úname)r   r   Úas_unitr   r'   r(   r)   r*   rP   rR   r   r   rQ   )r,   ÚunitÚdtir   Z	expected1rT   rS   r   r   r   Útest_frame_on2¸   s<    ûÿø	ýú	þ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"   rA   r<   r1   Z2D)rG   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"   ©rB   r&   )r)   r*   rP   rR   r`   r   r   r   Útest_min_periodsò   s    zTestRollingTS.test_min_periodsc                 C   sz  t tdƒtdƒtdƒtdƒtdƒgƒ |¡}tddgd i|d	�}d
}tjt|d�� |jddd� W d   ƒ n1 sx0    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 )Nz20130101 09:00:01r   r   z20130101 09:00:04r   r   r"   r   r%   z3closed must be 'right', 'left', 'both' or 'neither'r.   r&   Zblabla)r2   Úclosed)r?   r#   r#   r#   r"   Úright)rd   )r?   r#   r@   r@   r#   Zbothr?   r#   ÚleftZneither)r   r   r[   r   r4   r5   r6   r)   rG   r*   rP   rR   r'   r(   )r,   r   r\   r]   r   r8   rS   rT   r   r   r   Útest_closedÿ   sF    ûÿø
þ,zTestRollingTS.test_closedc                 C   s¬  |}|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"   rA   ©rX   r"   r#   r@   r$   r   r&   rW   r#   r@   rY   rN   )rX   r"   r@   r   rY   r1   Z4s)rX   r"   r@   é   é	   rj   rk   Ú5s)rX   r"   r@   rj   é
   )r)   r*   rG   rP   rR   r'   r(   ©r,   r    r   rT   rS   r   r   r   Útest_ragged_sum.  sB    zTestRollingTS.test_ragged_sumc                 C   sl   |}|j ddd� ¡ }| ¡ }g d¢|d< t ||¡ |j ddd� ¡ }| ¡ }g d¢|d< t ||¡ d S ©Nrh   r"   rA   ri   r   r&   ©rX   r"   g      ø?ç      @g      @)r)   ÚmeanrG   rP   rR   rn   r   r   r   Útest_ragged_meanX  s    zTestRollingTS.test_ragged_meanc                 C   sl   |}|j ddd� ¡ }| ¡ }g d¢|d< t ||¡ |j ddd� ¡ }| ¡ }g d¢|d< t ||¡ d S rp   )r)   ÚmedianrG   rP   rR   rn   r   r   r   Útest_ragged_mediand  s    z TestRollingTS.test_ragged_medianc                 C   sp   |}|j ddd� d¡}| ¡ }g d¢|d< t ||¡ |j ddd� d¡}| ¡ }g d¢|d< t ||¡ d S )	Nrh   r"   rA   ç      à?ri   r   r&   rq   )r)   ÚquantilerG   rP   rR   rn   r   r   r   Útest_ragged_quantilep  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 )Nrh   r"   rA   r   ©ZddofrX   r   r   rN   rw   r$   rl   g»¹øÛž æ?r?   gÊPSé§ô?)r)   ÚstdrG   rP   rR   r'   r(   rn   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 )Nrh   r"   rA   r   rz   rX   r   r   rN   g      Ð?r$   rl   rw   r?   gªªªªªªú?)r)   ÚvarrG   rP   rR   r'   r(   rn   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 g d¢ |d< t ||¡ d S )	NrN   r"   rA   r   r   rl   r#   )rX   rX   rX   )r)   ÚskewrG   r'   r(   rP   rR   rn   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"   rA   r   r   rl   r$   g333333ó¿)r)   ÚkurtrG   r'   r(   rP   rR   rn   r   r   r   Útest_ragged_kurt´  s    zTestRollingTS.test_ragged_kurtc                 C   sÊ   |}|j ddd� ¡ }| ¡ }g d¢|d< t ||¡ |}|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 )
Nrh   r"   rA   )r?   r"   r"   r"   r"   r   r1   r&   )r?   r"   r#   r"   r#   r#   )r)   ÚcountrG   rP   rR   r'   r(   rn   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   ri   r   r   rh   r   )r   r$   r@   r$   r   r&   )ç      @r$   r@   r@   r$   rl   )r…   r$   r@   r@   r@   )r   r	   r   r)   ÚminrG   rP   rR   ©r,   r   rT   rS   r   r   r   Útest_regular_minÕ  s.    ÿþÿþzTestRollingTS.test_regular_minc                 C   sž   |}|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 )
Nrh   r"   rA   ri   r   r&   )rX   r"   r"   r@   r@   rl   )rX   r   r   r"   r"   )r)   r†   rG   rP   rR   rn   r   r   r   Útest_ragged_miní  s    zTestRollingTS.test_ragged_minc                 C   s    d}t dtj d¡ |¡itd|dd�d�}|jddd	� ¡ }| d
¡ ¡ }|| dk  ¡  ¡ sdJ ‚|jddd	� ¡ }| d¡ ¡ }|| dk  ¡  ¡ sœJ ‚d S )Ni'  r   r#   r   r   r   r%   r"   rb   r&   g{®Gáz„?éÈ   Z200s)	r   r'   ÚrandomZdefault_rngZstandard_normalr	   r)   r†   Úall)r,   ÚNZdfprS   rT   r   r   r   Útest_perf_minÿ  s    þzTestRollingTS.test_perf_minc                 C   sž   |}|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 )Nrh   r"   rA   ri   r   r&   rl   )r)   ÚmaxrG   rP   rR   rn   r   r   r   Útest_ragged_max  s    zTestRollingTS.test_ragged_maxzfreq, op, result_dataÚmsr†   rX   rm   rs   rk   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Ú1rm   )Ústartr   r   r   Úfloat)Údatar   Údtyper"   r#   éÿÿÿÿÚ10r1   )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Úf)
r*   rs   rƒ   ru   r{   r}   r�   r   r†   r�   c                 C   sh   |d }|j dd�}|j dd�}t||ƒƒ }t||ƒƒ }t ||¡ | d¡}| d¡}t ||¡ d S )Nr#   r"   r1   rh   rw   )r)   rš   rP   rR   rx   )r,   r�   r   r   ZerÚrrT   rS   r   r   r   Útest_all@  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   r’   r   r%   ú09:00ú16:00Z5hr1   c                    s"   |   dd¡} t| jddd�ˆ ƒƒ S )Nr¡   r¢   r   r"   rb   )Úbetween_timerš   r)   )Úx©r�   r   r   Ú
agg_by_dayo  s    z+TestRollingTS.test_all2.<locals>.agg_by_dayr   T)ÚlevelrO   )r   r'   Úaranger	   r£   r)   rš   Úgroupbyr   ÚdayÚapplyr7   rP   rR   )r,   Zarithmetic_win_operatorsr   Zdftrž   rT   r¦   rS   r   r¥   r   Ú	test_all2]  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2hrw   r"   r#   rb   Z3hr?   r@   )
r	   r   r'   r¨   rH   r)   Zcovr(   rP   rQ   )r,   ÚidxÚssrT   rS   Z	expected2r   r   r   Útest_rolling_cov_offsety  s    "$z%TestRollingTS.test_rolling_cov_offsetc                 C   sr   t 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)r@   r$   r$   r   rj   r%   rl   )rr   rr   ç      @r²   ç      @)r   r   r[   r   r)   r†   rP   rR   )r,   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%   rl   )r   r)   r†   rP   rR   r‡   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±   rj   Z20190101r@   rE   r#   ÚdateÚseq)Únamesr%   Z10drJ   )rX   r?   rr   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-   r9   r4   ÚmarkÚparametrizer
   Z
MonthBeginr;   ZDayr=   r'   ÚarrayrC   rI   rL   rM   rU   r^   ra   rc   rg   ro   rt   rv   ry   r|   r~   r€   r‚   r„   rˆ   r‰   rŽ   r�   rœ   rŸ   r¬   r°   r´   rµ   r¹   r   r   r   r   r!   )   sv   



	 %/*ñþ
þ
r!   z	msg, axisr±   r"   r   c              	   C   s¾   t dƒtg}|dkrdnd|i}tt d¡fi |¤Ž}d}|dkrFd}tjt| › d�d	��P tj	t
|d	��" |jd
|d� ¡  W d   ƒ n1 s’0    Y  W d   ƒ n1 s°0    Y  d S )NZ2020r"   rV   r   r#   z5The 'axis' keyword in DataFrame.rolling is deprecatedz5Support for axis=1 in DataFrame.rolling is deprecatedz values must not have NaTr.   r_   )Úaxis)r   r   r   r'   Úeyer4   r5   r6   rP   Zassert_produces_warningÚFutureWarningr)   rs   )r8   rÀ   r®   Úkwargsr   Zwarn_msgr   r   r   Útest_nat_axis_error´  s    rÄ   Zpyarrowc                  C   sF   t tjdtjd�ttddd�dd�d�} |  d¡ ¡ }t 	|| ¡ d S )Nr   )r—   z
2020-01-01rE   ztimestamp[ns][pyarrow]r%   r<   )
r   r'   r¨   Zfloat64r   r	   r)   r*   rP   rQ   )rS   rT   r   r   r   Útest_arrow_datetime_axisÁ  s    ÿþrÅ   )Únumpyr'   r4   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsÚtdZpandasr   r   r   r   r   r   r   r	   Zpandas._testingZ_testingrP   Zpandas.tseriesr
   Zfixturer   r    r!   r½   r¾   rÄ   Z
skip_if_norÅ   r   r   r   r   Ú<module>   s&   (


     
