
    d                         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             Zej        d             Z G d d          Z G d	 d
          Z G d d          ZdS )    N)	DataFrameIndex
MultiIndexSeries	Timestamp
date_rangeto_datetime)BaseIndexer)get_groupbyc                  N    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	        \/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/window/test_groupby.pytimes_framer       sN     CCC///   	
 	
  r   c                  n    t          dgdz  dgdz  z   dgdz  z   t          j        d          d          S 	Nr      r      r      (   r   r   r   nparanger   r   r   
roll_framer+   +   s<    A38qcBh.!q8ry}}MMNNNr   c                      e Zd Zd Zd Zd Zej                            dg d          d             Z	ej                            dddg          d	             Z
ej                            d
g d          d             Zej                            dddgddgg          d             Zej                            dddg          d             Zej                            dddg          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             Zd Zd Zej                            dddgddgg          d             Zd  Zd! Zej                            d"g d#          d$             Zd% Zd& Zd' Zd( Zej                            d)d*d+g          d,             Zd- Zd. Zd/ Zd0 Zej                            d1d2d3dd4fd5i fg          d6             Zej                            d7d8d9id9fd8d:id;fg          d<             Z ej                            d=ddg          d>             Z!d? Z"d@ Z#dA Z$dB Z%dC Z&ej                            dDd3dEdFg dGfd3d3dFg dHfdIdIdFg dJfdIdIdKg dLfg          dM             Z'ej                            dN e(j)        dOdPg          dQdRgg          dS             Z*dT Z+ej                            dUdVgdWg dXigdVd;g e,dY           e,dZ           e,dY           e,dZ          gg d[d\gg          d]             Z-d^ Z.d_ Z/d` Z0da Z1db Z2d:S )cTestRollingc                     d}t          j        t          |          5  |                    dd           d d d            d S # 1 swxY w Y   d S )Nz4groupby\(\) got an unexpected keyword argument 'foo'matchr   r   )foo)pytestraises	TypeErrorgroupby)selfr+   msgs      r   !test_groupby_unsupported_argumentz-TestRolling.test_groupby_unsupported_argument1   s    E]9C000 	+ 	+s***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   AA
Ac                    |                     d          }t          |d          }|j                            d           }|                    d                                          j        }t          j        ||           |                    d          j                                        }t          j        ||           |j                            d                                          }t          j        ||           |j                             |j                                      d                                          }t          j        ||           d S )Nr   byc                 P    |                      d                                          S )Nr   rollingmeanxs    r   <lambda>z*TestRolling.test_getitem.<locals>.<lambda>:   s    qyy||/@/@/B/B r   r   )	r5   r   r   applyr>   r?   tmassert_series_equalr   )r6   r+   g	g_mutatedexpectedresults         r   test_getitemzTestRolling.test_getitem6   s   s##
s333	;$$%B%BCC1""$$&
vx0001$$&&
vx000Q$$&&
vx000%%jl33;;A>>CCEE
vx00000r   c                 n   |                     d          }|                    dd          }t          |d          }|j                            d           }|j                                        }t          j        ||           |j                                        }t          j        ||           d S )Nr   r   r   min_periodsr:   c                 T    |                      dd                                          S )Nr   r   rL   )r>   countr@   s    r   rB   z3TestRolling.test_getitem_multiple.<locals>.<lambda>M   s"    qyyy/J/J/P/P/R/R r   )r5   r>   r   r   rC   rO   rD   rE   )r6   r+   rF   rrG   rH   rI   s          r   test_getitem_multiplez!TestRolling.test_getitem_multipleH   s    s##IIaQI''
s333	;$$%R%RSS
vx000
vx00000r   fsumr?   minmaxrO   kurtskewc                 z   |                     dd          }|                    d          } t          |                      }|                    fd          }|                    dd          }t          j        |d         t          d	          g          }||_        t          j
        ||           d S )
Nr   F
group_keys   windowc                 Z     t          |                     d                                S Nr\   getattrr>   rA   rR   s    r   rB   z*TestRolling.test_rolling.<locals>.<lambda>f   s$    %=WQYYq\\1%=%=%?%? r   r   axisr&   r5   r>   rb   rC   dropr   from_arraysrangeindexrD   assert_frame_equalr6   rR   r+   rF   rP   rI   rH   expected_indexs    `      r   test_rollingzTestRolling.test_rollingU   s     su55IIQIA77????@@==1=--#/C%))0LMM'
fh/////r   stdvarc                 ~   |                     dd          }|                    d          } t          |          d          }|                    fd          }|                    dd	          }t          j        |d         t          d
          g          }||_        t          j
        ||           d S )Nr   FrZ   r\   r]   r   ddofc                 ^     t          |                     d                    d          S )Nr\   r   rr   ra   rc   s    r   rB   z/TestRolling.test_rolling_ddof.<locals>.<lambda>t   s)    %=WQYYq\\1%=%=1%E%E%E r   rd   r&   rf   rl   s    `      r   test_rolling_ddofzTestRolling.test_rolling_ddofn   s    su55IIQIAA&&&77EEEEFF==1=--#/C%))0LMM'
