U
    ¾mœdü¨  ã                   @   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   úY/home/sam/Atlas/atlas_env/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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-d.„ Zd/d0„ Zej d1d)d2gd3d4gg¡d5d6„ ƒZd7d8„ Zd9d:„ Zej d;d<d=d>g¡d?d@„ ƒZdAdB„ ZdCdD„ ZdEdF„ ZdGdH„ Zej dIdd
g¡dJdK„ ƒZdLdM„ ZdNdO„ ZdPdQ„ ZdRdS„ Zej dTdUdVddWœfdXi fg¡dYdZ„ ƒZej d[d\d]id]fd\d^id_fg¡d`da„ ƒZ ej dbd2d4g¡dcdd„ ƒZ!dedf„ Z"dgdh„ Z#didj„ Z$dkdl„ Z%dmdn„ Z&ej dodVdpdqd^d3d)d)d^d3d)d)gfdVdVdqd^d^d)d)d^d^d)d)gfd=d=dqd^d^d^d^d^d^d^d^gfd=d=drd^d^d^dsd^d^d^dsgfg¡dtdu„ ƒZ'ej dve( )dwdxg¡dydzgg¡d{d|„ ƒZ*d}d~„ Z+ej dd€gd�d‚dƒdƒd„gigd€d_ge,d…ƒe,d†ƒe,d…ƒe,d†ƒgd‚d„dƒd‡gdˆœgg¡d‰dŠ„ ƒZ-d‹dŒ„ Z.d�dŽ„ Z/d�d�„ Z0d‘d’„ Z1d“d”„ Z2d^S )•ÚTestRollingc              	   C   s0   d}t jt|d�� |jddd� W 5 Q R X d S )Nz4groupby\(\) got an unexpected keyword argument 'foo'©Úmatchr   r   )Úfoo)ÚpytestÚraisesÚ	TypeErrorÚgroupby)Úselfr&   Úmsgr   r   r   Ú!test_groupby_unsupported_argument1   s    z-TestRolling.test_groupby_unsupported_argumentc                 C   s¢   |  d¡}t|dd�}|j dd„ ¡}| d¡ ¡ j}t ||¡ | d¡j ¡ }t ||¡ |j d¡ ¡ }t ||¡ |j  |j¡ d¡ ¡ }t ||¡ d S )Nr   ©Úbyc                 S   s   |   d¡ ¡ S )Nr   ©ÚrollingÚmean©Úxr   r   r   Ú<lambda>:   ó    z*TestRolling.test_getitem.<locals>.<lambda>r   )	r.   r
   r   Úapplyr5   r6   ÚtmÚassert_series_equalr   )r/   r&   ÚgÚ	g_mutatedÚexpectedÚresultr   r   r   Útest_getitem6   s    
zTestRolling.test_getitemc                 C   sd   |  d¡}|jddd�}t|dd�}|j dd„ ¡}|j ¡ }t ||¡ |j ¡ }t ||¡ d S )Nr   r   r   ©Úmin_periodsr2   c                 S   s   | j ddd� ¡ S )Nr   r   rC   )r5   Úcountr7   r   r   r   r9   M   r:   z3TestRolling.test_getitem_multiple.<locals>.<lambda>)r.   r5   r
   r   r;   rE   r<   r=   )r/   r&   r>   Úrr?   r@   rA   r   r   r   Útest_getitem_multipleH   s    


z!TestRolling.test_getitem_multipleÚfÚsumr6   ÚminÚmaxrE   Ú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 ©NrP   ©Úgetattrr5   r7   ©rH   r   r   r9   f   r:   z*TestRolling.test_rolling.<locals>.<lambda>r   ©Zaxisr!   ©r.   r5   rU   r;   Údropr   Úfrom_arraysÚrangeÚindexr<   Úassert_frame_equal©r/   rH   r&   r>   rF   rA   r@   Úexpected_indexr   rV   r   Útest_rollingU   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   FrN   rP   rQ   r   ©Zddofc                    s   t |  d¡ˆ ƒdd�S )NrP   r   rc   rT   r7   rV   r   r   r9   t   r:   z/TestRolling.test_rolling_ddof.<locals>.<lambda>rW   r!   rX   r^   r   rV   r   Útest_rolling_ddofn   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   FrN   rP   rQ   çš™™™™™Ù?©re   c                    s   |   d¡jdˆ d�S )NrP   rk   rl   )r5   Úquantiler7   rl   r   r   r9   …   r:   z3TestRolling.test_rolling_quantile.<locals>.<lambda>r   rW   r!   )r.   r5   rm   r;   rY   r   rZ   r[   r\   r<   r]   )r/   re   r&   r>   rF   rA   r@   r_   r   rl   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   rP   )ÚvalueÚidx1Úidx2ru   rv   )rt   rv   r   ©Úlevelrt   é   ©Únames©Úcolumnsr\   )r   r[   Ú	set_indexrU   r.   r5   r$   Únanr   rZ   Úlistr<   r]   )r/   rH   Zexpected_valÚdfÚotherrA   Úexpected_datar@   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   rP   rQ   c                    s   t |  d¡ˆ ƒˆƒS rS   rT   r7   ©rH   r&   r   r   Úfunc®   s    zITestRolling.test_rolling_corr_cov_other_diff_size_as_groups.<locals>.func)r.   r5   rU   r;   r$   r   r<   r]   ©r/   rH   r&   r>   rF   rA   r†   r@   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   rP   rQ   T©Úpairwisec                    s   t | j d¡ˆ ƒdd�S )NrP   Tr‰   )rU   r   r5   r7   rV   r   r   r†   ¾   s    z8TestRolling.test_rolling_corr_cov_pairwise.<locals>.func)r.   r5   rU   r   r;   r<   r=   r‡   r   rV   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   ry   rP   ©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   rz   ©r\   )
r   r.   r5   rU   r$   r   r   Úfrom_tuplesr<   r]   )r/   r†   Zexpected_valuesr�   ZrolrA   r@   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   FrN   rP   rQ   c                 S   s   |   ¡ S ©N©rI   r7   r   r   r   r9   í   r:   z0TestRolling.test_rolling_apply.<locals>.<lambda>©Úrawc                    s   |   d¡jdd„ ˆ d�S )NrP   c                 S   s   |   ¡ S r”   r•   ©Úyr   r   r   r9   î   r:   zBTestRolling.test_rolling_apply.<locals>.<lambda>.<locals>.<lambda>r–   )r5   r;   r7   r–   r   r   r9   î   r:   r   rW   r!   )
r.   r5   r;   rY   r   rZ   r[   r\   r<   r]   )r/   r—   r&   r>   rF   rA   r@   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   ry   r"   r   )r›   r   )r›   rP   )r›   rs   )r*   r   )r*   r   )r*   r   ç       @r   r   r|   rQ   )r   r.   r   r’   r{   r$   r   r5   rI   r<   r]   )r/   r�   r>   Úmir@   rA   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ndarrayr7   r   r   r   Úisnumpyarray  s    z6TestRolling.test_groupby_rolling.<locals>.isnumpyarrayr   r   r   )Úidrt   r£   r–   )©r   r   ©r   r   ©r   r   rz   rt   ©r\   Úname)
r   r.   rt   r5   r;   r   r   r’   r<   r=   )r/   Zexpected_valueZ	raw_valuer¢   r�   rA   r@   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   ry   Tr   )ÚcenterrR   rs   )r¤   ©r   r   ©r   r   ©rP   r   )rs   rP   r‘   rP   )r¤   r«   r¬   r­   r   r   é   ©r   r   r   é   r    é	   )©r   r   ©r   r   ©r   r   ©r   r   ©r   rP   ©r   rs   ©r   ry   ©r   r°   ©r   r    ©r   r±   )r   rr   rz   )r\   r}   rr   )
r²   r³   r´   rµ   r¶   r·   r¸   r¹   rº   r»   )r   r[   r.   r5   r6   r$   r   r   r’   r<   r=   r   r]   )r/   ZseriesrA   r@   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_1ry   Úgroup_2rP   rr   )ÚDateÚgbrt   )ÚdatarÀ   r¿   Tr   )Úonrª   rD   rŒ   ç      ø?rœ   g      @ç      @g      @ç      @ç      @rt   r   r   r   z
2020-01-05z
2020-01-06z
2020-01-07z
2020-01-08z
2020-01-09rz   ©r¨   r\   )r   r   r[   r.   r5   rt   r6   r   r   r’   r   r<   r=   ©r/   r�   rA   r@   r   r   r   Útest_groupby_rolling_center_on^  s@    ýÿ
   ÿ
ÿ









öóýz*TestRolling.test_groupby_rolling_center_onrD   rs   rP   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   rr   r   r   )ÚgrouprÁ   rs   rÊ   T)rª   rD   rÁ   rŒ   rÃ   rœ   rÄ   r�   ç      @g      @rÅ   rÆ   ç       @c                 S   s   g | ]}|d  ‘qS )g      $@r   ©Ú.0r8   r   r   r   Ú
<listcomp>�  s     zGTestRolling.test_groupby_rolling_center_min_periods.<locals>.<listcomp>r   r   )r   r[   r.   r5   r6   Zreset_indexrK   r$   r   r<   r]   )r/   rD   r�   Úwindow_sizerA   Z
grp_A_meanZ
grp_B_meanZnum_nansZnansZgrp_A_expectedZgrp_B_expectedr@   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Œ   rr   r   é   r�   r   r   )r¤   r«   ©r   r   r¬   rz   r|   r§   )r   r.   r5   rK   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   ©Údtyper   )rÐ   r$   r%   Úint64Úcopy)r/   Z
num_valuesrD   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   rs   r   r   r‘   )rÐ   rC   ©rR   rD   )r	   r   r.   r\   r5   rI   r<   r]   )r/   rá   r�   rA   r@   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 )Nry   r   r   r   ú
2019-01-01©Úcolumn1Zcolumn2rÊ   ÚdaterÊ   Ú1Drç   Úleft©rÂ   rÙ   ræ   rŸ   rœ   rŒ   r�   rz   r§   ©r   r[   r   r.   r5   rI   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 )Nry   r   r   r   rä   rå   rÊ   ræ   rç   rè   ré   rê   rŸ   rœ   rŒ   r�   rz   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   r8   )r   r™   )r   ÚzÚ1Ú2rz   r   r§   rœ   )r   r   r8   )r   r   r™   )r   r   rî   )
r   r   r’   rU   r.   r5   r$   r   r<   r=   )r/   r†   ZdsrA   r@   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   rQ   ©r}   Úfloat64rÕ   r×   rz   )rò   Ús2rõ   )r   r.   r5   rI   rY   r   Zfrom_productr   r\   r<   r]   )r/   r@   rA   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   ÚHry   ÚEr   r\   rÊ   Z	eventTimeró   Zcount_to_dateZ10d©rÂ   c                 S   s
   | j d S )Nr   )Úshape©r�   r   r   r   r9   D  r:   z?TestRolling.test_groupby_rolling_string_index.<locals>.<lambda>rŒ   rœ   rÄ   )	r   r   r~   r.   Zcumcountr5   r;   r<   r]   )r/   r�   ÚgroupsZrolling_groupsrA   r@   r   r   r   Ú!test_groupby_rolling_string_index4  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¥   rz   r|   ró   )r   r.   r5   rJ   r$   Úarrayr   r’   rY   r<   r]   )r/   rA   r@   r   r   r   Útest_groupby_rolling_no_sortQ  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 )Nry   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ä   rz   rÇ   )r   r[   r   r.   r5   rE   r   r$   r   r   r’   r   r<   r=   rÈ   r   r   r   Ú$test_groupby_rolling_count_closed_onb  s<    

üÿ	
  ÿÿÿ





ú÷ýz0TestRolling.test_groupby_rolling_count_closed_on)r†   Úkwargsr5   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ó   rs   gÿ••&¥ æ?r¯   r²   r³   )r   r   )r   r   ©r   rP   rz   r‘   )r   rU   r.   Zsemr$   r   r   r’   rY   r<   r]   )r/   r†   r  r�   rA   r@   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,   Ú
ValueErrorr.   r5   )r/   r	  r
  r�   r   r   r   Ú"test_groupby_rolling_nans_in_index–  s    ýÿ
z.TestRolling.test_groupby_rolling_nans_in_indexrO   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©ru   rv   rz   r   r   r   r‘   ru   rv   rN   rŒ   rœ   rÄ   )r  r  r  r  )r  r  r  r  )	r   rZ   r   r.   r5   r6   r’   r<   r=   )r/   rO   Úarraysr\   ÚsrA   r@   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  rz   r   r   r   r"   r‘   ru   r   r   rŸ   rŒ   rœ   )r  r   r  r  )r  r   r  r  rv   )
r   rZ   r   r[   r.   r5   r6   r’   r<   r]   ©r/   r  r\   r�   rA   r@   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   rP   r¯   r   r   r¤   r¦   )r   rP   )r   ry   r«   rÓ   )r   rs   )r   r°   rz   )r   r$   r%   r.   r5   r6   r   r’   r<   Úassert_index_equalr\   ©r/   r�   rA   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   ry   r   rP   r�   r   r   )r   r   r   )r   r   rP   )r   r   r    )r   r   r   )r   r   ry   )r   r   rr   )r   r   r   )r   r   rs   )r   r   r±   )r   rP   r   )r   rP   r°   )r   rP   r®   rz   )r   r$   r%   r.   r5   rI   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   rP   r   r�   r   T)Úappendr   )r   r   r   )r   r   r   )r   rP   r   )r   ry   r   )r   r   r   )r   r   rP   )r   rs   r   )r   r°   rP   rz   Úequiv)Úexact)r   r$   r%   r~   r.   r5   r6   r   r’   r<   r  r\   r  r   r   r   Ú*test_groupby_rolling_resulting_multiindex3ö  s     *ø
õz6TestRolling.test_groupby_rolling_resulting_multiindex3c                 C   sJ   |j ddd�}| dd„ ¡j}|jdd�}| dd„ ¡j}t ||¡ d S )	Nr   FrN   c                 S   s   |   d¡ ¡ S rS   ©r5   rI   r7   r   r   r   r9     r:   zUTestRolling.test_groupby_rolling_object_doesnt_affect_groupby_apply.<locals>.<lambda>rP   rQ   c                 S   s   |   d¡ ¡ S rS   r  r7   r   r   r   r9     r:   )r.   r;   r\   r5   r<   r  )r/   r&   r>   r@   Ú_rA   r   r   r   Ú7test_groupby_rolling_object_doesnt_affect_groupby_apply
  s
    zCTestRolling.test_groupby_rolling_object_doesnt_affect_groupby_apply)rR   rD   rÙ   r@   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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   rP   rs   ry   r°   r    )rR   rD   rÙ   r   rô   rÕ   )ZlevelsÚcodesr‘   )	r   r.   r5   rb   r$   r  r   r<   r]   )r/   rR   rD   rÙ   r@   r�   rA   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)ÚdeeprP   )
r   r.   ÚobjrØ   r5   rI   r}   ÚAssertionErrorr<   r]   )r/   r}   r�   r>   Zoriginal_objrF   rA   r   r   r   Útest_by_column_not_in_values+  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ÚTyperz   z	Max Speedg     `x@g     àu@g      >@g      4@r‘   r   rw   r   g      ‡@g      I@)r)  r)  r+  )r)  r)  r,  )r*  r*  r+  )r*  r*  r,  r-  r.  r§   )r   rZ   r   r.   r5   rI   r   r$   r   r’   r<   r=   r  r   r   r   Útest_groupby_level8  s&    

