o
    _~#g                     @   sJ  d dl m Z mZ d dlZd dlZd dlmZmZmZ d dl	m
Z
mZ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 d dlmZ d dlmZ dd	 Zd
d Zej ddde!dggdd Z"ej deddedddeedddeddgdd Z#ej dddgd d! Z$ej deddeddgd"d# Z%ej deddedddgd$d% Z&d&d' Z'ej d(d)g d*g d+g d,g d-g d.gfd/g d0g d*g d1g d2g d.gfd3g d*g d1g d2g d.g d4gfd5g d0g d6g d7g d8g d4gfgd9d: Z(ej d;d<d3g d=fd<d)g d=fd<d/g d=fd<d5g d=fd>d3g d?fd>d)g d=fd>d/g d@fd>d5g dAfgdBdC Z)ej d;dDd3g dEfdDd/g dFfdDd)g dGfdDd5g dHfgdIdJ Z*ej dKd/ej+ej+ddddLdMdMdNdOg
fd5ej+ej+ddddPdddQdRg
fd3g dSfd)g dTfgdUdV Z,ej dKd/ej+ej+ddddLdWdWdNdOg
fd5ej+ej+ddddLdWdWdQdRg
fd3g dXfd)g dYfgdZd[ Z-d\d] Z.d^d_ Z/ej d`d5d/gdadb Z0ej dcdddegdfdg Z1ej dcdddegdhdi Z2ej djdkdlgej dmddd3g dnfddd)g dofddd5ej+d d ddddpddqdrg
fddd/ej+d d d ddddpddqg
fded3g dsfded)g dsfded5ej+d ddddpddqdrdRg
fded/ej+d ddddpddqdrdRg
fgdtdu Z3dvdw Z4ej dmddd3ej+d d ddddpdej+ej+g
fddd)ej+d d d ddddpdej+g
fddd5ej+ej+d ddddpdej+ej+g
fddd/ej+ej+d d ddddpdej+g
fded3ej+ddddpddqdqej+ej+g
fded)ej+ddddpddqdqdqej+g
fded5ej+ej+ddddpddqej+ej+g
fded/ej+ej+ddddpddqdqej+g
fgdxdy Z5ej dKd3g dzfd)g d{fd5ej+d d|d}d~dddddg
fd/ej+d d|ddddpddqdrg
fgdd Z6ej dddgdd Z7dd Z8dd Z9dd Z:dd Z;dd Z<dd Z=dd Z>dd Z?ej dddgdd Z@dd ZAdd ZBdd ZCej de
g dg dddgdpgdd gfddgdpdgdd dgfg dg ddg dfgddfe
g dg dddgdpgdd gfddgdpdgdd dgfddgddqgdddgfgddfe
g dg dddgdpgdd gfddgdpdgdd dgfddgddqgdddgfgddfe
g dg dddgdpgdd gfdgdgddgfdgdqgddgfgddfe
g dg dddgdpgdd gfdgdgddgfdgdqgddgfgdd fe
dgdpgdg ddfe
dgdpgdg ddfe
 i g fgddfe
dej+dgej+ddqgddgej+gdd gfdej+gej+dgdd dgfdej+dgej+ddqgdg dfgddfg	dd ZDej ddgdpgdd gfddgdpdgdd dgfddgddqgdddgfgdDfdgdpgdd gfddgdpdgdd dgfg dg ddg dfgdfdgdpgdd gfdgdgddgfdgdqgddgfgdfgdd ZEdd ZFej deg ddgd gfddgd dgfg dg dfgddfeg ddgd gfddgd dgfg dg dfgddfeg ddgd gfddgd dgfddgddgfgddfeg ddgd gfddgd dgfddgddgfgddfeg ddgd gfdgdgfdgdgfgdd feg ddgd gfdgdgfdgdgfgddfeddgdgd gfddgd dgfgdd feg ddg ddfgdd ZGej dd gdgdgdgdpggeddddeddddeddddeddddeddddgdfd gd dgddgddgddpggeddddeddddeddddeddddeddddgdDfd gd dgg dg dg dgeddddeddddeddddeddddeddddgdfgdd ZHej ddd iejIg dŢddgdƍfddiejIg dɢddgdƍfgdd˄ ZJej dddgddτ ZKddф ZLddӄ ZMddՄ ZNddׄ ZOej dg d٢ddۄ ZPdd݄ ZQej ddededgdd ZRdd ZSej deddddddfedddddfgej dddej+d d ddddpddqg	fdeej+d ddddpddqdrg	fdej+d ddddrdPddQg	fgdd ZTdd ZUejjVe pRe ddej dddg dfddg dfddg dfddg dfgdd ZWd d ZXej dg ddd ZYej d;d>d3g dfd>d/g dfd>d)g dfd>d5g d	fd<d3g dfd<d/g dfd<d)g dfd<d5g dfgd
d ZZej ddg dfdg dfgdd Z[ej dde\dde\ddddddgfde\dde\dddddd gfde\dd!e\dd"d!d#d$d%gfd&e\dd'e\dd(d)d*d+d,gfd-e\dd.e\dd/d0d1d2d3gfgd4d5 Z]ej dg d6dfed7ddd8dDfgd9d: Z^d;d< Z_ej dd&d-gd=d> Z`ej d?d&g d@fd-g dAfgdBdC ZadDdE Zbej dddFgdGdH ZcdIdJ ZddKdL Zeej dMdg dNfdg dOfgdPdQ ZfdRdS ZgdTdU ZhdVdW ZidXdY Zjej dg dZej dg d[ej d\ddgej d]ddgej d^g d_d`da Zkdbdc Zlej ddg deej dfg dgej dhg dig djdej+dkej+dlgej+ej+ej+ej+gej+dmej+dndld|gd|gej+dodpggdqdr Zmdsdt Zndudv Zodwdx Zpdydz Zqd{d| Zrd}d~ Zsej g dddLdLejtddddgddej+ddd dd ddggddLdLej+dLdddgddej+ddd d dddggej+ddqdrdddgddej+gd g d gddrdrdrej+ejtdpdddg
ddej+gd dd g ej+gdp  dd g gddrdrdrej+ejtdrdddg
ddej+gd dd g ej+gdp  dd g gddrgdp ddej+gd dgdq  gddrdej+drddrgddej+ddgdgd  dg ggdd Zudd Zvdd Zwdd Zxej dddgej dddgdd Zyej deze{gdd Z|ej dddgej dddgej deze{gdd Z}ej dg dej dg ddd Z~dS (      )datetime	timedeltaN)IS64is_platform_armis_platform_power)
	DataFrameDatetimeIndex
MultiIndexSeries	Timedelta	Timestamp
date_rangeperiod_rangeto_datetimeto_timedelta)BaseIndexer)VariableOffsetWindowIndexer)BusinessDayc                  C   s@   t ddddtjdgi} |  | d  | jddd  d S )NBr            min_periods)r   npnanrollingsumdf r    /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/pandas/tests/window/test_rolling.pytest_doc_string"   s   r"   c                 C   s   | t dj}|d |dd |ddd |dddd |ddd	d d
}tjt|d |d W d    d S 1 s=w   Y  d S )N   r   r   windowr   r%   r   Tr%   r   centerFz&window must be an integer 0 or greatermatch)ranger   pytestraises
ValueError)frame_or_seriescmsgr    r    r!   test_constructor)   s   

"r3   w       @foor   c                 C   s   | t dj}dddg}tjt|d ||d W d    n1 s%w   Y  d}tjt|d |d|d	 W d    n1 sDw   Y  d
}tjt|d |dd|d W d    d S 1 sew   Y  d S )Nr#   |zwindow must be an integerz=passed window foo is not compatible with a datetimelike indexr)   r$   zmin_periods must be an integerr   r&   zcenter must be a booleanr   r'   )r,   r   joinr-   r.   r/   )r0   r4   r1   r2   r    r    r!   test_invalid_constructor=   s"   "r9   r%      days3Dz
2015-12-25r#   periodsr   indexoffsetc                 C   sb   t tdtddddd}tjtdd |j| dd	  W d    d S 1 s*w   Y  d S )
N
   
2015-12-24Dr?   freqrA   z(^step (not implemented|is not supported)r)   r:   step)	r   r   aranger   r-   r.   NotImplementedErrorr   r   )r%   r   r    r    r!    test_freq_window_not_implementedU   s   "rM   aggcovcorrc                 C   sV   t tdjddd}tjtdd t||   W d    d S 1 s$w   Y  d S )Nr   r   rI   zstep not implementedr)   )r   r,   r   r-   r.   rL   getattr)rN   rollr    r    r!   &test_step_not_implemented_for_cov_corrl   s   "rS   c                 C   s   d}t dt|itd|ddd}tddgtd	d
d}|j| d }t d|itd|ddd}t|| |d }t|| d S )NrC   valuerD   rE   rF   rH                 ?      @      ;@r:   r$   r=   )	r   r   rK   r   appendr   r   tmassert_frame_equal)r%   nr   expected_dataresultexpectedr    r    r!   &test_constructor_with_timedelta_windowt   s   r`   c              
   C   s   d}t dt|itd|ddd}t dttjdgtdd	d
