U
    ÎZj­  ã                   @   s¢   d dl Zd dlZd dl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 ejdd„ ƒZejdd„ ƒZG d	d
„ d
ƒZG dd„ dƒZG dd„ dƒZdS )é    N)Ú	DataFrameÚIndexÚ
MultiIndexÚSeriesÚ	TimestampÚ
date_rangeÚto_datetime)ÚBaseIndexer)Úget_groupbyc                   C   sP   t ddddddddddg
ddddddddddg
tdddd	d
dddddg
ƒdœƒS )z0Frame for testing times argument in EWM groupby.ÚaÚbÚcr   é   é   é   ú
2020-01-01ú
2020-01-02ú
2020-01-10z
2020-01-22ú
2020-01-03z
2020-01-23ú
2020-01-04©ÚAÚBÚC)r   r   © r   r   úc/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/pandas/tests/window/test_groupby.pyÚtimes_frame   s$    öÿýÿr   c                   C   s.   t dgd dgd  dgd  t d¡dœƒS ©	Nr   é   r   é   r   é   é(   ©r   r   )r   ÚnpÚaranger   r   r   r   Ú
roll_frame+   s    r%   c                   @   s   e Zd Zdd„ Zdd„ Zdd„ Zej ddd	d
dej	dej 
d¡d�ddg¡dd„ ƒZej dddg¡dd„ ƒZej ddddddg¡dd„ ƒZej dd d!gd"d#gg¡d$d%„ ƒZej dd d"g¡d&d'„ ƒZej dd d"g¡d(d)„ ƒZej d*d"d+d+gd+d,ggfd d+d#gd#d+ggfg¡d-d.„ ƒZd/d0„ Zd1d2„ Zej d3d+d4gd5d6gg¡d7d8„ ƒZd9d:„ Zd;d<„ Zej d=d>d?d@g¡dAdB„ ƒZdCdD„ ZdEdF„ ZdGdH„ ZdIdJ„ Zej dKdd
g¡dLdM„ ƒZdNdO„ ZdPdQ„ ZdRdS„ ZdTdU„ Z ej dVdWdXd!dYœfdZi fg¡d[d\„ ƒZ!ej d]d^d_id_fd^d`idafg¡dbdc„ ƒZ"ej ddd4d6g¡dedf„ ƒZ#dgdh„ Z$didj„ Z%dkdl„ Z&dmdn„ Z'dodp„ Z(ej dqdXdrdsd`d5d+d+d`d5d+d+gfdXdXdsd`d`d+d+d`d`d+d+gfd?d?dsd`d`d`d`d`d`d`d`gfd?d?dtd`d`d`dud`d`d`dugfg¡dvdw„ ƒZ)ej dxe* +dydzg¡d{d|gg¡d}d~„ ƒZ,dd€„ Z-ej d�d‚gdƒd„d…d…d†gigd‚dage.d‡ƒe.dˆƒe.d‡ƒe.dˆƒgd„d†d…d‰gdŠœgg¡d‹dŒ„ ƒZ/d�dŽ„ Z0d�d�„ Z1d‘d’„ Z2d“d”„ Z3d•d–„ Z4d`S )—ÚTestRollingc              	   C   s\   d}t jt|d�� |jddd� W 5 Q R X | d¡}|jr@t‚t|ddd�}|jsXt‚d S )Nz4groupby\(\) got an unexpected keyword argument 'foo'©Úmatchr   r   )ÚfooT©ÚbyÚmutated)ÚpytestÚraisesÚ	TypeErrorÚgroupbyr,   ÚAssertionErrorr
   )Úselfr%   ÚmsgÚgr   r   r   Útest_mutated1   s    

zTestRolling.test_mutatedc                 C   s¤   |  d¡}t|ddd�}|j dd„ ¡}| d¡ ¡ j}t ||¡ | d¡j ¡ }t ||¡ |j d¡ ¡ }t ||¡ |j  |j¡ d¡ ¡ }t ||¡ d S )Nr   Tr*   c                 S   s   |   d¡ ¡ S )Nr   ©ÚrollingÚmean©Úxr   r   r   Ú<lambda>@   ó    z*TestRolling.test_getitem.<locals>.<lambda>r   )	r0   r
   r   Úapplyr7   r8   ÚtmÚassert_series_equalr   )r2   r%   r4   Ú	g_mutatedÚexpectedÚresultr   r   r   Útest_getitem<   s    
zTestRolling.test_getitemc                 C   sf   |  d¡}|jddd�}t|ddd�}|j dd„ ¡}|j ¡ }t ||¡ |j ¡ }t ||¡ d S )	Nr   r   r   ©Úmin_periodsTr*   c                 S   s   | j ddd� ¡ S )Nr   r   rD   )r7   Úcountr9   r   r   r   r;   T   r<   z3TestRolling.test_getitem_multiple.<locals>.<lambda>)r0   r7   r
   r   r=   rF   r>   r?   )r2   r%   r4   Úrr@   rA   rB   r   r   r   Útest_getitem_multipleN   s    


