a
    oÝEbÞa  ã                   @   sd   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dS )é    N)Ú	DataFrameÚIndexÚ
MultiIndexÚSeriesÚ	TimestampÚ
date_rangeÚto_datetimec                   @   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 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d0d1„ Zd2d3„ Zd4d5„ Z d6d7„ Z!d8d9„ Z"d:d;„ Z#d<d=„ Z$d>d?„ Z%ej d@dAdBdCgdD fdAdEdCgdF dGg fdAdHdCgdF dIg fdJdBdCgdD fdJdEdCgdF dGg fdJdHdCgdF dIg fdBdBdCgdD fdBdEdCgdF dGg fdBdHdCgdF dIg fdKdBdCgdD fdKdEdCgdF dGg fdKdHdCgdF dIg fdLdBdCgdD fdLdEdCgdF dGg fdLdHdCgdF dIg fg¡dMdN„ ƒZ&ej dOdPdEej'dQej (dR¡dS�dTdUdVdWdXdBdHg
¡dYdZ„ ƒZ)d[d\„ Z*d]d^„ Z+d_d`„ Z,dadb„ Z-dcdd„ Z.dedf„ Z/dgdh„ Z0diS )jÚ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   új/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/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 d   ƒ n1 s60    Y  d}t jt|d��" | j ¡ jdd� W d   ƒ n1 sz0    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   r)   Úreset_index)r   Úmsgr   r   r    Útest_invalid_window_non_int5   s    ,z)TestRollingTS.test_invalid_window_non_intr   Z2MSr#   c                 C   sD   d}t jt|d�� | jj|d� W d   ƒ n1 s60    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_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foo)r"   r#   é   c                 C   sF   d}t jt|d��  | jjd|d� W d   ƒ n1 s80    Y  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 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   )
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(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_monotonicr)   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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 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 g d¢dddtjdgttdƒtdƒtdƒtd	ƒt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 )N)r   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'   r(   r   r   r)   r*   rP   rR   r   r   rQ   )r   r,   Z	expected1rU   rT   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*   rP   rR   rS   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*   rP   rR   rS   r   r   r    Útest_min_periodsò   s    zTestRollingTS.test_min_periodsc                 C   sn  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 d   ƒ n1 sl0    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 )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   Úclosed)r?   r#   r#   r#   r"   Úright)rb   )r?   r#   r@   r@   r#   Zbothr?   r#   ÚleftZneither)r   r   r4   r5   r6   r   r)   rG   r*   rP   rR   r'   r(   )r   r,   r8   rT   rU   r   r   r    Útest_closed   s<    ûþ.zTestRollingTS.test_closedc                 C   s®  | j }|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   ©rZ   r"   r#   r@   r$   r   r&   rY   r#   r@   r[   rN   )rZ   r"   r@   r   r[   r1   Ú4s)rZ   r"   r@   é   é	   ri   rj   Ú5s)rZ   r"   r@   ri   é
   )r   r)   r*   rG   rP   rR   r'   r(   ©r   r,   rU   rT   r   r   r    Útest_ragged_sum,  sB    zTestRollingTS.test_ragged_sumc                 C   sn   | j }|jddd� ¡ }| ¡ }g d¢|d< t ||¡ |jddd� ¡ }| ¡ }g d¢|d< t ||¡ d S ©Nrf   r"   rA   rg   r   r&   ©rZ   r"   g      ø?ç      @g      @)r   r)   ÚmeanrG   rP   rR   rm   r   r   r    Útest_ragged_meanW  s    zTestRollingTS.test_ragged_meanc                 C   sn   | j }|jddd� ¡ }| ¡ }g d¢|d< t ||¡ |jddd� ¡ }| ¡ }g d¢|d< t ||¡ d S ro   )r   r)   ÚmedianrG   rP   rR   rm   r   r   r    Útest_ragged_mediand  s    z TestRollingTS.test_ragged_medianc                 C   sr   | j }|jddd� d¡}| ¡ }g d¢|d< t ||¡ |jddd� d¡}| ¡ }g d¢|d< t ||¡ d S )	Nrf   r"   rA   ç      à?rg   r   r&   rp   )r   r)   ÚquantilerG   rP   rR   rm   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 )Nrf   r"   rA   r   ©ZddofrZ   r   r   rN   rv   r$   rk   g»¹øÛž æ?r?   gÊPSé§ô?)r   r)   ÚstdrG   rP   rR   r'   r(   rm   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 )Nrf   r"   rA   r   ry   rZ   r   r   rN   g      Ð?r$   rk   rv   r?   gªªªªªªú?)r   r)   ÚvarrG   rP   rR   r'   r(   rm   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 g d¢ |d< t ||¡ d S )	NrN   r"   rA   r   r   rk   r#   )rZ   rZ   rZ   )r   r)   ÚskewrG   r'   r(   rP   rR   rm   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 )	NrN   r"   rA   r   r   rk   r$   g333333ó¿)r   r)   ÚkurtrG   r'   r(   rP   rR   rm   r   r   r    Útest_ragged_kurt¹  s    zTestRollingTS.test_ragged_kurtc                 C   sÎ   | j }|jddd� ¡ }| ¡ }g d¢|d< t ||¡ | j }|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 )
Nrf   r"   rA   )r?   r"   r"   r"   r"   r   r1   r&   )r?   r"   r#   r"   r#   r#   )r   r)   ÚcountrG   rP   rR   r'   r(   rm   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   rg   r   r   rf   r   )r   r$   r@   r$   r   r&   )ç      @r$   r@   r@   r$   rk   )r„   r$   r@   r@   r@   )r   r   r   r)   ÚminrG   rP   rR   rm   r   r   r    Útest_regular_minÜ  s.    ÿþÿþzTestRollingTS.test_regular_minc                 C   s    | j }|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 )
Nrf   r"   rA   rg   r   r&   )rZ   r"   r"   r@   r@   rk   )rZ   r   r   r"   r"   )r   r)   r…   rG   rP   rR   rm   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^J ‚|jddd	� ¡ }| d¡ ¡ }|| dk  ¡  ¡ s–J ‚d S )Ni'  r   r
   r   r   r%   r#   r"   r`   r&   g{®Gáz„?éÈ   Z200s)	r   r'   ÚrandomZrandnr   r)   r…   ÚallÚbool)r   ÚNZdfprT   rU   r   r   r    Útest_perf_min  s    ÿzTestRollingTS.test_perf_minc                 C   s    | j }|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 )Nrf   r"   rA   rg   r   r&   rk   )r   r)   ÚmaxrG   rP   rR   rm   r   r   r    Útest_ragged_max  s    zTestRollingTS.test_ragged_maxzfreq, op, result_dataÚmsr…   rZ   rl   rr   rj   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Ú1rl   )Ústartr   r   r   )Údatar   r"   r#   éÿÿÿÿÚ10r1   )	r   r   r'   r(   ZilocÚgetattrr)   rP   rQ   )r   r   ÚopZresult_datar   r   rU   rT   r   r   r    Útest_freqs_ops*  s    
