U
    *if[                     @   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 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                   @   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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/d0 Zd1d2 Zd3d4 Zd5d6 Z d7d8 Z!d9d: Z"d;d< Z#d=d> Z$d?d@ Z%ejdAdBdCdDgdE fdBdFdDgdG dHg fdBdIdDgdG dJg fdKdCdDgdE fdKdFdDgdG dHg fdKdIdDgdG dJg fdCdCdDgdE fdCdFdDgdG dHg fdCdIdDgdG dJg fdLdCdDgdE fdLdFdDgdG dHg fdLdIdDgdG dJg fdMdCdDgdE fdMdFdDgdG dHg fdMdIdDgdG dJg fgdNdO Z&ejdPdQdFej'dRej(dSdTdUdVdWdXdYdCdIg
dZd[ Z)d\d] Z*d^d_ Z+d`da Z,dbdc Z-ddde Z.dfS )g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   ]/home/mars/bis/venv/lib/python3.8/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 5 Q R X d}t jt|d | j 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   r)   reset_index)r   msgr   r   r    test_invalid_window_non_int5   s    z)TestRollingTS.test_invalid_window_non_intr   Z2MSr#   c              	   C   s0   d}t jt|d | jj|d W 5 Q R X 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foor"      c              	   C   s2   d}t jt|d | jjd|d W 5 Q R X 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 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&   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(t|jddd  |d}|j	jsPt|d  d S )	Nr
   r   r   r   r   r&   r   rD   )
r   r   r   r   is_monotonicAssertionErrorr)   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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 NonerJ   )r   r   r   r   r   Zto_listrK   rL   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 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   rF   r   rF   r   )columns           r&   rJ   )name)r   r'   r(   r   r   r)   r*   rQ   rS   r   r   rR   )r   r,   Z	expected1rV   rU   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*   rQ   rS   rT   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*   rQ   rS   rT   r   r   r    test_min_periods   s    zTestRollingTS.test_min_periodsc              	   C   sf  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 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)r2   closedr?   r#   right)ra   r@   ZbothleftZneither)r   r   r4   r5   r6   r   r)   rG   r*   rQ   rS   r'   r(   )r   r,   r8   rU   rV   r   r   r    test_closed   s<    zTestRollingTS.test_closedc                 C   s  | j }|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"   rA   rY   r#   r@   r$   r   r&   rZ   rO   r   r1   Z4s   	   5s
   )r   r)   r*   rG   rQ   rS   r'   r(   r   r,   rV   rU   r   r   r    test_ragged_sum,  sB    zTestRollingTS.test_ragged_sumc                 C   sz   | j }|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 Nre   r"   rA   rY   r#   r@   r$   r   r&         ?      @      @)r   r)   meanrG   rQ   rS   rj   r   r   r    test_ragged_meanW  s    zTestRollingTS.test_ragged_meanc                 C   sz   | j }|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 rl   )r   r)   medianrG   rQ   rS   rj   r   r   r    test_ragged_mediand  s    z TestRollingTS.test_ragged_medianc                 C   s~   | j }|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 )Nre   r"   rA         ?rY   r#   r@   r$   r   r&   rm   rn   ro   )r   r)   quantilerG   rQ   rS   rj   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 )Nre   r"   rA   r   ZddofrY   r   r   rO   rt   r$   rh   g۞?r?   gPS?)r   r)   stdrG   rQ   rS   r'   r(   rj   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 )Nre   r"   rA   r   rw   rY   r   r   rO   g      ?r$   rh   rt   r?   g?)r   r)   varrG   rQ   rS   r'   r(   rj   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 dddg |d< t|| d S )	NrO   r"   rA   r   r   rh   r#   rY   )r   r)   skewrG   r'   r(   rQ   rS   rj   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 )	NrO   r"   rA   r   r   rh   r$   g333333)r   r)   kurtrG   r'   r(   rQ   rS   rj   r   r   r    test_ragged_kurt  s    zTestRollingTS.test_ragged_kurtc                 C   s   | j }|jddd }| }dddddg|d< t|| | j }|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 )	Nre   r"   rA   r?   r   r1   r&   r#   )r   r)   countrG   rQ   rS   r'   r(   rj   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   rY   r"   r#   r@   r$   r   r   re   r   r&   g      @rh   )r   r   r   r)   minrG   rQ   rS   rj   r   r   r    test_regular_min  s.    zTestRollingTS.test_regular_minc                 C   s   | j }|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 )Nre   r"   rA   rY   r#   r@   r$   r   r&   rh   r   )r   r)   r   rG   rQ   rS   rj   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boolrL   )r   NZdfprU   rV   r   r   r    test_perf_min  s     zTestRollingTS.test_perf_minc                 C   s   | j }|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 )Nre   r"   rA   rY   r#   r@   r$   r   r&   rh   )r   r)   maxrG   rQ   rS   rj   r   r   r    test_ragged_max  s    zTestRollingTS.test_ragged_maxzfreq, op, result_datamsr   rY   ri   rp   rg   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1ri   )startr   r   r   )datar   r"   r#   10r1   )	r   r   r'   r(   Zilocgetattrr)   rQ   rR   )r   r   opZresult_datar   r   rV   rU   r   r   r    test_freqs_ops*  s    
zTestRollingTS.test_freqs_opsfr*   r   z ignore:min_periods:FutureWarning)Zmarksrr   rx   rz   r~   r|   c                 C   sj   | j d }|jdd}|jdd}t|| }t|| }t|| |d}|d}t|| d S )Nr#   r"   r1   re   rt   )r   r)   r   rQ   rS   ru   )r   r   r,   ZerrrV   rU   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)levelrP   )r   r'   aranger   r   r)   r   groupbyr   dayapplyr7   rQ   rS   )r   Zarithmetic_win_operatorsr,   Zdftr   rV   r   rU   r   r   r    	test_all2j  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2hrt   r"   r#   r_   Z3hr?   r@   )
r   r   r'   r   rH   r)   Zcovr(   rQ   rR   )r   idxssrV   rU   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   rf   r%   rh   rn   g      @      @)r   r   r)   r   rQ   rS   )r   r   r,   rV   rU   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%   rh   )r   r)   r   rQ   rS   rj   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   rf   Z20190101r@   rE   r#   dateseq)namesr%   Z10drJ   rY   r?   rn   r   g      $@g      .@)r   r   r   Zfrom_productr   r)   r   Zget_level_valuesr*   rQ   rS   rj   r   r   r    !test_rolling_on_multi_index_level  s    
  z/TestRollingTS.test_rolling_on_multi_index_levelN)/__name__
__module____qualname__r!   r-   r9   r4   markparametrizeoffsetsZ
MonthBeginr;   ZDayr=   r'   arrayrC   rI   rM   rN   rW   r\   r^   r`   rd   rk   rq   rs   rv   ry   r{   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"   rX   r   r#   z values must not have NaTr.   r]   )axis)
r   r   r   r'   eyer4   r5   r6   r)   rp   )r8   r   r   kwargsr,   r   r   r    test_nat_axis_error  s
    r   )numpyr'   r4   Zpandasr   r   r   r   r   r   r   Zpandas._testingZ_testingrQ   Zpandas.tseries.offsetsZtseriesr   r	   r   r   r   r   r   r   r    <module>   s   $	     2