
    Owg                         d dl Zd dlZd dlmc mZ d dlmZ d dl	Z
d dl	mZmZmZmZmZ d dlmZ d dlmZ  G d d      Zy)    N)PerformanceWarning)CategoricalDtype	DataFrameIndex
MultiIndexSeries)BooleanDtypec                       e Zd Zd Zej
                  j                  dddg      d        Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestMultiIndexBasicc                    t        g dg dt        j                  j                  d      j                  d      d      j	                  ddg      }t        j                  t              5  |j                  d    d d d        |j                  g d	   }t        j                  t              5  |j                  d
    d d d        y # 1 sw Y   LxY w# 1 sw Y   y xY w)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_warningr   locilocselfdfs     g/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/indexing/multiindex/test_multiindex.pytest_multiindex_perf_warnz-TestMultiIndexBasic.test_multiindex_perf_warn   s    #+..q188;
 )UEN
# 	 ''(:; 	FF8	 WW\"''(:; 	FF4L	 			 		 	s   *C,CCCoffset   c           
      ^   d}||z   }|j                         5  |j                  t        d|       t        t	        j
                  |      t        j                  dg|z  t	        j
                  |      f            }|d   dk(  sJ |d   dk(  sJ |d   d	k(  sJ 	 d d d        y # 1 sw Y   y xY w)
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_cutoffz<TestMultiIndexBasic.test_indexing_over_hashtable_size_cutoff$   s    &   " 	$.+Fryy|Z%;%;cUQY		RS<U%VWA X;!###X;!###X;!###	$ 	$ 	$s   BB##B,c           	         t        ddt        j                  dgg dddt        j                  dgd      }|j                  d	d
gd      }t        ddt        j                  dgg dddt        j                  dgdt	        ddt        j                  dgd	      t	        g dd
      g      }t        j                  ||       y )NR1R2R4C1C2C3C4
      r(   r*   bcr*   rC   F)dropnameindex)r   r   nanr   r   r   assert_frame_equal)r    r!   resultexpecteds       r"   test_multi_nan_indexingz+TestMultiIndexBasic.test_multi_nan_indexing2   s    D"&&$/-"bffb)
 sCju5D"&&$/-"bffb) tT26640s;.S9

 	fh/    c           	         t        t        j                  t        j                  t        j                  t        j                  gg dddt        j                  dgd      }|j                  ddg      }t        dddt        j                  dgit        t        j                  t        j                  t        j                  t        j                  gd	      t        g dd	      g
      }t        j                  ||       y )Nr;   r@   rA   r(   rB   r*   rC   rD   rF   rH   )	r   pdNaTr   rJ   r   r   r   rK   )r    r!   rM   s      r"   "test_exclusive_nat_column_indexingz6TestMultiIndexBasic.test_exclusive_nat_column_indexingI   s     ffbffbffbff5-"bffb)
 \\3*%b"bffb) rvvrvvrvvrvv6SA.S9	
 	b(+rO   c                 B   t        j                  g d      }t        g d      }t        j                  ||gddg      }t        g dt        j                  t        j                  t        j                  gd|      }t        |d	   d
d
t        j                  gd|      }|j                  d      }d
|j                  |d   dfdf<   t        j                  ||       |j                  d      }d
|j                  |d   dfgdf<   t        j                  ||       y )N)20190101rU   20190102)r*   r*   rD   index1index2namesr   r   r   )c1c2rH   r\         ?T)deepr   r*   r]   )rQ   to_datetimer   r   r1   r   r   rJ   copyr   r   rK   )r    dtiidxmir!   rM   df2df3s           r"   test_nested_tuples_duplicatesz1TestMultiIndexBasic.test_nested_tuples_duplicates_   s     nnABO$##S#Jx6JKi/GHPRSBtHS#rvv4FGrRgg4g '*Qt#$
c8,gg4g ),#a&#%&
c8,rO   c                    t        t        d      d      }t        j                  dddd      }t	        j
                  ||g      }t        t        j                  j                  d      j                  d	      |
      }|j                  d   j                  }t        j                  ||       |j                  |j                  k(  sJ y )Nr   ArF   z
