o
    g/                     @   s  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	 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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$dd Z%ejd d!g d"g d#g d$g d%g d&gfd'g d(g d"g d)g d*g d&gfd+g d"g d)g d*g d&g d,gfd-g d(g d.g d/g d0g d,gfgd1d2 Z&ejd3d4d+g d5fd4d!g d5fd4d'g d5fd4d-g d5fd6d+g d7fd6d!g d5fd6d'g d8fd6d-g d9fgd:d; Z'd<d= Z(d>d? Z)ejd@d-d'gdAdB Z*ejdCdDdEgdFdG Z+ejdCdDdEgdHdI Z,ejdJdKdLgejdMdDd+g dNfdDd!g dOfdDd-ej-d d dPdddQdRdSdTg
fdDd'ej-d d d dPdddQdRdSg
fdEd+g dUfdEd!g dUfdEd-ej-d dPdddQdRdSdTdVg
fdEd'ej-d dPdddQdRdSdTdVg
fgdWdX Z.dYdZ Z/ejdMdDd+ej-d d dPdddQdRej-ej-g
fdDd!ej-d d d dPdddQdRej-g
fdDd-ej-ej-d dPdddQdRej-ej-g
fdDd'ej-ej-d d dPdddQdRej-g
fdEd+ej-dPdddQdRdSdSej-ej-g
fdEd!ej-dPdddQdRdSdSdSej-g
fdEd-ej-ej-dPdddQdRdSej-ej-g
fdEd'ej-ej-dPdddQdRdSdSej-g
fgd[d\ Z0ejd]d+g d^fd!g d_fd-ej-d d`dadbdcdddedfdgg
fd'ej-d d`dPdddQdRdSdTg
fgdhdi Z1ejdjdkdPgdldm Z2dndo Z3dpdq Z4drds Z5dtdu Z6dvdw Z7dxdy Z8dzd{ Z9d|d} Z:ejd~ddgdT dgd  dg dgd  dgd  dgdR  dgdR  dgd  dgd  dgd  dgd  dgd  dgd  dgdS  dg dgdS  dgd  dgd  dgd  dgdR  dgd  dgd  dgdT  dgdQ  dgdQ  dgd  dgd  dgd  dgdR  dgd  dgd  dgd  dgdT  dg dgd  dgd  dgd  fdej-gd dgd  dgd  dg dgd  dgd  dgdR  dgdR  dgd  dgd  dgd  dgd  dgd  dgd  dgdS  dg dgdS  dgd  dgd  dgd  dgdR  dgd  dgd  dgdT  dgdQ  dgdQ  dgd  dgd  dgd  dgdR  dgd  dgd  dgd  dgdT  dg dgd  dgd  fgdd Z;dd Z<dd Z=dd Z>ejdeg dg dddPgdQgdd gfdPdgdQdRgdd dPgfg dg ddg dfgddfeg dg dddPgdQgdd gfdPdgdQdRgdd dPgfddgdRdSgddPdgfgddPfeg dg dddPgdQgdd gfdPdgdQdRgdd dPgfddgdRdSgddPdgfgddfeg dg dddPgdQgdd gfdgdRgddPgfdgdSgddgfgdPdPfeg dg dddPgdQgdd gfdgdRgddPgfdgdSgddgfgdPd fedPgdQgdg ddfedPgdQgdg ddPfe i g fgddfedPej-dgej-dRdSgddgej-gdd gfdPej-gej-dRgdd dPgfdPej-dgej-dRdSgdg dfgddfg	dd Z?ejddPgdQgdd gfdPdgdQdRgdd dPgfddgdRdSgddPdgfgdfdPgdQgdd gfdPdgdQdRgdd dPgfg dg ddg dfgdfdPgdQgdd gfdgdRgddPgfdgdSgddgfgdfgdd Z@dd ZAejdeg ddPgd gfdPdgd dPgfg dg dfgddfeg ddPgd gfdPdgd dPgfg dg dfgddPfeg ddPgd gfdPdgd dPgfddgdPdgfgddPfeg ddPgd gfdPdgd dPgfddgdPdgfgddfeg ddPgd gfdgdPgfdgdgfgdPd feg ddPgd gfdgdPgfdgdgfgdPdPfedPdgdPgd gfdPdgd dPgfgdd feg ddg ddPfgdd ZBejdd gdPgdgdgdQggeddPddeddPddeddPddeddPddeddPddgdfd gd dPgdPdgddgddQggeddPddeddddeddddeddddeddddgdfd gd dPgg dg dg dgeddPddeddddeddddeddddeddddgdfgdd ZCejddd iejDg dŢddgdƍfddiejDg dɢddgdƍfgdd˄ ZEejdddgddτ ZFddф ZGddӄ ZHddՄ ZIddׄ ZJejdg d٢ddۄ ZKdd݄ ZLejddededgdd ZMdd ZNejdedddddfedddddfgejddDej-d d dPdddQdRdSg	fdEej-d dPdddQdRdSdTg	fdej-d dPddRdTdddg	fgdd ZOdd ZPejjQe oe  ddejdddPg dfddPg dfddg dfddg dfgdd  ZRdd ZSejdg ddd ZTejddeUddeUdd	d
dddgfdeUddgeUddddddgfdeUddeUddddddgfdeUddeUddddddgfdeUddeUdd d!d"d#d$gfgd%d& ZVejdg d'dfed(ddRd)dfgd*d+ ZWd,d- ZXejdddgd.d/ ZYejd0dg d1fdg d2fgd3d4 ZZd5d6 Z[ejddPd7gd8d9 Z\d:d; Z]d<d= Z^ejd>dPg d?fdg d@fgdAdB Z_dCdD Z`dEdF ZadS (G      )datetime	timedeltaN)is_platform_armis_platform_mac)UnsupportedFunctionCall)
	DataFrameDatetimeIndex
