a
    Pf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npZasarraytmZassert_numpy_array_equal)actualexpectedr   Zactexp r   `/var/www/ai-form-bot/venv/lib/python3.9/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 s`0    Y  tjtdd | d W d    n1 s0    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   sh   t jg dg dtjddddgg dd}| s4d	n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   objectr*   int64utcr(   r   from_productpd
date_rangeSeriesr
   dtyper   r   assert_series_equaldtypesusing_infer_stringZidx_multityper   r   r   r   r   test_get_dtypes%   s    r;   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'   r-   r*   r.   r/   r0   )Zlevel_0Zlevel_1Zlevel_2r1   r9   r   r   r   test_get_dtypes_no_level_name7   s    r<   c                 C   sn   t jg dg dtjddddgg ddj}| s6d	n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.   r/   r0   )index)r   r2   r3   r4   r8   r5   r
   r6   r   r   r7   )r:   resultr   r   r   r   r   %test_get_dtypes_duplicate_level_namesK   s    r@   c                 C   s|   | }t jtdd |jd W d    n1 s40    Y  t jtdd |jd W d    n1 sn0    Y  d S )NzToo many levelsr   r   znot a valid level number)r   r   r   r>   r   )Z multiindex_dataframe_random_dataframer   r   r   #test_get_level_number_out_of_bounds]   s
    *rC   c                 C   s  ddg}| j | jksJ dd |D }| |}| j|ks>J |j|ksLJ d}tjt|d |||  W d    n1 s0    Y  dd |D }|j|dd	}|d u sJ |j|ksJ | j|d
 d
d}| j|ksJ |j|d
 |d gksJ |j|d
 d
dd}|d u sJ |j|d
 |d gks:J | j|d
dgd}| j|ks\J |j|kslJ |j|d
dgdd}|d u sJ |j|ksJ d S )Nfirstsecondc                 S   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   s   g | ]}|d  qS )ZSUFFIX2r   rF   r   r   r   rI   q   rJ   T)inplacer   levelr   rM   rK   )rename	set_namesr   r   r   
ValueError)r   Zindex_namesZ	new_namesindr   Z
new_names2resr   r   r   test_set_name_methodsf   s2    
,rT   c                 C   s   | j }dd |D }| j}|\}}dd |D }dd |D }||g}d}tjt|d || _ W d    n1 st0    Y  trdnd}tjt|d || _W d    n1 s0    Y  d S )	Nc                 S   s   g | ]}d d |D qS )c                 S   s   g | ]}|d  qS r"   r   rG   Zlevr   r   r   rI      rJ   z=test_set_levels_codes_directly.<locals>.<listcomp>.<listcomp>r   rG   rM   r   r   r   rI      rJ   z2test_set_levels_codes_directly.<locals>.<listcomp>c                 S   s   g | ]}|d  d qS r   r    r   rG   xr   r   r   rI      rJ   c                 S   s   g | ]}|d  d  qS r   r   rY   r   r   r   rI      rJ   zCan't set attributer   z5property 'codes' of 'MultiIndex' object has no setterzcan't set attribute)levelscodesr   r   AttributeErrorr   )r   r\   
new_levelsr]   major_codesminor_codes	new_codesr   r   r   r   test_set_levels_codes_directly   s     $rc   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 s
0    Y  t| j |j d	d
 tjtdd" | jg ddd W d    n1 s^0    Y  t| j|jd	d
 tjt	dd | jddd W d    n1 s0    Y  t| j |j d	d
 tjt	dd | jddd W d    n1 s0    Y  t| j|jd	d
 d S )Nc                 S   s   g | ]}d d |D qS )c                 S   s   g | ]}|d  qS rU   r   rV   r   r   r   rI      rJ   z.test_set_levels.<locals>.<listcomp>.<listcomp>r   rW   r   r   r   rI      rJ   z#test_set_levels.<locals>.<listcomp>r   rL   r   z^Onr   r$   Tr   )r   r   r   r          z^Levelsz^Codes)
