U
    *if9                     @   s6  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dddddd gd!d" Z$d#d$ Z%ejd%d&d'd'd(d(d(gd'd'd'd(d(gd(d'd'd'd(gd(d(d'd'd'gd(d(d(d'd'ggfd)d'd(d(d(d(gd'd'd(d(d(gd(d'd'd(d(gd(d(d'd'd(gd(d(d(d'd'ggfd*d'd'd(d(d(gd(d'd'd(d(gd(d(d'd'd(gd(d(d(d'd'gd(d(d(d(d'ggfd+d'd(d(d(d(gd(d'd(d(d(gd(d(d'd(d(gd(d(d(d'd(gd(d(d(d(d'ggfgd,d- Z&ejd.d/d*d0d0d0gfd/d&d0d0d0gfd/d)d0d0d0gfd/d+d0d0d0gfd1d*d0ddgfd1d&d0d0d0gfd1d)d2d0d0gfd1d+d2ddgfgd3d4 Z'ejd.d5d*d6d6d6d6d6d6ddgfd5d)ddd6d6d6d6d6d6gfd5d&d6d6d7d7d7d7d6d6gfd5d+ddddddddgfgd8d9 Z(d:d; Z)d<d= Z*ejd>d+d)gd?d@ Z+ejdAddgdBdC Z,ejdAddgdDdE Z-ejdFdGdHgejdIdd*dJd d dKddd6dLd7dMg