fh/////r   interpolationlinearlowerhighermidpointnearestc                 x   |                     dd          }|                    d          }|                    d          }|                    fd          }|                    dd	
          }t          j        |d         t          d          g          }||_        t          j
        ||           d S )Nr   FrZ   r\   r]   皙?rv   c                 X    |                      d                              d          S )Nr\   r~   r   )r>   quantilerA   rv   s    r   rB   z3TestRolling.test_rolling_quantile.<locals>.<lambda>   s$    aiill++C}+MM r   r   rd   r&   )r5   r>   r   rC   rg   r   rh   ri   rj   rD   rk   )r6   rv   r+   rF   rP   rI   rH   rm   s    `      r   test_rolling_quantilez!TestRolling.test_rolling_quantile|   s     su55IIQIC}==77MMMM
 
 ==1=--#/C%))0LMM'
fh/////r   zf, expected_valcorrr   cov      ?c                    t          t          d          dgdz  dgdz  z   g ddz  d                              ddg          }t          t          d          g dd	                              d          } t          |                    d
                              d          |          |          }t          j        g|gdz  z   dz  }t          |dgt          j	        dgdz  dgdz  z   dgdz  dgdz  z   t          t          dd                    dz  gg d                    }t          j        ||           d S )N
   r      r   )r   r   r   r\   r   )valueidx1idx2r   r   )r   r   r   levelr\   r      )r   r   r   namescolumnsrj   )r   ri   	set_indexrb   r5   r>   r)   nanr   rh   listrD   rk   )r6   rR   expected_valdfotherrI   expected_datarH   s           r   /test_rolling_corr_cov_other_same_size_as_groupsz;TestRolling.test_rolling_corr_cov_other_same_size_as_groups   sw    Bii!qA37):OOOVWDWXX
 

)VV$
%
% 	 E!HHoooFFGGQQ
 
 <!,,44Q77;;EBB&\NQ$66!;I(C!GqcAg%C!GqcAg%q!%%)
 /..  
 
 
 	fh/////r   c                                         d          }|                    d          } t          |                    }fd}|                    |          }t          j        |d<   t          j        ||           d S )Nr   r\   r]   c                 \     t          |                     d                              S r`   ra   )rA   rR   r+   s    r   funczITestRolling.test_rolling_corr_cov_other_diff_size_as_groups.<locals>.func   s'    +7199Q<<++J777r   )r5   r>   rb   rC   r)   r   rD   rk   r6   rR   r+   rF   rP   rI   r   rH   s    ``     r   /test_rolling_corr_cov_other_diff_size_as_groupsz;TestRolling.test_rolling_corr_cov_other_diff_size_as_groups   s    s##IIQIAz**	8 	8 	8 	8 	8 	8 774== 
fh/////r   c                     |                     d          }|                    d          } t          |j                  d          }fd}|                    |          }t          j        ||           d S )Nr   r\   r]   Tpairwisec                 h     t          | j                            d                    d          S )Nr\   Tr   )rb   r   r>   rc   s    r   r   z8TestRolling.test_rolling_corr_cov_pairwise.<locals>.func   s,    -713;;q>>1--t<<<<r   )r5   r>   rb   r   rC   rD   rE   r   s    `      r   test_rolling_corr_cov_pairwisez*TestRolling.test_rolling_corr_cov_pairwise   s    s##IIQI a$///	= 	= 	= 	= 	= 774==
vx00000r   zfunc, expected_values      ?      @c                    t          g dg dg dd          }|                    d                              d          } t          ||                      }t          dt          j        gz  |d         z   d	t          j        gz  z   dt          j        gz  |d
         z   d	t          j        gz  z   dt          j        g dg d                    }t          j	        ||           d S )N)g1g2r   r   )r   r   r   r   )r   r   r   r\   r   r   r   r   r   r\   r   r   r   )r   r   ))r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   NNr   rj   )
r   r5   r>   rb   r)   r   r   from_tuplesrD   rk   )r6   r   expected_valuesr   rolrI   rH   s          r   test_rolling_corr_cov_unorderedz+TestRolling.test_rolling_corr_cov_unordered   s    ---!\\!\\ 
 
 jjoo%%a((#d##%%"&\OA$66bfXE"&\OA$66bfXE  (	 	 	 (''  
 
 
& 	fh/////r   c                 z   |                     dd          }|                    d          }|                    d           }|                    fd          }|                    dd	
          }t	          j        |d         t          d          g          }||_        t          j	        ||           d S )Nr   FrZ   r\   r]   c                 *    |                                  S NrT   r@   s    r   rB   z0TestRolling.test_rolling_apply.<locals>.<lambda>       15577 r   rawc                 Z    |                      d                              d           S )Nr\   c                 *    |                                  S r   r   ys    r   rB   zBTestRolling.test_rolling_apply.<locals>.<lambda>.<locals>.<lambda>   s    !%%'' r   r   )r>   rC   rA   r   s    r   rB   z0TestRolling.test_rolling_apply.<locals>.<lambda>   s(    QYYq\\%7%78I8Is%7%S%S r   r   rd   r&   )
