
    Eg2                     L   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Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zej                            dddg          d             Zej                            dddg          d             Zd Zd Zd Zd Z d Z!dS )    N)PY311)DatetimeTZDtype)CategoricalIndex
MultiIndexFc                     t          |           t          |          k    sJ t          | |          D ]D\  }}t          j        |          }t          j        |          }t	          j        |||           Ed S )Ncheck_dtype)lenzipnpasarraytmassert_numpy_array_equal)actualexpectedr	   actexps        \/var/www/sysmax/venv/lib/python3.11/site-packages/pandas/tests/indexes/multi/test_get_set.pyassert_matchingr      s     v;;#h--'''')) G GSjoojoo
#C+FFFFFG G    c                    ddg| _         |                     d          dk    sJ |                     d          dk    sJ d}t          j        t          |          5  |                     d           d d d            n# 1 swxY w Y   t          j        t
          d          5  |                     d           d d d            d S # 1 swxY w 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msgs     r   test_get_level_number_integerr%      s\   ACI  ##q((((  ##q((((
;C	z	-	-	- ! !a   ! ! ! ! ! ! ! ! ! ! ! ! ! ! !	x'?	@	@	@ ( (h'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s$   A??BB%CCCc           	         t          j        g dg dt          j        ddd          gg d          }| sd	nd
}t          j        t          j        d          |t          d          d          }t          j	        ||j
                   d S )Nr   r      abc20200101r   UTCperiodstz)intstringdtr   objectr3   int64utcr1   r   from_productpd
date_rangeSeriesr   dtyper   r   assert_series_equaldtypesusing_infer_stringidx_multityper   r   s       r   test_get_dtypesrE   %   s    +	OOOR]:qU%S%S%ST%%%  M
 -
:(((Cy8G$$!U+++	
 	
 H 8]%9:::::r   c           	         t          j        g dg dt          j        ddd          g          }| sdnd}t          j        t          j        d	          |t          d
          d          }t          j	        ||j
                   d S )Nr'   r)   r-   r   r.   r/   r6   r3   r7   r8   r9   )level_0level_1level_2r:   rB   s       r   test_get_dtypes_no_level_namerJ   7   s    +IIOOM*aE:::	
 M -
:(((Cyx((&%000	
 	
 H 8]%9:::::r   c           	      $   t          j        g dg dt          j        ddd          gg d          j        }| sd	nd
}t          j        t          j        d          |t          d          gg d          }t          j
        ||           d S )Nr'   r)   r-   r   r.   r/   )ArL   rL   r5   r6   r3   r7   r8   r9   )index)r   r;   r<   r=   rA   r>   r   r?   r   r   r@   )rC   resultr   r   s       r   %test_get_dtypes_duplicate_level_namesrO   K   s    $IIOOM*aE:::	

 oo     -
:(((Cy	'		CE!:!:!:;oo  H 68,,,,,r   c                 @   | }t          j        t          d          5  |j                            d           d d d            n# 1 swxY w Y   t          j        t          d          5  |j                            d           d d d            d S # 1 swxY w Y   d S )NzToo many levelsr   r   znot a valid level number)r   r    r!   rM   r   ) multiindex_dataframe_random_dataframes     r   #test_get_level_number_out_of_boundsrT   ]   s   ,E	z):	;	;	; ) )%%a((() ) ) ) ) ) ) ) ) ) ) ) ) ) )	z)C	D	D	D * *%%b)))* * * * * * * * * * * * * * * * * *s#   AA	A	+BBBc                 j   ddg}| j         | j        k    sJ d |D             }|                     |          }| j        |k    sJ |j        |k    sJ d}t          j        t
          |          5  |                    ||z              d d d            n# 1 swxY w Y   d |D             }|                    |d          }|J |j        |k    sJ |                     |d	         d	
          }| j        |k    sJ |j        |d	         |d         gk    sJ |                    |d	         d	d          }|J |j        |d	         |d         gk    sJ |                     |d	dg
          }| j        |k    sJ |j        |k    sJ |                    |d	dgd          }|J |j        |k    sJ d S )Nfirstsecondc                     g | ]}|d z   S )SUFFIX .0names     r   
