B
    x\<c             	   @   s  d dl mZ d dlmZmZ d dlmZ d dlZd dlmZ d dlZ	d dl
mZ d dlZd dlmZmZ d dlmZ d dlm  m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%  m&Z' d dl(m  m)Z* d dl+m,  m-Z- d\Z.Z/dd Z0ej1ddgddd Z2ej1ddddddddgddd Z3ej1ddd gdd!d" Z4G d#d$ d$e5Z6G d%d& d&e6Z7ej89d'G d(d) d)e6Z:G d*d+ d+e6Z;G d,d- d-e6Z<G d.d/ d/e6Z=G d0d1 d1e5Z>G d2d3 d3e>Z?G d4d5 d5e>Z@G d6d7 d7e@ZAG d8d9 d9e@ZBG d:d; d;e@ZCG d<d= d=e@ZDG d>d? d?e>ZEG d@dA dAeEZFG dBdC dCeEZGG dDdE dEeEZHG dFdG dGeEZIG dHdI dIe>ZJG dJdK dKeJZKG dLdM dMeJZLG dNdO dOeJZMG dPdQ dQe>ZNG dRdS dSe>ZOG dTdU dUeOZPG dVdW dWeOZQG dXdY dYeOZRej89d'G dZd[ d[e6ZSG d\d] d]e5ZTd^d_ ZUeU ZVd`da ZWG dbdc dce6ZXG ddde dee5ZYG dfdg dge5ZZdS )h    )OrderedDict)datetime	timedelta)productN)catch_warnings)randn)rangezip)UnsupportedFunctionCall)	DataFrameIndexSeries	Timestampbdate_rangeconcatisnanotna)SpecificationError)	safe_sort)d   
   c             C   s(   t | trt| | nt| | d S )N)
isinstancer   tmassert_series_equalassert_frame_equal)leftright r   7lib/python3.7/site-packages/pandas/tests/test_window.pyassert_equal   s    
r   TF)Zparamsc             C   s   | j S )N)param)requestr   r   r   raw#   s    r"   triangblackmanhammingbartlettbohmanblackmanharrisnuttallbarthannc             C   s   | j S )N)r    )r!   r   r   r   	win_types(   s    r+   kaisergaussiangeneral_gaussianc             C   s   | j S )N)r    )r!   r   r   r   win_types_special.   s    r/   c               @   s*   e Zd ZeddZeg Zdd ZdS )Base   (   c             C   sf   t t}tj|| j< || _ttdddtd| _t	|
 | jd| _tt tt| jttd| _d S )Ni     )periods)index)r5   columns)r   NnpNaN	_nan_locsarrr   r   rngr   copyseriesr   Karangeframe)selfr;   r   r   r   _create_data8   s    zBase._create_dataN)	__name__
__module____qualname__r8   r@   r:   arrayZ	_inf_locsrC   r   r   r   r   r0   3   s   
r0   c               @   sH  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zejejddd Zdd Zejdddejejejejgdd d!d gd!d"d#d"gejejejejgd d"d#d"gd#d$d%d$gd%d&d'd(ggfd)d*d+d+d d gdd d!d gd d"d"d gd+d+d"d"gd d"d#d"gd,d$d-d"gd$d&d%d"ggfgd.d/ Zd*S )0TestApic             C   s   |    d S )N)rC   )rB   methodr   r   r   setup_methodE   s    zTestApi.setup_methodc             C   s   | j jdd}t|jj| j j | j jddd }|jj| j jd ksLt| j jddd }t|jj| j jddg  | j jddddg }t|jj| j jddg  d S )N   )windowr3   )r3      rM   )rA   rollingr   assert_index_equalZ_selected_objr6   nameAssertionError)rB   rr   r   r   test_getitemH   s    

zTestApi.test_getitemc          	   C   sr   t ddggddgd}|jdd}tt|jdg tt|jddg tjtd	d
 |ddg  W d Q R X d S )Nr3      AB)r6   rK   )rL   Cz^[^A]+$)match)r   rN   pytestraisesKeyError__getitem__)rB   dfgr   r   r   test_select_bad_colsY   s    zTestApi.test_select_bad_colsc                sT   t ddggddgd}|jdd t j  d   tt fdd	 d S )
Nr3   rT   rU   rV   )r6   rK   )rL   c                  s    j S )N)Fr   )rR   r   r   <lambda>i   s    z/TestApi.test_attribute_access.<locals>.<lambda>)	r   rN   r   r   rU   sumrY   rZ   AttributeError)rB   r]   r   )rR   r   test_attribute_accessd   s    zTestApi.test_attribute_accessc             C   sx   t tdtdddd}|jdd}|ddg  }t tjtjdd	d
gtjtjdddgdtdd}t|| d S )NrK   r   foo)rU   rV   rW   rM   )rL   rU   rV      	            )rU   rV   AB)r6   )	r   r   rN   rb   r8   nanlistr   r   )rB   r]   rR   resultexpectedr   r   r   tests_skip_nuisancek   s    zTestApi.tests_skip_nuisancec          	   C   sL   t tdtdddd}|jdd}tjtdd |  W d Q R X d S )	NrK   r   re   )rU   rV   rW   rM   )rL   zcannot handle this type)rX   )r   r   rN   rY   rZ   	TypeErrorrb   )rB   r]   rR   r   r   r   test_skip_sum_object_raisesu   s    z#TestApi.test_skip_sum_object_raisesc          	   C   s  t tdtdddd}|jdd}|d  }|d  }|d  }|d	  }|d	  }|d	  }|tjtjg}	t||||gd
d}
t	j
dd	gddgg|
_t|	|
 |tjtjd}	t||gd
d}
tj|	|
dd |dddgi}	t||gd
d}
t	j
ddg|
_t|	|
 |d ddg}	t||gd
d}
ddg|
_t|	|
 tdd& tdt |ddddi}	W d Q R X t||gd
d}
t	j
ddg|
_tj|	|
dd tdd. tdt |ddddddd}	W d Q R X t||||gd
d}
ddddg}t	j
||
_tj|	|
dd |ddgddgd}	t||||gd
d}
ddddg}t	j
||
_tj|	|
dd d S )NrK   r   r   rT   )rU   rV   rM   )rL   rU   rV   r3   )axismeanstdT)
check_like)rU   rt   )rU   ru   rb   )recordignore)rt   rb   )rU   rb   )mean2sum2)rV   ry   )rV   rz   )rV   rt   )rV   ru   )r   r   rN   rt   ru   rb   	aggregater8   r   pd
MultiIndexfrom_productr6   r   r   from_tuplesr   warningssimplefilterFutureWarning)rB   r]   rR   Za_meanZa_stda_sumZb_meanZb_stdZb_sumrn   ro   Zexp_colsr   r   r   test_agg|   s\    

zTestApi.test_aggc             C   s   t tdtdddd}|jdd}|d  }|tjd	d
 d}|d jdd
 |d}t||gdd}tj	||dd d S )NrK   r   r   rT   )rU   rV   rM   )rL   rU   c             S   s   t j| ddS )Nr3   )ddof)r8   ru   )xr   r   r   ra      s    z(TestApi.test_agg_apply.<locals>.<lambda>rV   c             S   s   t j| ddS )Nr3   )r   )r8   ru   )r   r   r   r   ra      s    )r"   r3   )rs   T)rv   )
r   r   rN   rb   aggr8   applyr   r   r   )rB   r"   r]   rR   r   rn   Zrcustomro   r   r   r   test_agg_apply   s    zTestApi.test_agg_applyc             C   s   t tdtdddd}|jdd}|tjtjgj}tj	
tdd	d
gg}t|| |d tjtjgj}td	d
g}t|| |dtjtjgij}tj	ddg}t|| d S )NrK   r   r   rT   )rU   rV   rM   )rL   rk   rb   rt   rU   )rU   rb   )rU   rt   )r   r   rN   r   r8   rb   rt   r6   r|   r}   r~   rm   r   rO   r   r   )rB   r]   rR   rn   ro   r   r   r   test_agg_consistency   s    zTestApi.test_agg_consistencyc          	      sN  t tdtdddd}|jdd  fdd	}tt| t d
   d
   d   d  gdd}t	j
ddddg|_tdd: tdt  d
dg dddgidddgid}W d Q R X tj||dd tdd2 tdt  dddgidddgid}W d Q R X t	j
ddddg|_tj||dd d S )NrK   r   r   rT   )rU   rV   rM   )rL   c                  s$     dddgidddgid d S )NrU   rt   rb   rV   )Zr1Zr2)r{   r   )rR   r   r   f   s    z(TestApi.test_agg_nested_dicts.<locals>.frU   rV   r3   )rs   )rart   )r   ru   )rbrt   )r   ru   T)rw   rx   r   rt   ru   r   )rv   )rU   r   rt   )rU   r   ru   )rV   r   rt   )rV   r   ru   )r   r   rN   rY   rZ   r   r   rt   ru   r|   r}   r   r6   r   r   r   r   r   r   r   )rB   r]   r   ro   rn   r   )rR   r   test_agg_nested_dicts   s(    zTestApi.test_agg_nested_dictsc             C   sl  ddddddddd	d
dg}t dddgdddgtdtjdddtjddddtdtdtdgddtjgddtjgddtjgt	dt	dt	d gtdtdtd gd |d!}t dddgdddgdddgdddgdddgdddgdddgdddgdddgdddgdddgd |d!}|j
dd" }t|| |
d }| t}t|| d S )#Nintfloatstringr   r   r4   fl_inffl_nanstr_nandt_natperiods_natr3   rT   rM   g      @g      @g      @abcZ20170101)r4   z1 ss)r4   freqz2012-01z2012-02z2012-03g      ?g       @ZaaZbbZ20170203)r   r   r   r   r   r4   r   r   r   r   r   )r6   )rL   )r   rm   r|   
date_rangeZtimedelta_rangeZPeriodr8   ZInfr9   r   rN   countr   r   r   astyper   )rB   colsr]   ro   rn   r   r   r   test_count_nonnumeric_types   sH    



z#TestApi.test_count_nonnumeric_typesz"ignore:can't resolve:ImportWarningc             C   s   t tjdjdddd}t|jdd|jddgdd}d	d	g|_|d
d dd g}t	
|| dd }dd }t|jdd|jddgdd}ddg|_|||g}t	
|| d S )Nr   r   r3   r-   )rL   min_periodswin_type)ru   g{Gz?)rs   z<lambda>c             S   s   | j ddS )Nr   )ru   )rt   )r   r   r   r   ra   '  s    z/TestApi.test_window_with_args.<locals>.<lambda>c             S   s   | j ddS )Ng{Gz?)ru   )rt   )r   r   r   r   ra   (  s    c             S   s   | j ddS )Nr   )ru   )rt   )r   r   r   r   a+  s    z(TestApi.test_window_with_args.<locals>.ac             S   s   | j ddS )Ng{Gz?)ru   )rt   )r   r   r   r   b.  s    z(TestApi.test_window_with_args.<locals>.br   r   )r   r8   randomr   rN   r   rt   r6   r{   r   r   )rB   rR   ro   rn   r   r   r   r   r   test_window_with_args  s     

 
zTestApi.test_window_with_argsc             C   sN   t tddd}|d }|d }|jdks<t|jdksJtd S )Nr   re   )rP      r1   )r   r8   r@   rN   rb   rP   rQ   )rB   r   s2s3r   r   r   test_preserve_metadata6  s
    zTestApi.test_preserve_metadatazfunc,window_size,expected_valsrN   rT   g      .@g      4@g      9@g      >@g     A@g      D@g      N@g      T@g     @U@P   	expandingNg      $@gRB:@g      I@c          
   C   s   t jdddgdddgdddgdddgdddgdddgdddggd	d
dgd}t|d	|}|rj||}n| }t jjdddddddgd	d gd}t jddddg}t j|||d}	|td
ddgfdddgff}
t	|
|	 d S )NrU   r   r1   r   r2   rV   r   Z   Zstocklowhigh)r6   )rU   r   )rU   r3   )rU   rT   )rV   rM   )rV      )rV   rK   )rV   rf   )names)r   rt   )r   max)r   rt   )r   min)r5   r6   rt   r   r   )
r|   r   getattrgroupbyr}   r   r   r   r   r   )rB   funcZwindow_sizeZexpected_valsr]   r   rL   r5   r6   ro   rn   r   r   r   test_multiple_agg_funcs?  s.    

zTestApi.test_multiple_agg_funcs)rD   rE   rF   rJ   rS   r_   rd   rp   rr   r   r   r   r   r   tdskip_if_no_scipyrY   markfilterwarningsr   r   parametrizer8   rl   r   r   r   r   r   rH   C   s:   
<+	








rH   z*ignore:can't resolve package:ImportWarningc               @   sn   e Zd Zdd Zejejdddgdd Z	ejejdddgdd	 Z
ejd
ddgdd ZdS )
TestWindowc             C   s   |    d S )N)rC   )rB   rI   r   r   r   rJ   r  s    zTestWindow.setup_methodwhichr>   rA   c          
   C   s   t | |}|j}|dddd |ddddd |ddddd xddd	tdggD ]N}tt |dd|d W d Q R X tt |ddd|d W d Q R X qRW x.d
D ]&}tt ||dd W d Q R X qW d S )NboxcarrT   r3   )r   rL   r   T)r   rL   r   centerFg       @re   )foobarr3   )r   rL   )r   rN   r8   rG   rY   rZ   
ValueError)rB   r   ocwZwtr   r   r   test_constructoru  s    

zTestWindow.test_constructorc             C   s    t | |}|j}||dd d S )NrT   )r   rL   )r   rN   )rB   r   r+   r   r   r   r   r   test_constructor_with_win_type  s    
z)TestWindow.test_constructor_with_win_typerI   rb   rt   c          	   C   s|   t jtdddgddgd}d}tjt|d t||ddd	 W d Q R X tjt|d t||tjd
 W d Q R X d S )NrT   r   rf   r   )rL   z2numpy operations are not valid with window objects)rX   r3   rM   )dtype)	rwindowZWindowr   rY   rZ   r
   r   r8   float64)rB   rI   r   msgr   r   r   test_numpy_compat  s    zTestWindow.test_numpy_compatN)rD   rE   rF   rJ   r   r   rY   r   r   r   r   r   r   r   r   r   r   o  s   r   c               @   s  e Zd Zdd Zdd Zejdddgdd	 Ze	j
ejdddgd
d Zejdeddejddgdd Zejdeddejdddgdd Zejdddddddgdd Z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&gejd'dd(d)d*d*d+d,dd-d.d/d0g
fdd1d)d*d*d*d+d,dd-d.d/g
fdd2ejd*d*d+d,dd-d.d/d0g
fdd3ejd*d*d*d+d,dd-d.d/g
fdd(d)d+d,dd-d.d/d0d4d5g
fdd1d)d+d,dd-d.d/d0d4d5g
fdd2ejd*d+d,dd-d.d/d0d4g
fdd3ejd*d+d,dd-d.d/d0d4g
fgd6d7 Zd8d9 Zejd'dd(ejd*d*d+d,dd-d.ejejg
fdd1ejd*d*d*d+d,dd-d.ejg
fdd2ejejd*d+d,dd-d.ejejg
fdd3ejejd*d*d+d,dd-d.ejg
fdd(ejd+d,dd-d.d/d/ejejg
fdd1ejd+d,dd-d.d/d/d/ejg
fdd2ejejd+d,dd-d.d/ejejg
fdd3ejejd+d,dd-d.d/d/ejg
fgd:d; Zejd<d=d+gd>d? Zd@dA ZdBdC ZdDdE ZejdFejejgdGdH Z dIdJ Z!dKS )LTestRollingc             C   s   |    d S )N)rC   )rB   rI   r   r   r   rJ     s    zTestRolling.setup_methodc             C   s@   t ddddtjdgi}| |d  |jddd  d S )NrV   r   r3   rT   r   )r   )r   r8   rl   rN   rb   )rB   r]   r   r   r   test_doc_string  s    zTestRolling.test_doc_stringr   r>   rA   c          
   C   s   t | |}|j}|dd |ddd |dddd |dddd tt |d |d	 W d Q R X xd
dtdggD ]j}tt ||d W d Q R X tt |d|d W d Q R X tt |dd|d W d Q R X q|W d S )NrT   )rL   r3   )rL   r   T)rL   r   r   Fr   g       @re   )r   rN   rY   rZ   r   r8   rG   )rB   r   r   r   r   r   r   r   r     s     

zTestRolling.test_constructorc          	   C   s6   t | |}|j}tt |ddd W d Q R X d S )Nr   r   )r   )r   rN   rY   rZ   r   )rB   r   r   r   r   r   r   r     s    
z*TestRolling.test_constructor_with_win_typerL   rM   )Zdaysc             C   s   d}t dt|itjd|ddd}tddgtd	d
d}|j|d }t d|itjd|ddd}t	|| |d }t	|| d S )Nr   valuez
2015-12-24D)r4   r   )r5   g        g      ?g      @g      ;@rM   )rL   3D)
r   r8   r@   r|   r   appendrN   rb   r   r   )rB   rL   nr]   Zexpected_datarn   ro   r   r   r   &test_constructor_with_timedelta_window  s    z2TestRolling.test_constructor_with_timedelta_windowr   c          
   C   s   d}t dt|itjd|ddd}t dttjdgtdd	d
