o
    d                     @   s|   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mZ d dlmZ d dlmZ G dd dZdS )    N)PerformanceWarning)CategoricalDtype	DataFrameIndex
MultiIndexSeries)BooleanDtypec                   @   s|   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
dd Zdd Zdd Z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   u/var/www/html/visualizacion-main/env/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"   r:   F)dropnameindex)r   r   nanr   r   r   assert_frame_equal)r   r   resultexpectedr   r   r    test_multi_nan_indexing3   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 )Nr1   r6   r7   r8   r9   r"   r:   r;   r=   r?   )	r   pdNaTr   rA   r   r   r   rB   )r   r   rD   r   r   r    "test_exclusive_nat_column_indexingJ   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)20190101rI   20190102)r"   r"   r;   index1index2namesr
   r   r   )c1c2r?   rP         ?T)deepr   r"   rQ   )rF   to_datetimer   r   r)   r   r   rA   copyr   r   rB   )r   dtiidxmir   rD   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   rangerF   
date_ranger   from_productr   r   r   randnr   r@   r   assert_index_equalr`   )r   rW   rV   rX   r   rC   r   r   r    2test_multiindex_with_datatime_level_preserves_freqs   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   rM   r?   )r   r   r   r)   r   rB   )r   complex_datanon_complex_datarC   rD   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))r\   catr^   rl   rm   r?   r\   Appler   )r@   level))rn   rl   rm   rm   )r   from_tuplesr   renamer   rB   )r   rX   r   mi2rD   r   r   r    &test_rename_multiindex_with_duplicates   s   

z:TestMultiIndexBasic.test_rename_multiindex_with_duplicatesc           
      C   s   t dtjgtjtjgg}t tjdgtjtjgg}tddg|d}tddg|d}||\}}t ddtjgtjtjtjgg}tdtjdg|d}ttjddg|d}	t|| t||	 d S )N     @T@g     T@r
   r   r?   rR   g       @r   r)   r   rA   r   alignr   assert_series_equal
r   mi1rr   ser1ser2result1result2rX   	expected1	expected2r   r   r    2test_series_align_multiindex_with_nan_overlap_only   s   "zFTestMultiIndexBasic.test_series_align_multiindex_with_nan_overlap_onlyc           
      C   s   t dtjgtjtjgg}t tjdgtjtjgg}tddg|d}tddg|d}||\}}t dtjgtjtjgg}tddg|d}tddg|d}	t|| t||	 d S )Nrt   r
   r   r?   ru   rx   r   r   r    %test_series_align_multiindex_with_nan   s   z9TestMultiIndexBasic.test_series_align_multiindex_with_nanc                 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"   r:   )r"   r"   r:   r:   )r
   r
   r   r   )r   rw   r   r   r)   r   )r   r   r   r    test_multiindex_repeated_keys   s   z1TestMultiIndexBasic.test_multiindex_repeated_keysc                 C   s\   t g dg dg dd}tjtdd |dg  W d    d S 1 s'w   Y  d S )NrO   )r#   r$   r%   )   	   r   ))foo)bar)Nmissing_key)match)r   )r   	from_dictpytestraisesKeyErrorr   r   r   r    #test_multiindex_with_na_missing_key   s   "z7TestMultiIndexBasic.test_multiindex_with_na_missing_keyc                 C   s   t jdgddgd}tdg|d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djtddgddd}t|d jt	sKJ d S )N)r\   r^   lvl1lvl2rM   value)columnscategoryr\   r^   r
   r   r   locationr   r   TFboolean)dtype)boolsr   )
r   rp   r   astype
isinstancer   r   assignr   r   )r   r   r   df_no_multiindexr   r   r    "test_multiindex_dtype_preservation   s   z6TestMultiIndexBasic.test_multiindex_dtype_preservationN)__name__
__module____qualname__r!   r-   rE   rH   r[   rg   rk   rs   r   r   r   r   r   r   r   r   r   r    r	      s    

	r	   )numpyr   r   pandas._libs.index_libsr@   r&   pandas.errorsr   pandasrF   r   r   r   r   r   pandas._testing_testingr   pandas.core.arrays.booleanr   r	   r   r   r   r    <module>   s    