U
    _{f	                     @   s2  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)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/d0 Z(ej d1d2d-d3d3d3gfd2d)d3d3d3gfd2d,d3d3d3gfd2d.d3d3d3gfd4d-d3ddgfd4d)d3d3d3gfd4d,d5d3d3gfd4d.d5ddgfgd6d7 Z)ej d1d8d-d9d9d9d9d9d9ddgfd8d,ddd9d9d9d9d9d9gfd8d)d9d9d:d:d:d:d9d9gfd8d.ddddddddgfgd;d< Z*d=d> Z+d?d@ Z,ej dAd.d,gdBdC Z-ej dDdEdFgdGdH Z.ej dDdEdFgdIdJ Z/ej dKdLdMgej dNdEd-dOd d dddd9dd:dPg
fdEd)dOd d d dddd9dd:g
fdEd.ej0d d dddd9dd:dPg
fdEd,ej0d d d dddd9dd:g
fdFd-dOdddd9dd:dPdQdRg
fdFd)dOdddd9dd:dPdQdRg
fdFd.ej0d dddd9dd:dPdQg
fdFd,ej0d dddd9dd:dPdQg
fgdSdT Z1dUdV Z2ej dNdEd-ej0d d dddd9dej0ej0g
fdEd)ej0d d d dddd9dej0g
fdEd.ej0ej0d dddd9dej0ej0g
fdEd,ej0ej0d d dddd9dej0g
fdFd-ej0dddd9dd:d:ej0ej0g
fdFd)ej0dddd9dd:d:d:ej0g
fdFd.ej0ej0dddd9dd:ej0ej0g
fdFd,ej0ej0dddd9dd:d:ej0g
fgdWdX Z3ej dYd-d dZdddd9dd:dPdQg
fd)d dZdd[d\d]d^d_d`dag
fd.ej0d dZd[d\d]d^d_d`dag
fd,ej0d dZdddd9dd:dPg
fgdbdc Z4ej dddedgdfdg Z5dhdi Z6djdk Z7dldm Z8dndo Z9dpdq Z:drds Z;dtdu Z<dvdw Z=ej dxd*dygdP dzgdR  d{g d|gd}  d~gd  dgd  dgd  dgd}  dgd  dgd  dygd  dgdR  dgd}  d~gd:  dg dgd:  dgd}  dgd  dgd  dgd  d{gd}  dzgd  dgdP  dgd9  dgd9  d~gd}  dgd  dgd  dgd  dgd  d{gd}  d~gd  dgdP  dg dgd  d~gd  dgd  fd+ej0gd dygd  dzgdR  d{g d|gd}  d~gd  dgd  dgd  dgd}  dgd  dgd  dygd  dgdR  dgd}  d~gd:  dg dgd:  dgd}  dgd  dgd  dgd  d{gd}  dzgd  dgdP  dgd9  dgd9  d~gd}  dgd  dgd  dgd  dgd  d{gd}  d~gd  dgdP  dg dgd  d~gd  fgdd Z>dd Z?dd Z@dd ZAej de
dddgd9dd:gddgd9gdd gfddgd9dgdd dgfdddgd9dd:gdd ddgfgddfe
dddgd9dd:gddgd9gdd gfddgd9dgdd dgfddgdd:gdddgfgddfe
dddgd9dd:gddgd9gdd gfddgd9dgdd dgfddgdd:gdddgfgddfe
dddgd9dd:gddgd9g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ddgd9dd:gddgd9g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d9gdg ddfe
dgd9gdg ddfe
 i g fgddfe
