
    A>i6'                     v    S SK rS SKrS SKJs  Jr  S SKrS SKJ	r	J
r
JrJrJr  S SKJr  S SKJr   " S S5      rg)    N)CategoricalDtype	DataFrameIndex
MultiIndexSeries)BooleanDtypec                      \ rS rSrS r\R                  R                  SSS/5      S 5       rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS r\R                  R                  S/ SQ5      S 5       rS rS rSrg)TestMultiIndexBasic   c                    [        / SQ/ SQ[        R                  R                  S5      R                  S5      S.5      R	                  SS/5      n[
        R                  " U5         UR                  S     S S S 5        UR                  / S	Q   n[
        R                  " U5         UR                  S
     S S S 5        g ! , (       d  f       NN= f! , (       d  f       g = f)N)r   r      r   )xr   zy      )jimjoejolier   r   )r   r   )r   r      r   )r   )	r   nprandomdefault_rng	set_indextmassert_produces_warninglociloc)selfperformance_warningdfs      o/var/www/html/land-tabula/venv/lib/python3.13/site-packages/pandas/tests/indexing/multiindex/test_multiindex.pytest_multiindex_perf_warn-TestMultiIndexBasic.test_multiindex_perf_warn   s    #+..q188;
 )UEN
# 	 ''(;<FF8 = WW\"''(;<FF4L =<	 =< =<s   'B?&C?
C
Coffset   c           
      r   SnX2-   nUR                  5          UR                  [        SU5        [        [        R
                  " U5      [        R                  " S/U-  [        R
                  " U5      45      5      nUS   S:X  d   eUS   S:X  d   eUS   S	:X  d   e S S S 5        g ! , (       d  f       g = f)
N   _SIZE_CUTOFFa)r+   r'   r'   )r+      r,   )r+      r-   )contextsetattrlibindexr   r   aranger   from_arrays)r   monkeypatchr%   size_cutoffnss         r"   (test_indexing_over_hashtable_size_cutoff<TestMultiIndexBasic.test_indexing_over_hashtable_size_cutoff#   s       ".+Fryy|Z%;%;cUQY		RS<U%VWA X;!###X;!###X;!### #""s   BB((
B6c           	      r   [        SS[        R                  S// SQSS[        R                  S/S.5      nUR                  S	S
/SS9n[        SS[        R                  S// SQSS[        R                  S/S.[	        SS[        R                  S/S	S9[	        / SQS
S9/S9n[
        R                  " X#5        g )NR1R2R4C1C2C3C4
      r)   r+   bcr+   rE   F)dropnameindex)r   r   nanr   r   r   assert_frame_equal)r   r!   resultexpecteds       r"   test_multi_nan_indexing+TestMultiIndexBasic.test_multi_nan_indexing1   s    D"&&$/-"bffb)
 sCju5D"&&$/-"bffb) tT26640s;.S9

 	f/    c           	         [        [        R                  [        R                  [        R                  [        R                  // SQSS[        R                  S/S.5      nUR                  SS/5      n[        SSS[        R                  S/0[        [        R                  [        R                  [        R                  [        R                  /SS	9[        / SQSS	9/S
9n[        R                  " X5        g )Nr=   rB   rC   r)   rD   r+   rE   rF   rH   rJ   )	r   pdNaTr   rL   r   r   r   rM   )r   r!   rO   s      r"   "test_exclusive_nat_column_indexing6TestMultiIndexBasic.test_exclusive_nat_column_indexingH   s     ffbffbffbff5-"bffb)
 \\3*%b"bffb) rvvrvvrvvrvv6SA.S9	
 	b+rR   c                 &   [         R                  " / SQ5      n[        / SQ5      n[        R                  " X/SS/S9n[        / SQ[        R                  [        R                  [        R                  /S.US9n[        US	   S
S
[        R                  /S.US9nUR                  SS9nS
UR                  US   S4S4'   [        R                  " Xe5        UR                  SS9nS
UR                  US   S4/S4'   [        R                  " Xu5        g )N)20190101rY   20190102)r+   r+   rF   index1index2namesr   r   r   )c1c2rJ   r`         ?T)deepr   r+   ra   )rT   to_datetimer   r   r2   r   r   rL   copyr   r   rM   )r   dtiidxmir!   rO   df2df3s           r"   test_nested_tuples_duplicates1TestMultiIndexBasic.test_nested_tuples_duplicates^   s     nnABO$##SJx6JKi/GHPRSBtHS#rvv4FGrRgg4g '*Qt#$
c,gg4g ),#a&#%&
c,rR   c                    [        [        S5      SS9n[        R                  " SSSSS9n[        R
                  " X/5      n[        [        R                  R                  S5      R                  S	5      US
9nUR                  S   R                  n[        R                  " XR5        UR                  UR                  :X  d   eg )Nr   ArH   z
2020-01-01r-   DB)periodsfreqrI   )   r   rJ   r   )r   rangerT   
date_ranger   from_productr   r   r   r   standard_normalr   rK   r   assert_index_equalrr   )r   rg   rf   rh   r!   rN   s         r"   2test_multiindex_with_datatime_level_preserves_freqFTestMultiIndexBasic.test_multiindex_with_datatime_level_preserves_freqq   s    E!H3'mmL!#CH$$cZ0ryy,,Q/??HPRS
f*{{chh&&&rR   c                     / SQn/ SQn[        UUUS.5      nUR                  SS/SS9  [        SU0[        R                  " X/S	S
9S9n[        R
                  " X45        g )N)y      ?       @y      @      y      $@      )r   r   r'   )r   r   r   r   r   T)inplacer   )r   r   r]   rJ   )r   r   r   r2   r   rM   )r   complex_datanon_complex_datarN   rO   s        r"   test_multiindex_complex+TestMultiIndexBasic.test_multiindex_complex{   sx    0$!%%
 	#sT2"#((0 
 	f/rR   c                     [         R                  " / SQ5      n[        US9nUR                  SS0SS9n[         R                  " / SQ5      n[        US9n[        R
                  " X$5        g )N))rn   catrp   r   r   rJ   rn   Appler   )rK   level))r   r   r   r   )r   from_tuplesr   renamer   rM   )r   rh   r!   mi2rO   s        r"   &test_rename_multiindex_with_duplicates:TestMultiIndexBasic.test_rename_multiindex_with_duplicates   s\    ##$NOR YYc7^1Y5$$%ST3'
b+rR   c                    [         R                  " S[        R                  /[        R                  [        R                  //5      n[         R                  " [        R                  S/[        R                  [        R                  //5      n[	        SS/US9n[	        SS/US9nUR                  U5      u  pV[         R                  " SS[        R                  /[        R                  [        R                  [        R                  //5      n[	        S[        R                  S/US9n[	        [        R                  SS/US9n	[        R                  " XX5        [        R                  " Xi5        g )N     @T@g     T@r   r   rJ   rb   g       @r   r2   r   rL   r   alignr   assert_series_equal
r   mi1r   ser1ser2result1result2rh   	expected1	expected2s
             r"   2test_series_align_multiindex_with_nan_overlap_onlyFTestMultiIndexBasic.test_series_align_multiindex_with_nan_overlap_only   s   $$tRVVnrvvrvv6F%GH$$rvvtnrvvrvv6F%GHq!fC(q!fC(::d+##dD"&&%9BFFBFFBFF;S$TUC-R8	BFFC-R8	
w2
w2rR   c                    [         R                  " S[        R                  /[        R                  [        R                  //5      n[         R                  " [        R                  S/[        R                  [        R                  //5      n[	        SS/US9n[	        SS/US9nUR                  U5      u  pV[         R                  " S[        R                  /[        R                  [        R                  //5      n[	        SS/US9n[	        SS/US9n	[        R                  " XX5        [        R                  " Xi5        g )Nr   r   r   rJ   r   r   s
             r"   %test_series_align_multiindex_with_nan9TestMultiIndexBasic.test_series_align_multiindex_with_nan   s    $$tRVVnrvvrvv6F%GH$$rvvtnrvvrvv6F%GHq!fC(q!fC(::d+##dBFF^bffbff5E$FGAq6,	Aq6,	
w2
w2rR   c                     [        SS/SS//5      R                  SS/5      R                  R                  5       nUS:X  d   eg )Nr   r   r   )r   r   rK   nunique)r   r5   s     r"   test_nunique_smoke&TestMultiIndexBasic.test_nunique_smoke   sB    1v1v&'111a&9??GGIAvvrR   c           
          [         R                  " [        SS/[        R                  " SS//5      5      R
                  / SQ   [        / SQ[        R                  " / SQ/5      5      5        g )Nr   r   r+   rE   )r+   r+   rE   rE   )r   r   r   r   )r   r   r   r   r2   r   )r   s    r"   test_multiindex_repeated_keys1TestMultiIndexBasic.test_multiindex_repeated_keys   sX    
Aq6:11C:,?@DD$ <!7!79M8N!OP		
rR   c                     [         R                  " / SQ/ SQ/ SQS.5      n[        R                  " [        SS9   US/     S S S 5        g ! , (       d  f       g = f)Nr_   )r'   r,   r-   )   	   r   ))foo)bar)Nmissing_key)match)r   )r   	from_dictpytestraisesKeyError)r   r!   s     r"   #test_multiindex_with_na_missing_key7TestMultiIndexBasic.test_multiindex_with_na_missing_key   sH      ##"
 ]]8=9 !" :99s   A


Ac                 b   [         R                  " S/SS/S9n[        S/US9R                  S5      nUS   n[	        US	   R
                  [        5      (       d   e[        S
S/SS
//SS/SS/SS//S9R                  [        SS/SS9S9n[	        US   R
                  [        5      (       d   eg )Nrn   rp   lvl1lvl2r]   valuecolumnscategoryrn   rp   r   r   r   locationr   r   TFbooleandtype)boolsr   )
r   r   r   astype
isinstancer   r   assignr   r   )r   r   r!   df_no_multiindexs       r"   "test_multiindex_dtype_preservation6TestMultiIndexBasic.test_multiindex_dtype_preservation   s    ((*ff=MNy'299*Ec7*3/557GHHHH VaVZ(c

 &vtUm9=&
> 	 "W+++\::::rR   c                 
   [         R                  " S[        R                  S/5      n[         R                  " S[        R                  [        R                  [        R                  4S/5      n[        R
                  " X5        g )NrD   )d r   )r   r   r   rL   r   rx   )r   rN   rO   s      r"   $test_multiindex_from_tuples_with_nan8TestMultiIndexBasic.test_multiindex_from_tuples_with_nan   sZ    ''"&&-(PQ))rvvrvvrvv6F
 	f/rR   	operation)divmuladdsubc                    [        / SQ/ SQ/ SQ// SQS9nUS   R                  S5      US'   US   R                  R                  SS	S
.5      US'   UR	                  SS/S9S   R                  5       nUR	                  SS/S9R                  5       n[        X15      " U5      n[        X15      " UR                  SS95      n[        R                  " XV5        g )N)Crp   rp   )rp   rn   rn   )rp   rn   rp   )012r   r   r   rp   r   )r   rp   r   )byr   F)	ascending)r   r   r   rename_categoriesgroupbyvalue_countssizegetattr
sort_indexr   r   )r   r   datar+   rE   rN   rO   s          r"   9test_groupyby_rename_categories_operation_with_multiindexMTestMultiIndexBasic.test_groupyby_rename_categories_operation_with_multiindex   s     o?
 I$$Z0S	IMM33#C4HIS	LLS#JL',99;LLS#JL',,.&q)1()FG
v0rR   c                 D   [         R                  " S/5      n[        [        S5       Vs/ s H  o"/PM     snUS9nUR	                  5       nUR	                  5       nUS   R                  S5      R                  5       nUR	                  5       nUR	                  5       nXtS'   XS'   [        R                  " XE5        XcS'   [        R                  " X45        [        R                  " X55        XcS'   [        R                  " X45        [        R                  " X55        g s  snf )Nr   r   r   rn   r   r   )r   r   )	r   r   r   rt   re   rollingmeanr   rM   )	r   colsidf1ri   rj   s1s2s3s	            r"   /test_multiindex_assign_aligns_as_implicit_tupleCTestMultiIndexBasic.test_multiindex_assign_aligns_as_implicit_tuple   s    %%zl3eAh/hh/>hhjhhjXa %%'WWYWWYCI
c'C
c'
c'C
c'
c'# 0s   Dc           
      H   [         R                  " / SQ[        R                  " / SQ5      /5      n[	        U[
        S9nUS   R                  S5      US'   [	        [        / [
        S9[        / [
        S9[        / SS9[        / SS9S.US9n[        R                  " X#5        g )	N)r+   r+   r   r   )r   r   r   r   )r   r   r   int64r   ))r+   r   )r+   r   )r   r   )r   r   )r   r   )
r   r2   rT   Categoricalr   objectr   r   r   rM   )r   r   metarN   s       r"   6test_multiindex_assign_alignment_with_non_string_dtypeJTestMultiIndexBasic.test_multiindex_assign_alignment_with_non_string_dtype  s    ((!2>>,#?@
 7I$$W-S	 62 62 73 73	 
 	d+rR    N)__name__
__module____qualname____firstlineno__r#   r   markparametrizer7   rP   rV   rk   ry   r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes__r   rR   r"   r
   r
      s      [[XAw/$ 0$0.,,-&'0*,33


#;$0 [[[*FG1 H1 (,,rR   r
   )numpyr   r   pandas._libs.index_libsrK   r0   pandasrT   r   r   r   r   r   pandas._testing_testingr   pandas.core.arrays.booleanr   r
   r   rR   r"   <module>r      s2      % %    3T, T,rR   