zTestRollingTS.test_freqs_opsÚfr*   r‚   z ignore:min_periods:FutureWarning)Zmarksrt   rz   r|   r€   r~   c                 C   sj   | j d }|jdd�}|jdd�}t||ƒƒ }t||ƒƒ }t ||¡ | d¡}| d¡}t ||¡ d S )Nr#   r"   r1   rf   rv   )r   r)   r—   rP   rR   rw   )r   rš   r,   ZerÚrrU   rT   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)ÚlevelrO   )r   r'   Úaranger   r¡   r)   r—   Úgroupbyr   ÚdayÚapplyr7   rP   rR   )r   Zarithmetic_win_operatorsr,   Zdftr›   rU   r¥   rT   r   r¤   r    Ú	test_all2j  s    ÿÿzTestRollingTS.test_all2c                 C   s°   g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d	¢g d
¢g
}t |g d¢d�}t|d ƒ|d< | d¡}| d¡ d¡ dd„ ¡}| d¡jddd�d  ¡ }t 	||¡ d S )N)ÚDavidz1/1/2015éd   )r¬   z1/5/2015éô  )r¬   z	5/30/2015r�   )r¬   z	7/25/2015r�   )ÚRyanz1/4/2014r­   )r¯   z	1/19/2015r®   )r¯   z	3/31/2016r�   )ÚJoez7/1/2015r­   )r°   z9/9/2015r®   )r°   z
10/15/2015r�   )r\   ÚdateÚamount)r”   rX   r±   r\   c                 S   s   |   d¡d  ¡ S )NÚ180Dr²   )r)   r*   r¢   r   r   r    Ú<lambda>¢  ó    z6TestRollingTS.test_groupby_monotonic.<locals>.<lambda>r³   rJ   r²   )
r   r   Úsort_valuesr   r¨   rª   r)   r*   rP   rQ   )r   r”   r,   rT   rU   r   r   r    Útest_groupby_monotonic†  s,    	ö

