
    d                         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                   b    e 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 Zd ZdS )TestMultiIndexBasicc                    t          g dg dt          j                            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   nprandomrand	set_indextmassert_produces_warningr   locilocselfdfs     l/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/indexing/multiindex/test_multiindex.pytest_multiindex_perf_warnz-TestMultiIndexBasic.test_multiindex_perf_warn   s[   #||+++** 
 
 )UEN
#
# 	 '(:;; 	 	F8	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 W\\\"'(:;; 	 	F4LL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   #A==BB0CCCc           	      >   d}t           j        }dt           _        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 |t           _        d S )
Ni'  i N  a)r%      r&   )r%      r'   )r%      r(   )_index_SIZE_CUTOFFr   r   aranger   from_arrays)r    n
old_cutoffss       r"   (test_indexing_over_hashtable_size_cutoffz<TestMultiIndexBasic.test_indexing_over_hashtable_size_cutoff$   s    (
#29Q<<!7#BIaLL8Q!R!RSS {a{a{a(    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%   bcr%   r?   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_indexing3   s    D"&$/---"bfb) 
 
 sCju55D"&$/---"bfb)  tT2640s;;;...S999

 

 

 	fh/////r1   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 )Nr6   r;   r<   r=   r>   r%   r?   r@   rB   rD   )	r   pdNaTr   rF   r   r   r   rG   )r    r!   rI   s      r"   "test_exclusive_nat_column_indexingz6TestMultiIndexBasic.test_exclusive_nat_column_indexingJ   s     fbfbfbf5---"bfb) 
 
 \\3*%%b"bfb) rvrvrvrv6SAAA...S999	
 
 
 	b(+++++r1   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)20190101rP   20190102)r%   r%   r@   index1index2namesr   r   r   )c1c2rD   rW         ?T)deepr   r%   rX   )rL   to_datetimer   r   r,   r   r   rF   copyr   r   rG   )r    dtiidxmir!   rI   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,,,,,r1   c                 n   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   ArB   z
2020-01-01r(   DB)periodsfreqrC      rD   r   )r   rangerL   
date_ranger   from_productr   r   r   randnr   rE   r   assert_index_equalrh   )r    r^   r]   r_   r!   rH   s         r"   2test_multiindex_with_datatime_level_preserves_freqzFTestMultiIndexBasic.test_multiindex_with_datatime_level_preserves_freqs   s    E!HH3'''mL!#CHHH$c3Z00ryr1--R888
fc***{ch&&&&&&r1   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   rT   rD   )r   r   r   r,   r   rG   )r    complex_datanon_complex_datarH   rI   s        r"   test_multiindex_complexz+TestMultiIndexBasic.test_multiindex_complex}   s    000$99!%% 
 
 	#sT222"#(/0   
 
 
 	fh/////r1   c                     t          j        g d          }t          |          }|                    ddid          }t          j        g d          }t          |          }t	          j        ||           d S )N))rd   catrf   rv   rw   rD   rd   Appler   )rE   level))rx   rv   rw   rw   )r   from_tuplesr   renamer   rG   )r    r_   r!   mi2rI   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(+++++r1   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   rD   rY   g       @r   r,   r   rF   r   alignr   assert_series_equal
r    mi1r|   ser1ser2result1result2r_   	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2r1   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   rD   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2r1   c                     t          ddgddgg                              ddg          j                                        }|dk    sJ d S )Nr   r   r   )r   r   rE   nunique)r    r-   s     r"   test_nunique_smokez&TestMultiIndexBasic.test_nunique_smoke   sN    1v1v&''111a&99?GGIIAvvvvvvr1   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%   r?   )r%   r%   r?   r?   )r   r   r   r   )r   r   r   r   r,   r   )r    s    r"   test_multiindex_repeated_keysz1TestMultiIndexBasic.test_multiindex_repeated_keys   s|    
Aq6:1C:,??@@D$$$ <<<!79M9M9M8N!O!OPP		
 	
 	
 	
 	
r1   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 )NrV   )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)rd   rf   lvl1lvl2rT   value)columnscategoryrd   rf   r   r   r   locationr   r   TFboolean)dtype)boolsr   )
r   rz   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++\:::::::r1   N)__name__
__module____qualname__r#   r0   rJ   rN   rb   ro   rt   r}   r   r   r   r   r   r    r1   r"   r   r      s           ) ) )0 0 0., , ,,- - -&' ' '0 0 0*, , ,3 3 33 3 3  

 
 

# 
# 
#; ; ; ; ;r1   r   )numpyr   r   pandas._libs.index_libsrE   r)   pandas.errorsr   pandasrL   r   r   r   r   r   pandas._testing_testingr   pandas.core.arrays.booleanr	   r   r   r1   r"   <module>r      s         # # # # # # # # # , , , , , ,                        3 3 3 3 3 3Q; Q; Q; Q; Q; Q; Q; Q; Q; Q;r1   