fdd&dJd d d dKddd6dLd7g
fdd+ej.d d dKddd6dLd7dMg
fdd)ej.d d d dKddd6dLd7g
fdd*dJdKddd6dLd7dMdNdOg
fdd&dJdKddd6dLd7dMdNdOg
fdd+ej.d dKddd6dLd7dMdNg
fdd)ej.d dKddd6dLd7dMdNg
fgdPdQ Z/dRdS Z0ejdIdd*ej.d d dKddd6dLej.ej.g
fdd&ej.d d d dKddd6dLej.g
fdd+ej.ej.d dKddd6dLej.ej.g
fdd)ej.ej.d d dKddd6dLej.g
fdd*ej.dKddd6dLd7d7ej.ej.g
fdd&ej.dKddd6dLd7d7d7ej.g
fdd+ej.ej.dKddd6dLd7ej.ej.g
fdd)ej.ej.dKddd6dLd7d7ej.g
fgdTdU Z1ejdVd*d dWdKddd6dLd7dMdNg
fd&d dWdKdXdYdZd[d\d]d^g
fd+ej.d dWdXdYdZd[d\d]d^g
fd)ej.d dWdKddd6dLd7dMg
fgd_d` Z2ejdadbdKgdcdd Z3dedf Z4dgdh Z5didj Z6dkdl Z7dmdn Z8dodp Z9dqdr Z:dsdt Z;ejdud'dvgdM dwgdO  dxg dygdz  d{gd|  d}gdL  d~gdL  dgdz  dgd  dgd  dvgd  dgdO  dgdz  d{gd7  dg dgd7  dgdz  dgd  dgd  dgdL  dxgdz  dwgd  d}gdM  dgd6  dgd6  d{gdz  dgd  dgd  dgdL  dgd  dxgdz  d{gd  dgdM  dg d}gd  d{gd  dgd  fd(ej.gd dvgd|  dwgdO  dxg dygdz  d{gd|  d}gdL  d~gdL  dgdz  dgd  dgd  dvgd  dgdO  dgdz  d{gd7  dg dgd7  dgdz  dgd  dgd  dgdL  dxgdz  dwgd  d}gdM  dgd6  dgd6  d{gdz  dgd  dgd  dgdL  dgd  dxgdz  d{gd  dgdM  dg d}gd  d{gd  fgdd Z<dd Z=dd Z>dd Z?ejdedKddgd6dLd7gddKgd6gdd gfdKdgd6dLgdd dKgfdKddgd6dLd7gdd dKdgfgddfedKddgd6dLd7gddKgd6gdd gfdKdgd6dLgdd dKgfddgdLd7gddKdgfgddKfedKddgd6dLd7gddKgd6gdd gfdKdgd6dLgdd dKgfddgdLd7gddKdgfgddfedKddgd6dLd7gddKgd6gdd gfdgdLgddKgfdgd7gddgfgdKdKfedKddgd6dLd7gddKgd6gdd gfdgdLgddKgfdgd7gddgfgdKd fedKgd6gdg ddfedKgd6gdg ddKfe i g fgddfedKej.dgej.dLd7gdd2gej.gdd gfdKej.gej.dLgdd dKgfdKej.dgej.dLd7gdd dKdgfgddfg	dd Z@ejddKgd6gdd gfdKdgd6dLgdd dKgfddgdLd7gddKdgfgd5fdKgd6gdd gfdKdgd6dLgdd dKgfdKddgd6dLd7gdd dKdgfgdfdKgd6gdd gfdgdLgddKgfdgd7gddgfgdfgdd ZAdd ZBejdedKddgdKgd gfdKdgd dKgfdKddgd dKdgfgddfedKddgdKgd gfdKdgd dKgfdKddgd dKdgfgddKfedKddgdKgd gfdKdgd dKgfddgdKdgfgddKfedKddgdKgd gfdKdgd dKgfddgdKdgfgddfedKddgdKgd gfdgdKgfdgdgfgdKd fedKddgdKgd gfdgdKgfdgdgfgdKdKfedKdgdKgd gfdKdgd dKgfgdd feg ddg ddKfgdd ZCejdd gdKgdgdgd6ggeddKddeddKddeddKddeddKddeddKddgdfd gd dKgdKdgddgdd6ggeddKddeddddeddddeddddeddddgd5fd gd dKgd dKdgdKddgddd6ggeddKddeddddeddddeddddeddddgdfgdd ZDejddd iejEdddddgddgdfddiejEdddddgddgdfgdd ZFejddJdgdd ZGdd ZHddĄ ZIddƄ ZJddȄ ZKejddddddgddЄ ZLdd҄ ZMejddedՃedփgdd؄ ZNddڄ ZOejdeddddߍdfeddddߍdfgejddej.d d dKddd6dLd7g	fdej.d dKddd6dLd7dMg	fdej.d dKddLdMdOddg	fgdd ZPdd ZQejjRe oe  ddejdd dKdd dWdWdd gfddKdd dddd gfd dddWd dWdd gfddddd ddd gfgdd ZSdd ZTejdd ddddddgdd ZUejd.d1d*d2d0dd0gfd1d)dJd2d0dgfd1d&d2d0ddgfd1d+dJd2dd0gfd/d*d2d0ddgfd/d)d2d0ddgfd/d&d2d0ddgfd/d+d2d0ddgfgdd ZVejddd2d2d2d2gfddd0d0dgfgd d ZWejdd eXddeXdddddd	gfdeXdd^eXdd
ddddgfdeXddeXddddddgfdeXddeXddddddgfdeXddeXddddddgfgdd ZYejdd dKddd6gdfedddLd d5fgd!d" ZZd#d$ Z[ejdddgd%d& Z\ejd'ddd(dJd)gfdd*d+d,d-gfgd.d/ Z]d0d1 Z^ejddKd2gd3d4 Z_d5d6 Z`d7d8 Zaejd9dKd:d;d;d<d=gfdd>d>d?d@gfgdAdB ZbdCdD ZcdEdF ZddGdH ZedIdJ ZfejddKdddgejddddKgejdLd'd(gejdMd'd(gejdNdOdPdQgdRdS ZgdTdU ZhejdVdJdWdXdWdKgejdYdZd[d\d]d^gejd_d2dd0d*ddd`gdad2d0d*dddd`gdJej.dbej.dcgej.ej.ej.ej.gej.dWej.dddcdWgdWgej.dedfggdgdh Zididj Zjdkdl Zkdmdn Zldodp ZmdS (q      )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   S/home/mars/bis/venv/lib/python3.8/site-packages/pandas/tests/window/test_rolling.pytest_doc_string    s    r!   c              	   C   sr   | t dj}|d |dd |ddd |dddd |ddd	d d
}tjt|d |d W 5 Q R X 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    
r2   w       @foor   c              	   C   s   | t dj}dddg}tjt|d ||d W 5 Q R X d}tjt|d |d|d	 W 5 Q R X d
}tjt|d |dd|d W 5 Q R X 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.   )r/   r3   r0   r1   r   r   r    test_invalid_constructor<   s    r8   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              ?      @      ;@r9   r#   3D)	r   r   aranger   appendr   r   tmassert_frame_equal)r$   nr   expected_dataresultexpectedr   r   r    &test_constructor_with_timedelta_windowT   s    rP   rG   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>   rA   rD   rE   rF   r9   r   r%   )raw)r   r   rH   r   rI   NaNr   r   applyrJ   rK   )r$   rQ   rL   r   rO   Zresult_roll_sumZresult_roll_genericr   r   r    0test_constructor_timedelta_window_and_minperiodsh   s    rT   methodstdmeanr   maxminvarc              	   C   sv   t tdddgdd}d}tjt|d t|| ddd W 5 Q R X tjt|d t|| tjd	 W 5 Q R X d S )
Nr   r      r#   z2numpy operations are not valid with window objectsr(   r   r9   dtype)r   r
   r,   r-   r   getattrr   float64)rU   rr1   r   r   r    test_numpy_compatz   s    ra   c                 C   s   |}t ddddddgi}t ddddddgitddd	d
}t|jd| dd| }t|jd| dd| jdd}t|| d S )NAr   r   r   r9   r   2020r"   r?   rA   closedr   2DT)drop)r   r   r^   r   Zreset_indexrJ   rK   )rf   arithmetic_win_operators	func_nameZdf_fixeddf_timerN   rO   r   r   r    test_closed_fixed   s    "rl   zclosed, window_selectionsZbothTFleftrightZneitherc                    s   |t ddddddg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f |}tj||dd d S )Nrb   rC   rD   r4   rE         @rc   r"   rd   rA   c                    s"   g | ]}t  d  j|  qS )rb   )r^   iloc).0srk   rj   r   r    
<listcomp>   s     z9test_datetimelike_centered_selections.<locals>.<listcomp>semddofr   rg   r   T)rf   r   r'   FZcheck_dtype)r   r   r^   r   rJ   rK   )rf   Zwindow_selectionsri   rO   kwargsrN   r   rs   r    %test_datetimelike_centered_selections   s&    1 


