a
    Pªf'-  ã                
   @   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   úc/var/www/ai-form-bot/venv/lib/python3.9/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6 tdgd tdƒgdgd tdƒgƒ}W d   ƒ n1 sN0    Y  t g d¢g d¢g¡}d} t jt| d& | g d	¢g d
¢g¡ W d   ƒ n1 s¬0    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    D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sRJ ‚|j| d ddd |j| d | d gddgd}|j| ks’J ‚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sNJ ‚qNd 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 s8J ‚tddgg d¢gg d¢g d¢gd}|j du sjJ ‚|jdu sxJ ‚td	d
gddggg d¢g d¢gd}|j du sªJ ‚|jdu s¸J ‚td	d
gddggg d¢g d¢gd}|j du sêJ ‚|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  < qFˆ t  ddg¡ d¡g7 ‰ nˆ g|  t  d¡ d¡g ‰ |g|  ddgg }t|ˆ d}|jrÆJ ‚|rîd	d
„ }tt	|ˆ ƒƒ‰ t|ˆ d}n|j
 ¡ }t ||d g ¡}|jsJ ‚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 ƒ}| ¡ F}| tdd¡ t||d}|j| d	}tj|j	| d	}W d   ƒ n1 s˜0    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~     r   Z_SIZE_CUTOFFé2   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   Úvalée   é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snJ ‚|j
rxJ ‚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   s2  t  g d¢g d¢f¡} tjg d¢td}|  ¡ }t ||¡ |jtksJJ ‚t  g d¢g d¢f¡}t 	|  
¡ |¡ t g d¢¡}| jdd	}t ||¡ |jtks¤J ‚t  g d
¢g d¢f¡}t 	| j
dd	|¡ t g d¢¡}| jdd	}t ||¡ |jtksJ ‚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>   sZ   



&ýþ


þþ
