a
    j=ic                     @   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   s    t g dg dtg ddS )z0Frame for testing times argument in EWM groupby.)
abcr   r   r   r   r   r   r   )
r   r   r      r   r      r   r      )

2020-01-01r   r   
2020-01-02
2020-01-10z
2020-01-22
2020-01-03
2020-01-23r   
2020-01-04ABC)r   r    r   r   q/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/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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-d. Zejd/d'd0gd1d2ggd3d4 Zd5d6 Zd7d8 Zejd9g d:d;d< Zd=d> Zd?d@ ZdAdB ZdCdD ZejdEdd
gdFdG ZdHdI ZdJdK ZdLdM ZdNdO Z ejdPdQdRddSfdTi fgdUdV Z!ejdWdXdYidYfdXdZid[fgd\d] Z"ejd^d0d2gd_d` Z#dadb Z$dcdd Z%dedf Z&dgdh Z'didj Z(ejdkdRdldmg dnfdRdRdmg dofdpdpdmg dqfdpdpdrg dsfgdtdu Z)ejdve*+dwdxgdydzggd{d| Z,d}d~ Z-ejddgdg digdd[ge.de.de.de.dgg ddggdd Z/dd Z0dd Z1dd Z2dd Z3dd Z4dZS )TestRollingc                 C   sp   d}t jt|d |jddd W d    n1 s60    Y  |d}|jrTJ t|ddd}|jslJ d S )Nz4groupby\(\) got an unexpected keyword argument 'foo'matchr   r   )fooTbymutated)pytestraises	TypeErrorgroupbyr-   r
   )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   )	r1   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>)r1   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"   r1   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ZlinearlowerZhigherZmidpointZ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   ri   rj   )r7   quantiler9   rj   r   r   r;      r<   z3TestRolling.test_rolling_quantile.<locals>.<lambda>r   rX   r"   )r1   r7   rk   r=   rZ   r   r[   r\   r]   r>   r^   )r2   rf   r&   r4   rG   rB   rA   r`   r   rj   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  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   rQ   rq   )valueidx1idx2rs   rt   )rr   rt   r   levelrQ   rr      )rs   rs   rt   namescolumnsr]   )r   r\   	set_indexrV   r1   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)r1   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)r1   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 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   rw   rQ   r   r   r   r   r   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   NNrx   r]   )
r   r1   r7   rV   r$   r}   r   from_tuplesr>   r^   )r2   r   expected_valuesr   ZrolrB   rA   r   r   r   test_rolling_corr_cov_unordered   s$    
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"   )
r1   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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   rw   r#   r   ))r   r   )r   rQ   )r   rq   )r*   r   )r*   r   )r*   r          @r   r   rz   rR   )r   r1   r   r   ry   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   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ndarrayr9   r   r   r   r*     s    z-TestRolling.test_groupby_rolling.<locals>.foor   r   r   r   r   r   )idrr   r   r   r   r   )r   r   r   r   r   r   rx   rr   r]   name)
r   r1   rr   r7   r=   r   r   r   r>   r?   )r2   Zexpected_valueZ	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   rw   Tr   )centerrS   rq   )r   r   r   r   r   rQ   r   )rq   rQ   r   rQ   )r   r   r   r   r   r      r   r   r      r!   	   )r   r   r   r   r   r   r   r   r   rQ   r   rq   r   rw   r   r   r   r!   r   r   )r   rp   rx   )r]   r{   rp   )
r   r   r   r   r   r   r   r   r   r   )r   r\   r1   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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 )Nr   r   group_1rw   group_2rQ   rp   )Dategbrr   )datar   r   Tr   )onr   rE   )
r         ?r   g      @      @g      @      @      @r   r   rr   r   r   r   z
2020-01-05z
2020-01-06z
2020-01-07z
2020-01-08z
2020-01-09rx   r   r]   )r   r   r\   r1   r7   rr   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   )rq   rQ   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   rp   r   r   )groupr   rq   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>  r<   zGTestRolling.test_groupby_rolling_center_min_periods.<locals>.<listcomp>r   r   )r   r\   r1   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 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   )rp   r      r   r   r   r   r   r   )r   r   r   r   r   rx   rz   r   )r   r1   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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)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   rq   r   r   r   )r   rD   rS   rE   )r	   r   r1   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 )Nrw   r   r   r   
2019-01-01column1Zcolumn2r   dater   1Dr   leftr   r   r   r   r   r   r   rx   r   r   r\   r   r1   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 )Nrw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rx   r   r   r   r   r   r   .test_groupby_subset_rolling_subset_with_closed  s0    

	z:TestRolling.test_groupby_subset_rolling_subset_with_closedr   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   r:   )r   r   )r   z12rx   r   r   r   r   ))r   r   r:   )r   r   r   )r   r   r   )r   r   r   )
r   r   r   rV   r1   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g dd|_t	
|| d S )Ns1r   rR   r{   float64r   r   rx   )r   s2r   )r   r   N)r   r1   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   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     r   r   r   r   Zr   r   Hrw   Er   )r]   r   	eventTimer   r]   r   count_to_dateZ10dr   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   r   )	r   r   r|   r1   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   rx   rz   r   )r   r1   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 )Nrw   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   rx   r   )r   r\   r   r1   r7   rF   r   r$   r}   r   r   r   r>   r?   r   r   r   r   $test_groupby_rolling_count_closed_onl  s8    

	






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 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   rq   g&?r   )r   r   )r   r   )r   r   r   rQ   rx   r   )r   rV   r1   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   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   r]   r   z values must not have NaTr(   r   60min)r  )
r   r   r$   r}   r|   r.   r/   
ValueErrorr1   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|   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rs   rt   rx   r   r   rs   rt   rO   r   )r   r   r   )r  r  r  r  r  )r  r  r  r  )rs   rt   rs   rt   )	r   r[   r   r1   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   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  rx   )r   r   r   r   r#   r   rs   r   r   r   )r   r   r   )r  r   r  r  r  )r  r   r  r  )rs   r   rs   rt   )
r   r[   r   r\   r1   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   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   rQ   r   r   r   )r   r   )r   rQ   )r   rw   r   r   )r   rq   )r   r   rx   )r   r$   r%   r1   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   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   rw   r   r   r   rQ   r   r   r   r   ))r   r   r   )r   r   rQ   )r   r   r!   )r   r   r   )r   r   rw   )r   r   rp   )r   r   r   )r   r   rq   )r   r   r   )r   rQ   r   )r   rQ   r   )r   rQ   r   )r   r   Nrx   )r   r$   r%   r1   r7   rJ   r   r   r>   r  r]   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   rQ   r  r   r   T)appendr   r   ))r   r   r   r   )r   rQ   r   )r   rw   r   )r   r   r   )r   r   rQ   )r   rq   r   )r   r   rQ   )r   Nr   rx   equiv)exact)r   r$   r%   r|   r1   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rPJ |jjr\J 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<   )r1   r=   r]   r7   r>   r  r-   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   )Nr   r   r   Nr   r   r   )NNr   r   NNr   r   rQ   )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   rQ   rq   rw   r   r!   )r   r   r   r   r   r   r   r   )rS   rE   r   r   r   r   r   r   )r   r   r   r   rQ   rq   rw   r   )r   r   r   r   r   r   r   r   )r   r   rQ   rw   r   r   rq   r   )levelscodesr   )	r   r1   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vsjJ t|j| d S )Nr   r   r   r   r    r   r!   r   r   T)deeprQ   )	r   r1   objr   r7   rJ   r{   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   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Wildr0  r1  )AnimalTyperx   z	Max Speed)g     `x@g     u@g      >@g      4@r   r   ru   r   g      @g      I@))r.  r.  r0  )r.  r.  r1  )r/  r/  r0  )r/  r/  r1  )r2  r2  r3  r   )r   r[   r   r1   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@r7        i@
2018-01-01
2018-01-02)r6  r8  r7       @o@)r   r5  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   r9  r6  )r   r:  r8  )r   r9  r7  )r   r:  r;  )r   r   r5  r   r   c                    s   g | ]}t  |qS r   )rV   )r   attrr   r   r   r   z  r<   z3TestRolling.test_as_index_false.<locals>.<listcomp>F)Zas_indexr   r   r   r   )r   r   r   r   r   )
r   r   r|   r1   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2DE)r]   adl2r]   rA  rp   r   i  rx   r   )r$   repeatr}   r   r|   r1   r7   r8   r   r   r[   r>   r?   )r2   sizeidxvalZarrr   rB   rA   r   r   r   test_nan_and_zero_endpoints  s.    
$z'TestRolling.test_nan_and_zero_endpointsc                    sh   g d}d t  fdd|D }tjtdd$ |djdd	d
 W d    n1 sZ0    Y  d S )N)r   r   r   r   r?  c                    s(   g | ] }t d |   |d ddqS )r   r   *   )tr:   r   r   r   secr   r   r     r<   zBTestRolling.test_groupby_rolling_non_monotonic.<locals>.<listcomp>z.* must be monotonicr(   r   rH  Z3s)r   rS   )r   r.   r/   r  r1   r7   )r2   Zshuffledr   r   rJ  r   "test_groupby_rolling_non_monotonic  s    z.TestRolling.test_groupby_rolling_non_monotonicc                 C   s   g dg dg dg dg dg dg dg dg d	g d