r5   r>   rC   rg   r   rh   ri   rj   rD   rk   )r6   r   r+   rF   rP   rI   rH   rm   s    `      r   test_rolling_applyzTestRolling.test_rolling_apply   s    su55IIQI **4477SSSSTT==1=--#/C%))0LMM'
fh/////r   c                    t          dgdz  dgdz  z   dgdz  d          }|                    d          }t          j        g d          }dd g|_        t          t
          j        d	d	gd
z  dg|          }|                    d
                                          }t          j
        ||           |                                 |                    d
                                          }t          j
        ||           d S )Nr1   r   barr   r   r'   r   ))r   r   )r   r\   )r   r   )r1   r   )r1   r   )r1   r          @r   r   r   r]   )r   r5   r   r   r   r)   r   r>   rT   rD   rk   )r6   r   rF   mirH   rI   s         r   test_rolling_apply_mutabilityz)TestRolling.test_rolling_apply_mutability   s   eWq[E7Q;6aS1WEEFFJJsOO#TTT
 
 ;bfc3/!3cU"MMM!$$((**
fh/// 	
 !$$((**
fh/////r   zexpected_value,raw_valueT        Fc                 >   d }t          g dg dd          }|                    d          j                            d                              ||          }t          |gdz  t          j        d	dd g
          d          }t          j	        ||           d S )Nc                 P    t          t          | t          j                            S r   )int
isinstancer)   ndarrayr@   s    r   isnumpyarrayz6TestRolling.test_groupby_rolling.<locals>.isnumpyarray  s    z!RZ00111r   r   r   r   r   r   r   )idr   r   r   r   r   )r   r   r   r   r   r   r   r   rj   name)
r   r5   r   r>   rC   r   r   r   rD   rE   )r6   expected_value	raw_valuer   r   rI   rH   s          r   test_groupby_rollingz TestRolling.test_groupby_rolling  s    	2 	2 	2 iii)))<<==D!!'//228898UUq ()A$PTVVV
 
 

 	vx00000r   c                    t          t          dd                    }|                    |                              dd                                          }t          t
          j        gdz  t          j        d                    }t          j
        ||           t          t          dd                    }|                    |                              dd                                          }t          t
          j        gd	z  t          j        d
                    }t          j
        ||           t          dgdz  dgdz  z   t          d          d          }|                    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g          }t          j        ||           t          dgdz  dgdz  z   t          d          d          }|                    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g          }t          j        ||           d S )Nr   r   Tr   )centerr^   r   )r   r   r   r   r   r\   r   )r   r\   r   r\   )r   r   r   r   r   r      r   r   r      r%   	   )r   r   r   r   r   r   r   r   r   r\   r   r   r   r   r   r   r   r%   r   r   )r   r   r   )rj   r   r   )
r   r   r   r   r   r   r   r   r   r   )r   ri   r5   r>   r?   r)   r   r   r   rD   rE   r   rk   )r6   seriesrI   rH   r   s        r   "test_groupby_rolling_center_centerz.TestRolling.test_groupby_rolling_center_center  s   a$$''//tA/FFKKMMVHqL()QRR
 
 
 	vx000a$$''//tA/FFKKMMVHqL()IJJ
 
 
 	vx000cUQY#2rCCDDC((Q(??DDFFVQ1bfbfaAq"&A( Dk    E%
 
 
( 	fh///cUQY#2rCCDDC((Q(??DDFFVQ1bfbfaArv>( Dk   E#
 
 
& 	fh/////r   c                    t          t          dd          dgdz  dgdz  z   t          d          d	          }|                    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                    }t          j        ||           d S )Nr   r   group_1r   group_2r\   r   )Dategbr   )datar   r   Tr   )onr   rM   )
r         ?r   g      @      @g      @      @      @r   r   r   r   r   r   z
2020-01-05z
2020-01-06z
2020-01-07z
2020-01-08z
2020-01-09r   r   rj   )r   r   ri   r5   r>   r   r?   r   r   r   r   rD   rE   r6   r   rI   rH   s       r   test_groupby_rolling_center_onz*TestRolling.test_groupby_rolling_center_on^  s   "<>> kAoa7r 
 
 
 JJtWQ6$AW>>4466 	
 >>>(	, 7 78	, 7 78	, 7 78	, 7 78	, 7 78	, 7 78	, 7 78	, 7 78	, 7 78	, 7 78 Vn  
 
 
& 	vx00000r   rM   )r   r\   r   c                 ,   t          dgdz  dgdz  z   t          d          d          }d}|                    d                              |d|	                                          }|                                dd
g         }g d}d |D             }t          d|dz
            }t          j        g|z  }|||d|z
           z   |z   }	|||d|z
           z   |z   }
t          dgdz  dgdz  z   |	|
z   d          }t          j
        ||           d S )Nr   r   r   r#   )groupr   r   r   T)r   rM   r   )
r   r   r   r   r         @g      @r   r          @c                     g | ]}|d z   S )g      $@r   ).0rA   s     r   
<listcomp>zGTestRolling.test_groupby_rolling_center_min_periods.<locals>.<listcomp>  s    3331a$h333r   r   r   )r   ri   r5   r>   r?   reset_indexrV   r)   r   rD   rk   )r6   rM   r   window_sizerI   
grp_A_mean
grp_B_meannum_nansnansgrp_A_expectedgrp_B_expectedrH   s               r   'test_groupby_rolling_center_min_periodsz3TestRolling.test_groupby_rolling_center_min_periods  sF    #sebj!8%))LLMMJJwW[;WGGTVV 	
 ##%%w&78GGG
33
333
q+/**x("
8b8m+C DDtK
8b8m+C DDtKebjC52:-~7VWW
 
 	fh/////r   c           	         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
                    }t          j	        ||           |                    d          d                             d                                          }t          t          j        t          j        dt          j        gt          j        d	dd g
          d          }t          j        ||           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   r5   r>   rV   r)   r   r   r   rD   rk   r   rE   r   s       r   test_groupby_subselect_rollingz*TestRolling.test_groupby_subselect_rolling  sR   ,,%9%9%9@P@P@PQQ
 
 C#'//226688VRVS"&)E(0d  
 
 
 	fh///C%--a004466VRVS"&)(0d   
 
 
 	vx00000r   c                     G d dt                     }t          dg ddz  idgdz  dgdz  z   d	gdz  z   
          }|                    |j                                       |d          d                                          }|                    |j                                      dd                                          }t          j        ||           d S )Nc                        e Zd Z	 	 	 	 	 ddZdS )FTestRolling.test_groupby_rolling_custom_indexer.<locals>.SimpleIndexerr   Nc                     || j         nd}t          j        |t          j                  dz   }|                                | j         z
  }|||dk     <   ||fS )Nr   dtyper   )r   r)   r*   int64copy)r6   
num_valuesrM   r   closedstependstarts           r   get_window_boundszXTestRolling.test_groupby_rolling_custom_indexer.<locals>.SimpleIndexer.get_window_bounds  s^     3>2Ed..1i
"(;;;a?

T%55#.eai cz!r   )r   NNNN)__name__
__module____qualname__r  r   r   r   SimpleIndexerr    s9          " " " " " "r   r  r   )r   r   r   r   r   r   r   r   r   r   r   )r   rL   r^   rM   )r
   r   r5   rj   r>   rT   rD   rk   )r6   r  r   rI   rH   s        r   #test_groupby_rolling_custom_indexerz/TestRolling.test_groupby_rolling_custom_indexer  s   	" 	" 	" 	" 	"K 	" 	" 	" +++a/0a1#'8IQCRSG8S
 
 
 JJrx  W]]q111qWAASUU 	
 ::bh''//qa/HHLLNN
fh/////r   c           
         t          t          d          t          d          dddgz  t          d          gdz  d          }|                    d                              dd	d
          d                                         }t          t          j        ddt          j        ddgt          j
        dt          d          fgdz  dt          d          fgdz  z   dd	g          d          }t          j        ||           d S )Nr   r   r   r   
2019-01-01column1column2r   dater   1Dr%  leftr   r  r#  r   r   r   r   r   r   r   ri   r   r5   r>   rT   r   r)   r   r   r   rD   rE   r   s       r   'test_groupby_rolling_subset_with_closedz3TestRolling.test_groupby_rolling_subset_with_closed  s#    88 88c3Z"<001A5	 
 
 JJw'''GG	RVVXX 	 VS#rvsC0(y../014<0012Q67'  
 
 
 
 	vx00000r   c           
      $   t          t          d          t          d          dddgz  t          d          gdz  d          }|                    d          dd	g                             d
d	d          d                                         }t          t          j        ddt          j        ddgt          j
        dt          d          fgdz  dt          d          fgdz  z   dd	g          d          }t          j        ||           d S )Nr   r   r   r   r!  r"  r   r#  r%  r&  r'  r(  r   r   r   r   r   r   r)  r   s       r   .test_groupby_subset_rolling_subset_with_closedz:TestRolling.test_groupby_subset_rolling_subset_with_closed  s+    88 88c3Z"<001A5	 
 
 JJwF 34WTfVW44Y@SUU 	
 VS#rvsC0(y../014<0012Q67'  
 
 
 
 	vx00000r   r   rV   rU   c                    t          g dt          j        g dddg          d          } t          |                    |                              d          |                      }t          t          j        t          j        d	gt          j        g d
g d          d          }t          j	        ||           d S )N)r   r   r   ))r   rA   )r   r   )r   z12r   r   r   r   r   ))r   r   rA   )r   r   r   )r   r   r.  )r   r/  r0  )
r   r   r   rb   r5   r>   r)   r   rD   rE   )r6   r   dsrI   rH   s        r   "test_groupby_rolling_index_changedz.TestRolling.test_groupby_rolling_index_changed  s     II(444S#J   
 
 
 :B//22D99;;VRVS!(===___   
 
 
 	vx00000r   c                     t          dg i          }|                    d                              d                                          }|                    d          }t          j        t          g d          t          g d          gdd g          |_        t          j
        ||           t          g g d	          }|                    dd
g                              d                                          }|                    dd
g          }t          j        t          g d          t          g d          t          g d          gg d          |_        t          j
        ||           d S )Ns1r   r]   r   float64r  r  r   )r4  s2r7  )r4  r7  N)r   r5   r>   rT   rg   r   from_productr   rj   rD   rk   )r6   rH   rI   s      r    test_groupby_rolling_empty_framez,TestRolling.test_groupby_rolling_empty_frame  s   dBZ((!!$''//q/99==??===.. $02Y'''r)A)A)AB4QU,
 
 
 	fh///Bb1122!!4,//77q7AAEEGG==$=66#0b	***b	***b(((
 %$$
 
 
 	fh/////r   c                    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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g          }t          j        ||           d S )Nr   r     r   r   r   r   Zr   r   Hr   Er#   )rj   r   	eventTimer5  rj   r   count_to_date10dr?  r   c                     | j         d         S )Nr   )shape)r   s    r   rB   z?TestRolling.test_groupby_rolling_string_index.<locals>.<lambda>D  s    ! r   r   r   r   )rj   r   r?  r@  )	r   r   r   r5   cumcountr>   rC   rD   rk   )r6   r   groupsrolling_groupsrI   rH   s         r   !test_groupby_rolling_string_indexz-TestRolling.test_groupby_rolling_string_index4  s   i4Aq!9!9:i4Aq!9!9:i4Aq!9!9:i4Aq!9!9:i4B!:!:; 433	
 	
 	
 )G

 	 G$$$oo//?+>>%%&<&<==i4Aq!9!93?i4Aq!9!93?i4Aq!9!93?i4Aq!9!93?i4B!:!:C@ EDD	
 	
 	
 )Wg&
'
' 	 	fh/////r   c           	         t          ddgddgd                              dd                              d                                          }t          t	          j        ddgddgg          dd	gt          j        d
dgdd g                    }|                    d          }t          j
        ||           d S )Nr   r   )r1   r   r1   F)sortr   r   r   )r   r   r   r   r   r5  )r   r5   r>   rU   r)   arrayr   r   rg   rD   rk   )r6   rI   rH   s      r   test_groupby_rolling_no_sortz(TestRolling.test_groupby_rolling_no_sortQ  s     q!faV4455WUW''WQZZSUU	 	 HsCj3*-..EN(&&)9%OOO
 
 
 ===//
fh/////r   c                 ~   t          t          d          t          d          dddgz  t          dd          d          }|                    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                    }t          j        ||           d S )Nr   r   r   r   20190101)r  periodsr"  r   3dr%  r'  r(  r#  r   z
2018-12-27z
2018-12-29z
2018-12-31z
2018-12-28z
2018-12-30r!  r   r   )r   ri   r   r5   r>   rO   r   r)   r   r   r   r   rD   rE   r   s       r   $test_groupby_rolling_count_closed_onz0TestRolling.test_groupby_rolling_count_closed_onb  sN    88 88c3Z"z1===	 
 
 JJwWTfVW44Y@UWW 	
 VS#rvsC0()L112)L112)L112)L112)L112)L112 '
 
 

 
 
 	vx00000r   )r   kwargsr>   r   r  	expandingc                    t          ddgddgddgddgddggddg          } t          |                    d          |          di |                                }t          t          j        gdz  t          j        dt          j        ddgd	t          j        g d
dd g                    }|                    d          }t          j
        ||           d S )Nr   r   r   r   r   r5  r   g&?r   )r   r   )r   r   )r   r   r   r\   r   r   r   )r   rb   r5   semr)   r   r   r   rg   rD   rk   )r6   r   rR  r   rI   rH   s         r   test_groupby_rolling_semz$TestRolling.test_groupby_rolling_sem  s     1XQx#qC8c1X>c

 
 
 0C$//99&99==??6(Q,bfgrvw%PQQ(BBB3PT+  
 
 
 ===--
fh/////r   )rollingskeyr   r   Nrj   c                 L   t          t          ddt          j        g          g dg dd          }|dk    r|                    d          }t          j        t          | d	          5   |                    d
          j	        di | d d d            d S # 1 swxY w Y   d S )Nz2020-06-01 12:00z2020-06-01 14:00r   r   r   rj   r   z values must not have NaTr/   r   60min)r[  )
r   r	   r)   r   r   r2   r3   
ValueErrorr5   r>   )r6   rX  rY  r   s       r   "test_groupby_rolling_nans_in_indexz.TestRolling.test_groupby_rolling_nans_in_index  s   
  "46H"&!QRRYYYY 
 
 '>>c""B]:-N-N-NOOO 	9 	9#BJJsOO#88x888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s   +!BB Br[   c                 d   g dg dg}t          j        |d          }t          g d|          }|                    ddg|                              d	                                          }t          g d
t          j        g dg d                    }t          j        ||           d S )Nval1r`  val2r   r   r   r   r   r   r   rZ   r   )r   r   r   )r`  r`  r`  r`  rc  )ra  ra  ra  ra  )r   r   r   r   )	r   rh   r   r5   r>   r?   r   rD   rE   )r6   r[   arraysrj   srI   rH   s          r   test_groupby_rolling_group_keysz+TestRolling.test_groupby_rolling_group_keys  s    
 +**,D,D,DE&v5EFFF999E***FF+
CCKKANNSSUUOO(  
 766  

 

 

 	vx00000r   c                    g dg dg}t          j        |d          }t          g dt          d          d|          }|                    dd	g                              d
                                          }t          dg dit          j        g dg d                    }t          j	        ||           d S )Nr_  rb  r   )r   r   r   r   r'   r   r   r   r   r   )r   r   r   )r`  r   r`  r`  rh  )ra  r   ra  ra  )r   r   r   r   )
