U
    f/e!                     @   s   d dl Zd dlZd dlmZmZmZmZmZm	Z	m
Z
 d dlmZ d dlmZ d dlmZ G dd dZG dd dZG d	d
 d
ZdS )    N)	DataFrameIndex
MultiIndexSeries	Timestamp
date_rangeto_datetime)BaseIndexer)get_groupbyc                   @   s|  e Zd Zdd Zdd Zdd Zdd Zej	d	d
dddej
dejddddgdd Zej	d	ddgdd Zej	ddddddgdd  Zej	d	d!d"gd#d$ Zd%d& Zd'd( Zej	d)d*d+gd,d-ggd.d/ Zd0d1 Zd2d3 Zej	d4d5d6d7gd8d9 Zd:d; Zd<d= Zd>d? Zd@dA Zej	dBddgdCdD ZdEdF ZdGdH ZdIdJ ZdKdL Zej	dMdNdOdPdQfdRi fgdSdT Zej	dUdVdWidWfdVdXidYfgdZd[ Z ej	d\d+d-gd]d^ Z!d_d` Z"dadb Z#dcdd Z$ej	dee%&dfdggdhdiggdjdk Z'dldm Z(ej	dndogdpdqdrdrdsgigdodYge)dte)due)dte)dugdqdsdrdvgdwggdxdy Z*dXS )zTestRollingc                 C   s4   t dgd dgd  dgd  tdd| _d S 	N                  (   ABr   nparangeframeself r   D/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/window/test_groupby.pysetup_method   s    zTestRolling.setup_methodc              	   C   sb   d}t jt|d | jjddd W 5 Q R X | jd}|jrDtt| jddd}|js^td S )Nz4groupby\(\) got an unexpected keyword argument 'foo'matchr   r   )fooTbymutated)pytestraises	TypeErrorr   groupbyr%   AssertionErrorr
   )r   msggr   r   r   test_mutated   s    
zTestRolling.test_mutatedc                 C   s   | j d}t| j ddd}|jdd }|d j}t|| |dj }t|| |jd }t|| | j j| j j	d }t|| d S )Nr   Tr#   c                 S   s   |  d S )Nr   )rollingmeanxr   r   r   <lambda>%       z*TestRolling.test_getitem.<locals>.<lambda>r   )
r   r)   r
   r   applyr.   r/   tmassert_series_equalr   )r   r,   	g_mutatedexpectedresultr   r   r   test_getitem!   s    zTestRolling.test_getitemc                 C   sj   | j d}|jddd}t| j ddd}|jdd }|j }t|| |j }t|| d S )	Nr   r   r   min_periodsTr#   c                 S   s   | j ddd S )Nr   r   r;   )r.   countr0   r   r   r   r2   9   r3   z3TestRolling.test_getitem_multiple.<locals>.<lambda>)	r   r)   r.   r
   r   r4   r=   r5   r6   )r   r,   rr7   r8   r9   r   r   r   test_getitem_multiple3   s    