itjd|ddd}|j|dd }|j|ddj	t|d}t
|| t
|| d S )Nr   r   z
2017-08-08r   )r4   r   )r5   g      ?g      @g      ;@rM   rT   )rL   r   )r"   )r   r8   r@   r|   r   r   r9   rN   rb   r   r   r   )rB   rL   r"   r   r]   ro   Zresult_roll_sumZresult_roll_genericr   r   r   0test_constructor_timedelta_window_and_minperiods  s    z<TestRolling.test_constructor_timedelta_window_and_minperiodsrI   ru   rt   rb   r   r   varc          	   C   sx   t jtdddgdd}d}tjt|d t||ddd W d Q R X tjt|d t||tjd	 W d Q R X d S )
NrT   r   rf   )rL   z2numpy operations are not valid with window objects)rX   r3   rM   )r   )	r   ZRollingr   rY   rZ   r
   r   r8   r   )rB   rI   rR   r   r   r   r   r     s    zTestRolling.test_numpy_compatc          	   C   s>   t ddddddgi}tt |jddd W d Q R X d S )	NrU   r   r3   rT   rM   r   neither)rL   closed)r   rY   rZ   r   rN   )rB   r]   r   r   r   test_closed  s    zTestRolling.test_closedr   c             C   sP   t jdgt jdddd}t|jddd| }t|t jtjg|j	d	 d S )
NrT   2000r3   )r4   )datar5   10Dr   )r   )r5   )
r|   r   r   r   rN   r   r   r8   rl   r5   )rB   r   serrn   r   r   r   test_closed_one_entry  s    z!TestRolling.test_closed_one_entryc             C   s   t jdddgdddgdt jdddd}t|jdd	d
d jddd| }t jjdddg|jgdd}t j	t
jdt
jg|dd}t|| d S )Nr3   rT   rM   )rU   rV   r   )r4   )r   r5   rU   F)sortrV   r   r   )r   )rU   N)Zarraysr   )r   r5   rP   )r|   r   r   r   r   rN   r}   Zfrom_arraysr5   r   r8   rl   r   r   )rB   r   r   rn   Zexp_idxro   r   r   r   test_closed_one_entry_groupby  s    z)TestRolling.test_closed_one_entry_groupbyinput_dtyper   r   zfunc,closed,expectedr   g        r   r3   rT   r   rK   rf      bothr   r      rg   c             C   sZ   t jtd|t jdddd}t|jd|d| }t j||jd}t	
|| d S )Nr   r   )r4   )r   r5   r   )r   )r5   )r|   r   r8   r@   r   r   r   rN   r5   r   r   )rB   r   r   r   ro   r   rn   r   r   r   test_closed_min_max_datetime  s
    z(TestRolling.test_closed_min_max_datetimec          	   C   sx   t jtdt jdddd}|j|jddg d}|jdd	d
 }t jtj	dddddddg|jd}t
|| d S )Nr   r   )r4   )r   r5   r3   rK   )r5   r   r   )r   r   rT   rM   r   rf   )r|   r   r8   r@   r   dropr5   rN   r   rl   r   r   )rB   r   rn   ro   r   r   r   test_closed_uneven5  s    
zTestRolling.test_closed_unevenc             C   sj   t jtdt jdddd}tj||jdd  < t|jdd|d| }t j||jd	}t	
|| d S )
Nr   r   )r4   )r   r5   r   rT   )r   r   )r5   )r|   r   r8   r@   r   rl   r5   r   rN   r   r   )rB   r   r   ro   r   rn   r   r   r   test_closed_min_max_minpA  s    z$TestRolling.test_closed_min_max_minproller1sc             C   s\   t  }t  | }t|| t tg d}t tg d| }t|| d S )N)r5   )r   rN   rb   r   r   r|   DatetimeIndex)rB   r   ro   rn   r   r   r   tests_empty_df_rollingU  s    z"TestRolling.tests_empty_df_rollingc             C   sh   t tjg}|jddd }t dg}t|| |jddd }t tjg}t|| d S )Nr3   r   )r   g        )r|   r   r8   rl   rN   rb   r   r   )rB   r   rn   ro   r   r   r   test_missing_minp_zeroc  s    z"TestRolling.test_missing_minp_zeroc             C   s\   t jtjgd t ddddgd}|jt ddd	 }t jd
|jd}t	
|| d S )Nr   z
2017-01-01z
2017-01-04z
2017-01-06z
2017-01-07)r5   2dr   )r   g        )r|   r   r8   rl   r   rN   	Timedeltarb   r5   r   r   )rB   r   rn   ro   r   r   r   test_missing_minp_zero_variablep  s    z+TestRolling.test_missing_minp_zero_variablec             C   sl   t jjddgdddggddgd}ttd	|d
}|d }t	|j
|j
 |jjd ddgkshtd S )NrU   rV   rW   r   E12)r   )r   rf   )r6   rM   )r|   r}   r~   r   r8   onesrN   covr   rO   r6   r5   r   rQ   )rB   r   r]   rn   r   r   r   test_multi_index_namesy  s    z"TestRolling.test_multi_index_namesklassc          	   C   s8   |ddddg}t t t|d W d Q R X d S )Nr3   rT   rM   r   )rY   rZ   NotImplementedErroriterrN   )rB   r   objr   r   r   test_iter_raises  s    zTestRolling.test_iter_raisesc             C   sz   t td}||}|dkr8t dd tdD }n t tjgd dgd  gd	 }|jd
|d }t	|| d S )N)r   r1   r   c             S   s$   i | ]}t jgd  dgd  |qS )rT   g      @r   )r8   rl   ).0ir   r   r   
<dictcomp>  s   z1TestRolling.test_rolling_axis.<locals>.<dictcomp>r1   rT   g      @rh   r   rM   )rs   )
r   r8   r   _get_axis_numberr   rl   rN   rb   r   r   )rB   
axis_framer]   rs   ro   rn   r   r   r   test_rolling_axis  s    
zTestRolling.test_rolling_axisN)"rD   rE   rF   rJ   r   rY   r   r   r   r   r   r   r   r|   r   r   r   r   r   r   r   r8   rl   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r     sT   "$." $"" $0	r   c            	   @   s   e Zd Zdd Zdd Zejdddgdd	 Zejd
ddddddgdd Z	ejddej
dejjdddgdd Zdd Zejdejejgdd Zd d! Zd"S )#TestExpandingc             C   s   |    d S )N)rC   )rB   rI   r   r   r   rJ     s    zTestExpanding.setup_methodc             C   s.   t ddddtjdgi}| |d  d S )NrV   r   r3   rT   r   )r   r8   rl   r   rb   )rB   r]   r   r   r   r     s    zTestExpanding.test_doc_stringr   r>   rA   c          
   C   s   t | |}|j}|dd |ddd |ddd x\ddtdggD ]F}tt ||d W d Q R X tt |d|d W d Q R X qFW d S )	Nr3   )r   T)r   r   Fg       @re   rT   )r   r   r8   rG   rY   rZ   r   )rB   r   r   r   r   r   r   r   r     s    

zTestExpanding.test_constructorrI   ru   rt   rb   r   r   r   c          	   C   sx   t jtdddgdd}d}tjt|d t||ddd W d Q R X tjt|d t||tjd	 W d Q R X d S )
NrT   r   rf   )rL   z2numpy operations are not valid with window objects)rX   r3   rM   )r   )	r   Z	Expandingr   rY   rZ   r
   r   r8   r   )rB   rI   er   r   r   r   r     s    zTestExpanding.test_numpy_compatexpanderr3   Zlsz,GH#16425 expanding with offset not supported)reason)Zmarksc             C   s\   t  }t  | }t|| t tg d}t tg d| }t|| d S )N)r5   )r   r   rb   r   r   r|   r   )rB   r  ro   rn   r   r   r   test_empty_df_expanding  s    	z%TestExpanding.test_empty_df_expandingc             C   sd   t tjg}|jdd }t dg}t|| |jdd }t tjg}t|| d S )Nr   )r   g        r3   )r|   r   r8   rl   r   rb   r   r   )rB   r   rn   ro   r   r   r   r     s    z$TestExpanding.test_missing_minp_zeror   c          	   C   s8   |ddddg}t t t|d W d Q R X d S )Nr3   rT   rM   r   )rY   rZ   r   r   r   )rB   r   r   r   r   r   r     s    zTestExpanding.test_iter_raisesc             C   s   t td}||}|dkr8t dd tdD }n*t tjgd dd td	d
D  gd }|jd	|d }t	|| d S )N)r   r1   r   c             S   s.   i | ]&}t jgd  dd tddD  |qS )rT   c             S   s   g | ]}t |qS r   )r   )r   jr   r   r   
<listcomp>  s    z@TestExpanding.test_expanding_axis.<locals>.<dictcomp>.<listcomp>rM      )r8   rl   r   )r   r   r   r   r   r     s   z5TestExpanding.test_expanding_axis.<locals>.<dictcomp>r1   rT   c             S   s   g | ]}t |qS r   )r   )r   r   r   r   r   r    s    z5TestExpanding.test_expanding_axis.<locals>.<listcomp>rM   ri   r   )rs   )
r   r8   r   r   r   rl   r   rb   r   r   )rB   r   r]   rs   ro   rn   r   r   r   test_expanding_axis  s    
 z!TestExpanding.test_expanding_axisN)rD   rE   rF   rJ   r   rY   r   r   r   r   r    Zxfailr  r   r|   r   r   r   r
  r   r   r   r   r    s   r  c               @   sR   e Zd Zdd Zdd Zejdddgdd	 Zejd
dddgdd Z	dS )TestEWMc             C   s   |    d S )N)rC   )rB   rI   r   r   r   rJ     s    zTestEWM.setup_methodc             C   s0   t ddddtjdgi}| |jdd  d S )NrV   r   r3   rT   r   g      ?)com)r   r8   rl   ewmrt   )rB   r]   r   r   r   r     s    zTestEWM.test_doc_stringr   r>   rA   c          
   C   sV  t | |}|j}|dd |dd |dd |dd |dd d |dd d	 |dd d
 tt |ddd W d Q R X tt |ddd W d Q R X tt |ddd W d Q R X tt |dd W d Q R X tt |dd W d Q R X tt |dd W d Q R X x.dD ]&}tt ||d W d Q R X q(W d S )Ng      ?)r  g      ?)span)alphag      ?)halflife)r  r  )r  r  )r  r  )r  r  )r  r  )r  r  g      r   )g      g      ?)r   r  rY   rZ   r   )rB   r   r   r   r  r   r   r   r     s0    





zTestEWM.test_constructorrI   ru   rt   r   c          	   C   sx   t jtdddgdd}d}tjt|d t||ddd	 W d Q R X tjt|d t||tjd
 W d Q R X d S )NrT   r   rf   g      ?)r  z2numpy operations are not valid with window objects)rX   r3   rM   )r   )	r   ZEWMr   rY   rZ   r
   r   r8   r   )rB   rI   r  r   r   r   r   r   <  s    zTestEWM.test_numpy_compatN)
rD   rE   rF   rJ   r   rY   r   r   r   r   r   r   r   r   r  	  s   'r  c            	   @   sn   e Zd ZdZdd dd dd dd dd dd d	d d
d dZdd Zdd Zdd Zdd Zdd Z	dS )DtyperT   c             C   s   |   S )N)r   )vr   r   r   ra   V  s    zDtype.<lambda>c             C   s   |   S )N)r   )r  r   r   r   ra   W  s    c             C   s   |   S )N)r   )r  r   r   r   ra   X  s    c             C   s   |   S )N)rb   )r  r   r   r   ra   Y  s    c             C   s   |   S )N)rt   )r  r   r   r   ra   Z  s    c             C   s   |   S )N)ru   )r  r   r   r   ra   [  s    c             C   s   |   S )N)r   )r  r   r   r   ra   \  s    c             C   s   |   S )N)median)r  r   r   r   ra   ]  s    )r   r   r   rb   rt   ru   r   r  c             C   s  t dddddgddt tjddddgddt tjddddgddt tjdddd	gddt tjd
dddgddt tjgtd
gd  ddt tjd
d
d
d
gddt tjd
dddgdddt dddddgddt tjddddgddt tjddddgddt tjddddgddt tjdd	ddgddt tjgtdgd  ddt tjddddgddt tjdd	ddgdddtt dddddgt dddddgdddtt tjddddgt tjddd	dgdddtt tjddddgt tjdddd	gdddtt tjddddgt tjddddgdddtt tjdddd	gt tjddddgdddtt tjgtdgd  t tjgtdgd  dddtt tjddddgt tjddddgdddtt tjdddd	gt tjddddgddddd}|S )Nr3   rT   r   )r   rM   r   r   rK   r   g      ?g      ?g      @g      @)r   r   r   rb   rt   ru   r   r  r   r   rf   rh      rg   )r   r3         )sr1sr2r]   )r   r8   rl   Zsqrtr   )rB   expectsr   r   r   get_expects`  sR    zDtype.get_expectsc             C   sP   t td|d}t tddd|d}ttdd|d}|||d}|S )NrK   )r   r   r   )rK   rT   )r  r  r]   )r   r8   r@   r   reshape)rB   r   r  r  r]   r   r   r   r   _create_dtype_data  s    zDtype._create_dtype_datac             C   s   |  | j| _|  | _d S )N)r  r   r   r  r  )rB   r   r   r   rC     s    zDtype._create_datac             C   sd   |    xVt| j | j D ]<\}}| j| }| j| }| j| | }| ||||| q W d S )N)rC   r   funcskeysr   r  check_dtypes)rB   f_named_namer   dexpr   r   r   test_dtypes  s     

zDtype.test_dtypesc             C   s&   |j | jd}||}t|| d S )N)rL   )rN   rL   r   assert_almost_equal)rB   r   r!  r#  r"  r$  rollrn   r   r   r   r     s    zDtype.check_dtypesN)
rD   rE   rF   rL   r  r  r  rC   r%  r   r   r   r   r   r  R  s   3	r  c               @   s   e Zd ZeZdS )TestDtype_objectN)rD   rE   rF   objectr   r   r   r   r   r(    s   r(  c               @   s   e Zd ZdS )Dtype_integerN)rD   rE   rF   r   r   r   r   r*    s   r*  c               @   s   e Zd ZejZdS )TestDtype_int8N)rD   rE   rF   r8   Zint8r   r   r   r   r   r+    s   r+  c               @   s   e Zd ZejZdS )TestDtype_int16N)rD   rE   rF   r8   Zint16r   r   r   r   r   r,    s   r,  c               @   s   e Zd ZejZdS )TestDtype_int32N)rD   rE   rF   r8   Zint32r   r   r   r   r   r-    s   r-  c               @   s   e Zd ZejZdS )TestDtype_int64N)rD   rE   rF   r8   Zint64r   r   r   r   r   r.    s   r.  c               @   s   e Zd ZdS )Dtype_uintegerN)rD   rE   rF   r   r   r   r   r/    s   r/  c               @   s   e Zd ZejZdS )TestDtype_uint8N)rD   rE   rF   r8   Zuint8r   r   r   r   r   r0    s   r0  c               @   s   e Zd ZejZdS )TestDtype_uint16N)rD   rE   rF   r8   Zuint16r   r   r   r   r   r1    s   r1  c               @   s   e Zd ZejZdS )TestDtype_uint32N)rD   rE   rF   r8   Zuint32r   r   r   r   r   r2    s   r2  c               @   s   e Zd ZejZdS )TestDtype_uint64N)rD   rE   rF   r8   Zuint64r   r   r   r   r   r3    s   r3  c               @   s   e Zd ZdS )Dtype_floatN)rD   rE   rF   r   r   r   r   r4    s   r4  c               @   s   e Zd ZejZdS )TestDtype_float16N)rD   rE   rF   r8   Zfloat16r   r   r   r   r   r5    s   r5  c               @   s   e Zd ZejZdS )TestDtype_float32N)rD   rE   rF   r8   Zfloat32r   r   r   r   r   r6    s   r6  c               @   s   e Zd ZejZdS )TestDtype_float64N)rD   rE   rF   r8   r   r   r   r   r   r   r7    s   r7  c               @   s   e Zd ZdZdZdd ZdS )TestDtype_categorycategoryFc             C   s2   t td|d}t tddd|d}||d}|S )NrK   )r   r   r   r  )r  r  )r   r   )rB   r   r  r  r   r   r   r   r    s
    z%TestDtype_category._create_dtype_dataN)rD   rE   rF   r   Z
include_dfr  r   r   r   r   r8    s   r8  c               @   s   e Zd Zdd ZdS )DatetimeLikec          	   C   sN   |j | jd}|dkr,||}t|| ntt || W d Q R X d S )N)rL   r   )rN   rL   r   r&  rY   rZ   r   )rB   r   r!  r#  r"  r$  r'  rn   r   r   r   r     s    zDatetimeLike.check_dtypesN)rD   rE   rF   r   r   r   r   r   r:    s   r:  c               @   s   e Zd ZedZdS )TestDtype_timedeltazm8[ns]N)rD   rE   rF   r8   r   r   r   r   r   r;    s   r;  c               @   s   e Zd ZedZdS )TestDtype_datetimezM8[ns]N)rD   rE   rF   r8   r   r   r   r   r   r<    s   r<  c               @   s   e Zd ZdZdd ZdS )TestDtype_datetime64UTCzdatetime64[ns, UTC]c             C   s   t d d S )NzKdirect creation of extension dtype datetime64[ns, UTC] is not supported ATM)rY   skip)rB   r   r   r   rC     s    z$TestDtype_datetime64UTC._create_dataN)rD   rE   rF   r   rC   r   r   r   r   r=    s   r=  c               @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	dd Z
ej	dd Zej	dd Zej	dd Zej	dd Zej	dd Zej	dd Zej	dd Zej	dd Zej	dd Zdd  Zd!d" Zd#d$ Zejd%d&d'd(d)d*gd+d, Zd-d. Zejd/d&d'd0d(d1gejd2d3d4d5d6d7gejd8d*d9d:d;d<d=d>gd?d*d:d;d<d9d=d>gd&ejd@ejdAgejejejejgejd'ejdBdAd(gd(gejdCdDggdEdF ZdGdH ZdIdJ Z dKdL Z!ejdMe"e#gejdNdOdP dQdP gdRdS Z$dTdU Z%ejdVdWdXgdYdZ Z&d[d\ Z'd]d^ Z(d_d` Z)dadb Z*ej	dcdd Z+ej	dedf Z,ddidjZ-dkdl Z.ejdmdgdngejdodgdngdpdq Z/drds Z0dtdu Z1dvdw Z2dxdy Z3dzd{ Z4d|d} Z5d~d Z6dd Z7ejdNdddgdd Z8dddZ9dhS )TestMomentsc             C   s   |    d S )N)rC   )rB   rI   r   r   r   rJ   #  s    zTestMoments.setup_methodc          	   C   s   t tdjdddd  tt$ t tdjdddd  W d Q R X ttdjdddd  ttdjdddd  tt$ ttdjdddd  W d Q R X d S )	Nr   rM   Tr   )rL   r   rs   r3   )r   r   rT   )	r   r8   r   rN   rt   rY   rZ   r   r   )rB   r   r   r   test_centered_axis_validation&  s    (z)TestMoments.test_centered_axis_validationc             C   s   | j tjddd d S )Nrb   F)rP   zero_min_periods_equal)_check_moment_funcr8   nansum)rB   r   r   r   test_rolling_sum:  s    
zTestMoments.test_rolling_sumc             C   s   dd }| j |dddd d S )Nc             S   s   t | t S )N)r8   isfiniter   r   rb   )r   r   r   r   ra   ?  s    z0TestMoments.test_rolling_count.<locals>.<lambda>r   Fr   )rP   has_min_periods
fill_value)rB  )rB   Zcounterr   r   r   test_rolling_count>  s    
zTestMoments.test_rolling_countc             C   s   | j tjdd d S )Nrt   )rP   )rB  r8   rt   )rB   r   r   r   test_rolling_meanC  s    zTestMoments.test_rolling_meanc             C   sh   t ddddddddd	d
g
}t|jddd }tt jt jddddddt jt jg
}t|| d S )Ng@gQk.@gzG@g=
ףp="@gQ+@g{G*@gGz0@g(\"@g(\B%@g(\,@rK   T)r   gC#@g
ףp=&@gT㥛 '@gx&1)@gA`Т)@gCl)@)r8   rG   r   rN   rt   rl   r   r   )rB   valsrn   ro   r   r   r   test_cmov_meanF  s    
zTestMoments.test_cmov_meanc             C   sj   t ddddddddd	d
g
}t|jdddd }tt jt jddddddt jt jg
}t|| d S )Ng@gQk.@gzG@g=
ףp="@gQ+@g{G*@gGz0@g(\"@g(\B%@g(\,@rK   r   T)r   r   gC#@g
ףp=&@gT㥛 '@gx&1)@gA`Т)@gCl)@)r8   rG   r   rN   rt   rl   r   r   )rB   rJ  rn   ro   r   r   r   test_cmov_windowP  s    
zTestMoments.test_cmov_windowc             C   s   t tjgd }|jdddd }t| s8tt g }|jdddd }t	|dksftt tj
d}|jddd }t| stt	|dkstd S )Nr   rK   Tr   )r   r   r   )r   )r|   r   r8   rl   rN   rt   isnanallrQ   lenr   r   )rB   rJ  rn   r   r   r   test_cmov_window_cornerZ  s    
z#TestMoments.test_cmov_window_cornerc             C   st  t ddgddgddgddgd	d
gddgddgddgddgddgg
}t t jt jgt jt jgddgddgddgddgddgddgt jt jgt jt jgg
}t|jd d!d"d# }tt|| t	t
 t|jd d!d"d#  W d Q R X t t jt jgt jt jgd$d%gd&d'gd(d)gd*d+gd,d&gd-d.gt jt jgt jt jgg
}t|jd d!d"d# }tt|| d S )/Ng\(\(@gQ@g\(\$@gRQ"@g{Gz*@gQ8-@g
ףp=
@gQ8 @g@gzG&@gHzG"@gףp=
@gQ&@gףp=
W%@gQ@g
ףp=
@gףp=
"@gHz @gzG(@g\(\@g/$"@gbX9"@g}?5^I!@gZd;#@g=
ףp!@g"~j$@g=
ףp=@gV-!@g^I+@g"@gK@rK   r   T)r   r   gzG!G@g{GzG@g\(E@gp=
H@g,F@gQI@gfffffA@gQxE@g{GzC@g     F@g(\C@)r8   rG   rl   r   rN   rt   r   r   rY   rZ   rc   ru   rb   )rB   rJ  xprsr   r   r   test_cmov_window_framem  s$    
"z"TestMoments.test_cmov_window_framec             C   s^   t tjd}tj|d< tj|d< |jdddd }|jddddd }t|| d S )	Nr   r   r   rK   T)r   r   r   )r   r   r   )	r   r8   r   r   rl   rN   rt   r   r   )rB   rJ  rQ  rR  r   r   r   test_cmov_window_na_min_periods  s    


