a
    þd0+  ã                
   @   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   ZaaaaZababZaaÚabÚa)r   Úfrom_arraysÚuniquer	   ÚtmÚassert_index_equalÚlist)r	   ÚmiÚresÚexp© r   ús/var/www/html/stable-diffusion-webui/venv/lib/python3.9/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   )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_level>   s    

r*   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   )r,   r,   ÚBr.   r.   )r   r   r   r   r%   z4Level values must be unique: \[[AB', ]+\] on level 0)r,   r.   r,   r,   r.   )r   r   r%   éþÿÿÿr'   )ÚpytestZraisesÚ
ValueErrorr   Úranger   Z
set_levels)Úmsgr   r   r   r   Útest_duplicate_multiindex_codesR   s    Dr4   )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_names`   s    
r7   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   ©ÚlevelsÚcodesÚNumZUpper)r   Z	set_namesÚhas_duplicatesÚdrop_duplicatesr	   )r   r(   r   r   r   Útest_duplicate_meta_dataq   s    ÿü
rA   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   r8   r9   r:   r;   r   r5   )éÿÿÿÿr   r   r   r   )rB   r   r   r   r   )rB   rB   r   r   r   r   )rB   rB   r   r   r   r   )Z	is_uniquer?   r   )r(   Úidx_dupr   Zmi_nanZ
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    
ro   Ú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   rB   c                    s   g | ]}ˆ   ¡ ‘qS r   )Úcopy)Ú.0Úi©r=   r   r   Ú
<listcomp>Ã   ó    z0test_has_duplicates_overflow.<locals>.<listcomp>r   r   r;   c                 S   s   t  | d| d ¡S )Néè  r   )ÚnpÚinsert)r   r   r   r   ÚfÔ   s    z'test_has_duplicates_overflow.<locals>.f)rz   ZtileÚaranger2   ÚarrayÚrepeatr   r?   r   ÚmapÚvaluesÚtolistrm   )rp   rr   r#   ru   r<   r   r|   r   r   rv   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)rC   r†   r)   r!   r   r   r   Útest_duplicatedà   s    	r‰   c                    sª   d\‰‰ t  ˆ¡t ˆ¡dt  ˆ¡ g}‡ ‡fdd„|D ƒ}| ¡ F}| tdd¡ t||d}|j| d}t	j|j
| d}W d   ƒ n1 s0    Y  t ||¡ d S )	N)é   r-   ry   c                    s$   g | ]}t j d ¡ ˆˆ ˆ ¡‘qS )r   )rz   ÚrandomÚdefault_rngÚchoice)rt   Ú_©ÚkÚnr   r   rw   ò   rx   z2test_duplicated_hashtable_impl.<locals>.<listcomp>Z_SIZE_CUTOFFé2   r;   r…   )rz   r}   r   ZmakeStringIndexÚcontextÚsetattrÚlibindexr   r‡   r   r   rˆ   )r†   Zmonkeypatchr<   r=   Úmr   r!   r)   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   rz   Ú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snJ ‚|j
rxJ ‚t | ¡ tjt	|ƒdd¡ d S )	NrB   ZabcdeZWXYZr   r;   r   r›   rœ   )r   r2   r   r   rz   r‹   rŒ   ZpermutationÚTÚlenr?   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   rz   r~   r›   r‡   r   rˆ   r   r   r@   )r(   r)   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›   rz   rž   r‡   r   Zassert_series_equal)r   r)   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   ZInt64rœ   )r   r   r%   r%   r   r5   r   )r   r   r%   )	r   r   rz   r~   r   r   r   r   r   )Zvals_aZvals_bZmidxr!   Z
exp_vals_aZ
exp_vals_br)   r   r   r   Útest_midx_unique_ea_dtypeN  s    r¦   )(Ú	itertoolsr   Únumpyrz   r0   Zpandas._libsr   r   r•   Zpandasr   r   r   r   Zpandas._testingZ_testingr   ÚmarkZparametrizer   r"   r*   r4   r7   rA   rD   ro   rƒ   r~   r‰   Zarm_slowr—   r    r2   r£   r¤   Z	complex64Z
complex128r¥   r¦   r   r   r   r   Ú<module>   sV   


&ýþ


þþ