ry   zwindow,closed,expected3srE   Z2srD   c                 C   sX   t dt dt dg}|dddg|d}|j| |dd }|||d}t|| d S )Nz20130101 09:00:01z20130101 09:00:02r   rA   Trf   r'   )r   r   r   rJ   assert_equalr$   rf   rO   r/   rB   r   rN   r   r   r    ,test_datetimelike_centered_offset_covers_all   s    r~   rg   r   r[   c              	   C   s^   t ddddddddg}|dgd |td}|||td}|j| d|d	 }t|| d S )
N
2020-01-01
2020-01-02
2020-01-03
2020-01-04r      rB   r]   T)r'   rf   )r   floatr   r   rJ   r|   r}   r   r   r    +test_datetimelike_nonunique_index_centering   s    r   c                  C   sR   t tdtddddd} | jdddd	 }t d
ddg| jd}t|| d S )Nr9   r   r=   startr@   r?   rA   rg   r   Tr&         ?      ?r   )r
   r+   r   r   rW   rB   rJ   assert_series_equalrr   rN   rO   r   r   r    !test_even_number_window_alignment   s    r   c                 C   s   ddddddddg}t d|itddt|dd}| rLdd	d
d	dd	dd	g}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 )Nr   r   Z
binary_colr   rY   r   rA   gUUUUUU?r   皙?g@m?g._x%I?)columnsrB   rm   )r$   rf   r   r'   )	r   r   lenr   r   r   rW   rJ   rK   )r'   datar   rM   rO   r   rN   r   r   r    test_closed_fixed_binary_col.  s     r   rf   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"   2000rg   r>   r   rB   1Drf   rA   )
r
   r   rH   r   r   r^   r   rB   rJ   r   )rf   ri   rj   serrollrN   rO   r   r   r    test_closed_emptyF  s    r   funcc                 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   rd   r   10Drm   r   rA   )	r
   r   r^   r   rJ   r   r   r   rB   )r   r   rN   r   r   r    test_closed_one_entryR  s    r   c                 C   s   t dddgdddgdtdddd}t|jdd	d
d jddd|  }tjdddg|jgdd}tt	j
dt	j
g|dd}t|| d S )Nr   r   r9   rb   r   r   rd   r   rb   F)sortr   r   rm   r   )rb   N)Zarraysnames)r   rB   name)r   r   r^   groupbyr   r	   Zfrom_arraysrB   r
   r   r   rJ   r   )r   r   rN   Zexp_idxrO   r   r   r    test_closed_one_entry_groupbyZ  s    
 r   input_dtypeintr   zfunc,closed,expectedrC   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   rd   r   rG   r   rA   )
