a
    Gbr                     @   sf  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g dfdddg dfd dig d!fi g d"fdd#ig d"fdd$d%g d!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J d S )Nc                 S   s   g | ]
}|j qS  name.0levelr   r   Dlib/python3.9/site-packages/pandas/tests/indexes/multi/test_names.py
<listcomp>	       z%check_level_names.<locals>.<listcomp>)levelslist)indexnamesr   r   r	   check_level_names   s    r   c                  C   s2   t jg dddgd} | dd  j| jks.J d S )N))ab      )cdxyr   r   )r   Zfrom_tuplesr   )r   r   r   r	   test_slice_keep_name   s    r   c                  C   sn   t g dg dg dd} | d} ddg| jd< t g dg d	g d
d}|d}t| | d S )N)r   r      )r   r      )r      )r   r   zr    	   
   )r   r   r   r!   )r   r   r   r"   )r   r   r   r"   )pdZ	DataFrameZ	set_indexZ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J |  }|  }|  }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
      r   z'test_changing_names.<locals>.<listcomp>firstsecondc                 S   s   g | ]}|d  qS )r   r   r   r   r   r   r	   r
   %   r   ZfirstaZsecondac                 S   s   g | ]}|d  qS )r   r   r)   r   r   r	   r
   /   r   )r   viewcopyZ_viewr   r   )idxr*   r+   Zshallow_copyZ	new_namesr   r   r	   test_changing_names   s    r-   c                 C   s"   |  g d}|j| jksJ d S )N)   r   r   )Ztaker   )r,   Ztakenr   r   r	   test_take_preserve_name3   s    r/   c                  C   s  t t& tjddgddgd} W d    n1 s60    Y  |  }| |sVJ | jddgkshJ |jddgkszJ | jddgd}| |sJ | jddgksJ |jddgksJ | jddgd}| |sJ | jddgksJ |jddgksJ tj	t
d	d
 | jdgd W d    n1 s20    Y  tj	tdd
$ | jdgdggd W d    n1 sv0    Y  d S )Nr   )r.      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+   Zequalsr   pytestraises
ValueError	TypeError)Z	multi_idxZ
multi_idx1Z
multi_idx2Z
multi_idx3r   r   r	   test_copy_names8   s$    4.r9   c                 C   s  |ddgksJ dd | j D }||ks,J | }tjtdd( t|dt|jdg  W d    n1 sl0    Y  tjtdd t|dg  W d    n1 s0    Y  | j \}}| j\}}tjtdd( t||g||gdgd	 W d    n1 s0    Y  tjtdd* t||g||gg d
d	 W d    n1 sL0    Y  ddg|_dd |j D }|ddgksJ d S )Nr'   r(   c                 S   s   g | ]
}|j qS r   r   r   r   r   r	   r
   \   r   ztest_names.<locals>.<listcomp>z^Length of namesr1   r   third)r   codesr   )r'   r(   r:   r   r   c                 S   s   g | ]
}|j qS r   r   r   r   r   r	   r
   x   r   )	r   r5   r6   r7   setattrr   r   r;   r   )r,   Zindex_namesZlevel_namesr   Z
major_axisZ
minor_axisZmajor_codesZminor_codesr   r   r	   
test_namesX   s2    6*

&&
r=   c                 C   sF   ddg| _ tjtdd | d W d    n1 s80    Y  d S )Nfoozname foo occurs multiple timesr1   )r   r5   r6   r7   Z_get_level_numberr,   r   r   r	   (test_duplicate_level_names_access_raises|   s    
r@   c                  C   sH   t jdgddggddgd} | jd jdks0J | jd jdksDJ d S )Nr   r   r   r   r   r   )r   from_productr   r   r?   r   r   r	   test_get_names_from_levels   s    rB   c                  C   s  t jdgddggddgd} tjtdd d| jd	 _W d    n1 sL0    Y  tjtdd d| jd _W d    n1 s0    Y  tjd| jd	 d
}tjtdd d|j	_W d    n1 s0    Y  tj
jdu sJ tjjjjdu sJ tjjdu sJ d S )Nr   r   r   r   r   	set_namesr1   r>   r   )r   ZbarF)r   rA   r5   r6   RuntimeErrorr   r   r#   ZSeriesr   r4   Z_no_setting_namecoreZapiZNumericIndexZ
RangeIndex)r,   newr   r   r	   %test_setting_names_from_levels_raises   s    **&rG   funcrenamerC   zrename_dict, exp_namesr   r    )r    r   r    )r   r   )r    r   r    r   )r   r    r   r   r   r   r   r   )r   r   c                 C   sb   t jddgddgddggg dd}t|| |}t jddgddgddgg|d}t|| d S )	Nr   r   r.   r0   r   r   rJ   r   r   from_arraysgetattrr$   Zassert_index_equalrH   Zrename_dictZ	exp_namesmir%   Zexpectedr   r   r	   +test_name_mi_with_dict_like_duplicate_names   s    $ rP   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   r.   r0   r   r   r   rK   rN   r   r   r	   test_name_mi_with_dict_like   s    rQ   c                  C   sR   t ddg} d}tjt|d | ddi W d    n1 sD0    Y  d S )Nr   r   z2Can only pass dict-like as `names` for MultiIndex.r1   r   r    )r#   r4   r5   r6   r8   rC   )Zixmsgr   r   r	   &test_index_name_with_dict_like_raising   s    rS   c                  C   sf   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 d    n1 sX0    Y  d S )Nr   r   r.   r0   r   r   r   z(Can not pass level for dictlike `names`.r1   r    )r   r   )r   rL   r5   r6   r8   rC   )rO   r   r   r	   &test_multiindex_name_and_level_raising   s    rT   )r5   Zpandasr#   r   Zpandas._testingZ_testingr$   r   r   r&   r-   r/   r9   r=   r@   rB   rG   ZmarkZparametrizerP   rQ   rS   rT   r   r   r   r	   <module>   sJ    $

	