o
    i?                     @   sx  d dl m Z mZ d dlZd dlZd dlmZmZ d dl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	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)ej"#d(g d)d*d+ Z*ej"#d,g d-d.d/ Z+ej"#d0d1g d2g d3g d4g d5g d6gfd7g d8g d2g d9g d:g d6gfd;g d2g d9g d:g d6g d<gfd=g d8g d>g d?g d@g d<gfgdAdB Z,ej"#dCdDd;g dEfdDd1g dEfdDd7g dEfdDd=g dEfdFd;g dGfdFd1g dEfdFd7g dHfdFd=g dIfgdJdK Z-ej"#dCdLd;g dMfdLd7g dNfdLd1g dOfdLd=g dPfgdQdR Z.dSdT Z/dUdV Z0ej"#d,d=d7gdWdX Z1ej"#dYdZd[gd\d] Z2ej"#dYdZd[gd^d_ Z3ej"#d`dadbgej"#dcdZd;g ddfdZd1g defdZd=ej4d d ddddfddgdhg
fdZd7ej4d d d ddddfddgg
fd[d;g difd[d1g difd[d=ej4d ddddfddgdhdjg
fd[d7ej4d ddddfddgdhdjg
fgdkdl Z5dmdn Z6ej"#dcdZd;ej4d d ddddfdej4ej4g
fdZd1ej4d d d ddddfdej4g
fdZd=ej4ej4d ddddfdej4ej4g
fdZd7ej4ej4d d ddddfdej4g
fd[d;ej4ddddfddgdgej4ej4g
fd[d1ej4ddddfddgdgdgej4g
fd[d=ej4ej4ddddfddgej4ej4g
fd[d7ej4ej4ddddfddgdgej4g
fgdodp Z7ej"#dqd;g drfd1g dsfd=ej4d dtdudvdwdxdydzd{g
fd7ej4d dtddddfddgdhg
fgd|d} Z8ej"#d~ddgdd Z9dd Z:dd Z;dd Z<dd Z=dd Z>dd Z?dd Z@dd ZAej"#dddgdh dgd  dg dgd  dgd  dgd  dgd  dgd  dgd  dgd  dgd  dgd  dgd  dgdg  dg dgdg  dgd  dgd  dgd  dgd  dgd  dgd  dgdh  dgdf  dgdf  dgd  dgd  dgd  dgd  dgd  dgd  dgd  dgdh  dg dgd  dgd  dgd  fdej4g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dg  dg dgdg  dgd  dgd  dgd  dgd  dgd  dgd  dgdh  dgdf  dgdf  dgd  dgd  dgd  dgd  dgd  dgd  dgd  dgdh  dg dgd  dgd  fgdd ZBdd ZCdd ZDdd ZEej"#deg dg dddgdfgdd gfddgdfd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dfgdd gfddgdfdgdd dgfddgddggdddgfgddfeg dg dddgdfgdd gfddgdfdgdd dgfddgddggdddgfgddfeg dg dddgdfgdd gfdgdgddgfdgdggddgfgddfeg dg dddgdfgdd gfdgdgddgfdgdggddgfgdd fedgdfgdg ddfedgdfgdg ddfe i g fgddfedej4dgej4ddggddgej4gdd gfdej4gej4dgdd dgfdej4dgej4ddggdg dfgddfg	dd ZFej"#ddgdfgdd gfddgdfdgdd dgfddgddggdddgfgdLfdgdfgdd gfddgdfdgdd dgfg dg ddg dfgdfdgdfgdd gfdgdgddgfdgdggddgfgdfgddÄ ZGddń ZHe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ʄ ZIej"#dd gdgdgdgdfg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dfggedddd΍edddd΍edddd΍edddd΍edddd΍gdLf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Մ ZJej"#ddd iejKg dآddgdٍfddiejKg dܢddgdٍfgddބ ZLej"#dddgdd ZMdd ZNdd ZOdd ZPdd ZQej"#dg ddd ZRdd ZSej"#ddededgdd ZTdd ZUej"#dedddddfeddd ddfgej"#ddZej4d d ddddfddgg	fd[ej4d ddddfddgdhg	fdej4d ddddhdddg	fgdd ZVdd ZWej"jXe o}e  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 ZYdd ZZej"#d(g ddd Z[ej"#dCdFd;g dfdFd7g dfdFd1g dfdFd=g dfdDd;g dfdDd7g dfdDd1g dfdDd=g dfgdd Z\ej"#dd g d!fd"g d#fgd$d% Z]ej"#d&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de^d'd4e^d'dd4d5dd6gfd7e^d'd8e^d'd9d:d;d<d=gfd>e^d'd?e^d'd@dAdBdCdDgfgdEdF Z_ej"#dg dGdfedHdddIdLfgdJdK Z`dLdM Zaej"#d(d7d>gdNdO Zbej"#dPd7g dQfd>g dRfgdSdT ZcdUdV Zdej"#dddWgdXdY ZedZd[ Zfd\d] Zgej"#d^dg d_fdg d`fgdadb Zhdcdd Zidedf Zjdgdh Zkdidj Zlej"#dg dkej"#d(g dlej"#dmddgej"#dnddgej"#dog dpdqdr Zmdsdt Znej"#dug dvej"#dwg dxej"#dyg dzg d{dej4d|ej4d}gej4ej4ej4ej4gej4d~ej4dd}dtgdtgej4ddggdd Zodd Zpdd Zqdd Zrdd Zsdd Ztdd Zuej"#g ddddejvddddgddej4ddd dd ddggdddej4ddddgddej4ddd d dddggej4ddgdhdddgddej4gd g d gddhdhdhej4ejvdfdddg
ddej4gd dd g ej4gdf  dd g gddhdhdhej4ejvdhdddg
ddej4gd dd g ej4gdf  dd g gddhgdf ddej4gd dgdg  gddhdej4dhddhgddej4ddgdgd  dg ggdd Zwdd Zxdd Zydd Zzej"#dd!d gej"#dddgdd Z{ej"#de|e}gdd Z~ej"#dd!d gej"#dddgej"#de|e}gdd ZdS (      )datetime	timedeltaN)is_platform_armis_platform_mac)UnsupportedFunctionCall)
	DataFrameDatetimeIndex
MultiIndexSeries	Timedelta	Timestamp
date_rangeperiod_rangeto_datetimeto_timedelta)BaseIndexer)VariableOffsetWindowIndexer)Rolling)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/edux/Edux_v2/venv/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   

"r4   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/   r0   )r1   r5   r2   r3   r!   r!   r"   test_invalid_constructor?   s"   "r:   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_implementedW   s   "rL   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   rH   zstep not implementedr*   )r   r-   r   r.   r/   rK   getattr)rM   rollr!   r!   r"   &test_step_not_implemented_for_cov_corrn   s   "rR   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 )NrB   valuerC   rD   rE   rG                 ?      @      ;@r;   r%   r=   )	r   r   rJ   r   appendr   r   tmassert_frame_equal)r&   nr    expected_dataresultexpectedr!   r!   r"   &test_constructor_with_timedelta_windowv   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 )NrB   rS   z
2017-08-08rD   rE   rG   rU   rV   rW   r;   r   r'   )raw)r   r   rJ   r   rX   NaNr   r   applyrY   rZ   )r&   r`   r[   r    r^   result_roll_sumresult_roll_genericr!   r!   r"   0test_constructor_timedelta_window_and_minperiods   s   re   method)stdmeanr   maxminvarc              	   C   s  t tg ddd}d}d|  }tjt|d( tjt|d t|| ddd W d    n1 s4w   Y  W d    n1 sCw   Y  d	|  }tjt|d1 tjt|d t|| t	j
d
 W d    n1 spw   Y  W d    d S W d    d S 1 sw   Y  d S )N)r   r      r   r%   z2numpy operations are not valid with window objectsz#Passing additional args to Rolling.r*   r   r;   z%Passing additional kwargs to Rolling.dtype)r   r
   rY   assert_produces_warningFutureWarningr.   r/   r   rP   r   float64)rf   r	error_msgwarn_msgr!   r!   r"   test_numpy_compat   s"   

