o
    d	                     @   s6  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*dKdL Z+dMdN Z,ej dOd5d/gdPdQ Z-ej dRdSdTgdUdV Z.ej dRdSdTgdWdX Z/ej dYdZd[gej d\dSd3g d]fdSd)g d^fdSd5ej0d d dddd_dd`dag
fdSd/ej0d d d dddd_dd`g
fdTd3g dbfdTd)g dbfdTd5ej0d dddd_dd`dadcg
fdTd/ej0d dddd_dd`dadcg
fgddde Z1dfdg Z2ej d\dSd3ej0d d dddd_dej0ej0g
fdSd)ej0d d d dddd_dej0g
fdSd5ej0ej0d dddd_dej0ej0g
fdSd/ej0ej0d d dddd_dej0g
fdTd3ej0dddd_dd`d`ej0ej0g
fdTd)ej0dddd_dd`d`d`ej0g
fdTd5ej0ej0dddd_dd`ej0ej0g
fdTd/ej0ej0dddd_dd`d`ej0g
fgdhdi Z3ej djd3g dkfd)g dlfd5ej0d dmdndodpdqdrdsdtg
fd/ej0d dmdddd_dd`dag
fgdudv Z4ej dwdxdgdydz Z5d{d| Z6d}d~ Z7dd Z8dd Z9dd Z:dd Z;dd Z<dd Z=ej dddgda dgd  dg dgd  dgd  dgd  dgd  dgd  dgd  dgd  dgd  dgd  dgd  dgd`  dg dgd`  dgd  dgd  dgd  dgd  dgd  dgd  dgda  dgd_  dgd_  dgd  dgd  dgd  dgd  dgd  dgd  dgd  dgda  dg dgd  dgd  dgd  fdej0gd dgd  dgd  dg dgd  dgd  dgd  dgd  dgd  dgd  dgd  dgd  dgd  dgd  dgd`  dg dgd`  dgd  dgd  dgd  dgd  dgd  dgd  dgda  dgd_  dgd_  dgd  dgd  dgd  dgd  dgd  dgd  dgd  dgda  dg dgd  dgd  fgdd Z>dd Z?dd Z@dd ZAej de
g dg dddgd_gdd gfddgd_d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d_gdd gfddgd_dgdd dgfddgdd`gdddgfgddfe
g dg dddgd_gdd gfddgd_dgdd dgfddgdd`gdddgfgddfe
g dg dddgd_gdd gfdgdgddgfdgd`gddgfgddfe
g dg dddgd_gdd gfdgdgddgfdgd`gddgfgdd fe
dgd_gdg ddfe
dgd_gdg ddfe
 i g fgddfe
dej0dgej0dd`gddgej0gdd gfdej0gej0dgdd dgfdej0dgej0dd`gdg dfgddfg	dd ZBej ddgd_gdd gfddgd_dgdd dgfddgdd`gdddgfgdDfdgd_gdd gfddgd_dgdd dgfg dg ddg dfgdfdgd_gdd gfdgdgddgfdgd`gddgfgdfgdd ZCdd ZDe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Ä ZEej dd gdgdgdgd_g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d_g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΄ ZFej ddd iejGg dѢddgdҍfddiejGg dբddgdҍfgddׄ ZHej dddgddۄ ZIdd݄ ZJdd߄ ZKdd ZLdd ZMej dg ddd ZNdd ZOej ddededgdd ZPdd ZQej dedddddfedddddfgej ddSej0d d dddd_dd`g	fdTej0d dddd_dd`dag	fdej0d ddddadddg	fgdd ZRd d ZSejjTe rXe  pZe ddej dddg dfddg dfddg d	fddg d
fgdd ZUdd ZVej dg ddd ZWe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 ZXej ddg dfdg dfgdd ZYej d deZd!d"eZd!d#d$d%d&d'gfd(eZd!dteZd!d)d*d+d,d-gfdeZd!d.eZd!dd.d/dd0gfd1eZd!d2eZd!d3d4d5d6d7gfd8eZd!d9eZd!d:d;d<d=d>gfgd?d@ Z[ej dg dAdfedBdddCdDfgdDdE Z\dFdG Z]ej dd1d8gdHdI Z^ej dJd1g dKfd8g dLfgdMdN Z_dOdP Z`ej dddQgdRdS ZadTdU ZbdVdW Zcej dXdg dYfdg dZfgd[d\ Zdd]d^ Zed_d` Zfdadb Zgdcdd Zhej dg deej dg dfej dgddgej dhddgej dig djdkdl Zidmdn Zjej dog dpej dqg drej dsg dtg dudej0dvej0dwgej0ej0ej0ej0gej0dxej0dydwdmgdmgej0dzd{ggd|d} Zkd~d Zldd Zmdd Zndd Zodd Zpdd Zqej g ddddejrddddgddej0ddd dd ddggdddej0ddddgddej0ddd d dddggej0dd`dadddgddej0gd g d gddadadaej0ejrd_dddg
ddej0gd dd g ej0gd_  dd g gddadadaej0ejrdadddg
ddej0gd dd g ej0gd_  dd g gddagd_ ddej0gd dgd`  gddadej0daddagddej0ddgdgd  dg ggdd Zsdd Ztdd Zudd Zvej dddgej dddgdd Zwej dexeygdd Zzej dddgej dddgej dexeygdd Z{dS (      )datetime	timedeltaN)is_platform_armis_platform_mac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    T/app/.heroku/python/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   s^   t tdtddddd}tjtdd |jdd	d
 W d    d S 1 s(w   Y  d S )N
   
2015-12-24Dr>   freqr?   z,step is not supported with frequency windowsr)   r<   r:   step)r   r   aranger   r-   r.   NotImplementedErrorr   )r%   r   r    r    r!    test_freq_window_not_implementedU   s   "rK   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   rG   zstep not implementedr)   )r   r,   r   r-   r.   rJ   getattr)rL   rollr    r    r!   &test_step_not_implemented_for_cov_corrl   s   "rQ   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 )NrA   valuerB   rC   rD   rF                 ?      @      ;@r:   r$   r<   )	r   r   rI   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 )NrA   rR   z
2017-08-08rC   rD   rF   rT   rU   rV   r:   r   r&   )raw)r   r   rI   r   rW   NaNr   r   applyrX   rY   )r%   r_   rZ   r   r]   Zresult_roll_sumZresult_roll_genericr    r    r!   0test_constructor_timedelta_window_and_minperiods   s   rb   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=   rF   r   r   closedr   2DTdrop)r   r   rO   r   reset_indexrX   rY   )rg   arithmetic_win_operators	func_nameZdf_fixeddf_timer\   r]   r    r    r!   test_closed_fixed   s   ro   zclosed, window_selectionsZboth)TTFFF)TTTFF)FTTTF)FFTTT)FFFTTleft)TFFFF)FTTFF)FFTTFright)FFFFTZ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 )Nrc   )rS   rT   r5   rU         @re   r#   r=   rF   c                    s"   g | ]}t  d  j|  qS )rc   )rO   iloc).0srn   rm   r    r!   
<listcomp>   s   " z9test_datetimelike_centered_selections.<locals>.<listcomp>semddofr   rh   r   T)rg   r   r(   FZcheck_dtyper    )r   r   rO   r   rX   rY   )rg   Zwindow_selectionsrl   r]   kwargsr\   r    rv   r!   %test_datetimelike_centered_selections   s$   1

r|   zwindow,closed,expected3s)rU   rU   rU   Z2s)rU   r5   r5   )rT   rU   rU   rT   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   rF   Trg   r(   )r   r   r   rX   assert_equalr%   rg   r]   r0   r?   r   r\   r    r    r!   ,test_datetimelike_centered_offset_covers_all   s   r   rh   )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      r?   dtypeT)r(   rg   )r   floatr   r   rX   r   r   r    r    r!   +test_datetimelike_nonunique_index_centering  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   rC   startrE   r>   rF   rh   r   Tr'   )      ?      ?r   )r
   r,   r   r   meanr?   rX   assert_series_equalru   r\   r]   r    r    r!   !test_even_number_window_alignment3  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   Z
binary_colr   minr   rF   )UUUUUU?r   皙?r   @m?r   g._x%I?r   r   r   r   r   r   )columnsr?   rp   r   )r%   rg   r   r(   rH   )	r   r   lenr   r   r   r   rX   rY   )r(   rH   datar   r[   r]   r   r\   r    r    r!   test_closed_fixed_binary_colA  s(   
r   rg   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#   2000rh   rD   r   r?   1Drg   rF   )
r
   r   rI   r   r   rO   r   r?   rX   r   )rg   rl   rm   serrP   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   10Drp   r   rF   )	r
   r   rO   r   rX   r   r   r   r?   )r   r   r\   r    r    r!   test_closed_one_entryg  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   rc   r   r   r:   r=   r   rc   F)sortr   r   rp   r   )rc   N)Zarraysnames)r   r?   name)r   r   rO   groupbyr   r	   Zfrom_arraysr?   r
   r   r   rX   r   )r   r   r\   Zexp_idxr]   r    r    r!   test_closed_one_entry_groupbyo  s   
r   input_dtypeintr   zfunc,closed,expected)
rS   r   r   r   r   r:   r   r#   r      )
rS   r   r   r   r   r   r:   r   r#   r   r   r   r   )
rS   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 )NrA   r   r=   r   r<   r   rF   )
r
   r   rI   astyper   rO   r   r?   rX   r   )r   r   rg   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 )NrA   r   r=   r   r   r#   rF   r<   rp   r   r   r   r:   r   r   )r
   r   rI   r   rj   r?   r   r   r   rX   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 )NrA   r   r=   r   r   r<   r   )r   rg   rF   )r
   r   rI   r   r   r   r?   rO   r   rX   r   )r   rg   r]   r   r\   r    r    r!   test_closed_min_max_minp  s   
r   zclosed,expected)
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 )	NrA   r   r=   r   r<   r   rF   r   )
r
   r   rI   r   r   r?   medianrX   r   quantile)rg   r]   r   rP   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 )NrF   )r   r   r   rX   rY   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   rI   r   r   rX   r   r   )r]   rP   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   rS   )r
   r   r   r   r   rX   r   xr\   r]   r    r    r!   test_missing_minp_zero  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-07rF   Z2dr   r   rS   )
r
   r   r   r   r   r   r   r?   rX   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 )Nrc   r   )CrC   E12r   )rA   r   r   r:   )Nr   r   )r	   Zfrom_productr   r   onesr   rM   rX   Zassert_index_equalr   r?   r   )colsr   r\   r    r    r!   test_multi_index_names  s
   r   c                 C   sz   t td}|| }|dkrt dd tdD }nt tjgd dgd  gd	 }|jd
| d }t	|| d S )N)rA      r   c                 S   s$   i | ]}|t jgd  dgd  qS )r   rU   r   )r   r   rt   ir    r    r!   
<dictcomp>  s   $ z)test_rolling_axis_sum.<locals>.<dictcomp>r   r   rU      rA   r:   axis)
r   r   r   _get_axis_numberr,   r   r   r   rX   rY   
axis_framer   r   r]   r\   r    r    r!   test_rolling_axis_sum  s   
 r   c                 C   sz   t tdtdd}|| }|dv r t g dg dd}nt g dg dd}|jd| dd	 }t|| d S )
Nr:   )r   yr   r?   r~   )rT   rT   rT   )r5   r5   r5   r   r   )r   r   )r   r,   r   r   countrX   rY   r   r    r    r!   test_rolling_axis_count  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   Zsetflagsr
   r   r   rX   r   )Zarrr\   r]   r    r    r!   test_readonly_array-  s
   r   c              	   C   s   |}t dd tddd|dD }| dv r!|jjd| d	 j}n	|jd| d	 }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-03rC   )rE   tzr   rh   r   c                 S   r   )rT   r   r    r   r    r    r!   r   B      
r   )r>   rE   r   c                 S   r   )r5   r   r    r   r    r    r!   r   F  r   z	2019-8-02z	2019-8-03)r   r   Tr   r   rX   rY   )r   Ztz_naive_fixturer   r   r\   r]   r    r    r!   test_rolling_datetime6  s&   r   zcenter, expected_dataTg      V@g     @X@r   g     X@g     X@   g     W@   g     @W@g     @V@g      X@g     W@   g     V@   g     V@g     U@g      W@g     T@g     U@rA   g     @U@g      S@g     @T@   g     @S@Fr   c           
      C   s   t  }t||td dd}tjjdd}|jddt|d}t	||d	}|j
d
dd |jddd| dd d}|d
}|d }t||dd}	t||	 d S )Nim  rC   )rE   i  )seedr   d   )highsize)DateColmetricr   T)ZinplaceZ21Dr   rp   )r%   r   rg   r(   r   r   )r?   r   )r   nowr   r   r   randomZRandomStaterandintr   r   Z	set_indexr   rL   renameZ
_with_freqr
   rX   r   )
r(   r[   Z
date_todayr;   Znprr   r   r\   r?   r]   r    r    r!   test_rolling_window_as_stringO  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   )rT   r5   r5   r5   rT   r   )r   r   r   r
   rX   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   rU   )r,   r   r   r   r   rX   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   )rT   r5   rU   r5   r5   r5   rU   r   r   )r   r   r   r   rX   r   )r0   valuesZ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   rT   c                 C   <   dd |D }t || j||dD ]
\}}t|| qd S )Nc                 S      g | ]
\}}t ||d qS rF   )r   rt   r   r?   r    r    r!   rw         z/test_iter_rolling_dataframe.<locals>.<listcomp>r   )zipr   rX   rY   )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#   rC   r   r>   rE   rc   r   r   c                    s&   g | ]\}}t | j|d f dqS )r   rF   )r   locr  r   r    r!   rw   J  s    z2test_iter_rolling_on_dataframe.<locals>.<listcomp>r   )on)r   r   r  r   rX   rY   )r]   r%   r  r    r   r!   test_iter_rolling_on_dataframe#  s   
r  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   )rs   )rt   idxr   r    r!   rw   U  r  z<test_iter_rolling_on_dataframe_unordered.<locals>.<listcomp>r   r   )r   listr   r   r  rX   rY   )results	expectedsr\   r]   r    r   r!   (test_iter_rolling_on_dataframe_unorderedQ  s    r  z ser,expected,window, min_periodsint64r   c                 C   r  )Nc                 S   r  r  r
   r  r    r    r!   rw   }  r  z,test_iter_rolling_series.<locals>.<listcomp>r   )r  r   rX   r   )r   r]   r%   r   r  r    r    r!   test_iter_rolling_seriesZ  s   #r  zexpected,expected_index,windowr   rC   rD   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   rC   r
  rF   c                 S   r  r  r  )rt   r   r  r    r    r!   rw     s    z.test_iter_rolling_datetime.<locals>.<listcomp>)r
   r,   r   r  r   rX   r   )r]   Zexpected_indexr%   r   r  r    r    r!   test_iter_rolling_datetime  s   (r  zgrouping,_indexlevel)r   r   r  r   r   r  r  r   byX)r  )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_sumr  r#   )r   r   r   r   r   r   )rS   r   rT   r   r5   r  ignore)r   errorsr   )r   )r_   r   r    )r   r,   rj   r   r   ra   rX   rY   )grouping_indexr_   r"  r   r]   r\   r    r    r!    test_rolling_positional_argument  s   "r'  addrS   c              	   C   s   t dd|  ddgitdtdtdg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 )Nrc   gVUUUUU%C       z19700101 09:00:00z19700101 09:00:03z19700101 09:00:06rF   r   r}   rp   r:   rf   r   SrD   gUUUUUU%CgqqCgqqCrS   )r   r   ZresampleZffillr   r   r   r   r   rX   rY   )r(  r   r\   datesr]   r    r    r!   *test_rolling_numerical_accuracy_kahan_mean  s0   	r,  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ZrS   rS   rS   rS   r   r   r:   gsh|??r-  rS   r   )r   r   r   r
   r   r   rX   r   r   r    r    r!   )test_rolling_numerical_accuracy_kahan_sum  s   r.  c                  C   s^   t ddddtdg} tjt| }td|i| d}|d	 }t
||dg  d S )Nr   r   Z60sr   endrE   r   r   rF   )r   rW   r   r   r   randr   r   r   r   rX   rY   )r?   r   r   r\   r    r    r!   $test_rolling_numerical_accuracy_jump  s   r2  c                  C   s4   t g dtddd} | d }t||  d S )N)g(@S ?ga2U0*3?r)  r)  z
1999-02-03z
1999-02-06r   r   )r
   r   r   r   rX   r   )ru   r\   r    r    r!   ,test_rolling_numerical_accuracy_small_values  s   r3  c                  C   sp   t dddd} ttd| tjd}d|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-01rA   rC   rD   )r   r?   r   gТr   r#   gk/      @      @      @rF   )
r   r
   r,   r   float64r   r   r   rX   r   )r+  dsr\   r]   r    r    r!   (test_rolling_numerical_too_large_numbers  s&   r9  )r   rR   ))r   r5   )r   rT   )r   rT   )r   rT   )r   rT   c                 C   sj   t dddgg dd}d|d< t|jdddd|  }t ddg||g||gdddgd}t|| d S )	Nr   r   r   r  r1   )r?   r   rT   r1   r%   r   r   rF   )r   rO   r   rX   rY   )r   rR   r   r\   r]   r    r    r!    test_rolling_mixed_dtypes_axis_1/  s   r<  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} | jdddd }t g dg d	g d
g}t|| d S )Nr   r   r   r   r   r   r;  )rS   rT   rU   r6  r6  r6  r6  )rS   rT   rU   rU   rU   rU   rU   )rS   r5   rr   rr   r5  r5  r6  )r   r   r   r   r   rX   rY   r   r    r    r!   test_rolling_axis_one_with_nan?  s   r=  rR   testz
2019-12-31z1 days 06:05:01.00003c                 C   sL   t dddgi}| |d< |jdddd }t dddgi}t|| d S )Nr   r   r   r  r;  rT   r5   )r   r   r   rX   rY   )rR   r   r\   r]   r    r    r!   &test_rolling_axis_1_non_numeric_dtypesS  s
   r?  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}| jdddd }t|| | jjddd j}t|| d S )Nr   r   r#   r   r   r  rT   r4  g      &@      *@r   )r   r%   r   )r   r%   )r   r   r   r   r   rX   rY   r   )r   r]   r\   r    r    r!   test_rolling_on_df_transposed`  s   rA  )r?   r%   z2020-01-01 08:00z2020-01-01 08:08r   r/  Z2Tz2020-01-01 12:00Z30TZ1h)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   rF   rp   r   )r
   rO   r   rX   r   )r?   r%   r   r   r8  r\   r]   r    r    r!   test_rolling_period_indexk  s   rC  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   rx   
