o
    _~#g                     @   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ejdddg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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 sOw   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df r   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/pandas/tests/indexing/multiindex/test_multiindex.pytest_multiindex_perf_warn   s   
"z-TestMultiIndexBasic.test_multiindex_perf_warnoffset   c              	   C   s   d}|| }|  ; |td| tt|tdg| t|f}|d dks-J |d dks5J |d d	ks=J W d    d S 1 sHw   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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%   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_indexing2   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 )Nr7   r<   r=   r%   r>   r'   r?   r@   rB   rD   )	r   pdNaTr   rF   r   r   r   rG   )r   r   rI   r   r   r    "test_exclusive_nat_column_indexingI   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)20190101rN   20190102)r'   r'   r@   index1index2namesr
   r   r   )c1c2rD   rU         ?T)deepr   r'   rV   )rK   to_datetimer   r   r.   r   r   rF   copyr   r   rG   )r   dtiidxmir   rI   df2df3r   r   r    test_nested_tuples_duplicates_   s   "z1TestMultiIndexBasic.test_nested_tuples_duplicatesc                 C   sv   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s9J d S )Nr   ArB   z
2020-01-01r)   DB)periodsfreqrC   )   r   rD   r   )r   rangerK   
date_ranger   from_productr   r   r   r   standard_normalr   rE   r   assert_index_equalre   )r   r\   r[   r]   r   rH   r   r   r    2test_multiindex_with_datatime_level_preserves_freqr   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   rR   rD   )r   r   r   r.   r   rG   )r   complex_datanon_complex_datarH   rI   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))ra   catrc   rq   rr   rD   ra   Appler   )rE   level))rs   rq   rr   rr   )r   from_tuplesr   renamer   rG   )r   r]   r   mi2rI   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   rD   rW   g       @r   r.   r   rF   r   alignr   assert_series_equal
r   mi1rw   ser1ser2result1result2r]   	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 )Nry   r
   r   rD   rz   r}   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   rE   nunique)r   r1   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   r|   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 )NrT   )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)ra   rc   lvl1lvl2rR   value)columnscategoryra   rc   r
   r   r   locationr   r   TFboolean)dtype)boolsr   )
r   ru   r   astype
isinstancer   r   assignr   r   )r   r   r   df_no_multiindexr   r   r    "test_multiindex_dtype_preservation   s   z6TestMultiIndexBasic.test_multiindex_dtype_preservationc                 C   s>   t dtjdg}t dtjtjtjfdg}t|| d S )Nr>   )d r   )r   ru   r   rF   r   rk   )r   rH   rI   r   r   r    $test_multiindex_from_tuples_with_nan   s
   z8TestMultiIndexBasic.test_multiindex_from_tuples_with_nanN)__name__
__module____qualname__r!   r   markparametrizer3   rJ   rM   r`   rl   rp   rx   r   r   r   r   r   r   r   r   r   r   r    r	      s"    


	r	   )numpyr   r   pandas._libs.index_libsrE   r,   pandas.errorsr   pandasrK   r   r   r   r   r   pandas._testing_testingr   pandas.core.arrays.booleanr   r	   r   r   r   r    <module>   s    