"ru   closed)rightleftbothneitherc                 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>   rG   r   r   rv   r   2DTdrop)r   r   rP   r   reset_indexrY   rZ   )rv   arithmetic_win_operators	func_namedf_fixeddf_timer]   r^   r!   r!   r"   test_closed_fixed   s   r   zclosed, window_selectionsry   )TTFFF)TTTFF)FTTTF)FFTTT)FFFTTrx   )TFFFF)FTTFF)FFTTFrw   )FFFFTrz   )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 )Nr{   )rT   rU   r6   rV         @r}   r$   r>   rG   c                    s"   g | ]}t  d  j|  qS )r{   )rP   iloc).0sr   r   r!   r"   
<listcomp>   s   " z9test_datetimelike_centered_selections.<locals>.<listcomp>semddofr   r   r   T)rv   r   r)   Fcheck_dtyper!   )r   r   rP   r   rY   rZ   )rv   window_selectionsr   r^   kwargsr]   r!   r   r"   %test_datetimelike_centered_selections   s$   1

r   zwindow,closed,expected3s)rV   rV   rV   2s)rV   r6   r6   )rU   rV   rV   rU   r6   r6   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   rG   Trv   r)   )r   r   r   rY   assert_equalr&   rv   r^   r1   r@   r    r]   r!   r!   r"   ,test_datetimelike_centered_offset_covers_all  s   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   rl   rl   rl   rl   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@   rn   T)r)   rv   )r   floatr   r   rY   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   rD   startrF   r?   rG   r   r   Tr(   )      ?      ?r   )r
   r-   r   r   rh   r@   rY   assert_series_equalr   r]   r^   r!   r!   r"   !test_even_number_window_alignmentG  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   rj   r   rG   )UUUUUU?r   皙?r   @m?r   g._x%I?r   r   r   r   r   r   )columnsr@   rx   r   )r&   rv   r   r)   rI   )	r   r   lenr   r   r   rh   rY   rZ   )r)   rI   datar    r\   r^   r   r]   r!   r!   r"   test_closed_fixed_binary_colU  s(   
r   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$   2000r   rE   r   r@   1Drv   rG   )
r
   r   rJ   r   r   rP   r   r@   rY   r   )rv   r   r   serrQ   r]   r^   r!   r!   r"   test_closed_emptyo  s   r   funcrj   ri   c                 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   10Drx   r   rG   )	r
   r   rP   r   rY   r   r   r   r@   )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   r{   r   r   r;   r>   r   r{   F)sortr   r   rx   r   )r{   N)arraysnames)r   r@   name)r   r   rP   groupbyr   r	   from_arraysr@   r
   r   r   rY   r   )r   r   r]   exp_idxr^   r!   r!   r"   test_closed_one_entry_groupby  s   
