o
    _~#g'-  ã                
   @   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   ú/var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/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"   Ú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s‹J ‚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_CUTOFFé2   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º   Ú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   Ú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\    



&ýþ


þþ