z+TestMoments.test_cmov_window_na_min_periodsc             C   sH  t ddddddddd	d
g
}t jt jddddddt jt jg
t jt jddddddt jt jg
t jt jddddddt jt jg
t jt jdddd d!d"t jt jg
t jt jd#d$d%d&d'd(t jt jg
t jt jd)d*d+d,d-d.t jt jg
t jt jd/d0d1d2d3d4t jt jg
t jt jddddddt jt jg
d5}t|| }t|jd6|d7d8 }t|| d S )9Ng@gQk.@gzG@g=
ףp="@gQ+@g{G*@gGz0@g(\"@g(\B%@g(\,@g='o|m!@gqWs #@g((@g4h,@gfa+@g#bJ$'@g}iƒ"@g6~$@gT(@gu*@g(\*@g`(@g(\ @g(\b"@g=
ףp)@g\(,@g
ףp=*,@g(\"'@g"v@g_QZ"@gsҫ)@g* 3hX,@g5Q-@gx@5&@gT[@g;)T"@g}*@g͍	,@gOI5.@gY}%@gVI/@gU"@g*@g!<8,@g7.@g%@g;M@g>tA}["@gH|)@gff,@gj'-@g,}V&@)r%   r#   r*   r'   r(   r)   r$   r&   rK   T)r   r   )r8   rG   rl   r   rN   rt   r   r   )rB   r+   rJ  xpsrQ  rR  r   r   r   test_cmov_window_regular  s*    
z$TestMoments.test_cmov_window_regularc             C   sh   t jtdt jd}| }t j|d d< t j|dd < t|}t|jd|dd }t	
|| d S )Nr   )r   rT   r  rK   T)r   r   )r8   rG   r   r   r=   rl   r   rN   rt   r   r   )rB   r+   rJ  rQ  rR  r   r   r   %test_cmov_window_regular_linear_range  s    z1TestMoments.test_cmov_window_regular_linear_rangec             C   s*  t dddddddt jdd	g
}t jt jd
dddddddg
t jt jddddddddg
t jt jd
dddddddg
t jt jddddddddg
t jt jd d!d"d#d$d%d&d'g
t jt jd(d)d*d+d,d-d.d/g
t jt jd0d1d2d3d4d5d6d7g
t jt jd8d9d:d;d<d=d>d?g
d@}t|| }t|jdA|dBdC }t|| d S )DNg@gQk.@gzG@g=
ףp="@gQ+@g{G*@gGz0@g(\B%@g(\,@gch#@gQ%@g(\ @g(\b"@g=
ףp)@g\(,@g@ٔ+;/@g(\O+@geu"@g"&@g;M@g>tA}["@gH|)@gff,@gH/@gOe!@gƢd '@g"v@g_QZ"@gsҫ)@g* 3hX,@gj/@g R8/#@g	$@g='o|m!@gqWs #@g((@gEJi,@g&pn~.@g4)e+@gj@+0 @g8gDio(@gVI/@gU"@g*@gmIF,@gtYLl0@gϠO+@g vЩ"@g(\#@g}iƒ"@g6~$@gT(@gGz+@gz1,@gHz+@g @gx(
(@gT[@g;)T"@g}*@gB`",@gQ0@ggO+@)r&   r$   r*   r'   r%   r)   r#   r(   rK   rM   )r   r   )r8   rG   rl   r   rN   rt   r   r   )rB   r+   rJ  rU  rQ  rR  r   r   r   %test_cmov_window_regular_missing_data  s*    







z1TestMoments.test_cmov_window_regular_missing_datac             C   s   ddiddidddd}t ddd	d
ddddddg
}t jt jddddddt jt jg
t jt jddddddt jt jg
t jt jdddd d!d"t jt jg
d#}t|| }t|jd$|d%d&jf || }t|| d S )'Nbetag      ?ru   g       @)powerwidth)r,   r-   r.   g@gQk.@gzG@g=
ףp="@gQ+@g{G*@gGz0@g(\"@g(\B%@g(\,@gn)!@gL;#@gW[~(@g6T+@g	K<P+@ghW!(@gP0A#@gS"n%@gfv'@gm+*@g)@g})@gxW#@gW	3&@g=~oӟM'@g7)@gƢd)@g8լ)@)r-   r.   r,   rK   T)r   r   )r8   rG   rl   r   rN   rt   r   r   )rB   r/   kwdsrJ  rU  rQ  rR  r   r   r   test_cmov_window_special  s     

z$TestMoments.test_cmov_window_specialc             C   s   ddiddidddddid}t jtd	t jd
}| }t j|d d< t j|dd < t|}t|jd|ddjf || }t	
|| d S )NrY  g      ?ru   g       @)rZ  r[  r[  g      ?)r,   r-   r.   Zslepianr   )r   rT   r  rK   T)r   r   )r8   rG   r   r   r=   rl   r   rN   rt   r   r   )rB   r/   r\  rJ  rQ  rR  r   r   r   %test_cmov_window_special_linear_range  s    
z1TestMoments.test_cmov_window_special_linear_rangec             C   s   | j tjdd d S )Nr  )rP   )rB  r8   r  )rB   r   r   r   test_rolling_median
  s    zTestMoments.test_rolling_medianc          	   C   s   | j tjdd tdddddg}|jddd	 }ttt|}t	|| t
t$ tdddgjddd	  W d Q R X d S )
Nr   )rP   r3   rT   rM   r   rK   r   )rL   r   )rB  r8   r   r|   r   rN   r   rO  r   r   rY   rZ   r   )rB   r   rn   ro   r   r   r   test_rolling_min  s    zTestMoments.test_rolling_minc          	   C   s   | j tjdd tjdddddgtjd}|jd	dd
 }t|| t	
t$ tdddgjddd
  W d Q R X d S )Nr   )rP   r3   rT   rM   r   rK   )r   r   )rL   r   )rB  r8   r   r|   r   r   rN   r   r&  rY   rZ   r   )rB   r   r   r   r   r   test_rolling_max  s    zTestMoments.test_rolling_maxqg        g?g      ?g?g      ?c                s*   dd  fdd}| j |d d d S )Nc       	      S   s   t j| dd}t|d |jd d  }||jd d krD|d }nht|t|jd d  }t|d t|jd d  }|| }||d  }||| ||  ||   }|S )Nr   )rs   g      ?r3   r   )r8   r   r   shaper   )	r   ZpervaluesidxZretvalZqlowZqhigZvlowZvhigr   r   r   scoreatpercentile%  s    
z<TestMoments.test_rolling_quantile.<locals>.scoreatpercentilec                s
   |  S )Nr   )r   )rb  rf  r   r   quantile_func6  s    z8TestMoments.test_rolling_quantile.<locals>.quantile_funcquantile)rP   rh  )rB  )rB   rb  rg  r   )rb  rf  r   test_rolling_quantile"  s    z!TestMoments.test_rolling_quantilec             C   s|   d}d}t jd|dd}ttj|| |df|d}|jdd	d
gdd}tj|dddgdd}t	
|jt| d S )Nr   rK   Z20100101rV   )r4   r   r   )r5   g      ?g      ?g      ?r   )rs      2   K   )r|   r   r   r8   r   randr  rh  Z
percentiler   r&  rd  rG   )rB   rowcolre  r]   Zdf_quantileZnp_percentiler   r   r   #test_rolling_quantile_np_percentile<  s    "z/TestMoments.test_rolling_quantile_np_percentilerh  g?r3   interpolationZlinearlowerZhigherZnearestZmidpointr   g       @g      @g      @g      @g      @g      @g       @g?g?g333333?gffffff?g333333?c             C   sX   t |}|||}|jdd||jd }t|rHt|sTtn||ksTtd S )Nr3   )r   r   )r   rh  r   ilocr8   rM  rQ   )rB   rh  rq  r   r   Zq1Zq2r   r   r   +test_rolling_quantile_interpolation_optionsI  s    
z7TestMoments.test_rolling_quantile_interpolation_optionsc          	   C   sL   t d}t|}tjtdd" |jt|ddjddd W d Q R X d S )	NrK   z(Interpolation 'invalid' is not supported)rX   r3   )r   g      ?Zinvalid)rq  )	r8   r@   r   rY   rZ   r   rN   rO  rh  )rB   r   r   r   r   r   test_invalid_quantile_valuea  s
    
z'TestMoments.test_invalid_quantile_valuec          	   C   s   t dddddg}tt |dd W d Q R X tt |dd W d Q R X tt |dd	 W d Q R X d S )
Ng        g?g      ?g?g      ?rM   gg      $@re   )r   rY   rZ   r   rN   rh  rq   )rB   r   r   r   r   test_rolling_quantile_paramj  s    z'TestMoments.test_rolling_quantile_paramc          	   C   s   t  ^ t jddtd dd }| jtjd||d tg }|dj	d	d
 |d}t
|| W d Q R X td d d g}|jdddj	dd
 |d}tdddg}t
|| |jdddj	t|d}t
|| d S )Nrx   z.*(empty slice|0 for slice).*)messager9  c             S   s   | t |   S )N)r8   rE  rt   )r   r   r   r   r     s    z)TestMoments.test_rolling_apply.<locals>.fr   )rP   r   r"   r   c             S   s   |   S )N)rt   )r   r   r   r   ra     s    z0TestMoments.test_rolling_apply.<locals>.<lambda>)r"   rT   r   )r   c             S   s   t | S )N)rO  )r   r   r   r   ra     s    g      ?g       @)r   r   r   RuntimeWarningrB  r8   rt   r   rN   r   r   r   rO  )rB   r"   r   ro   rn   r   r   r   r   test_rolling_applyv  s    
zTestMoments.test_rolling_applyr   rI   c             C   s   | j ddS )NrT   )rL   )rN   )r   r   r   r   ra     s    zTestMoments.<lambda>c             C   s   |   S )N)r   )r   r   r   r   ra     s    c          	   C   s:   |t d}tt ||dd  W d Q R X d S )NrM   c             S   s   t | S )N)rO  )r   r   r   r   ra     s    z7TestMoments.test_apply_future_warning.<locals>.<lambda>)r8   r@   r   Zassert_produces_warningr   r   )rB   r   rI   r   r   r   r   test_apply_future_warning  s    z%TestMoments.test_apply_future_warningc             C   sx   t ddddg}|djtj|d}|  s8t|jdddjtj|d}t jddddgt	d	}t
|| d S )
Nr3   rT   rM   r   r   )r"   )r   rf   )r   )r|   r   rN   r   r8   rb   r   rN  rQ   r   r   r&  )rB   r"   rJ  rn   ro   r   r   r    test_rolling_apply_out_of_bounds  s    z,TestMoments.test_rolling_apply_out_of_boundsrL   rT   2sc          	      s   t jtjdtjjdddddt jddddd	  fd
d} |j|dd} j	dd  
 }t|| tt  |j|dd W d Q R X d S )NrK   r   r   )size)rU   rV   20130101r   )r4   r   )r5   c                s$   | j d  j d krtjS | jd S )Nr   r   )r5   r8   rl   rs  )r   )r]   r   r   r     s    z=TestMoments.test_rolling_apply_with_pandas_objects.<locals>.fF)r"   rT   T)r|   r   r8   r   r   Zrandintr   rN   r   rs  Zreindex_liker   r   rY   rZ   rc   )rB   rL   r   rn   ro   r   )r]   r   &test_rolling_apply_with_pandas_objects  s    z2TestMoments.test_rolling_apply_with_pandas_objectsc             C   s*   | j dd dd | j dd ddd d S )Nc             S   s   t j| ddS )Nr3   )r   )r8   ru   )r   r   r   r   ra     s    z.TestMoments.test_rolling_std.<locals>.<lambda>ru   )rP   c             S   s   t j| ddS )Nr   )r   )r8   ru   )r   r   r   r   ra     s    r   )rP   r   )rB  )rB   r   r   r   test_rolling_std  s    