z!TestRolling.test_getitem_multiplefsumr/   minmaxr=   z ignore:min_periods:FutureWarning)Zmarkskurtskewc                    sr   | j d}|jdd}t|  }| fdd}|jddd}t| j d tdg}||_	t
|| d S )	Nr      windowc                    s   t | d  S NrF   getattrr.   r0   r@   r   r   r2   U   r3   z*TestRolling.test_rolling.<locals>.<lambda>r   Zaxisr   r   r)   r.   rK   r4   dropr   from_arraysrangeindexr5   assert_frame_equalr   r@   r,   r>   r9   r8   expected_indexr   rL   r   test_rollingA   s    zTestRolling.test_rollingstdvarc                    sv   | j d}|jdd}t| dd}| fdd}|jddd}t| j d td	g}||_	t
|| d S )
Nr   rF   rG   r   Zddofc                    s   t | d ddS )NrF   r   rY   rJ   r0   rL   r   r   r2   c   r3   z/TestRolling.test_rolling_ddof.<locals>.<lambda>rM   r   rN   rT   r   rL   r   test_rolling_ddof]   s    zTestRolling.test_rolling_ddofinterpolationlinearlowerhighermidpointnearestc                    st   | j d}|jdd}|jd d}| fdd}|jddd	}t| j d td
g}||_	t
|| d S )Nr   rF   rG   皙?r[   c                    s   |  djd dS )NrF   ra   rb   )r.   quantiler0   rb   r   r   r2   t   r3   z3TestRolling.test_rolling_quantile.<locals>.<lambda>r   rM   r   )r   r)   r.   rc   r4   rO   r   rP   rQ   rR   r5   rS   r   r[   r,   r>   r9   r8   rU   r   rb   r   test_rolling_quantilek   s    
z!TestRolling.test_rolling_quantilecorrcovc                    s   j d}|jdd}t| j } fdd}||}tj|d< t|| t|j	 dd} fdd}||}t
|| d S )	Nr   rF   rG   c                    s   t | d jS rI   )rK   r.   r   r0   r@   r   r   r   func   s    z/TestRolling.test_rolling_corr_cov.<locals>.funcTZpairwisec                    s   t | jd ddS )NrF   Trj   )rK   r   r.   r0   rL   r   r   ri      s    )r   r)   r.   rK   r4   r   nanr5   rS   r   r6   )r   r@   r,   r>   r9   ri   r8   r   rh   r   test_rolling_corr_cov}   s    


z!TestRolling.test_rolling_corr_covc                    sx   | j d}|jdd}|jdd  d}| fdd}|jddd	}t| j d td
g}||_t	
|| d S )Nr   rF   rG   c                 S   s   |   S NrA   r0   r   r   r   r2      r3   z0TestRolling.test_rolling_apply.<locals>.<lambda>rawc                    s   |  djdd  dS )NrF   c                 S   s   |   S rm   rn   yr   r   r   r2      r3   zBTestRolling.test_rolling_apply.<locals>.<lambda>.<locals>.<lambda>ro   )r.   r4   r0   ro   r   r   r2      r3   r   rM   r   )r   r)   r.   r4   rO   r   rP   rQ   rR   r5   rS   r   rp   r,   r>   r9   r8   rU   r   ro   r   test_rolling_apply   s    zTestRolling.test_rolling_applyc                 C   s   t dgd dgd  dgd d}|d}tdd	d
dddg}dd g|_t tjddgd dg|d}|jdd }t	
|| |  |jdd }t	
|| d S )Nr"   r   barr      r   r   )ru   r   )ru   rF   )ru      )r"   r   )r"   r   )r"   r          @r   r   columnsrR   rG   )r   r)   r   from_tuplesnamesr   rk   r.   rA   r5   rS   )r   dfr,   mir8   r9   r   r   r   test_rolling_apply_mutability   s    $

z)TestRolling.test_rolling_apply_mutabilityzexpected_value,raw_value      ?T        Fc                 C   sp   dd }t dddgdddgd}|djdj||d}t|gd tjd	dd gd
dd}t	|| d S )Nc                 S   s   t t| tjS rm   )int
isinstancer   Zndarrayr0   r   r   r   r"      s    z-TestRolling.test_groupby_rolling.<locals>.foor   r   r   )idvaluer   ro   )r   r   r   r   r   r   r|   r   rR   name)
r   r)   r   r.   r4   r   r   r{   r5   r6   )r   Zexpected_valueZ	raw_valuer"   r}   r9   r8   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   rv   Tr   )centerrH   rw   )r   r   r   r   r   rF   r   )rw   rF   rR   rF   )r   r   r   r   ab   r   r   r      r   	   )r   r   r   r   r   r   r   r   r   rF   r   rw   r   rv   r   r   r   r   r   r   )r   
   r   )rR   rz   r   )
r   r   r   r   r   r   r   r   r   r   )r   rQ   r)   r.   r/   r   rk   r   r{   r5   r6   r   rS   )r   Zseriesr9   r8   r}   r   r   r   "test_groupby_rolling_center_center   sH    

