a
    oÝEb}Ÿ  ã                   @   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 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                   @   sH  e Zd Zd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g d¢¡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-d.„ Zd/d0„ Zej 	d1d)d2gd3d4gg¡d5d6„ ƒZd7d8„ Zd9d:„ Zej 	d;g d<¢¡d=d>„ ƒZd?d@„ ZdAdB„ ZdCdD„ ZdEdF„ Zej 	dGddg¡dHdI„ ƒZdJdK„ ZdLdM„ ZdNdO„ Z dPdQ„ Z!ej 	dRdSdTddUœfdVi fg¡dWdX„ ƒZ"ej 	dYdZd[id[fdZd\id]fg¡d^d_„ ƒZ#ej 	d`d2d4g¡dadb„ ƒZ$dcdd„ Z%dedf„ Z&dgdh„ Z'didj„ Z(dkdl„ Z)ej 	dmdTdndog dp¢fdTdTdog dq¢fdrdrdog ds¢fdrdrdtg du¢fg¡dvdw„ ƒZ*ej 	dxe+ ,dydzg¡d{d|gg¡d}d~„ ƒZ-dd€„ Z.ej 	d�d‚gdƒg d„¢igd‚d]ge/d…ƒe/d†ƒe/d…ƒe/d†ƒgg d‡¢dˆœgg¡d‰dŠ„ ƒZ0d‹dŒ„ Z1d\S )�ÚTestRollingc                 C   s4   t dgd dgd  dgd  t d¡dœƒ| _d S ©	Né   é   é   é   é   é   é(   ©ÚAÚB©r   ÚnpÚarangeÚframe©Úself© r   ú`/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/window/test_groupby.pyÚsetup_method   s    zTestRolling.setup_methodc                 C   sv   d}t jt|d��  | jjddd� W d   ƒ n1 s80    Y  | j d¡}|jrXJ ‚t| jddd�}|jsrJ ‚d S )Nz4groupby\(\) got an unexpected keyword argument 'foo'©Úmatchr   r   )ÚfooT©ÚbyÚmutated)ÚpytestÚraisesÚ	TypeErrorr   Úgroupbyr%   r
   )r   ÚmsgÚgr   r   r   Útest_mutated   s    .
zTestRolling.test_mutatedc                 C   s¬   | j  d¡}t| j ddd�}|j dd„ ¡}| d¡ ¡ j}t ||¡ | d¡j ¡ }t ||¡ |j d¡ ¡ }t ||¡ | j j | 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   )
r   r)   r
   r   Úapplyr-   r.   ÚtmÚassert_series_equalr   )r   r+   Ú	g_mutatedÚexpectedÚresultr   r   r   Útest_getitem!   s    zTestRolling.test_getitemc                 C   sj   | j  d¡}|jddd�}t| j 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   r:   )r-   Úcountr/   r   r   r   r1   9   r2   z3TestRolling.test_getitem_multiple.<locals>.<lambda>)	r   r)   r-   r
   r   r3   r<   r4   r5   )r   r+   Úrr6   r7   r8   r   r   r   Útest_getitem_multiple3   s    

z!TestRolling.test_getitem_multipleÚfÚsumr.   ÚminÚmaxr<   z ignore:min_periods:FutureWarning)ZmarksÚkurtÚskewc                    sr   | j  d¡}|jdd�}t|ˆ ƒƒ }| ‡ fdd„¡}|jddd�}t | j d tdƒg¡}||_	t
 ||¡ d S )	Nr   é   ©Úwindowc                    s   t |  d¡ˆ ƒƒ S ©NrE   ©Úgetattrr-   r/   ©r?   r   r   r1   U   r2   z*TestRolling.test_rolling.<locals>.<lambda>r   ©Zaxisr   ©r   r)   r-   rJ   r3   Údropr   Úfrom_arraysÚrangeÚindexr4   Úassert_frame_equal©r   r?   r+   r=   r8   r7   Úexpected_indexr   rK   r   Útest_rollingA   s    zTestRolling.test_rollingÚstdÚvarc                    sv   | j  d¡}|jdd�}t|ˆ ƒdd�}| ‡ fdd„¡}|jddd�}t | j d td	ƒg¡}||_	t
 ||¡ d S )