r\   
set_levelsr   copyr   r   rQ   	set_codesr]   	TypeError)r   r\   r_   ind2Zoriginal_indexr   r   r   test_set_levels   s6    
02..rk   c           	      C   sD  | 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}||s@J d S )Nc                 S   s   g | ]}|d  d qS rX   r   rY   r   r   r   rI      rJ   z"test_set_codes.<locals>.<listcomp>c                 S   s   g | ]}|d  d  qS r[   r   rY   r   r   r   rI      rJ   r   rL   r   c                 S   s   g | ]}d |fqS r   r   rG   ir   r   r   rI      rJ         c                 S   s   g | ]}d |fqS rl   r   rm   r   r   r   rI      rJ   )r]   rM   )r]   rh   r   r   from_tuplesrangeequals)	r   r]   r`   ra   rb   rj   rR   r   r?   r   r   r   test_set_codes   s,    
ru   c                 C   s  | j | j }}| j}tjtdd  | |d g W d    n1 sH0    Y  tjtdd  | |d g W d    n1 s0    Y  tjtdd  | |d g W d    n1 s0    Y  tjt	dd | |d  W d    n1 s0    Y  tjt	dd | |d  W d    n1 s@0    Y  tjt	dd | |d  W d    n1 s~0    Y  tjt	dd& | j|d ddgd	 W d    n1 s0    Y  tjt	dd | j|dd	 W d    n1 s0    Y  tjt	dd& | j|d ddgd	 W d    n1 sH0    Y  tjt	dd | j|dd	 W d    n1 s0    Y  tjtdd& | j|d ddgd	 W d    n1 s0    Y  tjt	d
d | j|dd	 W d    n1 s
0    Y  d S )NzLength of levelsr   r   zLength of codeszLength of nameszlist of lists-likez	list-liker   rL   zNames must be a)
r\   r]   r   r   r   rQ   rf   rh   rP   ri   )r   r\   r]   r   r   r   r   %test_set_levels_codes_names_bad_input   s4    ......6.6.6rv   rK   Tc                 C   sT   t ddggddggdgd}t ddgg}|jdd| d}| rD|}t|| d S )Nr   r   rD   )r\   r]   r   rN   )r   r2   rP   r   assert_index_equal)rK   r   mr?   r   r   r   test_set_names_with_nlevel_1$  s    ry   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)rz   r   rL   )r\   r]   Zbacb)
categoriesrz   )r   from_arrayslistr   rf   r]   r   rw   Zget_level_valuesr{   rz   )rz   r>   Zcidxr?   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 sbJ |j
jd
ksrJ d|jd< |j	d u sJ |j
jd
ksJ d S )N)hansr   r   grether   r   )123r   NameNumberr,   )   rd   )onetwothreefour)columnsr>   )r   r   g(\X@))r   4r   )r   r|   r3   Z	DataFramer
   randomZdefault_rngZstandard_normalZ
sort_indexZ_is_copyr>   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   rL   )r    r   r   )r   r|   rf   mapr)   r   rw   )sizescolorsr>   r?   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   rL   )r   r|   rf   r3   ZDatetimeIndexr   rw   Zmidxr?   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 sJ0    Y  tjtdd( | d	d
gd
d	ggd	 W d    n1 s0    Y  d S )N)r   r   )r    r   Zfoobarr,   zpositional argumentsr   r!   r   r   )r   rr   r   r   ri   rf   rh   )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 )Nre   r   r   r   r   )r\   rM   )r   r|   rf   r3   ZCategoricalr   rw   r   r   r   r   &test_set_levels_categorical_keep_dtype{  s    r   )F)"numpyr
   r   Zpandas.compatr   Zpandas.core.dtypes.dtypesr   Zpandasr3   r   r   Zpandas._testingZ_testingr   r   r   r;   r<   r@   rC   rT   rc   rk   ru   rv   markZparametrizery   r~   r   r   r   r   r   r   r   r   r   <module>   s4   

	#-&/