itd|ddd}|j| dd }|j| ddjt|d}t	
|| t	
|| d S )NrC   rT   z
2017-08-08rE   rF   rH   rV   rW   rX   r:   r   r&   )raw)r   r   rK   r   rY   r   r   r   applyrZ   r[   )r%   ra   r\   r   r_   result_roll_sumresult_roll_genericr    r    r!   0test_constructor_timedelta_window_and_minperiods   s   re   c                 C   sx   |}t dg di}t dg ditdddd}t|jd| dd	| }t|jd
| dd	| jdd}t|| d S )NAr   r   r   r:   r   2020r#   r>   rH   r   r   closedr   2DTdrop)r   r   rQ   r   reset_indexrZ   r[   )rj   arithmetic_win_operators	func_namedf_fixeddf_timer^   r_   r    r    r!   test_closed_fixed   s   rs   zclosed, window_selectionsboth)TTFFF)TTTFF)FTTTF)FFTTT)FFFTTleft)TFFFF)FTTFF)FFTTFright)FFFFTneither)FTFFF)FFTFF)FFFTFc                    s   |t dg ditdddd t d fdd|D itdddd}d	kr-d
di}ni }t jd| ddddi |}tj||dd d S )Nrf   )rU   rV   r5   rW         @rh   r#   r>   rH   c                    s"   g | ]}t  d  j|  qS )rf   )rQ   iloc).0srr   rp   r    r!   
<listcomp>   s   " z9test_datetimelike_centered_selections.<locals>.<listcomp>semddofr   rk   r   T)rj   r   r(   Fcheck_dtyper    )r   r   rQ   r   rZ   r[   )rj   window_selectionsro   r_   kwargsr^   r    r|   r!   %test_datetimelike_centered_selections   s$   1

r   zwindow,closed,expected3s)rW   rW   rW   2s)rW   r5   r5   )rV   rW   rW   rV   r5   r5   c                 C   sV   t dt dt dg}|g d|d}|j| |dd }|||d}t|| d S )Nz20130101 09:00:01z20130101 09:00:02)r   r   r   rH   Trj   r(   )r   r   r   rZ   assert_equalr%   rj   r_   r0   rA   r   r^   r    r    r!   ,test_datetimelike_centered_offset_covers_all   s   r   rk   )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   r   r   r   r   r   r   c                 C   sR   t g d}|dgd |td}|||td}|j| d|d }t|| d S )N)
2020-01-01r   
2020-01-02r   
2020-01-03r   
2020-01-04r   r      rA   dtypeT)r(   rj   )r   floatr   r   rZ   r   r   r    r    r!   +test_datetimelike_nonunique_index_centering  s   r   zclosed,expectedrC            	      r   )
r   r   r:   r   rC   r      r   r      )
r   r   r:   r   rC                  c                 C   sN   t g d}|td|td}|||td}|jd| d }t|| d S )N