Nr   rE   rF   r   ©Zddofc                    s   t |  d¡ˆ ƒdd�S )NrE   r   rX   rI   r/   rK   r   r   r1   c   r2   z/TestRolling.test_rolling_ddof.<locals>.<lambda>rL   r   rM   rS   r   rK   r   Útest_rolling_ddof]   s    zTestRolling.test_rolling_ddofÚinterpolation©ZlinearÚlowerZhigherZmidpointZnearestc                    st   | j  d¡}|jdd�}|jdˆ d�}| ‡ fdd„¡}|jddd	�}t | j d td
ƒg¡}||_	t
 ||¡ d S )Nr   rE   rF   çš™™™™™Ù?©rZ   c                    s   |   d¡jdˆ d�S )NrE   r]   r^   )r-   Úquantiler/   r^   r   r   r1   t   r2   z3TestRolling.test_rolling_quantile.<locals>.<lambda>r   rL   r   )r   r)   r-   r_   r3   rN   r   rO   rP   rQ   r4   rR   ©r   rZ   r+   r=   r8   r7   rT   r   r^   r   Útest_rolling_quantilek   s    
ÿz!TestRolling.test_rolling_quantilezf, expected_valÚcorrr   Úcovç      à?c              
   C   sæ   t tdƒdgd dgd  g d¢d dœƒ ddg¡}t tdƒg d¢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g d¢d�d�}t ||¡ d S )Né
   r   é   r   )r   r   r   rE   rf   )ÚvalueÚidx1Úidx2rh   ri   )rg   ri   r   ©ÚlevelrE   rg   é   )rh   rh   ri   ©Únames©ÚcolumnsrQ   )r   rP   Ú	set_indexrJ   r)   r-   r   Únanr   rO   Úlistr4   rR   )r   r?   Zexpected_valÚdfÚotherr8   Úexpected_datar7   r   r   r   Ú/test_rolling_corr_cov_other_same_size_as_groups}   s,    &ÿþÿýúýz;TestRolling.test_rolling_corr_cov_other_same_size_as_groupsc                    sZ   ˆj  d¡}|jdd�}t|ˆ ƒˆj ƒ}‡ ‡fdd„}| |¡}tj|d< t ||¡ d S )Nr   rE   rF   c                    s   t |  d¡ˆ ƒˆjƒS rH   )rJ   r-   r   r/   ©r?   r   r   r   Úfunc�   s    zITestRolling.test_rolling_corr_cov_other_diff_size_as_groups.<locals>.func)	r   r)   r-   rJ   r3   r   rr   r4   rR   ©r   r?   r+   r=   r8   ry   r7   r   rx   r   Ú/test_rolling_corr_cov_other_diff_size_as_groups–   s    

