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    e/var/www/html/visualizacion-main/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   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]   result_roll_sumresult_roll_genericr    r    r!   0test_constructor_timedelta_window_and_minperiods   s   rd   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   )ri   arithmetic_win_operators	func_namedf_fixeddf_timer\   r]   r    r    r!   test_closed_fixed   s   rr   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 )Nre   )rS   rT   r5   rU         @rg   r#   r=   rF   c                    s"   g | ]}t  d  j|  qS )re   )rO   iloc).0srq   ro   r    r!   
<listcomp>   s   " z9test_datetimelike_centered_selections.<locals>.<listcomp>semddofr   rj   r   T)ri   r   r(   Fcheck_dtyper    )r   r   rO   r   rX   rY   )ri   window_selectionsrn   r]   kwargsr\   r    r{   r!   %test_datetimelike_centered_selections   s$   1

r   zwindow,closed,expected3s)rU   rU   rU   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ri   r(   )r   r   r   rX   assert_equalr%   ri   r]   r0   r?   r   r\   r    r    r!   ,test_datetimelike_centered_offset_covers_all   s   r   rj   )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(   ri   )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   rj   r   Tr'   )      ?      ?r   )r
   r,   r   r   meanr?   rX   assert_series_equalrz   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   
binary_colr   minr   rF   )UUUUUU?r   皙?r   @m?r   g._x%I?r   r   r   r   r   r   )columnsr?   rt   r   )r%   ri   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   ri   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#   2000rj   rD   r   r?   1Dri   rF   )
r
   r   rI   r   r   rO   r   r?   rX   r   )ri   rn   ro   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   10Drt   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   re   r   r   r:   r=   r   re   F)sortr   r   rt   r   )re   N)arraysnames)r   r?   name)r   r   rO   groupbyr   r	   from_arraysr?   r
   r   r   rX   r   )r   r   r\   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   ri   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<   rt   r   r   r   r:   r   r   )r
   r   rI   r   rl   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   ri   rF   )r
   r   rI   r   r   r   r?   rO   r   rX   r   )r   ri   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)ri   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   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 )Nre   r   )CrC   E12r   )rA   r   r   r:   )Nr   r   )r	   from_productr   r   onesr   rM   rX   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   ry   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   setflagsr
   r   r   rX   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   :  s    z)test_rolling_datetime.<locals>.<dictcomp>z	2019-8-01z
2019-08-03rC   )rE   tzr   rj   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   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)inplace21Dr   rt   )r%   r   ri   r(   r  r   )r?   r   )r   nowr   r   r   randomRandomStaterandintr   r   	set_indexr   rL   rename
_with_freqr
   rX   r   )
r(   r[   
date_todayr;   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   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   rT   c                 C   <   dd |D }t || j||dD ]
\}}t|| qd S )Nc                 S      g | ]
\}}t ||d qS rF   )r   ry   r  r?   r    r    r!   r|         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   re   r   r   c                    s&   g | ]\}}t | j|d f dqS )r   rF   )r   locr  r   r    r!   r|   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   )rx   )ry   idxr   r    r!   r|   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!   r|   }  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   #r3  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  r2  )ry   r  r+  r    r    r!   r|     s    z.test_iter_rolling_datetime.<locals>.<listcomp>)r
   r,   r   r   r   rX   r   )r]   expected_indexr%   r   r!  r    r    r!   test_iter_rolling_datetime  s   (r5  zgrouping,_indexlevel)r   r   r7  r   r   r8  r8  r   byX)r7  )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   r9  ignore)r   errorsr   )r   )r_   r;  r    )r   r,   rl   r   r   ra   rX   rY   )grouping_indexr_   r=  r   r]   r\   r    r    r!    test_rolling_positional_argument  s   "rB  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 )Nre   gVUUUUU%C       z19700101 09:00:00z19700101 09:00:03z19700101 09:00:06rF   r   r   rt   r:   rh   r   SrD   gUUUUUU%CgqqCgqqCrS   )r   r   resampleffillr   r   r   r   r   rX   rY   )rC  r   r\   datesr]   r    r    r!   *test_rolling_numerical_accuracy_kahan_mean  s0   	rI  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|??rJ  rS   r  )r   r   r   r
   r   r   rX   r   r  r    r    r!   )test_rolling_numerical_accuracy_kahan_sum  s   rK  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   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   rP  c                  C   s4   t g dtddd} | d }t||  d S )N)g(@S ?ga2U0*3?rD  rD  z
1999-02-03z
1999-02-06r   r   )r
   r   r   r   rX   r   )rz   r\   r    r    r!   ,test_rolling_numerical_accuracy_small_values  s   rQ  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   )rH  dsr\   r]   r    r    r!   (test_rolling_numerical_too_large_numbers  s&   rW  )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   rZ  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   rY  )rS   rT   rU   rT  rT  rT  rT  )rS   rT   rU   rU   rU   rU   rU   )rS   r5   rw   rw   rS  rS  rT  )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*  rY  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   rR  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   r_  )r?   r%   z2020-01-01 08:00z2020-01-01 08:08r   rM  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#   r   r   r   rF   rt   r   )r
   rO   r   rX   r   )r?   r%   r   r  rV  r\   r]   r    r    r!   test_rolling_period_indexk  s   rd  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   rX   r   )r0   objr\   r]   r    r    r!   test_rolling_sem  s   
