o
    ҷh1                     @   s  d dl Zd dlZd dlmZ d dlmZ d dlZd dlm	Z	m
Z
 d dlmZ d-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dd Zejdddgdd Zejd ddgd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Z d+d, Z!dS ).    N)PY311)DatetimeTZDtype)CategoricalIndex
MultiIndexFc                 C   sP   t | t |ks
J t| |D ]\}}t|}t|}tj|||d qd S )Ncheck_dtype)lenzipnpasarraytmassert_numpy_array_equal)actualexpectedr   actexp r   Z/var/www/html/venv/lib/python3.10/site-packages/pandas/tests/indexes/multi/test_get_set.pyassert_matching   s   

r   c                 C   s   ddg| _ | ddksJ | ddksJ d}tjt|d | d W d    n1 s0w   Y  tjtdd | d W d    d S 1 sMw   Y  d S )N   r   z/Too many levels: Index has only 2 levels, not 3match   zLevel fourth not foundfourth)names_get_level_numberpytestraises
IndexErrorKeyError)idxmsgr   r   r   test_get_level_number_integer   s   
"r"   c                  C   sb   t jg dg dtjddddgg dd} ttd	td
tddd}t	|| j
 d S )Nr   r      abc20200101r   UTCperiodstz)intstringdtr   int64Outcr-   r   from_productpd
date_rangeSeriesr
   dtyper   r   assert_series_equaldtypesidx_multityper   r   r   r   test_get_dtypes%   s   r@   c               	   C   sZ   t g dg dtjddddg} ttdtdtd	d
d}t	|| j
 d S )Nr#   r%   r)   r   r*   r+   r2   r3   r4   r5   )level_0level_1level_2r6   r>   r   r   r   test_get_dtypes_no_level_name5   s   rD   c                  C   sh   t jg dg dtjddddgg ddj} tjtd	td
tddgg dd}t	
| | d S )Nr#   r%   r)   r   r*   r+   )ArE   rE   r1   r2   r3   r4   r5   )index)r   r7   r8   r9   r=   r:   r
   r;   r   r   r<   )resultr   r   r   r   %test_get_dtypes_duplicate_level_namesH   s   rH   c                 C   s~   | }t jtdd |jd W d    n1 sw   Y  t jtdd |jd W d    d S 1 s8w   Y  d S )NzToo many levelsr   r   znot a valid level number)r   r   r   rF   r   ) multiindex_dataframe_random_dataframer   r   r   #test_get_level_number_out_of_boundsY   s   "rL   c                 C   s  | j | jksJ dd |D }| |}| j|ksJ |j|ks"J d}tjt|d |||  W d    n1 s=w   Y  dd |D }|j|dd}|d u sVJ |j|ks]J | j|d dd	}| j|ksmJ |j|d |d
 gkszJ |j|d ddd}|d u sJ |j|d |d
 gksJ | j|dd
gd	}| j|ksJ |j|ksJ |j|dd
gdd}|d u sJ |j|ksJ d S )Nc                 S      g | ]}|d  qS )SUFFIXr   .0namer   r   r   
<listcomp>e       z)test_set_name_methods.<locals>.<listcomp>z9Length of names must match number of levels in MultiIndexr   c                 S   rM   )SUFFIX2r   rO   r   r   r   rR   l   rS   T)inplacer   levelr   rW   rU   )rename	set_namesr   r   r   
ValueError)r    index_names	new_namesindr!   
new_names2resr   r   r   test_set_name_methodsb   s2   
ra   c                 C   s   | j }dd |D }| j}|\}}dd |D }dd |D }||g}d}tjt|d || _ W d    n1 s:w   Y  trCdnd}tjt|d || _W d    d S 1 s[w   Y  d S )	Nc                 S      g | ]	}d d |D qS )c                 S   rM   r&   r   rP   levr   r   r   rR      rS   z=test_set_levels_codes_directly.<locals>.<listcomp>.<listcomp>r   rP   rW   r   r   r   rR          z2test_set_levels_codes_directly.<locals>.<listcomp>c                 S      g | ]}|d  d qS r   r$   r   rP   xr   r   r   rR          c                 S      g | ]}|d  d  qS r   r   rj   r   r   r   rR      rl   zCan't set attributer   z5property 'codes' of 'MultiIndex' object has no setterzcan't set attribute)levelscodesr   r   AttributeErrorr   )r    ro   
new_levelsrp   major_codesminor_codes	new_codesr!   r   r   r   test_set_levels_codes_directly   s$   "rv   c                 C   s  | j }dd |D }| |}t|j | t| j | | j|d dd}t|j |d |d g t| j | | j|d dd}t|j |d |d g t| j | | j|ddgd}t|j | t| j | |  }tjtdd | jdgdd W d    n1 sw   Y  t| j |j d	d
 tjtdd | jg ddd W d    n1 sw   Y  t| j|jd	d
 tjt	dd | jddd W d    n1 sw   Y  t| j |j d	d
 tjt	dd | jddd W d    n1 sw   Y  t| j|jd	d
 d S )Nc                 S   rb   )c                 S   rM   rc   r   rd   r   r   r   rR      rS   z.test_set_levels.<locals>.<listcomp>.<listcomp>r   rf   r   r   r   rR      rg   z#test_set_levels.<locals>.<listcomp>r   rV   r   z^Onr   r(   Tr   )r   r   r   r$         z^Levelsz^Codes)