z!TestRolling.test_getitem_multipleÚfÚsumr8   ÚminÚmaxrF   z ignore:min_periods:FutureWarning)ZmarksÚkurtÚskewc                    sr   |j ddd�}|jdd�}t|ˆ ƒƒ }| ‡ fdd„¡}|jddd	�}t |d td
ƒg¡}||_t	 
||¡ d S )Nr   F©Ú
group_keysé   ©Úwindowc                    s   t |  d¡ˆ ƒƒ S ©NrQ   ©Úgetattrr7   r9   ©rI   r   r   r;   p   r<   z*TestRolling.test_rolling.<locals>.<lambda>r   ©Zaxisr!   ©r0   r7   rV   r=   Údropr   Úfrom_arraysÚrangeÚindexr>   Úassert_frame_equal©r2   rI   r%   r4   rG   rB   rA   Úexpected_indexr   rW   r   Útest_rolling\   s    zTestRolling.test_rollingÚstdÚvarc                    sv   |j ddd�}|jdd�}t|ˆ ƒdd�}| ‡ fdd	„¡}|jddd
�}t |d tdƒg¡}||_t	 
||¡ d S )Nr   FrO   rQ   rR   r   ©Zddofc                    s   t |  d¡ˆ ƒdd�S )NrQ   r   rd   rU   r9   rW   r   r   r;   ~   r<   z/TestRolling.test_rolling_ddof.<locals>.<lambda>rX   r!   rY   r_   r   rW   r   Útest_rolling_ddofx   s    zTestRolling.test_rolling_ddofÚinterpolationÚlinearÚlowerÚhigherÚmidpointÚnearestc                    st   |j ddd�}|jdd�}|jdˆ d�}| ‡ fdd	„¡}|jdd
d�}t |d tdƒg¡}||_t	 
||¡ d S )Nr   FrO   rQ   rR   çš™™™™™Ù?©rf   c                    s   |   d¡jdˆ d�S )NrQ   rl   rm   )r7   Úquantiler9   rm   r   r   r;   �   r<   z3TestRolling.test_rolling_quantile.<locals>.<lambda>r   rX   r!   )r0   r7   rn   r=   rZ   r   r[   r\   r]   r>   r^   )r2   rf   r%   r4   rG   rB   rA   r`   r   rm   r   Útest_rolling_quantile†   s    
ÿz!TestRolling.test_rolling_quantilezf, expected_valÚcorrr   Úcovç      à?c              
   C   sô   t tdƒdgd dgd  dddddgd dœƒ dd	g¡}t tdƒdddddgd
œƒ d	¡}t|jdd� d¡|ƒ|ƒ}tjg|gd  d }t |dgtj	dgd dgd  dgd dgd  t
tddƒƒd gddd	gd�d�}t ||¡ d S )Né
   r   é   r   r   rQ   )ÚvalueÚidx1Úidx2rv   rw   )ru   rw   r   ©Úlevelru   é   ©Únames©Úcolumnsr]   )r   r\   Ú	set_indexrV   r0   r7   r#   Únanr   r[   Úlistr>   r^   )r2   rI   Zexpected_valÚdfÚotherrB   Úexpected_datarA   r   r   r   Ú/test_rolling_corr_cov_other_same_size_as_groups˜   s,    ,ÿþÿýúýz;TestRolling.test_rolling_corr_cov_other_same_size_as_groupsc                    sV   ˆ  d¡}|jdd�}t|ˆ ƒˆƒ}‡ ‡fdd„}| |¡}tj|d< t ||¡ d S )Nr   rQ   rR   c                    s   t |  d¡ˆ ƒˆƒS rT   rU   r9   ©rI   r%   r   r   Úfunc¸   s    zITestRolling.test_rolling_corr_cov_other_diff_size_as_groups.<locals>.func)r0   r7   rV   r=   r#   r€   r>   r^   ©r2   rI   r%   r4   rG   rB   r‡   rA   r   r†   r   Ú/test_rolling_corr_cov_other_diff_size_as_groups±   s    


z;TestRolling.test_rolling_corr_cov_other_diff_size_as_groupsc                    sN   |  d¡}|jdd�}t|jˆ ƒdd�}‡ fdd„}| |¡}t ||¡ d S )Nr   rQ   rR   T©Úpairwisec                    s   t | j d¡ˆ ƒdd�S )NrQ   TrŠ   )rV   r   r7   r9   rW   r   r   r‡   È   s    z8TestRolling.test_rolling_corr_cov_pairwise.<locals>.func)r0   r7   rV   r   r=   r>   r?   rˆ   r   rW   r   Útest_rolling_corr_cov_pairwiseÁ   s    

z*TestRolling.test_rolling_corr_cov_pairwisezfunc, expected_valuesç      ð?ç      @c                 C   s¾   t ddddgddddgddddgdœƒ}| d	¡ d
¡}t||ƒƒ }t dtjg |d  dtjg  dtjg |d  dtjg  dœtjddddddddgd	d d gd�d�}t 	||¡ d S )NÚg1Úg2r   r   r   rz   rQ   ©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   r0   r7   rV   r#   r€   r   Úfrom_tuplesr>   r^   )r2   r‡   Zexpected_valuesr‚   ZrolrB   rA   r   r   r   Útest_rolling_corr_cov_unorderedÎ   s4    


ýÿþø
õûz+TestRolling.test_rolling_corr_cov_unorderedc                    sx   |j ddd�}|jdd�}|jdd„ ˆ d�}| ‡ fd	d„¡}|jdd
d�}t |d tdƒg¡}||_t 	||¡ d S )Nr   FrO   rQ   rR   c                 S   s   |   ¡ S ©N©rJ   r9   r   r   r   r;   ÷   r<   z0TestRolling.test_rolling_apply.<locals>.<lambda>©Úrawc                    s   |   d¡jdd„ ˆ d�S )NrQ   c                 S   s   |   ¡ S r•   r–   ©Úyr   r   r   r;   ø   r<   zBTestRolling.test_rolling_apply.<locals>.<lambda>.<locals>.<lambda>r—   )r7   r=   r9   r—   r   r   r;   ø   r<   r   rX   r!   )
r0   r7   r=   rZ   r   r[   r\   r]   r>   r^   )r2   r˜   r%   r4   rG   rB   rA   r`   r   r—   r   Útest_rolling_applyò   s    zTestRolling.test_rolling_applyc                 C   s®   t dgd dgd  dgd dœƒ}| d¡}t dd	d
dddg¡}dd g|_t tjddgd dg|d�}|jdd� ¡ }t	 
||¡ | ¡  |jdd� ¡ }t	 
||¡ d S )Nr)   r   Úbarr   rz   r"   r   )rœ   r   )rœ   rQ   )rœ   rt   )r)   r   )r)   r   )r)   r   ç       @r   r   r}   rR   )r   r0   r   r“   r|   r#   r€   r7   rJ   r>   r^   )r2   r‚   r4   ÚmirA   rB   r   r   r   Útest_rolling_apply_mutability   s    $
ÿ
z)TestRolling.test_rolling_apply_mutabilityzexpected_value,raw_valueTç        Fc                 C   sp   dd„ }t dddgdddgdœƒ}| d¡j d¡j||d�}t|gd tjd	dd gd
�dd�}t 	||¡ d S )Nc                 S   s   t t| tjƒƒS r•   )ÚintÚ
isinstancer#   Zndarrayr9   r   r   r   r)     s    z-TestRolling.test_groupby_rolling.<locals>.foor   r   r   )Úidru   r£   r—   )©r   r   ©r   r   ©r   r   r{   ru   ©r]   Úname)
r   r0   ru   r7   r=   r   r   r“   r>   r?   )r2   Zexpected_valueÚ	raw_valuer)   r‚   rB   rA   r   r   r   Útest_groupby_rolling  s    ýz TestRolling.test_groupby_rollingc                 C   sž  t tddƒƒ}| |¡jddd� ¡ }t tjgd t d¡d�}t	 
||¡ t tddƒƒ}| |¡jddd� ¡ }t tjgd	 t d
¡d�}t	 
||¡ tdgd dgd  tdƒdœƒ}| d¡jddd� ¡ }ttjdddtjtjddddtjgtjddd gd�dgd�}t	 ||¡ tdgd dgd  tdƒdœƒ}| d¡jddd� ¡ }ttjdddtjtjdddtjg
tjddd gd�dgd�}t	 ||¡ d S )Nr   rz   Tr   )ÚcenterrS   rt   )r¤   ©r   r   ©r   r   ©rQ   r   )rt   rQ   r’   rQ   )r¤   r¬   r­   r®   r   r   é   ©r   r   r   é   r    é	   )©r   r   ©r   r   ©r   r   ©r   r   ©r   rQ   ©r   rt   ©r   rz   ©r   r±   ©r   r    ©r   r²   )r   rs   r{   )r]   r~   rs   )
r³   r´   rµ   r¶   r·   r¸   r¹   rº   r»   r¼   )r   r\   r0   r7   r8   r#   r€   r   r“   r>   r?   r   r^   )r2   ZseriesrB   rA   r‚   r   r   r   Ú"test_groupby_rolling_center_center'  sH    
þ
þ" òî"óïz.TestRolling.test_groupby_rolling_center_centerc                 C   sî   t tddƒdgd dgd  tdƒdœd	�}| d
¡jddddd�j ¡ }tddddddddddg
dtj	dt
dƒfdt
dƒfdt
dƒfdt
dƒfdt
dƒfdt
dƒfdt
dƒfdt
dƒfdt
dƒfdt
dƒff
d
dgd �d!�}t ||¡ d S )"Nr   r   Úgroup_1rz   Úgroup_2rQ   rs   )ÚDateÚgbru   )ÚdatarÁ   rÀ   Tr   )Úonr«   rE   r�   ç      ø?r�   g      @ç      @g      @ç      @ç      @ru   r   r   r   z
2020-01-05z
2020-01-06z
2020-01-07z
2020-01-08z
2020-01-09r{   ©r¨   r]   )r   r   r\   r0   r7   ru   r8   r   r   r“   r   r>   r?   ©r2   r‚   rB   rA   r   r   r   Útest_groupby_rolling_center_onh  s@    ýÿ
   ÿ