MultiIndexSeries	Timedelta	Timestamp
date_rangeperiod_rangeto_datetimeto_timedelta)BaseIndexer)Rollingc                  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   ^/home/ubuntu/cloudmapper/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   

"r3   w       @foor   c                 C   s   | t dj}d}tjt|d ||d W d    n1 s w   Y  d}tjt|d |d|d W d    n1 s?w   Y  d}tjt|d |dd	|d
 W d    d S 1 s`w   Y  d S )Nr"   zWwindow must be an integer|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+   )r0   r4   r1   r2   r   r   r    test_invalid_constructor<   s   "r7   r$      )daysc                 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 )N
   valuez
2015-12-24Dperiodsfreqindex              ?      @      ;@r8   r#   3D)	r   r   aranger   appendr   r   tmassert_frame_equal)r$   nr   expected_dataresultexpectedr   r   r    &test_constructor_with_timedelta_windowR   s   rO   rF   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 )Nr:   r;   z
2017-08-08r<   r=   r@   rC   rD   rE   r8   r   r%   )raw)r   r   rG   r   rH   NaNr   r   applyrI   rJ   )r$   rP   rK   r   rN   result_roll_sumresult_roll_genericr   r   r    0test_constructor_timedelta_window_and_minperiodsf   s   rU   method)stdmeanr   maxminvarc                 C   s   t tg ddd}d}tjt|d t|| ddd W d    n1 s'w   Y  tjt|d t|| tjd W d    d S 1 sHw   Y  d S )	N)r   r      r   r#   z2numpy operations are not valid with window objectsr(   r   r8   dtype)r   r
   r-   r.   r   getattrr   float64)rV   rr2   r   r   r    test_numpy_compatx   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   r8   r   2020r"   r>   r@   r   r   closedr   2DT)drop)r   r   r_   r   reset_indexrI   rJ   )rh   arithmetic_win_operators	func_namedf_fixeddf_timerM   rN   r   r   r    test_closed_fixed   s   rp   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 )Nrc   )rB   rC   r5   rD         @re   r"   rf   r@   c                    s"   g | ]}t  d  j|  qS )rc   )r_   iloc).0sro   rm   r   r    
<listcomp>   s   " z9test_datetimelike_centered_selections.<locals>.<listcomp>semddofr   ri   r   T)rh   r   r'   F)check_dtyper   )r   r   r_   r   rI   rJ   )rh   window_selectionsrl   rN   kwargsrM   r   ry   r    %test_datetimelike_centered_selections   s$   1

r   zwindow,closed,expected3s)rD   rD   rD   2s)rD   r5   r5   )rC   rD   rD   rC   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   r@   T)rh   r'   )r   r   r   rI   assert_equal)r$   rh   rN   r0   rA   r   rM   r   r   r    ,test_datetimelike_centered_offset_covers_all   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 )Nr8   
2020-01-01r<   startr?   r>   r@   ri   r   Tr&   )      ?      ?r   )r
   r,   r   r   rX   rA   rI   assert_series_equalrx   rM   rN   r   r   r    !test_even_number_window_alignment   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}|jt|dd| d}| }t|| d S )N)r   r   r   r   r   r   r   r   
binary_colr   rZ   r   r@   )UUUUUU?r   皙?r   @m?r   g._x%I?r   r   r   r   r   r   )columnsrA   rr   r   )r$   rh   r   r'   )	r   r   lenr   r   r   rX   rI   rJ   )r'   datar   rL   rN   r   rM   r   r   r    test_closed_fixed_binary_col  s    
r   rh   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"   2000ri   r=   r   rA   1Drh   r@   )
r
   r   rG   r   r   r_   r   rA   rI   r   )rh   rl   rm   serrollrM   rN   r   r   r    test_closed_empty#  s   r   funcrZ   rY   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   rf   r   10Drr   r   r@   )	r
   r   r_   r   rI   r   r   r   rA   )r   r   rM   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   )r8   r   r   rc   r   r   r8   rf   r   rc   F)sortr   r   rr   r   )rc   N)arraysnames)r   rA   name)r   r   r_   groupbyr   r	   from_arraysrA   r
   r   r   rI   r   )r   r   rM   exp_idxrN   r   r   r    test_closed_one_entry_groupby7  s   
r   input_dtypeintfloatzfunc,closed,expected)
rB   r   r   r   r   r8   r   r"   r\      )
rB   r   r   r   r   r   r8   r   r"   r\   r   r   r"   r\   r   )
rB   r   r   r8   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 )Nr:   r   rf   r   rF   r   r@   )
r
   r   rG   astyper   r_   r   rA   rI   r   )r   r   rh   rN   r   rM   r   r   r    test_closed_min_max_datetimeF  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 )Nr:   r   rf   r   r   r"   r@   rF   rr   r   r   r   r8   r   r\   )r
   r   rG   r   rj   rA   r   rZ   r   rI   r   )r   rM   rN   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 )
Nr:   r   rf   r   rF   r   )r   rh   r@   )
r
   r   rG   r   r   rA   r_   r   rI   r   )r   rh   rN   r   rM   r   r   r    test_closed_min_max_minpk  s
   r   zclosed,expected)
r   r   r   r   r8   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 )	Nr:   r   rf   r   rF   r   r@   r   )
r
   r   rG   r   r   rA   medianrI   r   quantile)rh   rN   r   r   rM   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 )Nr@   )r   r   r   rI   rJ   r   )r   rN   rM   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 )Nr8   r   g?)	r
   r   r   rG   r   r   rI   r   r   )rN   r   rM   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   rB   )r
   r   r   r   r   rI   r   xrM   rN   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-07r@   2dr   r   rB   )
r
   r   r   r   r   r   r   rA   rI   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   )Cr<   E12r   )r:   r\   r   r8   )Nr   r   )r	   from_productr   r   onesr   covrI   assert_index_equalr   rA   r   )colsr   rM   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)r:      r   c                 S   s$   i | ]}|t jgd  dgd  qS )r   rD   r   )r   r   rw   ir   r   r    
<dictcomp>  s   $ z)test_rolling_axis_sum.<locals>.<dictcomp>r   r   rD      r:   r8   axis)
r   r   r   _get_axis_numberr,   r   r   r   rI   rJ   
axis_framer   r   rN   rM   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 )
Nr8   )r   yr   rA   r   )rC   rC   rC   )r5   r5   r5   r   r   )r   r   )r   r,   r   r   countrI   rJ   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   r8   r"   F)writer   r   )	r   arrayr   setflagsr
   r   rX   rI   r   )arrrM   rN   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-03r<   )r?   tzr   ri   r   c                 S   r   )rC   r   r   r   r   r   r    r   	      
r   )r>   r?   r   c                 S   r   )r5   r   r   r   r   r   r    r     r   z	2019-8-02z	2019-8-03)r   r   Tr   r   rI   rJ   )r   tz_naive_fixturer   r   rM   rN   r   r   r    test_rolling_datetime  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@r:   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  r<   )r?   i  )seedr   d   )highsize)DateColmetricr   T)inplace21Dr   rr   )r$   r   rh   r'   r   rY   )rA   r   )r   nowr   r   r   randomRandomStaterandintr   r   	set_indexr   aggrename
_with_freqr
   rI   r   )
r'   rL   
date_todayr9   nprr   r   rM   rA   rN   r   r   r    test_rolling_window_as_string  s   [

r  c                  C   sJ   t g ddgd} | d jdddd }tg ddd	}t|| d S )
N)r   r   r   r   r   ar   r8   Tr   )r'   r   )rC   r5   r5   r5   rC   r   )r   r   rY   r
   rI   r   r   rM   rN   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"   r8   r   rD   )r,   r   r   r   r   rI   r   )r0   rM   rN   r   r   r    #test_rolling_count_with_min_periods  s   r  c                 C   st   dddt jdddg}g d}tjtdd	 | |d }W d    n1 s)w   Y  | |}t|| d S )
Nr   r   r8   r   r"   r\   )rC   r5   rD   r5   r5   r5   rD   F)check_stacklevel)r   r   rI   assert_produces_warningFutureWarningr   r   r   )r0   valuesexpected_countsrM   rN   r   r   r    7test_rolling_count_default_min_periods_with_null_values  s   r  zdf,expected,window,min_periods)r   r   r8   )r   r"   r\   r   r   r   r   rC   c                 C   <   dd |D }t || j||dD ]
\}}t|| qd S )Nc                 S      g | ]
\}}t ||d qS r@   )r   rw   r  rA   r   r   r    rz         z/test_iter_rolling_dataframe.<locals>.<listcomp>r   )zipr   rI   rJ   )r   rN   r$   r   actualr   r   r    test_iter_rolling_dataframe  s   Fr  zexpected,windowri   r   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   r8   r   r"   )r   r"   r\   r   r   z
2016-01-01r"   r<   r   r>   r?   rc   r   r   c                    s&   g | ]\}}t | j|d f dqS )r   r@   )r   locr  r   r   r    rz     s    z2test_iter_rolling_on_dataframe.<locals>.<listcomp>r   )on)r   r   r  r   rI   rJ   )rN   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   )rv   )rw   idxr   r   r    rz     r  z<test_iter_rolling_on_dataframe_unordered.<locals>.<listcomp>r   r   )r   listr   r   r  rI   rJ   )results	expectedsrM   rN   r   r   r    (test_iter_rolling_on_dataframe_unordered  s    r#  z ser,expected,window, min_periodsint64r]   c                 C   r  )Nc                 S   r  r  r
   r  r   r   r    rz   G  r  z,test_iter_rolling_series.<locals>.<listcomp>r   )r  r   rI   r   )r   rN   r$   r   r  r   r   r    test_iter_rolling_series$  s   #r&  zexpected,expected_index,windowr   r<   r=   
2020-01-02
2020-01-03z
2020-01-04z
2020-01-05)r   r8   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   r<   r  r@   c                 S   r  r  r%  )rw   r  r  r   r   r    rz   y  s    z.test_iter_rolling_datetime.<locals>.<listcomp>)r
   r,   r   r  r   rI   r   )rN   expected_indexr$   r   r  r   r   r    test_iter_rolling_datetimeO  s   (r*  zgrouping,_indexlevel)r   r   r,  r   r   r-  r-  r   byX)r,  )r   r   )r   r   )r8   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   )rB   r   rC   r   r5   r.  ignore)r   errorsr   )r   )rP   r0  r   )r   r,   rj   r   r   rR   rI   rJ   )grouping_indexrP   r2  r   rN   rM   r   r   r     test_rolling_positional_argument  s   "r7  addrB   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:06r@   r   r   rr   r8   rg   r   Sr=   gUUUUUU%CgqqCgqqCrB   )r   r   resampleffillr   rX   r   r   r   rI   rJ   )r8  r   rM   datesrN   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ZrB   rB   rB   rB   r   r   r8   gsh|??r?  rB   r  )r   r   r   r
   r   r   rI   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'  60sr   endr?   r(  r   r@   )r   rH   r   r   r   randr   r   r   rX   rI   rJ   )rA   r   r   rM   r   r   r    $test_rolling_numerical_accuracy_jump  s   rE  c                  C   s4   t g dtddd} | d }t||  d S )N)g(@S ?ga2U0*3?r9  r9  z
1999-02-03z
1999-02-06r   r   )r
   r   r   rX   rI   r   )rx   rM   r   r   r    ,test_rolling_numerical_accuracy_small_values  s   rF  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-01r:   r<   r=   )r   rA   r^   gТr   r"   gk/      @      @      @r@   )
r   r
   r,   r   r`   r   rX   r   rI   r   )r=  dsrM   rN   r   r   r    (test_rolling_numerical_too_large_numbers  s&   rK  )r   r;   ))r   r5   )rY   rC   )rZ   rC   )rX   rC   )r   rC   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   )rA   r   rC   r1   r$   r   r   r@   )r   r_   r   rI   rJ   )r   r;   r   rM   rN   r   r   r     test_rolling_mixed_dtypes_axis_1  s   rM  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   rL  )rB   rC   rD   rI  rI  rI  rI  )rB   rC   rD   rD   rD   rD   rD   )rB   r5   ru   ru   rH  rH  rI  )r   r   r   r   r   rI   rJ   r  r   r   r    test_rolling_axis_one_with_nan  s   rN  r;   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  rL  rC   r5   )r   r   r   rI   rJ   )r;   r   rM   rN   r   r   r    &test_rolling_axis_1_non_numeric_dtypes  s
   rP  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  rC   rG  g      &@      *@r   )r   r$   r   )r   r$   )r   r   r   r   r   rI   rJ   r   )r   rN   rM   r   r   r    test_rolling_on_df_transposed,  s   rR  )rA   r$   z2020-01-01 08:00z2020-01-01 08:08r   rB  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   r8   r   r"   r\   r   r   r@   rr   r   )r
   r_   r   rI   r   )rA   r$   r   r  rJ  rM   rN   r   r   r    test_rolling_period_index7  s   rW  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   rI   r   )r0   objrM   rN   r   r   r    test_rolling_semT  s   
