o
    Û­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   úg/var/www/html/CropPilot/venv/lib/python3.10/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 sw   Y  d}t jt|d�� | ¡ jdd� W d   ƒ d S 1 s<w   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   Ú2MSr#   c                 C   sD   d}t jt|d�� |j|d� W d   ƒ d S 1 sw   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Ú1DÚ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ç      ð?Úfoo)r"   r#   é   c                 C   sF   d}t jt|d�� |jd|d� W d   ƒ d S 1 sw   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w   Y  | ¡ }tdt|ƒd�|d< |jd	dd� ¡  d
}t jt|d�� |jd	dd� W d   ƒ n1 sTw   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   ÚCÚ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s(J ‚| d¡ ¡  d S )	Nr   r   r   r   r   r&   r   ©rG   )	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r'J ‚d	}tjt	|d
�� | 
d¡ ¡  W d   ƒ n1 sBw   Y  | ¡ }d}tjt	|d
�� |j
ddd� ¡  W d   ƒ d S 1 siw   Y  d S )Nr   r   r   r   r   r   rC   r   zindex values must be monotonicr.   r&   zNinvalid on specified as A, must be a column \(of DataFrame\), an Index or NonerN   )r   r	   r   r   r   Úto_listrO   r4   r5   r6   r)   r*   r7   )r,   r   Ú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   rI   r   r   r   r   r   r&   T)ÚdroprN   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#   rC   r$   r   r"   r#   r$   )r   r   rI   )r   rI   r   )Úcolumns©ç        r"   rC   rC   é   rC   rI   r&   rN   r   )Úname)r   r   Úas_unitr   r'   r(   r)   r*   rV   rX   r   r   rW   )r,   ÚunitÚdtir   Ú	expected1rZ   rY   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"   rD   r=   r1   Ú2D)rK   r	   r   r)   r*   rV   rX   ©r,   r   r   rY   rZ   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"   ©rE   r&   )r)   r*   rV   rX   rh   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 s<w   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&   Úblabla)r2   Úclosed)rA   r#   r#   r#   r"   Úright)rm   )rA   r#   rC   rC   r#   ÚbothrA   r#   ÚleftÚneither)r   r   ra   r   r4   r5   r6   r)   rK   r*   rV   rX   r'   r(   )r,   r   rb   rc   r   r8   rY   rZ   r   r   r   Útest_closedÿ   sH   ûÿø
þÿ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"   rD   ©r^   r"   r#   rC   r$   r   r&   r]   r#   rC   r_   rT   )r^   r"   rC   r   r_   r1   Ú4s)r^   r"   rC   é   é	   rv   rw   Ú5s)r^   r"   rC   rv   é
   )r)   r*   rK   rV   rX   r'   r(   ©r,   r    r   rZ   rY   r   r   r   Útest_ragged_sum.  sB   zTestRollingTS.test_ragged_sumc                 C   ól   |}|j ddd� ¡ }| ¡ }g d¢|d< t ||¡ |j ddd� ¡ }| ¡ }g d¢|d< t ||¡ d S ©Nrs   r"   rD   rt   r   r&   ©r^   r"   g      ø?ç      @g      @)r)   ÚmeanrK   rV   rX   rz   r   r   r   Útest_ragged_meanX  ó   zTestRollingTS.test_ragged_meanc                 C   r|   r}   )r)   ÚmedianrK   rV   rX   rz   r   r   r   Útest_ragged_mediand  r‚   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 )	Nrs   r"   rD   ç      à?rt   r   r&   r~   )r)   ÚquantilerK   rV   rX   rz   r   r   r   Útest_ragged_quantilep  s   z"TestRollingTS.test_ragged_quantilec                 C   óö   |}|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 )Nrs   r"   rD   r   ©Úddofr^   r   r   rT   r…   r$   rx   g»¹øÛž æ?rA   gÊPSé§ô?)r)   ÚstdrK   rV   rX   r'   r(   rz   r   r   r   Útest_ragged_std|  ó"   zTestRollingTS.test_ragged_stdc                 C   rˆ   )Nrs   r"   rD   r   r‰   r^   r   r   rT   g      Ð?r$   rx   r…   rA   gªªªªªªú?)r)   ÚvarrK   rV   rX   r'   r(   rz   r   r   r   Útest_ragged_var’  r�   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 )	NrT   r"   rD   r   r   rx   r#   )r^   r^   r^   )r)   ÚskewrK   r'   r(   rV   rX   rz   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 )	NrT   r"   rD   r   r   rx   r$   g333333ó¿)r)   ÚkurtrK   r'   r(   rV   rX   rz   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 )
