U
    ¾mœd	æ  ã                   @   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  d€gd  d�gd  d‚gd}  dƒgd„  d…gd†  dygd  d…gdR  d‚gd}  d~gd:  d‡g dˆgd:  d‰gd}  dŠgd  d‹gdŒ  dˆgd  d{gd}  dzgd„  d€gdP  dˆgd9  d‹gd9  d~gd}  d�gd„  dŠgd  dŽgd  d�gd  d{gd}  d~gd„  d‡gdP  d‹g d€gd  d~gd�  d‘gd  fd+ej0gd dygd  dzgdR  d{g d|gd}  d~gd  d€gd  d�gd  d‚gd}  dƒgd„  d…gd†  dygd  d…gdR  d‚gd}  d~gd:  d‡g dˆgd:  d‰gd}  dŠgd  d‹gdŒ  dˆgd  d{gd}  dzgd„  d€gdP  dˆgd9  d‹gd9  d~gd}  d�gd„  dŠgd  dŽgd  d�gd  d{gd}  d~gd„  d‡gdP  d‹g d€gd  d~gd’  fg¡d“d”„ ƒZ>d•d–„ Z?d—d˜„ Z@d™dš„ ZAej  d›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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	¡d�dž„ ƒZBej  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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d fg¡d¡d¢„ ƒZCd£d¤„ ZDej  d¥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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 d¦d§�g ddfg¡d¨d©„ ƒZEej  dªd gdgdgdgd9gged«dd¬d­�ed®dd¬d­�ed¯dd¬d­�ed°dd¬d­�ed±dd¬d­�gd fd gd dgddgddgdd9gged«dd¬d­�ed«dd¬d­�ed®dd¬d­�ed¯dd¬d­�ed°dd¬d­�gd8fd gd dgd ddgdddgddd9gged«dd¬d­�ed«dd¬d­�ed«dd¬d­�ed®dd¬d­�ed¯dd¬d­�gdfg¡d²d³„ ƒZFej  d´dµd iejGd¶d¶d·d·d·gddgd¸�fd¹dºiejGd¶d»d¼d½d¾gdºdgd¸�fg¡d¿dÀ„ ƒZHej  dÁdOdg¡dÂdÃ„ ƒZIdÄdÅ„ ZJdÆdÇ„ ZKdÈdÉ„ ZLdÊdË„ ZMej  dÌdÍdÎdÏdÐdÑg¡dÒdÓ„ ƒZNdÔdÕ„ ZOej  dÖd×edØƒedÙƒg¡dÚdÛ„ ƒZPdÜdÝ„ ZQej  dÞedßdàdádâ�dãfedßdädådâ�dæfg¡ej  dçdEej0d d dddd9dd:g	fdFej0d dddd9dd:dPg	fdèej0d ddddPdRdéd†g	fg¡dêdë„ ƒƒZRdìdí„ ZSejjTeƒ �reƒ  �peƒ dîdï�ej  dðdñddòd dZdZdd gfdóddôd dõdõdöd gfdñddòdZd dZdd gfdóddôdõd dõdöd gfg¡d÷dø„ ƒƒZUdùdú„ ZVej  dûdñdèdüdýdþdEdFg¡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
dñeZ�dƒ�deZ�dƒ�d�d�d�d�dgfdüeZ�dƒdaeZ�dƒ�d�d�d�d�dgfdèeZ�dƒ�deZ�dƒd‹�d�dd‡�dgfdýeZ�dƒ�deZ�dƒ�d�d�d�d�dgfdþeZ�dƒ�deZ�dƒ�d �d!�d"�d#�d$gfg¡�d%�d&„ ƒZ[ej  dÞd dddd9gdfe�d'd¬d�d(�d8fg¡�d)�d*„ ƒZ\�d+�d,„ Z]ej  dûdýdþg¡�d-�d.„ ƒZ^ej  �d/dýd�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dŒd’g¡ej  dûdEdF�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d’dŒdŒejrddddgddej0�d€�d�d �d‚d �dƒdggd’dŒdŒej0dŒdddgddej0�d€�d�d d �d‚�d„dggej0dd:dPdddgddej0gd dd�d…d g gddPdPdPej0ejrd9dddg
ddej0gd �d…d g ej0gd9  �dƒd g gddPdPdPej0ejrdPdddg
ddej0gd �d…d g ej0gd9  �d†d g gddPgd9 ddej0gd �d…gd:  gddPdej0dPddPgddej0d�d…gdgd  �d…g gg¡�d‡�dˆ„ ƒZs�d‰�dŠ„ Zt�d‹�dŒ„ Zu�d��dŽ„ Zvej  �d�ddg¡ej  �d�d*d+g¡�d‘�d’„ ƒƒZwej  �d“exeyg¡�d”�d•„ ƒZzej  �d�ddg¡ej  �d�d*d+g¡ej  �d“exeyg¡�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    úY/home/sam/Atlas/atlas_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 )	Ng°rh‘í|@g'1¬Zú¿rS   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 >g¤ßfoCgPï˜pž æ?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 s¢t	‚dS )zf
    Make sure that decreasing indices give the same results as increasing indices.

    GH 36933
    rò   iñÿÿÿrA   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@gÖÇCßÝ½W@g     Àf@g     às@g     €5@g¥„`UU"@r,  g     €1@g      >@g     €K@g     €a@g/àe†�²æ?g8j…é{Ú?göì¹LM‚ï?gô4`�ôií?g
+TTýë?g­ùñ—õê?g %”bøîâ¿g�Oq&àð¿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   g˜¿BæÊ ô¿g333333ó¿gÍ >°ãÿ@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¸ž?gX9´Èv¾�?gºI+‡†?gË¡E¶óý„?çü©ñÒMbP?gú~j¼t“X?ç›<#‹	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€?ç{®Gázt?çš™™™™™É?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{®Gáz„?g¸…ëQ¸Ž?g9´Èv¾ŸŠ?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:   gš™™™™™¹¿z#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 ¡s¦t‚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?g¨R¨z1Ò2?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s�t
‚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!þþ
þþþþ'# ÿùþ	üüü*ü*ü
üüÛþ/