o
    _~#g                     @   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
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d Zdd ZdS )    N)	DataFrameDatetimeIndex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   z
2020-01-02
2020-01-10z
2020-01-22z
2020-01-03
2020-01-23r   z
2020-01-04ABC)r   r	    r   r   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/pandas/tests/window/test_groupby.pytimes_frame   s   r   c                   C   .   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,      .r&   c                   @   sD  e Zd Zdd Zd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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d(gd)d*ggd+d, Zd-d. Zd/d0 Zejd1g d2d3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Zejd=d>d?gd@dA ZdBdC ZdDdE ZdFdG ZdHdI ZejdJdKdLddMfdNi fgdOdP ZejdQdRdSidSfdRdTidUfgdVdW Z ejdXd(d*gdYdZ Z!d[d\ Z"d]d^ Z#d_d` Z$dadb Z%dcdd Z&ejdedLdfdgg dhfdLdLdgg difdjdjdgg dkfdjdjdlg dmfgdndo Z'ejdpe()dqdrgdsdtggdudv Z*dwdx Z+ejdydzgd{g d|igdzdUge,d}e,d~e,d}e,d~gg ddggdd Z-dd Z.dd Z/dd Z0dd Z1dd Z2dTS )TestRollingc                 C   sF   d}t jt|d |jddd W d    d S 1 sw   Y  d S )Nz4groupby\(\) got an unexpected keyword argument 'foo'matchr   r   )foo)pytestraises	TypeErrorgroupby)selfr&   msgr   r   r   !test_groupby_unsupported_argument2   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      |  d S )Nr   rollingmeanxr   r   r   <lambda>;       z*TestRolling.test_getitem.<locals>.<lambda>r   )	r/   r   r   applyr7   r8   tmassert_series_equalr   )r0   r&   g	g_mutatedexpectedresultr   r   r   test_getitem7   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_periodsr3   c                 S   s   | j ddd S )Nr   r   rE   )r7   countr9   r   r   r   r;   N       z3TestRolling.test_getitem_multiple.<locals>.<lambda>)r/   r7   r   r   r=   rG   r>   r?   )r0   r&   r@   rrA   rB   rC   r   r   r   test_getitem_multipleI   s   


z!TestRolling.test_getitem_multiplefsumr8   minmaxrG   kurtskewc           	         s   |j ddd}|jdd}t|  }d}tjt|d | fdd	}W d    n1 s0w   Y  |jdd
d}t	|d t
dg}||_t|| d S )Nr   F
group_keys   window7DataFrameGroupBy.apply operated on the grouping columnsr)   c                    s   t | d  S NrT   getattrr7   r9   rK   r   r   r;   i   rH   z*TestRolling.test_rolling.<locals>.<lambda>r   axisr!   r/   r7   rZ   r>   assert_produces_warningDeprecationWarningr=   dropr   from_arraysrangeindexassert_frame_equal	r0   rK   r&   r@   rI   rC   r1   rB   expected_indexr   r[   r   test_rollingV   s   zTestRolling.test_rollingstdvarc           	         s   |j ddd}|jdd}t| dd}d}tjt|d	 | fd
d}W d    n1 s2w   Y  |jddd}t	|d t
dg}||_t|| d S )Nr   FrR   rT   rU   r   ddofrW   r)   c                    s   t | d ddS )NrT   r   rk   rY   r9   r[   r   r   r;   y       z/TestRolling.test_rolling_ddof.<locals>.<lambda>r\   r!   r^   rf   r   r[   r   test_rolling_ddofq   s   zTestRolling.test_rolling_ddofinterpolationlinearlowerhighermidpointnearestc           	         s   |j ddd}|jdd}|jd d}d}tjt|d	 | fd
d}W d    n1 s1w   Y  |jddd}t	|d t
dg}||_t|| d S )Nr   FrR   rT   rU   皙?ro   rW   r)   c                    s   |  djd dS )NrT   rv   rw   )r7   quantiler9   rw   r   r   r;          z3TestRolling.test_rolling_quantile.<locals>.<lambda>r   r\   r!   )r/   r7   rx   r>   r_   r`   r=   ra   r   rb   rc   rd   re   )	r0   ro   r&   r@   rI   rC   r1   rB   rg   r   rw   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   rT   r   )valueidx1idx2r   r   )r   r   r   levelrT   r      )r   r   r   namescolumnsrd   )r   rc   	set_indexrZ   r/   r7   r$   nanr   rb   listr>   re   )r0   rK   expected_valdfotherrC   expected_datarB   r   r   r   /test_rolling_corr_cov_other_same_size_as_groups   s,   &
z;TestRolling.test_rolling_corr_cov_other_same_size_as_groupsc           	         s    d}|jdd}t| } fdd}d}tjt|d ||}W d    n1 s2w   Y  tj|d< t	|| d S )Nr   rT   rU   c                    s   t | d S rX   rY   r9   rK   r&   r   r   func   s   zITestRolling.test_rolling_corr_cov_other_diff_size_as_groups.<locals>.funcrW   r)   )
r/   r7   rZ   r>   r_   r`   r=   r$   r   re   	r0   rK   r&   r@   rI   rC   r   r1   rB   r   r   r   /test_rolling_corr_cov_other_diff_size_as_groups   s   