<listcomp>z)test_set_name_methods.<locals>.<listcomp>j   s    999T999r   z9Length of names must match number of levels in MultiIndexr   c                     g | ]}|d z   S )SUFFIX2rZ   r[   s     r   r^   z)test_set_name_methods.<locals>.<listcomp>q   s    999t$"999r   T)inplacer   levelr   rc   ra   )rename	set_namesr   r   r    
ValueError)r#   index_names	new_namesindr$   
new_names2ress          r   test_set_name_methodsrm   f   sE   H%K:&&&&99[999I
--	
"
"C9####9	!!!!
EC	z	-	-	- - -i)+,,,- - - - - - - - - - - - - - -99y999J
--
D-
1
1C;;;9
"""" --	!A-
.
.C9####91{1~66666
--
1Q-
=
=C;;;9AA77777 --	!Q-
0
0C9####9	!!!!
--
1a&$-
?
?C;;;9
""""""s   /BBBc                    | j         }d |D             }| j        }|\  }}d |D             }d |D             }||g}d}t          j        t          |          5  || _         d d d            n# 1 swxY w Y   t
          rdnd}t          j        t          |          5  || _        d d d            d S # 1 swxY w Y   d S )Nc                 &    g | ]}d  |D             S )c                     g | ]}|d z   S r*   rZ   r\   levs     r   r^   z=test_set_levels_codes_directly.<locals>.<listcomp>.<listcomp>       ...39...r   rZ   r\   rc   s     r   r^   z2test_set_levels_codes_directly.<locals>.<listcomp>   '    CCC5.....CCCr   c                     g | ]
}|d z   dz  S r   r(   rZ   r\   xs     r   r^   z2test_set_levels_codes_directly.<locals>.<listcomp>        4441AEQ;444r   c                     g | ]
}|d z   d z  S r   rZ   ry   s     r   r^   z2test_set_levels_codes_directly.<locals>.<listcomp>   r{   r   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$   s           r   test_set_levels_codes_directlyr      so    ZFCCFCCCJIE$K44444K44444Kk*I
C	~S	1	1	1    
                             
 	#??" 
 
~S	1	1	1  	                 s$   A--A14A1B33B7:B7c                    | j         }d |D             }|                     |          }t          |j         |           t          | j         |           |                     |d         d          }t          |j         |d         |d         g           t          | j         |           |                     |d         d          }t          |j         |d         |d         g           t          | j         |           |                     |ddg          }t          |j         |           t          | j         |           |                                 }t	          j        t          d          5  |                     dgd           d d d            n# 1 swxY w Y   t          | j         |j         d	           t	          j        t          d          5  |                     g d
d           d d d            n# 1 swxY w Y   t          | j        |j        d	           t	          j        t          d          5  |                     dd           d d d            n# 1 swxY w Y   t          | j         |j         d	           t	          j        t          d          5  |                     dd           d d d            n# 1 swxY w Y   t          | j        |j        d	           d S )Nc                 &    g | ]}d  |D             S )c                     g | ]}|d z   S rq   rZ   rr   s     r   r^   z.test_set_levels.<locals>.<listcomp>.<listcomp>   rt   r   rZ   ru   s     r   r^   z#test_set_levels.<locals>.<listcomp>   rv   r   r   rb   r   z^Onr   r,   Tr   )r   r   r   r(         z^Levelsz^Codes)
r~   
set_levelsr   copyr   r    rg   	set_codesr   	TypeError)r#   r~   r   ind2original_indexs        r   test_set_levelsr      s    ZFCCFCCCJ >>*%%DDK,,,CJ''' >>*Q-q>11DDK*Q-!;<<<CJ'''>>*Q-q>11DDK&)Z]!;<<<CJ''' >>*QF>33DDK,,,CJ''' XXZZN	z	/	/	/ ' 'uA&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' 'CJ 54HHHH	z	/	/	/ 3 3(((2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3CI~3FFFF	y		2	2	2 % %s!$$$% % % % % % % % % % % % % % %CJ 54HHHH	y	1	1	1 " "aq!!!" " " " " " " " " " " " " " "CI~3FFFFFFsH   /FFFG<<H H >I""I&)I&$KKKc                    | j         }|\  }}d |D             }d |D             }||g}|                     |          }t          |j         |           t          | j         |           |                     |d         d          }t          |j         |d         |d         g           t          | j         |           |                     |d         d          }t          |j         |d         |d         g           t          | j         |           |                     |ddg          }t          |j         |           t          | j         |           t          j        d t          d          D                       }t          dd	d	          }t          j        d
 |D                       }|                    |d          }|                    |          sJ d S )Nc                     g | ]
}|d z   dz  S rx   rZ   ry   s     r   r^   z"test_set_codes.<locals>.<listcomp>   r{   r   c                     g | ]
}|d z   d z  S r}   rZ   ry   s     r   r^   z"test_set_codes.<locals>.<listcomp>   r{   r   r   rb   r   c                     g | ]}d |fS r   rZ   r\   is     r   r^   z"test_set_codes.<locals>.<listcomp>   s    !=!=!=Q1a&!=!=!=r         c                     g | ]}d |fS r   rZ   r   s     r   r^   z"test_set_codes.<locals>.<listcomp>   s    &A&A&A!1v&A&A&Ar   )r   rc   )r   r   r   r   from_tuplesrangeequals)	r#   r   r   r   r   r   rj   r   rN   s	            r   test_set_codesr      s    IE$K44444K44444Kk*I ==##DDJ	***CIu%%% ==1Q=//DDJ1uQx 8999CIu%%%==1Q=//DDJq9Q< 8999CIu%%% ==1a&=11DDJ	***CIu%%% 
 !=!=%**!=!=!=
>
>Cc2r""I%&A&Ay&A&A&ABBH ]]!]44F=="""""""r   c                    | j         | j        }}| j        }t          j        t
          d          5  |                     |d         g           d d d            n# 1 swxY w Y   t          j        t
          d          5  |                     |d         g           d d d            n# 1 swxY w Y   t          j        t
          d          5  |                     |d         g           d d d            n# 1 swxY w Y   t          j        t          d          5  |                     |d                    d d d            n# 1 swxY w Y   t          j        t          d          5  |                     |d                    d d d            n# 1 swxY w Y   t          j        t          d          5  |                     |d                    d d d            n# 1 swxY w Y   t          j        t          d          5  |                     |d         ddg	           d d d            n# 1 swxY w Y   t          j        t          d          5  |                     |d	           d d d            n# 1 swxY w Y   t          j        t          d          5  |                     |d         ddg	           d d d            n# 1 swxY w Y   t          j        t          d          5  |                     |d	           d d d            n# 1 swxY w Y   t          j        t
          d          5  |                     |d         ddg	           d d d            n# 1 swxY w Y   t          j        t          d
          5  |                     |d	           d d d            d S # 1 swxY w Y   d S )NzLength of levelsr   r   zLength of codeszLength of nameszlist of lists-likez	list-liker   rb   zNames must be a)
r~   r   r   r   r    rg   r   r   rf   r   )r#   r~   r   r   s       r   %test_set_levels_codes_names_bad_inputr      sb   J	EFIE	z);	<	<	< $ $q	{###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 
z):	;	;	; " "uQxj!!!" " " " " " " " " " " " " " " 
z):	;	;	; " "uQxj!!!" " " " " " " " " " " " " " " 
y(<	=	=	= " "vay!!!" " " " " " " " " " " " " " " 
y(<	=	=	=    eAh                              
y	4	4	4    eAh                              
y(<	=	=	= 0 0vayA///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
y	4	4	4 ( (vQ'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 
y(<	=	=	= . .eAhq!f---. . . . . . . . . . . . . . . 
y	4	4	4 & &e1%%%& & & & & & & & & & & & & & & 
z):	;	;	; . .eAhq!f---. . . . . . . . . . . . . . . 
y(9	:	:	: & &e1%%%& & & & & & & & & & & & & & & & & &s   AA!A B))B-0B-C88C<?C<EE
E
,FFF:G""G&)G& H44H8;H8I>>JJ$ KKK6LL!L  M,,M03M0N77N;>N;ra   Tc                     t          ddggddggdg          }t          j        ddgg          }|                    dd|           }| r|}t          j        ||           d S )Nr   r   rV   )r~   r   r   rd   )r   r;   rf   r   assert_index_equal)ra   r   mrN   s       r   test_set_names_with_nlevel_1r   $  sy    
 1a&1a&'KKKH!Q))A[[7[;;F &(+++++r   orderedc                    t          j        t          d          g dg          }t          t          d          |           }|                    |d          }t          |g dg|j                  }t          j        ||           |                    d          }t          t          d          |j	        |j
        	          }t          j        ||           d S )
Nxyzx)r   r   r   r(   bac)r   r   rb   )r~   r   bacb)
categoriesr   )r   from_arrayslistr   r   r   r   r   get_level_valuesr   r   )r   rM   cidxrN   r   
result_lvlexpected_lvls          r   test_set_levels_categoricalr   3  s     "DLL,,,#?@@EDKK999Dd!,,F$!5U[IIIH&(+++((++J#V$,  L *l33333r   c                     g d} g ddz  }t          j        | |gddg          }t          j        t          j                            d                              d          g d|	          }|                                }|j	        J |j
        j        d
k    sJ d|j        d<   |j	        J |j
        j        d
k    sJ d S )N)hansr   r   grether   r   )123r   NameNumberr5   )   r   )onetwothreefour)columnsrM   )r   r   g(\X@))r   4r   )r   r   r<   	DataFramer   randomdefault_rngstandard_normal
sort_index_is_copyrM   r   at)lev1lev2r#   dfs       r   test_set_value_keeps_namesr   D  s    AAAD??QD

 $fh5G
H
H
HC	
	a  0088///
 
 
B
 
B;8>/////$)BE
 !;8>///////r   c                     g d} dgdz  }t          j        | |gddg          }|                    t          t          g d          d          }g d	}t          j        ||gddg          }t          j        ||           d S )
Nr'   blackr(   sizecolorr5   )r   r   r   rb   )r(   r   r   )r   r   r   mapr2   r   r   )sizescolorsrM   rN   expected_sizesr   s         r   test_set_levels_with_iterabler   V  s    IIEY]F"E6?67:KLLLEc#77vFFFYYN%~v&>vwFWXXXH&(+++++r   c                     t          j        g gdg          } |                     t          j        g           d          }t          j        t          j        g           gdg          }t          j        ||           d S )NrL   r5   r   rb   )r   r   r   r<   DatetimeIndexr   r   midxrN   r   s      r   test_set_empty_levelr   c  sy    !2$se444D__R-b11_;;F%r'7';';&<SEJJJH&(+++++r   c                  p   t          j        ddgddg          } t          j        t          d          5  |                     g dd	           d d d            n# 1 swxY w Y   t          j        t          d          5  |                     d	d
gd
d	ggd	           d d d            d S # 1 swxY w Y   d S )N)r   r   )r(   r   foobarr5   zpositional argumentsr   r)   r   r   )r   r   r   r    r   r   r   )r#   s    r    test_set_levels_pos_args_removalr   k  sO   

 	
 en  C 
y(>	?	?	? + +***+ + + + + + + + + + + + + + + 
y(>	?	?	? + +1v1v&***+ + + + + + + + + + + + + + + + + +s#   AA"AB++B/2B/c                     t          j        ddgg          } |                     t          j        ddg          d          }t          j        t          j        ddg          g          }t          j        ||           d S )Nr   r   r   r   r   )r~   rc   )r   r   r   r<   Categoricalr   r   r   s      r   &test_set_levels_categorical_keep_dtyper   {  su    !Aq6(++D__BNAq6$:$:!_DDF%r~q!f'='=&>??H&(+++++r   )F)"numpyr   r   pandas.compatr   pandas.core.dtypes.dtypesr   pandasr<   r   r   pandas._testing_testingr   r   r%   rE   rJ   rO   rT   rm   r   r   r   r   markparametrizer   r   r   r   r   r   r   rZ   r   r   <module>r      s              5 5 5 5 5 5                 G G G G( ( (; ; ;$; ; ;(- - -$* * * #  #  #F  2*G *G *GZ## ## ##L,& ,& ,&^ T5M22, , 32, T5M224 4 324 0 0 0$
, 
, 
,, , ,+ + + , , , , ,r   