o
    5cB                     @   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 d1d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/d0 Z#dS )2    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/gps/gps/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   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periodstz)intstringdtr   int64Outcr-   r   from_productpd
date_rangeSeriesr
   dtyper   r   assert_series_equaldtypesidx_multityper   r   r   r   test_get_dtypes%   s   r@   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+   r2   r3   r4   r5   )level_0level_1level_2r6   r>   r   r   r   test_get_dtypes_no_level_name5   s   rD   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+   )ArE   rE   r1   r2   r3   r4   r5   )index)r   r7   r8   r9   r=   r:   r
   r;   r   r   r<   )resultr   r   r   r   %test_get_dtypes_duplicate_level_namesH   s   rH   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   rF   r   ) multiindex_dataframe_random_dataframer   r   r   #test_get_level_number_out_of_boundsY   s   "rL   c                 C   s  | 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 s=w   Y  dd |D }|j|dd}|d u sVJ |j|ks]J | j|d dd	}| j|ksmJ |j|d |d
 gkszJ |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 )Nc                 S      g | ]}|d  qS )SUFFIXr   .0namer   r   r   
<listcomp>e       z)test_set_name_methods.<locals>.<listcomp>z9Length of names must match number of levels in MultiIndexr   c                 S   rM   )SUFFIX2r   rO   r   r   r   rR   l   rS   Tinplacer   levelr   rX   rV   )rename	set_namesr   r   r   
ValueError)r    index_names	new_namesindr!   
new_names2resr   r   r   test_set_name_methodsb   s2   
rb   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   rM   r&   r   rP   levr   r   r   rR      rS   z=test_set_levels_codes_directly.<locals>.<listcomp>.<listcomp>r   rP   rX   r   r   r   rR          z2test_set_levels_codes_directly.<locals>.<listcomp>c                 S      g | ]}|d  d qS r   r$   r   rP   xr   r   r   rR          c                 S      g | ]}|d  d  qS r   r   rk   r   r   r   rR      rm   zCan't set attributer   z5property 'codes' of 'MultiIndex' object has no setterzcan't set attribute)levelscodesr   r   AttributeErrorr   )r    rp   
new_levelsrq   major_codesminor_codes	new_codesr!   r   r   r   test_set_levels_codes_directly   s$   "rw   c              
   C   s  | j }dd |D }| |}t|j | t| j | |  }tt |j|dd}W d    n1 s6w   Y  |d u sAJ 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 sw   Y  |d u sJ t|j |d |d g t| j | |  }tt |j|d ddd}W d    n1 sw   Y  |d u sJ t|j |d |d g t| j | |  }tt |j|ddgdd}W d    n	1 s'w   Y  |d u s3J t|j | t| j | |  }d	D ]}tjt	d
d' tt | jdgd|d W d    n	1 sjw   Y  W d    n	1 szw   Y  t| j |j dd tjt	d
d( tt | j
g dd|d W d    n	1 sw   Y  W d    n	1 sw   Y  t| j|jdd tjtdd& tt | jdd|d W d    n	1 sw   Y  W d    n	1 sw   Y  t| j |j dd tjtdd& tt | j
dd|d W d    n	1 s)w   Y  W d    n	1 s9w   Y  t| j|jdd qEd S )Nc                 S   rc   )c                 S   rM   rd   r   re   r   r   r   rR      rS   z.test_set_levels.<locals>.<listcomp>.<listcomp>r   rg   r   r   r   rR      rh   z#test_set_levels.<locals>.<listcomp>TrU   r   rW   r   rY   )TFz^Onr   r(   r   )r   r   r   r$         z^Levelsz^Codes)rp   
set_levelsr   copyr   assert_produces_warningFutureWarningr   r   r\   	set_codesrq   	TypeError)r    rp   rs   ind2inplace_returnoriginal_indexrV   r   r   r   test_set_levels   s   