2011-01-01r   
2011-01-02r   r   z
2011-01-03
2011-01-04r   z
2011-01-05z
2011-01-06rC   r   rk   rj   )r   r,   r   r   r   rZ   r   )rj   r_   r0   rA   r   r^   r    r    r!   test_variable_window_nonunique3  s   r   r   )
r   r   r:   r   rC   r   r      r   r   )
r   r   r:   r   rC   r   r   r   r   r   c                 C   sd   t g d}|td|td}|||td}td}t||d}|j|| dd }t|| d S )Nr   rC   r   r   r@   r   ri   )	r   r,   r   r   r   r   r   rZ   r   )rj   r_   r0   rA   r   rB   indexerr^   r    r    r!   %test_variable_offset_window_nonuniqueU  s   r   c                  C   sP   t tdtddddd} | jdddd	 }t g d
| jd}t|| d S )Nr:   r   rE   startrG   r?   rH   rk   r   Tr'   )      ?      ?r   )r
   r,   r   r   meanrA   rZ   assert_series_equalr{   r^   r_   r    r    r!   !test_even_number_window_alignmenty  s   r   c                 C   s   g d}t d|itddt|dd}| rg d}ntjdd	d
d	dd	dg}t |dgtddt|ddd d | }|jt|dd| |d}| }t|| d S )N)r   r   r   r   r   r   r   r   
binary_colr   minr   rH   )UUUUUU?r   皙?r   @m?r   g._x%I?r   r   r   r   r   r   )columnsrA   ru   r   )r%   rj   r   r(   rJ   )	r   r   lenr   r   r   r   rZ   r[   )r(   rJ   datar   r]   r_   r   r^   r    r    r!   test_closed_fixed_binary_col  s(   
r   rj   c                 C   s`   |}t tdtddddd}|jd| d}t|| }t tjgd |jd}t	|| d S )	Nr#   2000rk   rF   r   rA   1Dr   rH   )
r
   r   rK   r   r   rQ   r   rA   rZ   r   )rj   ro   rp   serrR   r^   r_   r    r    r!   test_closed_empty  s   r   funcr   maxc                 C   sJ   t dgtdddd}t|jddd|  }t|t tjg|jd	 d S )
Nr   r   r   r>   r   10Dru   r   rH   )	r
   r   rQ   r   rZ   r   r   r   rA   )r   r   r^   r    r    r!   test_closed_one_entry  s   r   c                 C   s   t g dg ddtdddd}t|jdd	d
d jddd|  }tjg d|jgdd}tt	j
dt	j
g|dd}t|| d S )N)r   r   r   )r:   r   r   rf   r   r   r:   r>   r   rf   F)sortr   r   ru   r   )rf   N)arraysnames)r   rA   name)r   r   rQ   groupbyr   r	   from_arraysrA   r
   r   r   rZ   r   )r   r   r^   exp_idxr_   r    r    r!   test_closed_one_entry_groupby  s   
r   input_dtypeintr   zfunc,closed,expected)
rU   r   r   r   r   r:   r   r#   r      )
rU   r   r   r   r   r   r:   r   r#   r   r   r   r   )
rU   r   r   r:   r   r#   r   r   r   r   c                 C   sT   t td| tdddd}t|jd|d| }t ||jd}t	|| d S )NrC   r   r>   r   r=   r   rH   )
r
   r   rK   astyper   rQ   r   rA   rZ   r   )r   r   rj   r_   r   r^   r    r    r!   test_closed_min_max_datetime  s   
r   c               	   C   sr   t tdtdddd} | j| jddg d} | jdd	d
 }t tjdddddddg| jd}t	
|| d S )NrC   r   r>   r   r   r#   rH   r=   ru   r   r   r   r:   r   r   )r
   r   rK   r   rm   rA   r   r   r   rZ   r   )r   r^   r_   r    r    r!   test_closed_uneven  s
    r   c                 C   sn   t tdtdddd}|d}tj||jdd  < t|jdd|d	|  }t ||jd
}t	
|| d S )NrC   r   r>   r   r   r=   r   )r   rj   rH   )r
   r   rK   r   r   r   rA   rQ   r   rZ   r   )r   rj   r_   r   r^   r    r    r!   test_closed_min_max_minp  s   
r   )
r   r   r   r   r:   r   r#   r   r   r   )
r   r   r   r         @      @      @      @      @      @r   r   r   r   r   r   r   r   c                 C   sd   t tdtdddd}|jd| d}t ||jd}| }t|| |	d}t|| d S )	NrC   r   r>   r   r=   r   rH   r   )
r
   r   rK   r   r   rA   medianrZ   r   quantile)rj   r_   r   rR   r^   r    r    r!   test_closed_median_quantile  s   
r   roller1sc                 C   sX   t  }t  |  }t|| t tg d}t tg d|  }t|| d S )NrH   )r   r   r   rZ   r[   r   )r   r_   r^   r    r    r!   tests_empty_df_rolling  s   r   c                  C   sV   t tjtjtjg} t tdd}| }t||  |d}t||  d S )Nr:   r   皙?)	r
   r   r   rK   r   r   rZ   r   r   )r_   rR   r^   r    r    r!   !test_empty_window_median_quantile&  s   
r   c                  C   sb   t tjg} | jddd }t dg}t|| | jddd }t tjg}t|| d S )Nr   r   r   rU   )r
   r   r   r   r   rZ   r   xr^   r_   r    r    r!   test_missing_minp_zero2  s   
r   c                  C   sP   t tjgd tg dd} | jtddd }t d| jd}t	|| d S )Nr   )z
2017-01-01z
2017-01-04z
2017-01-06z
2017-01-07rH   2dr   r   rU   )
r
   r   r   r   r   r   r   rA   rZ   r   r   r    r    r!   test_missing_minp_zero_variable@  s   

r   c                  C   sf   t jddgg dgddgd} ttd| d}|d	 }t|j	|j	 |j
jg d
ks1J d S )Nrf   r   )CrE   E12r   )rC   r   r   r:   )Nr   r   )r	   from_productr   r   onesr   rO   rZ   assert_index_equalr   rA   r   )colsr   r^   r    r    r!   test_multi_index_namesK  s
   r   c                 C   s   t td}|| }|dkrd}t dd tdD }nd}t tjgd d	gd
  gd }tjt|d |j	d| d
 }W d    n1 sKw   Y  t|| d S )N)rC   r   r   'The 'axis' keyword in DataFrame.rollingc                 S   s$   i | ]}|t jgd  dgd  qS )r   rW   r   )r   r   rz   ir    r    r!   
<dictcomp>\  s   $ z)test_rolling_axis_sum.<locals>.<dictcomp>r   5Support for axis=1 in DataFrame.rolling is deprecatedr   rW   r   rC   r)   r:   axis)r   r   r   _get_axis_numberr,   r   rZ   assert_produces_warningFutureWarningr   r   r[   
axis_framer   r   r2   r_   r^   r    r    r!   test_rolling_axis_sumU  s   
 r   c                 C   s   t tdtdd}|| }|dv r"d}t g dg dd}nd}t g dg dd}tjt|d	 |jd
| dd }W d    n1 sKw   Y  t|| d S )Nr:   )r   yr   rA   r   r   r   )rV   rV   rV   )r5   r5   r5   r)   r   r   )r   r   )	r   r,   r   rZ   r   r   r   countr[   r   r    r    r!   test_rolling_axis_countg  s   
r  c                  C   s\   t ddt jddg} | jdd t| d }tt jdt jt jdg}t|| d S )Nr   r:   r#   F)writer   r   )	r   arrayr   setflagsr
   r   r   rZ   r   )arrr^   r_   r    r    r!   test_readonly_arrayy  s
   r	  c              	   C   s  |}t dd tddd|dD }| dv r:d}tjt|d	 |jjd
| d j}W d    n1 s4w   Y  n"d}tjt|d	 |jd
| d }W d    n1 sWw   Y  t i dd tddd|dD dd tddd|dD }t|| d S )Nc                 S      i | ]}|d gd qS )r   r   r    r   r    r    r!   r     s    z)test_rolling_datetime.<locals>.<dictcomp>z	2019-8-01z
2019-08-03rE   )rG   tzr  r   r)   rk   r   z'Support for axis=1 in DataFrame.rollingc                 S   r
  )rV   r   r    r   r    r    r!   r         
r   )r?   rG   r  c                 S   r
  )r5   r   r    r   r    r    r!   r     r  z	2019-8-02z	2019-8-03)	r   r   rZ   r   r   Tr   r   r[   )r   tz_naive_fixturer  r   r2   r^   r_   r    r    r!   test_rolling_datetime  s4   r  r(   TFc           	      C   s   t  }t||td dd}tt|}t||d}|jddd |j	dd	d
| dd 
d}|d}|d }tjt|tjd}| sOtj|d d	< t||dd}t|| d S )Nim  rE   )rG   )DateColmetricr  T)inplace21Dr   ru   )r%   r   rj   r(   r  r   r   )rA   r   )r   nowr   r   r   r   r   r   	set_indexr   rN   rename
_with_freqfloat64r   r
   rZ   r   )	r(   
date_todayr<   r   r   r^   rA   r]   r_   r    r    r!   test_rolling_window_as_string  s"   

r  c                  C   sJ   t g ddgd} | d jdddd }tg ddd	}t|| d S )
N)r   r   r   r   r   ar   r:   Tr   )r(   r   )rV   r5   r5   r5   rV   r   )r   r   r   r
   rZ   r   r   r^   r_   r    r    r!   test_min_periods1  s   r  c                 C   s@   | t djddd }| tjtjdddg}t|| d S )Nr#   r:   r   rW   )r,   r   r  r   r   rZ   r   )r0   r^   r_   r    r    r!   #test_rolling_count_with_min_periods  s   r   c                 C   sJ   dddt jdddg}g d}| |jddd	 }| |}t|| d S )
Nr   r   r:   r   r#   r   )rV   r5   rW   r5   r5   r5   rW   r   r   )r   r   r   r  rZ   r   )r0   valuesexpected_countsr^   r_   r    r    r!   7test_rolling_count_default_min_periods_with_null_values  s
   r#  zdf,expected,window,min_periodsr   r   r:   )r   r#   r   r   r   r   r   rV   c                 C   <   dd |D }t || j||dD ]
\}}t|| qd S )Nc                 S      g | ]
\}}t ||d qS rH   )r   rz   r!  rA   r    r    r!   r}         z/test_iter_rolling_dataframe.<locals>.<listcomp>r   )zipr   rZ   r[   )r   r_   r%   r   actualr    r    r!   test_iter_rolling_dataframe  s   Fr-  zexpected,windowr   c                    sb   t g dg dtddddd  fdd	| D } t|  j|d
dD ]
\} }t||  q$d S )Nr   r   r:   r   r#   )r   r#   r   r   r   z
2016-01-01r#   rE   r   r?   rG   rf   r   r   c                    s&   g | ]\}}t | j|d f dqS )r   rH   )r   locr)  r   r    r!   r}   D  s    z2test_iter_rolling_on_dataframe.<locals>.<listcomp>r   )on)r   r   r+  r   rZ   r[   )r_   r%   r,  r    r   r!   test_iter_rolling_on_dataframe  s   
r3  c                     sn   t g dg dd t dd}  fdddgddgd	gfD }t| |D ]
\}}t|| q*d S )
N)r   r  r   r%  r  br  r   c                    s   g | ]
} j |d gf qS )r   )ry   )rz   idxr   r    r!   r}   O  r*  z<test_iter_rolling_on_dataframe_unordered.<locals>.<listcomp>r   r   )r   listr   r   r+  rZ   r[   )results	expectedsr^   r_   r    r   r!   (test_iter_rolling_on_dataframe_unorderedK  s    r:  z ser,expected,window, min_periodsint64r  c                 C   r&  )Nc                 S   r'  r(  r
   r)  r    r    r!   r}   w  r*  z,test_iter_rolling_series.<locals>.<listcomp>r   )r+  r   rZ   r   )r   r_   r%   r   r,  r    r    r!   test_iter_rolling_seriesT  s   #r=  zexpected,expected_index,windowr   rE   rF   r   r   r   z
2020-01-05)r   r:   r   c                 C   sX   t tdtddddd}dd t| |D } t| ||D ]
\} }t||  qd S )Nr#   r   rE   r/  rH   c                 S   r'  r(  r<  )rz   r!  r6  r    r    r!   r}     s    z.test_iter_rolling_datetime.<locals>.<listcomp>)r
   r,   r   r+  r   rZ   r   )r_   expected_indexr%   r   r,  r    r    r!   test_iter_rolling_datetime}  s   (r?  zgrouping,_indexlevel)r   r   rA  r   r   rB  rB  r   byX)rA  )r   r   )r   r   )r:   r   )r   r   c                 C   s|   dd }t dtdig dd}t dg di|d}d| v r%|jdd	d
}|jdi | dj||dd}t|| d S )Nc                  W   s(   t | dk r
td| \}}| | S )Nr   z The function needs two arguments)r   r/   r   )argsr  scaler    r    r!   
scaled_sum  s   z4test_rolling_positional_argument.<locals>.scaled_sumrD  r#   )r   r   r   r   r   r   )rU   r   rV   r   r5   rC  ignore)r   errorsr   )r   )ra   rE  r    )r   r,   rm   r   r   rb   rZ   r[   )grouping_indexra   rG  r   r_   r^   r    r    r!    test_rolling_positional_argument  s   "rL  addrU   c              	   C   s   t tdtdtdg|}tdd|  ddgi|d}|d jd	d
dd }tddd|d}tdt	j
t	j
t	j
ddddgi|d}t|| d S )Nz19700101 09:00:00z19700101 09:00:03z19700101 09:00:06rf   gVUUUUU%C       rH   r   r   ru   r:   ri   r   r{   )r?   rG   unitgUUUUUU%CgqqCgqqCrU   )r   r   as_unitr   resampleffillr   r   r   r   r   rZ   r[   )rM  rO  dtir   r^   datesr_   r    r    r!   *test_rolling_numerical_accuracy_kahan_mean  s:   rU  c                  C   sP   t g ddgd} | d d }ttjtjddddgdd}t|| d S )	N)grh|@'1ZrU   rU   rU   rU   r   r   r:   gsh|??rV  rU   r  )r   r   r   r
   r   r   rZ   r   r  r    r    r!   )test_rolling_numerical_accuracy_kahan_sum  s   rW  c                  C   sd   t ddddtdg} tjdt| }td|i| d}|d	 }t
||dg  d S )	Nr   r   60sr   endrG   r   r   r   rH   )r   rY   r   r   randomdefault_rngr   r   r   r   rZ   r[   )rA   r   r   r^   r    r    r!   $test_rolling_numerical_accuracy_jump  s   r]  c                  C   s4   t g dtddd} | d }t||  d S )N)g(@S ?ga2U0*3?rN  rN  z
1999-02-03z
1999-02-06r   r   )r
   r   r   r   rZ   r   )r{   r^   r    r    r!   ,test_rolling_numerical_accuracy_small_values
  s   r^  c                  C   sr   t dddd} ttd| tjd}d|jd< |d }ttjtjtjtjd	d	d	d
ddg
| d}t	
|| d S )Nz
2015-01-01rC   rE   rF   )r   rA   r   gТr   r#   gk/      @      @      @rH   )r   r
   r,   r   r  ry   r   r   r   rZ   r   )rT  dsr^   r_   r    r    r!   (test_rolling_numerical_too_large_numbers  s&   
rc  )r   rT   ))r   r5   )r   rV   )r   rV   )r   rV   )r   rV   c                 C   s   t dddgg dd}d|d< d}tjt|d |jdddd	}W d    n1 s+w   Y  t||  }t ddg||g||gdddgd
}t|| d S )Nr   r   r  r5  r1   )rA   r   rV   r1   r   r)   r%   r   r   rH   )r   rZ   r   r   r   rQ   r[   )r   rT   r   r2   rR   r^   r_   r    r    r!    test_rolling_mixed_dtypes_axis_1,  s   rf  c               
   C   s   t ddddtjtjtjgdddtjtjtjtjgdddtjdtjdgg} d}tjt|d | jdddd	 }W d    n1 sCw   Y  t g d
g dg dg}t|| d S )Nr   r   r   r   r   r)   r   r   re  )rU   rV   rW   ra  ra  ra  ra  )rU   rV   rW   rW   rW   rW   rW   )rU   r5   rx   rx   r`  r`  ra  )	r   r   r   rZ   r   r   r   r   r[   r   r2   r^   r_   r    r    r!   test_rolling_axis_one_with_nan?  s"   rh  rT   testz
2019-12-31z1 days 06:05:01.00003c                 C   s~   t dddgi}| |d< d}tjt|d |jdddd }W d    n1 s*w   Y  t ddd	gi}t|| d S )
Nr  r   r   r5  r   r)   re  rV   r5   )r   rZ   r   r   r   r   r[   )rT   r   r2   r^   r_   r    r    r!   &test_rolling_axis_1_non_numeric_dtypesU  s   rj  c                  C   s   t dd gddgddgd} t dtjgddgd	d
gd}d}tjt|d | jdddd }W d    n1 s;w   Y  t|| | j	jddd j	}t|| d S )Nr   r   r#   r   r   r0  rV   r_  g      &@      *@r   r)   r   )r   r%   r   )r   r%   )
r   r   r   rZ   r   r   r   r   r[   r  )r   r_   r2   r^   r    r    r!   test_rolling_on_df_transposedd  s   rl  )rA   r%   z2020-01-01 08:00z2020-01-01 08:08rY  2minz2020-01-01 12:0030min1h)r   r!  r   r   c                 C   sB   t g d| d}t|j|dd| }t || d}t|| d S )N)	r   r   r   r:   r   r#   r   r   r   rH   ru   r   )r
   rQ   r   rZ   r   )rA   r%   r   r!  rb  r^   r_   r    r    r!   test_rolling_period_indexq  s   rp  c                 C   s\   | g d}|j ddd }t|trt|d j}ttjgdgd  }t	|| d S )Nr%  r   r   r   r   g;f?)
r   r~   
isinstancer   r
   r!  r   r   rZ   r   )r0   objr^   r_   r    r    r!   test_rolling_sem  s   
rs  zGH 38921)reason)r   third_valuer!  var)|Fr   r   r   r   r   std) >gfoCr   Pp?rz  绹۞?r   )rw  r   r   r   r   r   )ry  rz  r   rz  r{  r   c                 C   s\   t dd|ddddg}t|d|  }t tjg| }t|| t|dk|dk d S )Nl   ;r   r   r:   r   r
   rQ   r   r   r   rZ   r   )r   ru  r!  rb  r^   r_   r    r    r!   !test_rolling_var_numerical_issues  s
   r}  c                 C   s   t tdtdtdtdtdg| }t|ddgg}ttjtjdd	d
ddd
dd
g
tjtjd	dddd
dd
dg
d|d}tg dg dd|d}|jdd	 }t
|| d S )Nz20130101 09:00:00z20130102 09:00:02z20130103 09:00:03z20130105 09:00:05z20130106 09:00:06r   rf   g?g      rV   g6<AԿg     ?g?)r   rf   rH   )r   r   r   r   r:   )r   r   r   r   r:   3dr$   )r   r   rP  r	   r   r   r   r   r   rP   rZ   r[   )rO  rS  miexpr   resr    r    r!   ,test_timeoffset_as_window_parameter_for_corr  sV   	r  method)rv  r   r   skewkurtr   r   c                 C   s   t dtddd i}t d|d ddd i|jddd d}t|jdd	|  }t|jdd	|  }t|jddd dd
 |jdd   dk sQJ dS )zf
    Make sure that decreasing indices give the same results as increasing indices.

    GH 36933
    r!  irC   r   Nr+   rH   r#   r$   r   g-q=)	r   r   rK   rA   rQ   r   absr!  r   )r  r   
df_reverse
increasing
decreasingr    r    r!   test_rolling_decreasing_indices  s
   *<r  )rV   rW   r_  rW   )rU   rV   rW   r_  )rV   rW   r`  r_  )rU   rV   r5   rW   c                 C   s   t dddd}|td|d}|td|ddd d}|||d}|||ddd d}|j| |dd	 }	|j| |dd	 }