z;TestRolling.test_rolling_corr_cov_other_diff_size_as_groupsc           	         s   | d}|jdd}t|j dd} fdd}d}tjt|d	 ||}W d    n1 s3w   Y  t|| d S )
Nr   rT   rU   Tpairwisec                    s   t | jd ddS )NrT   Tr   )rZ   r   r7   r9   r[   r   r   r      s   z8TestRolling.test_rolling_corr_cov_pairwise.<locals>.funcrW   r)   )	r/   r7   rZ   r   r>   r_   r`   r=   r?   r   r   r[   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   r   rT   r   r   r   r   r   rT   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   NNr   rd   )
r   r/   r7   rZ   r$   r   r   from_tuplesr>   re   )r0   r   expected_valuesr   rolrC   rB   r   r   r   test_rolling_corr_cov_unordered   s$   
z+TestRolling.test_rolling_corr_cov_unorderedc           	         s   |j ddd}|jdd}|jdd  d}d	}tjt|d
 | fdd}W d    n1 s3w   Y  |jddd}t|d t	dg}||_
t|| d S )Nr   FrR   rT   rU   c                 S      |   S NrM   r9   r   r   r   r;          z0TestRolling.test_rolling_apply.<locals>.<lambda>rawrW   r)   c                    s   |  djdd  dS )NrT   c                 S   r   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\   r!   )r/   r7   r=   r>   r_   r`   ra   r   rb   rc   rd   re   )	r0   r   r&   r@   rI   rC   r1   rB   rg   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   r   r"   r   ))r   r   )r   rT   )r   r   )r+   r   )r+   r   )r+   r          @r   r   r   rU   )r   r/   r   r   r   r$   r   r7   rM   r>   re   )r0   r   r@   mirB   rC   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$   ndarrayr9   r   r   r   isnumpyarray  s   z6TestRolling.test_groupby_rolling.<locals>.isnumpyarrayr   r   r   r   r   r   )idr   r   r   r   r   )r   r   r   r   r   r   r   r   rd   name)
r   r/   r   r7   r=   r   r   r   r>   r?   )r0   expected_value	raw_valuer   r   rC   rB   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   r   Tr   )centerrV   r   )r   r   r   r   r   rT   r   )r   rT   r   rT   )r   r   r   r   r   r      r   r   r      r    	   )r   r   r   r   r   r   r   r   r   rT   r   r   r   r   r   r   r   r    r   r   )r   r~   r   )rd   r   r~   )
r   r   r   r   r   r   r   r   r   r   )r   rc   r/   r7   r8   r$   r   r   r   r>   r?   r   re   )r0   seriesrC   rB   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j|d
 |d gd