dej0dgej0dd:gdd5g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d ddgfgddfg	dd ZBej ddgd9gdd gfddgd9dgdd dgfddgdd:gdddgfgd8fdgd9gdd gfddgd9dgdd dgfdddgd9dd:gdd ddgfgdfdgd9g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dddgdgd gfddgd dgfdddgd ddgfgddfedddgdgd gfddgd dgfdddgd ddgfgddfedddgdgd gfddgd dgfddgddgfgddfedddgdgd gfddgd dgfddgddgfgddfedddgdgd gfdgdgfdgdgfgdd fedddg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d9g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d9ggeddddeddddeddddeddddeddddgd8fd gd dgd ddgdddgddd9g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jGdddddgddgdfddiejGdddddgddgdfgdd ZHej ddOdgddÄ ZIddń ZJddǄ ZKddɄ ZLdd˄ ZMej ddddddgddӄ ZNddՄ ZOej dded؃edكgddۄ ZPdd݄ ZQej dedddddfedddddfgej ddEej0d d dddd9dd:g	fdFej0d dddd9dd:dPg	fdej0d ddddPdRddg	fgdd ZRdd ZSejjTe re  pe ddej ddddd dZdZdd gfdddd dddd gfddddZd dZdd gfddddd ddd gfgdd ZUdd ZVej dddddddEdFgdd  ZWej d1d4d-d5d3dd3gfd4d,dOd5d3dgfd4d)d5d3ddgfd4d.dOd5dd3gfd2d-d5d3ddgfd2d,d5d3ddgfd2d)d5d3ddgfd2d.d5d3ddgfgdd ZXej ddd5d5d5d5gfddd3d3dgfgdd	 ZYej d
deZddeZddddddgfdeZddaeZddddddgfdeZddeZddddddgfdeZddeZddddddgfdeZddeZdd d!d"d#d$gfgd%d& Z[ej dd dddd9gdfed'ddd(d8fgd)d* Z\d+d, Z]ej dddgd-d. Z^ej d/ddd0dOd1gfdd2d3d4d5gfgd6d7 Z_d8d9 Z`ej ddd:gd;d< Zad=d> Zbd?d@ Zcej dAddBdCdCdDdEgfddFdFdGdHgfgdIdJ ZddKdL ZedMdN ZfdOdP ZgdQdR Zhej dddddgej ddEdFdSgej dTd*d+gej dUd*d+gej dVdWdXdYgdZd[ Zid\d] Zjej d^dOd_d`dZdgej dadbdcdddedfgej dgd5dd3d2dddhgdid5d3d2ddddhgdOej0djej0dkgej0ej0ej0ej0gej0d_ej0dldkdZgdZgej0dmdnggdodp Zkdqdr Zldsdt Zmdudv Zndwdx Zodydz Zpd{d| Zqej d}dd~dg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:dPdddgddej0gd dddd g gddPdPdPej0ejrd9dddg
ddej0gd dd g ej0gd9  dd g gddPdPdPej0ejrdPdddg
ddej0gd dd g ej0gd9  dd g gddPgd9 ddej0gd dgd:  gddPdej0dPddPg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 dd*d+gdd Zwej dexeygdd Zzej dddgej dd*d+g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    _/var/www/html/Darija-Ai-API/env/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    
r3   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/   )r0   r4   r1   r2   r    r    r!   test_invalid_constructor=   s    r9   r%      )days3Dz
2015-12-25r#   periodsr   )indexoffsetc              	   C   sH   t tdtddddd}tjtdd |jdd	d
 W 5 Q R X 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   s@   t tdjddd}tjtdd t||   W 5 Q R X d S )Nr   r   rG   zstep not implementedr)   )r   r,   r   r-   r.   rJ   getattr)rL   rollr    r    r!   &test_step_not_implemented_for_cov_corrl   s    rQ   c                 C   s   d}t dt|itd|ddd}tddgtd	d
d}|j| d }t d|itd|ddd}t|| |d }t|| d S )NrA   valuerB   rC   rD   rF                 ?      @      ;@r:   r$   r<   )	r   r   rI   r   appendr   r   tmassert_frame_equal)r%   nr   expected_dataresultexpectedr    r    r!   &test_constructor_with_timedelta_windowt   s    r^   c              
   C   s   d}t dt|itd|ddd}t dttjdgtdd	d