þüù	õzTestRolling.test_groupby_levelzby, expected_datar£   Únumç      Y@ç     Àb@ç      i@ú
2018-01-01ú
2018-01-02ç     @o@)rç   r0  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   r4  r1  r5  r3  r   r2  r6  r£   rç   r0  ró   c                    s   g | ]}t ˆ |ƒ‘qS r   )rU   )rÎ   Úattrrý   r   r   rÏ   n  s     z3TestRolling.test_as_index_false.<locals>.<listcomp>F)Zas_indexr   r   râ   r‘   )
r   r   r~   r.   r5   r6   Úupdater\   r<   r]   )r/   r3   rƒ   rÁ   Zgp_byrA   r@   r   rý   r   Útest_as_index_falseP  s$    üÿ
þzTestRolling.test_as_index_falsec           
      C   sÎ   t  |¡j}d}t  |dƒ|¡}d|d< d}t  ||¡}t j|d< d|d< t||dœƒ d¡}| d¡d jd	dd
� 	¡ }t
|dt tdgd dg |dd�tdgd dg |dd�g¡d�}	t ||	¡ d S )Néè  r   r   éÿÿÿÿg52·ô­DE)r\   Úadl2r\   r<  rr   râ   iç  )rÖ   r¨   rÇ   )r$   rÖ   ÚtypeÚrepeatr   r   r~   r.   r5   r6   r   r   rZ   r   r<   r=   )
r/   Zany_int_numpy_dtypeÚtypÚsizeÚidxÚvalZarrr�   rA   r@   r   r   r   Útest_nan_and_zero_endpoints{  s4    
þÿûþÿý
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   r:  c                    s(   g | ] }t d | ˆ  ƒ|d ddœ‘qS )r   r   é*   )Útr8   r   ©r   rÍ   ©Úsecr   r   rÏ      s     zBTestRolling.test_groupby_rolling_non_monotonic.<locals>.<listcomp>z.* must be monotonicr(   r   rE  Z3s)rÂ   rR   )r   r+   r,   r  r.   r5   )r/   Zshuffledr�   r   rG  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Ú180DrL  r  r7   r   r   r   r9   À  r:   z4TestRolling.test_groupby_monotonic.<locals>.<lambda>rM  rû   )
r   r   Zsort_valuesr~   r.   r;   r5   rI   r<   r=   )r/   rÁ   r�   r@   rA   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   r4   r7   r   r   r   r9   Õ  r:   zJTestRolling.test_datelike_on_monotonic_within_each_group.<locals>.<lambda>rP  rû   )r   r   r$   Zconcatenater%   r~   r.   r;   r5   r   r6   r<   r=   )r/   Údatesr�   r@   rA   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   rF  )rÎ   Úyearr   r   r   rÏ   ß  s     zPTestRolling.test_datelike_on_not_monotonic_within_each_group.<locals>.<listcomp>)iä  iå  r÷   ry   r   z&Each group within B must be monotonic.r(   r   Z365Dr   rû   )r   r[   r+   r,   r  r.   r5   )r/   r�   r   r   r   Ú0test_datelike_on_not_monotonic_within_each_groupÚ  s    ýÿz<TestRolling.test_datelike_on_not_monotonic_within_each_group)3rÞ   rß   rà   r1   rB   rG   r+   ÚmarkÚparametrizer`   rd   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(  r/  r   r9  rC  rI  rN  rR  rT  r   r   r   r   r'   0   sÎ   ùþ

 ÿ



&þ
 
A#

 þ
 ÿ

üþ	
 ÿ

ü
ùþþþ
 r'   c                
   @   sš   e Zd Zej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   s.   t dgd dgd  dgd  t d¡dœƒS r   r#   )r/   r   r   r   Úframeè  s    zTestExpanding.framerH   rI   r6   rJ   rK   rE   rL   rM   c                    sn   |j ddd�}| ¡ }t|ˆ ƒƒ }| ‡ fdd„¡}|jddd�}t |d tdƒg¡}||_t	 
||¡ d S )	Nr   FrN   c                    s   t |  ¡ ˆ ƒƒ S r”   ©rU   r  r7   rV   r   r   r9   ô  r:   z.TestExpanding.test_expanding.<locals>.<lambda>r   rW   r!   ©r.   r  rU   r;   rY   r   rZ   r[   r\   r<   r]   ©r/   rH   rX  r>   rF   rA   r@   r_   r   rV   r   Útest_expandingì  s    zTestExpanding.test_expandingra   rb   c                    sr   |j ddd�}| ¡ }t|ˆ ƒdd�}| ‡ fdd„¡}|jddd	�}t |d td
ƒg¡}||_t	 
||¡ d S )Nr   FrN   r   rc   c                    s   t |  ¡ ˆ ƒdd�S )Nr   rc   rY  r7   rV   r   r   r9     r:   z3TestExpanding.test_expanding_ddof.<locals>.<lambda>r   rW   r!   rZ  r[  r   rV   r   Útest_expanding_ddofü  s    z!TestExpanding.test_expanding_ddofre   rf   rg   rh   ri   rj   c                    sp   |j ddd�}| ¡ }|jdˆ d�}| ‡ fdd„¡}|jddd	�}t |d td
ƒg¡}||_t	 
||¡ d S )Nr   FrN   rk   rl   c                    s   |   ¡ jdˆ d�S )Nrk   rl   )r  rm   r7   rl   r   r   r9     r:   z7TestExpanding.test_expanding_quantile.<locals>.<lambda>r   rW   r!   )r.   r  rm   r;   rY   r   rZ   r[   r\   r<   r]   )r/   re   rX  r>   rF   rA   r@   r_   r   rl   r   Útest_expanding_quantile
  s    
ÿz%TestExpanding.test_expanding_quantilero   rp   c           
         s²   ˆ  d¡}| ¡ }t|ˆ ƒˆƒ}‡ ‡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 |  ¡ ˆ ƒˆƒS r”   rY  r7   ©rH   rX  r   r   Úfunc_0#  s    z5TestExpanding.test_expanding_corr_cov.<locals>.func_0r   é=   éH   éq   r   Tr‰   c                    s   t | j ¡ ˆ ƒdd�S )NTr‰   )rU   r   r  r7   rV   r   r   Úfunc_12  s    z5TestExpanding.test_expanding_corr_cov.<locals>.func_1)r.   r  rU   r;   r€   r[   r$   r   Zilocr<   r]   r   r=   )
r/   rH   rX  r>   rF   rA   r`  r@   Znull_idxrd  r   r_  r   Útest_expanding_corr_cov  s    