dgd}t	g dd|d}t
|| d S )Nr   r   group_1r   group_2rT   r~   )Dategbr   )datar   r   Tr   )onr   rF   r   )
r         ?r   g      @      @g      @      @      @r   r   r   r   rd   )r   r   rc   r/   r7   r   r8   r   rb   r   r>   r?   )r0   r   rC   r   rB   r   r   r   test_groupby_rolling_center_onk  s$   
z*TestRolling.test_groupby_rolling_center_onrF   )r   rT   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   r~   r   r   )groupr   r   r   T)r   rF   r   )
r   r   r   r   r         @g      @r   r          @c                 S   s   g | ]}|d  qS )g      $@r   .0r:   r   r   r   
<listcomp>  ry   zGTestRolling.test_groupby_rolling_center_min_periods.<locals>.<listcomp>r   r   )r   rc   r/   r7   r8   reset_indexrO   r$   r   r>   re   )r0   rF   r   window_sizerC   
grp_A_mean
grp_B_meannum_nansnansgrp_A_expectedgrp_B_expectedrB   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   )r~   r      r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r/   r7   rO   r$   r   r   r   r>   re   r   r?   r0   r   rC   rB   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   dtyper   )r   r$   r%   int64copy)r0   
num_valuesrF   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   r   r   r   r   )r   rE   rV   rF   )r
   r   r/   rd   r7   rM   r>   re   )r0   r  r   rC   rB   r   r   r   #test_groupby_rolling_custom_indexer  s   *
z/TestRolling.test_groupby_rolling_custom_indexerc              	   C   s   t tdtddgd dgd  dd dD d d	}|d
jddddd  }ttjtjddtjtjddgtj	|d
dg d
dgddd}t
|| d S )Nr    r   rT   r   c                 S      g | ]}t |qS r   r   r   dater   r   r   r         zGTestRolling.test_groupby_rolling_subset_with_closed.<locals>.<listcomp>
2019-01-01r
  
2019-01-02r  r   column1column2r   r  r   1Dr  leftr   r   r  r         "@r   r   r   rc   r/   r7   rM   r   r$   r   r   
from_framer>   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gd dgd  dd dD d d	}|d
ddg jddddd  }ttjtjddtjtjddgtj	|d
dg d
dgddd}t
|| d S )Nr    r   rT   r   c                 S   r  r   r  r  r   r   r   r     r  zNTestRolling.test_groupby_subset_rolling_subset_with_closed.<locals>.<listcomp>r	  r   r  r   r  r  r  r  r  r   r  r   r   r  r   r   r   r   .test_groupby_subset_rolling_subset_with_closed  s6   
z:TestRolling.test_groupby_subset_rolling_subset_with_closedr   rO   rN   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2r   r   r   r   r   ))r   r   r:   )r   r   r   )r   r   r  )r   r  r  )
r   r   r   rZ   r/   r7   r$   r   r>   r?   )r0   r   dsrC   rB   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   rU   r   float64r   r   r   )r  s2r  )r  r  N)r   r/   r7   rM   ra   r   from_productr   rd   r>   re   )r0   rB   rC   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   Hr   Er   )rd   r   	eventTimer  rd   r   count_to_date10dr&  r   c                 S   s
   | j d S )Nr   )shaper   r   r   r   r;   J  s   
 z?TestRolling.test_groupby_rolling_string_index.<locals>.<lambda>r   r   r   )rd   r   r&  r'  )	r   r   r   r/   cumcountr7   r=   r>   re   )r0   r   groupsrolling_groupsrC   rB   r   r   r   !test_groupby_rolling_string_index:  s6   	

	
z-TestRolling.test_groupby_rolling_string_indexc                 C   s|   t ddgddgdjdddd }t tddgddggdd	gtjd
dgdd gdd}|jdd}t	
|| d S )Nr   r   )r+   r   r+   F)sortr   r   r   )r   r   r   r   r   r  )r   r/   r7   rN   r$   arrayr   r   ra   r>   re   )r0   rC   rB   r   r   r   test_groupby_rolling_no_sortW  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g dd| dd}tjg d|gdd
gd}t	t
jddt
jddgd|d}t|| d S )Nr   r   r   r   20190101)r   periodsunitr  r   3dr  r  r  r  )z
2018-12-27z
2018-12-29z
2018-12-31z
2018-12-28z
2018-12-30r
  M8[]r   )r   r   r   r   r   r   r   r   r   )r   rc   r   r/   r7   rG   r   r   rb   r   r$   r   r>   r?   )r0   r5  r   rC   dtir   rB   r   r   r   $test_groupby_rolling_count_closed_onh  s<   
	