r   input_dtypeintr   zfunc,closed,expected)
rT   r   r   r   r   r;   r   r$   rl      )
rT   r   r   r   r   r   r;   r   r$   rl   r   rl   r   )
rT   r   r   r;   r   r$   rl   r   r   	   r   c                 C   sT   t td| tdddd}t|jd|d| }t ||jd}t	|| d S )NrB   r   r>   r   r=   r   rG   )
r
   r   rJ   astyper   rP   r   r@   rY   r   )r   r   rv   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 )NrB   r   r>   r   r   r$   rG   r=   rx   r   r   r   r;   r   rl   )r
   r   rJ   r   r   r@   r   rj   r   rY   r   )r   r]   r^   r!   r!   r"   test_closed_uneven  s
    r   c                 C   sd   t tdtdddd}tj||jdd  < t|jdd|d|  }t ||jd	}t	|| d S )
NrB   r   r>   r   r=   r   )r   rv   rG   )
r
   r   rJ   r   r   r@   rP   r   rY   r   )r   rv   r^   r   r]   r!   r!   r"   test_closed_min_max_minp  s
   r   zclosed,expected)
r   r   r   r   r;   r   r$   rl   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 )	NrB   r   r>   r   r=   r   rG   r   )
r
   r   rJ   r   r   r@   medianrY   r   quantile)rv   r^   r   rQ   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 )NrG   )r   r   r   rY   rZ   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   rJ   r   r   rY   r   r   )r^   rQ   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   rT   )r
   r   r   r   r   rY   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-07rG   2dr   r   rT   )