z;TestRolling.test_rolling_corr_cov_other_diff_size_as_groupsc                    sP   | j  d¡}|jdd�}t|jˆ ƒdd�}‡ fdd„}| |¡}t ||¡ d S )Nr   rE   rF   T©Úpairwisec                    s   t | j d¡ˆ ƒdd�S )NrE   Tr|   )rJ   r   r-   r/   rK   r   r   ry   ­   s    z8TestRolling.test_rolling_corr_cov_pairwise.<locals>.func)r   r)   r-   rJ   r   r3   r4   r5   rz   r   rK   r   Útest_rolling_corr_cov_pairwise¦   s    
z*TestRolling.test_rolling_corr_cov_pairwisezfunc, expected_valuesç      ð?ç      @c                 C   s¤   t g d¢g d¢g d¢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g d¢g d¢d�d�}t 	||¡ d S )N)Úg1Úg2r�   r�   )r   r   r   r   )r   r   rl   rE   ©ÚaÚbÚcr„   r   rE   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„   NNrm   ©rQ   )
r   r)   r-   rJ   r   rr   r   Úfrom_tuplesr4   rR   )r   ry   Zexpected_valuesrt   Zrolr8   r7   r   r   r   Útest_rolling_corr_cov_unordered³   s$    ýÿþ
õûz+TestRolling.test_rolling_corr_cov_unorderedc                    sx   | j  d¡}|jdd�}|jdd„ ˆ d�}| ‡ fdd„¡}|jddd	�}t | j d td
ƒg¡}||_t	 
||¡ d S )Nr   rE   rF   c                 S   s   |   ¡ S ©N©r@   r/   r   r   r   r1   Ü   r2   z0TestRolling.test_rolling_apply.<locals>.<lambda>©Úrawc                    s   |   d¡jdd„ ˆ d�S )NrE   c                 S   s   |   ¡ S rŠ   r‹   ©Úyr   r   r   r1   Ý   r2   zBTestRolling.test_rolling_apply.<locals>.<lambda>.<locals>.<lambda>rŒ   )r-   r3   r/   rŒ   r   r   r1   Ý   r2   r   rL   r   )r   r)   r-   r3   rN   r   rO   rP   rQ   r4   rR   ©r   r�   r+   r=   r8   r7   rT   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 g d¢¡}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   rl   r   r   ))r’   r   )r’   rE   )r’   rf   )r"   r   )r"   r   )r"   r   ç       @r   r   ro   rF   )r   r)   r   rˆ   rn   r   rr   r-   r@   r4   rR   )r   rt   r+   Úmir7   r8   r   r   r   Útest_rolling_apply_mutabilityå   s    $
ÿ
z)TestRolling.test_rolling_apply_mutabilityzexpected_value,raw_valueTç        Fc                 C   sl   dd„ }t g d¢g d¢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ndarrayr/   r   r   r   r"      s    z-TestRolling.test_groupby_rolling.<locals>.foo©r   r   r   ©r   r   r   )Úidrg   r›   r   rŒ   r   )©r   r   ©r   r   ©r   r   rm   rg   ©rQ   Úname)
r   r)   rg   r-   r3   r   r   rˆ   r4   r5   )r   Zexpected_valueZ	raw_valuer"   rt   r8   r7   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   rl   Tr   )ÚcenterrG   rf   )rœ   ©r   r   ©r   r   ©rE   r   )rf   rE   r‡   rE   )rœ   r£   r¤   r¥   r„   r…   é   ©r„   r…   r   é   r   é	   )©r„   r   ©r„   r   ©r„   r   ©r„   r   ©r„   rE   ©r…   rf   ©r…   rl   ©r…   r¨   ©r…   r   ©r…   r©   )r…   re   rm   )rQ   rp   re   )
rª   r«   r¬   r­   r®   r¯   r°   r±   r²   r³   )r   rP   r)   r-   r.   r   rr   r   rˆ   r4   r5   r   rR   )r   Zseriesr8   r7   rt   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g d¢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 )Nz
2020-01-01z
2020-01-10Úgroup_1rl   Úgroup_2rE   re   )ÚDateÚgbrg   )Údatar¸   r·   Tr   )Úonr¢   r;   )
r   ç      ø?r“   g      @ç      @g      @ç      @ç      @r¾   r¾   rg   z
2020-01-02z
2020-01-03z
2020-01-04z
2020-01-05z
2020-01-06z
2020-01-07z
2020-01-08z
2020-01-09rm   ©r    rQ   )r   r   rP   r)   r-   rg   r.   r   r   rˆ   r   r4   r5   ©r   rt   r8   r7   r   r   r   Útest_groupby_rolling_center_onM  s:    ýÿ
ÿ
ÿ









öóýz*TestRolling.test_groupby_rolling_center_onr;   )rf   rE   r   c                 C   sâ   t dgd dgd  tdƒdœƒ}d}| d¡j|d|d	� ¡ }| ¡ dd
g }g d¢}dd„ |D ƒ}td|d ƒ}tjg| }|||d| …  | }	|||d| …  | }
t dgd dgd  |	|
 dœƒ}t	 
||¡ d S )Nr   re   r   r   )Úgroupr¹   rf   rÂ   T)r¢   r;   r¹   )
r   r»   r“   r¼   r€   ç      @g      @r½   r¾   ç       @c                 S   s   g | ]}|d  ‘qS )g      $@r   )Ú.0r0   r   r   r   Ú
<listcomp>~  r2   zGTestRolling.test_groupby_rolling_center_min_periods.<locals>.<listcomp>r   r   )r   rP   r)   r-   r.   Úreset_indexrB   r   rr   r4   rR   )r   r;   rt   Úwindow_sizer8   Z
grp_A_meanZ
grp_B_meanZnum_nansZnansZgrp_A_expectedZgrp_B_expectedr7   r   r   r   Ú'test_groupby_rolling_center_min_periodsp  s"    "
ÿÿÿz3TestRolling.test_groupby_rolling_center_min_periodsc                 C   sÀ   t g d¢g d¢g d¢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 )N)r   r   r   r   )r€   r“   r¼   r   )re   r   é   r   rƒ   r„   r…   r   r“   )rœ   r£   ©r   r   r¤   rm   ro   rŸ   )r   r)   r-   rB   r   rr   r   rˆ   r4   rR   r   r5   rÀ   r   r   r   Útest_groupby_subselect_rolling‹  s*    ÿÿýÿûz*TestRolling.test_groupby_subselect_rollingc                 C   sŒ   G dd„ dt ƒ}tdg d¢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 u r| j nd}tj|tjd�d }| ¡ | j  }|||dk < ||fS )Nr   ©Zdtyper   )rÈ   r   r   Úint64Úcopy)r   Z
num_valuesr;   r¢   ÚclosedÚendÚstartr   r   r   Úget_window_bounds§  s
    zXTestRolling.test_groupby_rolling_custom_indexer.<locals>.SimpleIndexer.get_window_bounds)r   NNN)Ú__name__Ú