z0TestRolling.test_groupby_rolling_count_closed_on)r   kwargsr7   r   r  	expandingc                 C   s   t ddgddgddgddgddggddgd}t|d|d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  r   g&?r   )r   r   )r   r   )r   r   r   rT   r   r   r   )r   rZ   r/   semr$   r   r   r   ra   r>   re   )r0   r   r;  r   rC   rB   r   r   r   test_groupby_rolling_sem  s   &z$TestRolling.test_groupby_rolling_sem)rollingskeyr   r   Nrd   c                 C   s   t tddtjgg dg dd}|dkr|d}tjt| dd	 |d
j	di | W d    d S 1 s<w   Y  d S )Nz2020-06-01 12:00z2020-06-01 14:00r   r   r   rd   r   z values must not have NaTr)   r   60min)rB  )
r   r	   r$   r   r   r,   r-   
ValueErrorr/   r7   )r0   r@  rA  r   r   r   r   "test_groupby_rolling_nans_in_index  s   
"z.TestRolling.test_groupby_rolling_nans_in_indexrS   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val1rF  val2r   r   r   r   r   r   r   rR   r   )r   r   r   )rF  rF  rF  rF  rI  )rG  rG  rG  rG  )r   r   r   r   )	r   rb   r   r/   r7   r8   r   r>   r?   )r0   rS   arraysrd   srC   rB   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 )NrE  rH  r   )r   r   r   r   r"   r   r   r   r   r   )r   r   r   )rF  r   rF  rF  rM  )rG  r   rG  rG  )r   r   r   r   )
r   rb   r   rc   r/   r7   r8   r   r>   re   r0   rJ  rd   r   rC   rB   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   rT   r   r   r   )r   r   )r   rT   )r   r   r   r   )r   r   )r   r   r   )r   r$   r%   r/   r7   r8   r   r   r>   assert_index_equalrd   r0   r   rC   rg   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   r   r   r   r   rT   r   r   r   r   ))r   r   r   )r   r   rT   )r   r   r    )r   r   r   )r   r   r   )r   r   r~   )r   r   r   )r   r   r   )r   r   r   )r   rT   r   )r   rT   r   )r   rT   r   )r   r   Nr   )r   r$   r%   r/   r7   rM   r   r   r>   rP  rd   rQ  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   rT   rS  r   r   T)appendr   r   ))r   r   r   r   )r   rT   r   )r   r   r   )r   r   r   )r   r   rT   )r   r   r   )r   r   rT   )r   Nr   r   equiv)exact)r   r$   r%   r   r/   r7   r8   r   r   r>   rP  rd   rQ  r   r   r   *test_groupby_rolling_resulting_multiindex3  s   &
z6TestRolling.test_groupby_rolling_resulting_multiindex3c                 C   s   |j ddd}d}tjt|d |dd j}W d    n1 s#w   Y  |jdd	}d}tjt|d |d
d j}W d    n1 sJw   Y  t|| d S )Nr   FrR   rW   r)   c                 S   r5   rX   r7   rM   r9   r   r   r   r;     r<   zUTestRolling.test_groupby_rolling_object_doesnt_affect_groupby_apply.<locals>.<lambda>rT   rU   c                 S   r5   rX   rY  r9   r   r   r   r;   !  r<   )r/   r>   r_   r`   r=   rd   r7   rP  )r0   r&   r@   r1   rB   _rC   r   r   r   7test_groupby_rolling_object_doesnt_affect_groupby_apply  s   zCTestRolling.test_groupby_rolling_object_doesnt_affect_groupby_apply)rV   rF   r   rB   r   r  )Nr   r   r   Nr   r   r   )NNr   r   NNr   r   rT   )NNNNNNNNright)NNNr   NNNr   c                 C   sx   t g d}|g dj|||dd}t tj|ddttddgg d	gg d
g dgdd}t|| d S )N)r   r   r   rT   r   r   r   r    )r   r   r   r   r   r   r   r   )rV   rF   r   r   r  r   r   r   )r   r   r   r   rT   r   r   r   )r   r   r   r   r   r   r   r   )r   r   rT   r   r   r   r   r   )levelscodesr   )	r   r/   r7   rj   r$   r1  r   r>   re   )r0   rV   rF   r   rB   r   rC   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s5J t|j| d S )Nr   r   r   r   r   r   r    r  r   T)deeprT   )	r   r/   objr   r7   rM   r   r>   re   )r0   r   r   r@   original_objrI   rC   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)Falconrf  Parrotrg  )CaptiveWildrh  ri  )AnimalTyper   z	Max Speed)g     `x@g     u@g      >@g      4@r   r   r   r   g      @g      I@))rf  rf  rh  )rf  rf  ri  )rg  rg  rh  )rg  rg  ri  )rj  rj  rk  r   )r   rb   r   r/   r7   rM   r   r$   r   r   r>   r?   rN  r   r   r   test_groupby_levelJ  s   	zTestRolling.test_groupby_levelzby, expected_datar   num)      Y@     b@ro        i@
2018-01-01
2018-01-02)rn  rp  ro       @o@)r  rm  c                    s   g dg dg dg dg}t |g dd  d d| d	 d<  dg  fd
d|D } j|ddjddd }dg di}|| t | jd}d|v rc|d d| d	|d< t	|| d S )N)r   rq  rn  )r   rr  rp  )r   rq  ro  )r   rr  rs  )r   r  rm  r  r  r7  r8  c                    s   g | ]}t  |qS r   )rZ   )r   attrr+  r   r   r     rm   z3TestRolling.test_as_index_false.<locals>.<listcomp>F)as_indexr   r   r  r   )r   r   r   r   r   )
r   astyper   r/   r7   r8   updaterd   r>   re   )r0   r4   r   r5  r   gp_byrC   rB   r   r+  r   test_as_index_falseb  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2DE)rd   adl2rd   r|  r~   r  i  )r   r   r   )r$   r   typerepeatr   r   r   r/   r7   r8   r   r   rb   r   r>   r?   )
r0   any_int_numpy_dtypetypsizeidxvalarrr   rC   rB   r   r   r   test_nan_and_zero_endpoints  s4   