zTestMoments.test_rolling_stdc             C   s   t dddddg}|jddd }t tjgd }t|| |jdddjd	d
}t dgd }t|| t tjtjdddgjddd }t|d st	d S )Ng      ?g       @g      @g      @g      @r3   )r   rK   r   )r   g        rM   r   rT   )
r|   r   rN   ru   r8   rl   r   r   rM  rQ   )rB   rJ  rn   ro   r   r   r   test_rolling_std_1obs  s    z!TestMoments.test_rolling_std_1obsc             C   sl   t dddddg}|jdd }t|dd   s>t|jdd }t|dd   shtd S )Nge>R?gRz12?rM   )rL   rT   )r  )	r|   r   rN   ru   r8   rE  rN  rQ   r  )rB   r   r   r   r   r   test_rolling_std_neg_sqrt  s    z%TestMoments.test_rolling_std_neg_sqrtc             C   s*   | j dd dd | j dd ddd d S )Nc             S   s   t j| ddS )Nr3   )r   )r8   r   )r   r   r   r   ra     s    z.TestMoments.test_rolling_var.<locals>.<lambda>r   )rP   c             S   s   t j| ddS )Nr   )r   )r8   r   )r   r   r   r   ra     s    r   )rP   r   )rB  )rB   r   r   r   test_rolling_var  s    

zTestMoments.test_rolling_varc                s&   ddl m  | j fdddd d S )Nr   )skewc                s    | ddS )NF)biasr   )r   )r  r   r   ra     s    z/TestMoments.test_rolling_skew.<locals>.<lambda>r  )rP   )scipy.statsr  rB  )rB   r   )r  r   test_rolling_skew  s    zTestMoments.test_rolling_skewc                s&   ddl m  | j fdddd d S )Nr   )kurtosisc                s    | ddS )NF)r  r   )r   )r  r   r   ra     s    z/TestMoments.test_rolling_kurt.<locals>.<lambda>kurt)rP   )r  r  rB  )rB   r   )r  r   test_rolling_kurt  s    zTestMoments.test_rolling_kurtTNc                 s  d) fdd	}	|	| j dd}
t|
ts,tt|
jd || j dd   |	| jdd}t|tshttj	|jdd d f | jjdd d d f j
|dtd	dd
 |rd}d}| j d d d d }| jd d d d }|r|	|||d}
|	|||d}n|	||d}
|	||d}|
jd }|dt   }| j d d d ||}| jd d d ||}t|
d || tj	|||j
|tddd
 ttd}tj|d d< tj|dd < |r|	|ddd}t|jd ||dd  |	|ddd}t|jd stt|jd r2tt|jd rFtt|jd sZtttd}|	|ddd}t|jd stt|jd st|r|	|ddd}|	|ddd}t|| n(|	|d}t|jd ||dd  |rxdt| j d t| j fD ]h}|	| j t| j d |d}|	| j t| j |d}t|}t	|t| | }t|| ||  qW nZ|	| j t| j d }|	| j t| j }t|}t	|t| | }t|| ||  |r|r0|	|dddd}|	t|ttjgd  gdddd d  jdd!}n>|	|ddd"}|	t|ttjgd  gdd d  jdd!}t	|| d#d$ td%D }|r d}|	| j t| j j| d|dd&| j j}|	| jt| jj| d|dd&| jj}|	| j d|dd'}|	| jd|dd'}n|	| j t| j j| ddd&| j j}|	| jt| jj| ddd&| jj}|	| j ddd(}|	| jddd(}|d k	r| |}| |}t	|| t!|| d S )*NFc                s    | j |||d}t|f  S )N)rL   r   r   )rN   r   )r   rL   r   r   rR   )kwargsrP   r   r   
get_result  s    z2TestMoments._check_moment_func.<locals>.get_resultrk  )rL   r   ir   )rs   r"   )check_namesrj  r   rT   rV   )rL   r   rj   )r"   ir   )r   r1         irK   rM   r   r3   T)r   r   rg   )r   )r   c             S   s   g | ]}d | qS )zx%dr   )r   r   r   r   r   r  g  s    z2TestMoments._check_moment_func.<locals>.<listcomp>r  i)rL   r   r   )rL   r   )NF)"r>   r   r   rQ   r   r&  rs  rA   r   r   r   r"   resamplert   r5   offsetsZBDaytruncateZxsr   r8   r9   r   r   rO  r|   r   reset_indexr   Zreindexrm   shiftfillnar   ) rB   static_comprP   rF  Z
has_centerhas_time_rulerG  rA  r  r  series_resultframe_resultwinminpr>   rA   Z	last_dateZ	prev_dateZtrunc_seriesZtrunc_framer   rn   obj2result0result1ro   Znan_maskr   Z	series_xpZframe_xpZ	series_rsZframe_rsr   )r  rP   r   rB    s    "




 






zTestMoments._check_moment_funcc             C   sT   | j dd ttd}d|d< |jddd  }t|d d	k sPt	d S )
Nrt   )rP   i  r3   rK   r   F)r  adjustg{Gz?)
	_check_ewr|   r   r8   zerosr  rt   rb   absrQ   )rB   rJ  rn   r   r   r   	test_ewma  s
    zTestMoments.test_ewmar  F	ignore_nac             C   sZ   t ddddg}|r&t ddddg}nt ddd	d
g}|jd||d }t|| d S )Ng      ?g       @g      @g       @g?gʍ"k@gY;@gRTU?gS@g	@)r  r  r  )r   r  rt   r   r   )rB   r  r  r   ro   rn   r   r   r   test_ewma_cases  s    zTestMoments.test_ewma_casesc             C   sZ  t dgtjgd  dg }|jdd }t|t dgt|  t tjgd dg tjgd  dg }|jdd }t|t tjgd dgd   t tjddg}t dtjdg}t tjdtjtjdtjg}t dtjddg}d}dd|  }d	d
 }	xL|ddtjd| dgf|ddtjd| dgf|ddtjd| |gf|ddtjd| |gf|ddd| d tjdgf|ddd| tjdgf|ddd| d tj|gf|ddd| tj|gf|ddtjd| d tjtjdtjgf|ddtjd| tjtjdtjgf|ddtjd| d tjtj|tjgf|ddtjd| tjtj|tjgf|ddd| d tjd| dgf|ddd| d tjd| dgf|ddd| d tjd| | |d| d |  gf|ddd| d tjd| | |gfgD ]d\}}
}}|	|t |}|j||
|d }t|| |dkr|j||
d }t|| qW d S )Ng      ?rK   )r  rT   r   g     @Y@g      I@g       @c             S   s   |  | |  jddS )Nffill)rI   )multiplycumsumr  )r   r   r   r   r   
simple_wma  s    z6TestMoments.test_ewma_nan_handling.<locals>.simple_wmaTFrM   )r  r  r  )r  r  )r   r8   rl   r  rt   r   r   rO  )rB   r   rn   Zs0s1r   r   r  r  r  r  r  r   ro   r   r   r   test_ewma_nan_handling  sZ    ("
$
z"TestMoments.test_ewma_nan_handlingc             C   s   | j dd d S )Nr   )rP   )r  )rB   r   r   r   test_ewmvar  s    zTestMoments.test_ewmvarc             C   s   | j dd d S )Nvol)rP   )r  )rB   r   r   r   test_ewmvol  s    zTestMoments.test_ewmvolc          	   C   s~   | j jdd }| j jdd }t|| tt | j jddd W d Q R X tt | j    W d Q R X d S )Ng      #@)r  r1   )r  )r  r  )r>   r  rt   r   r&  rY   rZ   r   )rB   rU   rV   r   r   r   test_ewma_span_com_args  s    z#TestMoments.test_ewma_span_com_argsc          	   C   s   | j jdd }| j jdd }t|| tt | j jddd W d Q R X tt | j jddd	 W d Q R X tt | j jdddd
 W d Q R X tt | j   W d Q R X d S )NgH+@)r  g      $@)r  r1   rk  )r  r  g      #@)r  r  )r  r  r  )r>   r  rt   r   r&  rY   rZ   r   )rB   rU   rV   r   r   r   test_ewma_halflife_arg  s    z"TestMoments.test_ewma_halflife_argc             C   sr   t | j}|jdd }|jdd }|jdd }|jdd }t|| t|| t|| d S )	NgVR?)r  gƷC?)r  g_!@)r  gXlWY?)r  )r   r;   r  rt   r   r   )rB   r   r   r   r   r#  r   r   r   test_ewm_alpha  s    
zTestMoments.test_ewm_alphac          	   C   s   | j }tt |  W d Q R X tt |jddd W d Q R X tt |jddd W d Q R X tt |jddd W d Q R X d S )Ng      $@g      ?)r  r  )r  r  )r  r  )r>   rY   rZ   r   r  )rB   r   r   r   r   test_ewm_alpha_arg  s    zTestMoments.test_ewm_alpha_argc             C   s  t | j}tjt|jdd |jdd |jdd tjt|jdd tjt|jdd tjt|jdd |jdd |jdd tjt|jdd	 tjt|jdd	 |jdd	 tjt|jdd
 tjt|jdd
 |jdd
 |jdd
 tjt|jdd
 d S )Ng)r  g        g?)r  g?g      ?g?)r  )r  )r   r;   rY   rZ   r   r  )rB   r   r   r   r   test_ewm_domain_checks  s"    
z"TestMoments.test_ewm_domain_checksrt   r  r   c             C   s6   t jg tjd}|d}t|| }t|| d S )N)r   rM   )r|   r   r8   r   r  r   r   r&  )rB   rI   rJ  r  rn   r   r   r   test_ew_empty_series&  s    
z TestMoments.test_ew_empty_seriesc       
      C   s0  t | jjdd| }t|ts$tt | jjdd| }t|tksJtt | jjdd| }|rz|| j	 
  szttd}tj|d d< tj|dd < t|}t |jddd| }|d d 
  st|dd  
  rtxdD ]}t |jd|d| }|d	krP|d d 
  s4t|dd  
  rtn4|d d 
  sjt|dd  
  rtt t jd|d| }t|t  t td
gjd|d| }|d	krt|td
g qt|ttjg qW t ttdjdd| }	|	jtjks,td S )Nr   )r  rk  irT   )r  r   r	  )r   r3   rt   g      ?)r   )r  )r   r>   r  r   r   rQ   rA   typer   r:   r   rN  r   r8   r9   anyr   r   r@   r   Zfloat_)
rB   rP   preserve_nanr  r  rn   r;   r   r   result2r   r   r   r  .  s>    