itd|ddd}|j| dd }|j| ddjt|d}t	
|| t	
|| d S )NrA   rR   z
2017-08-08rC   rD   rF   rT   rU   rV   r:   r   r&   )raw)r   r   rI   r   rW   NaNr   r   applyrX   rY   )r%   r_   rZ   r   r]   Zresult_roll_sumZresult_roll_genericr    r    r!   0test_constructor_timedelta_window_and_minperiods   s    rb   c                 C   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   r:   r   2020r#   r=   rF   closedr   2DTdrop)r   r   rO   r   reset_indexrX   rY   )rf   arithmetic_win_operators	func_nameZdf_fixeddf_timer\   r]   r    r    r!   test_closed_fixed   s    "rn   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 )Nrc   rS   rT   r5   rU         @rd   r#   r=   rF   c                    s"   g | ]}t  d  j|  qS )rc   )rO   iloc).0srm   rl   r    r!   
<listcomp>   s     z9test_datetimelike_centered_selections.<locals>.<listcomp>semddofr   rg   r   T)rf   r   r(   FZcheck_dtype)r   r   rO   r   rX   rY   )rf   Zwindow_selectionsrk   r]   kwargsr\   r    ru   r!   %test_datetimelike_centered_selections   s&    1 


r{   zwindow,closed,expected3srU   Z2srT   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   rF   Trf   r(   )r   r   r   rX   assert_equalr%   rf   r]   r0   r?   r   r\   r    r    r!   ,test_datetimelike_centered_offset_covers_all   s    r   rg   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      r?   dtypeT)r(   rf   )r   floatr   r   rX   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 )Nr:   r   rC   startrE   r>   rF   rg   r   Tr'         ?      ?r   )r
   r,   r   r   meanr?   rX   assert_series_equalrt   r\   r]   r    r    r!   !test_even_number_window_alignment3  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d d | }|jt|dd| |d}| }t|| d S )Nr   r   Z
binary_colr   minr   rF   gUUUUUU?r   皙?g@m?g._x%I?)columnsr?   ro   )r%   rf   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  s0        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   rD   r   r?   1Drf   rF   )
r
   r   rI   r   r   rO   r   r?   rX   r   )rf   rk   rl   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   10Dro   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 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   r:   rc   r   r   r=   r   rc   F)sortr   r   ro   r   )rc   N)Zarraysnames)r   r?   name)r   r   rO   groupbyr   r	   Zfrom_arraysr?   r
   r   r   rX   r   )r   r   r\   Zexp_idxr]   r    r    r!   test_closed_one_entry_groupbyo  s    
 r   input_dtypeintr   zfunc,closed,expectedrS      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   rf   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<   ro   r   r   r   r:   r   r   )r
   r   rI   r   ri   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   rf   rF   )r
   r   rI   r   r   r   r?   rO   r   rX   r   )r   rf   r]   r   r\   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 )	NrA   r   r=   r   r<   r   rF   r   )
r
   r   rI   r   r   r?   medianrX   r   quantile)rf   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   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-07rF   Z2dr   r   rS   )
r
   r   r   r   r   r   r   r?   rX   r   r   r    r    r!   test_missing_minp_zero_variable  s    
r   c                  C   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 )Nrc   r   CrC   E12r   )rA   r   r   r:   )r	   Zfrom_productr   r   onesr   rM   rX   Zassert_index_equalr   r?   r   AssertionError)colsr   r\   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)rA      r   c                 S   s$   i | ]}|t jgd  dgd  qS )r   rU   r   )r   r   rs   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   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 )	Nr:   )r   yr   r?   rT   r5   r   r   )r   r   )r   r,   r   r   countrX   rY   r   r    r    r!   test_rolling_axis_count  s    
r   c                  C   s\   t ddt jddg} | jdd t| d }tt jdt jt jdg}t|| d S )Nr   r:   r#   F)writer   r   )	r   arrayr   Zsetflagsr
   r   r   rX   r   )Zarrr\   r]   r    r    r!   test_readonly_array-  s
    r   c              	   C   s   |}t dd tddd|dD }| d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-03rC   )rE   tzr   rg   r   c                 S   s   i | ]}|d gd qS )rT   r   r    r   r    r    r!   r   B  s    r   )r>   rE   r   c                 S   s   i | ]}|d gd qS )r5   r   r    r   r    r    r!   r   F  s    z	2019-8-02z	2019-8-03)r   r   Tr   r   rX   rY   )r   Ztz_naive_fixturer   r   r\   r]   r    r    r!   test_rolling_datetime6  s"    r   zcenter, expected_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@rA   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  rC   )rE   i  )seedr   d   )highsize)DateColmetricr   T)ZinplaceZ21Dr   ro   )r%   r   rf   r(   r   r   )r?   r   )r   nowr   r   r   randomZRandomStaterandintr   r   Z	set_indexr   rL   renameZ
