o
    Û­j/¶  ã                   @   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/html/CropPilot/venv/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¡d�d‚„ ƒZ-dƒd„„ Z.d…d†„ Z/d‡dˆ„ Z0d‰dŠ„ Z1d‹dŒ„ 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é   ©Úwindowú7DataFrameGroupBy.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ÚFutureWarningr=   Ú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2·ô­DE)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/2015éd   )r�  z1/5/2015éô  )r�  z	5/30/2015é2   )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å?g·mÛ¶mÛö?g""""""@ri   g»¹øÛž æ?g¦€´ÿÖî?gët ë©Õò?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|   gÒr ‡Ú¶í?gß¿yqâ+ö?c                    sŽ   t dgd tdƒdœƒ}t| d¡jdd�ˆ ƒƒ }t d|itjg d¢g d	¢d
�d�}t ||¡ | d¡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;¬pËGRð?gÀZµkBšø?r±   gÕ>�(â?g8KÉrŠó?r±   gÒ§Uô‡æä?gAó9w»ó?)
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 