U
    sVc[                     @   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   N/tmp/pip-unpacked-wheel-xj8nt62q/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=   gP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   st	d S )Ni'  r   r	   r   r   r#   r!   r    r]   r$   g{Gz?   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%   Zeyer2   r3   r4   r'   rn   )r6   r   r   kwargsr   r   r   r   test_nat_axis_error  s
    r   )Z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    $	

     #