U
    sVcr                     @   sr  d dl Z d dlZd dlmZ d dlmZ dd Zdd Zdd Z	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ge jdddidddgfddddddgfddidddgfi dddgfddidddgfdd d!dddgfgd"d# Ze jdddge jdddiddgfdddddgfddiddgfi ddgfgd$d% Zd&d' Zd(d) ZdS )*    N)
MultiIndexc                 C   s    dd | j D t|kstd S )Nc                 S   s   g | ]
}|j qS  name.0levelr   r   I/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/indexes/multi/test_names.py
<listcomp>	   s     z%check_level_names.<locals>.<listcomp>)levelslistAssertionError)indexnamesr   r   r	   check_level_names   s    r   c                  C   s4   t jdddgddgd} | dd  j| jks0td S )N)ab      )cdxyr   r   )r   from_tuplesr   r   )r   r   r   r	   test_slice_keep_name   s    r   c                  C   s   t dddgdddgdddgd} | d	} d
dg| jd< t dddd
gddddgddddgd}|d	}t| | d S )Nr   r         r      )r   r   zr!   	   
   )pdZ	DataFrameZ	set_indexloctmZassert_frame_equal)resultZdf_expectedr   r   r	   test_index_name_retained   s    $
"
r(   c                 C   s   dd | j D ddgkst|  }|  }|  }dd | jD }|| _t| ddg t|ddg t|ddg t|ddg dd |jD |_t| ddg d S )	Nc                 S   s   g | ]
}|j qS r   r   r   r   r   r	   r
      s     z'test_changing_names.<locals>.<listcomp>firstsecondc                 S   s   g | ]}|d  qS )r   r   r   r   r   r   r	   r
   %   s     ZfirstaZsecondac                 S   s   g | ]}|d  qS )r   r   r+   r   r   r	   r
   /   s     )r   r   viewcopyZ_viewr   r   )idxr,   r-   Zshallow_copyZ	new_namesr   r   r	   test_changing_names   s    r/   c                 C   s$   |  dddg}|j| jks td S )N   r   r   )Ztaker   r   )r.   Ztakenr   r   r	   test_take_preserve_name3   s    r1   c               	   C   sD  t t tjddgddgd} W 5 Q R X |  }| |sBt| jddgksTt|jddgksft| jddgd}| |st| jddgkst|jddgkst| jddgd}| |st| jddgkst|jddgkstt	j
td	d
 | jdgd W 5 Q R X t	j
tdd
 | jdgdggd W 5 Q R X d S )Nr   )r0      ZMyName1ZMyName2r   ZNewName1ZNewName2r   z$Length of new names must be 2, got 1matchZmarioz'MultiIndex.name must be a hashable typeZluigi)r&   Zassert_produces_warningFutureWarningr$   Indexr-   equalsr   r   pytestraises
ValueError	TypeError)Z	multi_idxZ
multi_idx1Z
multi_idx2Z
multi_idx3r   r   r	   test_copy_names8   s$     r<   c              	   C   s4  |ddgkst dd | jD }||ks,t | }tjtdd t|dt|jdg  W 5 Q R X tjtdd t|dg  W 5 Q R X | j\}}| j\}}tjtdd t	||g||gdgd	 W 5 Q R X tjtdd" t	||g||gdddgd	 W 5 Q R X d
dg|_dd |jD }|d
dgks0t d S )Nr)   r*   c                 S   s   g | ]
}|j qS r   r   r   r   r   r	   r
   \   s     ztest_names.<locals>.<listcomp>z^Length of namesr3   r   third)r   codesr   r   r   c                 S   s   g | ]
}|j qS r   r   r   r   r   r	   r
   x   s     )
r   r   r8   r9   r:   setattrr   r   r>   r   )r.   Zindex_namesZlevel_namesr   Z
major_axisZ
minor_axisZmajor_codesZminor_codesr   r   r	   
test_namesX   s2    "


r@   c              	   C   s2   ddg| _ tjtdd | d W 5 Q R X d S )Nfoozname foo occurs multiple timesr3   )r   r8   r9   r:   Z_get_level_numberr.   r   r   r	   (test_duplicate_level_names_access_raises|   s    
rC   c                  C   sH   t jdgddggddgd} | jd jdks0t| jd jdksDtd S )Nr   r   r   r   r   r   )r   from_productr   r   r   rB   r   r   r	   test_get_names_from_levels   s    rE   c               	   C   s   t jdgddggddgd} tjtdd d| jd	 _W 5 Q R X tjtdd d| jd _W 5 Q R X tjd| jd	 d
}tjtdd d|j	_W 5 Q R X tj
jdksttjjjjdksttjjdkstd S )Nr   r   r   r   r   	set_namesr3   rA   r   )r   barF)r   rD   r8   r9   RuntimeErrorr   r   r$   ZSeriesr   r6   Z_no_setting_namer   coreapiZNumericIndexZ
RangeIndex)r.   newr   r   r	   %test_setting_names_from_levels_raises   s    rL   funcrenamerF   zrename_dict, exp_namesr   r!   r   )r   r   r   r   )r   r   c                 C   sd   t jddgddgddggdddgd	}t|| |}t jddgddgddgg|d	}t|| d S )
Nr   r   r0   r2   r    r   r   r   r   r   from_arraysgetattrr&   Zassert_index_equalrM   Zrename_dictZ	exp_namesmir'   expectedr   r   r	   +test_name_mi_with_dict_like_duplicate_names   s    & rU   c                 C   sV   t jddgddggddgd}t|| |}t jddgddgg|d}t|| d S )Nr   r   r0   r2   r   r   r   rO   rR   r   r   r	   test_name_mi_with_dict_like   s    rV   c               	   C   s>   t ddg} d}tjt|d | ddi W 5 Q R X d S )Nr   r   z2Can only pass dict-like as `names` for MultiIndex.r3   r   r!   )r$   r6   r8   r9   r;   rF   )ixmsgr   r   r	   &test_index_name_with_dict_like_raising   s    rY   c               	   C   sR   t jddgddggddgd} tjtdd	 | jdd
idd
id W 5 Q R X d S )Nr   r   r0   r2   r   r   r   z(Can not pass level for dictlike `names`.r3   r!   )r   r   )r   rP   r8   r9   r;   rF   )rS   r   r   r	   &test_multiindex_name_and_level_raising   s    rZ   )r8   Zpandasr$   r   Zpandas._testingZ_testingr&   r   r   r(   r/   r1   r<   r@   rC   rE   rL   markZparametrizerU   rV   rY   rZ   r   r   r   r	   <module>   sJ    $
	