U
    >vf;                     @   sZ   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
 d dlmZ G dd dZdS )    )ChainMapN)	DataFrameIndex
MultiIndexmergec                   @   s>  e Zd Zdd Zdd Zdd Zejde	dd	id
difddifdde	dd	id
diif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d	ddd d	d
d!d"gfdd	id#d	d
d!d"gfejd#d	dd$d%gfgd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<S )=
TestRenamec              
   C   s8   t tj}t|j}|ddddddddd	h	ks4td S )
Nselfmapperindexcolumnsaxisinplacecopylevelerrors)inspect	signaturer   renameset
parametersAssertionError)r   sigr    r   J/tmp/pip-unpacked-wheel-vdrwu74i/pandas/tests/frame/methods/test_rename.pytest_rename_signature   s    
z TestRename.test_rename_signaturec                 C   s2   |dddgt dd dD d}|tj d S )N         c                 S   s   g | ]}d |fqS )Ar   ).0xr   r   r   
<listcomp>#   s     z-TestRename.test_rename_mi.<locals>.<listcomp>)aBcr
   )r   from_tuplesr   strlower)r   Zframe_or_seriesobjr   r   r   test_rename_mi    s
    zTestRename.test_rename_mic           	   	   C   s  ddddd}|j |d}|j tjd}t|| tj|j tjd|dd d	d
ddi}t|}|j dddd}t|jt	ddg |j tjd}t|jt	ddg t
jtdd |   W 5 Q R X |j dddd}t|jt	d	dddg |jj dddd}t|jt	d	dddg t	ddgdd}t||d}|j dddd}t|jt	ddgdd |jj|jjkstd S )Nr"   br$   d)r   r#   CDr   F)Zcheck_namesr   r      )foobarr2   r1   r%   ZBARFOOmust pass an index to renamematch)r-   r.   r#   name)r7   )r   r'   r(   tmassert_frame_equalupperr   assert_index_equalr
   r   pytestraises	TypeErrorr   Tr7   r   )	r   float_framemappingrenamedZrenamed2datadfr
   Zrenamerr   r   r   test_rename'   s4      zTestRename.test_renamezargs,kwargsr   r"   r#   r+   r   r   r   c                 C   sN   t dd}tjd}t||d}|j||}t||d}t|| d S )Nr0   r   
   r   r#   r"   r+   )rangenprandomZrandnr   r   r8   r9   )r   argskwargsZcolADataZcolBdatarD   resultexpectedr   r   r   test_rename_chainmapP   s    	
zTestRename.test_rename_chainmapc           
      C   sb  ddg}ddg}t j|ddgd}t j|dd	gd}td
