U
    f/e(                     @   s  d dl Zd dlZd dlmZmZmZmZmZm	Z	m
Z
mZmZ d dlmZ d dlm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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-d. Z!ej"d/d0d1 Z#dS )2    N)		DataFrameIndex
MultiIndexPeriodSeries	Timestampconcat
date_rangetimedelta_range)SpecificationErrorc                  C   s   t tjdd} | jdd}t|jj| j | jddd }|jj	| jd ksVt
| jddd }t|jj| jddg  | jddddg }t|jj| jddg  d S )N   window   )r      r   )r   nprandomZrandnrollingtmassert_index_equalZ_selected_objcolumnsnameAssertionError)framer r   @/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/window/test_api.pytest_getitem   s    r   c               	   C   sp   t ddggddgd} | jdd}tjtdd	 |d
g  W 5 Q R X tjtdd	 |dd
g  W 5 Q R X d S )Nr      ABr   r   r   zColumns not found: 'C'matchCz^[^A]+$)r   r   pytestraisesKeyError)dfgr   r   r   test_select_bad_cols#   s    r*   c               	   C   sd   t ddggddgd} | jdd}t|j |d   d}tjt|d	 |j	 W 5 Q R X d S )
Nr   r   r   r    r!   r   r   z%'Rolling' object has no attribute 'F'r"   )
r   r   r   Zassert_series_equalr   sumr%   r&   AttributeErrorF)r(   r   msgr   r   r   test_attribute_access.   s    r/   c                  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 )Nr   
   foor   r    r$   r   r   r   r       	            r   r    ABr!   	r   ranger   r+   r   nanlistr   assert_frame_equalr(   r   resultexpectedr   r   r   tests_skip_nuisance8   s    $rB   c                  C   sp   t tdtdddd} | jdd}| }t tjtjdddgtjtjd	d
dgdtdd}t|| d S )Nr   r0   r1   r2   r   r   r3   r4   r5   r6   r7   r8   r9   r!   r:   r?   r   r   r   test_skip_sum_object_raisesD   s    $rC   c               	   C   s  t tdtdddd} | jdd}|d  }|d  }|d  }|d	  }|d	  }|tjtjg}t||||gd
d}t	
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	ddg|_t|| |d ddg}t||gd
d}ddg|_t|| d}	tjt|	d |ddddi W 5 Q R X tjt|	d" |ddddddd W 5 Q R X |ddgddgd}t||||gd
d}ddddg}
t	|
|_tj||dd d S )Nr   r   r0   r   r8   r   r   r   r    r   ZaxismeanstdTZ
check_liker   rE   )r   rF   r+   nested renamer is not supportedr"   )rE   r+   )Zmean2Zsum2)r    rE   )r    rF   )r   r;   r   rE   rF   r+   	aggregater   r   r   from_productr   r   r>   from_tuplesr%   r&   r   )r(   r   Za_meanZa_stda_sumZb_meanZb_stdr@   rA   r.   Zexp_colsr   r   r   test_aggO   sD    
rN   c                 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 )Nr   r   r0   r   r8   r   r   r   c                 S   s   t j| ddS Nr   )Zddofr   rF   xr   r   r   <lambda>       z test_agg_apply.<locals>.<lambda>r    c                 S   s   t j| ddS rO   rP   rQ   r   r   r   rS      rT   )rawr   rD   TrG   )
r   r;   r   r+   aggr   applyr   r   r>   )rU   r(   r   rM   r@   ZrcustomrA   r   r   r   test_agg_apply   s    rX   c                  C   s   t tdtdddd} | jdd}|tjtjgj}t	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ddg}t|| d S )Nr   r   r0   r   r8   r   r   r9   r+   rE   r   )r   r+   rH   )r   r;   r   rV   r   r+   rE   r   r   rK   r=   r   r   r   rL   r?   r   r   r   test_agg_consistency   s    rY   c               	   C   s,  t tdtdddd} | jdd}d}tjt|d	& |d
ddgidddgid W 5 Q R X t|d
  |d
 	 |d  |d 	 gdd}t
