
    Owg2                     B   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j2                  j5                  dddg      d        Zej2                  j5                  dddg      d        Zd Zd Zd Zd Z d Z!y)    N)PY311)DatetimeTZDtype)CategoricalIndex
MultiIndexFc                     t        |       t        |      k(  sJ t        | |      D ]G  \  }}t        j                  |      }t        j                  |      }t	        j
                  |||       I y )Ncheck_dtype)lenzipnpasarraytmassert_numpy_array_equal)actualexpectedr	   actexps        ^/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/indexes/multi/test_get_set.pyassert_matchingr      sb     v;#h-''') GSjjojjo
##C+FG    c                 v   ddg| _         | j                  d      dk(  sJ | j                  d      dk(  sJ d}t        j                  t        |      5  | j                  d       d d d        t        j                  t
        d      5  | j                  d       d d d        y # 1 sw Y   ?xY w# 1 sw Y   y xY w)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   B#B/#B,/B8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                         y )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   %   sy    ++	OR]]:qU%ST%M
 -((Cyy88G$!U+	
H 8]%9%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                         y )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   sz    ++MM*aE:	
M -((Cyyxx(&%0	
H 8]%9%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                  ||       y )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    $$MM*aE:	

  f  -((Cyy	'	CE!:;H 68,r   c                 4   | }t        j                  t        d      5  |j                  j	                  d       d d d        t        j                  t        d      5  |j                  j	                  d       d d d        y # 1 sw Y   IxY w# 1 sw Y   y xY w)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   ]   sx    ,E	z):	; )%%a()	z)C	D *%%b)* *) )* *s   BBBBc                    ddg}| j                   | j                  k(  sJ |D cg c]  }|dz   	 }}| j                  |      }| j                  |k(  sJ |j                  |k(  sJ d}t        j                  t
        |      5  |j                  ||z          d d d        |D cg c]  }|dz   	 }}|j                  |d      }|J |j                  |k(  sJ | j                  |d	   d	
      }| j                  |k(  sJ |j                  |d	   |d   gk(  sJ |j                  |d	   d	d      }|J |j                  |d	   |d   gk(  sJ | j                  |d	dg
      }| j                  |k(  sJ |j                  |k(  sJ |j                  |d	dgd      }|J |j                  |k(  sJ y c c}w # 1 sw Y    xY wc c}w )NfirstsecondSUFFIXz9Length of names must match number of levels in MultiIndexr   SUFFIX2T)inplacer   levelr   r\   rZ   )rename	set_namesr   r   r    
ValueError)r#   index_namesname	new_namesindr$   
new_names2ress           r   test_set_name_methodsrg   f   s   H%K::&&&-89T9I9
--	
"C99###99	!!!
EC	z	- -i)+,-/89t$"9J9
--
D-
1C;;99
""" --	!A-
.C99###991{1~6666
--
1Q-
=C;;99AA7777 --	!Q-
0C99###99	!!!
--
1a&$-
?C;;99
"""9 :
- -9s   F0F5#G5F?c           	         | j                   }|D cg c]  }|D cg c]  }|dz   	 c} }}}| j                  }|\  }}|D cg c]
  }|dz   dz   }}|D cg c]
  }|dz   dz   }}||g}	d}
t        j                  t        |
      5  || _         d d d        t
        rdnd}
t        j                  t        |
      5  |	| _        d d d        y c c}w c c}}w c c}w c c}w # 1 sw Y   TxY w# 1 sw Y   y xY w)Nr*   r   r(   zCan't set attributer   z5property 'codes' of 'MultiIndex' object has no setterzcan't set attribute)levelscodesr   r    AttributeErrorr   )r#   ri   r\   lev