r   rh   r   ri   r5   r>   r?   r   rD   rk   r6   rd  rj   r   rI   rH   s         r   1test_groupby_rolling_index_level_and_column_labelz=TestRolling.test_groupby_rolling_index_level_and_column_label  s    ***,D,D,DE&v5EFFFYYYU1XX66eDDDVSM**22155::<<///"(  
 433  

 

 

 	fh/////r   c                 4   t          t          j        d          ddgdz  d          }|                    d                              d                                          }t          j        g ddd g	          }t          j	        |j
        |           d S )
Nr   r   r   r\   r   r   r   )r   r   )r   r\   )r   r   r   r
  )r   r   )r   r   r   )r   r)   r*   r5   r>   r?   r   r   rD   assert_index_equalrj   r6   r   rI   rm   s       r   )test_groupby_rolling_resulting_multiindexz5TestRolling.test_groupby_rolling_resulting_multiindex  s    
 RYs^^1a&1*==>>C((++0022#/LLL+
 
 
 	flN;;;;;r   c                 D   t          t          j        d          ddgdz  g ddz  d          }|                    dd	g                              d                                          }t          j        g d
g d          }t          j	        |j
        |           d S )Ng      (@r   r   r   r   r   r   r\   r   r   r   r   ))r   r   r   )r   r   r\   )r   r   r%   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r\   r   )r   r\   r   )r   r\   r   )r   r   Nr   )r   r)   r*   r5   r>   rT   r   r   rD   rl  rj   rm  s       r   *test_groupby_rolling_resulting_multiindex2z6TestRolling.test_groupby_rolling_resulting_multiindex2  s    RYt__Aq6A:LLLSTDTUUVVS#J''//226688#/   #""
 
 