t|	| t|
| dS )
zV
    Ensure that a symmetrical inverted index return same result as non-inverted.
    rh   r   r   rF   rH   Nr+   Tr   )r   r,   r   r   rZ   r   )r%   rj   r_   r0   rA   df_incdf_decexpected_incexpected_dec
result_inc
result_decr    r    r!   (test_rolling_decreasing_indices_centered  s   r  zwindow,expected1ns)rV   rV   rV   rV   3ns)r5   rW   rW   r5   c                 C   sR   t dddd}|g d|td}|||td}|j| |dd }t|| d S )	Nrh   r   r  rF   )r   r   r   r   r   Tr   )r   r   r   r   rZ   r   r   r    r    r!   )test_rolling_center_nanosecond_resolution  s
   
r  zmethod,expectedr   g     E@g
a@g     E@gCݽW@g     f@g     s@r   g     5@r`  g`UU"@rk  g     1@g      >@g     U@g     K@g     V@g     a@r  g/e?g8j{?gLM?g4`i?g
+TT?g?r  g %bgOq&g zCen@gk=Cпg~~׿gf`8gݿc                 C   sl   g d}t dtt|d i}G dd dt}|d|d}t|||  }t d|i}t|| dS )	z
    Make sure the (rare) branch of non-monotonic indices is covered by a test.

    output from 1.1.3 is assumed to be the expected output. Output of sum/mean has
    manually been verified.

    GH 36933.
    )TFTFTTTTr!  r   c                   @   s   e Zd Zdd ZdS )z1test_rolling_non_monotonic.<locals>.CustomIndexerc           	      S   sl   t j|t jd}t j|t jd}t|D ]}| j| r&d||< |d ||< q|||< || j ||< q||fS )Nr  r   r   )r   emptyr;  r,   use_expandingwindow_size)	self
num_valuesr   r(   rj   rJ   r   rZ  r   r    r    r!   get_window_boundsk  s   
zCtest_rolling_non_monotonic.<locals>.CustomIndexer.get_window_boundsN)__name__
__module____qualname__r  r    r    r    r!   CustomIndexerj  s    r  r   )r  r  N)	r   r   rK   r   r   rQ   r   rZ   r[   )r  r_   r  r   r  r   r^   r    r    r!   test_rolling_non_monotonic)  s   >r  rg   z
2001-01-01)rG   r?   c                 C   s`   t g d| d}| }d|jdd< |||}t tjtjdddg| d}t|| d S )Nr.  rH   rU   r   r   r   )	r
   copyry   r   rP   r   r   rZ   assert_almost_equal)rA   r%   r   r  r^   r_   r    r    r!   !test_rolling_corr_timedelta_index~  s   	r  c                  C   s   dt jddt jgg dd} t| }|jdddjddd	 }td