" "z.TestRolling.test_groupby_rolling_center_centerc                 C   s   t tdddgd dgd  tddd	}|d
jdddddj }tddddddddddg
dtj	dt
dfdt
dfdt
dfdt
dfdt
dfdt
dfdt
dfdt
dfdt
dfdt
dff
d
dgd d!}t|| d S )"Nz
2020-01-01z
2020-01-10group_1rv   group_2rF   r   )Dategbr   )datar   r   Tr   )onr   r<   r         ?rx   g      @      @g      @      @      @r   z
2020-01-02z
2020-01-03z
2020-01-04z
2020-01-05z
2020-01-06z
2020-01-07z
2020-01-08z
2020-01-09r   r   rR   )r   r   rQ   r)   r.   r   r/   r   r   r{   r   r5   r6   r   r}   r9   r8   r   r   r   test_groupby_rolling_center_on  s@    
   










z*TestRolling.test_groupby_rolling_center_onr<   rw   rF   r   c              
   C   s   t dgd dgd  tdd}d}|dj|d|d	 }| dd
g }ddddddddddg
}dd |D }td|d }tjg| }|||d|   | }	|||d|   | }
t dgd dgd  |	|
 d}t	
|| d S )Nr   r   r   r   )groupr   rw   r   T)r   r<   r   r   r   rx   r         @      @g      @r   r          @c                 S   s   g | ]}|d  qS )g      $@r   ).0r1   r   r   r   
<listcomp><  s     zGTestRolling.test_groupby_rolling_center_min_periods.<locals>.<listcomp>r   r   )r   rQ   r)   r.   r/   reset_indexrC   r   rk   r5   rS   )r   r<   r}   window_sizer9   Z
grp_A_meanZ
grp_B_meanZnum_nansZnansZgrp_A_expectedZgrp_B_expectedr8   r   r   r   'test_groupby_rolling_center_min_periods.  s&    "
  z3TestRolling.test_groupby_rolling_center_min_periodsc                 C   s   t ddddgddddgdd	d
d	gd}|ddg d }t tjtjdtjgdgtjddd gdd}t	|| |dd d }t
tjtjdtjgtjddd gddd}t|| d S )Nr   r   r   r   rx   r   r   r   r      r   r   cr   r   )r   r   r   r   r   r   ry   r   )r   r)   r.   rC   r   rk   r   r{   r5   rS   r   r6   r   r   r   r   test_groupby_subselect_rollingI  s.    "  z*TestRolling.test_groupby_subselect_rollingc                 C   s   G dd dt }tddddddgd	 id
gd dgd  dgd  d}||jj|d	ddd }||jjd	dd }t|| d S )Nc                   @   s   e Zd ZdddZdS )zFTestRolling.test_groupby_rolling_custom_indexer.<locals>.SimpleIndexerr   Nc                 S   sH   |d kr| j nd}tj|tjdd }| | j  }|||dk < ||fS )Nr   Zdtyper   )r   r   r   int64copy)r   Z
num_valuesr<   r   closedendstartr   r   r   get_window_boundse  s
    zXTestRolling.test_groupby_rolling_custom_indexer.<locals>.SimpleIndexer.get_window_bounds)r   NNN)__name__
__module____qualname__r   r   r   r   r   SimpleIndexerd  s
          r   r   r   rx   r   r   r   r   r   rw   r   r   r   )r   r;   rH   r<   )r	   r   r)   rR   r.   rA   r5   rS   )r   r   r}   r9   r8   r   r   r   #test_groupby_rolling_custom_indexerb  s    
  z/TestRolling.test_groupby_rolling_custom_indexerc                 C   s   t tdtddddg tdgd d}|djdd	d
dd  }ttjddtjddgt	j
dtdfgd dtdfgd  dd	gddd}t|| d S )Nrv   r   r   r   
2019-01-01column1Zcolumn2r   dater   1Dr   leftr   r   r   r   rx   r   r   r   r   r   rQ   r   r)   r.   rA   r   r   rk   r   r{   r5   r6   r   r   r   r   'test_groupby_rolling_subset_with_closedy  s(    
		z3TestRolling.test_groupby_rolling_subset_with_closedc                 C   s   t tdtddddg tdgd d}|ddd	g jd