ÿ









öóýz*TestRolling.test_groupby_rolling_center_onrE   rt   rQ   r   c              
   C   sò   t dgd dgd  tdƒdœƒ}d}| d¡j|d|d	� ¡ }| ¡ dd
g }ddddddddddg
}dd„ |D ƒ}td|d ƒ}tjg| }|||d| …  | }	|||d| …  | }
t dgd dgd  |	|
 dœƒ}t	 
||¡ d S )Nr   rs   r   r   )ÚgrouprÂ   rt   rË   T)r«   rE   rÂ   r�   rÄ   r�   rÅ   rŽ   ç      @g      @rÆ   rÇ   ç       @c                 S   s   g | ]}|d  ‘qS )g      $@r   ©Ú.0r:   r   r   r   Ú
<listcomp>™  s     zGTestRolling.test_groupby_rolling_center_min_periods.<locals>.<listcomp>r   r   )r   r\   r0   r7   r8   Zreset_indexrL   r#   r€   r>   r^   )r2   rE   r‚   Úwindow_sizerB   Z
grp_A_meanZ
grp_B_meanZnum_nansZnansZgrp_A_expectedZgrp_B_expectedrA   r   r   r   Ú'test_groupby_rolling_center_min_periods‹  s&    "
  ÿÿÿz3TestRolling.test_groupby_rolling_center_min_periodsc                 C   sÌ   t ddddgddddgdd	d
d	gdœƒ}| d¡dg  d¡ ¡ }t tjtjdtjgdgtjddd gd�d�}t 	||¡ | d¡d  d¡ ¡ }t
tjtjdtjgtjddd gd�dd�}t ||¡ d S )Nr   r   r   rŽ   r�   rÅ   r�   rs   r   é   r‘   r   r   )r¤   r¬   ©r   r   r­   r{   r}   r§   )r   r0   r7   rL   r#   r€   r   r“   r>   r^   r   r?   rÉ   r   r   r   Útest_groupby_subselect_rolling¦  s.    "ÿ ÿý ÿûz*TestRolling.test_groupby_subselect_rollingc                 C   s’   G dd„ dt ƒ}tddddddgd	 id
gd dgd  dgd  d�}| |j¡j|d	d�dd� ¡ }| |j¡jd	dd� ¡ }t ||¡ d S )Nc                   @   s   e Zd Zddd„ZdS )zFTestRolling.test_groupby_rolling_custom_indexer.<locals>.SimpleIndexerr   Nc                 S   sH   |d kr| j nd}tj|tjd�d }| ¡ | j  }|||dk < ||fS )Nr   ©Zdtyper   )rÑ   r#   r$   Úint64Úcopy)r2   Z
num_valuesrE   r«   ÚclosedÚstepÚendÚstartr   r   r   Úget_window_boundsÂ  s
    zXTestRolling.test_groupby_rolling_custom_indexer.<locals>.SimpleIndexer.get_window_bounds)r   NNNN)Ú__name__Ú