g
}t |g dd}t|d |d< |d}|dddd }|djdddd  }t	|| d S )N)Davidz1/1/2015d   )rM  z1/5/2015  )rM  z	5/30/20152   )rM  z	7/25/2015rP  )Ryanz1/4/2014rN  )rQ  z	1/19/2015rO  )rQ  z	3/31/2016rP  )Joez7/1/2015rN  )rR  z9/9/2015rO  )rR  z
10/15/2015rP  )r   r   amount)r   r{   r   r   c                 S   s   |  dd  S )N180DrS  r#  r9   r   r   r   r;     r<   z4TestRolling.test_groupby_monotonic.<locals>.<lambda>rT  r   rS  )
r   r   Zsort_valuesr|   r1   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>rW  r   )r   r   r$   Zconcatenater%   r|   r1   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   sx   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 d    n1 sj0    Y  d S )Nr   r   r   c                 S   s   g | ]}t |d d qS )r   rI  )r   yearr   r   r   r     r<   zPTestRolling.test_datelike_on_not_monotonic_within_each_group.<locals>.<listcomp>)i  i  r   rw   r   z&Each group within B must be monotonic.r(   r   Z365Dr   r   )r   r\   r.   r/   r  r1   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   rl   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-  r4  r   r>  rF  rL  rU  rY  r[  r   r   r   r   r'   0   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%   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"   ra  r1   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   rc  r9   rW   r   r   r;   
  r<   z3TestExpanding.test_expanding_ddof.<locals>.<lambda>r   rX   r"   rd  re  r   rW   r   test_expanding_ddof  s    z!TestExpanding.test_expanding_ddofrf   rg   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   ri   rj   c                    s   |   jd dS )Nri   rj   )r  rk   r9   rj   r   r   r;     r<   z7TestExpanding.test_expanding_quantile.<locals>.<lambda>r   rX   r"   )ra  r1   r  rk   r=   rZ   r   r[   r\   r]   r>   r^   )r2   rf   r4   rG   rB   rA   r`   r   rj   r   test_expanding_quantile  s    
z%TestExpanding.test_expanding_quantilerm   rn   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  ra  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    )ra  r1   r  rV   r=   r~   r\   r$   r}   Zilocr>   r^   r   r?   )r2   rI   r4   rG   rB   r   rA   Znull_idxr   ri  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"   )ra  r1   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   rb  r.   r\  r]  rf  rg  rh  rm  rn  r   r   r   r   r`    s   