zTestMoments._check_ew)TTTNT)NF):rD   rE   rF   rJ   r@  rD  rH  rI  r   r   rK  rL  rP  rS  rT  rV  rW  rX  r]  r^  r_  r`  ra  rY   r   r   ri  rp  r8   rl   rt  ru  rv  ry  r   r   rz  r{  r  r  r  r  r  r  r  rB  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r?     sx   


  		  
 7
r?  c               @   s  e Zd Zeddgddgddgddggddgdeddgddgddgddggddgdeddgddgddgddggddgdeddgddgddgddggddgdeddgddgddgddggd	dgdeddgddgddgddggd
dgdeddgddgddgddggddgdeddgd	dgddgdd	ggdd
gdeddgddgddgdd	ggdd	gdeddgddgddgdd	ggd	dgdg
ZedddgdddgdddgdddggdddgdZeddddgZdd Ze	j
ddd dd gdd Ze	j
ddd dd dd dd d d d!d gd"d# Ze	j
dd$d d%d d&d d'd d(d d)d gd*d+ Ze	j
dd,d d-d d.d d/d d0d d1d gd2d3 Ze	j
dd4d d5d d6d d7d d8d d9d gd:d; Ze	j
dd<d d=d d>d d?d d@d dAd gdBdC ZdS )DTestPairwiserT   r   r3   rK   r   r   )r6   rW   g      ?g        g       @g      @g      @g       @XNrM   YZc             C   s(   |  j}|  j}tj||dd d S )NF)Zcheck_dtype)dropnard  r   assert_numpy_array_equal)rB   rn   ro   r   r   r   comparey  s    

zTestPairwise.comparer   c             C   s   |   S )N)r   )r   r   r   r   ra     s    zTestPairwise.<lambda>c             C   s   |   S )N)corr)r   r   r   r   ra     s    c                s    fdd| j D }x8t| j |D ](\}}t|j|j t|j|j q"W x,t|D ] \}}|dkrX| ||d  qXW d S )Nc                s   g | ]} |qS r   r   )r   r]   )r   r   r   r    s    z-TestPairwise.test_no_flex.<locals>.<listcomp>r   )df1sr	   r   rO   r5   r6   	enumerater  )rB   r   resultsr]   rn   r   r   )r   r   test_no_flex  s    zTestPairwise.test_no_flexc             C   s   |   jddS )NT)pairwise)r   r   )r   r   r   r   ra     s    c             C   s   |   jddS )NT)r  )r   r  )r   r   r   r   ra     s    c             C   s   | j ddjddS )NrM   )rL   T)r  )rN   r   )r   r   r   r   ra     s    c             C   s   | j ddjddS )NrM   )rL   T)r  )rN   r  )r   r   r   r   ra     s    c             C   s   | j ddjddS )NrM   )r  T)r  )r  r   )r   r   r   r   ra     s    c             C   s   | j ddjddS )NrM   )r  T)r  )r  r  )r   r   r   r   ra     s    c             C   s   g }xtt | jD ]f\}}||}tj|jjd |jdd tt|jjd t|j	  t|j|j |
| qW x,t |D ] \}}|dkr| ||d  qW d S )Nr   F)r  r3   )r  r  r   rO   r5   levelsr  r   r6   uniquer   r  )rB   r   r  r   r]   rn   r   r   r   test_pairwise_with_self  s    z$TestPairwise.test_pairwise_with_selfc             C   s   |   jddS )NF)r  )r   r   )r   r   r   r   ra     s    c             C   s   |   jddS )NF)r  )r   r  )r   r   r   r   ra     s    c             C   s   | j ddjddS )NrM   )rL   F)r  )rN   r   )r   r   r   r   ra     s    c             C   s   | j ddjddS )NrM   )rL   F)r  )rN   r  )r   r   r   r   ra     s    c             C   s   | j ddjddS )NrM   )r  F)r  )r  r   )r   r   r   r   ra     s    c             C   s   | j ddjddS )NrM   )r  F)r  )r  r  )r   r   r   r   ra     s    c                s    fdd| j D }x8t| j |D ](\}}t|j|j t|j|j q"W x,t|D ] \}}|dkrX| ||d  qXW d S )Nc                s   g | ]} |qS r   r   )r   r]   )r   r   r   r    s    z;TestPairwise.test_no_pairwise_with_self.<locals>.<listcomp>r   )r  r	   r   rO   r5   r6   r  r  )rB   r   r  r]   rn   r   r   )r   r   test_no_pairwise_with_self  s    
z'TestPairwise.test_no_pairwise_with_selfc             C   s   |   j|ddS )NT)r  )r   r   )r   yr   r   r   ra     s    c             C   s   |   j|ddS )NT)r  )r   r  )r   r  r   r   r   ra     s    c             C   s   | j ddj|ddS )NrM   )rL   T)r  )rN   r   )r   r  r   r   r   ra     s    c             C   s   | j ddj|ddS )NrM   )rL   T)r  )rN   r  )r   r  r   r   r   ra     s    c             C   s   | j ddj|ddS )NrM   )r  T)r  )r  r   )r   r  r   r   r   ra     s    c             C   s   | j ddj|ddS )NrM   )r  T)r  )r  r  )r   r  r   r   r   ra     s    c                s    fddj D }xVtj |D ]F\}}tj|jjd |jdd tt|jjd tjj	
  q$W x,t|D ] \}}|dkrx||d  qxW d S )Nc                s   g | ]} |j qS r   )df2)r   r]   )r   rB   r   r   r    s    z9TestPairwise.test_pairwise_with_other.<locals>.<listcomp>r   F)r  r3   )r  r	   r   rO   r5   r  r  r   r  r6   r  r  r  )rB   r   r  r]   rn   r   r   )r   rB   r   test_pairwise_with_other  s    
z%TestPairwise.test_pairwise_with_otherc             C   s   |   j|ddS )NF)r  )r   r   )r   r  r   r   r   ra     s    c             C   s   |   j|ddS )NF)r  )r   r  )r   r  r   r   r   ra     s    c             C   s   | j ddj|ddS )NrM   )rL   F)r  )rN   r   )r   r  r   r   r   ra     s    c             C   s   | j ddj|ddS )NrM   )rL   F)r  )rN   r  )r   r  r   r   r   ra     s    c             C   s   | j ddj|ddS )NrM   )r  F)r  )r  r   )r   r  r   r   r   ra     s    c             C   s   | j ddj|ddS )NrM   )r  F)r  )r  r  )r   r  r   r   r   ra     s    c          
      s    fddj D }xtj |D ]\}}|d k	rtdd2 tdt |jjj}|j	jj	}W d Q R X t
|j| t
|j	| q$tjtdd  |j W d Q R X tjtdd  j| W d Q R X q$W d S )	Nc                s$   g | ]}|j jr |jnd qS )N)r6   Z	is_uniquer  )r   r]   )r   rB   r   r   r    s   z<TestPairwise.test_no_pairwise_with_other.<locals>.<listcomp>T)rw   rx   z'arg1' columns are not unique)rX   z'arg2' columns are not unique)r  r	   r   r   r   rx  r5   unionr  r6   r   rO   rY   rZ   r   )rB   r   r  r]   rn   Zexpected_indexZexpected_columnsr   )r   rB   r   test_no_pairwise_with_other  s     



z(TestPairwise.test_no_pairwise_with_otherc             C   s   |   |S )N)r   r   )r   r  r   r   r   ra     s    c             C   s   |   |S )N)r   r  )r   r  r   r   r   ra     s    c             C   s   | j dd|S )NrM   )rL   )rN   r   )r   r  r   r   r   ra     s    c             C   s   | j dd|S )NrM   )rL   )rN   r  )r   r  r   r   r   ra     s    c             C   s   | j dd|S )NrM   )r  )r  r   )r   r  r   r   r   ra     s    c             C   s   | j dd|S )NrM   )r  )r  r  )r   r  r   r   r   ra     s    c                s    fddj D  fddj D  }x8tj |D ](\}}t|j|j t|j|j q:W x,t|D ] \}}|dkrp||d  qpW d S )Nc                s   g | ]} |j qS r   )r   )r   r]   )r   rB   r   r   r    s    z:TestPairwise.test_pairwise_with_series.<locals>.<listcomp>c                s   g | ]} j |qS r   )r   )r   r]   )r   rB   r   r   r    s    r   )r  r	   r   rO   r5   r6   r  r  )rB   r   r  r]   rn   r   r   )r   rB   r   test_pairwise_with_series  s    
z&TestPairwise.test_pairwise_with_series)rD   rE   rF   r   r  r  r   r   r  rY   r   r   r  r  r  r  r  r  r   r   r   r   r  d  sl   &&&
&&&

 	"r  c                 sD   dd   fdd} dd dd   |   }fd	d
|D S )Nc               S   s  t  t tjgt tjtjgt dgt tjdgt dtjgt ddgt ddgt ddgt ddddtjtjtjddtjtjgt tjdddtjtjtjddtjtjgt tjtjddtjtjtjddtjtjgt tjdtjddddtjtjddd	d
dgt tjdtjddddtjtjddd	d
dgt ddtjddddtjtjddd	d
dgt ddtjddddtjtjddd	d
dgt tdt tdddgS )Ng      @g      ?g       @g      @g      @g      @g      @g      (@g      *@g      ,@g      .@g        g      "@r   r1   r   r  )r   r8   rl   r   r   r   r   r   create_series  s2    




z/_create_consistency_data.<locals>.create_seriesc                  s~   t  t dgdt ddgdt ddgdt tddt tddt tdddddd	d	gdgd
d   D  S )Nr   )r6   r   r   )rK   rT   rj  )rK   rK   c   r#  c             S   s   g | ]}t |qS r   )r   )r   r   r   r   r   r  (  s    zG_create_consistency_data.<locals>.create_dataframes.<locals>.<listcomp>)r   r8   r@   r  r   )r  r   r   create_dataframes  s    
z3_create_consistency_data.<locals>.create_dataframesc             S   s"   | j  }tt|t| dkS )Nr3   )rd  ravelrO  setr   )r   rd  r   r   r   is_constant*  s    
z-_create_consistency_data.<locals>.is_constantc             S   s   |     S )N)r   rN  )r   r   r   r   no_nans.  s    z)_create_consistency_data.<locals>.no_nansc                s   g | ]}| ||fqS r   r   )r   r   )r  r  r   r   r  4  s    z,_create_consistency_data.<locals>.<listcomp>r   )r  r   r   )r  r  r  r   _create_consistency_data  s    r  c              c   sT   xNdD ]F} x@ddddd| hD ],}|r.|| kr.qxdD ]}| ||fV  q4W qW qW d S )N)r3   rT   rM   r   r1   r   r3   rT   rM   r   )FTr   )rL   r   r   r   r   r   _rolling_consistency_cases:  s    

r  c                   s  e Zd Zdd ddfdd ddfdd ddfd	d dd
fdd ddfdd ddfdd ddfdd ddfdd ddfdd ddfejddfejddfejdd
fejddfdd ddfdd ddfejddfgZ	ej
ddfejddfejdd
fejddfdd ddfdd ddfejddfgZ fddZdd Zdd d!Zejjejd"d#dd$d%d&gejd'd(d)gejd*d(d)gd+d, Zejjejd"d#dd$d%d&gd-d. Zejjejd/ee d0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zejd:e d;d<d= Z!d>d? Z"d@dA Z#dBdC Z$ejdDddgdEdF Z%dGdH Z&dIdJ Z'dKdL Z(dMdN Z)dOdP Z*dQdR Z+dSdT Z,dUdV Z-dWdX Z.dYdZ Z/d[d\ Z0d]d^ Z1d_d` Z2dadb Z3dcdd Z4dedf Z5ejdgdhd did djd dkd dld dmd dnd dod dpd dqd drd dsd dtd dud dvd gdwdx Z6dydz Z7d{d| Z8d}d~ Z9dd Z:dd Z;dd Z<dd Z=dd Z>dd Z?ejjdd
ejfdejfdej
fdejfgd
dddgddd Z@dd ZAdddZBdd ZCdd ZDdd ZEdd ZFdd ZGdd ZH  ZIS )TestMomentsConsistencyc             C   s   t |  S )N)r   r   )r  r   r   r   ra   E  s    zTestMomentsConsistency.<lambda>Nr   c             C   s   t |  S )N)r   r   )r  r   r   r   ra   F  s    r   c             C   s   t |  S )N)r   r   )r  r   r   r   ra   G  s    r   c             C   s   t |  S )N)r   rb   )r  r   r   r   ra   H  s    rb   c             C   s   t |  S )N)r   rt   )r  r   r   r   ra   I  s    rt   c             C   s   t |  S )N)r   ru   )r  r   r   r   ra   J  s    r3   ru   c             C   s   t | t | S )N)r   r   )r  r   r   r   ra   K  s    r   c             C   s   t | t | S )N)r   r  )r  r   r   r   ra   L  s    r  c             C   s   t |  S )N)r   r   )r  r   r   r   ra   M  s    r   c             C   s   t |  S )N)r   r  )r  r   r   r   ra   V  s    r  c             C   s   t j| ddS )Nr3   )r   )r8   Znanstd)r  r   r   r   ra   [  s    c             C   s   t j| ddS )Nr3   )r   )r8   Znanvar)r  r   r   r   ra   \  s    c             C   s   t j| ddS )Nr3   )r   )r8   ru   )r  r   r   r   ra   d  s    c             C   s   t j| ddS )Nr3   )r   )r8   r   )r  r   r   r   ra   e  s    c                s   t t|   t| _d S )N)superr  rC   _consistency_datar   )rB   )	__class__r   r   rC   i  s    z#TestMomentsConsistency._create_datac             C   s   |    d S )N)rC   )rB   rI   r   r   r   rJ   m  s    z#TestMomentsConsistency.setup_methodc       *      C   s  dd }x| j D ]\}}}||}||}|rJ||}t||d |||}|rt|trj| n
|  }|tj }|||t|dk< t|| tj|d d < t|| |r|	r|r||}|	|}||}t|||  x|
|	|f|||fgD ]\}}}||}||}|dk   r0t	|dk   rFt	|rv|||}|dk   rlt	t|| t|||  ||	kr||| }t||||   |r|dk  rt	|tj }d||t|dk< ||krtj||dk < t|| t|trx| j D ]\} }}|
 | 
 s:q||| }!|| |}"t|!|" |r||| }#|| |}$t|#|$ |||  }%|| }&t|#d|%| |&   || }'t|!|#||'   ||kr|| }(|||  })t|#|)||(   qW qW qW d S )	Nc             S   s   | j  }t|t|  S )N)rd  r  r  r   tolist)r   rd  r   r   r   _non_null_valuesu  s    
zJTestMomentsConsistency._test_moments_consistency.<locals>._non_null_valuesr   r3   r   g        rT   g      ?)r   r   r   r   r   r   r8   rl   r  rQ   r   Zequals)*rB   r   r   rt   	mock_meanr  var_unbiasedstd_unbiasedcov_unbiased
var_biased
std_biased
cov_biasedvar_debiasing_factorsr  r   r  r  Zcount_xZmean_xro   Zcorr_x_xr$  Zvar_unbiased_xZvar_biased_xZvar_debiasing_factors_xru   r   r   Zvar_xZstd_xZcov_x_xZmean_x2r  Zcorr_x_yZcorr_y_xZcov_x_yZcov_y_xZvar_x_plus_yZvar_yZstd_yZmean_yZmean_x_times_yr   r   r   _test_moments_consistencyp  s    

















z0TestMomentsConsistency._test_moments_consistencyr   r   rT   rM   r   r  TFr  c                s   fddfddfdd d| j dd	 fd
d	 fdd	fdd	fdd	fdd	fdd	fdd	fdd	fdd	fdd	d d S )Nc       	         sl  t tr`tjs$tjjdS t fddtjD dd}j|_j|_|S ttj	jd}dd  }r
   dd	|
 < nƈ rxttD ]0}j| j| krtdd|  ||j|< qW n~d
}d}xtttD ]d}j| j| kr |dkr0d|j|< n || td| ||  |j|< ||j| 7 }|}q W |S )N)r5   r6   c                s.   g | ]&\}} j d d |f dqS )N)r  r  r  )rs  )r   r   _)_weightsr  r  r  r   r   r   r    s   zQTestMomentsConsistency.test_ewm_consistency.<locals>._weights.<locals>.<listcomp>r3   )rs   )r5   g      ?F)r  r  r  g        r   )r   r   rO  r6   r5   r   r  r   r8   rl   r   r   Ziatpow)	r   r  r  r  r   r  r   Zsum_wtsZprev_i)r  )r  r  r  r   r   r    s:    



z=TestMomentsConsistency.test_ewm_consistency.<locals>._weightsc       	         sZ    | |||d}|  jdd}||   jdd}|| }|| }tj||dk< || S )N)r  r  r  r  )rI   g        )r  r  r8   rl   )	r   r  r  r  weightsZcum_sumZ
cum_sum_sq	numeratordenominator)r  r   r   _variance_debiasing_factors	  s    zPTestMomentsConsistency.test_ewm_consistency.<locals>._variance_debiasing_factorsc                sX    | |||d}|  | | jdd}tj||   |rNt|dndk < |S )N)r  r  r  r  )rI   r3   )	r  r  divider  r8   rl   r   r   r   )r   r  r   r  r  r  rn   )r  r   r   _ewma	  s
    $z:TestMomentsConsistency.test_ewm_consistency.<locals>._ewmag      @c             S   s   |    S )N)r   r   )r   r   r   r   ra    	  s    z=TestMomentsConsistency.test_ewm_consistency.<locals>.<lambda>c                s   | j  d S )N)r  r   r  r  )r  rt   )r   )r  r  r  r   r   r   ra   !	  s   c                s    | dS )N)r  r   r  r  r   )r   )r  r  r  r  r   r   r   ra   $	  s   c                s   | j  d|S )N)r  r   r  r  )r  r  )r   r  )r  r  r  r   r   r   ra   (	  s   c                s   | j  djddS )N)r  r   r  r  F)r  )r  r   )r   )r  r  r  r   r   r   ra   +	  s    c                s   | j  djddS )N)r  r   r  r  F)r  )r  ru   )r   )r  r  r  r   r   r   ra   /	  s    
c                s   | j  dj|ddS )N)r  r   r  r  F)r  )r  r   )r   r  )r  r  r  r   r   r   ra   3	  s    
c                s   | j  djddS )N)r  r   r  r  T)r  )r  r   )r   )r  r  r  r   r   r   ra   7	  s    
c                s   | j  djddS )N)r  r   r  r  T)r  )r  ru   )r   )r  r  r  r   r   r   ra   ;	  s   c                s   | j  dj|ddS )N)r  r   r  r  T)r  )r  r   )r   r  )r  r  r  r   r   r   ra   >	  s    
c                s    | dS )N)r  r  r  r   )r   )r  r  r  r  r   r   ra   B	  s    )r   r   rt   r  r  r  r  r  r  r  r  r  )r  )rB   r   r  r  r   )r  r  r  r  r  r  r   r   test_ewm_consistency  s"    #	z+TestMomentsConsistency.test_ewm_consistencyc                sp  t  \ t jddtd | j dd  fdd fdd fdd fd	d fd
d fdd fdd fdd fdddd d x| jD ]\}}}| j}|r| j| j }x|D ]\}}}t|j	 d|}	|r d k	r |k rq|dkr|	 }
|j	ddj
|dd}n2|dkr,|	dd}
n|	 }
|j	 dj
|dd}|dkrt|
| qW qW W d Q R X d S )Nrx   z.*(empty slice|0 for slice).*)rw  r9  c             S   s   |    S )N)r   r   )r   r   r   r   ra   U	  s    zCTestMomentsConsistency.test_expanding_consistency.<locals>.<lambda>c                s   | j  d S )N)r   )r   rt   )r   )r   r   r   ra   V	  s   c                s   | j  d |     S )N)r   )r   rb   r   )r   )r   r   r   ra   X	  s   c                s   | j  d|S )N)r   )r   r  )r   r  )r   r   r   ra   Z	  s   c                s   | j  d S )N)r   )r   r   )r   )r   r   r   ra   \	  s   c                s   | j  d S )N)r   )r   ru   )r   )r   r   r   ra   ^	  s   c                s   | j  d|S )N)r   )r   r   )r   r  )r   r   r   ra   `	  s   c                s   | j  djddS )N)r   r   )r   )r   r   )r   )r   r   r   ra   b	  s   c                s   | j  djddS )N)r   r   )r   )r   ru   )r   )r   r   r   ra   d	  s   c                s   | j  dj|ddS )N)r   r   )r   )r   r   )r   r  )r   r   r   ra   f	  s   c             S   s&   |    |    d dtj S )Ng      ?g        )r   r   replacer8   rl   )r   r   r   r   ra   h	  s    
)r   r   rt   r  r  r  r  r  r  r  r  r  )r   r   r   T)r   r"   )r   r  F)r  )rb   prod)r   r   r   rx  r  r   base_functionsno_nan_functionsr   r   r   r   )rB   r   r   r  r  	functionsr   require_min_periodsrP   Zexpanding_fZexpanding_f_resultZexpanding_apply_f_resultr   )r   r   test_expanding_consistencyF	  sR    











z1TestMomentsConsistency.test_expanding_consistencyzwindow,min_periods,centerc                s  t   t jddtd | j fdd fdd fdd fdd fd	d fd
d fdd fdd fdd fdd fddd x| jD ]\}}}| j}|r| j| j }x|D ]\}}	}
t|j	 d|
}|	r(d k	r(|	k r(q|
dkrT| }|j	d dj
|dd}n6|
dkrj|dd}n| }|j	 dj
|dd}|
dkrt|| qW qW W d Q R X d S )Nrx   z.*(empty slice|0 for slice).*)rw  r9  c                s   | j  d S )N)rL   r   )rN   r   )r   )r   rL   r   r   ra   	  s    zATestMomentsConsistency.test_rolling_consistency.<locals>.<lambda>c                s   | j  d S )N)rL   r   r   )rN   rt   )r   )r   r   rL   r   r   ra   	  s    c                s*   | j  d | j  d S )N)rL   r   r   )rN   rb   r  r   )r   )r   r   rL   r   r   ra   	  s    c                s   | j  d|S )N)rL   r   r   )rN   r  )r   r  )r   r   rL   r   r   ra   	  s    c                s   | j  d S )N)rL   r   r   )rN   r   )r   )r   r   rL   r   r   ra   	  s    c                s   | j  d S )N)rL   r   r   )rN   ru   )r   )r   r   rL   r   r   ra   	  s    c                s   | j  d|S )N)rL   r   r   )rN   r   )r   r  )r   r   rL   r   r   ra   	  s    c                s   | j  djddS )N)rL   r   r   r   )r   )rN   r   )r   )r   r   rL   r   r   ra   	  s    c                s   | j  djddS )N)rL   r   r   r   )r   )rN   ru   )r   )r   r   rL   r   r   ra   	  s    c                s   | j  dj|ddS )N)rL   r   r   r   )r   )rN   r   )r   r  )r   r   rL   r   r   ra   	  s    c                s4   | j  d | j  d d dtjS )N)rL   r   g      ?g        )rN   r   r  r  r8   rl   )r   )r   rL   r   r   ra   	  s    )r   r   rt   r  r  r  r  r  r  r  r  r  )rL   r   r   r   r   )rL   r   r   T)r   r"   )r   r  F)r  )rb   r  )r   r   r   rx  r  r   r  r  r   rN   r   r   )rB   rL   r   r   r   r  r  r  r   r  rP   Z	rolling_fZrolling_f_resultZrolling_apply_f_resultr   )r   r   rL   r   test_rolling_consistency	  sX    	




z/TestMomentsConsistency.test_rolling_consistencyc          	   C   sZ   | j }|tt| }|jddd|}t|d t|dd  |dd  d  d S )Nrk  rj  )rL   r   r   i)r   r3   )r>   r   rO  rN   r   r   r&  r8   )rB   rU   rV   rn   r   r   r   test_rolling_cov	  s    z'TestMomentsConsistency.test_rolling_covc             C   s   | j ddddd d S )NrN   r   r   rK   )rL   r   )_check_pairwise_moment)rB   r   r   r   test_rolling_cov_pairwise	  s    z0TestMomentsConsistency.test_rolling_cov_pairwisec          	   C   s   | j }|tt| }|jddd|}t|d t|dd  |dd  d  t	 }t	 }tj
|d d< tj
|d d< |jt|d	d|}t|d || d S )
Nrk  rj  )rL   r   r   i)r   r3   rK   r   r3   )r>   r   rO  rN   r  r   r&  r8   ZcorrcoefZmakeTimeSeriesrl   )rB   rU   rV   rn   r   r   r   r   r   test_rolling_corr 
  s    ,z(TestMomentsConsistency.test_rolling_corrc             C   s   | j ddddd d S )NrN   r  r   rK   )rL   r   )r  )rB   r   r   r   test_rolling_corr_pairwise
  s    