__module__Ú__qualname__rÝ   r   r   r   r   ÚSimpleIndexerÁ  s        úrá   r   r�   r�   rÅ   rŽ   rÌ   r   r   rt   r   r   r’   )rÑ   rD   ©rS   rE   )r	   r   r0   r]   r7   rJ   r>   r^   )r2   rá   r‚   rB   rA   r   r   r   Ú#test_groupby_rolling_custom_indexer¿  s     ÿ ÿÿz/TestRolling.test_groupby_rolling_custom_indexerc                 C   s¦   t tdƒtdƒdddg tdƒgd dœƒ}| d¡jdd	d
d�d  ¡ }ttjddtjddgt	j
dtdƒfgd dtdƒfgd  dd	gd�dd�}t ||¡ d S )Nrz   r   r   r   ú
2019-01-01©Úcolumn1Zcolumn2rË   ÚdaterË   Ú1Drç   Úleft©rÃ   rÙ   ræ   r    r�   r�   rŽ   r{   r§   ©r   r\   r   r0   r7   rJ   r   r#   r€   r   r“   r>   r?   rÉ   r   r   r   Ú'test_groupby_rolling_subset_with_closedÛ  s(    
üÿ	ÿÿýù	z3TestRolling.test_groupby_rolling_subset_with_closedc                 C   s®   t tdƒtdƒdddg tdƒgd dœƒ}| d¡dd	g jd
d	dd�d  ¡ }ttjddtjddgt	j
dtdƒfgd dtdƒfgd  dd	gd�dd�}t ||¡ d S )Nrz   r   r   r   rä   rå   rË   ræ   rç   rè   ré   rê   r    r�   r�   rŽ   r{   r§   rë   rÉ   r   r   r   Ú.test_groupby_subset_rolling_subset_with_closedó  s4    
üÿ
  ÿÿÿÿýù	z:TestRolling.test_groupby_subset_rolling_subset_with_closedr‡   c                 C   s~   t dddgtjdddgddgd�d	d
�}t| |¡ d¡|ƒƒ }t tjtjdgtjdddgd	ddgd�d	d
�}t 	||¡ d S )Nr   r   )r   r:   )r   rš   )r   ÚzÚ1Ú2r{   r   r§   r�   )r   r   r:   )r   r   rš   )r   r   rî   )
r   r   r“   rV   r0   r7   r#   r€   r>   r?   )r2   r‡   ZdsrB   rA   r   r   r   Ú"test_groupby_rolling_index_changed  s$     ÿû ÿûz.TestRolling.test_groupby_rolling_index_changedc                 C   sÞ   t dg iƒ}| d¡jdd� ¡ }|jdd�}tjtg dd�tg dd�gdd gd�|_t	 
||¡ t g g d	œƒ}| dd
g¡jdd� ¡ }|jdd
gd�}tjtg dd�tg dd�tg dd�gdd
d gd�|_t	 
||¡ d S )NÚs1r   rR   ©r~   Úfloat64rÖ   r×   r{   )rò   Ús2rõ   )r   r0   r7   rJ   rZ   r   Zfrom_productr   r]   r>   r^   )r2   rA   rB   r   r   r   Ú test_groupby_rolling_empty_frame#  s&     ÿ


ýúz,TestRolling.test_groupby_rolling_empty_framec                 C   s6  t ddtddddƒgddtddddƒgdd	tddd
dƒgddtddddƒgdd	tddddƒggdddgd� d¡}| d¡}| ¡ |d< |jddd�}| dd„ ¡}t ddtddddƒdgddtddddƒdgddtddddƒdgdd	tddd
dƒdgdd	tddddƒdggddddgd� ddg¡}t ||¡ d S )Nr   r¾   éã  r   r²   r   r   ÚZr¿   r   ÚHrz   ÚEr   r]   rË   Z	eventTimeró   Zcount_to_dateZ10d©rÃ   c                 S   s
   | j d S )Nr   )Úshape©r‚   r   r   r   r;   N  r<   z?TestRolling.test_groupby_rolling_string_index.<locals>.<lambda>r�   r�   rÅ   )	r   r   r   r0   Zcumcountr7   r=   r>   r^   )r2   r‚   ÚgroupsZrolling_groupsrB   rA   r   r   r   Ú!test_groupby_rolling_string_index>  s6    ûø	÷
û
ø	÷
z-TestRolling.test_groupby_rolling_string_indexc                 C   s|   t ddgddgdœƒjddd� d¡ ¡ }t t ddgddgg¡dd	gtjd
dgdd gd�d�}|jdd�}t	 
||¡ d S )Nr   r   )r)   rœ   r)   F)Úsortr�   r�   rœ   )r   r   r¥   r{   r}   ró   )r   r0   r7   rK   r#   Úarrayr   r“   rZ   r>   r^   )r2   rB   rA   r   r   r   Útest_groupby_rolling_no_sort[  s     ÿþÿýz(TestRolling.test_groupby_rolling_no_sortc                 C   sÀ   t tdƒtdƒdddg tddd�dœƒ}| d¡jd	d
dd�d  ¡ }ttjddtjddgdt	j
dtdƒfdtdƒfdtdƒfdtdƒfdtdƒfdtdƒfgdd
gd�d�}t ||¡ d S )Nrz   r   r   r   Z20190101)rÛ   Úperiodsrå   rË   Z3drç   ré   rê   ræ   r�   z
2018-12-27z
2018-12-29z
2018-12-31z
2018-12-28z
2018-12-30rä   r{   rÈ   )r   r\   r   r0   r7   rF   r   r#   r€   r   r“   r   r>   r?   rÉ   r   r   r   Ú$test_groupby_rolling_count_closed_onl  s<    