r
   r   rH   astyper   r^   r   rB   rJ   r   )r   r   rf   rO   r   rN   r   r   r    test_closed_min_max_datetimei  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   rd   r   r   r"   rA   rG   rm   r   r   r   r9   r   r[   )r
   r   rH   r   rh   rB   r   rY   r   rJ   r   )r   rN   rO   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   rd   r   rG   r   )r   rf   rA   )
r
   r   rH   r   r   rB   r^   r   rJ   r   )r   rf   rO   r   rN   r   r   r    test_closed_min_max_minp  s
    r   zclosed,expectedr   r   g      @g      @g      @g      @g      @g      @c                 C   sd   t tdtdddd}|jd| d}t ||jd}| }t|| |	d}t|| d S )	Nr;   r   rd   r   rG   r   rA   r   )
r
   r   rH   r   r   rB   medianrJ   r   quantile)rf   rO   r   r   rN   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 )NrA   )r   r   r   rJ   rK   r   )r   rO   rN   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 )Nr9   r   皙?)	r
   r   r   rH   r   r   rJ   r   r   )rO   r   rN   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   rC   )r
   r   r   r   r   rJ   r   xrN   rO   r   r   r    test_missing_minp_zero  s    
r   c                  C   sT   t tjgd tddddg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-07rA   Z2dr   r   rC   )
r
   r   r   r   r   r   r   rB   rJ   r   r   r   r   r    test_missing_minp_zero_variable  s    
r   c                  C   sj   t jddgdddggddgd} ttd	| d
}|d }t|j	|j	 |j
jd ddgksftd S )Nrb   r   Cr=   E12r   )r;   r[   r   r9   )r	   Zfrom_productr   r   onesr   ZcovrJ   Zassert_index_equalr   rB   r   AssertionError)colsr   rN   r   r   r    test_multi_index_names  s
     r   c                 C   sz   t td}|| }|dkr8t 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   rE   r   )r   r   rq   ir   r   r    
<dictcomp>  s      z)test_rolling_axis_sum.<locals>.<dictcomp>r   r   rE      r;   r9   axis)
r   r   r   _get_axis_numberr+   r   r   r   rJ   rK   
axis_framer   r   rO   rN   r   r   r    test_rolling_axis_sum  s    
 r   c                 C   s   t tdtdd}|| }|dkrDt dddgdddgd}nt dddgdddgd}|jd| dd }t|| d S )	Nr9   )r   yr   rB   rD   r4   r   r   )r   r   )r   r+   r   r   countrJ   rK   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   r9   r"   F)writer   r   )	r   arrayr   Zsetflagsr
   r   rW   rJ   r   )ZarrrN   rO   r   r   r    test_readonly_array  s
    r   c              	   C   s   |}t dd tddd|dD }| dkrB|jjd| d	 j}n|jd| d	 }t d
d tddd|dD dd tddd|dD }t|| d S )Nc                 S   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   rg   r   c                 S   s   i | ]}|d gd qS )rD   r   r   r   r   r   r    r   ,  s    r   )r?   r@   r   c                 S   s   i | ]}|d gd qS )r4   r   r   r   r   r   r    r   0  s    z	2019-8-02z	2019-8-03)r   r   Tr   r   rJ   rK   )r   Ztz_naive_fixturer   r   rN   rO   r   r   r    test_rolling_datetime   s"    r   zcenter, expected_datag      V@g     @X@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@r   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)ZinplaceZ21Dr   rm   )r$   r   rf   r'   r   rX   )rB   r   )r   nowr   r   r   randomZRandomStaterandintr   r   Z	set_indexr   ZaggrenameZ
_with_freqr
   rJ   r   )
r'   rM   Z
date_todayr:   Znprr   r   rN   rB   rO   r   r   r    test_rolling_window_as_string9  s    [

r   c                  C   sV   t dddddgdgd} | d jdddd }td	d
d
d
d	gdd}t|| d S )Nr   r   r   ar   r9   T)r'   r   rD   r4   r   )r   r   rX   r
   rJ   r   r   rN   rO   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"   r9   r   rE   )r+   r   r   r   r   rJ   r|   )r/   rN   rO   r   r   r    #test_rolling_count_with_min_periods  s    r   c              	   C   sf   dddt jdddg}ddd	dddd	g}tt | |d }W 5 Q R X | |}t|| d S )
