U
    c*                     @   sf   d dl Zd dlZd dlmZmZ d dlmZ G dd dZ	G dd de	Z
G dd de	Zd	d
 ZdS )    N)	DataFrameSeriesc                   @   sz   e Zd Zejdd Zdd Zdd Zej	ddd	d
dgdd Z
dd Zej	dddgdd Zdd Zdd ZdS )SharedSetAxisTestsc                 C   s   t dd S )NzImplemented by subclasses)NotImplementedError)self r   L/tmp/pip-unpacked-wheel-g7fro6k3/pandas/tests/frame/methods/test_set_axis.pyobj   s    zSharedSetAxisTests.objc              	   C   s`   t dd t| }| }||_d}tjt|d |j|ddd}W 5 Q R X t|| d S )Nabcdz(set_axis 'inplace' keyword is deprecatedmatchr   Faxisinplace	listlencopyindextmassert_produces_warningFutureWarningset_axisassert_equal)r   r	   	new_indexexpectedmsgresultr   r   r   test_set_axis   s    z SharedSetAxisTests.test_set_axisc              
      sJ  t dd t  } jd d    }||_tjtdd. t	t
  j|dddd W 5 Q R X W 5 Q R X  j|dddt|  k	st jdkrt rtn&t fd	d
t jd D rt j|dddt|  k	st jdkr&t sNtn(t fdd
t jd D sNt j|ddt|  k	svt jdkrt rtn(t fdd
t jd D rtt	t
  j|ddd}W 5 Q R X |d kstt|   jdkrt sFtn(t fdd
t jd D sFtd S )Nr
   z.Cannot specify both inplace=True and copy=Truer   r   T)r   r   r   )r   r      c                 3   s6   | ].}t jd d |f  jd d |f V  qd S Nr   shares_memoryiloc.0ir	   r   r   r   	<genexpr>2   s   z8SharedSetAxisTests.test_set_axis_copy.<locals>.<genexpr>Fc                 3   s6   | ].}t jd d |f  jd d |f V  qd S r    r!   r$   r'   r   r   r(   >   s   r   c                 3   s6   | ].}t jd d |f  jd d |f V  qd S r    r!   r$   r'   r   r   r(   K   s   )r   r   c                 3   s6   | ].}t  jd d |f jd d |f V  qd S r    r!   r$   )r	   origr   r   r(   Y   s   )r   r   r#   r   r   pytestraises
ValueErrorr   r   r   r   r   AssertionErrorndimr"   anyrangeshapeall)r   r	   r   r   resr   )r	   r*   r   r   test_set_axis_copy   sV     &
z%SharedSetAxisTests.test_set_axis_copyr   r   r   r   columnsc              	   C   s   |j dkr|dkrd S tdd t| }| }|dkrB||_n||_| }tt |j	||dd W 5 Q R X t
|| d S )Nr   )r   r6   r
   )r   r   Tr   )r/   r   r   r   r   r6   r   r   r   r   r   )r   r   r	   r   r   r   r   r   r   test_set_axis_inplace_axis^   s    z-SharedSetAxisTests.test_set_axis_inplace_axisc              	   C   sZ   t dd t| }| }||_tjtdd |j|dd}W 5 Q R X t|| d S )Nr
   zset_axis 'inplace' keywordr   F)r   r   )r   r	   r   r   r   r   r   r   !test_set_axis_unnamed_kwarg_warnsr   s     z4SharedSetAxisTests.test_set_axis_unnamed_kwarg_warns   Zfooc              	   C   s0   t jtdd |jtd|d W 5 Q R X d S )NzNo axis namedr   abcr)   )r+   r,   r-   r   r   )r   r   r	   r   r   r   test_set_axis_invalid_axis_name   s    z2SharedSetAxisTests.test_set_axis_invalid_axis_namec              	   C   s(   d}t jt|d d |_W 5 Q R X d S )NzNIndex\(\.\.\.\) must be called with a collection of some kind, None was passedr   )r+   r,   	TypeErrorr   r   r	   r   r   r   r   *test_set_axis_setattr_index_not_collection   s    z=SharedSetAxisTests.test_set_axis_setattr_index_not_collectionc              	   C   s   dt | dt |d  d}tjt|d tt |d |_W 5 Q R X |jdkrtjtdd |jd d d |_W 5 Q R X d S )Nz#Length mismatch: Expected axis has z elements, new values have r   z	 elementsr      zLength mismatch)	r   r+   r,   r-   nparanger   r/   r6   r=   r   r   r   (test_set_axis_setattr_index_wrong_length   s    
z;SharedSetAxisTests.test_set_axis_setattr_index_wrong_lengthN)__name__
__module____qualname__r+   fixturer	   r   r5   markZparametrizer7   r8   r;   r>   rB   r   r   r   r   r      s   
A

	r   c                   @   s   e Zd Zejdd ZdS )TestDataFrameSetAxisc                 C   s0   t dddgdddgddd	gd
dddgd}|S )Ng?g@gffffff
@g      @gffffff@g@g@g      @gffffff@)ABCi  i  i  r   )r   )r   dfr   r   r   r	      s
    zTestDataFrameSetAxis.objNrC   rD   rE   r+   rF   r	   r   r   r   r   rH      s   rH   c                   @   s   e Zd Zejdd ZdS )TestSeriesSetAxisc                 C   s    t tdddddgdd}|S )N   r   r9         Zint64)r   Zdtype)r   r@   rA   )r   serr   r   r   r	      s    zTestSeriesSetAxis.objNrN   r   r   r   r   rO      s   rO   c               	   C   s   t ddddgi} d}tjt|d | dddgd}W 5 Q R X t ddddgidddgd	}t|| tdddg}d
}tjt|d |dddgd}W 5 Q R X tdddgdddgd	}t|| d S )Nar   r?   r9   zxIn a future version of pandas all arguments of DataFrame\.set_axis except for the argument 'labels' will be keyword-onlyr   rP   r   rL   zuIn a future version of pandas all arguments of Series\.set_axis except for the argument 'labels' will be keyword-only)r   r   r   r   r   Zassert_frame_equalr   Zassert_series_equal)rM   r   r   r   rS   r   r   r   -test_nonkeyword_arguments_deprecation_warning   s    rU   )Znumpyr@   r+   Zpandasr   r   Zpandas._testingZ_testingr   r   rH   rO   rU   r   r   r   r   <module>   s    