__module__Ú__qualname__rÓ   r   r   r   r   ÚSimpleIndexer¦  s    ÿr×   r„   )r   r“   r¼   r€   rÃ   r   r   rf   r   r   r‡   )rÈ   r:   ©rG   r;   )r	   r   r)   rQ   r-   r@   r4   rR   )r   r×   rt   r8   r7   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 )Nrl   r   r   r   ú
2019-01-01©Úcolumn1Zcolumn2rÂ   ÚdaterÂ   Ú1DrÝ   Úleft©rº   rÐ   rÜ   r–   r“   r   r€   rm   rŸ   ©r   rP   r   r)   r-   r@   r   r   rr   r   rˆ   r4   r5   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 )Nrl   r   r   r   rÚ   rÛ   rÂ   rÜ   rÝ   rÞ   rß   rà   r–   r“   r   r€   rm   rŸ   rá   rÀ   r   r   r   Ú.test_groupby_subset_rolling_subset_with_closedÓ  s0    
üÿ
ÿÿÿÿýù	z:TestRolling.test_groupby_subset_rolling_subset_with_closedry   c                 C   sv   t g d¢tjg d¢ddgd�dd�}t| |¡ d¡|ƒƒ }t tjtjd	gtjg d
¢g d¢d�dd�}t 	||¡ d S )N)r   r   r   ))r„   r0   )r„   r�   )r†   ÚzÚ1Ú2rm   r„   rŸ   r   r“   ))r   r„   r0   )r   r„   r�   )r   r†   rä   )r„   rå   ræ   )
r   r   rˆ   rJ   r)   r-   r   rr   r4   r5   )r   ry   Zdsr8   r7   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g d¢d�|_t	 
||¡ d S )NÚs1r   rF   ©rp   Úfloat64rÍ   rÎ   rm   )rè   Ús2rë   )rè   rë   N)r   r)   r-   r@   rN   r   Zfrom_productr   rQ   r4   rR   )r   r7   r8   r   r   r   Ú test_groupby_rolling_empty_frame  s$    ÿ


ýúz,TestRolling.test_groupby_rolling_empty_framec                 C   s0  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g d¢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g d¢d� ddg¡}t ||¡ d S )Nr   rµ   iã  r   r©   r   r   ÚZr¶   r   ÚHrl   ÚEr   )rQ   rÂ   Ú	eventTimeré   rQ   rÂ   Úcount_to_dateZ10drð   ©rº   c                 S   s
   | j d S )Nr   )Úshape©rt   r   r   r   r1   .  r2   z?TestRolling.test_groupby_rolling_string_index.<locals>.<lambda>r   r“   r¼   )rQ   rÂ   rð   rñ   )	r   r   rq   r)   Zcumcountr-   r3   r4   rR   )r   rt   ÚgroupsZrolling_groupsr8   r7   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�   rm   ro   ré   )r   r)   r-   rA   r   Úarrayr   rˆ   rN   r4   rR   )r   r8   r7   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 )Nrl   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Ú   rm   r¿   )r   rP   r   r)   r-   r<   r   r   rr   r   rˆ   r   r4   r5   rÀ   r   r   r   Ú$test_groupby_rolling_count_closed_onL  s8    

üÿ	
ÿÿÿ