z1TestMomentsConsistency.test_rolling_corr_pairwiserL   r   c             C   sD   t td}t td}|j|dj|d  s@t	d S )Nr1   )rL   )other)
r|   r   r8   r  r@   rN   r  r   rN  rQ   )rB   rL   r   r   r   r   r   $test_rolling_corr_with_zero_variance
  s    z;TestMomentsConsistency.test_rolling_corr_with_zero_variancec                sj   d fdd	}|| j }|jtd dfdf }|jd|_|| j d | j d }tj||dd d S )Nc                s   t t |  f |S )N)r   )r   r  )dispatchr  rP   r   r   r  
  s    zATestMomentsConsistency._check_pairwise_moment.<locals>.get_resultr3   rK   F)r  )N)rA   locslicer5   Z	droplevelr   r   )rB   r  rP   r  r  rn   ro   r   )r  r  rP   r   r  
  s    
z-TestMomentsConsistency._check_pairwise_momentc             C   s   t ttjddd  d S )NrK   rf   )rY   rZ   rq   r   Z_flex_binary_moment)rB   r   r   r   test_flex_binary_moment&
  s    z.TestMomentsConsistency.test_flex_binary_momentc          
   C   s   t tddgddgddgddgd	d
gddgg}|d jddd|d }tdd |D sdtxvtdD ]j}t tj	dd}|d jddd|d }ytdd |D stW qn tk
r   t
| Y qnX qnW d S )NgF$?g)?gT5?g?'N?gFr1?g+	C-?gR	`?g1:b%?g9T!X4!?gXS_?gS= ?g\+Lt?r   rK   T)r   r3   c             s   s"   | ]}t t |d kV  qdS )r3   N)r8   r  
nan_to_num)r   r   r   r   r   	<genexpr>3
  s    z:TestMomentsConsistency.test_corr_sanity.<locals>.<genexpr>r   r   rT   c             s   s"   | ]}t t |d kV  qdS )r3   N)r8   r  r  )r   r   r   r   r   r  :
  s    )r   r8   rG   rN   r  rN  rQ   r   r   rm  print)rB   r]   resr  r   r   r   test_corr_sanity+
  s    z'TestMomentsConsistency.test_corr_sanityrI   c                s   j d tjddj }tj jdd}j fdd}t|| t|| j   tjj	 j
  jd d < tj jdd }t fddj D }t|| d S )Nr3   r   )rL   c                s   t jdd | S )Nr   )rL   )r   rN   )r   )rI   r>   r   r   ra   D
  s   z?TestMomentsConsistency.test_flex_binary_frame.<locals>.<lambda>c                s.   i | ]&}t j| jd d | |qS )r   )rL   )r   rA   rN   )r   k)frame2rI   rB   r   r   r   N
  s   zATestMomentsConsistency.test_flex_binary_frame.<locals>.<dictcomp>)rA   r   rN   r   r   r   r=   r8   r   r   rc  rd  r   )rB   rI   r	  Zres2r$  Zres3r   )r  rI   rB   r>   r   test_flex_binary_frame>
  s    

z-TestMomentsConsistency.test_flex_binary_framec             C   s   |  d d S )Nr   )_check_binary_ew)rB   r   r   r   test_ewmcovR
  s    z"TestMomentsConsistency.test_ewmcovc             C   s   | j ddddd d S )Nr  r   r   rK   )r  r   )r  )rB   r   r   r   test_ewmcov_pairwiseU
  s    z+TestMomentsConsistency.test_ewmcov_pairwisec             C   s   |  d d S )Nr  )r  )rB   r   r   r   test_ewmcorrX
  s    z#TestMomentsConsistency.test_ewmcorrc             C   s   | j ddddd d S )Nr  r  r   rK   )r  r   )r  )rB   r   r   r   test_ewmcorr_pairwise[
  s    z,TestMomentsConsistency.test_ewmcorr_pairwisec                sf   fdd}t tdtdd}|dd  td }tj|d d< tj|dd < |||d	d
d}t|jd d  s~tt|jdd  	 rtxdD ]}|||d	|d}t|jd d  stt|jdd  	 rt|t g t g d|d}t
|t g  |t dgt dgd|d}t
|t tjg qW tjt||tdd	d
d d S )Nc                s   t | j|f| |S )N)r   r  )rU   rV   r  r  )rP   r   r   r   _
  s    z5TestMomentsConsistency._check_binary_ew.<locals>.funcrk  )r5   rT   0   r   ir1   rK   )r   r  )r   r3   rT   r	  g      ?)r   r   r8   r@   r9   rM  rd  rN  rQ   r  r   r   rY   rZ   	Exception)rB   rP   r   rU   rV   rn   r   r   )rP   r   r  ^
  s$    
z'TestMomentsConsistency._check_binary_ewc             C   sz   dd }t tjdd}| jtj|dd }| j||dd}t|| | j||d	did
}t|| d S )Nc             S   s   t | | S )N)r8   rt   )r   constr   r   r   
mean_w_arg
  s    zKTestMomentsConsistency.test_expanding_apply_args_kwargs.<locals>.mean_w_argr1   rM   )r"   g      4@)r1   )r"   argsr  )r"   r  )	r   r8   r   rm  r   r   rt   r   r   )rB   r"   r  r]   ro   rn   r   r   r    test_expanding_apply_args_kwargs
  s    

z7TestMomentsConsistency.test_expanding_apply_args_kwargsc             C   sX   | j  }|tt| d d }| |}|jt|dd|}t|| d S )Nr  r3   )rL   r   )	r>   r  r   rO  r   r  rN   r   r&  )rB   rU   rV   rn   rolling_resultr   r   r   test_expanding_corr
  s
    
z*TestMomentsConsistency.test_expanding_corrc             C   s2   | j   }t|| j jt| j d  d S )N)rL   )r>   r   r   r   r&  rN   rO  )rB   rn   r   r   r   test_expanding_count
  s    z+TestMomentsConsistency.test_expanding_countc             C   s<   | j  d}| j jt| j ddd}t|| d S )Ng      ?r3   )rL   r   )r>   r   rh  rN   rO  r   r&  )rB   rn   r  r   r   r   test_expanding_quantile
  s    z.TestMomentsConsistency.test_expanding_quantilec             C   sT   | j }|tt| d d }| |}|jt|dd|}t|| d S )Nr  r3   )rL   r   )r>   r   rO  r   r   rN   r   r&  )rB   rU   rV   rn   r  r   r   r   test_expanding_cov
  s
    z)TestMomentsConsistency.test_expanding_covc             C   s8   | j   }| j jt| j dd }t|| d S )Nr3   )rL   r   )rA   r   r  rN   rO  r   r   )rB   rn   r  r   r   r   test_expanding_cov_pairwise
  s    z2TestMomentsConsistency.test_expanding_cov_pairwisec             C   s8   | j   }| j jt| j dd }t|| d S )Nr3   )rL   r   )rA   r   r  rN   rO  r   r   )rB   rn   r  r   r   r   test_expanding_corr_pairwise
  s    z3TestMomentsConsistency.test_expanding_corr_pairwisec             C   s   t dddgdddgd}t ddgddgd}| |}t d d dg}t|| t dd dgdddgd}| |}t|| t ddd	gdddgd}t dd
d	gdddgd}| |}t d d d dg}t|| d S )Nr3   rT   rM   r   )r5   g       @r   r   r   rg   g      @)r   r   r   r   r   )rB   r  r   rn   ro   s2ar   r   r   test_expanding_cov_diff_index
  s    z4TestMomentsConsistency.test_expanding_cov_diff_indexc             C   s   t dddgdddgd}t ddgddgd}| |}t d d dg}t|| t dd dgdddgd}| |}t|| t ddd	gdddgd}t dd
d	gdddgd}| |}t d d d dg}t|| d S )Nr3   rT   rM   r   )r5   g      ?r   r   r   rg   )r   r   r  r   r   )rB   r  r   rn   ro   r   r   r   r   test_expanding_corr_diff_index
  s    z5TestMomentsConsistency.test_expanding_corr_diff_indexc             C   s   t dddgdddgd}t ddgddgd}|jddd|}t d d dg}t|| t dd dgdddgd}|jddd|}t|| d S )Nr3   rT   rM   r   )r5   )rL   r   g       @)r   rN   r   r   r   )rB   r  r   rn   ro   r   r   r   r   test_rolling_cov_diff_length
  s    z3TestMomentsConsistency.test_rolling_cov_diff_lengthc             C   s   t dddgdddgd}t ddgddgd}|jddd|}t d d dg}t|| t dd dgdddgd}|jddd|}t|| d S )Nr3   rT   rM   r   )r5   )rL   r   g      ?)r   rN   r  r   r   )rB   r  r   rn   ro   r   r   r   r   test_rolling_corr_diff_length
  s    z4TestMomentsConsistency.test_rolling_corr_diff_lengthr   c             C   s   | j dddj| ddS )Nr   rK   )rL   r   F)r  )rN   r   )r   r   r   r   ra     s   c             C   s   | j dddj| ddS )Nr   rK   )rL   r   F)r  )rN   r  )r   r   r   r   ra     s   c             C   s   | j ddd S )Nr   rK   )rL   r   )rN   r   )r   r   r   r   ra     s    c             C   s   | j ddd S )Nr   rK   )rL   r   )rN   r   )r   r   r   r   ra     s    c             C   s   | j ddd S )Nr   rK   )rL   r   )rN   rb   )r   r   r   r   ra     s    c             C   s   | j ddd S )Nr   rK   )rL   r   )rN   rt   )r   r   r   r   ra     s    c             C   s   | j ddd S )Nr   rK   )rL   r   )rN   ru   )r   r   r   r   ra   	  s    c             C   s   | j ddd S )Nr   rK   )rL   r   )rN   r   )r   r   r   r   ra   
  s    c             C   s   | j ddd S )Nr   rK   )rL   r   )rN   r  )r   r   r   r   ra     s    c             C   s   | j ddd S )Nr   rK   )rL   r   )rN   r  )r   r   r   r   ra     s    c             C   s   | j dddjddS )Nr   rK   )rL   r   g      ?)rh  )rN   rh  )r   r   r   r   ra     s   c             C   s   | j ddd S )Nr   rK   )rL   r   )rN   r  )r   r   r   r   ra     s    c             C   s   | j dddjtddS )Nr   rK   )rL   r   F)r"   )rN   r   rb   )r   r   r   r   ra     s   c             C   s   | j dddjtddS )Nr   rK   )rL   r   T)r"   )rN   r   rb   )r   r   r   r   ra     s   c             C   s   | j dddd S )Nr   r   rK   )r   rL   r   )rN   rt   )r   r   r   r   ra     s   c             C   s   t td}t tj|jd}tddgddgddgdd	ggd
dgd}ttj|j|jd}y,||}t|| ||}t	|| W n t
k
r   td Y nX d S )Nr   )r5   r3   rK   rM   rT   rg   r   r   rU   rV   )r6   )r5   r6   zscipy not available)r   r   r8   rl   r5   r   r6   r   r   r   ImportErrorrY   r>  )rB   r   r   
s_expectedr]   df_expecteds_result	df_resultr   r   r   +test_rolling_functions_window_non_shrinkage
  s    (zBTestMomentsConsistency.test_rolling_functions_window_non_shrinkagec             C   s   t ddgddgddgddggtdd	gd
dttdddd}t tdd	gd
dtjj|j|jgdd
gddd}dd dd g}x |D ]}||}t	|| qW d S )Nr3   rK   rM   rT   rg   r   r   rU   rV   re   )rP   r   bar)r6   r5   )r   r   )r6   r5   r   c             S   s   | j dddj| ddS )Nr   rK   )rL   r   T)r  )rN   r   )r   r   r   r   ra   3  s   z[TestMomentsConsistency.test_rolling_functions_window_non_shrinkage_binary.<locals>.<lambda>c             S   s   | j dddj| ddS )Nr   rK   )rL   r   T)r  )rN   r  )r   r   r   r   ra   5  s   )
r   r   r   r|   r}   r~   r5   r6   r   r   )rB   r]   r'  r  r   r)  r   r   r   2test_rolling_functions_window_non_shrinkage_binary(  s    