" 	flN;;;;;r   c                 r   t          t          j        d          ddgdz  g ddz  d          }|                    dd	          }|                    d
                              d                                          }t          j        g dg d          }t          j
        |j        |d           d S )Nr   r   r   r\   rp  r   r   T)appendr   r   ))r   r   r   r   )r   r\   r   )r   r   r   )r   r   r   )r   r   r\   )r   r   r   )r   r   r\   )r   Nr   r   equiv)exact)r   r)   r*   r   r5   r>   r?   r   r   rD   rl  rj   rm  s       r   *test_groupby_rolling_resulting_multiindex3z6TestRolling.test_groupby_rolling_resulting_multiindex3  s    RYs^^1a&1*<<<RSCSTTUU\\#d\++C((++0022#/	 	 	 #""
 
 
 	flN'JJJJJJr   c                     |                     dd          }|                    d           j        }|                    d          }|                    d           j        }t	          j        ||           d S )Nr   FrZ   c                 P    |                      d                                          S r`   r>   rT   r@   s    r   rB   zUTestRolling.test_groupby_rolling_object_doesnt_affect_groupby_apply.<locals>.<lambda>  s    QYYq\\%5%5%7%7 r   r\   r]   c                 P    |                      d                                          S r`   ry  r@   s    r   rB   zUTestRolling.test_groupby_rolling_object_doesnt_affect_groupby_apply.<locals>.<lambda>  s    199Q<<#3#3#5#5 r   )r5   rC   rj   r>   rD   rl  )r6   r+   rF   rH   _rI   s         r   7test_groupby_rolling_object_doesnt_affect_groupby_applyzCTestRolling.test_groupby_rolling_object_doesnt_affect_groupby_apply
  sv    su55777788>IIQI5566<