ú÷ýz0TestRolling.test_groupby_rolling_count_closed_on)ry   Úkwargsr-   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 i |¤Ž ¡ }t tjgd tjdtjddgd	œtjg d
¢dd gd�d�}|jdd�}t	 
||¡ d S )Nr„   r   r   r…   r   ré   rf   gÿ••&¥ æ?r§   )rª   r«   )r…   r   )r…   r   ©r…   rE   rm   r‡   )r   rJ   r)   Zsemr   rr   r   rˆ   rN   r4   rR   )r   ry   rü   rt   r8   r7   r   r   r   Útest_groupby_rolling_seml  s    &ÿÿþz$TestRolling.test_groupby_rolling_sem)ÚrollingsÚkeyrº   r„   NrQ   c                 C   s„   t tddtjgƒg d¢g d¢dœƒ}|dkr6| d¡}tjt|› d�d	��& | d
¡j	di |¤Ž W d   ƒ n1 sv0    Y  d S )Nz2020-06-01 12:00z2020-06-01 14:00rš   r™   rƒ   rQ   r„   z must be monotonicr    r†   Ú60min)r  )
r   r   r   rr   rq   r&   r'   Ú
ValueErrorr)   r-   )r   r   r  rt   r   r   r   Ú"test_groupby_rolling_nans_in_index€  s    ýÿ
z.TestRolling.test_groupby_rolling_nans_in_indexÚ
group_keysc                 C   s|   g d¢g d¢g}t j|dd�}tg d¢|d�}|jddg|d� d	¡ ¡ }tg d
¢t jg d¢g d¢d�d�}t ||¡ d S )N©Úval1r  Úval2©rh   ri   rm   rš   r‡   rh   ri   )r  r   )r   r“   r¼   )©r  r  r  r  r
  )r  r  r  r  )rh   ri   rh   ri   )	r   rO   r   r)   r-   r.   rˆ   r4   r5   )r   r  ÚarraysrQ   Úsr8   r7   r   r   r   Útest_groupby_rolling_group_keys‘  s    úþz+TestRolling.test_groupby_rolling_group_keysc                 C   s†   g d¢g d¢g}t j|dd�}tg d¢tdƒdœ|d�}| dd	g¡ d
¡ ¡ }tdg d¢it jg d¢g d¢d�d�}t 	||¡ d S )Nr  r	  rm   )r   r   r   r   r   r‡   rh   r   r   r   )r–   r   r“   )©r  r   r  r  r  )r  r   r  r  )rh   r   rh   ri   )
r   rO   r   rP   r)   r-   r.   rˆ   r4   rR   ©r   r  rQ   rt   r8   r7   r   r   r   Ú1test_groupby_rolling_index_level_and_column_label¨  s    
úþz=TestRolling.test_groupby_rolling_index_level_and_column_labelc                 C   sX   t t d¡ddgd dœƒ}| d¡ d¡ ¡ }tjg d¢dd gd	�}t 	|j
|¡ d S )
NrÄ   r   r   rE   r§   r…   r   )rœ   rž   )r   rE   )r   rl   r£   rË   )r   rf   )r   r¨   rm   )r   r   r   r)   r-   r.   r   rˆ   r4   Úassert_index_equalrQ   ©r   rt   r8   rT   r   r   r   Ú)test_groupby_rolling_resulting_multiindex¼  s    þz5TestRolling.test_groupby_rolling_resulting_multiindexc                 C   sf   t t d¡ddgd g d¢d dœƒ}| dd	g¡ d¡ ¡ }tjg d
¢g d¢d�}t 	|j
|¡ d S )Ng      (@r   r   rl   ©r   r   r   rE   r   rƒ   r…   r†   ))r   r   r   )r   r   rE   )r   r   r   )r   r   r   )r   r   rl   )r   r   re   )r   r   r   )r   r   rf   )r   r   r©   )r   rE   r   )r   rE   r¨   )r   rE   r¦   )r…   r†   Nrm   )r   r   r   r)   r-   r@   r   rˆ   r4   r  rQ   r  r   r   r   Ú*test_groupby_rolling_resulting_multiindex2É  s    &ñz6TestRolling.test_groupby_rolling_resulting_multiindex2c                 C   st   t t d¡ddgd g d¢d dœƒ}|jddd	�}| d
¡ d¡ ¡ }tjg d¢g d¢d�}t	j
|j|dd� d S )NrÄ   r   r   rE   r  rƒ   r†   T)Úappendr…   r   ))r   r   r   rš   )r   rE   r   )r   rl   r   )r   r   r   )r   r   rE   )r   rf   r   )r   r¨   rE   )r…   Nr†   rm   Úequiv)Úexact)r   r   r   rq   r)   r-   r.   r   rˆ   r4   r  rQ   r  r   r   r   Ú*test_groupby_rolling_resulting_multiindex3à  s    &
õz6TestRolling.test_groupby_rolling_resulting_multiindex3c                 C   s^   | j  d¡}| dd„ ¡j}|jdd�}| dd„ ¡j}t ||¡ |jrNJ ‚|jjrZJ ‚d S )Nr   c                 S   s   |   d¡ ¡ S rH   ©r-   r@   r/   r   r   r   r1   ÷  r2   zUTestRolling.test_groupby_rolling_object_doesnt_affect_groupby_apply.<locals>.<lambda>rE   rF   c                 S   s   |   d¡ ¡ S rH   r  r/   r   r   r   r1   ù  r2   )	r   r)   r3   rQ   r-   r4   r  r%   Zgrouper)r   r+   r7   Ú_r8   r   r   r   Ú7test_groupby_rolling_object_doesnt_affect_groupby_applyô  s    
zCTestRolling.test_groupby_rolling_object_doesnt_affect_groupby_apply)rG   r;   rÐ   r7   r   rß   )Nr–   r   r   Nr–   r   r   )NNr   r   NNr   r   rE   )NNNNNNNNÚright)NNNrÃ   NNNrÃ   c                 C   sr   t g d¢ƒ}| g d¢¡j|||d� d¡}t tj|dd�tddgg d	¢gg d
¢g d¢gd�d�}t ||¡ d S )N)r   r   r   rE   rf   rl   r¨   r   )r   r   r   r   r   r   r   r   )rG   r;   rÐ   r   rê   rÍ   r   r   )r   r   r   r   rE   rf   rl   r¨   )r   r   r   r   r   r   r   r   )r   r   rE   rl   r   r   rf   r¨   )ZlevelsÚcodesr‡   )	r   r)   r-   rW   r   rø   r   r4   rR   )r   rG   r;   rÐ   r7   rt   r8   Zexpected_resultr   r   r   Útest_groupby_rolling_varþ  s    
ÿþÿþþz$TestRolling.test_groupby_rolling_varrp   )r   Ú )r   ÚCr   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vsjJ ‚t |j|¡ d S )Nr   r   r   r   r   r   r   ré   r   T)ÚdeeprE   )	r   r)   ÚobjrÏ   r-   r@   rp   r4   rR   )r   rp   rt   r+   Zoriginal_objr=   r8   r   r   r   Útest_by_column_not_in_values  s    2