_with_freqr
   rX   r   )
r(   r[   Z
date_todayr;   Znprr   r   r\   r?   r]   r    r    r!   test_rolling_window_as_stringO  s    [

r   c                  C   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   r:   T)r(   r   rT   r5   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   sT   dddt jdddg}ddd	dddd	g}| |jdd
d }| |}t|| d S )Nr   r   r:   r   r#   r   rT   r5   rU   r   r   )r   r   r   r   rX   r~   )r0   valuesZexpected_countsr\   r]   r    r    r!   7test_rolling_count_default_min_periods_with_null_values  s
    r   zdf,expected,window,min_periodsr   c                 C   s<   dd |D }t || j||dD ]\}}t|| q"d S )Nc                 S   s   g | ]\}}t ||d qS rF   )r   rs   r   r?   r    r    r!   rv     s     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                    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   r:   r   r#   r   r   r   z
2016-01-01rC   r   r>   rE   rc   r   r   c                    s&   g | ]\}}t | j|d f dqS )r   rF   )r   locr   r   r    r!   rv   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                     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   )rr   )rs   idxr   r    r!   rv   U  s     z<test_iter_rolling_on_dataframe_unordered.<locals>.<listcomp>)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   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!   rv   }  s     z,test_iter_rolling_series.<locals>.<listcomp>r   )r   r   rX   r   )r   r]   r%   r   r   r    r    r!   test_iter_rolling_seriesZ  s    #r  zexpected,expected_index,windowr   rC   rD   r   r   r   z
2020-01-05c                 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   s   g | ]\}}t ||d qS r   r  )rs   r   r   r    r    r!   rv     s    z.test_iter_rolling_datetime.<locals>.<listcomp>)r
   r,   r   r   r   rX   r   )r]   Zexpected_indexr%   r   r   r    r    r!   test_iter_rolling_datetime  s    (r	  zgrouping,_indexlevel)r   r   )r   r   r   byX)r   r   )r   r   )r:   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   rS   r   rT   r   r5   r  ignore)r   errors)r   )r_   r  )r   r,   ri   r   r   ra   rX   rY   )grouping_indexr_   r  r   r]   r\   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 )Nrc   gVUUUUU%C       z19700101 09:00:00z19700101 09:00:03z19700101 09:00:06rF   r   r|   ro   r:   re   r   SrD   gUUUUUU%CgqqCgqqCrS   )r   r   ZresampleZffillr   r   r   r   r   rX   rY   )r  r   r\   datesr]   r    r    r!   *test_rolling_numerical_accuracy_kahan_mean  s0    	r  c                  C   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ZrS   r   r   r:   gsh|??r   )r   r   r   r
   r   r   rX   r   r   r    r    r!   )test_rolling_numerical_accuracy_kahan_sum  s    r  c                  C   s^   t ddddtdg} tjt| }td|i| d}|d	 }t
||dg  d S )Nr   r   Z60sr   endrE   r   r   rF   )r   rW   r   r   r   randr   r   r   r   rX   rY   )r?   r   r   r\   r    r    r!   $test_rolling_numerical_accuracy_jump  s    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   r   rX   r   )rt   r\   r    r    r!   ,test_rolling_numerical_accuracy_small_values  s    
r  c                  C   sp   t dddd} ttd| tjd}d|d< |d }ttjtjtjtjd	d	d	d
ddg
| d}t	|| d S )Nz
2015-01-01rA   rC   rD   )r   r?   r   gТr   r#   gk/      @      @      @rF   )
r   r
   r,   r   float64r   r   r   rX   r   )r  dsr\   r]   r    r    r!   (test_rolling_numerical_too_large_numbers  s&    r%  )r   rR   )r   r5   )r   rT   )r   rT   )r   rT   )r   rT   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   r1   )r?   r   rT   r%   r   r   r   r   r1   rF   )r   rO   r   rX   rY   )r   rR   r   r\   r]   r    r    r!    test_rolling_mixed_dtypes_axis_1/  s    r(  c               
   C   s   t ddddtjtjtjgdddtjtjtjtjgdddtjdtjdgg} | jdddd }t 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&  rS   rT   rU   r"  r5   rq   r!  )r   r   r   r   r   rX   rY   r   r    r    r!   test_rolling_axis_one_with_nan?  s    r)  rR   testz
