
    i 2                     6   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 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.                  j1                  dddg      d        Zej.                  j1                  dddg      d        Zd Zd Zd Zd Zd Zy)    N)DatetimeTZDtype)CategoricalIndex
MultiIndexFc                     t        |       t        |      k(  sJ t        | |d      D ]G  \  }}t        j                  |      }t        j                  |      }t	        j
                  |||       I y )NT)strictcheck_dtype)lenzipnpasarraytmassert_numpy_array_equal)actualexpectedr	   actexps        d/app/cer_product_mecsu/.venv/lib/python3.12/site-packages/pandas/tests/indexes/multi/test_get_set.pyassert_matchingr      sd     v;#h-'''6 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           
      n   t        j                  g dg dt        j                  dddd      gg d	      }| sd
n#t        j                  t
        j                        }t        j                  t        j                  d      |t        d      d      }t        j                  ||j                         y )Nr   r      abc20200101r   UTCnsperiodstzunit)intstringdtr   objectna_valueint64utcr2   r   from_productpd
date_rangeStringDtyper   nanSeriesdtyper   r   assert_series_equaldtypesusing_infer_stringidx_multityper   r   s       r   test_get_dtypesrK   #   s    ++MM*aEE	

 &M -(".."&&2QCyy88G$!U+	
H 8]%9%9:r   c           
      f   t        j                  g dg dt        j                  dddd      g      }| sdn#t        j                  t
        j                  	      }t        j                  t        j                  d
      |t        d      d      }t        j                  ||j                         y )Nr'   r)   r-   r   r.   r/   r0   r8   r9   r;   r<   r=   )level_0level_1level_2r>   rH   s       r   test_get_dtypes_no_level_namerP   9   s    ++MM*aEE	
M -(".."&&2QCyyxx(&%0	
H 8]%9%9:r   c           
      t   t        j                  g dg dt        j                  dddd      gg d	      j                  }| sd
n#t        j
                  t        j                        }t        j                  t        j                  d      |t        d      gg d      }t        j                  ||       y )Nr'   r)   r-   r   r.   r/   r0   )ArR   rR   r7   r8   r9   r;   r<   r=   )index)r   r?   r@   rA   rG   rB   r   rC   rD   rE   r   r   rF   )rI   resultr   r   s       r   %test_get_dtypes_duplicate_level_namesrU   M   s    $$MM*aEE	

  f  -(".."&&2QC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!   rS   r   ) multiindex_dataframe_random_dataframes     r   #test_get_level_number_out_of_boundsrZ   _   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   rb   r`   )rename	set_namesr   r   r    
ValueError)r#   index_namesname	new_namesindr$   
new_names2ress           r   test_set_name_methodsrm   h   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        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   Lx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 setter)levelscodesr   r    AttributeError)r#   ro   rb   lev
new_levelsrp   major_codesminor_codesx	new_codesr$   s              r   test_set_levels_codes_directlyrx      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  
  BC	~S	1 	  /C 54    s9   	CC	CCCC8C*	CC'*C3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   ra   r   z^Onr   r,   Tr   )r   r   r   r(         z^Levelsz^Codes)
ro   
set_levelsr   copyr   r    rf   	set_codesrp   	TypeError)r#   ro   rb   rr   rs   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   ra         )rp   rb   )rp   r~   r   r   from_tuplesrangeequals)r#   rp   rt   ru   rv   rw   r   irj   r   rT   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   ra   zNames must be a)
ro   rp   r   r   r    rf   r|   r~   re   r   )r#   ro   rp   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(r`   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   r\   )ro   rp   r   rc   )r   r?   re   r   assert_index_equal)r`   r   mrT   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   ra   )ro   rp   bacb)
categoriesr   )r   from_arrayslistr   r|   rp   r   r   get_level_valuesr   r   )r   rS   cidxrT   r   
result_lvlexpected_lvls          r   test_set_levels_categoricalr   1  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                  d
k(  sJ d|j                  d<   |j                  j                  d
k(  sJ y )N)hansr   r   grether   r   )123r   NameNumberr7   )   rz   )onetwothreefour)columnsrS   )r   r   g(\X@))r   4r   )r   r   r@   	DataFramer   randomdefault_rngstandard_normal
sort_indexrS   r   at)lev1lev2r#   dfs       r   test_set_value_keeps_namesr   B  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colorr7   )r   r   r   ra   )r(   r   r   )r   r   r|   mapr4   r   r   )sizescolorsrS   rT   expected_sizesr   s         r   test_set_levels_with_iterabler   R  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 )NrR   r7   r   ra   )r   r   r|   r@   DatetimeIndexr   r   midxrT   r   s      r   test_set_empty_levelr   _  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barr7   zpositional argumentsr   r)   r   r   )r   r   r   r    r   r|   r~   )r#   s    r    test_set_levels_pos_args_removalr   g  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 )Nr{   r   r   r   r   )ro   rb   )r   r   r|   r@   Categoricalr   r   r   s      r   &test_set_levels_categorical_keep_dtyper   w  sg    !!Aq6(+D__BNNAq6$:!_DF%%r~~q!f'=&>?H&(+r   )F) numpyr   r   pandas.core.dtypes.dtypesr   pandasr@   r   r   pandas._testing_testingr   r   r%   rK   rP   rU   rZ   rm   rx   r   r   r   markparametrizer   r   r   r   r   r   r    r   r   <module>r      s      5  G(;,;(-$* #F**GZ##L,&^ T5M2, 3, T5M24 34 0 
,,+ ,r   