g ditddt jgg dgg dg dgdd gdd}t|| d S )Ng1g2rg   )groupr   r  F)dropnar   r   r   )rU   r5   rW   rV   rx   )r   r   r   r   r   )r   r   r:   r   r   r   rH   )	r   r   r   r   r   r   r	   rZ   r[   )r   r   r^   r_   r    r    r!   !test_groupby_rolling_nan_included  s   
r  c                 C   sf   t tjdd}| }t|d|  }t|| |d }t|d|  }t|| d S )Nr   rC   r:   iP  )	r
   r   r[  r\  r  rQ   r   rZ   r   )r  r   ser_copyr_   r^   r    r    r!   *test_rolling_skew_kurt_numerical_stability  s   r  )r  r!  )r5   g+X?rU   gJ_9?)rx   gBʠg333333g >@c                 C   sB   t g d}t|d|  }t tjgd | }t|| d S )N)i- r   r   r   r:   r   i  r   r:   r|  )r  r!  r{   r^   r_   r    r    r!   (test_rolling_skew_kurt_large_value_range  s   	r  c                   C   sJ   t jtdd ttdjddd W d    d S 1 sw   Y  d S )Nz!method must be 'table' or 'singler)   r   r6   )r  )r-   r.   r/   r
   r,   r   r    r    r    r!   test_invalid_method     "r  1dc                 C   s   t dddd}|tdd|d}|jddd	 }|tjdd
g|d}t|| |jd d d jddd	 }t dddd}|tjdd
g|d}t|| d S )Nr   r   r  rY  r   r   rH   ru   r   r   r+   z-1dr:   )	r   r,   r   r   r   r   rZ   r   ry   )r%   r0   r6  rr  r^   r_   r    r    r!   .test_rolling_descending_date_order_with_offset  s   r  c                  C   sX   t g d} | d }t tjtjddg}tj||ddd t|dk|dk d S )N)r   r#   r#   r#   r:   UUUUUU?r   V瞯<atolrtol)r
   r   rv  r   r   rZ   r   r   r    r    r!   ,test_rolling_var_floating_artifact_precision  s
   r  c                  C   s@   t g d} | d }t tjddg}tj||ddd d S )N)Q؎>g 4PSȡ>r  r   g[^>>r  r  )r
   r   rx  r   r   rZ   r   r   r    r    r!   test_rolling_std_small_values  s   r  zstart, exp_values)Q?X9v?r  gI+?gˡE?)MbP?r  g~jtX?<#	n?c                 C   s   t dddtjddtjtjtjtjtjtjddg}|ddddtjtjddg }t |tt| t||  d	}|j| d  jd