2019-12-31z1 days 06:05:01.00003c                 C   sL   t dddgi}| |d< |jdddd }t dddgi}t|| d S )Nr   r   r   r   r&  rT   r5   )r   r   r   rX   rY   )rR   r   r\   r]   r    r    r!   &test_rolling_axis_1_non_numeric_dtypesS  s
    r+  c                  C   s   t dd gddgddgd} t dtjgddgd	d
gd}| jdddd }t|| | jjddd j}t|| d S )Nr   r   r#   r   r   r   rT   r   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   r  Z2Tz2020-01-01 12:00Z30TZ1h)r   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   r:   r   r#   r   r   r   rF   ro   r   )r
   rO   r   rX   r   )r?   r%   r   r   r$  r\   r]   r    r    r!   test_rolling_period_indexk  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   rw   
isinstancer   r
   r   r   r   rX   r   )r0   objr\   r]   r    r    r!   test_rolling_sem  s    
r2  zGH 38921)reason)r   third_valuer   varg|Fstdg >gfoCgPp?g۞?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   r4  r   r$  r\   r]   r    r    r!   !test_rolling_var_numerical_issues  s
    r8  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      rT   g6<AԿg     ?g?)r   rc   z20130101 09:00:00r   rc   z20130102 09:00:02z20130103 09:00:03z20130105 09:00:05z20130106 09:00:06rF   r   r   r   r   r:   r   r   r   Z3dr$   )
r   r   r   r	   from_tuplesr   r   rN   rX   rY   )expr   resr    r    r!   ,test_timeoffset_as_window_parameter_for_corr  sb    









+r<  methodr   skew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   irA   r   Nr+   rF   r#   r$   r   g-q=)
r   r   rI   r?   rO   r   absr   r   r   )r=  r   Z
df_reverseZ
increasingZ
decreasingr    r    r!   test_rolling_decreasing_indices  s
    *rB  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.
    rd   r   r   rD   rF   Nr+   Tr}   )r   r,   r   r   rX   r~   )r%   rf   r]   r0   r?   Zdf_incZdf_decZexpected_incZexpected_decZ
result_incZ
result_decr    r    r!   (test_rolling_decreasing_indices_centered  s    rC  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 )	Nrd   r   rD  rD   r   r   Tr}   )r   r   r   r   rX   r~   r   r    r    r!   )test_rolling_center_nanosecond_resolution  s
    