fh/////r   )r^   rM   r  rH   r   r'  )Nr   r   r   Nr   r   r   )NNr   r   NNr   r   r\   )NNNNNNNNright)NNNr   NNNr   c           	      v   t          g d          }|                    g d                              |||                              d          }t          t	          j        |d          t          t	          j        ddg          g d	gg d
g dg                    }t          j        ||           d S )N)r   r   r   r\   r   r   r   r%   )r   r   r   r   r   r   r   r   )r^   rM   r  r   r6  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   )levelscodesr   )	r   r5   r>   rp   r)   rK  r   rD   rk   )r6   r^   rM   r  rH   r   rI   expected_results           r   test_groupby_rolling_varz$TestRolling.test_groupby_rolling_var  s     ///00JJ///00WFFWKKSVV 	
 $HXY///!Q((*B*B*BC///1I1I1IJ  
 
 
 	fo66666r   r   )r    )r   r   r   r   c                 T   t          ddggdz  ddggdz  z   ddggdz  z   |          }|                    d	          }|j                            d
          }|                    d          }|                                }d	|j        vsJ t          j        |j        |           d S )Nr   r   r#   r   r$   r   r%   r5  r   T)deepr\   )	r   r5   objr  r>   rT   r   rD   rk   )r6   r   r   rF   original_objrP   rI   s          r   test_by_column_not_in_valuesz(TestRolling.test_by_column_not_in_values+  s    
 Ax"}Ax"}4Ax!|CWUUUJJsOOuzztz,,IIaLL&.((((
ae\22222r   c                    g dg dg}t          j        |d          }t          dg di|          }|                    d	          d                             d
                                          }t          t          j        dt          j        dgt          j	        g dg d          d          }t          j        ||           d S )N)Falconr  Parrotr  )CaptiveWildr  r  )AnimalTyper   z	Max Speed)g     `x@g     u@g      >@g      4@r   r   r   r   g      @g      I@))r  r  r  )r  r  r  )r  r  r  )r  r  r  )r  r  r  r   )r   rh   r   r5   r>   rT   r   r)   r   r   rD   rE   ri  s         r   test_groupby_levelzTestRolling.test_groupby_level8  s     544222
 &v5GHHH%?%?%?@NNN!$$[199!<<@@BBVUBFD)(   322   
 
 
 	vx00000r   zby, expected_datar   num)      Y@     b@r        i@
2018-01-01
2018-01-02)r  r  r       @o@)r%  r  c                    g dg dg dg dg}t          |g d          t          d                   d<                       dg          fd|D             }                    |d	
                              dd                                          }dg di}|                    |           t          |j                  }t          j	        ||           d S )N)r   r  r  )r   r  r  )r   r  r  )r   r  r  )r   r%  r  r5  r%  c                 0    g | ]}t          |          S r   )rb   )r   attrr   s     r   r   z3TestRolling.test_as_index_false.<locals>.<listcomp>n  s#    222tT""222r   F)as_indexr   r   r  r   )r   r   r   r   r   )
r   r	   r   r5   r>   r?   updaterj   rD   rk   )r6   r;   r   r   gp_byrI   rH   r   s          @r   test_as_index_falsezTestRolling.test_as_index_falseP  s   * '&&&&&&&&&&&	
 t%:%:%:;;; F,,6
\\6(##2222r222JJuuJ--55QA5NNSSUU 	 .../&&&(
 
 
 	fh/////r   c                 |   t          j        |          j        }d}t          j         |d          |          }d|d<   d}t          j        ||          }t           j        |d<   d|d<   t          ||d                              d          }|                    d          d                             d	d
          	                                }t          |dt          j        t          dgdz  dgz   |d          t          dgdz  dgz   |d          g                    }	t          j        ||	           d S )N  r   r   g52DE)rj   adl2rj   r  r   r  i  )r  r   r   )r)   r  typerepeatr   r   r   r5   r>   r?   r   r   rh   r   rD   rE   )
r6   any_int_numpy_dtypetypsizeidxvalarrr   rI   rH   s
             r   test_nan_and_zero_endpointsz'TestRolling.test_nan_and_zero_endpoints{  sT   h*++0iA%%BiT""AB 
 

 )G

 	 G$$V,44BA4NNSSUU(1#)qc/7CCC1#)qc/7CCC 	
 	
 	
 	vx00000r   c                    g d}dt          fd|D                       }t          j        t          d          5  |                    d                              dd	           d d d            d S # 1 swxY w Y   d S )
N)r   r   r   r   r  c                 H    g | ]}t          d |z  z            |dz   ddS )r   r   *   )trA   r   r   )r   rA   secs     r   r   zBTestRolling.test_groupby_rolling_non_monotonic.<locals>.<listcomp>  s7    RRRA9QUS[))AB??RRRr   z.* must be monotonicr/   r   r  3s)r   r^   )r   r2   r3   r\  r5   r>   )r6   shuffledr   r  s      @r   "test_groupby_rolling_non_monotonicz.TestRolling.test_groupby_rolling_non_monotonic  s      <<RRRRRRR
 
 ]:-DEEE 	9 	9JJsOO##s4#888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s   +A66A:=A:c                    g dg dg dg dg dg dg dg dg d	g d
g
}t          |g d          }t          |d                   |d<   |                    d          }|                    d                              d                              d           }|                    d                              dd          d                                         }t          j	        ||           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%  r   c                 \    |                      d          d                                         S )N180Dr  ry  r@   s    r   rB   z4TestRolling.test_groupby_monotonic.<locals>.<lambda>  s#    QYYv..x8<<>> r   r  rB  r  )
r   r	   sort_valuesr   r5   rC   r>   rT   rD   rE   )r6   r   r   rH   rI   s        r   test_groupby_monotonicz"TestRolling.test_groupby_monotonic  s(    '&&&&&&&&&&&%%%&&&%%%$$$$$$%%%
 D*D*D*DEEE F,,6
^^F## LL  WV__U>>?? 	
 F##++Fv+>>xHLLNN
vx00000r   c                    t          ddd          }t          dgdz  dgdz  z   dgd	z  z   t          j        ||f          t          j        d
          d          }|                    d                              d                              d           }|                    d                              dd          j	        
                                }t          j        ||           d S )Nz2016-01-01 09:30:00r#   re  )r  rO  freqr   r   r$   r   r%   r&   r   r   r   c                 \    |                      d          d                                         S )N4sr   r=   r@   s    r   rB   zJTestRolling.test_datelike_on_monotonic_within_each_group.<locals>.<lambda>  s!    199T??3;O;T;T;V;V r   r  rB  )r   r   r)   concatenater*   r   r5   rC   r>   r   r?   rD   rE   )r6   datesr   rH   rI   s        r   ,test_datelike_on_monotonic_within_each_groupz8TestRolling.test_datelike_on_monotonic_within_each_group  s     !6MMMS2Xb(A372^UEN33Yr]] 
 
 LL%%c**001V1VWW 	 C((#(668==??
vx00000r   c                 2   t          dgdz  dgdz  z   d dD             dz  t          d          d          }t          j        t          d	          5  |                    d
                              dd           d d d            d S # 1 swxY w Y   d S )Nr   r   r   c                 0    g | ]}t          |d d           S )r   r  )r   years     r   r   zPTestRolling.test_datelike_on_not_monotonic_within_each_group.<locals>.<listcomp>  s$    KKKia++KKKr   )i  i  r;  r   r   z&Each group within B must be monotonic.r/   r   365Dr   rB  )r   ri   r2   r3   r\  r5   r>   )r6   r   s     r   0test_datelike_on_not_monotonic_within_each_groupz<TestRolling.test_datelike_on_not_monotonic_within_each_group  s    S1WsQw&KK8JKKKaO1XX 
 
 ]:-UVVV 	4 	4JJsOO##Fs#333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   +BBB)3r  r  r  r8   rJ   rQ   r2   markparametrizern   ru   r   r   r   r   r   r   r   r   r   r   r  r  r  r*  r,  r2  r9  rH  rL  rQ  rW  r]  rf  rj  rn  rq  rv  r|  r  r   r   r  r  r   r  r  r  r  r  r  r   r   r   r-   r-   0   s=       + + +
1 1 1$1 1 1 [	
 	
 	
 0 0 0 [S5%.110 0 210 [MMM 0 0 0 [.&!ucl0KLL0 0 ML00 [S65/220 0 320 [S65/22
1 
1 32
1 [
3*sCj)	*VsCj3*5M,NO 0 0	 0@0 0 00 0 0. [73+U|9TUU1 1 VU1?0 ?0 ?0B!1 !1 !1F []III660 0 76041 1 120 0 081 1 101 1 16 [VeU^441 1 541(0 0 060 0 0:0 0 0"1 1 1@ [
!44	5R7HI 0 0	 0  [c{C0D$<2IJ 9 9 9 [\D%=991 1 :91,0 0 0(< < << < <.K K K(0 0 0 [76EEEF6GGGH6KKKL7JJJK		
 7 7 7  [*J*Iz+BCCc3ZP 3 3 31 1 10 [Ve999:;w "	,//!	,//!	,//!	,//	 877 	
 $0 0% $021 1 1>	9 	9 	91 1 1@1 1 1*
4 
4 
4 
4 
4r   r-   c                   d   e Zd Zej        d             Zej                            dg d          d             Zej                            dddg          d             Z	ej                            dg d	          d
             Z
ej                            dddg          d             Zd ZdS )TestExpandingc                 n    t          dgdz  dgdz  z   dgdz  z   t          j        d          d          S r"   r(   )r6   s    r   framezTestExpanding.frame  s<    sRx1#(2aS1W<29R==QQRRRr   rR   rS   c                 v   |                     dd          }|                                } t          |                      }|                    fd          }|                    dd          }t          j        |d         t          d          g          }||_        t          j
        ||           d S )Nr   FrZ   c                 X     t          |                                                       S r   rb   rS  rc   s    r   rB   z.TestExpanding.test_expanding.<locals>.<lambda>  s"    %>WQ[[]]A%>%>%@%@ r   r   rd   r&   r5   rS  rb   rC   rg   r   rh   ri   rj   rD   rk   r6   rR   r  rF   rP   rI   rH   rm   s    `      r   test_expandingzTestExpanding.test_expanding  s     MM#%M00KKMMA77@@@@AA==1=--#/sU2YY0GHH'
