U
    sVci+                     @   sJ  d dl mZ d dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
mZmZmZ d dlmZ ejdddgdd	 Zd
d Zdd Zdd Zdd Zejdddgdd Zdd Zdd Zejde
egejddddgejd d!d"d#iid!d"d#giigd$d% Zejd&dd'd(gid'd(gd#d)gd*gd+d, Zd-d. Zejdddgd/d0 Zejddddgejd d"d#id"d#gigd1d2 Zd3d4 Z ejd5d6d7dd8d9gffd:gd;d< Z!d=d> Z"d?d@ Z#ejdAe$e
d8d9gd9d8ggdBe%ggdCdD Z&ejdEee$edF' d)e%fdGe%fdHe%fdIe%fdJe%fdBe%fgdKdL Z(dMdN Z)dOdP Z*ejd dQdR dSdR dTdR gdUdV Z+dWdX Z,ejdYdZd(gd[fej-d#d*d\fgd]d^ Z.ejd d(d'gd(dZggd_d` Z/ejd d'd(gdZd(ggdadb Z0ejdcdddR dedR dfdR dgdR gej1dhdidj Z2dS )k    )chainN)SpecificationError)Categorical	DataFrameSeries
date_rangenotnaresult_typefoo   c              	   C   s:   |}d}t jt|d |jdd d| d W 5 Q R X d S )NzUinvalid value for result_type, must be one of {None, 'reduce', 'broadcast', 'expand'}matchc                 S   s
   dddgS )Nr          xr   r   G/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/apply/test_invalid_arg.py<lambda>%       z(test_result_type_error.<locals>.<lambda>r   axisr	   pytestraises
ValueErrorapply)r	   int_frame_const_coldfmsgr   r   r   test_result_type_error   s
    r    c               	   C   s\   t dddgdddgddd	ggd
d
dgd} d}tjt|d | dd d W 5 Q R X d S )Nr   r   r                  	   ac)indexz)No axis named 2 for object type DataFramer   c                 S   s   | S Nr   r   r   r   r   r   ,   r   z/test_apply_invalid_axis_value.<locals>.<lambda>r   r   r   r   r   r   r   r   r   r   test_apply_invalid_axis_value(   s    *r-   c              	   C   s0   t jtdd | jdd dd W 5 Q R X d S )Nzna_action must be .*Got 'abc'r   c                 S   s   t t| S r*   )lenstrr   r   r   r   r   2   r   z1test_applymap_invalid_na_action.<locals>.<lambda>abcZ	na_action)r   r   r   Zapplymap)float_framer   r   r   test_applymap_invalid_na_action/   s    r3   c               	   C   s@   t ddgddgd} d}tjt|d |   W 5 Q R X d S )Nr   r   r   ABzMust provider   )r   r   r   	TypeErroraggr,   r   r   r   test_agg_raises5   s    r9   c               	   C   sB   t dddg} d}tjt|d | jdd dd	 W 5 Q R X d S )
Nr   r   r   z)na_action must either be 'ignore' or Noner   c                 S   s   | S r*   r   r   r   r   r   r   C   r   z8test_map_with_invalid_na_action_raises.<locals>.<lambda>____r1   r   r   r   r   map)sr   r   r   r   &test_map_with_invalid_na_action_raises>   s    r>   input_na_actionr:   Tc              	   C   sJ   t dddg}d|  d}tjt|d |jddi| d W 5 Q R X d S )Nr   r   r   z+na_action must either be 'ignore' or None, z was passedr   r1   r;   )r?   r=   r   r   r   r   2test_map_arg_is_dict_with_invalid_na_action_raisesF   s    r@   c               	   C   sZ   t tdtddd} t| dtdd}tjttjd |jd	d
 dd W 5 Q R X d S )NZABBABCDZDCBAT)
categoriesZorderedXXZabcdefg)namer)   r   c                 S   s   | S r*   r   r   r   r   r   r   S   r   z0test_map_categorical_na_action.<locals>.<lambda>ignorer1   )	r   listr   r   r   NotImplementedErrortmEMPTY_STRING_PATTERNr<   valuesr=   r   r   r   test_map_categorical_na_actionO   s    rK   c               	   C   sR   t ddddd} t| dd}tjttjd |jd	d
 dd W 5 Q R X d S )Nz
2011-01-01z
2011-01-02H)freqz
Asia/TokyorB   )rC   r   c                 S   s   | S r*   r   r   r   r   r   r   Z   r   z/test_map_datetimetz_na_action.<locals>.<lambda>rD   r1   )	r   Ztz_localizer   r   r   rF   rG   rH   r<   rI   r   r   r   test_map_datetimetz_na_actionV   s    rN   boxmethodr   r8   	transformfuncr5   r6   sumc              	   C   s>   | ddgi}d}t jt|d t||| W 5 Q R X d S )Nr5   r   nested renamer is not supportedr   )r   r   r   getattr)rO   rP   rR   objr   r   r   r   test_nested_renamer]   s    rW   renamerminmaxmean)r
   barc              	   C   s>   t tdddd}d}tjt|d ||  W 5 Q R X d S )Nr#   Zint64series)ZdtyperC   rT   r   )r   ranger   r   r   r8   )rX   r=   r   r   r   r   test_series_nested_renamerh   s    r_   c               	   C   s\   t tjdddddgtdddd} d	}tjt|d
 | j	dddgi W 5 Q R X d S )N
   r   r5   r6   Cz1/1/2000)Zperiods)columnsr)   rT   r   r
   rS   r[   )
r   nprandomrandnr   r   r   r   r5   r8   )Ztsdfr   r   r   r   test_apply_dict_deprs   s    
rf   c              	   C   sP   t tddd}d}tjt|d" t|| ddiddid W 5 Q R X d S )	Nr"   r4   rT   r   r
   rY   r\   rZ   )r   r^   r   r   r   rU   )rP   r   r   r   r   r   test_dict_nested_renaming_depr   s    rg   c              	   C   sD   t ddgi}td}tjt|d t|| | W 5 Q R X d S )Nr5   r   zColumn(s) ['B'] do not existr   )r   reescaper   r   KeyErrorrU   )rP   rR   rV   r   r   r   r   test_missing_column   s    
rk   c               	   C   sB   t ddgi} d}tjt|d | tttd W 5 Q R X d S )Nr'   1z#Column\(s\) \[1, 'b'\] do not existr   )r'   r   b)r   r   r   rj   rQ   intr/   r,   r   r   r   'test_transform_mixed_column_name_dtypes   s    ro   z	how, args)Z
pct_changer   	nsmallestr'   rm   )tailr   c              	   C   sP   t ddgddgd}d|  d}tjt|d |j| d|d	 W 5 Q R X d S )
Nr   r   r   r!   )r'   rm   z
Operation z does not support axis=1r   )r   argsr+   )howrr   r   r   r   r   r   test_apply_str_axis_1_raises   s    rt   c               	   C   s6   d} t jt| d tdgjddd W 5 Q R X d S )Nz&No axis named 1 for object type Seriesr   r   rS   r   )r   r   r   r   rQ   )r   r   r   r   test_transform_axis_1_raises   s    rv   c                  C   s   t dddddddddddgdddddddddddgdddddddddddgtjdtjdtjdd} tj| jd	< d
d }dd }d}tjt|d | j	|dd W 5 Q R X d S )Nr
   r\   ZoneZtwoZdullZshiny   )r5   r6   ra   DEF)r!   ra   c                 S   s&   | d  dr"| d dkr"d| d< | S Nra   Zshinr5   r
   r$   rx   )
startswithrowr   r   r   rQ      s    z.test_apply_modify_traceback.<locals>.transformc                 S   s2   t | d r.| d dr.| d dkr.d| d< | S r{   )r   r|   r}   r   r   r   
transform2   s    &z/test_apply_modify_traceback.<locals>.transform2z,'float' object has no attribute 'startswith'r   r   ru   )
r   rc   rd   re   nanlocr   r   AttributeErrorr   )datarQ   r   r   r   r   r   test_apply_modify_traceback   s`    


/r   zdf, func, expectedZcumprodc              	   C   s0   d}t j||d | j||d W 5 Q R X d S )Nz0can't multiply sequence by non-int of type 'str'r   ru   r   r   r8   )r   rR   expectedr   r   r   r   r   "test_agg_cython_table_raises_frame   s    r   zseries, func, expectedza b cprodZstdvarZmedianc              	   C   s,   d}t j||d | | W 5 Q R X d S )Nz?[Cc]ould not convert|can't multiply sequence by non-int of typer   r   )r]   rR   r   r   r   r   r   #test_agg_cython_table_raises_series   s    r   c               	   C   sD   t dd gi} td}tjt|d | dti W 5 Q R X d S )Nr'   zint() argument must be a stringr   )r   rh   ri   r   r   r7   r8   rn   r,   r   r   r   test_agg_none_to_type  s    
r   c               	   C   s>   t dd gi} d}tjt|d | dti W 5 Q R X d S )Nr'   zTransform function failedr   )r   r   r   r7   rQ   rn   r,   r   r   r   test_transform_none_to_type  s    r   c                 C   s   t ddgddS )Nr   r   )rc   arrayZreshaper   r   r   r   r   '  r   r   c                 C   s   ddgS Nr   r   r   r   r   r   r   r   (  r   c                 C   s   t ddgS r   )r   r   r   r   r   r   )  r   c              	   C   s6   | }d}t jt|d |j|ddd W 5 Q R X d S )Nz2too many dims to broadcast|cannot broadcast resultr   r   	broadcastr   r   )r   rR   r   r   r   r   r   test_apply_broadcast_error$  s    	r   c              
   C   sL   d}t jt|d0 tjdd |jddg| d W 5 Q R X W 5 Q R X d S )Nz3cannot combine transform and aggregation operationsr   rD   allrZ   sqrtru   r   r   r   rc   Zerrstater8   )r   r2   r   r   r   r   test_transform_and_agg_err_agg5  s    r   z	func, msgr   z(cannot combine transform and aggregationz2cannot perform both aggregation and transformationc              
   C   s@   t jt|d( tjdd | | W 5 Q R X W 5 Q R X d S )Nr   rD   r   r   )string_seriesrR   r   r   r   r   !test_transform_and_agg_err_series=  s    r   c              	   C   s0   d}t jt|d |j|| d W 5 Q R X d S )NFunction did not transformr   ru   )r   r   r   rQ   )r   r2   rR   r   r   r   r   test_transform_wont_agg_frameN  s    r   c              
   C   s^   d}|d dkrt nd }d}tjt|d* tj||d | | W 5 Q R X W 5 Q R X d S )Nr   r   r   z!invalid value encountered in sqrtr   )RuntimeWarningr   r   r   rG   Zassert_produces_warningrQ   )r   rR   r   warnZwarn_msgr   r   r   test_transform_wont_agg_seriesW  s    r   
op_wrapperc                 C   s   | S r*   r   r   r   r   r   r   e  r   c                 C   s   | gS r*   r   r   r   r   r   r   e  r   c                 C   s   d| iS Nr5   r   r   r   r   r   r   e  r   c                 C   s
   d| giS r   r   r   r   r   r   r   e  r   z(ignore:.*Select only valid:FutureWarningc              	   C   sR   || }t ddddgi}t||}d}tjt|d || W 5 Q R X d S )Nr5   r   r   r   r   r   )r   rG   get_objr   r   r   rQ   )Zall_reductionsZframe_or_seriesr   oprV   r   r   r   r   test_transform_reducer_raisesd  s    r   )3	itertoolsr   rh   Znumpyrc   r   Zpandas.errorsr   Zpandasr   r   r   r   r   Zpandas._testingZ_testingrG   markZparametrizer    r-   r3   r9   r>   r@   rK   rN   rW   r_   rf   rg   rk   ro   rt   rv   r   Zget_cython_table_paramsr7   r   splitr   r   r   r   r   r   r   r   r   filterwarningsr   r   r   r   r   <module>	   s   
	
"


 
A 



	





 
