o
    ҷh0+                  
   @   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 d dlm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d.d/d0gd1d2 Z ejd3e!d4d5ejd6e!d4d7d8d9 Z"d:d; Z#ejd<ej$ej%gd=d> Z&d?d@ Z'dS )A    )productN)	hashtableindex)NADatetimeIndex
MultiIndexSeriesnamesfirstsecondc                 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   aaaaababaaaba)r   from_arraysuniquer	   tmassert_index_equallist)r	   miresexp r   ]/var/www/html/venv/lib/python3.10/site-packages/pandas/tests/indexes/multi/test_duplicates.pytest_unique   s   r   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-01r    r    r    NaTr!   )r    r    
2015-01-02r"   r!   r    z
Asia/Tokyo)tz)r    r    r!   r!   )r    r"   r!   r    )r   r   r   r   r   r   )idx1idx2resulteidx1eidx2r   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*   r&   expectedr   r   r   r   test_unique_level>   s   

r2   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   )r4   r4   Br6   r6   )r   r   r   r   r,   z4Level values must be unique: \[[AB', ]+\] on level 0)r4   r6   r4   r4   r6   )r   r   r,   r.   )pytestraises
ValueErrorr   ranger   
set_levels)msgr   r   r   r   test_duplicate_multiindex_codesR   s   ("r>   )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_names`   s   
rC   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   levelscodesNumUpper)r   	set_nameshas_duplicatesdrop_duplicatesr	   )r   r0   r   r   r   test_duplicate_meta_dataq   s   
rO   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   rD   rE   rF   rG   r   r?   )r   r   r   r   )rP   r   r   r   r   )rP   rP   r   r   r   r   )rP   rP   r   r   r   r   )	is_uniquerM   r   )r0   idx_dupr   mi_nan
mi_nan_dupr   r   r   test_has_duplicates   s&   rU   c                  C   s    g d} t | }|jrJ d S )N))xoutzr.   yinrX      )rV   rW   rX      rY   rZ   rX   w   )rV   rW   rX   	   rY   rZ   rX      )rV   rW   rX      rY   rZ   rX      )rV   rW   rX      rY   rZ   rX      )rV   rW   rX      rY   rZ   rX   z   )rV   rW   rX      rY   rZ   rX      )rV   rW   rX      rY   rZ   rX      )rV   rW   rX      rY   rZ   rX      )rV   rW   rX      rY   rZ   rX      )rV   rW   rX      rY   rZ   rX      )rV   rW   rX      rY   rZ   rX   o   )rV   rW   rX      rY   rZ   rX   r   )rV   rW   rX      rY   rZ   rX   y   )rV   rW   rX      rY   rZ   rX   ~   )rV   rW   rX       rY   rZ   rX      )rV   rW   rX   !   rY   rZ   rX   {   )rV   rW   rX      rY   rZ   rX      )r   from_tuplesrM   )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   rP   c                    s   g | ]}   qS r   )copy).0irI   r   r   
<listcomp>   s    z0test_has_duplicates_overflow.<locals>.<listcomp>r   r   rG   c                 S   s   t | d| d S )N  r   )npinsert)r   r   r   r   f   s   z'test_has_duplicates_overflow.<locals>.f)r   tilearanger;   arrayrepeatr   rM   r   mapvaluestolistr~   )r   r   r*   r   rH   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)rR   r   r1   r&   r   r   r   test_duplicated   s   	r   c                    s   d\ t tdt  g} fdd|D }| #}|tdd t||d}|j| d}t	j|j
| d}W d    n1 sHw   Y  t|| d S )	N)   r5   r   c                    s$   g | ]}t jd   qS )r   )r   randomdefault_rngchoice)r   _knr   r   r      s   $ z2test_duplicated_hashtable_impl.<locals>.<listcomp>_SIZE_CUTOFF2   rG   r   )r   r   r   makeStringIndexcontextsetattrlibindexr   r   r   r   r   )r   monkeypatchrH   rI   mr   r&   r1   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   nanrM   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 )	NrP   abcdeWXYZr   rG   r   r   r   )r   r;   r   r   r   r   r   permutationTlenrM   r   r   r   r   )r   r   rI   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   rN   )r0   r1   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   r1   r&   r   r   r   &test_duplicated_series_complex_numbers/  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   r?   r   )r   r   r,   )	r   r   r   r   r   r   r   r   r   )vals_avals_bmidxr&   
exp_vals_a
exp_vals_br1   r   r   r   test_midx_unique_ea_dtypeN  s   r   )(	itertoolsr   numpyr   r8   pandas._libsr   r   r   pandasr   r   r   r   pandas._testing_testingr   markparametrizer   r)   r2   r>   rC   rO   rU   r   r   r   r   arm_slowr   r   r;   r   r   	complex64
complex128r   r   r   r   r   r   <module>   sX    


&