z(TestRolling.test_by_column_not_in_valuesc                 C   sˆ   g d¢g d¢g}t j|dd�}tdg d¢i|d�}|jdd	�d  d
¡ ¡ }ttjdtjdgt j	g d¢g d¢d�dd�}t
 ||¡ d S )N)ÚFalconr%  ÚParrotr&  )ÚCaptiveÚWildr'  r(  )ÚAnimalÚTyperm   z	Max Speed)g     `x@g     àu@g      >@g      4@r‡   r   rj   r   g      ‡@g      I@))r%  r%  r'  )r%  r%  r(  )r&  r&  r'  )r&  r&  r(  )r)  r)  r*  rŸ   )r   rO   r   r)   r-   r@   r   r   rr   rˆ   r4   r5   r  r   r   r   Útest_groupby_level$  s    þù	õzTestRolling.test_groupby_levelzby, expected_datar›   Únum)ç      Y@ç     Àb@r.  ç      i@ú
2018-01-01ú
2018-01-02)r-  r/  r.  ç     @o@)rÝ   r,  c                    sª   g d¢g d¢g d¢g d¢g}t |g d¢d�‰ tˆ d ƒˆ d< ˆ  dg¡‰ ‡ fdd	„|D ƒ}ˆ j|d
d�jddd� ¡ }dg d¢i}| |¡ t |ˆ jd�}t 	||¡ d S )N)r   r0  r-  )r   r1  r/  )r   r0  r.  )r   r1  r2  )r›   rÝ   r,  ré   rÝ   c                    s   g | ]}t ˆ |ƒ‘qS r   )rJ   )rÅ   Úattrrô   r   r   rÆ   Z  r2   z3TestRolling.test_as_index_false.<locals>.<listcomp>F)Zas_indexr   r   rØ   r›   )r   r   r   r   r‡   )
r   r   rq   r)   r-   r.   ÚupdaterQ   r4   rR   )r   r$   rv   r¹   Zgp_byr8   r7   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 )Niè  r   r   éÿÿÿÿg52·ô­DE)rQ   Úadl2rQ   r7  re   rØ   iç  rm   r¿   )r   Úrepeatrr   r   rq   r)   r-   r.   r   r   rO   r4   r5   )r   ÚsizeÚidxÚvalZarrrt   r8   r7   r   r   r   Útest_nan_and_zero_endpointsg  s.    
þÿû$ÿýz'TestRolling.test_nan_and_zero_endpoints)2rÔ   rÕ   rÖ   r   r,   r9   r>   r&   ÚmarkÚparametrizeÚparamÚfilterwarningsrU   rY   ra   rw   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   r5  r<  r   r   r   r   r      sÈ   
þöþ

ÿ



&þ
 
A#

 þ
ÿ


üþ	
ÿ