ddddg|_tjt|d	. |d
dg dddgidddgid W 5 Q R X tjt|d	& |dddgidddgid W 5 Q R X d S )Nr   r   r0   r   r8   r   r   rI   r"   r   rE   r+   r    )Zr1Zr2r   rD   )rarE   )rZ   rF   )rbrE   )r[   rF   rZ   rF   r[   )r   r;   r   r%   r&   r   rJ   r   rE   rF   r   rL   r   rV   )r(   r   r.   rA   r   r   r   test_agg_nested_dicts   s     ** 
2r\   c                  C   sf  ddddddddd	d
dg} t dt dt d g}tdddgdddgtdtdddt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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"d#
 }t|| |j	dd"d$
 }| t}t|| d S )%Nintfloatstringdatetime	timedeltaperiodsfl_inffl_nanstr_nandt_natperiods_natZ20170101Z20170203r   r   r   g      @g      @g      @abc)rb   z1 ss)rb   freqz2012-01z2012-02z2012-03g      ?g       @ZaaZbb)r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   r!   r   )r   min_periods)rk   )r   r   r=   r	   r
   r   r   ZInfNaNr   countr   r>   ZnotnaZastyper^   )colsZ
dt_nat_colr(   rA   r@   r   r   r   test_count_nonnumeric_types   sl    



ro   c                  C   sN   t tddd} | d }| d }|jdks<t|jdksJtd S )Nd   r1   )r         )r   r   Zaranger   r+   r   r   )ri   s2Zs3r   r   r   test_preserve_metadata   s
    rt   zfunc,window_size,expected_valsr   r   g      .@g      4@g      9@g      >@g     A@g      D@g      N@g      T@g     @U@P   Z	expandingg      $@gRB:@g      I@c           
   
   C   s   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gd	d
dgd}t|d	| }|rh||}n| }tjdddddddgd	d gd}tddddg}t |||d}|ddgddgd}	t|	| d S )Nr   r0   rr   rq   (   r    ru   Z   Zstocklowhighr!   )r   r   )r   r   )r   r   )r    r   )r       )r    r   )r    r3   )names)rx   rE   )rx   max)ry   rE   )ry   min)indexr   rE   r|   r}   )rx   ry   )r   getattrgroupbyr   rL   rV   r   r>   )
funcZwindow_sizeZexpected_valsr(   fr   r~   r   rA   r@   r   r   r   test_multiple_agg_funcs  s2    !	

r   c               	   C   s6   t tdd} tt | jr(tW 5 Q R X d S )Nr   )r   r;   r   r   Zassert_produces_warningFutureWarningZis_datetimeliker   )ri   r   r   r   test_is_datetimelike_deprecatedE  s    r   z ignore:min_periods:FutureWarningc                    s^   t tdjd|||d  fdd jD }t |    fdd jD }||ksZtd S )Nr   )centerclosedrk   c                    s   i | ]}|t  |qS r   r   .0attrZroll_objr   r   
<dictcomp>S  s      z=test_dont_modify_attributes_after_methods.<locals>.<dictcomp>c                    s   i | ]}|t  |qS r   r   r   r   r   r   r   U  s      )r   r;   r   _attributesr   r   )Zarithmetic_win_operatorsr   r   rk   rA   r@   r   r   r   )test_dont_modify_attributes_after_methodsK  s       r   )$Znumpyr   r%   Zpandasr   r   r   r   r   r   r   r	   r
   Zpandas._testingZ_testingr   Zpandas.core.baser   r   r*   r/   rB   rC   rN   rX   rY   r\   ro   rt   markZparametrizer<   r   r   filterwarningsr   r   r   r   r   <module>   sZ   ,
0C













#