üÿ	
  ÿÿÿ





ú÷ýz0TestRolling.test_groupby_rolling_count_closed_on)r‡   Úkwargsr7   r   râ   Ú	expandingc                 C   s¤   t ddgddgddgddgddggddgd�}t| d¡|ƒf |Ž ¡ }t tjgd tjdtjddgd	œtjd
ddddgdd gd�d�}|jdd�}t	 
||¡ d S )Nr   r   r   r   r   ró   rt   gÿ••&¥ æ?r°   r³   r´   )r   r   )r   r   ©r   rQ   r{   r’   )r   rV   r0   Zsemr#   r€   r   r“   rZ   r>   r^   )r2   r‡   r  r‚   rB   rA   r   r   r   Útest_groupby_rolling_semŒ  s      ÿ ÿþz$TestRolling.test_groupby_rolling_sem)ÚrollingsÚkeyrÃ   r   Nr]   c              	   C   sp   t tddtjgƒdddgdddgdœƒ}|dkr:| d¡}tjt|› d	�d
�� | d¡j	d|Ž W 5 Q R X d S )Nz2020-06-01 12:00z2020-06-01 14:00r   r   r   r‘   r]   r   z values must not have NaTr'   r   Ú60min)r  )
r   r   r#   r€   r   r-   r.   Ú
ValueErrorr0   r7   )r2   r	  r
  r‚   r   r   r   Ú"test_groupby_rolling_nans_in_index   s    ýÿ
z.TestRolling.test_groupby_rolling_nans_in_indexrP   c                 C   sŠ   dddgdddgg}t j|dd�}tdddg|d�}|jd	d
g|d� d¡ ¡ }tdddgt jdddgd	d
d	d
gd�d�}t ||¡ d S )NÚval1Úval2©rv   rw   r{   r   r   r   r’   rv   rw   rO   r�   r�   rÅ   )r  r  r  r  )r  r  r  r  )	r   r[   r   r0   r7   r8   r“   r>   r?   )r2   rP   Úarraysr]   ÚsrB   rA   r   r   r   Útest_groupby_rolling_group_keys±  s    ý
úþz+TestRolling.test_groupby_rolling_group_keysc                 C   s”   dddgdddgg}t j|dd�}tdddgtdƒdœ|d	�}| d
dg¡ d¡ ¡ }tddddgit jdddgd
dd
dgd�d	�}t 	||¡ d S )Nr  r  r  r{   r   r   r   r"   r’   rv   r   r   r    r�   r�   )r  r   r  r  )r  r   r  r  rw   )
r   r[   r   r\   r0   r7   r8   r“   r>   r^   ©r2   r  r]   r‚   rB   rA   r   r   r   Ú1test_groupby_rolling_index_level_and_column_labelÈ  s    ý
úþz=TestRolling.test_groupby_rolling_index_level_and_column_labelc              	   C   sd   t t d¡ddgd dœƒ}| d¡ d¡ ¡ }tjdd	d
dddddgdd gd�}t 	|j
|¡ d S )NrÍ   r   r   rQ   r°   r   r   r¤   r¦   )r   rQ   )r   rz   r¬   rÔ   )r   rt   )r   r±   r{   )r   r#   r$   r0   r7   r8   r   r“   r>   Úassert_index_equalr]   ©r2   r‚   rB   r`   r   r   r   Ú)test_groupby_rolling_resulting_multiindexÜ  s    þz5TestRolling.test_groupby_rolling_resulting_multiindexc                 C   s€   t t d¡ddgd ddddgd dœƒ}| dd	g¡ d¡ ¡ }tjd
dddddddddddgdd	d gd�}t 	|j
|¡ d S )Ng      (@r   r   rz   r   rQ   r‘   r   r   )r   r   r   )r   r   rQ   )r   r   r    )r   r   r   )r   r   rz   )r   r   rs   )r   r   r   )r   r   rt   )r   r   r²   )r   rQ   r   )r   rQ   r±   )r   rQ   r¯   r{   )r   r#   r$   r0   r7   rJ   r   r“   r>   r  r]   r  r   r   r   Ú*test_groupby_rolling_resulting_multiindex2é  s&    *ôñz6TestRolling.test_groupby_rolling_resulting_multiindex2c              	   C   s†   t t d¡ddgd ddddgd dœƒ}|jddd	�}| d
¡ d¡ ¡ }tjddddddddgd
d dgd�}t	j
|j|dd� d S )NrÍ   r   r   rQ   r   r‘   r   T)Úappendr   )r   r   r   )r   r   r   )r   rQ   r   )r   rz   r   )r   r   r   )r   r   rQ   )r   rt   r   )r   r±   rQ   r{   Úequiv)Úexact)r   r#   r$   r   r0   r7   r8   r   r“   r>   r  r]   r  r   r   r   Ú*test_groupby_rolling_resulting_multiindex3   s     *ø
õz6TestRolling.test_groupby_rolling_resulting_multiindex3c                 C   s`   |j ddd�}| dd„ ¡j}|jdd�}| dd„ ¡j}t ||¡ |jrPt‚|jjr\t‚d S )	Nr   FrO   c                 S   s   |   d¡ ¡ S rT   ©r7   rJ   r9   r   r   r   r;     r<   zUTestRolling.test_groupby_rolling_object_doesnt_affect_groupby_apply.<locals>.<lambda>rQ   rR   c                 S   s   |   d¡ ¡ S rT   r  r9   r   r   r   r;     r<   )	r0   r=   r]   r7   r>   r  r,   r1   Zgrouper)r2   r%   r4   rA   Ú_rB   r   r   r   Ú7test_groupby_rolling_object_doesnt_affect_groupby_apply  s    
zCTestRolling.test_groupby_rolling_object_doesnt_affect_groupby_apply)rS   rE   rÙ   rA   r   ré   ÚrightrÌ   c                 C   s®   t ddddddddgƒ}| ddddddddg¡j|||d	� d
¡}t tj|dd�tddgd
dddddddggd
d
d
d
ddddgd
dddddddggd�d�}t ||¡ d S )Nr   r   r   rQ   rt   rz   r±   r    )rS   rE   rÙ   r   rô   rÖ   )ZlevelsÚcodesr’   )	r   r0   r7   rc   r#   r  r   r>   r^   )r2   rS   rE   rÙ   rA   r‚   rB   Zexpected_resultr   r   r   Útest_groupby_rolling_var  s"    
  ÿþÿ&þþz$TestRolling.test_groupby_rolling_varr~   )r   Ú )r   r   r   r   c                 C   s|   t ddggd ddggd  ddggd  |d�}| d	¡}|jjd
d�}| d¡}| ¡ }d	|jksjt‚t 	|j|¡ d S )Nr   r   r   r   r   r   r    ró   r   T)ÚdeeprQ   )
r   r0   ÚobjrØ   r7   rJ   r~   r1   r>   r^   )r2   r~   r‚   r4   Zoriginal_objrG   rB   r   r   r   Útest_by_column_not_in_values7  s    2

z(TestRolling.test_by_column_not_in_valuesc                 C   sš   ddddgddddgg}t j|dd�}tddd	d
dgi|d�}|jdd�d  d¡ ¡ }ttjdtjdgt j	ddddgdddgd�dd�}t
 ||¡ d S )NÚFalconÚParrotÚCaptiveÚWild)ÚAnimalÚTyper{   z	Max Speedg     `x@g     àu@g      >@g      4@r’   r   rx   r   g      ‡@g      I@)r(  r(  r*  )r(  r(  r+  )r)  r)  r*  )r)  r)  r+  r,  r-  r§   )r   r[   r   r0   r7   rJ   r   r#   r€   r“   r>   r?   r  r   r   r   Útest_groupby_levelD  s&    

þüù	õzTestRolling.test_groupby_levelzby, expected_datar£   Únumç      Y@ç     Àb@ç      i@ú
2018-01-01ú
2018-01-02ç     @o@)rç   r/  c                    s¸   dddgdddgdddgdddgg}t |d	d
dgd�‰ tˆ d
 ƒˆ d