ro   
set_levelsr   copyr   r   r[   	set_codesrp   	TypeError)r    ro   rr   ind2original_indexr   r   r   test_set_levels   s>   
r   c           	      C   sB  | j }|\}}dd |D }dd |D }||g}| |}t|j | t| j | | j|d dd}t|j |d |d g t| j | | j|d dd}t|j |d |d g t| j | | j|ddgd}t|j | t| j | tdd tdD }td	d
d
}tdd |D }|j|dd}||sJ d S )Nc                 S   rh   ri   r   rj   r   r   r   rR      rl   z"test_set_codes.<locals>.<listcomp>c                 S   rm   rn   r   rj   r   r   r   rR      rl   r   rV   r   c                 S      g | ]}d |fqS r   r   rP   ir   r   r   rR      rS         c                 S   r   r   r   r   r   r   r   rR      rS   )rp   rW   )rp   r{   r   r   from_tuplesrangeequals)	r    rp   rs   rt   ru   r}   r^   r   rG   r   r   r   test_set_codes   s,   
r   c                 C   s  | j | j}}| j}tjtdd | |d g W d    n1 s$w   Y  tjtdd | |d g W d    n1 sCw   Y  tjtdd | |d g W d    n1 sbw   Y  tjt	dd | |d  W d    n1 sw   Y  tjt	dd | |d  W d    n1 sw   Y  tjt	dd | |d  W d    n1 sw   Y  tjt	dd | j|d ddgd	 W d    n1 sw   Y  tjt	dd | j|dd	 W d    n1 sw   Y  tjt	dd | j|d ddgd	 W d    n	1 sw   Y  tjt	dd | j|dd	 W d    n	1 s>w   Y  tjtdd | j|d ddgd	 W d    n	1 saw   Y  tjt	d
d | j|dd	 W d    d S 1 sw   Y  d S )NzLength of levelsr   r   zLength of codeszLength of nameszlist of lists-likez	list-liker   rV   zNames must be a)
ro   rp   r   r   r   r[   ry   r{   rZ   r|   )r    ro   rp   r   r   r   r   %test_set_levels_codes_names_bad_input   sL   $r   rU   Tc                 C   sT   t ddggddggdgd}t ddgg}|jdd| d}| r"|}t|| d S )Nr   r   first)ro   rp   r   rX   )r   r7   rZ   r   assert_index_equal)rU   r   mrG   r   r   r   test_set_names_with_nlevel_1  s   r   orderedc                 C   s   t tdg dg}ttd| d}|j|dd}t |g dg|jd}t|| |d}ttd|j	|j
d	}t|| d S )
Nxyzx)r   r   r   r$   bac)r   r   rV   )ro   rp   bacb)
categoriesr   )r   from_arrayslistr   ry   rp   r   r   get_level_valuesr   r   )r   rF   cidxrG   r   
result_lvlexpected_lvlr   r   r   test_set_levels_categorical.  s   
r   c                  C   s   g d} g dd }t j| |gddgd}tjtjddg d|d	}| }|j	d u s1J |j
jd
ks9J d|jd< |j	d u sEJ |j
jd
ksMJ d S )N)hansr   r   grether   r   )123r   NameNumberr1   )   rw   )onetwothreefour)columnsrF   )r   r   g(\X@))r   4r   )r   r   r8   	DataFramer
   randomdefault_rngstandard_normal
sort_index_is_copyrF   r   at)lev1lev2r    dfr   r   r   test_set_value_keeps_names?  s   
r   c                  C   sn   g d} dgd }t j| |gddgd}|jttg ddd}g d	}t j||gddgd}t|| d S )
Nr#   blackr$   sizecolorr1   )r   r   r   rV   )r$   r   r   )r   r   ry   mapr.   r   r   )sizescolorsrF   rG   expected_sizesr   r   r   r   test_set_levels_with_iterableQ  s   
r   c                  C   sN   t jg gdgd} | jtg dd}t jtg gdgd}t|| d S )NrE   r1   r   rV   )r   r   ry   r8   DatetimeIndexr   r   midxrG   r   r   r   r   test_set_empty_level^  s   r   c                  C   s   t jddgddgd} tjtdd | g dd	 W d    n1 s%w   Y  tjtdd | d	d
gd
d	ggd	 W d    d S 1 sIw   Y  d S )N)r   r   )r$   r   foobarr1   zpositional argumentsr   r%   r   r   )r   r   r   r   r|   ry   r{   )r    r   r   r    test_set_levels_pos_args_removalf  s   "r   c                  C   sN   t ddgg} | jtddgdd}t tddgg}t|| d S )Nrx   r   r   r   r   )ro   rW   )r   r   ry   r8   Categoricalr   r   r   r   r   r   &test_set_levels_categorical_keep_dtypev  s   r   )F)"numpyr
   r   pandas.compatr   pandas.core.dtypes.dtypesr   pandasr8   r   r   pandas._testing_testingr   r   r"   r@   rD   rH   rL   ra   rv   r   r   r   markparametrizer   r   r   r   r   r   r   r   r   r   r   <module>   s6    

	"-&/

