o
    ChF2                     @   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   y/var/www/html/myvaluetrips/my_value_trip_new/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   sr   t jg dg dtjddddgg dd}| sd	ntjtj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   objectna_valueint64utcr-   r   from_productpd
date_rangeStringDtyper
   nanSeriesdtyper   r   assert_series_equaldtypesusing_infer_stringidx_multityper   r   r   r   r   test_get_dtypes%   s   rE   c              	   C   sj   t g dg dtjddddg}| sdntjtjd}ttd	|t	d
dd}t
||j d S )Nr#   r%   r)   r   r*   r+   r2   r3   r5   r6   r7   )level_0level_1level_2r8   rB   r   r   r   test_get_dtypes_no_level_name7   s   rI   c                 C   sx   t jg dg dtjddddgg ddj}| sd	ntjtjd
}tjt	d|t
ddgg dd}t|| d S )Nr#   r%   r)   r   r*   r+   )ArJ   rJ   r1   r2   r3   r5   r6   r7   )index)r   r9   r:   r;   rA   r<   r
   r=   r>   r?   r   r   r@   )rC   resultr   r   r   r   r   %test_get_dtypes_duplicate_level_namesK   s   rM   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   rK   r   ) multiindex_dataframe_random_dataframer   r   r   #test_get_level_number_out_of_bounds]   s   "rQ   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   rT   )SUFFIX2r   rV   r   r   r   rY   q   rZ   T)inplacer   levelr   r^   r\   )rename	set_namesr   r   r   
ValueError)r    index_names	new_namesindr!   
new_names2resr   r   r   test_set_name_methodsf   s4   
rh   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   rT   r&   r   rW   levr   r   r   rY      rZ   z=test_set_levels_codes_directly.<locals>.<listcomp>.<listcomp>r   rW   r^   r   r   r   rY          z2test_set_levels_codes_directly.<locals>.<listcomp>c                 S      g | ]}|d  d qS r   r$   r   rW   xr   r   r   rY          c                 S      g | ]}|d  d  qS r   r   rq   r   r   r   rY      rs   zCan't set attributer   z5property 'codes' of 'MultiIndex' object has no setterzcan't set attribute)levelscodesr   r   AttributeErrorr   )r    rv   
new_levelsrw   major_codesminor_codes	new_codesr!   r   r   r   test_set_levels_codes_directly   s$   "r}   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   ri   )c                 S   rT   rj   r   rk   r   r   r   rY      rZ   z.test_set_levels.<locals>.<listcomp>.<listcomp>r   rm   r   r   r   rY      rn   z#test_set_levels.<locals>.<listcomp>r   r]   r   z^Onr   r(   Tr   )r   r   r   r$         z^Levelsz^Codes)
rv   
set_levelsr   copyr   r   rb   	set_codesrw   	TypeError)r    rv   ry   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   ro   rp   r   rq   r   r   r   rY      rs   z"test_set_codes.<locals>.<listcomp>c                 S   rt   ru   r   rq   r   r   r   rY      rs   r   r]   r   c                 S      g | ]}d |fqS r   r   rW   ir   r   r   rY      rZ         c                 S   r   r   r   r   r   r   r   rY      rZ   )rw   r^   )rw   r   r   r   from_tuplesrangeequals)	r    rw   rz   r{   r|   r   re   r   rL   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   r]   zNames must be a)
rv   rw   r   r   r   rb   r   r   ra   r   )r    rv   rw   r   r   r   r   %test_set_levels_codes_names_bad_input   sL   $r   r\   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   rR   )rv   rw   r   r_   )r   r9   ra   r   assert_index_equal)r\   r   mrL   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   r]   )rv   rw   bacb)
categoriesr   )r   from_arrayslistr   r   rw   r   r   get_level_valuesr   r   )r   rK   cidxrL   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   )   r~   )onetwothreefour)columnsrK   )r   r   g(\X@))r   4r   )r   r   r:   	DataFramer
   randomdefault_rngstandard_normal
sort_index_is_copyrK   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   r]   )r$   r   r   )r   r   r   mapr.   r   r   )sizescolorsrK   rL   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 )NrJ   r1   r   r]   )r   r   r   r:   DatetimeIndexr   r   midxrL   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   )rv   r^   )r   r   r   r:   Categoricalr   r   r   r   r   r   &test_set_levels_categorical_keep_dtype{  s   r   )F)"numpyr
   r   pandas.compatr   pandas.core.dtypes.dtypesr   pandasr:   r   r   pandas._testing_testingr   r   r"   rE   rI   rM   rQ   rh   r}   r   r   r   markparametrizer   r   r   r   r   r   r   r   r   r   r   <module>   s6    

	#-&/