üùþþþ
r   c                   @   s„   e Zd Zdd„ Zej dg d¢¡dd„ ƒZej dddg¡d	d
„ ƒZej dg d¢¡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   r   r   r   „  s    zTestExpanding.setup_methodr?   )r@   r.   rA   rB   r<   rC   rD   c                    sn   | j  d¡}| ¡ }t|ˆ ƒƒ }| ‡ fdd„¡}|jddd�}t | j d tdƒg¡}||_	t
 ||¡ d S )Nr   c                    s   t |  ¡ ˆ ƒƒ S rŠ   ©rJ   rý   r/   rK   r   r   r1   �  r2   z.TestExpanding.test_expanding.<locals>.<lambda>r   rL   r   ©r   r)   rý   rJ   r3   rN   r   rO   rP   rQ   r4   rR   rS   r   rK   r   Útest_expanding‡  s    zTestExpanding.test_expandingrV   rW   c                    sr   | j  d¡}| ¡ }t|ˆ ƒdd�}| ‡ fdd„¡}|jddd�}t | j d tdƒg¡}||_	t
 ||¡ d S )	Nr   r   rX   c                    s   t |  ¡ ˆ ƒdd�S )Nr   rX   rB  r/   rK   r   r   r1   �  r2   z3TestExpanding.test_expanding_ddof.<locals>.<lambda>r   rL   r   rC  rS   r   rK   r   Útest_expanding_ddof—  s    z!TestExpanding.test_expanding_ddofrZ   r[   c                    sp   | j  d¡}| ¡ }|jdˆ d�}| ‡ fdd„¡}|jddd�}t | j d tdƒg¡}||_	t
 ||¡ d S )	Nr   r]   r^   c                    s   |   ¡ jdˆ d�S )Nr]   r^   )rý   r_   r/   r^   r   r   r1   ®  r2   z7TestExpanding.test_expanding_quantile.<locals>.<lambda>r   rL   r   )r   r)   rý   r_   r3   rN   r   rO   rP   rQ   r4   rR   r`   r   r^   r   Útest_expanding_quantile¥  s    
ÿz%TestExpanding.test_expanding_quantilerb   rc   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Š   )rJ   rý   r   r/   rx   r   r   ry   ¾  s    z3TestExpanding.test_expanding_corr_cov.<locals>.funcr   é=   éH   éq   r   Tr|   c                    s   t | j ¡ ˆ ƒdd�S )NTr|   )rJ   r   rý   r/   rK   r   r   ry   Í  s    )r   r)   rý   rJ   r3   rs   rP   r   rr   Úilocr4   rR   r   r5   )r   r?   r+   r=   r8   ry   r7   Znull_idxr   rx   r   Útest_expanding_corr_cov·  s    


z%TestExpanding.test_expanding_corr_covc                    st   | j  d¡}| ¡ }|jdd„ ˆ d�}| ‡ fdd„¡}|jddd�}t | j d tdƒg¡}||_t	 
||¡ d S )	Nr   c                 S   s   |   ¡ S rŠ   r‹   r/   r   r   r   r1   Ø  r2   z4TestExpanding.test_expanding_apply.<locals>.<lambda>rŒ   c                    s   |   ¡ jdd„ ˆ d�S )Nc                 S   s   |   ¡ S rŠ   r‹   rŽ   r   r   r   r1   Ù  r2   zFTestExpanding.test_expanding_apply.<locals>.<lambda>.<locals>.<lambda>rŒ   )rý   r3   r/   rŒ   r   r   r1   Ù  r2   r   rL   r   )r   r)   rý   r3   rN   r   rO   rP   rQ   r4   rR   r�   r   rŒ   r   Útest_expanding_applyÓ  s    z"TestExpanding.test_expanding_applyN)rÔ   rÕ   rÖ   r   r&   r=  r>  rD  rE  rF  rK  rL  r   r   r   r   rA  ƒ  s   ÿ

ÿ

rA  c                
   @   s¢   e Zd Zej ddg d¢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_datar.   )r–   gUUUUUUå?g·mÛ¶mÛö?g""""""@rV   g»¹øÛž æ?g¦€´ÿÖî?gët ë©Õò?rW   rd   gnÛ¶mÛ¶í?g¾â+¾â+ö?c                    s¾   t dgd tdƒdœƒ}t| d¡jdd�ˆ ƒƒ }t d|itjg d¢dd gd	�d
�}t ||¡ tj	t
dd��( | d¡ ‡ fdd„¡}W d   ƒ n1 sœ0    Y  t |jdd�|¡ d S )Nr„   rE   r   r   r   ©Úcomr   )rª   r«   r¬   r­   rm   r‡   Únuisancer    c                    s   t | jdd�ˆ ƒƒ S ©Nr   rN  ©rJ   Úewmr/   ©Úmethodr   r   r1      r2   z&TestEWM.test_methods.<locals>.<lambda>T©rN   )r   rP   rJ   r)   rS  r   rˆ   r4   rR   Úassert_produces_warningÚFutureWarningr3   rÇ   ©r   rU  rv   rt   r8   r7   r   rT  r   Útest_methodsã  s    
ùþ

ÿ"zTestEWM.test_methodsrb   r   r   rc   gÒr ‡Ú¶í?gß¿yqâ+ö?c                    sˆ   t dgd tdƒdœƒ}t| d¡jdd�ˆ ƒƒ }t d|itjg d¢g d	¢d
�d�}t ||¡ | d¡ 	‡ fdd„¡}t ||¡ d S )Nr„   rE   r   r   r   rN  r   ))r„   r   r   )r„   r   r   )r„   r   r   )r„   r   r   )r   NNrm   r‡   c                    s   t | jdd�ˆ ƒƒ S rQ  rR  r/   rT  r   r   r1     r2   z/TestEWM.test_pairwise_methods.<locals>.<lambda>)
r   rP   rJ   r)   rS  r   rˆ   r4   rR   r3   rY  r   rT  r   Útest_pairwise_methods  s    ùþzTestEWM.test_pairwise_methodsc                 C   s€   d}t jtdd��( | d¡j|dd� ¡ }W d   ƒ n1 s@0    Y  tdg d¢itjg d	¢dd gd
�d�}t  	||¡ d S )Nú23 daysrP  r    r   r!  ©ÚhalflifeÚtimesr   )
r–   gCusñ·=à?g;¬pËGRð?gÀZµkBšø?r–   gÕ>�(â?g8KÉrŠó?r–   gÒ§Uô‡æä?gAó9w»ó?)
rª   r­   )r„   rl   )r„   r©   )r…   r   rþ   r±   )r†   r   )r†   rf   )r†   r   rm   r‡   )
r4   rW  rX  r)   rS  r.   r   r   rˆ   rR   )r   Útimes_framer^  r8   r7   r   r   r   Ú
test_times  s    6ÿóñzTestEWM.test_timesc                    sŒ   d‰ t jtdd��R | d¡jˆ dd� ¡ }| d¡ ‡ fdd„¡jg d	¢ jd
d�}W d   ƒ n1 sj0    Y  t  	|jd
d�|¡ d S )Nr\  rP  r    r   r!  r]  c                    s   | j ˆ dd� ¡ S )Nr!  r]  )rS  r.   r/   ©r^  r   r   r1   N  r2   z-TestEWM.test_times_vs_apply.<locals>.<lambda>)
r   r   rl   r©   r   rE   r¨   r   rf   r   TrV  )
r4   rW  rX  r)   rS  r.   r3   rJ  rÇ   rR   )r   r`  r8   r7   r   rb  r   Útest_times_vs_applyF  s    

