o
    թZh'-                  
   @   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)ZfoobarZbazZquxonetwo)r   r      r   r   r   )r   r   r   r   r   r   firstsecondF)levelscodesnamesZverify_integrity)r   nparrayr   )Z
major_axisZ
minor_axisZmajor_codesZminor_codesZindex_namesmi r   a/var/www/html/lang_env/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   ZaaaaZababZaaaba)r   from_arraysuniquer   tmassert_index_equallist)r   r   resexpr   r   r   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!   )Zidx1Zidx2resultZeidx1Z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   Zget_level_valuesr    r!   r   r   )idxr,   r*   expectedr   r   r   r   test_unique_levelQ   s   

r3   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   )r5   r5   Br7   r7   )r   r   r   r   r.   z4Level values must be unique: \[[AB', ]+\] on level 0)r5   r7   r5   r5   r7   )r   r   r.   r0   )pytestZraises
ValueErrorr   ranger   Z
set_levels)msgr   r   r   r   test_duplicate_multiindex_codese   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,   Zinplacer   r-   )r   Zfrom_productr   rename)r   r   r   r   r   test_duplicate_level_namess   s   
r@   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   NumZUpper)r   Z	set_nameshas_duplicatesdrop_duplicatesr   )r   r1   r   r   r   test_duplicate_meta_data   s   
rH   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   rA   rB   rC   rD   r   r>   )r   r   r   r   )rI   r   r   r   r   )rI   rI   r   r   r   r   )rI   rI   r   r   r   r   )Z	is_uniquerF   r   )r1   r   r   Zmi_nanZ
mi_nan_dupr   r   r   test_has_duplicates   s&   rJ   c                  C   s    g d} t | }|jrJ d S )N))xoutzr0   yinrM      )rK   rL   rM      rN   rO   rM   w   )rK   rL   rM   	   rN   rO   rM      )rK   rL   rM      rN   rO   rM      )rK   rL   rM      rN   rO   rM      )rK   rL   rM      rN   rO   rM   z   )rK   rL   rM      rN   rO   rM      )rK   rL   rM      rN   rO   rM      )rK   rL   rM      rN   rO   rM      )rK   rL   rM      rN   rO   rM      )rK   rL   rM      rN   rO   rM      )rK   rL   rM      rN   rO   rM   o   )rK   rL   rM      rN   rO   rM   r   )rK   rL   rM      rN   rO   rM   y   )rK   rL   rM      rN   rO   rM   ~   )rK   rL   rM       rN   rO   rM      )rK   rL   rM   !   rN   rO   rM   {   )rK   rL   rM      rN   rO   rM      )r   from_tuplesrF   )tr   r   r   r   test_has_duplicates_from_tuples   s   
ru   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   rI   c                    s   g | ]}   qS r   )copy.0ir   r   r   
<listcomp>       z0test_has_duplicates_overflow.<locals>.<listcomp>r   r   rD   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   Ztilearanger;   r   repeatr   rF   r"   mapvaluestolistrs   )rv   rx   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   r2   r*   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)   r6   c                 S   s   g | ]}t |qS r   )strrz   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   $ Z_SIZE_CUTOFF2   rD   r   )r   r   r;   contextsetattrlibindexr   r   r   r   r    r   )r   Zmonkeypatchr   r   mr   r*   r2   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   nanrF   r    r   r   zeros)r   r   r   r   r   test_duplicated_with_nan  s   
r   r   r   r   r   r0   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 )	NrI   ZabcdeZWXYZr   rD   r   r   r   )r   r;   r   r"   r   r   r   ZpermutationTlenrF   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!   rG   )r1   r2   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    Zassert_series_equal)r   r2   r*   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   ZInt64r   )r   r   r.   r.   r   r>   r   )r   r   r.   )	r	   r   r   r   r   r   r   r    r!   )Zvals_aZvals_bZmidxr*   Z
exp_vals_aZ
exp_vals_br2   r   r   r   test_midx_unique_ea_dtypea  s   r   )+	itertoolsr   numpyr   r9   Zpandas._libsr   r   r   Zpandasr   r   r   r   r	   Zpandas._testingZ_testingr    Zfixturer   markZparametrizer%   r+   r3   r=   r@   rH   rJ   ru   r   r   r   Zarm_slowr   r   r;   r   r   Z	complex64Z
complex128r   r   r   r   r   r   <module>   s\    



&