2020-01-01r,   DB)periodsfreqrG   )   r   rH   r   )r   rangerQ   
date_ranger   from_productr   r   r   r   standard_normalr   rI   r   assert_index_equalrm   )r    rc   rb   rd   r!   rL   s         r"   2test_multiindex_with_datatime_level_preserves_freqzFTestMultiIndexBasic.test_multiindex_with_datatime_level_preserves_freqr   s    E!H3'mmL!#CH$$c3Z0ryy,,Q/??HPRS
fc*{{chh&&&rO   c                     g d}g d}t        |||d      }|j                  ddgd       t        d|it        j                  ||gd	
            }t	        j
                  ||       y )N)y      ?       @y      @      y      $@      )r   r   r&   )r   r   r   r   r   T)inplacer   )r   r   rY   rH   )r   r   r   r1   r   rK   )r    complex_datanon_complex_datarL   rM   s        r"   test_multiindex_complexz+TestMultiIndexBasic.test_multiindex_complex|   s}    0$!%%
 	#sT2"#((/0 
 	fh/rO   c                     t        j                  g d      }t        |      }|j                  ddid      }t        j                  g d      }t        |      }t	        j
                  ||       y )N))ri   catrk   r{   r|   rH   ri   Appler   )rI   level))r}   r{   r|   r|   )r   from_tuplesr   renamer   rK   )r    rd   r!   mi2rM   s        r"   &test_rename_multiindex_with_duplicatesz:TestMultiIndexBasic.test_rename_multiindex_with_duplicates   s^    ##$NOR YYc7^1Y5$$%ST3'
b(+rO   c                    t        j                  dt        j                  gt        j                  t        j                  gg      }t        j                  t        j                  dgt        j                  t        j                  gg      }t	        ddg|      }t	        ddg|      }|j                  |      \  }}t        j                  ddt        j                  gt        j                  t        j                  t        j                  gg      }t	        dt        j                  dg|      }t	        t        j                  ddg|      }	t        j                  ||       t        j                  ||	       y )N     @T@g     T@r   r   rH   r^   g       @r   r1   r   rJ   r   alignr   assert_series_equal
r    mi1r   ser1ser2result1result2rd   	expected1	expected2s
             r"   2test_series_align_multiindex_with_nan_overlap_onlyzFTestMultiIndexBasic.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	2rO   c                    t        j                  dt        j                  gt        j                  t        j                  gg      }t        j                  t        j                  dgt        j                  t        j                  gg      }t	        ddg|      }t	        ddg|      }|j                  |      \  }}t        j                  dt        j                  gt        j                  t        j                  gg      }t	        ddg|      }t	        ddg|      }	t        j                  ||       t        j                  ||	       y )Nr   r   r   rH   r   r   s
             r"   %test_series_align_multiindex_with_nanz9TestMultiIndexBasic.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	2rO   c                     t        ddgddgg      j                  ddg      j                  j                         }|dk(  sJ y )Nr   r   r   )r   r   rI   nunique)r    r4   s     r"   test_nunique_smokez&TestMultiIndexBasic.test_nunique_smoke   sB    1v1v&'111a&9??GGIAvvrO   c           
          t        j                  t        ddgt        j                  ddgg            j
                  g d   t        g dt        j                  g dg                   y )Nr   r   r*   rC   )r*   r*   rC   rC   )r   r   r   r   )r   r   r   r   r1   r   )r    s    r"   test_multiindex_repeated_keysz1TestMultiIndexBasic.test_multiindex_repeated_keys   sX    
Aq6:11C:,?@DD$ <!7!79M8N!OP		
rO   c                     t        j                  g dg dg dd      }t        j                  t        d      5  |dg    d d d        y # 1 sw Y   y xY w)Nr[   )r&   r+   r,   )   	   r   ))foo)bar)Nmissing_key)match)r   )r   	from_dictpytestraisesKeyErrorr   s     r"   #test_multiindex_with_na_missing_keyz7TestMultiIndexBasic.test_multiindex_with_na_missing_key   sQ      ##"
 ]]8=9 	# !"	# 	# 	#s   AAc                 j   t        j                  dgddg      }t        dg|      j                  d      }|d   }t	        |d	   j
                  t              sJ t        d
dgdd
ggddgddgddgg      j                  t        ddgd            }t	        |d   j
                  t              sJ y )N)ri   rk   lvl1lvl2rY   value)columnscategoryri   rk   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_preservationz6TestMultiIndexBasic.test_multiindex_dtype_preservation   s    ((*ff=MNy'299*Ec7*3/557GHHH VaVZ(c

 &vtUm9=&
> 	 "W+++\:::rO   c                    t        j                  dt        j                  dg      }t        j                  dt        j                  t        j                  t        j                  fdg      }t	        j
                  ||       y )NrB   )d r   )r   r   r   rJ   r   rs   )r    rL   rM   s      r"   $test_multiindex_from_tuples_with_nanz8TestMultiIndexBasic.test_multiindex_from_tuples_with_nan   s\    ''"&&-(PQ))rvvrvvrvv6F
 	fh/rO   N)__name__
__module____qualname__r#   r   markparametrizer6   rN   rS   rg   rt   ry   r   r   r   r   r   r   r   r    rO   r"   r   r      sq      [[XAw/$ 0$0.,,-&'0*,33


#;$0rO   r   )numpyr   r   pandas._libs.index_libsrI   r/   pandas.errorsr   pandasrQ   r   r   r   r   r   pandas._testing_testingr   pandas.core.arrays.booleanr	   r   r   rO   r"   <module>r      s5      % % ,    3X0 X0rO   