U
    >vf=+                     @   s,  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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.d/ Zejddddgejdd!d"id!d"gigd0d1 Zd2d3 Z ejd4d5d6dd7d8gffd9gd:d; Z!d<d= Z"d>d? Z#ejd@e$e
d7d8gd8d7ggdAe%ggdBdC Z&ejdDee$edE' d(e%fdFe%fdGe%fdHe%fdIe%fdAe%fgdJdK Z(dLdM Z)dNdO Z*ejddPdQ dRdQ dSdQ gdTdU Z+dVdW Z,ejdXdYd'gdZfej-d"d)d[fgd\d] Z.ejdd'd&gd'dYggd^d_ Z/ejdd&d'gdYd'ggd`da Z0ejdbdcdQ dddQ dedQ dfdQ gdgdh Z1dS )i    )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-vdrwu74i/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   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)frame_or_seriesrO   rQ   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   rS   r   )r   ranger   r   r   r8   )rX   r=   r   r   r   r   test_series_nested_renamerg   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)   rS   r   r
   rR   r[   )
r   nprandomrandnr   r   r   r   r5   r8   )Ztsdfr   r   r   r   test_apply_dict_deprr   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   rS   r   r
   rY   r\   rZ   )r   r^   r   r   r   rT   )rO   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   KeyErrorrT   )rO   rQ   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   rP   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   rR   r   )r   r   r   r   rP   )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   rP      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   )datarP   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   rQ   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]   rQ   r   r   r   r   r   #test_agg_cython_table_raises_series   s    r   c               	   C   sH   t dd gi} td}tjt|d | ddd i W 5 Q R X d S )Nr'   zint() argument must be a stringr   c                 S   s   t | jd S Nr   rn   Zilocr   r   r   r   r     r   z'test_agg_none_to_type.<locals>.<lambda>)r   rh   ri   r   r   r7   r8   r,   r   r   r   test_agg_none_to_type  s    
r   c               	   C   sB   t dd gi} d}tjt|d | ddd i W 5 Q R X d S )Nr'   zargument must be ar   c                 S   s   t | jd S r   r   r   r   r   r   r     r   z-test_transform_none_to_type.<locals>.<lambda>)r   r   r   r7   rP   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   rQ   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_agg2  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_seriesrQ   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   rP   )r   r2   rQ   r   r   r   r   test_transform_wont_agg_frameK  s    r   c              
   C   s`   d}|d dkrt nd }d}tjt|d, tj||dd | | W 5 Q R X W 5 Q R X d S )Nr   r   r   z!invalid value encountered in sqrtr   F)r   Zcheck_stacklevel)RuntimeWarningr   r   r   rG   Zassert_produces_warningrP   )r   rQ   r   warnZwarn_msgr   r   r   test_transform_wont_agg_seriesT  s    r   
op_wrapperc                 C   s   | S r*   r   r   r   r   r   r   b  r   c                 C   s   | gS r*   r   r   r   r   r   r   b  r   c                 C   s   d| iS Nr5   r   r   r   r   r   r   b  r   c                 C   s
   d| giS r   r   r   r   r   r   r   b  r   c              	   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   rP   )Zall_reductionsrU   r   oprV   r   r   r   r   test_transform_reducer_raisesa  s    r   )2	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   r   r   r   r   r   <module>	   s   
	
"

	 
A 



	



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