o
    vh'-                  
   @   s  d dl mZ d dlZd dlZd dlmZmZ d dl	m
Z
mZmZmZmZ d dlmZ ejdd Zejdddd	ggd
d Zdd Zejdg ddd Zdd Zejdg dg dg dgdd Zdd Zdd Zdd Zejdd d!gejd"d#d$gd%d& Zejd'deg d(fd)eg d*fd$eg d+fgd,d- Z ejj!d.d/ Z"ejd0d1d2gd3d4 Z#ejd5e$d6d7ejd8e$d6d9d:d; Z%d<d= Z&ejd>ej'ej(gd?d@ Z)dAdB Z*dS )C    )productN)	hashtableindex)NADatetimeIndexIndex
MultiIndexSeriesc                  C   sX   t g d} t ddg}tg d}tg d}ddg}t| |g||g|dd	}|S )
N)foobarbazquxonetwo)r   r      r   r   r   )r   r   r   r   r   r   firstsecondF)levelscodesnamesverify_integrity)r   nparrayr   )
major_axis
minor_axismajor_codesminor_codesindex_namesmi r   h/var/www/html/hyperkenya/venv/lib/python3.10/site-packages/pandas/tests/indexes/multi/test_duplicates.pyidx_dup   s   r!   r   r   r   c                 C   s  t jg dg dg| d}| }t jg dg dg|jd}t|| t jtdtdg| d}| }t jtdtd	g|jd}t|| t jtdtdg| d}| }t jd
gd
gg|jd}t|| t jg g g| d}| }t|| d S )N)r      r   r"   )r   r   r   r"   r   )r   r"   r"   r   r   r"   aaaaababaaaba)r   from_arraysuniquer   tmassert_index_equallist)r   r   resexpr   r   r    test_unique'   s   r1   c                  C   sh   t g d} t g ddd}t| |g }t g d}t g ddd}t||g}t|| d S )N)
2015-01-01r2   r2   r2   NaTr3   )r2   r2   
2015-01-02r4   r3   r2   z
Asia/Tokyo)tz)r2   r2   r3   r3   )r2   r4   r3   r2   )r   r   r*   r+   r,   r-   )idx1idx2resulteidx1eidx2r0   r   r   r    test_unique_datetimelike?   s   r;   level)r   r   r   r   c                 C   s   | j |d}| |  }t|| tjg dg dgddgd}|j |d}||}t|| tjg g gddgd}|j |d}||}t|| d S )Nr<   )r      r"      )r   r>   r"      r   r   r#   )r+   get_level_valuesr,   r-   r   r*   )idxr<   r8   expectedr   r   r   r    test_unique_levelQ   s   

rD   c                  C   s   d} t jt| d tdgd tdgdgd tdg}W d    n1 s'w   Y  tg dg dg}d} t jt| d |g d	g d
g W d    d S 1 sWw   Y  d S )Nz3Level values must be unique: \[[A', ]+\] on level 0)matchA
   r   )rF   rF   BrH   rH   )r   r"   r   r"   r>   z4Level values must be unique: \[[AB', ]+\] on level 0)rF   rH   rF   rF   rH   )r"   r   r>   r@   )pytestraises
ValueErrorr   ranger*   
set_levels)msgr   r   r   r    test_duplicate_multiindex_codese   s   ("rP   )r)   br)   r$   )r   r)   r   c                 C   s   t jddggd | d}|j| ksJ t ddggd }|| }|j| ks)J |j| d ddd |j| d | d gddgd}|j| ksIJ d S )	Nr   r   r>   r#   T)r<   inplacer"   r=   )r   from_productr   rename)r   r   r   r   r    test_duplicate_level_namess   s   
rU   c                  C   sv   t ddgg dgg dg dgd} | | d d g| d dg| ddgfD ]}|js.J | j|jks8J q'd S )	Nr   r   r   r   r"   r   r   r   r   r   r   r   r   r   r"   r   r   r   r"   r   r   NumUpper)r   	set_nameshas_duplicatesdrop_duplicatesr   )r   rB   r   r   r    test_duplicate_meta_data   s   
r_   c                 C   s   | j du sJ | jdu sJ |j du sJ |jdu sJ tddgg dgg dg dgd}|j du s5J |jdu s<J td	d
gddggg dg dgd}|j du sUJ |jdu s\J td	d
gddggg dg dgd}|j du suJ |jdu s|J d S )NTFr   r   rV   rW   rX   rY   r)   rQ   )r   r   r   r   )r`   r   r   r   r   )r`   r`   r   r   r   r   )r`   r`   r   r   r   r   )	is_uniquer]   r   )rB   r!   r   mi_nan
mi_nan_dupr   r   r    test_has_duplicates   s&   rd   c                  C   s    g d} t | }|jrJ d S )N))xoutzr@   yinrg      )re   rf   rg      rh   ri   rg   w   )re   rf   rg   	   rh   ri   rg      )re   rf   rg      rh   ri   rg      )re   rf   rg      rh   ri   rg      )re   rf   rg      rh   ri   rg   z   )re   rf   rg      rh   ri   rg      )re   rf   rg      rh   ri   rg      )re   rf   rg      rh   ri   rg      )re   rf   rg      rh   ri   rg      )re   rf   rg      rh   ri   rg      )re   rf   rg      rh   ri   rg   o   )re   rf   rg      rh   ri   rg   r   )re   rf   rg      rh   ri   rg   y   )re   rf   rg      rh   ri   rg   ~   )re   rf   rg       rh   ri   rg      )re   rf   rg   !   rh   ri   rg   {   )re   rf   rg      rh   ri   rg      )r   from_tuplesr]   )tr   r   r   r    test_has_duplicates_from_tuples   s   
r   nlevelsr?      
with_nullsTFc                    s  t t dd t d}|r@d d<  fddt| D  t| D ]}d | d| | d  < q# t ddgdg7  n g|  t ddg  |g|  ddgg }t| d}|jrcJ |rwd	d
 }tt	|  t| d}n|j
 }t||d g }|jsJ d S )Ni  r"   r`   c                    s   g | ]}   qS r   )copy.0ir   r   r    