ÿþýÿ zTestEWM.test_times_vs_applyc                 C   sv   d}|  d¡}tjtdd��: |j|dd� ¡ }|j||d jd� ¡ }W d   ƒ n1 s\0    Y  t ||¡ d S )Nr\  r   rP  r    r!  r]  )r)   r4   rW  rX  rS  r.   ÚvaluesrR   )r   r`  r^  r¸   r8   r7   r   r   r   Útest_times_arrayT  s    
6zTestEWM.test_times_arrayc              	   C   sî   t g d¢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g d¢ttdƒƒgdd gd�d�}t	 
||¡ |d  ¡ }tdgd tjg d¢tdddd�gdd	gd�dd�}t	 ||¡ | ¡ }t	 
||¡ d S )N)r„   r„   r…   r…   r…   z2021-9-1rf   rî   )rú   Úfreq)r›   Ú	timestampr�   r›   Z1Hrg  rò   r   )rg  r�   rm   r‡   r�   rŸ   )r   r   rP   r)   r-   r<   r   rO   rs   r4   rR   r   r5   )r   rt   Úgrpr8   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&   r=  r>  r   rr   rZ  r[  ra  rc  re  ri  r   r   r   r   rM  â  s"   
ýþ
"þ
'
rM  )Únumpyr   r&   Zpandasr   r   r   r   r   r   r   Zpandas._testingZ_testingr4   Zpandas.api.indexersr	   Zpandas.core.groupby.groupbyr
   r   rA  rM  r   r   r   r   Ú<module>   s   $	      w_