Nrs   r"   rD   )rA   r"   r"   r"   r"   r   r1   r&   )rA   r"   r#   r"   r#   r#   )r)   ÚcountrK   rV   rX   r'   r(   rz   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   rt   r   r   rs   r   )r   r$   rC   r$   r   r&   )ç      @r$   rC   rC   r$   rx   )r–   r$   rC   rC   rC   )r   r	   r   r)   ÚminrK   rV   rX   ©r,   r   rZ   rY   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 )
Nrs   r"   rD   rt   r   r&   )r^   r"   r"   rC   rC   rx   )r^   r   r   r"   r"   )r)   r—   rK   rV   rX   rz   r   r   r   Útest_ragged_miní  ó   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  ¡  ¡ s2J ‚|jddd	� ¡ }| d¡ ¡ }|| dk  ¡  ¡ sNJ ‚d S )Ni'  r   r#   r   r   r   r%   r"   rj   r&   g{®Gáz„?éÈ   Ú200s)	r   r'   ÚrandomÚdefault_rngÚstandard_normalr	   r)   r—   Úall)r,   ÚNÚdfprY   rZ   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 )Nrs   r"   rD   rt   r   r&   rx   )r)   ÚmaxrK   rV   rX   rz   r   r   r   Útest_ragged_max  r›   zTestRollingTS.test_ragged_maxzfreq, op, result_dataÚmsr—   r^   ry   r€   rw   gÇqÇqÌ?r¥   g       @r   Úhrf   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Ú1ry   )Ústartr   r   r   Úfloat)Údatar   Údtyper"   r#   éÿÿÿÿÚ10r1   )r¬   r   )	r	   r   r'   r(   ÚilocÚgetattrr)   rV   rW   )r,   r   ÚopÚresult_datar   r   rZ   rY   r   r   r   Útest_freqs_ops   s   
zTestRollingTS.test_freqs_opsÚf)
r*   r€   r”   rƒ   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   rs   r…   )r)   r±   rV   rX   r†   )r,   rµ   r   r   ÚerÚrrZ   rY   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:00Ú5hr1   c                    s"   |   dd¡} t| jddd�ˆ ƒƒ S )Nrº   r»   r   r"   rj   )Úbetween_timer±   r)   )Úx©rµ   r   r   Ú
agg_by_dayo  s   z+TestRollingTS.test_all2.<locals>.agg_by_dayr   T)ÚlevelrU   )r   r'   Úaranger	   r½   r)   r±   Úgroupbyr   ÚdayÚapplyr7   rV   rX   )r,   Úarithmetic_win_operatorsr   Údftr·   rZ   rÀ   rY   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é   Ú1hr   r%   Ú2hr…   r"   r#   rj   Ú3hrA   rC   )
r	   r   r'   rÂ   rL   r)   Úcovr(   rV   rW   )r,   ÚidxÚssrZ   rY   Ú	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)rC   r$   r$   r   rv   r%   rx   )r   r   ç      @rÓ   ç      @)r   r   ra   r   r)   r—   rV   rX   )r,   rb   r   r   rZ   rY   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%   rx   )r   r)   r—   rV   rX   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Ò   rv   Ú20190101rC   rH   r#   ÚdateÚseq)Únamesr%   Ú10drN   )r^   rA   r   rÔ   g      $@g      .@)r   r   r   Úfrom_productr	   r)   r   Úget_level_valuesr*   rV   rX   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
   Ú
MonthBeginr<   ÚDayr?   r'   ÚarrayrF   rM   rP   rS   r[   re   ri   rk   rr   r{   r�   r„   r‡   rŒ   r�   r‘   r“   r•   r™   rš   r¤   r¦   r´   r¸   rÈ   rÑ   rÕ   rÖ   rÞ   r   r   r   r   r!   )   sx    



	 %/*ñþ
þ
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r#d}tjt| › d�d	��1 tj	t
|d	�� |jd
|d� ¡  W d   ƒ n1 sIw   Y  W d   ƒ d S W d   ƒ d S 1 saw   Y  d S )NÚ2020r"   r\   r   r#   z5The 'axis' keyword in DataFrame.rolling is deprecatedz5Support for axis=1 in DataFrame.rolling is deprecatedz values must not have NaTr.   rf   )Úaxis)r   r   r   r'   Úeyer4   r5   r6   rV   Úassert_produces_warningÚFutureWarningr)   r€   )r8   rè   rÎ   Úkwargsr   Úwarn_msgr   r   r   Útest_nat_axis_error´  s   ÿÿ"ÿrî   Ú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-01rH   ztimestamp[ns][pyarrow]r%   r=   )
r   r'   rÂ   Úfloat64r   r	   r)   r*   rV   rW   )rY   rZ   r   r   r   Útest_arrow_datetime_axisÁ  s   ÿþrñ   )Únumpyr'   r4   Úpandas.util._test_decoratorsÚutilÚ_test_decoratorsÚtdÚpandasr   r   r   r   r   r   r   r	   Úpandas._testingÚ_testingrV   Úpandas.tseriesr
   Úfixturer   r    r!   râ   rã   rî   Ú
skip_if_norñ   r   r   r   r   Ú<module>   s(    (


     