rg  zGH 38921)reason)r   third_valuer  var)|Fr   r   r   r   r   std) >gfoCr   Pp?rn  绹۞?r   )rk  r   r   r   r   r   )rm  rn  r   rn  ro  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   ri  r  rV  r\   r]   r    r    r!   !test_rolling_var_numerical_issues  s
   rq  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   re   z20130101 09:00:00r   re   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:   3dr$   )
r   r   r   r	   from_tuplesr   r   rN   rX   rY   )expr   resr    r    r!   ,test_timeoffset_as_window_parameter_for_corr  sb   









+rv  method)rj  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   )rw  r   
df_reverse
increasing
decreasingr    r    r!   test_rolling_decreasing_indices  s
   *<r  )rT   rU   rR  rU   )rS   rT   rU   rR  )rT   rU   rS  rR  )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.
    rg   r   r   rD   rF   Nr+   Tr   )r   r,   r   r   rX   r   )r%   ri   r]   r0   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)rT   rT   rT   rT   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 )	Nrg   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@rS  g`UU"@r^  g     1@g      >@g     K@g     a@rx  g/e?g8j{?gLM?g4`i?g
+TT?g?ry  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 )Nr1  r   r   )r   emptyr0  r,   use_expandingwindow_size)	self
num_valuesr   r(   ri   rH   r   rN  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   rI   r   r   rO   r   rX   rY   )rw  r]   r  r   r  indexerr\   r    r    r!   test_rolling_non_monotonic)  s   >r  rf   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
   copyrx   r   rN   r   r   rX   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g2rf   )groupr   r  F)dropnar   r   r   )rS   r5   rU   rT   rw   )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   
r  c                 C   s`   t tjd}| }t|d|  }t|| |d }t|d|  }t|| d S )NrA   r:   iP  )	r
   r   r  rO  r  rO   r   rX   r   )rw  r   ser_copyr]   r\   r    r    r!   *test_rolling_skew_kurt_numerical_stability  s   r  )rw  r  )r5   g+X?rS   gJ_9?)rw   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:   rp  )rw  r  rz   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   )rw  )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  rM  r   r   rF   rt   r   r   r+   z-1dr:   )	r   r,   r   r   r   r   rX   r   rx   )r%   r0   r+  rf  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   rj  r   r   rX   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   rl  r   r   rX   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=?rF   r#   r   r   )r   r   r`   r,  r,   r   rx   r   r   rX   rY   )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  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   r1  r   r   r   r   Fr   )r   r,   r   r   r   r   rX   rY   )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   
abcdefghijr   float16float32rU  int8int16int32uint8uint16uint32uint64)
r  r*  r1   defghr   jr   r   rY  r   r:   r#   r   r   r   r1  )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   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rw  r  r  r+   )rankrx   )r   r  rw  r  r    r!   <lambda>j  s    ztest_rank.<locals>.<lambda>r  )r
   r   r  rO  choicer   infr   ra   r  rX   r   )	r%   rw  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#   20100101r   rD   r+   rF   )r  r   r  r   r   )   2   K   )r   r   r   r  rO  r  r   
percentilerX   r  r  r   )rowcolr+  r   df_quantilenp_percentiler    r    r!   #test_rolling_quantile_np_percentileq  s   "r  r   )rS   r   g?r   r   interpolation)linearlowerhighernearestmidpointr   )rT   r5   rU   rw   rR  rS  rT  )g       @rT   rU   rw   rR  r5   rS  rT  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   	expandingrx   r   isnan)r   r  r   rz   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   rz   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   rw   rR  r   r   r#   r   )r~   rS   r:   r   r   )r
   r   rl  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   rl  r   isfiniteall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  r  r  c                   C   r  )Nzstep must be >= 0r)   r   r   r+   rG   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   rj  rX   r   rl  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_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   rx  r  ry  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:   rX  r1   r   numeric_onlyr  r*  Trk   )r   r   objectr   rO   rL   rm   r   r,  r   rX   rY   )	rn   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:   rX  r1   r    r   r   r  r  r*  )r   r   r  r   rO   r   rX   rY   )r  r  r  r   argr   r  r\   r   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   r1  r   r   Rolling.  does not implement numeric_onlyr)   r  Trk   )r
   r   rO   r  r-   r.   rJ   rL   rm   r   r   rX   r   )
rn   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  r1  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\   ser2r  r  r  r]   r    r    r!   !test_numeric_only_corr_cov_seriesz  s    
"

r#  )|r   r   numpyr   r-   pandas.compatr   r   r   pandasr   r   r	   r
   r   r   r   r   r   r   pandas._testing_testingrX   pandas.api.indexersr   pandas.core.indexers.objectsr   pandas.tseries.offsetsr   r"   r3   markparametrizer   r9   rK   rQ   r^   rd   rr   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  r5  rs  rB  rI  rK  rP  rQ  rW  rZ  r[  r]  r_  rd  rg  xfailrq  rv  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>   sd   0





-

	


" $"" $"



	

		
 !"#$+
	
 !"#$
Y
 
D


	
(
(
(
(00*
!
&




	
	=
(&4!
'#	**
/