d	ddd  }ttjddtjddgt	j
dtdfgd dtdfgd  dd	gddd}t|| d S )Nrv   r   r   r   r   r   r   r   r   r   r   r   r   rx   r   r   r   r   r   r   r   r   r   .test_groupby_subset_rolling_subset_with_closed  s4    

  	z:TestRolling.test_groupby_subset_rolling_subset_with_closedri   c                 C   s~   t dddgtjdddgddgdd	d
}t||d| }t tjtjdgtjdddgd	ddgdd	d
}t	|| d S )Nr   r   )r   r1   )r   rr   )r   z12r   r   r   rx   )r   r   r1   )r   r   rr   )r   r   r   )
r   r   r{   rK   r)   r.   r   rk   r5   r6   )r   ri   Zdsr9   r8   r   r   r   "test_groupby_rolling_index_changed  s$      z.TestRolling.test_groupby_rolling_index_changedc                 C   s   t dg i}|djdd }|jdd}tjtg ddtg ddgdd gd|_t	
|| t g g d	}|dd
gjdd }|jdd
gd}tjtg ddtg ddtg ddgdd
d gd|_t	
|| d S )Ns1r   rG   rz   Zfloat64r   r   r   )r   s2r   )r   r)   r.   rA   rO   r   Zfrom_productr   rR   r5   rS   )r   r8   r9   r   r   r    test_groupby_rolling_empty_frame  s&     


z,TestRolling.test_groupby_rolling_empty_framec                 C   s6  t ddtddddgddtddddgdd	tddd
dgddtddddgdd	tddddggdddgdd}|d}| |d< |jddd}|dd }t ddtdddddgddtdddddgddtdddddgdd	tddd
ddgdd	tdddddggddddgdddg}t|| d S )Nr   r   i  r   r   r   r   Zr   r   Hrv   Er   rR   r   Z	eventTimer   Zcount_to_dateZ10d)r   c                 S   s
   | j d S )Nr   )shaper}   r   r   r   r2     r3   z?TestRolling.test_groupby_rolling_string_index.<locals>.<lambda>r   rx   r   )	r   r   	set_indexr)   Zcumcountr.   r4   r5   rS   )r   r}   groupsZrolling_groupsr9   r8   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"   ru   r"   F)sortrx   r   ru   )r   r   r   r   ry   r   )r   r)   r.   rB   r   arrayr   r{   rO   r5   rS   )r   r9   r8   r   r   r   test_groupby_rolling_no_sort  s     z(TestRolling.test_groupby_rolling_no_sortc                 C   s   t tdtddddg tdddd}|djd	d
ddd  }ttjddtjddgdt	j
dtdfdtdfdtdfdtdfdtdfdtdfgdd
gdd}t|| d S )Nrv   r   r   r   Z20190101)r   Zperiodsr   r   Z3dr   r   r   r   r   z
2018-12-27z
2018-12-29z
2018-12-31z
2018-12-28z
2018-12-30r   r   r   )r   rQ   r   r)   r.   r=   r   r   rk   r   r{   r   r5   r6   r   r   r   r   $test_groupby_rolling_count_closed_on
  s<    

	
  





z0TestRolling.test_groupby_rolling_count_closed_on)ri   kwargsr.   r   r   r   	expandingc                 C   s   t ddgddgddgddgddggddgd}t|d|f | }t tjgd tjdtjddgd	tjd
ddddgdd gdd}|jdd}t	
|| d S )Nr   r   r   r   r   r   rw   g&?r   r   r   )r   r   )r   r   r   rF   r   r   )r   rK   r)   Zsemr   rk   r   r{   rO   r5   rS   )r   ri   r   r}   r9   r8   r   r   r   test_groupby_rolling_sem*  s       z$TestRolling.test_groupby_rolling_sem)rollingskeyr   r   NrR   c              	   C   sp   t tddtjgdddgdddgd}|dkr:|d}tjt| d	d
 |dj	d| W 5 Q R X d S )Nz2020-06-01 12:00z2020-06-01 14:00r   r   r   r   rR   r   z must be monotonicr    r   60min)r   )