ÿþÿz$TestRollingTS.test_groupby_monotonicc                 C   sÞ   t dddd�}tdgd dgd  dgd	  t ||f¡t d
¡dœƒ}| d¡ d¡ dd„ ¡}tj	t
dd��* | d¡jddd�j ¡  W d   ƒ n1 s 0    Y  | d¡}| d¡jddd�j ¡ }t ||¡ d S )Nz2016-01-01 09:30:00é   r   )r“   r   r   r"   r#   é   r@   é   é(   rW   r   r   c                 S   s   |   d¡d  ¡ S )Nrh   rF   )r)   rr   r¢   r   r   r    r´   ¶  rµ   z9TestRollingTS.test_non_monotonic_raises.<locals>.<lambda>z.* must be monotonicr.   rh   rJ   )r   r   r'   Zconcatenater§   r   r¨   rª   r4   r5   r6   r)   rF   rr   r¶   rP   rQ   )r   Údatesr,   rT   Zdf2rU   r   r   r    Útest_non_monotonic_raises§  s     ýÿ	ÿ
ÿ*
z'TestRollingTS.test_non_monotonic_raisesc                 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2hrv   r"   r#   r`   Z3hr?   r@   )
r   r   r'   r§   rH   r)   Zcovr(   rP   rQ   )r   ÚidxÚssrU   rT   Z	expected2r   r   r    Útest_rolling_cov_offsetÁ  s    "$z%TestRollingTS.test_rolling_cov_offsetc                 C   sh   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   ri   r%   rk   )rq   rq   ç      @rÃ   ç      @)r   r   r)   r…   rP   rR   )r   r   r,   rU   rT   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%   rk   )r   r)   r…   rP   rR   rm   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Â   ri   Z20190101r@   rE   r#   r±   Úseq)Únamesr%   Z10drJ   )rZ   r?   rq   rÄ   g      $@g      .@)r   r   r   Zfrom_productr   r)   r   Zget_level_valuesr*   rP   rR   rm   r   r   r    Ú!test_rolling_on_multi_index_levelë  s    
ÿþÿz/TestRollingTS.test_rolling_on_multi_index_levelN)1Ú__name__Ú
__module__Ú__qualname__r!   r-   r9   r4   ÚmarkZparametrizeÚoffsetsZ
MonthBeginr;   ZDayr=   r'   ÚarrayrC   rI   rL   rM   rV   r]   r_   ra   re   rn   rs   ru   rx   r{   r}   r   r�   rƒ   r†   r‡   r�   r�   r™   ÚparamÚfilterwarningsrœ   r«   r·   r½   rÁ   rÅ   rÆ   rÉ   r   r   r   r    r	      s–   


	!%,+ñþ

þóþ
!r	   )Únumpyr'   r4   Zpandasr   r   r   r   r   r   r   Zpandas._testingZ_testingrP   Zpandas.tseries.offsetsZtseriesrÎ   r	   r   r   r   r    Ú<module>   s
   $	