o
    i[                     @   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   e/var/www/edux/Edux_v2/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dMdNdCej&dOej'dPdQdRdSdTdUdVd@dFg
dWdX Z(dYdZ Z)d[d\ Z*d]d^ Z+d_d` Z,dadb Z-dcS )d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,   r/   r2   r3   r4   r'   )r*   r   r   r6   r   r   r   test_invalid_window_nonfixedE   s   "z*TestRollingTS.test_invalid_window_nonfixed1D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      ?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;   r0   min_periodsr9   )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 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$   r.   )r0   onr	   r   C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J |jddd  |d}|jjs(J |d  d S )	Nr	   r
   r   r   r   r$   r   rE   )	r   r   r   r   is_monotonic_increasingr'   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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   rA   r   zindex values must be monotonicr,   r$   zNinvalid on specified as A, must be a column \(of DataFrame\), an Index or NonerL   )r   r   r   r   r   to_listrM   r2   r3   r4   r'   r(   r5   )r*   r   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   rG   r   r   r   r   r   r$   T)droprL   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 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!   rA   r"   r   r    r!   r"   r   r   r   r   r   )r   r   rG   )r   rG   r   )columns        r    rA   rA      rA   rG   r$   rL   r   )name)r   r%   r&   r   r   r'   r(   rT   rV   r   r   rU   )r*   r   	expected1rX   rW   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    rB   r;   r/   2D)rI   r   r   r'   r(   rT   rV   r*   r   r   rW   rX   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    rC   r$   )r'   r(   rT   rV   rc   r   r   r   test_min_periods   s   zTestRollingTS.test_min_periodsc                 C   sl  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 d    n1 s5w   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$   blabla)r0   closed)r?   r!   r!   r!   r    right)rh   )r?   r!   rA   rA   r!   bothr?   r!   leftneither)r   r   r2   r3   r4   r'   rI   r(   rT   rV   r%   r&   )r*   r   r   r6   rW   rX   r   r   r   test_closed  s>   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    rB   r\   r    r!   rA   r"   r   r$   r[   r!   rA   r]   rR   )r\   r    rA   r
   r]   r/   4s)r\   r    rA      	   rq   rr   5s)r\   r    rA   rq   
   )r'   r(   rI   rT   rV   r%   r&   r*   r   r   rX   rW   r   r   r   test_ragged_sum1  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 Nrn   r    rB   ro   r   r$   r\   r    g      ?      @g      @)r'   meanrI   rT   rV   ru   r   r   r   test_ragged_mean\     zTestRollingTS.test_ragged_meanc                 C   rw   rx   )r'   medianrI   rT   rV   ru   r   r   r   test_ragged_mediani  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 )	Nrn   r    rB         ?ro   r   r$   ry   )r'   quantilerI   rT   rV   ru   r   r   r   test_ragged_quantilev  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 )Nrn   r    rB   r   ddofr\   r
   r   rR   r   r"   rs   g۞?r?   gPS?)r'   stdrI   rT   rV   r%   r&   ru   r   r   r   test_ragged_std  "   zTestRollingTS.test_ragged_stdc                 C   r   )Nrn   r    rB   r   r   r\   r
   r   rR   g      ?r"   rs   r   r?   g?)r'   varrI   rT   rV   r%   r&   ru   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 )	NrR   r    rB   r
   r   rs   r!   )r\   r\   r\   )r'   skewrI   r%   r&   rT   rV   ru   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 )	NrR   r    rB   r
   r   rs   r"   g333333)r'   kurtrI   r%   r&   rT   rV   ru   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 )
Nrn   r    rB   )r?   r    r    r    r    r   r/   r$   )r?   r    r!   r    r!   r!   )r'   countrI   rT   rV   r%   r&   ru   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   ro   r   r   rn   r   )r
   r"   rA   r"   r
   r$   )      @r"   rA   rA   r"   rs   )r   r"   rA   rA   rA   )r   r   r   r'   minrI   rT   rV   r*   r   rX   rW   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 )
Nrn   r    rB   ro   r   r$   )r\   r    r    rA   rA   rs   )r\   r   r   r    r    )r'   r   rI   rT   rV   ru   r   r   r   test_ragged_min     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   sKJ d S )Ni'  r   r	   r   r   r#   r!   r    re   r$   g{Gz?   200s)	r   r%   randomrandnr   r'   r   allbool)r*   NdfprW   rX   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 )Nrn   r    rB   ro   r   r$   rs   )r'   maxrI   rT   rV   ru   r   r   r   test_ragged_max  r   zTestRollingTS.test_ragged_maxzfreq, op, result_datamsr   r\   rt   r{   rr   gqq?r   g       @r   hra   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1rt   )startr   r   r   )datar   r    r!   10r/   )	r   r   r%   r&   ilocgetattrr'   rT   rU   )r*   r   opresult_datar   r   rX   rW   r   r   r   test_freqs_ops/  s   
zTestRollingTS.test_freqs_opsfr(   r   z ignore:min_periods:FutureWarning)marksr~   r   r   r   r   c                 C   sh   |d }|j dd}|j dd}t|| }t|| }t|| |d}|d}t|| d S )Nr!   r    r/   rn   r   )r'   r   rT   rV   r   )r*   r   r   r   errrX   rW   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:005Hr/   c                    s"   |  dd} t| jddd  S )Nr   r   r
   r    re   )between_timer   r'   )xr   r   r   
agg_by_day  s   z+TestRollingTS.test_all2.<locals>.agg_by_dayr   T)levelrS   )r   r%   aranger   r   r'   r   groupbyr   dayapplyr5   rT   rV   )r*   arithmetic_win_operatorsr   dftr   rX   r   rW   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   1hr   r#   2hr   r    r!   re   3hr?   rA   )
r   r   r%   r   rJ   r'   covr&   rT   rU   )r*   idxssrX   rW   	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)rA   r"   r"   r
   rq   r#   rs   )rz   rz         @r         @)r   r   r'   r   rT   rV   )r*   r   r   rX   rW   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#   rs   )r   r'   r   rT   rV   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   rq   20190101rA   rF   r!   dateseq)namesr#   10drL   )r\   r?   rz   r   g      $@g      .@)r   r   r   from_productr   r'   r   get_level_valuesr(   rT   rV   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offsets
MonthBeginr:   Dayr=   r%   arrayrD   rK   rN   rQ   rY   r`   rd   rf   rm   rv   r|   r   r   r   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   s   t dtg}|dkrdnd|i}ttdfi |}tjt|  dd |jd|d		  W d    d S 1 s:w   Y  d S )
N2020r    rZ   r   r!   z values must not have NaTr,   ra   )axis)
r   r   r   r%   eyer2   r3   r4   r'   r{   )r6   r   r   kwargsr   r   r   r   test_nat_axis_error  s   "r   )numpyr%   r2   pandasr   r   r   r   r   r   r   pandas._testing_testingrT   pandas.tseries.offsetstseriesr   fixturer   r   r   r   r   r   r   r   r   r   <module>   s"    $	

     #