o
    5c}                     @   sl   d dl Zd dlZd dlm  mZ d dlmZ d dl	Z
d dl	mZmZmZmZ d dlmZ G dd dZdS )    N)PerformanceWarning)	DataFrameIndex
MultiIndexSeriesc                
   @   sN  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
ejddejfejejfgejejfdejfgddgddggdejfejejfgdejfejejfgddgddggfdejfejejfgejejfdejfgddgddggdejfejejfgdejfejejfgddgddggfgdd Zdd Zdd ZdS )TestMultiIndexBasicc                 C   s   t g dg dtjddddg}tt |jd  W d    n1 s*w   Y  |j	g d }tt |jd	  W d    d S 1 sLw   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df r   f/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/indexing/multiindex/test_multiindex.pytest_multiindex_perf_warn   s   

"z-TestMultiIndexBasic.test_multiindex_perf_warnc                 C   sp   d}t j}dt _tt|tdg| t|f}|d dks#J |d dks+J |d d	ks3J |t _d S )
Ni'  i N  a)r      r    )r      r!   )r      r"   )_index_SIZE_CUTOFFr   r   aranger   from_arrays)r   n
old_cutoffsr   r   r   (test_indexing_over_hashtable_size_cutoff"   s   &
z<TestMultiIndexBasic.test_indexing_over_hashtable_size_cutoffc                 C   s   t ddtjdgg dddtjdgd}|jd	d
gd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	dtg dd
dgd}t|| d S )NR1R2R4C1C2C3C4
         r   bcr   r7   F)dropnameindex)r   r   nanr   r   r   assert_frame_equal)r   r   resultexpectedr   r   r   test_multi_nan_indexing1   s"   z+TestMultiIndexBasic.test_multi_nan_indexingc                 C   s   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d	tg ddd	gd
}t|| d S )Nr.   r3   r4   r5   r6   r   r7   r8   r:   r<   )	r   pdNaTr   r>   r   r   r   r?   )r   r   rA   r   r   r   "test_exclusive_nat_column_indexingH   s   	z6TestMultiIndexBasic.test_exclusive_nat_column_indexingc                 C   s   t g d}tg d}tj||gddgd}tg dtjtjtjgd|d}t|d	 d
d
tjgd|d}|jdd}d
|j	|d dfdf< t
|| |jdd}d
|j	|d dfgdf< t
|| d S )N)20190101rF   20190102)r   r   r8   index1index2names)r   r   r   )c1c2r<   rL   g      ?T)deepr   r   rM   )rC   to_datetimer   r   r&   r   r   r>   copyr   r   r?   )r   dtiidxmir   rA   df2df3r   r   r   test_nested_tuples_duplicates^   s   "z1TestMultiIndexBasic.test_nested_tuples_duplicatesc                 C   sr   t tddd}tjddddd}t||g}ttj	d	d|d
}|j
d j}t|| |j|jks7J d S )Nr   Ar:   z
2020-01-01r"   DB)periodsfreqr;      r<   r   )r   rangerC   
date_ranger   from_productr   r   r   randnr   r=   r   assert_index_equalr[   )r   rR   rQ   rS   r   r@   r   r   r   2test_multiindex_with_datatime_level_preserves_freqq   s   zFTestMultiIndexBasic.test_multiindex_with_datatime_level_preserves_freqc                 C   s`   g d}g d}t |||d}|jddgdd t d|itj||gd	d
d}t|| d S )N)y      ?       @y      @      y      $@      )r   r   r    )r	   r   r
   r	   r   T)inplacer
   )r	   r   rJ   r<   )r   r   r   r&   r   r?   )r   complex_datanon_complex_datar@   rA   r   r   r   test_multiindex_complex{   s"   z+TestMultiIndexBasic.test_multiindex_complexc                 C   sR   t g d}t|d}|jddidd}t g d}t|d}t|| d S )N))rW   catrY   rg   rh   r<   rW   Appler   )r=   level))ri   rg   rh   rh   )r   from_tuplesr   renamer   r?   )r   rS   r   mi2rA   r   r   r   &test_rename_multiindex_with_duplicates   s   

z:TestMultiIndexBasic.test_rename_multiindex_with_duplicateszdata_result, data_expectedg     @T@g     T@r   r   c                 C   s  t |d }t |d }t|d |d}t|d |d}||}t |d }t |d }	t|d |d}
t|d |	d}|
j|
jjd d|
jjd dg|
_|j|jjd d|jjd dg|_t	|d |
 t	|d | d S )Nr   r   r   r<   r   float)
r   rk   r   alignr=   
set_levelslevelsastyper   assert_series_equal)r   data_resultdata_expecteda_index_resultb_index_resulta_series_resultb_series_resultr@   a_index_expectedb_index_expecteda_series_expectedb_series_expectedr   r   r   Btest_subtracting_two_series_with_unordered_index_and_all_nan_index   s*   %
zVTestMultiIndexBasic.test_subtracting_two_series_with_unordered_index_and_all_nan_indexc                 C   s4   t ddgddggddgj }|dksJ d S )Nr   r   r   )r   r   r=   nunique)r   r'   r   r   r   test_nunique_smoke   s   $z&TestMultiIndexBasic.test_nunique_smokec              	   C   sF   t tddgtddggjg d tg dtg dg d S )Nr   r   r   r7   )r   r   r7   r7   )r   r   r   r   )r   rt   r   r   r&   r   )r   r   r   r   test_multiindex_repeated_keys   s   z1TestMultiIndexBasic.test_multiindex_repeated_keysN)__name__
__module____qualname__r   r*   rB   rE   rV   rb   rf   rn   pytestmarkparametrizer   r>   r   r   r   r   r   r   r   r      sL    


!r   )numpyr   r   pandas._libs.index_libsr=   r#   pandas.errorsr   pandasrC   r   r   r   r   pandas._testing_testingr   r   r   r   r   r   <module>   s    