a
    GbNB                     @   s.  d dl Zd dlZd dlmZ d dlZd dlmZmZ d dl	m
Z d0d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dd  Zejd!ddg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S )1    N)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)Zactualexpectedr   ZactZexp r   Flib/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   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Zperiodstz)intstringZdtr   int64Outcr%   r   from_productpd
date_rangeSeriesr	   dtyper   r
   assert_series_equaldtypesZidx_multityper   r   r   r   test_get_dtypes#   s    r6   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$   r)   r*   r+   r,   )Zlevel_0Zlevel_1Zlevel_2r-   r5   r   r   r   test_get_dtypes_no_level_name3   s    r7   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$   )Ar8   r8   r(   r)   r*   r+   r,   )index)r   r.   r/   r0   r4   r1   r	   r2   r   r
   r3   )resultr   r   r   r   %test_get_dtypes_duplicate_level_namesF   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   r9   r   )Z multiindex_dataframe_random_dataframer   r   r   #test_get_level_number_out_of_boundsW   s
    *r>   c                 C   s  | j | jksJ dd |D }| |}| j|ks6J |j|ksDJ d}tjt|d |||  W d    n1 sz0    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s2J | j|dd
gd	}| j|ksTJ |j|ksdJ |j|dd
gdd}|d u sJ |j|ksJ d S )Nc                 S   s   g | ]}|d  qS )ZSUFFIXr   .0namer   r   r   
<listcomp>c       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   r?   r   r   r   rB   j   rC   Tinplacer   levelr   rG   rE   )rename	set_namesr   r   r   
ValueError)r   Zindex_namesZ	new_namesindr   Z
new_names2resr   r   r   test_set_name_methods`   s0    
,rN   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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   r@   Zlevr   r   r   rB      rC   z=test_set_levels_codes_directly.<locals>.<listcomp>.<listcomp>r   r@   rG   r   r   r   rB      rC   z2test_set_levels_codes_directly.<locals>.<listcomp>c                 S   s   g | ]}|d  d qS r   r   r   r@   xr   r   r   rB      rC   c                 S   s   g | ]}|d  d  qS r   r   rS   r   r   r   rB      rC   z[Cc]an't set attributer   )levelscodesr   r   AttributeError)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 | |  }tt |j|dd}W d    n1 sl0    Y  |d u sJ 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t$ |j|d ddd}W d    n1 sb0    Y  |d u szJ t|j |d |d g t| j | |  }tt$ |j|d ddd}W d    n1 s0    Y  |d u sJ t|j |d |d g t| j | |  }tt$ |j|ddgdd}W d    n1 sV0    Y  |d u snJ t|j | t| j | |  }d	D ]}tjt	d
dN tt" | jdgd|d W d    n1 s0    Y  W d    n1 s0    Y  t| j |j dd tjt	d
dP tt$ | j
g dd|d W d    n1 s^0    Y  W d    n1 s~0    Y  t| j|jdd tjtddL tt  | jdd|d W d    n1 s0    Y  W d    n1 s0    Y  t| j |j dd tjtddL tt  | j
dd|d W d    n1 sZ0    Y  W d    n1 sz0    Y  t| j|jdd qd S )Nc                 S   s   g | ]}d d |D qS )c                 S   s   g | ]}|d  qS rO   r   rP   r   r   r   rB      rC   z.test_set_levels.<locals>.<listcomp>.<listcomp>r   rQ   r   r   r   rB      rC   z#test_set_levels.<locals>.<listcomp>TrD   r   rF   r   rH   )TFz^Onr   r!   r   )r   r   r   r         z^Levelsz^Codes)rV   
set_levelsr   copyr
   assert_produces_warningFutureWarningr   r   rK   	set_codesrW   	TypeError)r   rV   rY   ind2inplace_returnZoriginal_indexrE   r   r   r   test_set_levels   sn    
,444
RTPPrh   c           
      C   sR  | j }|\}}dd |D }dd |D }||g}| |}t|j | t| j | |  }tt |j|dd}W d    n1 s0    Y  |d u sJ 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t$ |j|d ddd	}W d    n1 s0    Y  |d u sJ t|j |d |d g t| j | |  }tt$ |j|d ddd	}W d    n1 s0    Y  |d u sJ t|j |d |d g t| j | |  }tt$ |j|ddgdd	}W d    n1 st0    Y  |d u sJ t|j | t| j | td
d t	dD }t	ddd}tdd |D }|j|dd}	|	
|sJ | }	tt  |	j|ddd W d    n1 s40    Y  |	
|sNJ d S )Nc                 S   s   g | ]}|d  d qS rR   r   rS   r   r   r   rB      rC   z"test_set_codes.<locals>.<listcomp>c                 S   s   g | ]}|d  d  qS rU   r   rS   r   r   r   rB      rC   TrD   r   rF   r   rH   c                 S   s   g | ]}d |fqS r   r   r@   ir   r   r   rB      rC         c                 S   s   g | ]}d |fqS ri   r   rj   r   r   r   rB   "  rC   )rW   rG   rW   rG   rE   )rW   rd   r   ra   r
   rb   rc   r   from_tuplesrangeZequals)
r   rW   rZ   r[   r\   rf   rg   rL   r   r:   r   r   r   test_set_codes   sb    
,4440rr   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   rF   zNames must be a)
rV   rW   r   r   r   rK   r`   rd   rJ   re   )r   rV   rW   r   r   r   r   %test_set_levels_codes_names_bad_input/  s4    ......6.6.6rs   rE   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   firstrV   rW   r   rH   )r   r.   rJ   r
   assert_index_equal)rE   r   mr:   r   r   r   test_set_names_with_nlevel_1^  s    rx   c                  C   s   t ddgddgg} d}tjt|d  | ddgd }W d    n1 sN0    Y  t ddgddggg d	g d
