o
    ŀg2                     @   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   [/var/www/html/myenv/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   sh   t jg dg dtjddddgg dd}| sd	nd
}ttd|tddd}t	||j
 d S )Nr   r      abc20200101r   UTCperiodstz)intstringdtr   objectr/   int64utcr-   r   from_productpd
date_rangeSeriesr
   dtyper   r   assert_series_equaldtypesusing_infer_stringidx_multityper   r   r   r   r   test_get_dtypes%   s   rA   c              	   C   s`   t g dg dtjddddg}| sdnd}ttd	|td
dd}t	||j
 d S )Nr#   r%   r)   r   r*   r+   r2   r/   r3   r4   r5   )level_0level_1level_2r6   r>   r   r   r   test_get_dtypes_no_level_name7   s   rE   c                 C   sn   t jg dg dtjddddgg ddj}| sd	nd
}tjtd|tddgg dd}t	
|| d S )Nr#   r%   r)   r   r*   r+   )ArF   rF   r1   r2   r/   r3   r4   r5   )index)r   r7   r8   r9   r=   r:   r
   r;   r   r   r<   )r?   resultr   r   r   r   r   %test_get_dtypes_duplicate_level_namesK   s   rI   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   rG   r   ) multiindex_dataframe_random_dataframer   r   r   #test_get_level_number_out_of_bounds]   s   "rM   c                 C   s  ddg}| 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 sAw   Y  dd |D }|j|dd	}|d u sZJ |j|ksaJ | j|d
 d
d}| j|ksqJ |j|d
 |d gks~J |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 )Nfirstsecondc                 S      g | ]}|d  qS )SUFFIXr   .0namer   r   r   
<listcomp>j       z)test_set_name_methods.<locals>.<listcomp>z9Length of names must match number of levels in MultiIndexr   c                 S   rP   )SUFFIX2r   rR   r   r   r   rU   q   rV   T)inplacer   levelr   rZ   rX   )rename	set_namesr   r   r   
ValueError)r    index_names	new_namesindr!   
new_names2resr   r   r   test_set_name_methodsf   s4   
rd   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   rP   r&   r   rS   levr   r   r   rU      rV   z=test_set_levels_codes_directly.<locals>.<listcomp>.<listcomp>r   rS   rZ   r   r   r   rU          z2test_set_levels_codes_directly.<locals>.<listcomp>c                 S      g | ]}|d  d qS r   r$   r   rS   xr   r   r   rU          c                 S      g | ]}|d  d  qS r   r   rm   r   r   r   rU      ro   zCan't set attributer   z5property 'codes' of 'MultiIndex' object has no setterzcan't set attribute)levelscodesr   r   AttributeErrorr   )r    rr   
new_levelsrs   major_codesminor_codes	new_codesr!   r   r   r   test_set_levels_codes_directly   s$   "ry   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   re   )c                 S   rP   rf   r   rg   r   r   r   rU      rV   z.test_set_levels.<locals>.<listcomp>.<listcomp>r   ri   r   r   r   rU      rj   z#test_set_levels.<locals>.<listcomp>r   rY   r   z^Onr   r(   Tr   )r   r   r   r$         z^Levelsz^Codes)
rr   
set_levelsr   copyr   r   r^   	set_codesrs   	TypeError)r    rr   ru   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   rk   rl   r   rm   r   r   r   rU      ro   z"test_set_codes.<locals>.<listcomp>c                 S   rp   rq   r   rm   r   r   r   rU      ro   r   rY   r   c                 S      g | ]}d |fqS r   r   rS   ir   r   r   rU      rV         c                 S   r   r   r   r   r   r   r   rU      rV   )rs   rZ   )rs   r~   r   r   from_tuplesrangeequals)	r    rs   rv   rw   rx   r   ra   r   rH   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   rY   zNames must be a)
rr   rs   r   r   r   r^   r|   r~   r]   r   )r    rr   rs   r   r   r   r   %test_set_levels_codes_names_bad_input   sL   $r   rX   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   rN   )rr   rs   r   r[   )r   r7   r]   r   assert_index_equal)rX   r   mrH   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   rY   )rr   rs   bacb)
categoriesr   )r   from_arrayslistr   r|   rs   r   r   get_level_valuesr   r   )r   rG   cidxrH   r   
result_lvlexpected_lvlr   r   r   test_set_levels_categorical3  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   )   rz   )onetwothreefour)columnsrG   )r   r   g(\X@))r   4r   )r   r   r8   	DataFramer
   randomdefault_rngstandard_normal
sort_index_is_copyrG   r   at)lev1lev2r    dfr   r   r   test_set_value_keeps_namesD  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   rY   )r$   r   r   )r   r   r|   mapr.   r   r   )sizescolorsrG   rH   expected_sizesr   r   r   r   test_set_levels_with_iterableV  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 )NrF   r1   r   rY   )r   r   r|   r8   DatetimeIndexr   r   midxrH   r   r   r   r   test_set_empty_levelc  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   r|   r~   )r    r   r   r    test_set_levels_pos_args_removalk  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 )Nr{   r   r   r   r   )rr   rZ   )r   r   r|   r8   Categoricalr   r   r   r   r   r   &test_set_levels_categorical_keep_dtype{  s   r   )F)"numpyr
   r   pandas.compatr   pandas.core.dtypes.dtypesr   pandasr8   r   r   pandas._testing_testingr   r   r"   rA   rE   rI   rM   rd   ry   r   r   r   markparametrizer   r   r   r   r   r   r   r   r   r   r   <module>   s6    

	#-&/