< ˆ  d
g¡‰ ‡ fdd„|D ƒ}ˆ j|dd�jddd� ¡ }d	ddddgi}| |¡ t |ˆ jd�}t 	||¡ d S )Nr   r3  r0  r4  r2  r   r1  r5  r£   rç   r/  ró   c                    s   g | ]}t ˆ |ƒ‘qS r   )rV   )rÏ   Úattrrý   r   r   rÐ   z  s     z3TestRolling.test_as_index_false.<locals>.<listcomp>F)Zas_indexr   r   râ   r’   )
r   r   r   r0   r7   r8   Úupdater]   r>   r^   )r2   r+   r„   rÂ   Zgp_byrB   rA   r   rý   r   Útest_as_index_false\  s$    üÿ
þzTestRolling.test_as_index_falsec                 C   s²   d}t  d|¡}d|d< d}t  ||¡}t j|d< d|d< t||dœƒ d¡}| d¡d jd	dd
� ¡ }t|dt	j
dgd dg dgd dg gddgd�d�}t ||¡ d S )Néè  r   r   éÿÿÿÿg52·ô­DE)r]   Úadl2r]   r;  rs   râ   iç  r{   rÈ   )r#   Úrepeatr€   r   r   r0   r7   r8   r   r   r[   r>   r?   )r2   ÚsizeÚidxÚvalZarrr‚   rB   rA   r   r   r   Útest_nan_and_zero_endpoints‡  s0    
þÿû ÿýz'TestRolling.test_nan_and_zero_endpointsc              	      sX   ddddg}d‰ t ‡ fdd„|D ƒƒ}tjtdd	�� | d
¡jddd� W 5 Q R X d S )Nr   r   r   r   r9  c                    s(   g | ] }t d | ˆ  ƒ|d ddœ‘qS )r   r   é*   )Útr:   r   ©r   rÎ   ©Úsecr   r   rÐ   ¨  s     zBTestRolling.test_groupby_rolling_non_monotonic.<locals>.<listcomp>z.* must be monotonicr'   r   rB  Z3s)rÃ   rS   )r   r-   r.   r  r0   r7   )r2   Zshuffledr‚   r   rD  r   Ú"test_groupby_rolling_non_monotonic¢  s    ÿz.TestRolling.test_groupby_rolling_non_monotonicc                 C   sÆ   dddgdddgdddgdddgd	d
dgd	ddgd	ddgdddgdddgdddgg
}t |dddgd�}t|d ƒ|d< | d¡}| d¡ d¡ dd„ ¡}| d¡jddd�d  ¡ }t 	||¡ d S )NZDavidz1/1/2015éd   z1/5/2015iô  z	5/30/2015é2   z	7/25/2015ZRyanz1/4/2014z	1/19/2015z	3/31/2016ZJoez7/1/2015z9/9/2015z
10/15/2015r¨   rç   Úamount)rÂ   r~   c                 S   s   |   d¡d  ¡ S )NÚ180DrI  r  r9   r   r   r   r;   É  r<   z4TestRolling.test_groupby_monotonic.<locals>.<lambda>rJ  rû   )
r   r   Zsort_valuesr   r0   r=   r7   rJ   r>   r?   )r2   rÂ   r‚   rA   rB   r   r   r   Útest_groupby_monotonic­  s,    	ö