Nr   r   r9   r   r"   r[   rD   r4   rE   )r   r   rJ   Zassert_produces_warningFutureWarningr   r   r|   )r/   valuesZexpected_countsrN   rO   r   r   r    7test_rolling_count_default_min_periods_with_null_values  s    r   zdf,expected,window,min_periodsr   c                 C   s<   dd |D }t || j||dD ]\}}t|| q"d S )Nc                 S   s   g | ]\}}t ||d qS rA   )r   rq   r   rB   r   r   r    rt     s     z/test_iter_rolling_dataframe.<locals>.<listcomp>r   )zipr   rJ   rK   )r   rO   r$   r   actualr   r   r    test_iter_rolling_dataframe  s    F r   zexpected,windowr   c                    sn   t dddddgdddddgtd	dd
dd  fdd| D } t|  j|ddD ]\} }t||  qTd S )Nr   r   r9   r   r"   r[   r   r   z
2016-01-01r=   r   r?   r@   rb   r   r   c                    s&   g | ]\}}t | j|d f dqS )r   rA   )r   locr   r   r   r    rt   7  s    z2test_iter_rolling_on_dataframe.<locals>.<listcomp>r   )on)r   r   r   r   rJ   rK   )rO   r$   r   r   r   r    test_iter_rolling_on_dataframe  s    
r   c                     sr   t dddgdddgd t dd}  fdd	dgddgdgfD }t| |D ]\}}t|| qXd S )
Nr   r   r   r   r   r   br   c                    s   g | ]} j |d gf qS )r   )rp   )rq   idxr   r   r    rt   B  s     z<test_iter_rolling_on_dataframe_unordered.<locals>.<listcomp>)r   listr   r   r   rJ   rK   )results	expectedsrN   rO   r   r   r    (test_iter_rolling_on_dataframe_unordered>  s
     r   z ser,expected,window, min_periodsint64r\   c                 C   s<   dd |D }t || j||dD ]\}}t|| q"d S )Nc                 S   s   g | ]\}}t ||d qS r   r
   r   r   r   r    rt   j  s     z,test_iter_rolling_series.<locals>.<listcomp>r   )r   r   rJ   r   )r   rO   r$   r   r   r   r   r    test_iter_rolling_seriesG  s    # r  zexpected,expected_index,windowr   r=   r>   r   r   r   z
2020-01-05c                 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   rA   c                 S   s   g | ]\}}t ||d qS r   r  )rq   r   r   r   r   r    rt     s    z.test_iter_rolling_datetime.<locals>.<listcomp>)r
   r+   r   r   r   rJ   r   )rO   Zexpected_indexr$   r   r   r   r   r    test_iter_rolling_datetimer  s    (r  zgrouping,_indexlevel)r   r   )r   r   r   byX)r   r   )r   r   )r9   r   )r   r   c                 C   s   dd }t dtdidddddgd}t ddd	d
ddgi|d}d| krV|jddd}|jf | 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   rC   r   rD   r   r4   r  ignore)r   errors)r   )rQ   r  )r   r+   rh   r   r   rS   rJ   rK   )grouping_indexrQ   r	  r   rO   rN   r   r   r     test_rolling_positional_argument  s    r  addc              	   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 )Nrb   gVUUUUU%C       z19700101 09:00:00z19700101 09:00:03z19700101 09:00:06rA   r   rz   rm   r9   re   r   Sr>   gUUUUUU%CgqqCgqqCrC   )r   r   ZresampleZffillr   rW   r   r   r   rJ   rK   )r  r   rN   datesrO   r   r   r    *test_rolling_numerical_accuracy_kahan_mean  s0    	r  c                  C   sX   t ddddddgdgd} | d d }ttjtjddddgdd}t|| d S )	Ngrh|@g'1ZrC   r   r   r9   gsh|??r   )r   r   r   r
   r   r   rJ   r   r   r   r   r    )test_rolling_numerical_accuracy_kahan_sum  s    r  c                  C   s^   t ddddtdg} tjt| }td|i| d}|d	 }t