new_levelsrj   major_codesminor_codesx	new_codesr$   s              r   test_set_levels_codes_directlyrr      s    ZZF<BC5.39.CJCIIE$K(341AEQ;4K4(341AEQ;4K4k*I
C	~S	1  
 
  	@" 
 
~S	1 	 # /C 54    s9   	CCCCC!C& C2C&C/2C;c           	         | j                   }|D cg c]  }|D cg c]  }|dz   	 c} }}}| j                  |      }t        |j                   |       t        | j                   |       | j                  |d   d      }t        |j                   |d   |d   g       t        | j                   |       | j                  |d   d      }t        |j                   |d   |d   g       t        | j                   |       | j                  |ddg      }t        |j                   |       t        | j                   |       | j                         }t	        j
                  t        d      5  | j                  dgd       d d d        t        | j                   |j                   d	       t	        j
                  t        d      5  | j                  g d
d       d d d        t        | j                  |j                  d	       t	        j
                  t        d      5  | j                  dd       d d d        t        | j                   |j                   d	       t	        j
                  t        d      5  | j                  dd       d d d        t        | j                  |j                  d	       y c c}w c c}}w # 1 sw Y   ExY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   \xY w)Nr*   r   r[   r   z^Onr   r,   Tr   )r   r   r   r(         z^Levelsz^Codes)
ri   
set_levelsr   copyr   r    r`   	set_codesrj   	TypeError)r#   ri   r\   rl   rm   ind2original_indexs          r   test_set_levelsr|      sL    ZZF<BC5.39.CJC >>*%DDKK,CJJ' >>*Q-q>1DDKK*Q-!;<CJJ'>>*Q-q>1DDKK&)Z]!;<CJJ' >>*QF>3DDKK,CJJ' XXZN	z	/ 'uA&'CJJ 5 54H	z	/ 3(23CII~33F	y		2 %s!$%CJJ 5 54H	y	1 "aq!"CII~33FM /C0' '3 3% %" "sE   	J>J9J>,KK!K:K)9J>KKK&)K2c                    | j                   }|\  }}|D cg c]
  }|dz   dz   }}|D cg c]
  }|dz   dz   }}||g}| j                  |      }t        |j                   |       t        | j                   |       | j                  |d   d      }t        |j                   |d   |d   g       t        | j                   |       | j                  |d   d      }t        |j                   |d   |d   g       t        | j                   |       | j                  |ddg      }t        |j                   |       t        | j                   |       t        j                  t        d      D cg c]  }d|f c}      }t        ddd      }t        j                  |D cg c]  }d|f c}      }	|j                  |d      }
|
j                  |	      sJ y c c}w c c}w c c}w c c}w )	Nr   r(   r   r[         )rj   r\   )rj   rx   r   r   from_tuplesrangeequals)r#   rj   rn   ro   rp   rq   rz   ird   r   rN   s              r   test_set_codesr      s    IIE$K(341AEQ;4K4(341AEQ;4K4k*I ==#DDJJ	*CIIu% ==1Q=/DDJJ1uQx 89CIIu%==1Q=/DDJJq9Q< 89CIIu% ==1a&=1DDJJ	*CIIu% 
 
 %*!=Q1a&!=
>Cc2r"I%%y&A!1v&ABH ]]!]4F=="""= 54. ">&As   GG.G# G(c                    | j                   | j                  }}| j                  }t        j                  t
        d      5  | j                  |d   g       d d d        t        j                  t
        d      5  | j                  |d   g       d d d        t        j                  t
        d      5  | j                  |d   g       d d d        t        j                  t        d      5  | j                  |d          d d d        t        j                  t        d      5  | j                  |d          d d d        t        j                  t        d      5  | j                  |d          d d d        t        j                  t        d      5  | j                  |d   ddg	       d d d        t        j                  t        d      5  | j                  |d	       d d d        t        j                  t        d      5  | j                  |d   ddg	       d d d        t        j                  t        d      5  | j                  |d	       d d d        t        j                  t
        d      5  | j                  |d   ddg	       d d d        t        j                  t        d
      5  | j                  |d	       d d d        y # 1 sw Y   ~xY w# 1 sw Y   RxY w# 1 sw Y   &xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   vxY w# 1 sw Y   LxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NzLength of levelsr   r   zLength of codeszLength of nameszlist of lists-likez	list-liker   r[   zNames must be a)
ri   rj   r   r   r    r`   rv   rx   r_   ry   )r#   ri   rj   r   s       r   %test_set_levels_codes_names_bad_inputr      s   JJ		EFIIE	z);	< $q	{#$ 
z):	; "uQxj!" 
z):	; "uQxj!" 
y(<	= "vay!" 
y(<	=  eAh  
y	4  eAh  
y(<	= 0vayA/0 
y	4 (vQ'( 
y(<	= .eAhq!f-. 
y	4 &e1%& 
z):	; .eAhq!f-. 
y(9	: &e1%& &O$ $" "" "" "      0 0( (. .& &. .& &s    K9K2K,+K9#LLL L-L:M9M5MKK),K69LLL L*-L7:MMMM(rZ   Tc                     t        ddggddggdg      }t        j                  ddgg      }|j                  dd|       }| r|}t        j                  ||       y )Nr   r   rV   )ri   rj   r   r]   )r   r;   r_   r   assert_index_equal)rZ   r   mrN   s       r   test_set_names_with_nlevel_1r   $  sb    
 1a&1a&'KH!Q)A[[7[;F&(+r   orderedc                    t        j                  t        d      g dg      }t        t        d      |       }|j	                  |d      }t        |g dg|j
                        }t        j                  ||       |j                  d      }t        t        d      |j                  |j                  	      }t        j                  ||       y )
Nxyzx)r   r   r   r(   bac)r   r   r[   )ri   rj   bacb)
categoriesr   )r   from_arrayslistr   rv   rj   r   r   get_level_valuesr   r   )r   rM   cidxrN   r   
result_lvlexpected_lvls          r   test_set_levels_categoricalr   3  s     ""DL,#?@EDK9Dd!,F$!5U[[IH&(+((+J#V$,,L *l3r   c                     g d} g ddz  }t        j                  | |gddg      }t        j                  t        j
                  j                  d      j                  d      g d|	      }|j                         }|j                  J |j                  j                  d