dd }t	
|| d S )Nr  r  Mb`?Mb?{Gzt?皙?r  g=
ףp=?rH   r#   r   r   )r   r   r   r7  r,   r   ry   r   r   rZ   r[   )r   
exp_valuesr   r!  r_   r^   r    r    r!   3test_rolling_mean_all_nan_window_floating_artifacts  sB   	
r  c                  C   sH   t dddtjtjtjg} | jddd }t g d}t|| d S )Nr  r  r  r:   r   r   )r  g{Gz?gQ?g9v?r  rU   )r   r   r   r   r   rZ   r[   r  r    r    r!   2test_rolling_sum_all_nan_window_floating_artifacts  s   r  c                  C   s6   t td} | d }t tjg}t|| d S )Nr   r   )r
   r,   r   r   r   r   rZ   r   r   r    r    r!   test_rolling_zero_window#  s   r  c                 C   s   t tdtddd| d}t tjgd tdddd| d}d}tjt|d	 |jdd
d }W d    n1 s<w   Y  tj	||dd d S )Nr#   rC   r   r   r  r   r   r   r)   r   r   Fr   )
r   r,   r   r   rZ   r   r   r   r   r[   )float_numpy_dtyper   r_   r2   r^   r    r    r!   test_rolling_float_dtype+  s   r  c                  C   s  t tdddtdddddd	d
dddddd
} d}tjt|d | j	dddd
 }W d    n1 s;w   Y  t tdddtdddtdddtdddtdddtdddtdddtdddtdddtdddd
dd}t|| d S )N(   r   rC   
abcdefghijr   float16float32r  int8int16int32uint8uint16uint32uint64)
r  r5  r1   defghr   jr   r)   r   r   re  r   r:   r#   r   r   r   r  )r   r   rK   reshaper7  r   rZ   r   r   r   r   r,   r[   rg  r    r    r!   test_rolling_numeric_dtypes8  s@   









r  )r   r:   rC   r   )r   r   averagepct	ascending	test_data)default
duplicatesnansc           	   	      s   d}|dkrt tjd|d}n-|dkr%t tjdd|d}n|dkr@t tjddd	d
tjtjtj g|d}||  fdd}|| j	 d}t
|| d S )Nr   r  r   )r   r  r:   r  rV         ?      ?c                    s   | j  djd S )Nr  r  r  r+   )rankry   )r   r  r  r  r    r!   <lambda>p  s    ztest_rank.<locals>.<lambda>r  )r
   r   r[  r\  choicer   infr   rb   r  rZ   r   )	r%   r  r  r  r  lengthr   r_   r^   r    r  r!   	test_rank]  s    
r  c                  C   s|   d} d}t d| dd}ttjd| | | df|d}|jg d	d
d}tj|g dd
d}t	|j
t| d S )NrC   r#   20100101r   rF   r   r+   rH   )r  r   r  r   r   )   2   K   )r   r   r   r[  r\  r  r   
percentilerZ   r  r!  r  )rowcolr6  r   df_quantilenp_percentiler    r    r!   #test_rolling_quantile_np_percentilew  s    r  r   )rU   r   g?r   r   interpolation)linearlowerhighernearestmidpointr   )rV   r5   rW   rx   r_  r`  ra  )g       @rV   rW   rx   r_  r5   r`  ra  r  r   r   g333333?gffffff?g333333?c                 C   s|   t |}|| |}|jdd| |jd }t|r%t|s#J d S ts6tj|g|gddds4J d S ||ks<J d S )Nr   r   r+   gHz>r   )r  r  )r
   r   	expandingry   r   isnanr   allclose)r   r  r   r{   q1q2r    r    r!   +test_rolling_quantile_interpolation_options  s   
r  c                  C   sf   t d} t| }d}tjt|d |jt| ddjddd W d    d S 1 s,w   Y  d S )	Nr#   z(Interpolation 'invalid' is not supportedr)   r   r   r   invalid)r  )	r   rK   r
   r-   r.   r/   r   r   r   )r   r{   r2   r    r    r!   test_invalid_quantile_value  s   
"r  c                  C   s   t g d} d}tjt|d | dd W d    n1 s"w   Y  d}tjt|d | dd W d    n1 sCw   Y  d}tjt|d | dd	 W d    d S 1 sew   Y  d S )
N)rU   r   r   g?rV   z#quantile value -0.1 not in \[0, 1\]r)   r:   gz#quantile value 10.0 not in \[0, 1\]g      $@zmust be real number, not strr6   )r
   r-   r.   r/   r   r   	TypeError)r   r2   r    r    r!   test_rolling_quantile_param  s   "r  c                  C   s   t g d} | jddd }t tjgd }t|| | jdddjdd}t dgd }t|| t tjtjdd	dgjdd
d }t|d
 sPJ d S )N)rV   r5   rW   rx   r_  r   r   r#   r   )r   rU   r:   r   r   )r
   r   rx  r   r   rZ   r   r  )valsr^   r_   r    r    r!   test_rolling_std_1obs  s   $r  c                  C   sd   t g d} | jdd }t|dd   sJ | jdd }t|dd   s0J d S )N)ge>R?Rz12?r  r  r  r:   r$   r   )span)r
   r   rx  r   isfiniteallewmr4  r    r    r!   test_rolling_std_neg_sqrt  s   	r  c                   C   J   t jtdd ttdjddd W d    d S 1 sw   Y  d S )Nzstep must be an integerr)   r   r   r6   rI   r-   r.   r/   r   r,   r   r    r    r    r!   test_step_not_integer_raises  r  r  c                   C   r  )Nzstep must be >= 0r)   r   r   r+   rI   r  r    r    r    r!   test_step_not_positive_raises  r  r  )r!  r%   r   r_   r   r  g@@g     @D@UUUUUU?gUUUUUU8@)r   r   r  r   r  gUUUUUU@c                 C   s~   t |}t | }|j||d }t|| t|dk|dk |j||d }t|t| t|dk|dk d S )Nr   r   )r
   r   rv  rZ   r   rx  r   sqrt)r!  r%   r   r_   sr
result_var
result_stdr    r    r!   'test_rolling_var_same_value_count_logic  s   2	r  c                  C   sZ   t g d} | d}| }|dd  dk sJ | }|dd  dk s+J d S )Nr  r   r   r   r   r   r   r:   r   r   )r
   r   r   r	  r   r  rr^   r    r    r!   (test_rolling_mean_sum_floating_artifacts9     
r  c                  C   sZ   t g d} | d}| }|dd  dk sJ | }|dd  dk s+J d S )Nr  r   r   r   )r
   r   r  r	  r  r  r    r    r!   )test_rolling_skew_kurt_floating_artifactsD  r  r  c           	      C   s   | }t dgddd}|d t|d< |jddd}t||}||d}|r+dd	gng d}|| |gjd
dt}t|j	|ksGJ t
|| d S )Nr   r   r:   rd  r1   r   numeric_onlyr  r5  Trl   )r   r   objectr   rQ   rN   rn   r   r7  r   rZ   r[   )	ro   r  kernelr   r   opr^   r   r_   r    r    r!   test_numeric_only_frameO  s   

r"  r   use_argc                 C   s   t g dddd}|d t|d< |r|fnd}|jddd}t|| }||d	|i}|r3d
dgng d}|| t}	|rC|	fnd}
|	jddd}t|| }||
d	|i}t|| d S )Nr$  r   r:   rd  r1   r    r   r   r  r  r5  )r   r   r  r   rQ   r   rZ   r[   )r   r  r#  r   argr   r!  r^   r   df2arg2rolling2op2r_   r    r    r!    test_numeric_only_corr_cov_frame_  s   

r)  r   c           
      C   s   | }t dg|d}|jddd}t||}|r@|tu r@d| d}tjt|d ||d W d    d S 1 s9w   Y  d S ||d}||gjd	d
	t
}	t||	 d S )Nr   r  r   r   Rolling.  does not implement numeric_onlyr)   r  Trl   )r
   r   rQ   r  r-   r.   rL   rN   rn   r   r   rZ   r   )
ro   r  r   r   r   r   r!  r2   r^   r_   r    r    r!   test_numeric_only_seriesu  s   
"
r,  c                 C   s   t g d|d}|r|fnd}|jddd}t|| }|rH|tu rHd|  d}tjt|d	 ||d
|i W d    d S 1 sAw   Y  d S ||d
|i}	|t}
|rY|
fnd}|
jddd}t|| }||d
|i}t	
|	| d S )Nr$  r  r    r   r   r   r*  r+  r)   r  )r
   r   rQ   r  r-   r.   rL   r   r   rZ   r   )r   r#  r  r   r   r$  r   r!  r2   r^   ser2r&  r'  r(  r_   r    r    r!   !test_numeric_only_corr_cov_series  s    
"

r.  rO  )r{   msusnsr  )NUTCzEurope/Praguec                 C   s  t dtditddd|dd}|d }|j| |_|d }|jd|_t|| tdd	d|d
}t	d|d}d|j
d< |tdd }tdd	| |d
}t	d|d}	d|	j
d< |	tdd }
t |}t |
}|jd|_t|| d S )Nrf   r#   z
2013-01-01r   )rG   r?   r  rH   r1  z
2023-01-01z
2023-01-10)rO  r  r   r   r   r;   )r   r,   r   r   r   rA   rP  rZ   r[   r
   ry   r   r   )rO  r  rr   sum_in_nanosecssum_in_microsecs	ref_dates
ref_seriesref_max_seriesrT  series
max_seriesref_dfr   r    r    r!   -test_rolling_timedelta_window_non_nanoseconds  s(   

r;  )r   r   numpyr   r-   pandas.compatr   r   r   pandasr   r   r	   r
   r   r   r   r   r   r   pandas._testing_testingrZ   pandas.api.indexersr   pandas.core.indexers.objectsr   pandas.tseries.offsetsr   r"   r3   markparametrizer  r9   rM   rS   r`   re   rs   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  r  r   r#  r-  r3  r:  r=  r?  from_tuplesrL  rU  rW  r]  r^  rc  rf  rh  rj  rl  rp  rs  xfailr}  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  r  r  r  r  r  r  r  r"  r)  r   r  r,  r.  r;  r    r    r    r!   <module>   s`   0





-

	


	


	


" $"" $"



	

	

 
D


	
(
(
(
(00*
!
&

"



	5
(*4!
'%	**
/