<listcomp>       z0test_has_duplicates_overflow.<locals>.<listcomp>r   r   rY   c                 S   s   t | d| d S )N  r   )r   insert)r)   r   r   r    f   s   z'test_has_duplicates_overflow.<locals>.f)r   tilearangerM   r   repeatr   r]   r.   mapvaluestolistr   )r   r   r<   r   r   r   r   r   r   r   r    test_has_duplicates_overflow   s&   


r   zkeep, expected)FFFTTFlast)FTTFFF)FTTTTFc                 C   s   | j |d}t|| d S )Nkeep)
duplicatedr,   assert_numpy_array_equal)r!   r   rC   r8   r   r   r    test_duplicated   s   	r   c                    s   d\ t dd tD dt  g} fdd|D }| #}|tdd t||d}|j| d	}tj|j	| d	}W d    n1 sLw   Y  t
|| d S )
N)   rG   c                 S   s   g | ]}t |qS r   )strr   r   r   r    r     r   z2test_duplicated_hashtable_impl.<locals>.<listcomp>r   c                    s$   g | ]}t jd   qS )r"   )r   randomdefault_rngchoice)r   _knr   r    r     s   $ _SIZE_CUTOFF2   rY   r   )r   r   rM   contextsetattrlibindexr   r   r   r   r,   r   )r   monkeypatchr   r   mr   r8   rC   r   r   r    test_duplicated_hashtable_impl   s   (
r   vale   f   c                 C   s@   t d| gdtjgg}|jrJ t| tjddd d S )Nr   g      @r"   booldtype)	r   r*   r   nanr]   r,   r   r   zeros)r   r   r   r   r    test_duplicated_with_nan  s   
r   r   r   r   r   r@   c                 C   s   t td| td|}ttdd |  tdd | gtjdt|jd}t	|| d |d  ks7J |j
r<J t| tjt	|dd d S )	Nr`   abcdeWXYZr"   rY   r   r   r   )r   rM   r   r.   r   r   r   permutationTlenr]   r,   r   r   r   )r   r   r   r   r   r   r    $test_duplicated_with_nan_multi_shape  s   
"r   c                  C   s0  t g dg df} tjg dtd}|  }t|| |jtks%J t g dg df}t	| 
 | tg d}| jdd	}t|| |jtksRJ t g d
g df}t	| j
dd	| tg d}| jdd	}t|| |jtksJ t g dg df}t	| j
dd	| d S )N)r   r"   r>   r   r"   r>   )r   r   r   r   r"   r"   )FFFTFFr   )r   r"   r>   r"   r>   )r   r   r   r"   r"   )TFFFFFr   r   )r"   r>   r   r"   r>   )TFFTFFF)r"   r>   r"   r>   )r   r   r"   r"   )r   r*   r   r   r   r   r,   r   r   r-   r^   )rB   rC   r   r   r   r    test_duplicated_drop_duplicates(  s&   r   r   c                 C   s^   t g dtd}t tjtjd  dddddddtjtjtjd  g
| d }t|| d S )N)
FFFTFFFTFTr   y              ?r   r   y      ?      ?y      ?       @)r	   r   r   r   r   r,   assert_series_equal)r   rC   r8   r   r   r    &test_duplicated_series_complex_numbersB  s*   	r   c                  C   s   t ddttgdd} tg d}tj| |gddgd}| }t ddtgdd}tg d	}tj||gddgd}t|| d S )
Nr   r"   Int64r   )r   r"   r>   r>   r)   rQ   r#   )r   r"   r>   )	r	   r   r   r   r   r*   r+   r,   r-   )vals_avals_bmidxr8   
exp_vals_a
exp_vals_brC   r   r   r    test_midx_unique_ea_dtypea  s   r   )+	itertoolsr   numpyr   rJ   pandas._libsr   r   r   pandasr   r   r   r   r	   pandas._testing_testingr,   fixturer!   markparametrizer1   r;   rD   rP   rU   r_   rd   r   r   r   r   arm_slowr   r   rM   r   r   	complex64
complex128r   r   r   r   r   r    <module>   s\    



&



