U
    sVc<                     @   s&  d dl Zd dlZd dlmZm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 Zdd Zdd	 Zd
d Zdd Zdd Zejddgddgddidddg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/d0d1ggfd2dd3d3d)d)gd(d)d*d)gd)d+d+d)gd3d3d+d+gd)d+d,d+gd4d-d5d+gd-d/d.d+ggfgd6d7 Z"d8d9 Z#d:d; Z$ej%d<d=d> Z&d?d@ Z'dAdB Z(dCdD Z)ejdEdFdGdHgejdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWgdXdY Z*dS )Z    N)SpecificationErrorUnsupportedFunctionCall)		DataFrameIndex
MultiIndexPeriodSeries	Timestampconcat
date_rangetimedelta_rangec                 C   s   t tjdd}|jd| d}t|jj|d d |  j |jd| dd }|jj	|d d |  jd ksnt
|jd| dd }t|jj|d d |  jddg  |jd| dddg }t|jj|d d |  jddg  d S )N   windowstep   )r      r   )r   nprandomZrandnrollingtmassert_index_equalZ_selected_objcolumnsnameAssertionError)r   framer r   @/tmp/pip-unpacked-wheel-xj8nt62q/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   assert_series_equalr!   sumr(   r)   AttributeErrorF)r+   r   msgr   r   r   test_attribute_access2   s    r3   c                 C   s   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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+   r   resultexpectedr   r   r   tests_skip_nuisance<   s    $rE   c              	   C   s   t tdtdddd}|jd| d}d}tjt|d | }W 5 Q R X t tjtjdd	d
gtjtjdddgdt	ddd d |  }t
|| d S )Nr   r4   r5   r6   r   r   zGnuisance columns.*Dropped columns were Index\(\['C'\], dtype='object'\)r%   r7   r8   r9   r:   r;   r<   r=   r#   )r   r>   r   r   assert_produces_warningFutureWarningr/   r   r?   r@   rA   )r   r+   r   r2   rC   rD   r   r   r   test_skip_sum_object_raisesH   s    $rH   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   r4   r    r<   r   r   r!   r"   r   axismeanstdTZ
check_liker!   rK   )r!   rL   r/   nested renamer is not supportedr%   )rK   r/   )Zmean2Zsum2)r"   rK   )r"   rL   )r   r>   r   rK   rL   r/   	aggregater   r
   r   from_productr   r   rA   from_tuplesr(   r)   r   )r   r+   r   Za_meanZa_stda_sumZb_meanZb_stdrC   rD   r2   Zexp_colsr   r   r   test_aggV   sD    
rT   funcminrK   maxbr/   prodmedian)rX   cc              	   C   sX   t dddgdddgdddgd	}|jddd
}tjtdd ||  W 5 Q R X d S )Nr   r    r      r   r7         )arX   r[   )r   rJ   z"axis other than 0 is not supportedr%   )r   r   r(   r)   NotImplementedErroragg)rU   r+   r   r   r   r   test_multi_axis_1_raises   s    "rb   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   r4   r    r<   r   r$   r!   c                 S   s   t j| ddS Nr   )Zddofr   rL   xr   r   r   <lambda>       z test_agg_apply.<locals>.<lambda>r"   c                 S   s   t j| ddS rc   rd   re   r   r   r   rg      rh   )rawr   rI   TrM   )
r   r>   r   r/   ra   r   applyr
   r   rA   )ri   r+   r   rS   rC   ZrcustomrD   r   r   r   test_agg_apply   s    rk   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   r4   r    r<   r   r   r=   r/   rK   r!   )r!   r/   rN   )r   r>   r   ra   r   r/   rK   r   r   rQ   r@   r   r   r   rR   rB   r   r   r   test_agg_consistency   s    rl   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   r4   r    r<   r   r$   rO   r%   r!   rK   r/   r"   )Zr1Zr2r   rI   )rarK   )rm   rL   )rbrK   )rn   rL   rm   rL   rn   )r   r>   r   r(   r)   r   rP   r
   rK   rL   r   rR   r   ra   )r+   r   r2   rD   r   r   r   test_agg_nested_dicts   s     ** 
2ro   c                 C   s~  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!d d |  }|j	dd"| d#
 }t|| |j	dd"| d$
 }| td d |  }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)ru   z1 ss)ru   freqz2012-01z2012-02z2012-03g      ?g       @ZaaZbb)rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r#   r   r   min_periodsr   )r   r   )r	   r   r@   r   r   r   r   ZInfNaNr   countr   rA   ZnotnaZastyperq   )r   colsZ
dt_nat_colr+   rD   rC   r   r   r   test_count_nonnumeric_types   sp    