fh/////r   ro   rp   c                 z   |                     dd          }|                                } t          |          d          }|                    fd          }|                    dd          }t          j        |d         t          d	          g          }||_        t          j
        ||           d S )
Nr   FrZ   r   rr   c                 \     t          |                                           d          S )Nr   rr   r  rc   s    r   rB   z3TestExpanding.test_expanding_ddof.<locals>.<lambda>  s'    %>WQ[[]]A%>%>A%F%F%F r   r   rd   r&   r  r  s    `      r   test_expanding_ddofz!TestExpanding.test_expanding_ddof  s    MM#%M00KKMMAA&&&77FFFFGG==1=--#/sU2YY0GHH'
fh/////r   rv   rw   c                 t   |                     dd          }|                                }|                    d          }|                    fd          }|                    dd          }t          j        |d         t          d	          g          }||_        t          j
        ||           d S )
Nr   FrZ   r~   r   c                 V    |                                                      d          S )Nr~   r   )rS  r   r   s    r   rB   z7TestExpanding.test_expanding_quantile.<locals>.<lambda>  s"    akkmm,,S,NN r   r   rd   r&   )r5   rS  r   rC   rg   r   rh   ri   rj   rD   rk   )r6   rv   r  rF   rP   rI   rH   rm   s    `      r   test_expanding_quantilez%TestExpanding.test_expanding_quantile
  s     MM#%M00KKMMC}==77NNNN
 
 ==1=--#/sU2YY0GHH'
fh/////r   r   r   c                 J                        d          }|                                } t          |                    }fd}|                    |          }t	          t          dd                    t	          t          dd                    z   }t          j        |j        |df<   t          j        |d<   t          j
        ||            t          |j                  d	          }fd
}	|                    |	          }t          j        ||           d S )Nr   c                 Z     t          |                                                     S r   r  )rA   rR   r  s    r   func_0z5TestExpanding.test_expanding_corr_cov.<locals>.func_0#  s%    ,71;;==!,,U333r   r#   =   H   q   r   Tr   c                 f     t          | j                                                  d          S )NTr   )rb   r   rS  rc   s    r   func_1z5TestExpanding.test_expanding_corr_cov.<locals>.func_12  s*    .713==??A..====r   )r5   rS  rb   rC   r   ri   r)   r   ilocrD   rk   r   rE   )
r6   rR   r  rF   rP   rI   r  rH   null_idxr  s
    ``       r   test_expanding_corr_covz%TestExpanding.test_expanding_corr_cov  s%   MM#KKMMAu%%	4 	4 	4 	4 	4 	4 776?? b"&&eBnn)=)==%'Vhk" 