k(  sJ d|j                  d<   |j                  J |j                  j                  d
k(  sJ y )N)hansr   r   grether   r   )123r   NameNumberr5   )   rt   )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    ADQD

 
 $fh5G
HC	
		a 008/
B
 
B;;88>>////$)BEE
 !;;88>>////r   c                      g d} dgdz  }t        j                  | |gddg      }|j                  t        t        g d      d      }g d	}t        j                  ||gddg      }t        j                  ||       y )
Nr'   blackr(   sizecolorr5   )r   r   r   r[   )r(   r   r   )r   r   rv   mapr2   r   r   )sizescolorsrM   rN   expected_sizesr   s         r   test_set_levels_with_iterabler   V  sz    EY]F""E6?67:KLEc#7vFFN%%~v&>vwFWXH&(+r   c                     t        j                  g gdg      } | j                  t        j                  g       d      }t        j                  t        j                  g       gdg      }t        j                  ||       y )NrL   r5   r   r[   )r   r   rv   r<   DatetimeIndexr   r   midxrN   r   s      r   test_set_empty_levelr   c  sg    !!2$se4D__R--b1_;F%%r'7'7';&<SEJH&(+r   c                  R   t        j                  ddgddg      } t        j                  t        d      5  | j                  g dd	       d d d        t        j                  t        d      5  | j                  d	d
gd
d	ggd	       d d d        y # 1 sw Y   FxY w# 1 sw Y   y xY w)N)r   r   )r(   r   foobarr5   zpositional argumentsr   r)   r   r   )r   r   r   r    ry   rv   rx   )r#   s    r    test_set_levels_pos_args_removalr   k  s    

 
 	
 enC 
y(>	? +*+ 
y(>	? +1v1v&*+ ++ ++ +s   B/BBB&c                     t        j                  ddgg      } | j                  t        j                  ddg      d      }t        j                  t        j                  ddg      g      }t        j                  ||       y )Nru   r   r   r   r   )ri   r\   )r   r   rv   r<   Categoricalr   r   r   s      r   &test_set_levels_categorical_keep_dtyper   {  sg    !!Aq6(+D__BNNAq6$:!_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   rg   rr   r|   r   r   markparametrizer   r   r   r   r   r   r    r   r   <module>r      s       5  G(;$;(-$* #F2*GZ##L,&^ T5M2, 3, T5M24 34 0$
,,+ ,r   