isinstancer   r
   r   r   r   rX   r   )r0   objr\   r]   r    r    r!   test_rolling_sem  s   
rF  zGH 38921)reason)r   third_valuer   var)|Fr   r   r   r   r   std) >gfoCr   Pp?rM  绹۞?r   )rJ  r   r   r   r   r   )rL  rM  r   rM  rN  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
   rO   r   r   r   rX   r   )r   rH  r   r8  r\   r]   r    r    r!   !test_rolling_var_numerical_issues  s
   rP  c                  C   s  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ttdd	ftdd
ftdd	ftdd
ftdd	ftdd
ftdd	ftdd
ftdd	ftdd
fg
d} t g dg ddtdtdtdtdtdgd}|jdd }t	| | d S )Ng?g      rT   g6<AԿg     ?g?)r   rc   z20130101 09:00:00r   rc   z20130102 09:00:02z20130103 09:00:03z20130105 09:00:05z20130106 09:00:06rF   )r   r   r   r   r:   )r   r   r   r   r:   Z3dr$   )
r   r   r   r	   from_tuplesr   r   rN   rX   rY   )expr   resr    r    r!   ,test_timeoffset_as_window_parameter_for_corr  sb   









+rT  method)rI  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   irA   r   Nr+   rF   r#   r$   r   g-q=)	r   r   rI   r?   rO   r   absr   r   )rU  r   Z
df_reverseZ
increasingZ
decreasingr    r    r!   test_rolling_decreasing_indices  s
   *<rZ  )rT   rU   r4  rU   )rS   rT   rU   r4  )rT   rU   r5  r4  )rS   rT   r5   rU   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.
    re   r   r   rD   rF   Nr+   Tr   )r   r,   r   r   rX   r   )r%   rg   r]   r0   r?   Zdf_incZdf_decZexpected_incZexpected_decZ