r   r   r   rk   r   r&   r'   
ValueErrorr)   r.   )r   r   r   r}   r   r   r   "test_groupby_rolling_nans_in_index>  s    
z.TestRolling.test_groupby_rolling_nans_in_index
group_keysc                 C   s   dddgdddgg}t j|dd}tdddg|d}|jd	d
g|dd }tdddgt jdddgd	d
d	d
gdd}t|| d S )Nval1val2idx1idx2r   r   r   r   r   r   r   )r   r   rx   r   )r   r   r   r   )r   r   r   r   )	r   rP   r   r)   r.   r/   r{   r5   r6   )r   r   arraysrR   sr9   r8   r   r   r   test_groupby_rolling_group_keysO  s    
z+TestRolling.test_groupby_rolling_group_keysc                 C   s   dddgdddgg}t j|dd}tdddgtdd|d	}|d
dgd }tddddgit jdddgd
dd
dgdd	}t	|| d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   rx   )r   r   r   r   )r   r   r   r   r   )
r   rP   r   rQ   r)   r.   r/   r{   r5   rS   r   r   rR   r}   r9   r8   r   r   r   1test_groupby_rolling_index_level_and_column_labelf  s    
z=TestRolling.test_groupby_rolling_index_level_and_column_labelc                 C   s^  t tdddgd d}|dd }tjdd	d
dddddgdd gd}t	|j
| t tdddgd ddddgd d}|ddgd }tjdddddddddddd gddd gd}t	|j
| t tdddgd ddddgd d}|jdd!d"}|dd }tjd#d$d%d&d'd(d)d*gdd dgd}t	|j
| d S )+Nr   r   r   rF   r   r   r   r   r   )r   rF   )r   rv   r   r   )r   rw   )r   r   r   g      (@rv   r   r   )r   r   r   )r   r   rF   )r   r   r   )r   r   r   )r   r   rv   )r   r   r   )r   r   r   )r   r   rw   )r   r   r   )r   rF   r   )r   rF   r   )r   rF   r   T)append)r   r   r   )r   r   r   )r   rF   r   )r   rv   r   )r   r   r   )r   r   rF   )r   rw   r   )r   r   rF   )r   r   r   r)   r.   r/   r   r{   r5   assert_index_equalrR   rA   r   )r   r}   r9   rU   r   r   r   )test_groupby_rolling_resulting_multiindexz  sT    **
z5TestRolling.test_groupby_rolling_resulting_multiindexc                 C   s^   | j d}|dd j}|jdd}|dd j}t|| |jrNt|j	jrZtd S )Nr   c                 S   s   |  d S rI   r.   rA   r0   r   r   r   r2     r3   zUTestRolling.test_groupby_rolling_object_doesnt_affect_groupby_apply.<locals>.<lambda>rF   rG   c                 S   s   |  d S rI   r  r0   r   r   r   r2     r3   )
r   r)   r4   rR   r.   r5   r   r%   r*   Zgrouper)r   r,   r8   _r9   r   r   r   7test_groupby_rolling_object_doesnt_affect_groupby_apply  s    
zCTestRolling.test_groupby_rolling_object_doesnt_affect_groupby_applyrz   )r    )r   Cr   r   c                 C   s|   t ddggd ddggd  ddggd  |d}|d	}|jjd
d}|d}| }d	|jksjtt	|j| d S )Nr   r   r   r   r   r   r   r   r   T)deeprF   )
r   r)   objr   r.   rA   rz   r*   r5   rS   )r   rz   r}   r,   Zoriginal_objr>   r9   r   r   r   test_by_column_not_in_values  s    2