r
   r   r   r   r   r   r   r@   rY   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 )Nr{   r   )CrD   E12r   )rB   rl   r   r;   )Nr   r   )r	   from_productr   r   onesr   rN   rY   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)rB      r   c                 S   s$   i | ]}|t jgd  dgd  qS )r   rV   r   )r   r   r   ir!   r!   r"   
<dictcomp>(  s   $ z)test_rolling_axis_sum.<locals>.<dictcomp>r   r   rV      rB   r;   axis)
r   r   r   _get_axis_numberr-   r   r   r   rY   rZ   
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   )rU   rU   rU   )r6   r6   r6   r   r   )r   r   )r   r-   r   r   countrY   rZ   r   r!   r!   r"   test_rolling_axis_count1  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   rh   rY   r   )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   M  s    z)test_rolling_datetime.<locals>.<dictcomp>z	2019-8-01z
2019-08-03rD   )rF   tzr   r   r   c                 S   r   )rU   r   r!   r   r!   r!   r"   r   U      
r   )r?   rF   r  c                 S   r   )r6   r   r!   r   r!   r!   r"   r   Y  r  z	2019-8-02z	2019-8-03)r   r   Tr   r   rY   rZ   )r   tz_naive_fixturer  r    r]   r^   r!   r!   r"   test_rolling_datetimeI  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@rB   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  rD   )rF   i  )seedr   d   )highsize)DateColmetricr  T)inplace21Dr   rx   )r&   r   rv   r)   r  ri   )r@   r   )r   nowr   r   r   randomRandomStaterandintr   r   	set_indexr   rM   rename
_with_freqr
   rY   r   )
r)   r\   
date_todayr<   nprr   r    r]   r@   r^   r!   r!   r"   test_rolling_window_as_stringb  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   )rU   r6   r6   r6   rU   r   )r   r   ri   r
   rY   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   rV   )r-   r   r   r   r   rY   r   )r1   r]   r^   r!   r!   r"   #test_rolling_count_with_min_periods  s   r!  c                 C   sp   dddt jdddg}g d}tt | |d }W d    n1 s'w   Y  | |}t|| d S )Nr   r   r;   r   r$   rl   )rU   r6   rV   r6   r6   r6   rV   )r   r   rY   ro   rp   r   r   r   )r1   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$   rl   r   r   r   r   rU   c                 C   <   dd |D }t || j||dD ]
\}}t|| qd S )Nc                 S      g | ]
\}}t ||d qS rG   )r   r   r"  r@   r!   r!   r"   r   1      z/test_iter_rolling_dataframe.<locals>.<listcomp>r   )zipr   rY   rZ   )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$   rl   r   r   z
2016-01-01r$   rD   r   r?   rF   r{   r   r   c                    s&   g | ]\}}t | j|d f dqS )r   rG   )r   locr*  r   r!   r"   r   `  s    z2test_iter_rolling_on_dataframe.<locals>.<listcomp>r   )on)r   r   r,  r   rY   rZ   )r^   r&   r-  r!   r   r"   test_iter_rolling_on_dataframe9  s   
r4  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   )r   )r   idxr   r!   r"   r   k  r+  z<test_iter_rolling_on_dataframe_unordered.<locals>.<listcomp>r   r   )r   listr   r   r,  rY   rZ   )results	expectedsr]   r^   r!   r   r"   (test_iter_rolling_on_dataframe_unorderedg  s    r;  z ser,expected,window, min_periodsint64rm   c                 C   r'  )Nc                 S   r(  r)  r
   r*  r!   r!   r"   r     r+  z,test_iter_rolling_series.<locals>.<listcomp>r   )r,  r   rY   r   )r   r^   r&   r   r-  r!   r!   r"   test_iter_rolling_seriesp  s   #r>  zexpected,expected_index,windowr   rD   rE   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   rD   r0  rG   c                 S   r(  r)  r=  )r   r"  r7  r!   r!   r"   r     s    z.test_iter_rolling_datetime.<locals>.<listcomp>)r
   r-   r   r,  r   rY   r   )r^   expected_indexr&   r   r-  r!   r!   r"   test_iter_rolling_datetime  s   (r@  zgrouping,_indexlevel)r   r   rB  r   r   rC  rC  r   byX)rB  )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   r0   r   )argsr   scaler!   r!   r"   