rZ  zGH 38921)reason)r   third_valuer  r[   )|Fr   r   r   r   r   rW   ) >gfoCr   Pp?r_  绹۞?r   )r]  r   r   r   r   r   )r^  r_  r   r_  r`  r   c                 C   sH   t dd|ddddg}t|d|  }t tjg| }t|| d S )Nl   ;r   r   r8   r
   r_   r   r   r   rI   r   )r   r\  r  rJ  rM   rN   r   r   r    !test_rolling_var_numerical_issues^  s   rb  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      rC   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:06r@   )r   r   r   r   r8   )r   r   r\   r   r8   3dr#   )
r   r   r   r	   from_tuplesr   r   corrrI   rJ   )expr   resr   r   r    ,test_timeoffset_as_window_parameter_for_corrp  sb   









+rh  )r[   r   rX   skewkurtrZ   rY   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  ir:   r   Nr*   r@   r"   r#   r   g-q=)	r   r   rG   rA   r_   r   absr  rY   )rV   r   
df_reverse
increasing
decreasingr   r   r    test_rolling_decreasing_indices  s
   *<rp  zmethod,expectedr   g     E@g
a@g     E@gCݽW@g     f@g     s@rX   g     5@rH  g`UU"@rQ  g     1@g      >@g     K@g     a@ri  g/e?g8j{?gLM?g4`i?g
+TT?g?rj  g %bgOq&g zCen@gk=Cпg~~׿gf`8gݿc                 C   sl   g d}t dtt|d i}G dd dt}|d|d}t|||  }t d|i}t|| dS )	z
    Make sure the (rare) branch of non-monotonic indices is covered by a test.

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

    GH 36933.
    )TFTFTTTTr  r   c                   @   s   e Zd Zdd ZdS )z1test_rolling_non_monotonic.<locals>.CustomIndexerc                 S   sl   t j|t jd}t j|t jd}t|D ]}| j| r&d||< |d ||< q|||< || j ||< q||fS )Nr]   r   r   )r   emptyr$  r,   use_expandingwindow_size)self
num_valuesr   r'   rh   r   rC  r   r   r   r    get_window_bounds  s   
zCtest_rolling_non_monotonic.<locals>.CustomIndexer.get_window_boundsN)__name__
__module____qualname__rv  r   r   r   r    CustomIndexer  s    rz  r   )rs  rr  N)	r   r   rG   r   r   r_   r   rI   rJ   )rV   rN   rr  r   rz  indexerrM   r   r   r    test_rolling_non_monotonic  s   >r|  rd   z
2001-01-01)r?   r>   c                 C   s^   t g d| d}| }d|dd< |||}t tjtjdddg| d}t|| d S )Nr  r@   rB   r   r   r   )r
   copyr   re  r   r   rI   assert_almost_equal)rA   r$   r   r   rM   rN   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g2rd   )groupr   r  F)dropnar   r   r   )rB   r5   rD   rC   ru   )r   r   r   r   r   )r   r   r8   r   r   r   r@   )	r   r   r   r   r   rX   r	   rI   rJ   )r   r   rM   rN   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 )Nr:   r8   iP  )	r
   r   r   rD  r}  r_   r   rI   r   )rV   r   ser_copyrN   rM   r   r   r    *test_rolling_skew_kurt_numerical_stability9  s   r  )rV   r  )r5   g+X?rB   gJ_9?)ru   gBʠg333333g >@c                 C   sB   t g d}t|d|  }t tjgd | }t|| d S )N)i- r   r   r   r8   r   i  r   r8   ra  )rV   r  rx   rM   rN   r   r   r    (test_rolling_skew_kurt_large_value_rangeE  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   )rV   )r-   r.   r/   r
   r,   r   r   r   r   r    test_invalid_methodT  s   "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  rB  r   r   r@   rr   r   r   r*   z-1dr8   )	r   r,   r   r   r   r   rI   r   rv   )r$   r0   r  rY  rM   rN   r   r   r    .test_rolling_descending_date_order_with_offsetY  s   r  c                  C   sD   t g d} | d }t tjtjddg}tj||ddd d S )N)r   r"   r"   r"   r8   gUUUUUU?r   V瞯<atolrtol)r
   r   r[   r   r   rI   r   r   r   r   r    ,test_rolling_var_floating_artifact_precisionh  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   rW   r   r   rI   r   r   r   r   r    test_rolling_std_small_valuesp  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?g?r  g=
ףp=?r@   r"   r   r   )r   r   rQ   r   r,   r   rv   r   rX   rI   rJ   )r   
exp_valuesr   r  rN   rM   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  r8   r   r   )r  g{Gz?gQ?g9v?r  rB   )r   r   rQ   r   r   rI   rJ   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   rZ   r   r   rI   r   r   r   r   r    test_rolling_zero_window  s   r  )br   r   numpyr   r-   pandas.compatr   r   pandas.errorsr   pandasr   r   r	   r
   r   r   r   r   r   r   pandas._testing_testingrI   pandas.api.indexersr   pandas.core.windowr   r!   r3   markparametrizer   r7   rO   rU   rb   rp   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*  rd  r7  r>  r@  rE  rF  rK  rM  rN  rP  rR  rW  rZ  xfailrb  rh  rp  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!
'