dg||d}|jddddddd}t jddgddgd}t jddgdd	gd}t|j| t|j| |jj|jjkst	|jj|jjkst	t jddgdd	gd}|jddddd}t|j| |jddddd}t|j| t jddgdd	gd}|jddddd}t|j| |jdddd	d}t|j| t
j}	t jddgdd	gd}|j|	dd}t|j| |j|	dd}t|j| t jddgdd	gd}|j|	dd}t|j| |j|	d	d}t|j| t jddgddgd}|jddddd}t|j| d S )N)foo1bar1)foo2bar2)fizz1buzz1)fizz2buzz2r1   r2   namesZfizzZbuzzr   r   r0   r0   r
   r   foo3bar3)rQ   rT   fizz3buzz3)rU   rX   )r^   rR   )rS   r_   )r`   rV   )rW   ra   r   )r   r   r0   )ZFIZZ1rV   )ZFIZZ2rX   )rU   ZBUZZ1)rW   ZBUZZ2)r
   r   )r   r&   r   r   r8   r;   r
   r   rZ   r   r'   r:   )
r   Ztuples_indexZtuples_columnsr
   r   rD   rB   Z	new_indexZnew_columnsfuncr   r   r   test_rename_multiindexb   sx           z!TestRename.test_rename_multiindexc                 C   sr   |j ddidd}t|d j|d js.td|jd d df< |rZ|d dk rntn|d dk sntd S )Nr-   r1   F)r   r   g      ?)r   rJ   Zshares_memoryZ_valuesr   locall)r   r@   Zusing_copy_on_writerB   r   r   r   test_rename_nocopy   s    zTestRename.test_rename_nocopyc                 C   s   |j ddid d|kstd|ks(t|d }| }|j ddidd}|d ksVtd|ksbtd|ksnt|d |k	s~td S )Nr-   r1   r/   T)r   r   )r   r   r   )r   r@   Zc_valuesZreturn_valuer   r   r   test_rename_inplace   s    zTestRename.test_rename_inplacec                 C   s   t ddgddgddgd}|jdd	id
}|jddid
}|d	dg}dg|_t dgdggtjddgd	dgddgd}t|| d S )Nr1   r2   bahbasr0      r   r0   rj   r   r"   r/   r+   z
2001-01-01)r1   rh   )r2   ri   rY   r]   )r   r   	set_indexr   r   r&   r8   r9   r   rD   rO   r   r   r   test_rename_bug   s    
 zTestRename.test_rename_bugc                 C   sZ   t tddddgdgd}|jddidd	}t tddddgdgd}t|| d S )
N   r[   r\   )rj   rj   r"   )rC   r
   r   )      r
   r   )r   rJ   aranger   r8   r9   rm   r   r   r   test_rename_bug2   s      zTestRename.test_rename_bug2c              	   C   sD   t ddddgd}tjtdd |jdd	d
dd W 5 Q R X d S )Nr   r#   r-   r.   r/   z'E'] not found in axisr5   r"   er   Eraiser   r   )r   r<   r=   KeyErrorr   )r   rD   r   r   r   test_rename_errors_raises   s    z$TestRename.test_rename_errors_raisesz mapper, errors, expected_columnsru   rv   ignorer-   r.   rx   r$   r,   c                 C   s:   t ddddgd}|j||d}t |d}t|| d S )Nr   r#   r-   r.   r/   ry   )r   r   r8   r9   )r   r	   r   Zexpected_columnsrD   rN   rO   r   r   r   test_rename_errors   s    
zTestRename.test_rename_errorsc                 C   s*   |j tjd}d|kstd|ks&td S )Nr/   r3   r1   )r   r'   r:   r   )r   Zfloat_string_framerB   r   r   r   test_rename_objects   s    zTestRename.test_rename_objectsc                 C   sj  t ddgddgdddgd}t ddgddgdddgd}|jtjdd}t|| |jtjd	d}t|| |jd
dddd}t|| |jd
ddd	d}t|| t ddgddgdddgd}|jtjdd}t|| |jtjdd}t|| |jddddd}t|| |jddddd}t|| |jtjdd}t|| d S )Nr0   rj   rG   XYr%   rH   rr   r   r"   r+   r    yr   r
   )r   r   )r	   r   )r   r   r'   r(   r8   r9   )r   rD   rO   rN   r   r   r   test_rename_axis_style   s*    z!TestRename.test_rename_axis_stylec                 C   sP   t ddgddgddgddd	g}|tj}|jtjd
}t|| d S )Nr"   r+   r$   r,   r0   rj   )r   r#   r-   r   r#   r%   )r   rl   r   r'   r:   r8   r9   r   rD   rN   rO   r   r   r   test_rename_mapper_multi  s    z#TestRename.test_rename_mapper_multic                 C   s^   t ddgddgdddgd}|jtjtjd}t ddgddgdd	d
gd}t|| d S )Nr0   rj   rH   r   r   r%   r]   rG   r    r   )r   r   r'   r(   r:   r8   r9   r   r   r   r   test_rename_positional_named$  s    z'TestRename.test_rename_positional_namedc              	   C   sX  t ddgddgdddgd}d}tjt|d |jtjdd	 W 5 Q R X tjt|d |jtjd
d	 W 5 Q R X tjt|d |jtjd
d W 5 Q R X tjt|d |jtjdd	 W 5 Q R X tjt|d |jtjtjd
d	 W 5 Q R X d}tjt|d |jtjtjtjd W 5 Q R X tjtdd |jttd W 5 Q R X d S )Nr0   rj   rG   01r%   z:Cannot specify both 'axis' and any of 'index' or 'columns'r5   )r
   r   r   )r   r   r   <Cannot specify both 'mapper' and any of 'index' or 'columns'r]   zmultiple values)r	   )r   r<   r=   r>   r   r'   r(   id)r   rD   Zover_spec_msgr   r   r   test_rename_axis_style_raises+  s"     z(TestRename.test_rename_axis_style_raisesc              	   C   s>   t ddgd}d}tjt|d |d tj W 5 Q R X d S )Nr   r#   r/   z1rename\(\) takes from 1 to 2 positional argumentsr5   )r   r<   r=   r>   r   r'   r(   r   rD   msgr   r   r   test_rename_positional_raisesJ  s    z(TestRename.test_rename_positional_raisesc              	   C   s   t dgg}d}tjt|d |  W 5 Q R X tjt|d |jd d d W 5 Q R X tjt|d |jd d d W 5 Q R X tjt|d |jd d d d W 5 Q R X d S )Nr0   r4   r5   r%   r/   r   r
   r   r<   r=   r>   r   r   r   r   r   test_rename_no_mappings_raisesR  s    z)TestRename.test_rename_no_mappings_raisesc              	   C   s   t dgg}d}tjt|d |ji i d W 5 Q R X tjt|d |ji i d W 5 Q R X tjt|d |ji i i d W 5 Q R X d S )Nr0   r   r5   r%   r/   r   r   r   r   r   r   2test_rename_mapper_and_positional_arguments_raisesb  s    z=TestRename.test_rename_mapper_and_positional_arguments_raisesc              	   C   s   t dgdgdgdtjdgddgdd	}t d
ddgdgd dddgdddgdtjdddgddgdd	}t||dddd}|jdddd}t| |j t dddddddggdddddddgdjddgd d!}t	|| d S )"Ngz6>?gQ6@g^K=?)RTTCloseTExg)*	 *3STK_IDRPT_DaterY   r%   b33r   r   ro   u   饡驦gfffffC@gGzD@g(\>@)r   r   STK_Namer   )r   r   )r   r   innerT)howZ
left_indexZright_indexr   ZQT_Close)ZTClose_xZTClose_yr/   r   r   r   F)Zdrop)
r   r   r&   r   r   r'   Zdtypesrl   r8   r9   )r   Zdf4Zdf5krN   rO   r   r   r   "test_rename_with_duplicate_columnso  sJ      z-TestRename.test_rename_with_duplicate_columnsc                 C   sx   t tddddddddgd}d	d
dd}|j|d}t tddddddddgd	d
dgd}t|| d S )N   ro   rp   FTrj   rq   r/   r1   r2   rh   rk   r%   r   )r   rJ   rs   Zreshaper   r8   r9   )r   rD   r	   resexpr   r   r   test_rename_boolean_index  s    $z$TestRename.test_rename_boolean_indexN)__name__
__module____qualname__r   r*   rE   r<   markZparametrizer   rP   rc   rf   rg   rn   rt   r{   r'   r(   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r      sD   )
F
")r   )collectionsr   r   ZnumpyrJ   r<   Zpandasr   r   r   r   Zpandas._testingZ_testingr8   r   r   r   r   r   <module>   s   