r   c           
      C   sL  | j }|\}}dd |D }dd |D }||g}| |}t|j | t| j | |  }tt |j|dd}W d    n1 sEw   Y  |d u sPJ 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 sw   Y  |d u sJ t|j |d |d g t| j | |  }tt |j|d ddd	}W d    n1 sw   Y  |d u sJ t|j |d |d g t| j | |  }tt |j|ddgdd	}W d    n	1 s7w   Y  |d u sCJ t|j | t| j | td
d t	dD }t	ddd}tdd |D }|j|dd}	|	
|szJ | }	tt |	j|ddd W d    n	1 sw   Y  |	
|sJ d S )Nc                 S   ri   rj   r   rk   r   r   r   rR      rm   z"test_set_codes.<locals>.<listcomp>c                 S   rn   ro   r   rk   r   r   r   rR      rm   TrU   r   rW   r   rY   c                 S      g | ]}d |fqS r   r   rP   ir   r   r   rR   (  rS         c                 S   r   r   r   r   r   r   r   rR   *  rS   )rq   rX   rq   rX   rV   )rq   r~   r   r{   r   r|   r}   r   from_tuplesrangeequals)
r    rq   rt   ru   rv   r   r   r_   r   rG   r   r   r   test_set_codes   sl   
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   rW   zNames must be a)
rp   rq   r   r   r   r\   rz   r~   r[   r   )r    rp   rq   r   r   r   r   %test_set_levels_codes_names_bad_input7  sL   $r   rV   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   firstrp   rq   r   rY   )r   r7   r[   r   assert_index_equal)rV   r   mrG   r   r   r   test_set_names_with_nlevel_1f  s   r   c                  C   s   t ddgddgg} d}tjt|d | ddgd }W d    n1 s'w   Y  t ddgddggg d	g d
gddgd}t|| d S )Npythoncobrai  i  zxIn a future version of pandas all arguments of MultiIndex.set_names except for the argument 'names' will be keyword-onlyr   kindyear)r   r   r   r   )r   r   r   r   r   )r   r7   r   r|   r}   r[   r   r    r!   rG   r   r   r   r   )test_multi_set_names_pos_args_deprecationu  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   rW   )rp   rq   bacb)
categoriesr   )r   from_arrayslistr   rz   rq   r   r   get_level_valuesr   r   )r   rF   cidxrG   r   
result_lvl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s7J d|jd< |jd u sCJ |j	j
dksKJ d S )N)hansr   r   grether   r   )123r   NameNumberr1      rx   )onetwothreefour)columnsrF   )r   r   g(\X@))r   4r   )r   r   r8   	DataFramer
   randomrandn
sort_index_is_copyrF   r   at)lev1lev2r    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#   blackr$   sizecolorr1   )r   r   r   rW   )r$   r   r   )r   r   rz   mapr.   r   r   )sizescolorsrF   rG   expected_sizesr   r   r   r   test_set_levels_with_iterable  s   
r   c                 C   sT   | j d d d d }tt | j|d|d W d    d S 1 s#w   Y  d S )Nr   r   r   )rq   r   r|   r}   r~   )r    rV   rv   r   r   r   !test_set_codes_inplace_deprecated  s   "r   c                 C   sN   | j d  }tt | j|d|d W d    d S 1 s w   Y  d S )Nr   )rp   rX   rV   )rp   r{   r   r|   r}   rz   )r    rV   	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 s'w   Y  t jg d	ddgd}t|| d S )
N))r   r   )r   r   )r$   r   foobarr1   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   r   r   r|   r}   rz   r   r   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 s"w   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   )bazr   )quxr   )r   r   r   secondr1   )r   r|   r}   r~   r   r   r   r   r   r   r   $test_set_codes_pos_args_depreciation  s   r   )F)$numpyr
   r   pandas.compatr   pandas.core.dtypes.dtypesr   pandasr8   r   r   pandas._testing_testingr   r   r"   r@   rD   rH   rL   rb   rw   r   r   r   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s>    

	"PJ/