scaled_sum  s   z4test_rolling_positional_argument.<locals>.scaled_sumrE  r$   )r   r   r   r   r   r   )rT   r   rU   r   r6   rD  ignore)r   errorsr   )r   )r`   rF  r!   )r   r-   r   r   r   rb   rY   rZ   )grouping_indexr`   rH  r    r^   r]   r!   r!   r"    test_rolling_positional_argument  s   "rM  addrT   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 )Nr{   gVUUUUU%C       z19700101 09:00:00z19700101 09:00:03z19700101 09:00:06rG   r   r   rx   r;   r~   r   SrE   gUUUUUU%CgqqCgqqCrT   )r   r   resampleffillr   rh   r   r   r   rY   rZ   )rN  r    r]   datesr^   r!   r!   r"   *test_rolling_numerical_accuracy_kahan_mean  s0   	rT  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ZrT   rT   rT   rT   r   r   r;   gsh|??rU  rT   r  )r   r   r   r
   r   r   rY   r   r  r!   r!   r"   )test_rolling_numerical_accuracy_kahan_sum  s   rV  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   60sr   endrF   r   r   rG   )r   rX   r   r   r  randr   r   r   rh   rY   rZ   )r@   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?rO  rO  z
1999-02-03z
1999-02-06r   r   )r
   r   r   rh   rY   r   )r   r]   r!   r!   r"   ,test_rolling_numerical_accuracy_small_values%  s   r\  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-01rB   rD   rE   )r   r@   rn   gТr   r$   gk/      @      @      @rG   )
r   r
   r-   r   rq   r   rh   r   rY   r   )rS  dsr]   r^   r!   r!   r"   (test_rolling_numerical_too_large_numbers/  s&   ra  )r   rS   ))r   r6   )ri   rU   )rj   rU   )rh   rU   )r   rU   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  r6  r2   )r@   r   rU   r2   r&   r   r   rG   )r   rP   r   rY   rZ   )r   rS   r    r]   r^   r!   r!   r"    test_rolling_mixed_dtypes_axis_1G  s   rd  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   rc  )rT   rU   rV   r_  r_  r_  r_  )rT   rU   rV   rV   rV   rV   rV   )rT   r6   r   r   r^  r^  r_  )r   r   r   r   r   rY   rZ   r  r!   r!   r"   test_rolling_axis_one_with_nanW  s   re  rS   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   r6  rc  rU   r6   )r   r   r   rY   rZ   )rS   r    r]   r^   r!   r!   r"   &test_rolling_axis_1_non_numeric_dtypesk  s
   rg  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   r1  rU   r]  g      &@      *@r   )r   r&   r   )r   r&   )r   r   r   r   r   rY   rZ   r  )r    r^   r]   r!   r!   r"   test_rolling_on_df_transposedx  s   ri  )r@   r&   z2020-01-01 08:00z2020-01-01 08:08r  rX  2Tz2020-01-01 12:0030T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$   rl   r   r   rG   rx   r   )r
   rP   r   rY   r   )r@   r&   r   r"  r`  r]   r^   r!   r!   r"   test_rolling_period_index  s   rn  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   rY   r   )r1   objr]   r^   r!   r!   r"   test_rolling_sem  s   