ÿþÿz"TestRolling.test_groupby_monotonicc                 C   sŒ   t dddd�}tdgd dgd  dgd	  t ||f¡t d
¡dœƒ}| d¡ d¡ dd„ ¡}| d¡jddd�j	 
¡ }t ||¡ d S )Nz2016-01-01 09:30:00r   r  )rÜ   r  Úfreqr   r   r   r   r    r!   r   r   r   c                 S   s   |   d¡d  ¡ S )NÚ4sr   r6   r9   r   r   r   r;   Þ  r<   zJTestRolling.test_datelike_on_monotonic_within_each_group.<locals>.<lambda>rM  rû   )r   r   r#   Zconcatenater$   r   r0   r=   r7   r   r8   r>   r?   )r2   Údatesr‚   rA   rB   r   r   r   Ú,test_datelike_on_monotonic_within_each_groupÎ  s    ýÿ	ÿz8TestRolling.test_datelike_on_monotonic_within_each_groupc              	   C   sd   t dgd dgd  dd„ dD ƒd tdƒdœƒ}tjtd	d
�� | d¡jddd� W 5 Q R X d S )Nr   r   r   c                 S   s   g | ]}t |d d ƒ‘qS )r   rC  )rÏ   Úyearr   r   r   rÐ   è  s     zPTestRolling.test_datelike_on_not_monotonic_within_each_group.<locals>.<listcomp>)iä  iå  r÷   rz   r   z&Each group within B must be monotonic.r'   r   Z365Dr   rû   )r   r\   r-   r.   r  r0   r7   )r2   r‚   r   r   r   Ú0test_datelike_on_not_monotonic_within_each_groupã  s    ýÿz<TestRolling.test_datelike_on_not_monotonic_within_each_group)5rÞ   rß   rà   r5   rC   rH   r-   ÚmarkÚparametrizeÚparamÚfilterwarningsra   re   ro   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   r8  r@  rF  rK  rO  rQ  r   r   r   r   r&   0   sÔ   
þöþ

 ÿ



&þ
 
A#

 þ
 ÿ


üþ	
 ÿ

ü
ùþþþ
!r&   c                
   @   s”   e Zd Zdd„ Zej ddddddd	d
g¡dd„ ƒZej dddg¡dd„ ƒZej ddddddg¡dd„ ƒZ	ej dddg¡dd„ ƒZ
dd„ ZdS ) ÚTestExpandingc                 C   s4   t dgd dgd  dgd  t d¡dœƒ| _d S r   )r   r#   r$   Úframe)r2   r   r   r   Úsetup_methodñ  s    zTestExpanding.setup_methodrI   rJ   r8   rK   rL   rF   rM   rN   c                    sr   | j jddd�}| ¡ }t|ˆ ƒƒ }| ‡ fdd„¡}|jddd�}t | j d tdƒg¡}||_	t
 ||¡ d S )	Nr   FrO   c                    s   t |  ¡ ˆ ƒƒ S r•   ©rV   r  r9   rW   r   r   r;   ü  r<   z.TestExpanding.test_expanding.<locals>.<lambda>r   rX   r!   ©rW  r0   r  rV   r=   rZ   r   r[   r\   r]   r>   r^   ©r2   rI   r4   rG   rB   rA   r`   r   rW   r   Útest_expandingô  s    zTestExpanding.test_expandingrb   rc   c                    sv   | j jddd�}| ¡ }t|ˆ ƒdd�}| ‡ fdd„¡}|jddd	�}t | j d td
ƒg¡}||_	t
 ||¡ d S )Nr   FrO   r   rd   c                    s   t |  ¡ ˆ ƒdd�S )Nr   rd   rY  r9   rW   r   r   r;   
  r<   z3TestExpanding.test_expanding_ddof.<locals>.<lambda>r   rX   r!   rZ  r[  r   rW   r   Útest_expanding_ddof  s    z!TestExpanding.test_expanding_ddofrf   rg   rh   ri   rj   rk   c                    st   | j jddd�}| ¡ }|jdˆ d�}| ‡ fdd„¡}|jddd	�}t | j d td
ƒg¡}||_	t
 ||¡ d S )Nr   FrO   rl   rm   c                    s   |   ¡ jdˆ d�S )Nrl   rm   )r  rn   r9   rm   r   r   r;     r<   z7TestExpanding.test_expanding_quantile.<locals>.<lambda>r   rX   r!   )rW  r0   r  rn   r=   rZ   r   r[   r\   r]   r>   r^   )r2   rf   r4   rG   rB   rA   r`   r   rm   r   Útest_expanding_quantile  s    
ÿz%TestExpanding.test_expanding_quantilerp   rq   c                    s¶   ˆj  d¡}| ¡ }t|ˆ ƒˆj ƒ}‡ ‡fdd„}| |¡}ttddƒƒttddƒƒ }tj|j	|df< tj|d< t
 ||¡ t|jˆ ƒd	d
�}‡ fdd„}| |¡}t
 ||¡ d S )Nr   c                    s   t |  ¡ ˆ ƒˆjƒS r•   )rV   r  rW  r9   ©rI   r2   r   r   r‡   +  s    z3TestExpanding.test_expanding_corr_cov.<locals>.funcr   é=   éH   éq   r   TrŠ   c                    s   t | j ¡ ˆ ƒdd�S )NTrŠ   )rV   r   r  r9   rW   r   r   r‡   :  s    )rW  r0   r  rV   r=   r�   r\   r#   r€   Zilocr>   r^   r   r?   )r2   rI   r4   rG   rB   r‡   rA   Znull_idxr   r_  r   Útest_expanding_corr_cov$  s    