zITestMomentsConsistency.test_rolling_functions_window_non_shrinkage_binaryc              C   s`  t  }|}t }|}tdgd}|d d|d< |}dd dd dd dd d	d d
d dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd d d d!d d"d d#d g}xf|D ]^}y@||}	t|	| ||}
t|
| ||}t|| W q tk
rV   wY qX qW d S )$Nr   )r6   r   c             S   s   |    S )N)r   r   )r   r   r   r   ra   E  s    zJTestMomentsConsistency.test_moment_functions_zero_length.<locals>.<lambda>c             S   s   | j ddj| ddS )NrK   )r   F)r  )r   r   )r   r   r   r   ra   F  s   c             S   s   | j ddj| ddS )NrK   )r   F)r  )r   r  )r   r   r   r   ra   H  s   c             S   s   | j dd S )NrK   )r   )r   r   )r   r   r   r   ra   J  s    c             S   s   | j dd S )NrK   )r   )r   r   )r   r   r   r   ra   K  s    c             S   s   | j dd S )NrK   )r   )r   rb   )r   r   r   r   ra   L  s    c             S   s   | j dd S )NrK   )r   )r   rt   )r   r   r   r   ra   M  s    c             S   s   | j dd S )NrK   )r   )r   ru   )r   r   r   r   ra   N  s    c             S   s   | j dd S )NrK   )r   )r   r   )r   r   r   r   ra   O  s    c             S   s   | j dd S )NrK   )r   )r   r  )r   r   r   r   ra   P  s    c             S   s   | j dd S )NrK   )r   )r   r  )r   r   r   r   ra   Q  s    c             S   s   | j dddS )NrK   )r   g      ?)r   rh  )r   r   r   r   ra   R  s    c             S   s   | j dd S )NrK   )r   )r   r  )r   r   r   r   ra   S  s    c             S   s   | j ddjtddS )NrK   )r   F)r"   )r   r   rb   )r   r   r   r   ra   T  s   c             S   s   | j ddjtddS )NrK   )r   T)r"   )r   r   rb   )r   r   r   r   ra   V  s   c             S   s   | j dd S )Nr   )rL   )rN   r   )r   r   r   r   ra   X  s    c             S   s   | j dddj| ddS )Nr   rK   )rL   r   F)r  )rN   r   )r   r   r   r   ra   Y  s   c             S   s   | j dddj| ddS )Nr   rK   )rL   r   F)r  )rN   r  )r   r   r   r   ra   [  s   c             S   s   | j ddd S )Nr   rK   )rL   r   )rN   r   )r   r   r   r   ra   ]  s    c             S   s   | j ddd S )Nr   rK   )rL   r   )rN   r   )r   r   r   r   ra   ^  s    c             S   s   | j ddd S )Nr   rK   )rL   r   )rN   rb   )r   r   r   r   ra   _  s    c             S   s   | j ddd S )Nr   rK   )rL   r   )rN   rt   )r   r   r   r   ra   `  s    c             S   s   | j ddd S )Nr   rK   )rL   r   )rN   ru   )r   r   r   r   ra   a  s    c             S   s   | j ddd S )Nr   rK   )rL   r   )rN   r   )r   r   r   r   ra   b  s    c             S   s   | j ddd S )Nr   rK   )rL   r   )rN   r  )r   r   r   r   ra   c  s    c             S   s   | j ddd S )Nr   rK   )rL   r   )rN   r  )r   r   r   r   ra   d  s    c             S   s   | j ddddS )Nr   rK   )rL   r   g      ?)rN   rh  )r   r   r   r   ra   e  s   c             S   s   | j ddd S )Nr   rK   )rL   r   )rN   r  )r   r   r   r   ra   g  s    c             S   s   | j dddjtddS )Nr   rK   )rL   r   F)r"   )rN   r   rb   )r   r   r   r   ra   h  s   c             S   s   | j dddjtddS )Nr   rK   )rL   r   T)r"   )rN   r   rb   )r   r   r   r   ra   j  s   c             S   s   | j dddd S )Nr   r   rK   )r   rL   r   )rN   rt   )r   r   r   r   ra   l  s   )r   r   r   r   r   r   r%  )rB   r   r&  df1df1_expectedr  df2_expectedr  r   r(  
df1_result
df2_resultr   r   r   !test_moment_functions_zero_length;  s`    

z8TestMomentsConsistency.test_moment_functions_zero_lengthc       	      C   s   t  }|}t tdgddtg ddd}|d d|d< t tj|j|jgtg d}t tjj|j|jgddgdtdgdddd	}d
d dd dd dd g}x4|D ],}||}t	|| ||}t	|| qW d S )Nr   re   )rP   r+  )r6   r5   r   )r5   r6   )r   )r5   r6   r   c             S   s   | j ddj| ddS )NrK   )r   T)r  )r   r   )r   r   r   r   ra     s   zSTestMomentsConsistency.test_moment_functions_zero_length_pairwise.<locals>.<lambda>c             S   s   | j ddj| ddS )NrK   )r   T)r  )r   r  )r   r   r   r   ra     s   c             S   s   | j dddj| ddS )Nr   rK   )rL   r   T)r  )rN   r   )r   r   r   r   ra     s   c             S   s   | j dddj| ddS )Nr   rK   )rL   r   T)r  )rN   r  )r   r   r   r   ra     s   )
r   r   r   r|   r}   r~   r5   r6   r   r   )	rB   r-  r.  r  r/  r  r   r0  r1  r   r   r   *test_moment_functions_zero_length_pairwise~  s,    


zATestMomentsConsistency.test_moment_functions_zero_length_pairwisec       
      C   sn  t ddgddgddggtddgdd	d
}t ddgddggddgtddgdd	d}t ddgd d gddggtddgdd	d
}t ddgddggddgtddgdd	d}| j|ddjd }| j|ddjd }| j|ddjd }| j|ddjd }t ddgddggtddgdd	tddgdd	d}	t||	 t||	 t||	 t||	 d S )Nr3   rK   rM   rT   rg   rU   rV   re   )rP   )r6   r   )r5   r6   rf   r  r  T)r  g      g      g      g      $)r6   r5   )r   r   r   r   r  r   r   )
rB   r-  df1ar  df2ar  r  result3result4ro   r   r   r   'test_expanding_cov_pairwise_diff_length  s*    z>TestMomentsConsistency.test_expanding_cov_pairwise_diff_lengthc       
      C   sn  t ddgddgddggddgttdddd	}t ddgddggtd
dgddddgd}t ddgd d gddggddgttdddd	}t ddgddggtd
dgddddgd}| j|ddjd }| j|ddjd }| j|ddjd }| j|ddjd }t ddgddggddgtddgd	}	t||	 t||	 t||	 t||	 d S )Nr3   rT   rM   r   rU   rV   r+  )rP   )r6   r5   r   )r5   r6   rK   rf   r  r  T)r  g      )r   r   r   r   r  r  r   r   )
rB   r-  r4  r  r5  r  r  r6  r7  ro   r   r   r   (test_expanding_corr_pairwise_diff_length  s.    z?TestMomentsConsistency.test_expanding_corr_pairwise_diff_lengthc             C   s   t tjgd }t dgd }|jdd }t|| t tjd}|jdd }t|| t ddddd	g}t tjtjtjd
dg}|jdd }t|| d S )NrK   r3   )rL   rT   gH"gT,#gsRNj?gm
;?g6ܭ?gA.q?g(?r   )	r   r8   r9   rN   r  r   r   r   r   )rB   all_nanr#  r   ro   r   r   r   test_rolling_skew_edge_cases  s    z3TestMomentsConsistency.test_rolling_skew_edge_casesc             C   s   t tjgd }t dgd }|jdd }t|| t tjd}|jdd }t|| t ddddd	g}t tjtjtjd
dg}|jdd }t|| d S )NrK   r3   )rL   rM   gH"gT,#gsRNj?gm
;?g6ܭ?g8?g_":_@r   )	r   r8   r9   rN   r  r   r   r   r   )rB   r:  r#  r   ro   r   r   r   test_rolling_kurt_edge_cases  s    z3TestMomentsConsistency.test_rolling_kurt_edge_casesc             C   s0   t dgd jdd }t| s,td S )Ng?r  r   )rL   )r   rN   r  r8   rM  rN  rQ   )rB   r   r   r   r    test_rolling_skew_eq_value_fperr  s    z7TestMomentsConsistency.test_rolling_skew_eq_value_fperrc             C   s0   t dgd jdd }t| s,td S )Ng?r  r   )rL   )r   rN   r  r8   rM  rN  rQ   )rB   r   r   r   r    test_rolling_kurt_eq_value_fperr  s    z7TestMomentsConsistency.test_rolling_kurt_eq_value_fperrzfunc,static_comp)Zidsc                s"   d fdd	}| j ||dd d S )Nr3   Fr   c                s   | j |||d}t|  S )N)r   r   rs   )r   r   )r   r   r   rs   r$  )r   r   r   expanding_func  s    
zBTestMomentsConsistency.test_expanding_func.<locals>.expanding_func)r  )r3   Fr   )_check_expanding)rB   r   r  r?  r   )r   r   test_expanding_func  s    z*TestMomentsConsistency.test_expanding_funcc                s   d fdd	}| j |tjdd tg }t|| jdd  d td d d g}|jd	d
jdd  d}tdddg}t|| d S )Nr3   c                s"   | j |d}|jdd  d}|S )N)r   c             S   s   |   S )N)rt   )r   r   r   r   ra     s    zUTestMomentsConsistency.test_expanding_apply.<locals>.expanding_mean.<locals>.<lambda>)r"   )r   r   )r   r   r$  rn   )r"   r   r   expanding_mean  s    zCTestMomentsConsistency.test_expanding_apply.<locals>.expanding_meanF)r  c             S   s   |   S )N)rt   )r   r   r   r   ra   !  s    z=TestMomentsConsistency.test_expanding_apply.<locals>.<lambda>)r"   r   )r   c             S   s   t | S )N)rO  )r   r   r   r   ra   %  s    g      ?g       @g      @)r3   )r@  r8   rt   r   r   r   r   r   )rB   r"   rB  r   r   rn   ro   r   )r"   r   test_expanding_apply  s    z+TestMomentsConsistency.test_expanding_applyc             C   s  || j }t|tst|| j}t|ts0t|| j }t|d || j d d  |rt|j| j	 
  sttttd}	|rZ||	dd}|d d 
  stt|jd ||	d d  ||	dd}t
|jd	 stt|jd
 stttd}
||
dd}t
|d s"tt|d s4t||	dd}||	dd}t|| n&||	}t|jd ||	d d  d S )Nr   r	  rk  r   )r      r   r     r  r1   rK   rM   r   r   r3   )r>   r   r   rQ   rA   r   r   r&  rs  r:   r   rN  r   r   )rB   r   r  rF  r  r  r  r  rn   r   Zser2r  r  r   r   r   r@  )  s2    


z'TestMomentsConsistency._check_expandingc             C   s   dd t ddD }|tddddd tt dd|d	}|d
d }| }tdddddgdd t ddD d	}|d jdd }t	
|| dS )z%Replicate result expected in GH #6297c             S   s   g | ]}t d d|qS )i  r3   )r   )r   r   r   r   r   r  S  s    zBTestMomentsConsistency.test_rolling_max_gh6297.<locals>.<listcomp>r3   rf   i  rM   r   r   )r5   c             S   s   t | S )N)r   )r   r   r   r   ra   X  s    z@TestMomentsConsistency.test_rolling_max_gh6297.<locals>.<lambda>g      ?g       @g      @g      @g      @c             S   s   g | ]}t d d|dqS )i  r3   r   )r   )r   r   r   r   r   r  ]  s    r   )rL   N)r   r   r   r   map
sort_indexr  r   rN   r   r   )rB   indicesr>   ro   r   r   r   r   test_rolling_max_gh6297P  s    z.TestMomentsConsistency.test_rolling_max_gh6297c             C   s\  dd t ddD }|tdddd |tdddd ttt ddd	d
g |d}|dd }| }tdddddgdd t ddD d}|d j	dd }t
|| tdddddgdd t ddD d}|d j	dd }t
|| d}tdddd|gdd t ddD d}|d j	dd }t
|| d S )Nc             S   s   g | ]}t d d|qS )i  r3   )r   )r   r   r   r   r   r  c  s    zDTestMomentsConsistency.test_rolling_max_resample.<locals>.<listcomp>r3   rf   i  rK   rT   r   r   r1   )r5   c             S   s   t | S )N)r   )r   r   r   r   ra   i  s    zBTestMomentsConsistency.test_rolling_max_resample.<locals>.<lambda>g        g      ?g       @g      @g      4@c             S   s   g | ]}t d d|dqS )i  r3   r   )r   )r   r   r   r   r   r  o  s    r   )rL   g      $@c             S   s   g | ]}t d d|dqS )i  r3   r   )r   )r   r   r   r   r   r  u  s    g&@c             S   s   g | ]}t d d|dqS )i  r3   r   )r   )r   r   r   r   r   r  |  s    )r   r   r   r   rm   rF  rG  r  r   rN   r   r   r  rt   )rB   rH  r>   ro   r   r  r   r   r   test_rolling_max_resamplea  s&    z0TestMomentsConsistency.test_rolling_max_resamplec             C   s   dd t ddD }|tdddd |tdddd ttt ddd	d
g |d}|dd }| }tdddddgdd t ddD d}|d j	dd}t
||  d S )Nc             S   s   g | ]}t d d|qS )i  r3   )r   )r   r   r   r   r   r    s    zDTestMomentsConsistency.test_rolling_min_resample.<locals>.<listcomp>r3   rf   i  rK   rT   r   r   r1   )r5   c             S   s   t | S )N)r   )r   r   r   r   ra     s    zBTestMomentsConsistency.test_rolling_min_resample.<locals>.<lambda>g        g      ?g       @g      @g      @c             S   s   g | ]}t d d|dqS )i  r3   r   )r   )r   r   r   r   r   r    s    r   )rL   )r   r   r   r   rm   rF  rG  r  r   rN   r   r   )rB   rH  r>   ro   rR   r   r   r   test_rolling_min_resample  s    z0TestMomentsConsistency.test_rolling_min_resamplec             C   s   dd t ddD }|tdddd |tdddd ttt ddd	d
g |d}|dd }| }tddddd	gdd t ddD d}|d j	dd }t
|| d S )Nc             S   s   g | ]}t d d|qS )i  r3   )r   )r   r   r   r   r   r    s    zGTestMomentsConsistency.test_rolling_median_resample.<locals>.<listcomp>r3   rf   i  rK   rT   r   r   r1   )r5   c             S   s   t | S )N)r   )r   r   r   r   ra     s    zETestMomentsConsistency.test_rolling_median_resample.<locals>.<lambda>g        g      ?g       @g      @c             S   s   g | ]}t d d|dqS )i  r3   r   )r   )r   r   r   r   r   r    s    r   )rL   )r   r   r   r   rm   rF  rG  r  r  rN   r   r   )rB   rH  r>   ro   r   r   r   r   test_rolling_median_resample  s    z3TestMomentsConsistency.test_rolling_median_resamplec             C   sD   d}t tj|jddd  t tj|jddd  d S )Ni N  rT   F)rL   r   )r   r8   r   r   rN   r  )rB   r   r   r   r    test_rolling_median_memory_error  s    z7TestMomentsConsistency.test_rolling_median_memory_errorc             C   s   dd dD }| dd dD  xx|D ]p}ttjd|djdd	 }|jd
 tdksbtttjd|djdd		 }|jd
 tdks(tq(W d S )Nc             S   s   g | ]}t d |qS )zf{})r8   r   format)r   r[  r   r   r   r    s    zMTestMomentsConsistency.test_rolling_min_max_numeric_types.<locals>.<listcomp>)r   r   c          	   S   s(   g | ] }d D ]}t d||qqS )Zuiz{}{})r8   r   rN  )r   r[  Zsignr   r   r   r    s   )r3   rT   r   r   r1   )r   rK   )rL   r   Zf8)
extendr   r8   r@   rN   r   Zdtypesr   rQ   r   )rB   Z
types_testZ	data_typern   r   r   r   "test_rolling_min_max_numeric_types  s    


z9TestMomentsConsistency.test_rolling_min_max_numeric_types)NNNNNNN)TTT)JrD   rE   rF   r8   ZnanmaxZnanminrC  ZnanmeanZ	nanmedianr  r   r   rb   rt   r  r  rC   rJ   r  rY   r   Zslowr   r  r  rm   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,  r2  r3  r8  r9  r;  r<  r=  r>  rA  rC  r@  rI  rJ  rK  rL  rM  rP  __classcell__r   r   )r  r   r  C  s   	







   
o `Ic
!

C!
 
&r  c               @   sd   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )TestGrouperGroupingc             C   sD   t td| _tdgd dgd  dgd  tdd	| _d S )
Nr   r3   r1   rT   r  rM   r   r2   )rU   rV   )r   r8   r@   r>   r   rA   )rB   rI   r   r   r   rJ     s    z TestGrouperGrouping.setup_methodc                sL    fdd}t t|  jd}|jr.t jjddd}|jsHtd S )Nc                  s    j jddd d S )NrU   r3   )re   )rA   r   r   )rB   r   r   r     s    z+TestGrouperGrouping.test_mutated.<locals>.frU   T)mutated)rY   rZ   rq   rA   r   rS  rQ   )rB   r   r^   r   )rB   r   test_mutated  s    
z TestGrouperGrouping.test_mutatedc             C   s   | j d}| j jddd}|jdd }|d j}t|| |dj }t|| |jd }t|| | j j| j jd }t|| d S )NrU   T)rS  c             S   s   |  d S )NrT   )rN   rt   )r   r   r   r   ra     s    z2TestGrouperGrouping.test_getitem.<locals>.<lambda>rT   )	rA   r   rV   r   rN   rt   r   r   rU   )rB   r^   	g_mutatedro   rn   r   r   r   rS     s    z TestGrouperGrouping.test_getitemc             C   sf   | j d}|d}| j jddd}|jdd }|j }t|| |j }t|| d S )NrU   rT   T)rS  c             S   s   |  d S )NrT   )rN   r   )r   r   r   r   ra     s    z;TestGrouperGrouping.test_getitem_multiple.<locals>.<lambda>)rA   r   rN   rV   r   r   r   r   )rB   r^   rR   rU  ro   rn   r   r   r   test_getitem_multiple  s    


z)TestGrouperGrouping.test_getitem_multiplec                s   | j d}|jdd}x6dD ]. t|  }| fdd}t|| qW x:dD ]2 t| dd	}| fd
d}t|| qVW |d}|dd }t|| d S )NrU   r   )rL   )rb   rt   r   r   r   r  r  c                s   t | d  S )Nr   )r   rN   )r   )r   r   r   ra     s    z2TestGrouperGrouping.test_rolling.<locals>.<lambda>)ru   r   r3   )r   c                s   t | d ddS )Nr   r3   )r   )r   rN   )r   )r   r   r   ra     s    g      ?c             S   s   |  ddS )Nr   g      ?)rN   rh  )r   r   r   r   ra     s    )rA   r   rN   r   r   r   r   rh  )rB   r^   rR   rn   ro   r   )r   r   test_rolling  s    


z TestGrouperGrouping.test_rollingc                s   j d}|jdd}xtdD ]l t| j } fdd}||}t|| t|j dd} fd	d}||}t|| qW d S )
NrU   r   )rL   )r  r   c                s   t | d jS )Nr   )r   rN   rA   )r   )r   rB   r   r   r     s    z7TestGrouperGrouping.test_rolling_corr_cov.<locals>.funcT)r  c                s   t | jd ddS )Nr   T)r  )r   rV   rN   )r   )r   r   r   r     s    )	rA   r   rN   r   r   r   r   rV   r   )rB   r^   rR   rn   r   ro   r   )r   rB   r   test_rolling_corr_cov  s    


z)TestGrouperGrouping.test_rolling_corr_covc                sL   | j d}|jdd}|jdd  d}| fdd}t|| d S )NrU   r   )rL   c             S   s   |   S )N)rb   )r   r   r   r   ra     s    z8TestGrouperGrouping.test_rolling_apply.<locals>.<lambda>)r"   c                s   |  djdd  dS )Nr   c             S   s   |   S )N)rb   )r  r   r   r   ra     s    zJTestGrouperGrouping.test_rolling_apply.<locals>.<lambda>.<locals>.<lambda>)r"   )rN   r   )r   )r"   r   r   ra     s    )rA   r   rN   r   r   r   )rB   r"   r^   rR   rn   ro   r   )r"   r   ry    s    z&TestGrouperGrouping.test_rolling_applyc             C   s   t dgd dgd  dgd d}|d}t jdd	d
dddg}dd g|_t jtjddgd dg|d}|jdd	 }t
|| |	  |jdd	 }t
|| d S )Nre   rM   r+  r3   rf   )rU   rV   rU   )r+  rM   )r+  r   )r+  rK   )re   r   )re   r3   )re   rT   g       @rT   rV   )r6   r5   )rL   )r|   r   r   r}   r   r   r8   rl   rN   rb   r   r   )rB   r]   r^   Zmiro   rn   r   r   r   test_rolling_apply_mutability  s    &

z1TestGrouperGrouping.test_rolling_apply_mutabilityc                s   | j d}| }x6dD ]. t|  }| fdd}t|| qW x:dD ]2 t| dd}| fdd}t|| qRW |d	}|d
d }t|| d S )NrU   )rb   rt   r   r   r   r  r  c                s   t |    S )N)r   r   )r   )r   r   r   ra   ;  s    z4TestGrouperGrouping.test_expanding.<locals>.<lambda>)ru   r   r   )r   c                s   t |   ddS )Nr   )r   )r   r   )r   )r   r   r   ra   @  s    g      ?c             S   s   |   dS )Ng      ?)r   rh  )r   r   r   r   ra   D  s    )rA   r   r   r   r   r   r   rh  )rB   r^   rR   rn   ro   r   )r   r   test_expanding4  s    


z"TestGrouperGrouping.test_expandingc                s   j d}| }xtdD ]l t| j } fdd}||}t|| t|j dd} fdd}||}t|| qW d S )NrU   )r  r   c                s   t |   jS )N)r   r   rA   )r   )r   rB   r   r   r   N  s    z9TestGrouperGrouping.test_expanding_corr_cov.<locals>.funcT)r  c                s   t | j  ddS )NT)r  )r   rV   r   )r   )r   r   r   r   U  s    )	rA   r   r   r   r   r   r   rV   r   )rB   r^   rR   rn   r   ro   r   )r   rB   r   test_expanding_corr_covG  s    