rq  zGH 38921)reason)r   third_valuer"  rk   )|Fr   r   r   r   r   rg   ) >gfoCr   Pp?rv  绹۞?r   )rt  r   r   r   r   r   )ru  rv  r   rv  rw  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
   rP   r   r   r   rY   r   )r   rs  r"  r`  r]   r^   r!   r!   r"   !test_rolling_var_numerical_issues  s
   ry  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      rU   g6<AԿg     ?g?)r   r{   z20130101 09:00:00r   r{   z20130102 09:00:02z20130103 09:00:03z20130105 09:00:05z20130106 09:00:06rG   )r   r   r   r   r;   )r   r   rl   r   r;   3dr%   )
r   r   r   r	   from_tuplesr   r   rO   rY   rZ   )expr    resr!   r!   r"   ,test_timeoffset_as_window_parameter_for_corr  sb   









+r~  )rk   r   rh   skewkurtrj   ri   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"  irB   r   Nr,   rG   r$   r%   r   g-q=)	r   r   rJ   r@   rP   r   absr"  ri   )rf   r    
df_reverse
increasing
decreasingr!   r!   r"   test_rolling_decreasing_indices  s
   *<r  )rU   rV   r]  rV   )rT   rU   rV   r]  )rU   rV   r^  r]  )rT   rU   r6   rV   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.
    r}   r   r   rE   rG   Nr,   Tr   )r   r-   r   r   rY   r   )r&   rv   r^   r1   r@   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)rU   rU   rU   rU   3ns)r6   rV   rV   r6   c                 C   sR   t dddd}|g d|td}|||td}|j| |dd }t|| d S )	Nr}   r   r  rE   )r   r   r   r   r   Tr   )r   r   r   r   rY   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@rh   g     5@r^  g`UU"@rh  g     1@g      >@g     K@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 )Nrm   r   r   )r   emptyr<  r-   use_expandingwindow_size)	self
num_valuesr   r)   rv   rI   r   rY  r   r!   r!   r"   get_window_bounds  s   
zCtest_rolling_non_monotonic.<locals>.CustomIndexer.get_window_boundsN)__name__
__module____qualname__r  r!   r!   r!   r"   CustomIndexer  s    r  r   )r  r  N)	r   r   rJ   r   r   rP   r   rY   rZ   )rf   r^   r  r    r  indexerr]   r!   r!   r"   test_rolling_non_monotonic>  s   >r  r|   z
2001-01-01)rF   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/  rG   rT   r   r   r   )	r
   copyr   r   rO   r   r   rY   assert_almost_equal)r@   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g2r|   )groupr   r  F)dropnar   r   r   )rT   r6   rV   rU   r   )r   r   r   r   r   )r   r   r;   r   r   r   rG   )	r   r   r   r   r   rh   r	   rY   rZ   )r   r    r]   r^   r!   r!   r"   !test_groupby_rolling_nan_included  s   
r  c                 C   s`   t tjd}| }t|d|  }t|| |d }t|d|  }t|| d S )NrB   r;   iP  )	r
   r   r  rZ  r  rP   r   rY   r   )rf   r   ser_copyr^   r]   r!   r!   r"   *test_rolling_skew_kurt_numerical_stability  s   r  )rf   r"  )r6   g+X?rT   gJ_9?)r   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;   rx  )rf   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   r7   )rf   )r.   r/   r0   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  rX  r   r   rG   rx   r   r   r,   z-1dr;   )	r   r-   r   r   r   r   rY   r   r   )r&   r1   r7  rp  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   rk   r   r   rY   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   rg   r   r   rY   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=?rG   r$   r   r   )r   r   ra   r8  r-   r   r   r   rh   rY   rZ   )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  rT   )r   r   ra   r   r   rY   rZ   r  r!   r!   r"   2test_rolling_sum_all_nan_window_floating_artifacts0  s   r  c                  C   s6   t td} | d }t tjg}t|| d S )Nr   r   )r
   r-   r   rj   r   r   rY   r   r   r!   r!   r"   test_rolling_zero_window8  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$   rB      r   rm   r   r   r   r   Fr   )r   r-   r   r   r   r   rY   rZ   )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   rB   