z(TestRolling.test_by_column_not_in_valuesc                 C   s   ddddgddddgg}t j|dd}tddd	d
dgi|d}|jddd d }ttjdtjdgt j	ddddgdddgddd}t
|| d S )NFalconParrotCaptiveWild)AnimalTyper   z	Max Speedg     `x@g     u@g      >@g      4@r   r   )levelr   g      @g      I@)r	  r	  r  )r	  r	  r  )r
  r
  r  )r
  r
  r  r  r  r   )r   rP   r   r)   r.   rA   r   r   rk   r{   r5   r6   r   r   r   r   test_groupby_level  s&    

	zTestRolling.test_groupby_levelzby, expected_datar   num      Y@     b@      i@
2018-01-01
2018-01-02     @o@)r   r  c                    s   dddgdddgdddgdddgg}t |d	d
dgd t d
  d
<  d
g  fdd|D } j|ddjddd }d	ddddgi}|| t | jd}t	|| d S )Nr   r  r  r  r  r   r  r  r   r   r  r   c                    s   g | ]}t  |qS r   )rK   )r   attrr   r   r   r     s     z3TestRolling.test_as_index_false.<locals>.<listcomp>F)Zas_indexr   r   r   r   )
r   r   r   r)   r.   r/   updaterR   r5   rS   )r   r$   expected_datar   Zgp_byr9   r8   r   r   r   test_as_index_false  s$    
zTestRolling.test_as_index_false)+r   r   r   r   r-   r:   r?   r&   markparametrizeparamfilterwarningsrV   rZ   re   rl   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   r      s   


 


A#

 
 

6
 


r   c                
   @   s   e Zd Zdd Zejddddddd	d
gdd Zejdddgdd Zejddddddgdd Z	ejdddgdd Z
dd ZdS ) TestExpandingc                 C   s4   t dgd dgd  dgd  tdd| _d S r   r   r   r   r   r   r     s    zTestExpanding.setup_methodr@   rA   r/   rB   rC   r=   rD   rE   c                    sn   | j d}| }t|  }| fdd}|jddd}t| j d tdg}||_	t
|| d S )Nr   c                    s   t |    S rm   rK   r   r0   rL   r   r   r2     r3   z.TestExpanding.test_expanding.<locals>.<lambda>r   rM   r   r   r)   r   rK   r4   rO   r   rP   rQ   rR   r5   rS   rT   r   rL   r   test_expanding  s    zTestExpanding.test_expandingrW   rX   c                    sr   | j d}| }t| dd}| fdd}|jddd}t| j d tdg}||_	t
|| d S )	Nr   r   rY   c                    s   t |   ddS )Nr   rY   r!  r0   rL   r   r   r2   %  r3   z3TestExpanding.test_expanding_ddof.<locals>.<lambda>r   rM   r   r"  rT   r   rL   r   test_expanding_ddof  s    z!TestExpanding.test_expanding_ddofr[   r\   r]   r^   r_   r`   c                    sp   | j d}| }|jd d}| fdd}|jddd}t| j d tdg}||_	t
|| d S )	Nr   ra   rb   c                    s   |   jd dS )Nra   rb   )r   rc   r0   rb   r   r   r2   6  r3   z7TestExpanding.test_expanding_quantile.<locals>.<lambda>r   rM   r   )r   r)   r   rc   r4   rO   r   rP   rQ   rR   r5   rS   rd   r   rb   r   test_expanding_quantile-  s    
z%TestExpanding.test_expanding_quantilerf   rg   c                    s   j d}| }t| j } fdd}||}ttddttdd }tj|j	|df< tj|d< t
|| t|j d	d
} fdd}||}t
|| d S )Nr   c                    s   t |   jS rm   )rK   r   r   r0   rh   r   r   ri   F  s    z3TestExpanding.test_expanding_corr_cov.<locals>.funcr   =   H   q   r   Trj   c                    s   t | j  ddS )NTrj   )rK   r   r   r0   rL   r   r   ri   U  s    )r   r)   r   rK   r4   listrQ   r   rk   ilocr5   rS   r   r6   )r   r@   r,   r>   r9   ri   r8   Znull_idxr   rh   r   test_expanding_corr_cov?  s    


