U
    ¾mœdÚ  ã                   @   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   ú^/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/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s€t‚|jddgks’t‚| jddgd�}|  |¡s°t‚| jddgksÂt‚|jddgksÔt‚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s®t‚tjjdks¾t‚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   )ZixÚmsgr   r   r	   Ú&test_index_name_with_dict_like_raising½   s    rU   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    rV   )r6   Zpandasr$   r   Zpandas._testingZ_testingr&   r   r   r(   r/   r1   r:   r>   rA   rC   rI   ÚmarkZparametrizerR   rS   rU   rV   r   r   r   r	   Ú<module>   sJ   #úþ
üþ	