z+TestGrouperGrouping.test_expanding_corr_covc                sH   | j d}| }|jdd  d}| fdd}t|| d S )NrU   c             S   s   |   S )N)rb   )r   r   r   r   ra   _  s    z:TestGrouperGrouping.test_expanding_apply.<locals>.<lambda>)r"   c                s   |   jdd  dS )Nc             S   s   |   S )N)rb   )r  r   r   r   ra   a  s    zLTestGrouperGrouping.test_expanding_apply.<locals>.<lambda>.<locals>.<lambda>)r"   )r   r   )r   )r"   r   r   ra   a  s    )rA   r   r   r   r   r   )rB   r"   r^   rR   rn   ro   r   )r"   r   rC  Z  s    z(TestGrouperGrouping.test_expanding_applyN)rD   rE   rF   rJ   rT  rS   rV  rW  rX  ry  rY  rZ  r[  rC  r   r   r   r   rR    s   
rR  c               @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=S )>TestRollingTSc             C   sb   t tjddddtddd| _t dtdi| _tdtd	td
tdtdg| j_d S )Nr~  rK   r   )r4   r   )rU   rV   rU   rV   z20130101 09:00:00z20130101 09:00:02z20130101 09:00:03z20130101 09:00:05z20130101 09:00:06)	r   r|   r   r   	set_indexregularraggedr   r5   )rB   rI   r   r   r   rJ   j  s    zTestRollingTS.setup_methodc             C   sP   t ddddtjdgitdtdtdtd	td
gd}| |d  d S )NrV   r   r3   rT   r   z20130101 09:00:00z20130101 09:00:02z20130101 09:00:03z20130101 09:00:05z20130101 09:00:06)r5   r|  )r   r8   rl   r   rN   rb   )rB   r]   r   r   r   r   x  s    zTestRollingTS.test_doc_stringc          
   C   s  | j }tt |jdd W d Q R X tt | jdd W d Q R X x:dtjdgD ]&}tt |j|d W d Q R X q`W x&dtj	ddgD ]}|j|d qW xBddt
d	dd
ggD ](}tt |jd|d W d Q R X qW tt |jddd W d Q R X d S )Nr   )rL   Z2MSrT   1DZ2msg      ?re   r3   rM   )rL   r   T)rL   r   )r^  rY   rZ   r   rN   r  r|   r  Z
MonthBeginZDayr8   rG   r   )rB   r]   r   r  r   r   r   
test_valid  s    zTestRollingTS.test_validc          	   C   s   | j }tt |jddd W d Q R X | }tjdt|d|d< |jddd	  tt |jddd W d Q R X |jdddj
	  d S )	Nr|  r   )rL   onr~  )r4   rW   r   rV   )r^  rY   rZ   r   rN   r=   r|   r   rO  rb   rV   )rB   r]   r   r   r   test_on  s    zTestRollingTS.test_onc          	   C   s   t tjddddtdd}|jjs*t|jddd  |	d}|j
jsRt|d  t|j
 |_
|j
jr|ttt |d  W d Q R X | }tt |jddd  W d Q R X d S )	Nr~  rK   r   )r4   r   )rU   rV   r|  rU   )rb  )r   r|   r   r   rU   Zis_monotonicrQ   rN   rb   r]  r5   reversedr  rY   rZ   r   r  )rB   r]   r   r   r   test_monotonic_on  s     
zTestRollingTS.test_monotonic_onc             C   s   t tdtjddddd}tdtdtdtdtd	g|d
< |d
dj j	dd}|jdd
dj }t
|| |d
ddg  	 dd
g }|jdd
ddg  }t
|| d S )NrK   z20130101 09:00:003s)r4   r   )rV   rW   z20130101 09:00:02z20130101 09:00:03z20130101 09:00:05z20130101 09:00:06rU   r|  T)r   )rb  rV   )r   r   r|   r   r   r]  rN   rV   rb   r  r   r   r   )rB   r]   ro   rn   r   r   r   test_frame_on  s&    


zTestRollingTS.test_frame_onc          
   C   s  t dddddgdddtjdgttdtdtdtd	td
gddddgd}t dddddgdddtjdg|d ddddgd}|jddd }|}t|| t	dddtjdgdd}|jdddj
 }t|| |dddg }|jddddddg  }t|| d S )Nr   r3   rT   rM   r   z20130101 09:00:00z20130101 09:00:02z20130101 09:00:03z20130101 09:00:05z20130101 09:00:06)rU   rV   rW   rU   rW   rV   )r6   g        r   r|  )rb  )rP   )r   r8   rl   r   r   rN   rb   r   r   r   rV   r   )rB   r]   Z	expected1rn   ro   r   r   r   test_frame_on2  s*    
zTestRollingTS.test_frame_on2c             C   s   | j  }tjdddd|_|jddd }|jdd }t|| tjddd	d|_|jddd }|jd	dd }t|| |jddd }|jd	dd }t|| |jdd }|jd	d }t|| d S )
Nr~  rK   r   )r4   r   r3   )rL   r   r`  )rL   Z2D)	r^  r=   r|   r   r5   rN   rb   r   r   )rB   r]   ro   rn   r   r   r   test_basic_regular  s    
z TestRollingTS.test_basic_regularc             C   sf   | j }|jddd }|d }t|| |jddd }|jddd }t|| d S )NrT   r3   )r   r|  )r^  rN   rb   r   r   )rB   r]   ro   rn   r   r   r   test_min_periods-  s    zTestRollingTS.test_min_periodsc          	   C   s^  t ddgd itdtdtdtdtdgd	}tt | jjd
dd W d Q R X | }dddddg|d< |jd
dd }t	
|| |d
 }t	
|| | }dddddg|d< |jd
dd }t	
|| | }tjddddg|d< |jd
dd }t	
|| | }tjdddtjg|d< |jd
dd }t	
|| d S )NrU   r3   rK   z20130101 09:00:01z20130101 09:00:02z20130101 09:00:03z20130101 09:00:04z20130101 09:00:06)r5   r|  Zblabla)rL   r   g      ?rT   r   )r   rM   r   r   r   )r   r   rY   rZ   r   r^  rN   r=   rb   r   r   r8   rl   )rB   r]   ro   rn   r   r   r   r   ;  s4    zTestRollingTS.test_closedc             C   s  | j }|jddd }| }dddddg|d< t|| |jd	dd }| }ddddd
g|d< t|| |jd	dd }| }tjtjdtjd
g|d< t|| |jddd }| }ddddd
g|d< t|| |jdd }| }ddddd
g|d< t|| |jddd }| }dddddg|d< t|| |jddd }| }tjtjdddg|d< t|| |jddd }| }dddddg|d< t|| d S )Nr   r3   )rL   r   g        rT   rM   r   rV   r|  r   rf  rK   )rL   4srf   rg   5sr   )r_  rN   rb   r=   r   r   r8   rl   )rB   r]   rn   ro   r   r   r   test_ragged_sumb  sB    zTestRollingTS.test_ragged_sumc             C   sz   | j }|jddd }| }dddddg|d< t|| |jd	dd }| }ddd
ddg|d< t|| d S )Nr   r3   )rL   r   g        rT   rM   r   rV   r|  g      ?g      @g      @)r_  rN   rt   r=   r   r   )rB   r]   rn   ro   r   r   r   test_ragged_mean  s    zTestRollingTS.test_ragged_meanc             C   sz   | j }|jddd }| }dddddg|d< t|| |jd	dd }| }ddd
ddg|d< t|| d S )Nr   r3   )rL   r   g        rT   rM   r   rV   r|  g      ?g      @g      @)r_  rN   r  r=   r   r   )rB   r]   rn   ro   r   r   r   test_ragged_median  s    z TestRollingTS.test_ragged_medianc             C   s~   | j }|jdddd}| }dddddg|d	< t|| |jd
ddd}| }dddddg|d	< t|| d S )Nr   r3   )rL   r   g      ?g        rT   rM   r   rV   r|  g      ?g      @g      @)r_  rN   rh  r=   r   r   )rB   r]   rn   ro   r   r   r   test_ragged_quantile  s    z"TestRollingTS.test_ragged_quantilec             C   s   | j }|jdddjdd}| }dgd |d< t|| |jdddjdd}| }tjgd |d< t|| |jd	ddjdd}| }dgd
gd  |d< t|| |jdddjdd}| }tjddddg|d< t|| d S )Nr   r3   )rL   r   r   )r   g        rK   rV   rf  g      ?r   rl  g۞?g      ?gPS?)r_  rN   ru   r=   r   r   r8   rl   )rB   r]   rn   ro   r   r   r   test_ragged_std  s"    zTestRollingTS.test_ragged_stdc             C   s   | j }|jdddjdd}| }dgd |d< t|| |jdddjdd}| }tjgd |d< t|| |jd	ddjdd}| }dgd
gd  |d< t|| |jdddjdd}| }tjddddg|d< t|| d S )Nr   r3   )rL   r   r   )r   g        rK   rV   rf  g      ?r   rl  g      ?g      ?g?)r_  rN   r   r=   r   r   r8   rl   )rB   r]   rn   ro   r   r   r   test_ragged_var  s"    zTestRollingTS.test_ragged_varc             C   s   | j }|jddd }| }tjgd |d< t|| |jddd }| }tjgd dddg |d< t|| d S )	Nrf  r3   )rL   r   rK   rV   rl  rT   g        )r_  rN   r  r=   r8   rl   r   r   )rB   r]   rn   ro   r   r   r   test_ragged_skew  s    zTestRollingTS.test_ragged_skewc             C   s|   | j }|jddd }| }tjgd |d< t|| |jddd }| }tjgd dg |d< t|| d S )	Nrf  r3   )rL   r   rK   rV   rl  r   g333333)r_  rN   r  r=   r8   rl   r   r   )rB   r]   rn   ro   r   r   r   test_ragged_kurt  s    zTestRollingTS.test_ragged_kurtc             C   s   | j }|jddd }| }dddddg|d< t|| | j }|jdd }t|| |jddd }| }dddddg|d< t|| |jddd }| }tjtjdtjdg|d< t|| d S )	Nr   r3   )rL   r   g      ?rV   )rL   r|  rT   )r_  rN   r   r=   r   r   r8   rl   )rB   r]   rn   ro   r   r   r   test_ragged_count  s     zTestRollingTS.test_ragged_countc             C   s   t tjddddddddd	gd
d}|d }| }ddddd	g|d< t|| t tjdddddd	dd	dgd
d}t|| |d }| }dd	ddd	g|d< t|| |d }| }dd	dddg|d< t|| d S )Nr~  rK   r   )r4   r   g        r3   rT   rM   r   )rU   rV   rU   r   rV   r|  g      @rl  )	r   r|   r   r]  rN   r   r=   r   r   )rB   r]   rn   ro   r   r   r   test_regular_min  s*    zTestRollingTS.test_regular_minc             C   s   | j }|jddd }| }dddddg|d< t|| |jd	dd }| }dddddg|d< t|| |jd
dd }| }dddddg|d< t|| d S )Nr   r3   )rL   r   g        rT   rM   r   rV   r|  rl  r   )r_  rN   r   r=   r   r   )rB   r]   rn   ro   r   r   r   test_ragged_min-  s    zTestRollingTS.test_ragged_minc             C   s   d}t dtj|itjd|ddd}|jddd	 }|d
 }|| dk  	 s`t
|jddd	 }|d }|| dk  	 st
d S )Ni'  rV   r~  r   )r4   r   )r5   rT   r3   )r   r|  g{Gz?   Z200s)r   r8   r   r   r|   r   rN   r   rN  boolrQ   )rB   r7   Zdfpro   rn   r   r   r   test_perf_min@  s    zTestRollingTS.test_perf_minc             C   s   | j }|jddd }| }dddddg|d< t|| |jd	dd }| }dddddg|d< t|| |jd
dd }| }dddddg|d< t|| d S )Nr   r3   )rL   r   g        rT   rM   r   rV   r|  rl  )r_  rN   r   r=   r   r   )rB   r]   rn   ro   r   r   r   test_ragged_maxP  s    zTestRollingTS.test_ragged_maxc             C   s   | j }dd }|jdddj||d}| }d|d< t|| |jd	ddj||d}| }d|d< t|| |jd
ddj||d}| }d|d< t|| d S )Nc             S   s   dS )Nr3   r   )r   r   r   r   ra   g  s    z1TestRollingTS.test_ragged_apply.<locals>.<lambda>r   r3   )rL   r   )r"   g      ?rV   r|  rl  )r_  rN   r   r=   r   r   )rB   r"   r]   r   rn   ro   r   r   r   test_ragged_applyc  s    zTestRollingTS.test_ragged_applyc             C   sx   | j d }|jdd}|jdd}x0dD ](}t|| }t|| }t|| q(W |d}|d}t|| d S )NrT   r3   )rL   r   )
rb   rt   r   r  ru   r   r  r  r   r   g      ?)r^  rN   r   r   r   rh  )rB   r]   errR   r   rn   ro   r   r   r   test_allw  s    



zTestRollingTS.test_allc             C   sV   | j d }|jdd}|jdd}|jdd |d}|jdd |d}t|| d S )	NrT   r3   )rL   r   c             S   s   dS )Nr3   r   )r   r   r   r   ra     s    z.TestRollingTS.test_all_apply.<locals>.<lambda>)r"   c             S   s   dS )Nr3   r   )r   r   r   r   ra     s    )r^  rN   r   r   r   )rB   r"   r]   r}  rR   rn   ro   r   r   r   test_all_apply  s    
zTestRollingTS.test_all_applyc                s   t dtditjddddd}|dd}|jd	d
}xNdD ]F t|  } fdd}||j	j
|jddd}t|| q@W d S )NrV   rk  r~  H)r4   r   )r5   z09:00z16:00Z5H)rL   )
rb   rt   r   r  ru   r   r  r  r   r   c                s"   |  dd} t| jddd  S )Nz09:00z16:00rK   r3   )r   )between_timer   rN   )r   )r   r   r   
agg_by_day  s    z+TestRollingTS.test_all2.<locals>.agg_by_dayr   T)levelr   )r   r8   r@   r|   r   r  rN   r   r   r5   Zdayr   r  r   r   )rB   r]   ZdftrR   rn   r  ro   r   )r   r   	test_all2  s    
zTestRollingTS.test_all2c             C   s   dddgdddgdddgdddgd	d
dgd	ddg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ddd }|djdddd  }t	|| d S )NZDavidz1/1/2015r   z1/5/2015i  z	5/30/2015rk  z	7/25/2015ZRyanz1/4/2014z	1/19/2015z	3/31/2016ZJoez7/1/2015z9/9/2015z
10/15/2015rP   Zdateamount)r   r6   c             S   s   |  dd  S )N180Dr  )rN   rb   )r   r   r   r   ra     s    z6TestRollingTS.test_groupby_monotonic.<locals>.<lambda>r  )rb  )
r   r|   Zto_datetimer]  r   r   rN   rb   r   r   )rB   r   r]   ro   rn   r   r   r   test_groupby_monotonic  s    
z$TestRollingTS.test_groupby_monotonicc             C   s   t jdddd}tdgd dgd  dgd	  t||ftd
d}|djdddj	 }|
dddd }t|| |d}|djdddj	 }t|| d S )Nz2016-01-01 09:30:00r1   r   )startr4   r   r3   rT   r  rM   r   r2   )rU   rV   rW   rU   rk  rV   )rb  c             S   s   |  dd  S )Nrk  rW   )rN   rt   )r   r   r   r   ra     s    z2TestRollingTS.test_non_monotonic.<locals>.<lambda>)r|   r   r   r8   Zconcatenater@   r   rN   rW   rt   r]  r   r   r   Zsort_values)rB   Zdatesr]   rn   ro   r  r   r   r   test_non_monotonic  s    


z TestRollingTS.test_non_monotonicc             C   s   t jdddd}ttt||d}|d }ttjgdgt|d   |d}t	
|| |jd	dd
 }t	
|| |d }ttjdgdgt|d	   |d}t	
|| |jddd
 }t	
|| d S )Nz
2017-01-01rj   Z1h)r4   r   )r5   Z2hg      ?r3   rT   )r   Z3hg      ?rM   )r|   r   r   r8   r@   rO  rN   r   rl   r   r   )rB   re  Zssrn   ro   Z	expected2r   r   r   test_rolling_cov_offset  s    "$z%TestRollingTS.test_rolling_cov_offsetN)!rD   rE   rF   rJ   r   ra  rc  re  rg  rh  ri  rj  r   rm  rn  ro  rp  rq  rr  rs  rt  ru  rv  rw  rz  r{  r|  r~  r  r  r  r  r  r   r   r   r   r\  e  s<   ,'+
r\  )[collectionsr   r   r   	itertoolsr   r   r   Znumpyr8   Znumpy.randomr   rY   Zpandas.compatr   r	   Zpandas.errorsr
   Zpandas.util._test_decoratorsutilZ_test_decoratorsr   Zpandasr|   r   r   r   r   r   r   r   r   Zpandas.core.baser   Zpandas.core.sortingr   Zpandas.core.windowZcorerL   r   Zpandas.util.testingZtestingr   Zpandas.tseries.offsetsZtseriesr  r7   r?   r   Zfixturer"   r+   r/   r)  r0   rH   r   r   r   r   r  r  r  r(  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r7  r8  r:  r;  r<  r=  r?  r  r  r  r  r  rR  r\  r   r   r   r   <module>   s   (  .5 |iIa      I  4	          *