gddgd}t|| d S )NZpythonZcobrai  i  zxIn a future version of pandas all arguments of MultiIndex.set_names except for the argument 'names' will be keyword-onlyr   kindZyear)r   r   r   r   )r   r   r   r   ru   )r   r.   r
   rb   rc   rJ   rv   r   r   r:   r   r   r   r   )test_multi_set_names_pos_args_deprecationm  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   rF   )rV   rW   Zbacb)
categoriesr|   )r   from_arrayslistr   r`   rW   r
   rv   Zget_level_valuesr}   r|   )r|   r9   Zcidxr:   r   Z
result_lvlZ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 s^J |j	j
dksnJ d|jd< |jd u sJ |j	j
dksJ d S )N)hansr   r   grether   r   )123r   NameNumberr(      r^   )onetwoZthreeZfour)columnsr9   )r   r   g(\X@))r   4r   )r   r~   r/   Z	DataFramer	   ZrandomZrandnZ
sort_indexZ_is_copyr9   r   Zat)Zlev1Zlev2r   Z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   Zblackr   sizeZcolorr(   )r   r   r   rF   )r   r   r   )r   r~   r`   mapr&   r
   rv   )ZsizesZcolorsr9   r:   Zexpected_sizesr   r   r   r   test_set_levels_with_iterable  s    
r   c                 C   sR   | j d d d d }tt  | j|d|d W d    n1 sD0    Y  d S )Nr   rn   ro   )rW   r
   rb   rc   rd   )r   rE   r\   r   r   r   !test_set_codes_inplace_deprecated  s    r   c                 C   sL   | j d  }tt  | j|d|d W d    n1 s>0    Y  d S )Nr   )rV   rG   rE   )rV   ra   r
   rb   rc   r`   )r   rE   Z	new_levelr   r   r   "test_set_levels_inplace_deprecated  s    r   c                  C   s~   t jg dddgd} d}tjt|d  | g dd}W d    n1 sN0    Y  t jg d	ddgd}t|| d S )
N))r   r   )r   r   )r   r   foobarr(   zzIn a future version of pandas all arguments of MultiIndex.set_levels except for the argument 'levels' will be keyword-onlyr   r   r   ))r   r   )r    r   )r!   r   )r   rp   r
   rb   rc   r`   rv   rz   r   r   r   $test_set_levels_pos_args_deprecation  s    	.r   c                 C   st   d}t jt|d, | g dg dgddg}W d    n1 sD0    Y  tjg ddd	gd
}t || d S )NzxIn a future version of pandas all arguments of MultiIndex.set_codes except for the argument 'codes' will be keyword-onlyr   )r   r   r   r   r   r   )r   r   r   r   r   r   r   r   ))r   r   )r   r   )r   r   )Zbazr   )quxr   )r   r   rt   secondr(   )r
   rb   rc   rd   r   rp   rv   rz   r   r   r   $test_set_codes_pos_args_depreciation  s    :r   )F)"Znumpyr	   r   Zpandas.core.dtypes.dtypesr   Zpandasr/   r   r   Zpandas._testingZ_testingr
   r   r   r6   r7   r;   r>   rN   r]   rh   rr   rs   ZmarkZparametrizerx   r{   r   r   r   r   r   r   r   r   r   r   r   <module>   s:   

	"PJ/