z%TestExpanding.test_expanding_corr_covc                    st   |j ddd�}| ¡ }|jdd„ ˆ d�}| ‡ fdd„¡}|jddd	�}t |d td
ƒg¡}||_t 	||¡ d S )Nr   FrN   c                 S   s   |   ¡ S r”   r•   r7   r   r   r   r9   =  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   r9   >  r:   zFTestExpanding.test_expanding_apply.<locals>.<lambda>.<locals>.<lambda>r–   )r  r;   r7   r–   r   r   r9   >  r:   r   rW   r!   )
r.   r  r;   rY   r   rZ   r[   r\   r<   r]   )r/   r—   rX  r>   rF   rA   r@   r_   r   r–   r   Útest_expanding_apply8  s    z"TestExpanding.test_expanding_applyN)rÞ   rß   rà   r+   ÚfixturerX  rU  rV  r\  r]  r^  re  rf  r   r   r   r   rW  ç  s"   
 ÿ

 ÿ

rW  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S ) ÚTestEWMzmethod, expected_datar6   rŸ   gUUUUUUå?g·mÛ¶mÛö?g""""""@ra   g»¹øÛž æ?g¦€´ÿÖî?gët ë©Õò?rb   rq   gnÛ¶mÛ¶í?g¾â+¾â+ö?c                 C   sh   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 ||¡ d S )Nr   rP   r"   r   rŒ   ©Úcomr   r²   r³   r´   rµ   rz   r‘   )	r   r[   rU   r.   Úewmr   r’   r<   r]   ©r/   Úmethodrƒ   r�   rA   r@   r   r   r   Útest_methodsH  s    
üùþzTestEWM.test_methodsro   rŒ   r   rp   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   rP   r"   r   rŒ   ri  r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   rz   r‘   c                    s   t | jdd�ˆ ƒƒ S )NrŒ   ri  )rU   rk  r7   ©rm  r   r   r9   x  r:   z/TestEWM.test_pairwise_methods.<locals>.<lambda>)
r   r[   rU   r.   rk  r   r’   r<   r]   r;   rl  r   ro  r   Útest_pairwise_methodsb  s     üùþzTestEWM.test_pairwise_methodsc                 C   s|   d}|  d¡}| d¡j||d� ¡ }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 daysr   r   ©ÚhalflifeÚtimesr   rŸ   gCusñ·=à?g;¬pËGRð?gÀZµkBšø?gÕ>�(â?g8KÉrŠó?gÒ§Uô‡æä?gAó9w»ó?r²   rµ   )r   ry   )r   r±   )r   r   r  r¹   )r   r   )r   rs   )r   r    rz   r‘   )	Úpopr.   rk  r6   r   r   r’   r<   r]   )r/   r   rs  rt  rA   r@   r   r   r   Ú
test_times{  sB    
öÿöóñzTestEWM.test_timesc                 C   sN   d}|  d¡}| d¡}|j||d� ¡ }|j||jd� ¡ }t ||¡ d S )Nrq  r   r   rr  )ru  r.   rk  r6   Úvaluesr<   r]   )r/   r   rs  rt  rÀ   rA   r@   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-1rs   rù   )r  rO  )r£   Ú	timestampr™   r£   Z1Hry  rû   rŒ   )ry  r™   rz   r‘   r™   r§   )r   r   r[   r.   r5   rE   r   rZ   r€   r<   r]   r   r=   )r/   r�   ÚgrprA   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+   rU  rV  r$   r   rn  rp  rv  rx  r{  r   r   r   r   rh  G  s    ýþ
"þ
'	rh  )Únumpyr$   r+   Zpandasr   r   r   r   r   r   r   Zpandas._testingZ_testingr<   Zpandas.api.indexersr	   Zpandas.core.groupby.groupbyr
   rg  r   r&   r'   rW  rh  r   r   r   r   Ú<module>   s&   $	

       >`