||dg  d S )Nr   r   Z60sr   endr@   r   r   rA   )r   rI   r   r   r   randr   r   r   rW   rJ   rK   )rB   r   r   rN   r   r   r    $test_rolling_numerical_accuracy_jump  s    r  c                  C   s8   t ddddgtddd} | d }t||  d S )Ng(@S ?ga2U0*3?r  z
1999-02-03z
1999-02-06r   r   )r
   r   r   rW   rJ   r   )rr   rN   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-01r;   r=   r>   )r   rB   r]   gТr   r"   gk/      @      @      @rA   )
r   r
   r+   r   r_   r   rW   r   rJ   r   )r  dsrN   rO   r   r   r    (test_rolling_numerical_too_large_numbers  s&    r  )r   r<   )r   r4   )rX   rD   )rY   rD   )rW   rD   )r   rD   c                 C   sl   t dddgdddg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   r0   )rB   r   rD   r$   r   r   )r   r   r0   rA   )r   r^   r   rJ   rK   )r   r<   r   rN   rO   r   r   r     test_rolling_mixed_dtypes_axis_1  s    r   c               
   C   s   t ddddtjtjtjgdddtjtjtjtjgdddtjdtjdgg} | jdddd }t dd	d
ddddgdd	d
d
d
d
d
gdddddddgg}t|| d S )Nr   r   r   r   r   r   r  rC   rD   rE   r  r4   ro   r  )r   r   r   r   r   rJ   rK   r   r   r   r    test_rolling_axis_one_with_nan.  s    r!  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   r  rD   r4   )r   r   r   rJ   rK   )r<   r   rN   rO   r   r   r    &test_rolling_axis_1_non_numeric_dtypesB  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   rD   r  g      &@      *@r   )r   r$   r   )r   r$   )r   r   r   r   r   rJ   rK   r   )r   rO   rN   r   r   r    test_rolling_on_df_transposedO  s    r%  )rB   r$   z2020-01-01 08:00z2020-01-01 08:08r   r  Z2Tz2020-01-01 12:00Z30TZ1h)r   r      c              
   C   sP   t ddddddddd	g	| d
}t|j|dd| }t || d
}t|| d S )Nr   r   r   r9   r   r"   r[   r   r   rA   rm   r   )r
   r^   r   rJ   r   )rB   r$   r   r   r  rN   rO   r   r   r    test_rolling_period_indexZ  s    r'  c                 C   s^   | dddg}|j ddd }t|tr8t|d j}ttjgdgd  }t	|| d S )Nr   r   r   r   g;f?)
r   ru   
isinstancer   r
   r   r   r   rJ   r   )r/   objrN   rO   r   r   r    test_rolling_semw  s    
r*  zGH 38921)reason)r   third_valuer   g|Fg >gfoCgPp?g۞?c                 C   sH   t dd|ddddg}t|d|  }t tjg| }t|| d S )Nl   ;r   r   r9   r
   r^   r   r   r   rJ   r   )r   r,  r   r  rN   rO   r   r   r    !test_rolling_var_numerical_issues  s    r.  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 dddddgdddddgdtdtdtdtdtdgd}|jdd }t	| | d S )Ng?g      rD   g6<AԿg     ?g?)r   rb   z20130101 09:00:00r   rb   z20130102 09:00:02z20130103 09:00:03z20130105 09:00:05z20130106 09:00:06rA   r   r   r   r   r9   r   r[   r   Z3dr#   )
r   r   r   r	   from_tuplesr   r   corrrJ   rK   )expr   resr   r   r    ,test_timeoffset_as_window_parameter_for_corr  sb    









+r3  ZskewZkurtc                 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 st	dS )zf
    Make sure that decreasing indices give the same results as increasing indices.

    GH 36933
    r   ir;   r   Nr*   rA   r"   r#   r   g-q=)
r   r   rH   rB   r^   r   absr   rX   r   )rU   r   Z
df_reverseZ
increasingZ
decreasingr   r   r    test_rolling_decreasing_indices  s
    *r6  r  r  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.
    rc   r   r   r>   rA   Nr*   Tr{   )r   r+   r   r   rJ   r|   )r$   rf   rO   r/   rB   Zdf_incZdf_decZexpected_incZexpected_decZ
result_incZ
result_decr   r   r    (test_rolling_decreasing_indices_centered  s    r7  zwindow,expected1nsZ3nsc                 C   sV   t dddd}|ddddg|td}|||td}|j| |dd }t|| d S )	Nrc   r   r8  r>   r   r   Tr{   )r   r   r   r   rJ   r|   r}   r   r   r    )test_rolling_center_nanosecond_resolution  s
    