result_incZ
result_decr    r    r!   (test_rolling_decreasing_indices_centered  s   r[  zwindow,expected1ns)rT   rT   rT   rT   Z3ns)r5   rU   rU   r5   c                 C   sR   t dddd}|g d|td}|||td}|j| |dd }t|| d S )	Nre   r   r\  rD   )r   r   r   r   r   Tr   )r   r   r   r   rX   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@r5  g`UU"@r@  g     1@g      >@g     K@g     a@rV  g/e?g8j{?gLM?g4`i?g
+TT?g?rW  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)	selfZ
num_valuesr   r(   rg   rH   r   r0  r   r    r    r!   get_window_boundsk  s   
zCtest_rolling_non_monotonic.<locals>.CustomIndexer.get_window_boundsN)__name__
__module____qualname__rb  r    r    r    r!   CustomIndexerj  s    rf  r   )r`  r_  N)	r   r   rI   r   r   rO   r   rX   rY   )rU  r]   r_  r   rf  Zindexerr\   r    r    r!   test_rolling_non_monotonic)  s   >rg  rd   z
2001-01-01)rE   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	  rF   rS   r   r   r   )	r
   copyrs   r   rN   r   r   rX   assert_almost_equal)r?   r%   r   r   r\   r]   r    r    r!   !test_rolling_corr_timedelta_index~  s   	rj  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g2rd   )groupr   rm  F)Zdropnar   r   r   )rS   r5   rU   rT   rr   )r   r   r   r   r   )r   r   r:   r   r   r   rF   )	r   r   r   r   r   r   r	   rX   rY   )r   r   r\   r]   r    r    r!   !test_groupby_rolling_nan_included  s   
rn  c                 C   s`   t tjd}| }t|d|  }t|| |d }t|d|  }t|| d S )NrA   r:   iP  )	r
   r   r   r1  rh  rO   r   rX   r   )rU  r   Zser_copyr]   r\   r    r    r!   *test_rolling_skew_kurt_numerical_stability  s   ro  )rU  r   )r5   g+X?rS   gJ_9?)rr   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:   rO  )rU  r   ru   r\   r]   r    r    r!   (test_rolling_skew_kurt_large_value_range  s   	rp  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   )rU  )r-   r.   r/   r
   r,   r   r    r    r    r!   test_invalid_method     "rq  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   rs  r/  r   r   rF   rp   r   r   r+   z-1dr:   )	r   r,   r   r   r   r   rX   r   rs   )r%   r0   r  rE  r\   r]   r    r    r!   .test_rolling_descending_date_order_with_offset  s   rt  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瞯<ZatolZrtol)r
   r   rI  r   r   rX   r   r   r    r    r!   ,test_rolling_var_floating_artifact_precision  s
   rx  c                  C   s@   t g d} | d }t tjddg}tj||ddd d S )N)Q؎>g 4PSȡ>ry  r   g[^>>rv  rw  )r
   r   rK  r   r   rX   r   r   r    r    r!   test_rolling_std_small_values  s   rz  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=?rF   r#   r   r   )r   r   r`   r  r,   r   rs   r   r   rX   rY   )r   Z
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  rS   )r   r   r`   r   r   rX   rY   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   rX   r   r   r    r    r!   test_rolling_zero_window#  s   r  c                 C   sd   t tdtddd| d}t tjgd tdddd| d}|jddd	 }tj||d
d d S )Nr#   rA      r   r  r   r   r   r   Frz   )r   r,   r   r   r   r   rX   rY   )Zfloat_numpy_dtyper   r]   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
} | jdddd }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   rA   Z
abcdefghijr   Zfloat16Zfloat32r7  Zint8Zint16Zint32Zuint8Zuint16Zuint32Zuint64)
r   r  r1   defghr   jr   r   r;  r   r:   r#   r   r   r   r  )r   r   rI   reshaper  r   r   r   r,   rX   rY   r   r    r    r!   test_rolling_numeric_dtypes6  s:   









r  )r   r:   rA   r   )r   r   Zaveragepct	ascending	test_data)default
duplicatesnansc           	   	      s   d}|dkrt tj|d}n'|dkrt tjd|d}n|dkr7t tj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  rT         ?      ?c                    s   | j  djd S )NrU  r  r  r+   )rankrs   )r   r  rU  r  r    r!   <lambda>j  s    ztest_rank.<locals>.<lambda>r  )r
   r   r   r1  choicer   infr   ra   r  rX   r   )	r%   rU  r  r  r  lengthr   r]   r\   r    r  r!   	test_rankY  s    
r  c                  C   sv   d} d}t d| dd}ttj| | | df|d}|jg dd	d
}tj|g dd	d
}t	|j
t| d S )NrA   r#   Z20100101r   rD   r+   rF   )r  r   r  r   r   )   2   K   )r   r   r   r   r1  r  r   Z
percentilerX   ri  r   r   )rowcolr  r   Zdf_quantileZnp_percentiler    r    r!   #test_rolling_quantile_np_percentileq  s   "r  r   )rS   r   g?r   r   interpolation)ZlinearlowerZhigherZnearestZmidpointr   )rT   r5   rU   rr   r4  r5  r6  )g       @rT   rU   rr   r4  r5   r5  r6  r  r   r   g333333?gffffff?g333333?c                 C   sZ   t |}|| |}|jdd| |jd }t|r%t|s#J d S ||ks+J d S )Nr   r   r+   )r
   r   Z	expandingrs   r   isnan)r   r  r   ru   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   rI   r
   r-   r.   r/   r   r   r   )r   ru   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)rS   r   r   g?rT   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)rT   r5   rU   rr   r4  r   r   r#   r   )ry   rS   r:   r   r   )r
   r   rK  r   r   rX   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   rK  r   isfiniteallZewmr  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   rG   r-   r.   r/   r   r,   r   r    r    r    r!   test_step_not_integer_raises  rr  r  c                   C   r  )Nzstep must be >= 0r)   r   r   r+   rG   r  r    r    r    r!   test_step_not_positive_raises  rr  r  )r   r%   r   r]   r  g@@g     @D@UUUUUU?gUUUUUU8@)r   r   ru  r   ru  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   rI  rX   r   rK  r   sqrt)r   r%   r   r]   srZ
result_varZ
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_artifacts-     
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   rV  r  rW  r  r    r    r!   )test_rolling_skew_kurt_floating_artifacts8  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:   r:  r1   r   numeric_onlyr   r  Tri   )r   r   objectr   rO   rL   rk   r   r  r   rX   rY   )	rl   r  kernelr   r   opr\   r   r]   r    r    r!   test_numeric_only_frameC  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:   r:  r1   r    r   r   r  r   r  )r   r   r  r   rO   r   rX   rY   )r  r  r  r   argr   r  r\   r   Zdf2arg2rolling2op2r]   r    r    r!    test_numeric_only_corr_cov_frameS  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  Tri   )r
   r   rO   r  r-   r.   rJ   rL   rk   r   r   rX   r   )
rl   r  r   r  r   r   r  r2   r\   r]   r    r    r!   test_numeric_only_seriesi  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   rO   r  r-   r.   rJ   r   r   rX   r   )r  r  r  r   r   r  r   r  r2   r\   Zser2r  r  r  r]   r    r    r!   !test_numeric_only_corr_cov_seriesz  s    
"

r  )|r   r   numpyr   r-   Zpandas.compatr   r   r   Zpandasr   r   r	   r
   r   r   r   r   r   r   Zpandas._testingZ_testingrX   Zpandas.api.indexersr   Zpandas.core.indexers.objectsr   Zpandas.tseries.offsetsr   r"   r3   markZparametrizer   r9   rK   rQ   r^   rb   ro   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  rQ  r'  r,  r.  r2  r3  r9  r<  r=  r?  rA  rC  rF  ZxfailrP  rT  rZ  r[  r]  r   rg  rj  rn  ro  rp  rq  rt  rx  rz  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>   sd   0





-

	


" $"" $"



	

		
 !"#$+
	
 !"#$
Y
 
D


	
(
(
(
(00*
!
&




	
	=
(&4!
'#	**
/