abcdefghijr   float16float32rq   int8int16int32uint8uint16uint32uint64)
r  r6  r2   defghr   jr   r   rc  r   r;   r$   rl   r   r   rm   )r   r   rJ   reshaper8  r   r   rj   r-   rY   rZ   r  r!   r!   r"   test_rolling_numeric_dtypesK  s:   









r  )r   r;   rB   r   )rj   ri   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  rU         ?      ?c                    s   | j  djd S )Nrf   r  r  r,   )rankr   )r   r  rf   r  r!   r"   <lambda>  s    ztest_rank.<locals>.<lambda>r  )r
   r   r  rZ  choicer   infr   rb   r  rY   r   )	r&   rf   r  r  r  lengthr   r^   r]   r!   r  r"   	test_rankn  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 )NrB   r$   20100101r   rE   r,   rG   )r  r   r  r   r   )   2   K   )r   r   r   r  rZ  r  r   
percentilerY   r  r"  r   )rowcolr7  r    df_quantilenp_percentiler!   r!   r"   #test_rolling_quantile_np_percentile  s   "r  r   )rT   r   g?r   r   interpolation)linearlowerhighernearestmidpointr   )rU   r6   rV   r   r]  r^  r_  )g       @rU   rV   r   r]  r6   r^  r_  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   	expandingr   r   isnan)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   rJ   r
   r.   r/   r0   r   r   r   )r   r   r3   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)rT   r   r   g?rU   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 strr7   )r
   r.   r/   r0   r   r   	TypeError)r   r3   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)rU   r6   rV   r   r]  r   r   r$   r   )r   rT   r;   r   r   )r
   r   rg   r   r   rY   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   rg   r   isfiniteallewmr5  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   r7   rH   r.   r/   r0   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,   rH   r	  r!   r!   r!   r"   test_step_not_positive_raises  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   rk   rY   r   rg   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   rh   r  r   r  rr   r]   r!   r!   r"   (test_rolling_mean_sum_floating_artifactsB     
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_artifactsM  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;   rb  r2   r   numeric_onlyr  r6  Tr   )r   r   objectr   rP   rM   r   r   r8  r   rY   rZ   )	r   r  kernelr    r   opr]   r   r^   r!   r!   r"   test_numeric_only_frameX  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;   rb  r2   r!   r   r   r  r  r6  )r   r   r  r   rP   r   rY   rZ   )r  r  r  r    argr   r  r]   r   df2arg2rolling2op2r^   r!   r!   r"    test_numeric_only_corr_cov_frameh  s   

r$  rn   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   rm   r   r   Rolling.  does not implement numeric_onlyr*   r  Tr   )r
   r   rP   r  r.   r/   rK   rM   r   r   r   rY   r   )
r   r  rn   r  r   r   r  r3   r]   r^   r!   r!   r"   test_numeric_only_series~  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%  rm   r!   r   r   r   r%  r&  r*   r  )r
   r   rP   r  r.   r/   rK   r   r   rY   r   )r  r  r  rn   r   r  r   r  r3   r]   ser2r!  r"  r#  r^   r!   r!   r"   !test_numeric_only_corr_cov_series  s    
"

r)  )r   r   numpyr   r.   pandas.compatr   r   pandas.errorsr   pandasr   r   r	   r
   r   r   r   r   r   r   pandas._testing_testingrY   pandas.api.indexersr   pandas.core.indexers.objectsr   pandas.core.windowr   pandas.tseries.offsetsr   r#   r4   markparametrizer   r:   rL   rR   r_   re   ru   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.  r4  r;  r>  r@  r{  rM  rT  rV  r[  r\  ra  rd  re  rg  ri  rn  rq  xfailry  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>   sh   0







-

	


" $"" $"
	


	
		
 !"#$+
	
 !"#$
Y
 
D



	
(
(
(
(00*
!

&




	
	=
(&4!
'#	**
/