r   c                  C   sN   t tddd} | d }| d }|jdks<t|jdksJtd S )Nd   r5   )r         )r   r   Zaranger   r/   r   r   )r|   s2Zs3r   r   r   test_preserve_metadata  s
    r   zfunc,window_size,expected_valsr   r    g      .@g      4@g      9@g      >@g     A@g      D@g      N@g      T@g     @U@P   	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!   r4   r   r   (   r"   r   Z   Zstocklowhighr#   )r!   r   )r!   r   )r!   r    )r"   r   )r"   r\   )r"   r   )r"   r7   )names)r   rK   )r   rW   )r   rK   )r   rV   )indexr   rK   rW   rV   )r   r   )r   getattrgroupbyr   rR   ra   r   rA   )
rU   Zwindow_sizeZexpected_valsr+   fr   r   r   rD   rC   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   rF   rG   Zis_datetimeliker   r|   r   r   r   test_is_datetimelike_deprecatedW  s    r   c               	   C   s<   t tdd} tt |  d ks.tW 5 Q R X d S r   )r   r>   r   r   rF   rG   validater   r   r   r   r   test_validate_deprecated]  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s\td S )Nr   )centerclosedr   r   c                    s   i | ]}|t  |qS r   r   .0attrZroll_objr   r   
<dictcomp>k  s      z=test_dont_modify_attributes_after_methods.<locals>.<dictcomp>c                    s   i | ]}|t  |qS r   r   r   r   r   r   r   m  s      )r   r>   r   _attributesr   r   )Zarithmetic_win_operatorsr   r   r   r   rD   rC   r   r   r   )test_dont_modify_attributes_after_methodsc  s        r   c              	   C   s   t tdjddd| d  d}tjt|d& t tdjddd| d  W 5 Q R X ttd	jddd| d  ttd	jddd| d  d
}tjt|d& ttd	jddd| d  W 5 Q R X d S )Nr4   r   Tr   )r   r   rJ   r   z&No axis named 1 for object type Seriesr%   r   )r4   r4   z)No axis named 2 for object type DataFramer    )	r   r   onesr   rK   r(   r)   
ValueErrorr   )r   r2   r   r   r   test_centered_axis_validationq  s2     *   
   
   r   c              	   C   s   t dddddg}|jdd| d }t tt|d d |  }t|| d}tj	t
|d	$ t dddgjdd| d  W 5 Q R X d S )
Nr   r    r   r\   r   r   r~   !min_periods 5 must be <= window 3r%   )r   r   rV   r   r   lenr   r.   r(   r)   r   r   r_   rC   rD   r2   r   r   r   test_rolling_min_min_periods  s    r   c              	   C   s   t dddddgtjd}|jdd| d }|d d |  }t|| d	}tjt	|d
$ t dddgjdd| d  W 5 Q R X d S )Nr   r    r   r\   r   )dtyper   r~   r   r%   )
r   r   float64r   rW   r   Zassert_almost_equalr(   r)   r   r   r   r   r   test_rolling_max_min_periods  s    r   zroll_type, class_name)r   ZRolling)r   Z	Expanding)ewmZExponentialMovingWindowzkernel, has_args, raises)r/   TT)rW   TT)rV   TT)rK   TT)rZ   FF)rL   TT)varTT)ZskewFF)semTT)ZkurtFF)quantileFF)ZrankFF)covFF)corrFFc           	   
   C   s  t tdddg| d}d}|dkr*d}nd}| dkrn|d	krntjtd
| dd t || W 5 Q R X nd| d| }tjt|dR |rtjt|d t |||dt	j
i W 5 Q R X nt |||dt	j
i W 5 Q R X |rd| d| }tjt|d` |rR| dks$|dkrRtjt|d t |||d  W 5 Q R X nt |||d  W 5 Q R X d| d| }tjt|d\ |rtjt|d  t |||ddt	j
i W 5 Q R X nt |||ddt	j
i W 5 Q R X d S )Nr    r\   r7   z2numpy operations are not valid with window objectsr   )g      ?r   r   )r/   rK   rL   r   r   r   zhas no attribute ''r%   zPassing additional kwargs to .r   zPassing additional args to r   r   r   r   z&Passing additional args and kwargs to )r   r    r   r\   )r   r    r   r\   )r   r    r   r\   )r   r    r   r\   )r   r   r(   r)   r0   r   rF   rG   r   r   r   )	Z	roll_type
class_namekernelZhas_argsr)   r   	error_msgZrequired_argsZwarn_msgr   r   r   test_args_kwargs_depr  s6    	" &r   )+Znumpyr   r(   Zpandas.errorsr   r   Zpandasr   r   r   r   r   r	   r
   r   r   Zpandas._testingZ_testingr   r   r-   r3   rE   rH   rT   markZparametrizerb   rk   rl   ro   r   r   r?   r   r   r   filterwarningsr   r   r   r   r   r   r   r   r   <module>   s   ,
0 
C













#