z%TestExpanding.test_expanding_corr_covc                    st   | j d}| }|jdd  d}| fdd}|jddd}t| j d tdg}||_t	
|| d S )	Nr   c                 S   s   |   S rm   rn   r0   r   r   r   r2   `  r3   z4TestExpanding.test_expanding_apply.<locals>.<lambda>ro   c                    s   |   jdd  dS )Nc                 S   s   |   S rm   rn   rq   r   r   r   r2   a  r3   zFTestExpanding.test_expanding_apply.<locals>.<lambda>.<locals>.<lambda>ro   )r   r4   r0   ro   r   r   r2   a  r3   r   rM   r   )r   r)   r   r4   rO   r   rP   rQ   rR   r5   rS   rs   r   ro   r   test_expanding_apply[  s    z"TestExpanding.test_expanding_applyN)r   r   r   r   r&   r  r  r#  r$  r%  r+  r,  r   r   r   r   r     s     

 

r   c                
   @   s   e Zd Zejddddddggdejdd	d
ggdejdddgggdd Zejddejdddggdejdddgggdd Z	dd Z
dd Zdd ZdS ) TestEWMzmethod, expected_datar/   r   gUUUUUU?gm۶m?g""""""@rW   g۞?g?gt ?rX   g      ?gn۶m۶?g++?c                    s   t dgd tdd}t|djdd  }t d|itjdd	d
dgdd gdd}t|| |d	 fdd}t|j
dd| d S )Nr   rF   r   r   r   comr   r   r   r   r   r   r   c                    s   t | jdd  S Nr   r.  rK   ewmr0   methodr   r   r2     r3   z&TestEWM.test_methods.<locals>.<lambda>TrO   )r   rQ   rK   r)   r2  r   r{   r5   rS   r4   r   r   r4  r  r}   r9   r8   r   r3  r   test_methodsk  s     
zTestEWM.test_methodsrf   r   r   rg   grڶ?g߿yq+?c                    s   t dgd tdd}t|djdd  }t d|itjdd	d
dgdd d gdd}t|| |d	 fdd}t|| d S )Nr   rF   r   r   r   r.  r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   r   r   c                    s   t | jdd  S r0  r1  r0   r3  r   r   r2     r3   z/TestEWM.test_pairwise_methods.<locals>.<lambda>)
r   rQ   rK   r)   r2  r   r{   r5   rS   r4   r6  r   r3  r   test_pairwise_methods  s     zTestEWM.test_pairwise_methodsc                 C   sr   d}| dj|dd }tddddd	dd
ddddg
itjddddddddddg
dd gdd}t|| d S )N23 daysr   r  halflifetimesr   r   gCus=?g;pGR?gZkB?g>(?g8Kr?gҧU?gA9w?r   r   )r   rv   )r   r   )r   r   r   r   )r   r   )r   rw   )r   r   r   r   )r)   r2  r/   r   r   r{   r5   rS   r   times_framer;  r9   r8   r   r   r   
test_times  s@    zTestEWM.test_timesc                    sn   d | dj dd }| d fddjddd	d
ddddddg
 jdd}t|jdd| d S )Nr9  r   r  r:  c                    s   | j  dd S )Nr  r:  )r2  r/   r0   r;  r   r   r2     r3   z-TestEWM.test_times_vs_apply.<locals>.<lambda>r   r   rv   r   r   rF   r   r   rw   r   Tr5  )r)   r2  r/   r4   r*  r   r5   rS   )r   r>  r9   r8   r   r@  r   test_times_vs_apply  s    

zTestEWM.test_times_vs_applyc                 C   sJ   d}| dj|dd }| dj||d jd }t|| d S )Nr9  r   r  r:  )r)   r2  r/   valuesr5   rS   r=  r   r   r   test_times_array  s    
 zTestEWM.test_times_arrayN)r   r   r   r&   r  r  r   rk   r7  r8  r?  rA  rC  r   r   r   r   r-  j  s    
"
%r-  )Znumpyr   r&   Zpandasr   r   r   r   r   r   r   Zpandas._testingZ_testingr5   Zpandas.api.indexersr	   Zpandas.core.groupby.groupbyr
   r   r   r-  r   r   r   r   <module>   s   $	     ~_