o
    $jF2                     @   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npZasarraytmZassert_numpy_array_equal)actualexpectedr   Zactexp r   h/var/www/html/Deteccion_Ine/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 foundZ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Zperiodstz)intstringdtr   objectZna_valueint64utcr(   r   from_productpd
date_rangeStringDtyper
   nanSeriesdtyper   r   assert_series_equaldtypesusing_infer_stringZidx_multityper   r   r   r   r   test_get_dtypes%   s   r>   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'   r-   r.   r/   r0   r1   )Zlevel_0Zlevel_1Zlevel_2r2   r<   r   r   r   test_get_dtypes_no_level_name7   s   r?   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'   )Ar@   r@   r,   r-   r.   r/   r0   r1   )index)r   r3   r4   r5   r;   r6   r
   r7   r8   r9   r   r   r:   )r=   resultr   r   r   r   r   %test_get_dtypes_duplicate_level_namesK   s   rC   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   rA   r   )Z multiindex_dataframe_random_dataframer   r   r   #test_get_level_number_out_of_bounds]   s   "rF   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 )Z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   rI   )ZSUFFIX2r   rJ   r   r   r   rM   q   rN   T)inplacer   levelr   rQ   rO   )rename	set_namesr   r   r   
ValueError)r   Zindex_namesZ	new_namesindr   Z
new_names2resr   r   r   test_set_name_methodsf   s4   
rX   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   rI   r"   r   rK   Zlevr   r   r   rM      rN   z=test_set_levels_codes_directly.<locals>.<listcomp>.<listcomp>r   rK   rQ   r   r   r   rM          z2test_set_levels_codes_directly.<locals>.<listcomp>c                 S      g | ]}|d  d qS r   r    r   rK   xr   r   r   rM          c                 S      g | ]}|d  d  qS r   r   r`   r   r   r   rM      rb   zCan't set attributer   z5property 'codes' of 'MultiIndex' object has no setterzcan't set attribute)levelscodesr   r   AttributeErrorr   )r   re   
new_levelsrf   major_codesminor_codes	new_codesr   r   r   r   test_set_levels_codes_directly   s$   "rl   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   rY   )c                 S   rI   rZ   r   r[   r   r   r   rM      rN   z.test_set_levels.<locals>.<listcomp>.<listcomp>r   r\   r   r   r   rM      r]   z#test_set_levels.<locals>.<listcomp>r   rP   r   z^Onr   r$   Tr   )r   r   r   r          z^Levelsz^Codes)
re   
set_levelsr   copyr   r   rU   	set_codesrf   	TypeError)r   re   rh   ind2Zoriginal_indexr   r   r   test_set_levels   s>   
rt   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   r^   r_   r   r`   r   r   r   rM      rb   z"test_set_codes.<locals>.<listcomp>c                 S   rc   rd   r   r`   r   r   r   rM      rb   r   rP   r   c                 S      g | ]}d |fqS r   r   rK   ir   r   r   rM      rN         c                 S   ru   rv   r   rw   r   r   r   rM      rN   )rf   rQ   )rf   rq   r   r   from_tuplesrangeequals)	r   rf   ri   rj   rk   rs   rV   r   rB   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   rP   zNames must be a)
re   rf   r   r   r   rU   ro   rq   rT   rr   )r   re   rf   r   r   r   r   %test_set_levels_codes_names_bad_input   sL   $r   rO   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   rG   )re   rf   r   rR   )r   r3   rT   r   assert_index_equal)rO   r   mrB   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 )
NZxyzx)r   r   r   r    Zbac)r   r   rP   )re   rf   Zbacb)
categoriesr   )r   from_arrayslistr   ro   rf   r   r   Zget_level_valuesr   r   )r   rA   ZcidxrB   r   Z
result_lvlZ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Numberr,   )   rm   )onetwothreefour)columnsrA   )r   r   g(\X@))r   4r   )r   r   r4   Z	DataFramer
   randomZdefault_rngZstandard_normalZ
sort_indexZ_is_copyrA   r   at)Zlev1Zlev2r   Z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colorr,   )r   r   r   rP   )r    r   r   )r   r   ro   mapr)   r   r   )sizescolorsrA   rB   Z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 )Nr@   r,   r   rP   )r   r   ro   r4   ZDatetimeIndexr   r   ZmidxrB   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   Zfoobarr,   zpositional argumentsr   r!   r   r   )r   r|   r   r   rr   ro   rq   )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 )Nrn   r   r   r   r   )re   rQ   )r   r   ro   r4   ZCategoricalr   r   r   r   r   r   &test_set_levels_categorical_keep_dtype{  s   r   )F)"numpyr
   r   Zpandas.compatr   Zpandas.core.dtypes.dtypesr   Zpandasr4   r   r   Zpandas._testingZ_testingr   r   r   r>   r?   rC   rF   rX   rl   rt   r   r   markZparametrizer   r   r   r   r   r   r   r   r   r   r   <module>   s6    

	#-&/