z'TestRolling.test_nan_and_zero_endpointsc                    sj   g d}d t  fdd|D }tjtdd |djdd	d
 W d    d S 1 s.w   Y  d S )N)r   r   r   r   rz  c                    s(   g | ]}t d |   |d ddqS )r   r   *   )tr:   r   r  r   secr   r   r     s   ( zBTestRolling.test_groupby_rolling_non_monotonic.<locals>.<listcomp>z.* must be monotonicr)   r   r  3s)r   rV   )r   r,   r-   rC  r/   r7   )r0   shuffledr   r   r  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}tjt|d |dddd }W d    n1 sVw   Y  |dj	dddd 
 }t|| d S )N)Davidz1/1/2015d   )r  z1/5/2015  )r  z	5/30/20152   )r  z	7/25/2015r  )Ryanz1/4/2014r  )r  z	1/19/2015r  )r  z	3/31/2016r  )Joez7/1/2015r  )r  z9/9/2015r  )r  z
10/15/2015r  )r   r  amount)r   r   r  rW   r)   r   c                 S      |  dd  S )N180Dr  rY  r9   r   r   r   r;     rH   z4TestRolling.test_groupby_monotonic.<locals>.<lambda>r  r)  r  )r   r	   sort_valuesr>   r_   r`   r   r/   r=   r7   rM   r?   )r0   r   r   r1   rB   rC   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}tjt|d |d	d
dd }W d    n1 sEw   Y  |	djdddj }t|| d S )Nz2016-01-01 09:30:00r   rK  )r   r4  freqr   r   r   r   r    r!   r   rW   r)   r   r   c                 S   r  )N4sr   r6   r9   r   r   r   r;     rH   zJTestRolling.test_datelike_on_monotonic_within_each_group.<locals>.<lambda>r  r)  )r   r   r$   concatenater%   r>   r_   r`   r   r/   r=   r7   r   r8   r?   )r0   datesr   r1   rB   rC   r   r   r   ,test_datelike_on_monotonic_within_each_group  s    
z8TestRolling.test_datelike_on_monotonic_within_each_groupc                 C   sz   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    d S 1 s6w   Y  d S )Nr   r   r   c                 S   s   g | ]}t |d d qS r   r  )r   yearr   r   r   r     r   zPTestRolling.test_datelike_on_not_monotonic_within_each_group.<locals>.<listcomp>)i  i  r"  r   r   z&Each group within B must be monotonic.r)   r   365Dr   r)  )r   rc   r,   r-   rC  r/   r7   )r0   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   r2   rD   rJ   r,   markparametrizerh   rn   rz   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r!  r/  r2  r:  r?  rD  rL  rO  rR  rT  rX  r[  r`  r   r   re  rl  r   ry  r  r  r  r  r  r   r   r   r   r(   1   s    