r`  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_datar8   )r   gUUUUUU?gm۶m?g""""""@rb   g۞?g?gt ?rc   ro   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, |jddd fdd}W d    n1 s0    Y  t|| d S )Nr   rQ   r#   r   r   comr   )r   r   r   r   rx   r   nuisancer(   TrO   c                    s   t | jdd  S Nr   rp  rV   ewmr9   methodr   r   r;   m  r<   z&TestEWM.test_methods.<locals>.<lambda>)r   r\   rV   r1   ru  r   r   r>   r^   assert_produces_warningFutureWarningr=   r2   rw  r   r   rB   rA   r   rv  r   test_methodsP  s    

"zTestEWM.test_methodsrm   r   r   rn   grڶ?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   rQ   r#   r   r   rp  r   ))r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   NNrx   r   c                    s   t | jdd  S rs  rt  r9   rv  r   r   r;     r<   z/TestEWM.test_pairwise_methods.<locals>.<lambda>)
r   r\   rV   r1   ru  r   r   r>   r^   r=   rz  r   rv  r   test_pairwise_methodsq  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 daysrr  r(   r   r   halflifetimesr   )
r   gCus=?g;pGR?gZkB?r   g>(?g8Kr?r   gҧU?gA9w?)
r   r   )r   rw   )r   r   )r   r   r  r   )r   r   )r   rq   )r   r!   rx   r   )
r>   rx  ry  r1   ru  r8   r   r   r   r^   )r2   r   r  rB   rA   r   r   r   
test_times  s    6zTestEWM.test_timesc                    sv   d t jtddD |dj dd }|jddd fd	d
}W d    n1 s\0    Y  t || d S )Nr}  rr  r(   r   r   r~  TrO   c                    s   | j  dd S )Nr   r~  )ru  r8   r9   r  r   r   r;     r<   z-TestEWM.test_times_vs_apply.<locals>.<lambda>)r>   rx  ry  r1   ru  r8   r=   r^   )r2   r   rB   rA   r   r  r   test_times_vs_apply  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   rr  r(   r   r~  )r1   r>   rx  ry  ru  r8   valuesr^   )r2   r   r  r   rB   rA   r   r   r   test_times_array  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-1rq   r   )r  rV  )r   	timestampr   r   Z1Hr  r   r   )r  r   rx   r   r   r   )r   r   r\   r1   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.   r\  r]  r$   r}   r{  r|  r  r  r  r  r   r   r   r   ro  O  s"   

"
'
ro  )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'   r`  ro  r   r   r   r   <module>   s&   $	

       G_