rE  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   rH   r   r  r   r    r    r!   get_window_boundsk  s    
zCtest_rolling_non_monotonic.<locals>.CustomIndexer.get_window_boundsN)__name__
__module____qualname__rJ  r    r    r    r!   CustomIndexerj  s   rN  r   )rH  rG  N)	r   r   rI   r   r   rO   r   rX   rY   )r=  r]   rG  r   rN  Zindexerr\   r    r    r!   test_rolling_non_monotonic)  s    >rO  z
2001-01-01)rE   r>   c                 C   sf   t dddddg| d}| }d|jdd< |||}t tjtjdddg| d}t|| d S )	Nr   r   r:   r   r#   rF   rS   r   )	r
   copyrr   r   rN   r   r   rX   assert_almost_equal)r?   r%   r   r   r\   r]   r    r    r!   !test_rolling_corr_timedelta_index~  s    	rR  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   r:   r   )groupr   rU  F)Zdropnar   r   rS   r5   rU   rT   rq   r   rF   )	r   r   r   r   r   r   r	   rX   rY   )r   r   r\   r]   r    r    r!   !test_groupby_rolling_nan_included  s    "rV  c                 C   s`   t tjd}| }t|d|  }t|| |d }t|d|  }t|| d S )NrA   r:   iP  )	r
   r   r   r  rP  rO   r   rX   r   )r=  r   Zser_copyr]   r\   r    r    r!   *test_rolling_skew_kurt_numerical_stability  s    rW  )r=  r   g+X?gJ_9?rq   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   r:   r   i  r7  )r=  r   rt   r\   r]   r    r    r!   (test_rolling_skew_kurt_large_value_range  s    	rX  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   r6   )r=  )r-   r.   r/   r
   r,   r   r    r    r    r!   test_invalid_method  s    rY  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   rZ  r  r   r   rF   ro   r   r   r+   z-1dr:   )	r   r,   r   r   r   r   rX   r~   rr   )r%   r0   r   r1  r\   r]   r    r    r!   .test_rolling_descending_date_order_with_offset  s    r[  c                  C   s\   t ddddg} | d }t tjtjddg}tj||ddd t|dk|dk d S )Nr   r#   r:   UUUUUU?r   V瞯<ZatolZrtol)r
   r   r5  r   r   rX   r   r   r    r    r!   ,test_rolling_var_floating_artifact_precision  s
    r_  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[^>>r]  r^  )r
   r   r6  r   r   rX   r   r   r    r    r!   test_rolling_std_small_values  s    r`  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 )Nra  rb  Mb`?Mb?{Gzt?皙?rc  g=
ףp=?rF   r#   r   r   )r   r   r`   r  r,   r   rr   r   r   rX   rY   )r   Z
exp_valuesr   r   r]   r\   r    r    r!   3test_rolling_mean_all_nan_window_floating_artifacts  sB    	
rh  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 )Nrd  re  rf  r:   r   r   g{Gz?gQ?g9v?rS   )r   r   r`   r   r   rX   rY   r   r    r    r!   2test_rolling_sum_all_nan_window_floating_artifacts  s    ri  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    rj  c                 C   sd   t tdtddd| d}t tjgd tdddd| d}|jddd	 }tj||d
d d S )Nr#   rA      r   r  r   r   r   r   Fry   )r   r,   r   r   r   r   rX   rY   )Zfloat_numpy_dtyper   r]   r\   r    r    r!   test_rolling_float_dtype+  s    rl  c                  C   s   t tdddtdddddd	d
dddddd
} | jdddd }t tdddtdddtdddtdddtdddtdddtdddtdddtdddtdddd
dd}t	
|| d S )N(   r   rA   Z
abcdefghijr   Zfloat16Zfloat32r#  Zint8Zint16Zint32Zuint8Zuint16Zuint32Zuint64)
r   r   r1   defghr   jr   r   r&  r   r:   r#   r   r   r   r  )r   r   rI   reshaper  r   r   r   r,   rX   rY   r   r    r    r!   test_rolling_numeric_dtypes6  s:    









ru  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   ry  )r   rz  r:   r{  rT         ?      ?c                    s   | j  djd S )Nr=  rv  rw  r+   )rankrr   )r   rw  r=  rv  r    r!   <lambda>j      ztest_rank.<locals>.<lambda>r~  )r
   r   r   r  choicer   infr   ra   r  rX   r   )	r%   r=  rv  rw  rx  lengthr   r]   r\   r    r  r!   	test_rankY  s     
r  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 )NrA   r#   Z20100101r   rD   r+   rF   r|  r   r}  r   r      2   K   )r   r   r   r   r  rt  r   Z
percentilerX   rQ  r   r   )rowcolr   r   Zdf_quantileZnp_percentiler    r    r!   #test_rolling_quantile_np_percentileq  s    "r  r   r   g?interpolationZlinearlowerZhigherZnearestZmidpointr   r"  g       @rg  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	expandingrr   r   isnanr   )r   r  r   rt   q1q2r    r    r!   +test_rolling_quantile_interpolation_options  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   rI   r
   r-   r.   r/   r   r   r   )r   rt   r2   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 )NrS   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 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 )NrT   r5   rU   rq   r   r   r   r#   r   )rx   rS   r:   r   r   )	r
   r   r6  r   r   rX   r   r  r   )valsr\   r]   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?r:   r$   r   )span)r
   r   r6  r   isfiniteallr   Zewmr   r    r    r!   test_rolling_std_neg_sqrt  s    	r  c                	   C   s4   t jtdd ttdjddd W 5 Q R X 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  s    r  c                	   C   s4   t jtdd ttdjddd W 5 Q R X d S )Nzstep must be >= 0r)   r   r   r+   rG   r  r    r    r    r!   test_step_not_positive_raises  s    r  r   r   r]   r  g@@g     @D@UUUUUU?gUUUUUU8@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   r5  rX   r   r6  r   sqrt)r   r%   r   r]   srZ
result_varZ
result_stdr    r    r!   'test_rolling_var_same_value_count_logic  s    2	r  c                  C   sd   t dddddddg} | d}| }|dd  dk s@t| }|dd  dk s`td S )Nr  r   r   r:   r   )r
   r   r   r  r   r   r  rr\   r    r    r!   (test_rolling_mean_sum_floating_artifacts-  s    
r  c                  C   sd   t dddddddg} | d}| }|dd  dk s@t| }|dd  dk s`td S )Nr  r   r   r   )r
   r   r>  r  r   r?  r  r    r    r!   )test_rolling_skew_kurt_floating_artifacts8  s    
r  c           	      C   s   | }t dgddd}|d t|d< |jddd}t||}||d}|rVdd	gndd	dg}|| |gjd
dt}t|j	|kst
t|| d S )Nr   r   r:   r'  r1   r   numeric_onlyr   r   Trh   )r   r   objectr   rO   rL   rj   r   r  r   r   rX   rY   )	rk   r  kernelr   r   opr\   r   r]   r    r    r!   test_numeric_only_frameC  s    

r  r  use_argc                 C   s   t dddgddd}|d t|d< |r2|fnd}|jddd}t|| }||d|i}|rhd	d
gnd	d
dg}|| t}	|r|	fnd}
|	jddd}t|| }||
d|i}t|| d S )Nr   r   r:   r'  r1   r    r   r  r   r   )r   r   r  r   rO   r   rX   rY   )r  r  r  r   argr   r  r\   r   Zdf2arg2rolling2op2r]   r    r    r!    test_numeric_only_corr_cov_frameS  s    

r  r   c           
   	   C   s   | }t dg|d}|jddd}t||}|rh|tkrhd| d}tjt|d ||d W 5 Q R X n0||d}||gjd	d
	t
}	t||	 d S )Nr   r  r   r   Rolling.  does not implement numeric_onlyr)   r  Trh   )r
   r   rO   r  r-   r.   rJ   rL   rj   r   r   rX   r   )
rk   r  r   r  r   r   r  r2   r\   r]   r    r    r!   test_numeric_only_seriesi  s    

r  c              	   C   s   t dddg|d}|r|fnd}|jddd}t|| }|rz|tkrzd|  d}tjt|d	 ||d
|i W 5 Q R X nX||d
|i}	|t}
|r|
fnd}|
jddd}t|| }||d
|i}t	
|	| d S )Nr   r   r:   r  r    r   r  r  r)   r  )r
   r   rO   r  r-   r.   rJ   r   r   rX   r   )r  r  r  r   r   r  r   r  r2   r\   Zser2r  r  r  r]   r    r    r!   !test_numeric_only_corr_cov_seriesz  s    


r  )|r   r   numpyr   r-   Zpandas.compatr   r   r   Zpandasr   r   r	   r
   r   r   r   r   r   r   Zpandas._testingZ_testingrX   Zpandas.api.indexersr   Zpandas.core.indexers.objectsr   Zpandas.tseries.offsetsr   r"   r3   markZparametrizer   r9   rK   rQ   r^   rb   rn   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	  r9  r  r  r  r  r  r%  r(  r)  r+  r-  r/  r2  Zxfailr8  r<  rB  rC  rE  r   rO  rR  rV  rW  rX  rY  r[  r_  r`  rh  ri  rj  rl  ru  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r    r    r    r!   <module>   sj  0

 



-

	



" $"" $"
	


		
 !"#$+
	
 !"#$Y

"D



	,,((22*!
$&
  




	
	=
(&4!
'# 	**
/