
    bMh                         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dS )    N)PerformanceWarning)CategoricalDtype	DataFrameIndex
MultiIndexSeries)BooleanDtypec                       e Zd Zd Ze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dS )TestMultiIndexBasicc                    t          g dg dt          j                            d                              d          d                              ddg          }t          j        t                    5  |j        d          d d d            n# 1 swxY w Y   |j	        g d	         }t          j        t                    5  |j        d
          d d d            d S # 1 swxY w Y   d S )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     p/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/indexing/multiindex/test_multiindex.pytest_multiindex_perf_warnz-TestMultiIndexBasic.test_multiindex_perf_warn   sk   #||+++..q1188;; 
 
 )UEN
#
# 	 '(:;; 	 	F8	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 W\\\"'(:;; 	 	F4LL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   6BBBCC"%C"offset   c           
         d}||z   }|                                 5  |                    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            d S # 1 swxY w Y   d S )
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FFry||Z%;cUQY	RS<U%V%VWWA X;!####X;!####X;!#####	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   BB==CCc           	         t          ddt          j        dgg dddt          j        dgd          }|                    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        ||           d S )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"&$/---"bfb) 
 
 sCju55D"&$/---"bfb)  tT2640s;;;...S999

 

 

 	fh/////    c           	         t          t          j        t          j        t          j        t          j        gg dddt          j        dgd          }|                    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        ||           d S )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     fbfbfbf5---"bfb) 
 
 \\3*%%b"bfb) rvrvrvrv6SAAA...S99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|          }|                    d          }d
|j	        |d         dfdf<   t          j        ||           |                    d          }d
|j	        |d         dfgdf<   t          j        ||           d S )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"    nAAABBOOO$$#S#Jx6JKKKiii/GHHPRSSSBtHS#rv4FGGrRR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        	                    d          
                    d	          |
          }|j        d         j        }t          j        ||           |j        |j        k    sJ d S )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!HH3'''mL!#CHHH$c3Z00ry,,Q//??HHPRSSS
fc***{ch&&&&&&rO   c                     g d}g d}t          |||d          }|                    ddgd           t          d|it          j        ||gd	
                    }t	          j        ||           d S )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00$99!%% 
 
 	#sT222"#(/0   
 
 
 	fh/////rO   c                     t          j        g d          }t          |          }|                    ddid          }t          j        g d          }t          |          }t	          j        ||           d S )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$N$NOOR   YYc7^1Y55$%S%S%ST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|          }|                    |          \  }}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        ||	           d S )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   $tRVnrvrv6F%GHH$rvtnrvrv6F%GHHq!fC(((q!fC(((::d++#dD"&%9BFBFBF;S$TUUC-R888	BFC-R888	
w	222
w	22222rO   c                 r   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|          }|                    |          \  }}t          j        dt          j        gt          j        t          j        gg          }t	          ddg|          }t	          ddg|          }	t          j        ||           t          j        ||	           d S )Nr   r   r   rH   r   r   s
             r"   %test_series_align_multiindex_with_nanz9TestMultiIndexBasic.test_series_align_multiindex_with_nan   s   $tRVnrvrv6F%GHH$rvtnrvrv6F%GHHq!fC(((q!fC(((::d++#dBF^bfbf5E$FGGAq6,,,	Aq6,,,	
w	222
w	22222rO   c                     t          ddgddgg                              ddg          j                                        }|dk    sJ d S )Nr   r   r   )r   r   rI   nunique)r    r4   s     r"   test_nunique_smokez&TestMultiIndexBasic.test_nunique_smoke   sN    1v1v&''111a&99?GGIIAvvvvvvrO   c           
          t          j        t          ddgt          j        ddgg                    j        g d         t          g dt          j        g dg                               d S )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   s|    
Aq6:1C:,??@@D$$$ <<<!79M9M9M8N!O!OPP		
 	
 	
 	
 	
rO   c                     t          j        g dg dg dd          }t          j        t          d          5  |dg          d d d            d S # 1 swxY w Y   d S )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   s     #))#))" 
 
 ]8=999 	# 	# !""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   
AAAc                    t          j        dgddg          }t          dg|                              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                              t          ddgd                    }t	          |d         j        t                    sJ d S )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NNy'22299*EEc7*3/57GHH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        ||           d S )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Q)rvrvrv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      s           [XAw//$ $ 0/$0 0 0., , ,,- - -&' ' '0 0 0*, , ,3 3 33 3 3  

 
 

# 
# 
#; ; ;$0 0 0 0 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      s         % % % % % % % % % , , , , , ,                        3 3 3 3 3 3X0 X0 X0 X0 X0 X0 X0 X0 X0 X0rO   