z%TestExpanding.test_expanding_corr_covc                    sx   | j jddd�}| ¡ }|jdd„ ˆ d�}| ‡ fdd„¡}|jddd	�}t | j d td
ƒg¡}||_t	 
||¡ d S )Nr   FrO   c                 S   s   |   ¡ S r•   r–   r9   r   r   r   r;   E  r<   z4TestExpanding.test_expanding_apply.<locals>.<lambda>r—   c                    s   |   ¡ jdd„ ˆ d�S )Nc                 S   s   |   ¡ S r•   r–   r™   r   r   r   r;   F  r<   zFTestExpanding.test_expanding_apply.<locals>.<lambda>.<locals>.<lambda>r—   )r  r=   r9   r—   r   r   r;   F  r<   r   rX   r!   )rW  r0   r  r=   rZ   r   r[   r\   r]   r>   r^   )r2   r˜   r4   rG   rB   rA   r`   r   r—   r   Útest_expanding_apply@  s    z"TestExpanding.test_expanding_applyN)rÞ   rß   rà   rX  r-   rR  rS  r\  r]  r^  rc  rd  r   r   r   r   rV  ð  s     ÿ

 ÿ

rV  c                
   @   s¦   e Zd Zej ddddddggdejdd	d
ggdejdddggg¡dd„ ƒZej ddejdddggdejdddggg¡dd„ ƒZ	dd„ Z
dd„ Zdd„ Zdd „ Zd!S )"ÚTestEWMzmethod, expected_datar8   r    gUUUUUUå?g·mÛ¶mÛö?g""""""@rb   g»¹øÛž æ?g¦€´ÿÖî?gët ë©Õò?rc   rr   gnÛ¶mÛ¶í?g¾â+¾â+ö?c              	      sª   t dgd tdƒdœƒ}t| d¡jdd�ˆ ƒƒ }t d|itjdd	d
dgdd gd�d�}t ||¡ tj	t
dd��" |jddd� ‡ fdd„¡}W 5 Q R X t ||¡ d S )Nr   rQ   r"   r   r�   ©Úcomr   r³   r´   rµ   r¶   r{   r’   Únuisancer'   TrO   c                    s   t | jdd�ˆ ƒƒ S ©Nr�   rf  ©rV   Úewmr9   ©Úmethodr   r   r;   m  r<   z&TestEWM.test_methods.<locals>.<lambda>)r   r\   rV   r0   rk  r   r“   r>   r^   Úassert_produces_warningÚFutureWarningr=   ©r2   rm  r„   r‚   rB   rA   r   rl  r   Útest_methodsP  s&    
üùþ
ÿzTestEWM.test_methodsrp   r�   r   rq   gÒr ‡Ú¶í?gß¿yqâ+ö?c                    sŽ   t dgd tdƒdœƒ}t| d¡jdd�ˆ ƒƒ }t d|itjdd	d
dgdd d gd�d�}t ||¡ | d¡ 	‡ fdd„¡}t ||¡ d S )Nr   rQ   r"   r   r�   rf  r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   r{   r’   c                    s   t | jdd�ˆ ƒƒ S ri  rj  r9   rl  r   r   r;   ‡  r<   z/TestEWM.test_pairwise_methods.<locals>.<lambda>)
r   r\   rV   r0   rk  r   r“   r>   r^   r=   rp  r   rl  r   Útest_pairwise_methodsq  s     üùþzTestEWM.test_pairwise_methodsc                 C   sŒ   d}t jtdd�� | d¡j|dd� ¡ }W 5 Q R X tddd	d
dddddddg
itjddddddddddg
dd gd�d�}t  	||¡ d S )Nú23 daysrh  r'   r   r   ©ÚhalflifeÚtimesr   r    gCusñ·=à?g;¬pËGRð?gÀZµkBšø?gÕ>�(â?g8KÉrŠó?gÒ§Uô‡æä?gAó9w»ó?r³   r¶   )r   rz   )r   r²   )r   r   r  rº   )r   r   )r   rt   )r   r    r{   r’   )
r>   rn  ro  r0   rk  r8   r   r   r“   r^   )r2   r   ru  rB   rA   r   r   r   Ú
test_timesŠ  sB    "öÿöóñzTestEWM.test_timesc              	      sb   d‰ t jtdd��: | d¡jˆ dd� ¡ }|jddd� ‡ fd	d
„¡}W 5 Q R X t  ||¡ d S )Nrs  rh  r'   r   r   rt  TrO   c                    s   | j ˆ dd� ¡ S )Nr   rt  )rk  r8   r9   ©ru  r   r   r;   ¸  r<   z-TestEWM.test_times_vs_apply.<locals>.<lambda>)r>   rn  ro  r0   rk  r8   r=   r^   )r2   r   rB   rA   r   rx  r   Útest_times_vs_apply±  s    
ÿzTestEWM.test_times_vs_applyc              	   C   sb   d}|  d¡}tjtdd��0 |j|dd� ¡ }|j||d jd� ¡ }W 5 Q R X t ||¡ d S )Nrs  r   rh  r'   r   rt  )r0   r>   rn  ro  rk  r8   Úvaluesr^   )r2   r   ru  rÁ   rB   rA   r   r   r   Útest_times_array¼  s    
"zTestEWM.test_times_arrayc              	   C   s   t dddddgtdddd�tdƒdœƒ}| d¡jd	d
d�}| ¡ }t tdddd�dgd dœtjdddddgttdƒƒgdd gd�d�}t	 
||¡ |d  ¡ }tdgd tjdddddgtdddd�gdd
gd�dd�}t	 ||¡ | ¡ }t	 
||¡ d S )Nr   r   z2021-9-1rt   rù   )r  rL  )r£   Ú	timestamprš   r£   Z1Hr|  rû   r�   )r|  rš   r{   r’   rš   r§   )r   r   r\   r0   r7   rF   r   r[   r�   r>   r^   r   r?   )r2   r‚   ÚgrprB   Zexpected_dfZexpected_seriesr   r   r   Ú"test_dont_mutate_obj_after_slicingÆ  s@    ýÿþ ÿû	þû÷z*TestEWM.test_dont_mutate_obj_after_slicingN)rÞ   rß   rà   r-   rR  rS  r#   r€   rq  rr  rw  ry  r{  r~  r   r   r   r   re  O  s"   ýþ
"þ
'
re  )Únumpyr#   r-   Zpandasr   r   r   r   r   r   r   Zpandas._testingZ_testingr>   Zpandas.api.indexersr	   Zpandas.core.groupby.groupbyr
   Zfixturer   r%   r&   rV  re  r   r   r   r   Ú<module>   s&   $	

       G_