&
 
A

(



	


"r(   c                   @   s   e Zd Zej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   r   r   r#   )r0   r   r   r   frame  r'   zTestExpanding.framerK   rL   c           	         s   |j ddd}| }t|  }d}tjt|d | fdd}W d    n1 s.w   Y  |jddd	}t	|d t
d
g}||_t|| d S )Nr   FrR   rW   r)   c                    s   t |    S r   rZ   r<  r9   r[   r   r   r;     s    z.TestExpanding.test_expanding.<locals>.<lambda>r   r\   r!   r/   r<  rZ   r>   r_   r`   r=   ra   r   rb   rc   rd   re   	r0   rK   r  r@   rI   rC   r1   rB   rg   r   r[   r   test_expanding  s   zTestExpanding.test_expandingri   rj   c           	         s   |j ddd}| }t| dd}d}tjt|d | fdd	}W d    n1 s0w   Y  |jdd
d}t	|d t
dg}||_t|| d S )Nr   FrR   r   rk   rW   r)   c                    s   t |   ddS )Nr   rk   r  r9   r[   r   r   r;      ry   z3TestExpanding.test_expanding_ddof.<locals>.<lambda>r   r\   r!   r  r  r   r[   r   test_expanding_ddof  s   z!TestExpanding.test_expanding_ddofro   rp   c           	         s   |j ddd}| }|jd d}d}tjt|d | fdd	}W d    n1 s/w   Y  |jdd
d}t	|d t
dg}||_t|| d S )Nr   FrR   rv   rw   rW   r)   c                    s   |   jd dS )Nrv   rw   )r<  rx   r9   rw   r   r   r;   3  rH   z7TestExpanding.test_expanding_quantile.<locals>.<lambda>r   r\   r!   )r/   r<  rx   r>   r_   r`   r=   ra   r   rb   rc   rd   re   )	r0   ro   r  r@   rI   rC   r1   rB   rg   r   rw   r   test_expanding_quantile(  s   
z%TestExpanding.test_expanding_quantiler{   r|   c                    s   d}| }t| } fdd}d}tjt|d ||}W d    n1 s0w   Y  ttddttdd	 }	t	j
|j|	d
f< t	j
|d< t|| t|j dd} fdd}
d}tjt|d ||
}W d    n1 s~w   Y  t|| d S )Nr   c                    s   t |   S r   r  r9   rK   r  r   r   func_0C  s   z5TestExpanding.test_expanding_corr_cov.<locals>.func_0rW   r)   r   =   H   q   r   Tr   c                    s   t | j  ddS )NTr   )rZ   r   r<  r9   r[   r   r   func_1T  s   z5TestExpanding.test_expanding_corr_cov.<locals>.func_1)r/   r<  rZ   r>   r_   r`   r=   r   rc   r$   r   ilocre   r   r?   )r0   rK   r  r@   rI   rC   r  r1   rB   null_idxr  r   r  r   test_expanding_corr_cov<  s&   

z%TestExpanding.test_expanding_corr_covc           	         s   |j ddd}| }|jdd  d}d}tjt|d | fd	d}W d    n1 s1w   Y  |jdd
d}t|d t	dg}||_
t|| d S )Nr   FrR   c                 S   r   r   r   r9   r   r   r   r;   a  r   z4TestExpanding.test_expanding_apply.<locals>.<lambda>r   rW   r)   c                    s   |   jdd  dS )Nc                 S   r   r   r   r   r   r   r   r;   e  r   zFTestExpanding.test_expanding_apply.<locals>.<lambda>.<locals>.<lambda>r   )r<  r=   r9   r   r   r   r;   e  rm   r   r\   r!   )r/   r<  r=   r>   r_   r`   ra   r   rb   rc   rd   re   )	r0   r   r  r@   rI   rC   r1   rB   rg   r   r   r   test_expanding_apply\  s   
z"TestExpanding.test_expanding_applyN)r   r   r   r,   fixturer  r  r  r  r  r  r  r  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S )TestEWMzmethod, expected_datar8   )r   gUUUUUU?gm۶m?g""""""@ri   g۞?g?gt ?rj   r}   gn۶m۶?g++?c                 C   sd   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|| d S )Nr   rT   r"   r   r   comr   )r   r   r   r   r   r   )	r   rc   rZ   r/   ewmr   r   r>   re   r0   methodr   r   rC   rB   r   r   r   test_methodsp  s   
zTestEWM.test_methodsr{   r   r   r|   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dg 	 fdd}t|| d S )Nr   rT   r"   r   r   r  r   ))r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   NNr   r   c                    s   t | jdd  S )Nr   r  )rZ   r  r9   r  r   r   r;     ry   z/TestEWM.test_pairwise_methods.<locals>.<lambda>)
r   rc   rZ   r/   r  r   r   r>   re   r=   r  r   r  r   test_pairwise_methods  s   
zTestEWM.test_pairwise_methodsc                 C   s\   d}| d}|dj||d }tdg ditjg ddd gdd	}t|| d S )
N23 daysr   r   halflifetimesr   )
r   gCus=?g;pGR?gZkB?r   g>(?g8Kr?r   gҧU?gA9w?)
r   r   )r   r   )r   r   )r   r   r=  r   )r   r   )r   r   )r   r    r   r   )	popr/   r  r8   r   r   r   r>   re   )r0   r   r  r  rC   rB   r   r   r   
test_times  s   
zTestEWM.test_timesc                 C   sN   d}| d}|d}|j||d }|j||jd }t|| d S )Nr  r   r   r  )r  r/   r  r8   valuesr>   re   )r0   r   r  r  r   rC   rB   r   r   r   test_times_array  s   

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-1r   h)r4  r  )r   	timestampr   r   1hr  r)  r   )r  r   r   r   r   r   )r   r   rc   r/   r7   rG   r   rb   r   r>   re   r   r?   )r0   r   grprC   expected_df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  o  s"    

"
'	r  c                  C      t g dg dd} | dg}|dj| d}tjg ddd gd}t tjtjtjgtjd	d	gd|d
}t	|| d S )N)r  r  r  rT   r   r   r   r   r   r   ))r  r   )r  r   )r  r   r   r   r   
r   r/   r7   r{   r   r   r$   r   r>   re   r   r   rC   rd   rB   r   r   r   .test_rolling_corr_with_single_integer_in_index  s   r  c                  C   r  )N)r   r   r   r  r   r   r   r  ))r   r   )r   r   )r   r   r   r   r   r  r  r   r   r   &test_rolling_corr_with_tuples_in_index	  s   r  )numpyr$   r,   pandasr   r   r   r   r   r   r   r	   pandas._testing_testingr>   pandas.api.indexersr
   pandas.core.groupby.groupbyr   r  r   r&   r(   r  r  r  r  r   r   r   r   <module>   s.    (


       Wn 