U
    *if)                     @   s0  d dl mZ d dlZd dlZd dlZd dlmZmZm	Z	m
Z
mZ d dl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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*d+ Zejddddgejdddiddgigd,d- Zd.d/ Zejd0d1d2dd3d4gffd5gd6d7 Z d8d9 Z!d:d; Z"ejd<e#ed3d4gd4d3ggd=e$ggd>d? Z%ejd@ee#e	dA& d$e$fdBe$fdCe$fdDe$fdEe$fd=e$fgdFdG Z'dHdI Z(dJdK Z)ejddLdM dNdM dOdM gdPdQ Z*dRdS Z+ejdTdUd#gdVfej,dd%dWfgdXdY Z-ejdd#d"gd#dUggdZd[ Z.ejdd"d#gdUd#ggd\d] Z/ejd^d_dM d`dM dadM dbdM gej0dcddde Z1dS )f    )chainN)Categorical	DataFrameSeries
date_rangenotna)SpecificationError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   V/home/mars/bis/venv/lib/python3.8/site-packages/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   1   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_raises4   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   B   r   z8test_map_with_invalid_na_action_raises.<locals>.<lambda>Z____r1   )r   r   r   r   map)sr   r   r   r   &test_map_with_invalid_na_action_raises=   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   I   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_actionE   s    rG   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/Tokyor>   )r?   r   c                 S   s   | S r*   r   r   r   r   r   r   P   r   z/test_map_datetimetz_na_action.<locals>.<lambda>r@   r1   )	r   Ztz_localizer   r   r   rB   rC   rD   r:   rE   r   r   r   test_map_datetimetz_na_actionL   s    rJ   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)rK   rL   rN   objr   r   r   r   test_nested_renamerS   s    rS   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dtyper?   rP   r   )r   ranger   r   r   r8   )rT   r;   r   r   r   r   test_series_nested_renamer^   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)   rP   r   r
   rO   rW   )
r   nprandomrandnr   r   r   r   r5   r8   )Ztsdfr   r   r   r   test_apply_dict_depri   s    
rb   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   rP   r   r
   rU   rX   rV   )r   rZ   r   r   r   rQ   )rL   r   r   r   r   r   test_dict_nested_renaming_depru   s    rc   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   KeyErrorrQ   )rL   rN   rR   r   r   r   r   test_missing_column   s    
rg   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   rf   rM   intr/   r,   r   r   r   'test_transform_mixed_column_name_dtypes   s    rk   z	how, args)Z
pct_changer   	nsmallestr'   ri   )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'   ri   z
Operation z does not support axis=1r   )r   argsr+   )howrn   r   r   r   r   r   test_apply_str_axis_1_raises   s    rp   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   rO   r   )r   r   r   r   rM   )r   r   r   r   test_transform_axis_1_raises   s    rr   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
   rX   onetwoZdullZshiny   )r5   r6   r]   DEF)r!   r]   c                 S   s&   | d  dr"| d dkr"d| d< | S Nr]   Zshinr5   r
   r$   rv   )
startswithrowr   r   r   rM      s    z.test_apply_modify_traceback.<locals>.transformc                 S   s2   t | d r.| d dr.| d dkr.d| d< | S ry   )r   rz   r{   r   r   r   
transform2   s    &z/test_apply_modify_traceback.<locals>.transform2z,'float' object has no attribute 'startswith'r   r   rq   )
r   r_   r`   ra   nanlocr   r   AttributeErrorr   )datarM   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   rq   r   r   r8   )r   rN   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   )rY   rN   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   rd   re   r   r   r7   r8   rj   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   rM   rj   r,   r   r   r   test_transform_none_to_type  s    r   c                 C   s   t ddgddS )Nr   r   )r_   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   rN   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   r@   allrV   sqrtrq   r   r   r   r_   Zerrstater8   )r   r2   r   r   r   r   test_transform_and_agg_err_agg+  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   r@   r   r   )string_seriesrN   r   r   r   r   !test_transform_and_agg_err_series3  s    r   c              	   C   s0   d}t jt|d |j|| d W 5 Q R X d S )NFunction did not transformr   rq   )r   r   r   rM   )r   r2   rN   r   r   r   r   test_transform_wont_agg_frameD  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   rC   Zassert_produces_warningrM   )r   rN   r   warnZwarn_msgr   r   r   test_transform_wont_agg_seriesM  s    r   
op_wrapperc                 C   s   | S r*   r   r   r   r   r   r   [  r   c                 C   s   | gS r*   r   r   r   r   r   r   [  r   c                 C   s   d| iS Nr5   r   r   r   r   r   r   [  r   c                 C   s
   d| giS r   r   r   r   r   r   r   [  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   rC   get_objr   r   r   rM   )Zall_reductionsZframe_or_seriesr   oprR   r   r   r   r   test_transform_reducer_raisesZ  s    r   )2	itertoolsr   rd   numpyr_   r   Zpandasr   r   r   r   r   Zpandas._testingZ_testingrC   Zpandas.core.baser   markZparametrizer    r-   r3   r9   r<   rG   rJ   rS   r[   rb   rc   rg   rk   rp   rr   r   Zget_cython_table_paramsr7   r   splitr   r   r   r   r   r   r   r   r   filterwarningsr   r   r   r   r   <module>	   s   
	"


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

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