U
    >vf                     @   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-vdrwu74i/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   s.  t jddgddgd} |  }| |s,t| jddgks>t|jddgksPt| jddgd}| |snt| 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   r   r-   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
   Y   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
   u   s     )
r   r   r6   r7   r8   setattrr   r   r<   r   )r.   Zindex_namesZlevel_namesr   Z
major_axisZ
minor_axisZmajor_codesZminor_codesr   r   r	   
test_namesV   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   r6   r7   r8   Z_get_level_numberr.   r   r   r	   (test_duplicate_level_names_access_raisesy   s    
rA   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   r@   r   r   r	   test_get_names_from_levels   s    rC   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dkstd S )Nr   r   r   r   r   	set_namesr3   r?   r   )r   barF)r   rB   r6   r7   RuntimeErrorr   r   r$   ZSeriesr   IndexZ_no_setting_namer   Z
RangeIndex)r.   newr   r   r	   %test_setting_names_from_levels_raises   s    rI   funcrenamerD   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rJ   Zrename_dictZ	exp_namesmir'   expectedr   r   r	   +test_name_mi_with_dict_like_duplicate_names   s    & rR   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   rL   rO   r   r   r	   test_name_mi_with_dict_like   s    rS   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$   rG   r6   r7   r9   rD   )ixmsgr   r   r	   &test_index_name_with_dict_like_raising   s    rV   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   rM   r6   r7   r9   rD   )rP   r   r   r	   &test_multiindex_name_and_level_raising   s    rW   )r6   Zpandasr$   r   Zpandas._testingZ_testingr&   r   r   r(   r/   r1   r:   r>   rA   rC   rI   markZparametrizerR   rS   rV   rW   r   r   r   r	   <module>   sJ   #
	