r9  zmethod,expectedr   g     E@g
a@g     E@gCݽW@g     f@g     s@g     5@g`UU"@r$  g     1@g      >@g     K@g     a@g/e?g8j{?gLM?g4`i?g
+TT?g?g %bgOq&g zCen@gk=Cпg~~׿gf`8gݿc                 C   sx   ddddddddg}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.
    TFr   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| rLd||< |d ||< q(|||< || j ||< q(||fS )Nr\   r   r   )r   emptyr   r+   use_expandingwindow_size)selfZ
num_valuesr   r'   rf   r   r  r   r   r   r    get_window_boundsT  s    
zCtest_rolling_non_monotonic.<locals>.CustomIndexer.get_window_boundsN)__name__
__module____qualname__r>  r   r   r   r    CustomIndexerS  s   rB  r   )r<  r;  N)	r   r   rH   r   r   r^   r   rJ   rK   )rU   rO   r;  r   rB  ZindexerrN   r   r   r    test_rolling_non_monotonic  s    >rC  z
2001-01-01)r@   r?   c                 C   sd   t dddddg| d}| }d|dd< |||}t tjtjdddg| d}t|| d S )	Nr   r   r9   r   r"   rA   rC   r   )r
   copyr   r0  r   r   rJ   assert_almost_equal)rB   r$   r   r   rN   rO   r   r   r    !test_rolling_corr_timedelta_indexg  s    	rF  c               
   C   s   dt jddt jgdddddgd} t| }|jd	d
djddd }tddddddgitddt jgdddddggdddddgdddddggd	d gdd}t|| d S )Ng1g2r   r   r   r9   r   )groupr   rI  F)Zdropnar   r   rC   r4   rE   rD   ro   r   rA   )	r   r   r   r   r   rW   r	   rJ   rK   )r   r   rN   rO   r   r   r    !test_groupby_rolling_nan_includedx  s    "rJ  c                 C   s`   t tjd}| }t|d|  }t|| |d }t|d|  }t|| d S )Nr;   r9   iP  )	r
   r   r   r  rD  r^   r   rJ   r   )rU   r   Zser_copyrO   rN   r   r   r    *test_rolling_skew_kurt_numerical_stability  s    rK  )rU   r   g+X?gJ_9?ro   gBʠg333333g >@c                 C   sL   t dddddddg}t|d|  }t tjgd | }t|| d S )Ni- r   r   r9   r   i  r-  )rU   r   rr   rN   rO   r   r   r    (test_rolling_skew_kurt_large_value_range  s    	rL  c                	   C   s4   t jtdd ttdjddd W 5 Q R X d S )Nz!method must be 'table' or 'singler(   r   r5   )rU   )r,   r-   r.   r
   r+   r   r   r   r   r    test_invalid_method  s    rM  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   rN  r  r   r   rA   rm   r   r   r*   z-1dr9   )	r   r+   r   r   r   r   rJ   r|   rp   )r$   r/   r   r)  rN   rO   r   r   r    .test_rolling_descending_date_order_with_offset  s    rO  c                  C   sH   t ddddg} | d }t tjtjddg}tj||ddd d S )Nr   r"   r9   gUUUUUU?r   V瞯<ZatolZrtol)r
   r   rZ   r   r   rJ   r   r   r   r   r    ,test_rolling_var_floating_artifact_precision  s    rR  c                  C   sB   t dddg} | d }t tjddg}tj||ddd d S )NgQ؎>g 4PSȡ>r   g[^>>rP  rQ  )r
   r   rV   r   r   rJ   r   r   r   r   r    test_rolling_std_small_values  s    rS  zstart, exp_valuesQ?gX9v?gI+?gˡE?MbP?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 )NrT  rU  Mb`?Mb?{Gzt?皙?rV  g=
ףp=?rA   r"   r   r   )r   r   rR   r   r+   r   rp   r   rW   rJ   rK   )r   Z
exp_valuesr   r   rO   rN   r   r   r    3test_rolling_mean_all_nan_window_floating_artifacts  sB    	
r[  c                  C   sP   t dddtjtjtjg} | jddd }t dddd	dd
g}t|| d S )NrW  rX  rY  r9   r   r   g{Gz?gQ?g9v?rC   )r   r   rR   r   r   rJ   rK   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   rY   r   r   rJ   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"   r;      r   r\   r   r   r   r   Frw   )r   r+   r   r   r   r   rJ   rK   )Zfloat_numpy_dtyper   rO   rN   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   r;   Z
abcdefghijr   Zfloat16Zfloat32r_   Zint8Zint16Zint32Zuint8Zuint16Zuint32Zuint64)
r   r   r0   defghr   jr   r   r  r   r9   r"   r[   r   r   r\   )r   r   rH   reshaper   r   r   rY   r+   rJ   rK   r   r   r   r    test_rolling_numeric_dtypes  s:    









rh  Zaveragepct	ascending	test_datadefault
duplicatesnansc           	   	      s   d}|dkr t tj|d}nN|dkr>t tjd|d}n0|dkrnt tjddd	tjtjtj g|d}||  fd
d}|| j	 d}t
|| d S )Nr   rl  )r   rm  r9   rn  rD         ?      ?c                    s   | j  djd S )NrU   ri  rj  r*   )rankrp   )r   rj  rU   ri  r   r    <lambda>P      ztest_rank.<locals>.<lambda>rq  )r
   r   r   r  choicer   infr   rS   rr  rJ   r   )	r$   rU   ri  rj  rk  lengthr   rO   rN   r   rs  r    	test_rank?  s     
ry  c                  C   sz   d} d}t d| dd}ttj| | | df|d}|jdd	d
gdd}tj|dddgdd}t	|j
t| d S )Nr;   r"   Z20100101r   r>   r*   rA   ro  r   rp  r   r      2   K   )r   r   r   r   r  rg  r   Z
percentilerJ   rE  r   r   )rowcolr   r   Zdf_quantileZnp_percentiler   r   r    #test_rolling_quantile_np_percentileW  s    "r  r   r   g?interpolationZlinearlowerZhigherZnearestZmidpointr   r  g       @rZ  r   g333333?gffffff?g333333?c                 C   sX   t |}|| |}|jdd| |jd }t|rHt|sTtn||ksTtd S )Nr   r   r*   )r
   r   Z	expandingrp   r   isnanr   )r   r  r   rr   q1q2r   r   r    +test_rolling_quantile_interpolation_optionse  s    
r  c               	   C   sP   t d} t| }d}tjt|d" |jt| ddjddd W 5 Q R X d S )	Nr"   z(Interpolation 'invalid' is not supportedr(   r   r   r   invalid)r  )	r   rH   r
   r,   r-   r.   r   r   r   )r   rr   r1   r   r   r    test_invalid_quantile_value  s
    
r  c               	   C   s   t dddddg} d}tjt|d | dd	 W 5 Q R X d
}tjt|d | dd W 5 Q R X d}tjt|d | dd W 5 Q R X d S )NrC   r   r   g?rD   z#quantile value -0.1 not in \[0, 1\]r(   r9   gz#quantile value 10.0 not in \[0, 1\]g      $@zmust be real number, not strr5   )r
   r,   r-   r.   r   r   	TypeError)r   r1   r   r   r    test_rolling_quantile_param  s    r  c                  C   s   t dddddg} | 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 std S )NrD   r4   rE   ro   r  r   r   r"   r   )rv   rC   r9   r   r   )	r
   r   rV   r   r   rJ   r   r  r   )valsrN   rO   r   r   r    test_rolling_std_1obs  s    $r  c                  C   sj   t dddddg} | jdd }t|dd   s<t| jdd }t|dd   sftd S )Nge>R?gRz12?r9   r#   r   )span)r
   r   rV   r   isfiniteallr   Zewmr   r   r   r    test_rolling_std_neg_sqrt  s    	r  )nr   r   numpyr   r,   Zpandas.compatr   r   Zpandas.errorsr   Zpandasr   r   r	   r
   r   r   r   r   r   r   Zpandas._testingZ_testingrJ   Zpandas.api.indexersr   Zpandas.core.windowr   r!   r2   markZparametrizer   r8   rP   rT   ra   rl   ry   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r/  r  r  r  r  r  r  r   r!  r#  r%  r'  r*  Zxfailr.  r3  r6  r7  r9  r   rC  rF  rJ  rK  rL  rM  rO  rR  rS  r[  r\  r]  r_  rh  ry  r  r  r  r  r  r  r   r   r   r    <module>   s  0



-

	



" $"" $"
		

		
 !"#$+
	
 !"#$Y

"D




	,,((22*!

$&
  




	
	=


&&4!
'# 	