fh/// a$///	> 	> 	> 	> 	> 776??
vx00000r   c                 v   |                     dd          }|                                }|                    d           }|                    fd          }|                    dd          }t	          j        |d         t          d	          g          }||_        t          j	        ||           d S )
Nr   FrZ   c                 *    |                                  S r   r   r@   s    r   rB   z4TestExpanding.test_expanding_apply.<locals>.<lambda>=  r   r   r   c                 X    |                                                      d           S )Nc                 *    |                                  S r   r   r   s    r   rB   zFTestExpanding.test_expanding_apply.<locals>.<lambda>.<locals>.<lambda>>  s    15577 r   r   )rS  rC   r   s    r   rB   z4TestExpanding.test_expanding_apply.<locals>.<lambda>>  s'    Q[[]]%8%89J9JPS%8%T%T r   r   rd   r&   )
r5   rS  rC   rg   r   rh   ri   rj   rD   rk   )r6   r   r  rF   rP   rI   rH   rm   s    `      r   test_expanding_applyz"TestExpanding.test_expanding_apply8  s    MM#%M00KKMM **4477TTTTUU==1=--#/sU2YY0GHH'
fh/////r   N)r  r  r  r2   fixturer  r  r  r  r  r  r  r  r   r   r   r  r    s       ^S S ^S [CCC 0 0 0 [S5%.110 0 210 [MMM 0 0 0 [S65/221 1 32160 0 0 0 0r   r  c            
          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             Zej                            ddej        dddggdej        d	ddggg          d             Z	d Z
d Zd ZdS )TestEWMzmethod, expected_datar?   )r   gUUUUUU?gm۶m?g""""""@ro   g۞?g?gt ?rp   r   gn۶m۶?g++?c                 J   t          dgdz  t          d          d          } t          |                    d                              d          |                      }t          d|it          j        g ddd g	          
          }t          j        ||           d S )Nr   r\   r'   r   r   comr   )r   r   r   r   r   r   )	r   ri   rb   r5   ewmr   r   rD   rk   r6   methodr   r   rI   rH   s         r   test_methodszTestEWM.test_methodsH  s     cUQYU1XX6677>C,,,55v>>@@- (   Dk  
 
 
 	fh/////r   r   r   r   r   grڶ?g߿yq+?c                    t          dgdz  t          d          d          } t          |                    d                              d                                }t          d|it          j        g dg d	
                    }t          j        ||           |                    d          	                    fd          }t          j        ||           d S )Nr   r\   r'   r   r   r  r   ))r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   NNr   r   c                 \     t          |                     d                                S )Nr   r  )rb   r  )rA   r  s    r   rB   z/TestEWM.test_pairwise_methods.<locals>.<lambda>x  s&    3R7155S5>>63R3R3T3T r   )
r   ri   rb   r5   r  r   r   rD   rk   rC   r  s    `    r   test_pairwise_methodszTestEWM.test_pairwise_methodsb  s     cUQYU1XX6677>C,,,55v>>@@- (   (''  
 
 
 	fh///::c??(()T)T)T)TUU
fh/////r   c                 0   d}|                     d          }|                    d                              ||                                          }t	          dg dit          j        g ddd g          	          }t          j        ||           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   rU  r   )r   r   )r   r   )r   r%   r   r   )	popr5   r  r?   r   r   r   rD   rk   )r6   r    r  r   rI   rH   s         r   
test_timeszTestEWM.test_times{  s    $$$$S))--xu-MMRRTT    (   Dk  
 
 
> 	fh/////r   c                 6   d}|                     d          }|                    d          }|                    ||                                          }|                    ||j                                                  }t          j        ||           d S )Nr  r   r   r  )r  r5   r  r?   valuesrD   rk   )r6   r    r  r   r   rI   rH   s          r   test_times_arrayzTestEWM.test_times_array  s    $$  %%77<<>>6685<6@@EEGG
fh/////r   c                    t          g dt          ddd          t          d          d          }|                    d                              dd	
          }|                                }t          t          ddd          dgdz  dt          j        g dt          t          d                    gdd g                    }t          j
        ||           |d                                         }t          dgdz  t          j        g dt          ddd          gdd	g          d          }t          j        ||           |                                }t          j
        ||           d S )N)r   r   r   r   r   z2021-9-1r   r=  )rO  r  )r   	timestampr   r   1Hr  rB  r   )r  r   r   r   r   r   )r   r   ri   r5   r>   rO   r   rh   r   rD   rk   r   rE   )r6   r   grprI   expected_dfexpected_seriess         r   "test_dont_mutate_obj_after_slicingz*TestEWM.test_dont_mutate_obj_after_slicing  s   ///'
ACHHH1XX 
 
 jj&&t&<<'
ACHHHUQY  (***DqNN;D$<  
 
 
 	fk222S!! EAI(---z13??? [)   

 

 

 	v777
fk22222r   N)r  r  r  r2   r  r  r)   r   r  r  r  r  r  r   r   r   r  r  G  s
       [VVVWRVXx:;RVS"46HIJ	
 0 0 0$ [
263Q'	(5263(2S*TU 0 0	 0*%0 %0 %0N0 0 0%3 %3 %3 %3 %3r   r  )numpyr)   r2   pandasr   r   r   r   r   r   r	   pandas._testing_testingrD   pandas.api.indexersr
   pandas.core.groupby.groupbyr   r  r    r+   r-   r  r  r   r   r   <module>r     s                               + + + + + + 3 3 3 3 3 3   0 O O Ot4 t4 t4 t4 t4 t4 t4 t4n]0 ]0 ]0 ]0 ]0 ]0 ]0 ]0@I3 I3 I3 I3 I3 I3 I3 I3 I3 I3r   