o
    5³c(+  ã                
   @   sŒ  d dl mZ d dlZd dlZd dlmZ d dl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d.d/„ Zd0d1„ Zej d2ejej g¡d3d4„ ƒZ!d5d6„ Z"dS )7é    )ÚproductN)Ú	hashtable)Ú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/gps/gps/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   

r0   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3 t t¡ |j	g d	¢g d
¢gdd W d   ƒ n1 s^w   Y  W d   ƒ d S W d   ƒ d S 1 svw   Y  d S )Nz3Level values must be unique: \[[A', ]+\] on level 0©ÚmatchÚAé
   r   )r3   r3   ÚBr5   r5   )r
   r   r
   r   r*   z4Level values must be unique: \[[AB', ]+\] on level 0)r3   r5   r3   r3   r5   )r   r
   r*   éþÿÿÿr,   T)Úinplace)
ÚpytestÚraisesÚ
ValueErrorr   Úranger   r   Úassert_produces_warningÚFutureWarningÚ
set_levels)Úmsgr   r   r   r   Útest_duplicate_multiindex_codesN   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(   r7   r   r)   )r   Úfrom_productr   Úrename)r   r   r   r   r   Útest_duplicate_level_names]   s   
rD   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   r.   r   r   r   Útest_duplicate_meta_datan   s   ÿü
ùrP   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
   rE   rF   rG   rH   r   rA   )éÿÿÿÿr   r   r
   r
   )rQ   r   r
   r   r
   )rQ   rQ   r   r   r
   r
   )rQ   rQ   r   r
   r   r
   )Ú	is_uniquerN   r   )r.   Úidx_dupr   Úmi_nanÚ
mi_nan_dupr   r   r   Útest_has_duplicates~   s&   ÿÿÿrV   c                  C   s    g d¢} t  | ¡}|jrJ ‚d S )N))ÚxÚoutÚzr,   ÚyÚinrY   é©   )rW   rX   rY   é   rZ   r[   rY   éw   )rW   rX   rY   é	   rZ   r[   rY   é‡   )rW   rX   rY   é   rZ   r[   rY   é‘   )rW   rX   rY   é   rZ   r[   rY   éž   )rW   rX   rY   é   rZ   r[   rY   éz   )rW   rX   rY   é   rZ   r[   rY   é    )rW   rX   rY   é   rZ   r[   rY   é´   )rW   rX   rY   é   rZ   r[   rY   é   )rW   rX   rY   é   rZ   r[   rY   é€   )rW   rX   rY   é   rZ   r[   rY   é   )rW   rX   rY   é   rZ   r[   rY   éo   )rW   rX   rY   é   rZ   r[   rY   ér   )rW   rX   rY   é   rZ   r[   rY   éy   )rW   rX   rY   é   rZ   r[   rY   é~   )rW   rX   rY   é    rZ   r[   rY   é›   )rW   rX   rY   é!   rZ   r[   rY   é{   )rW   rX   rY   é   rZ   r[   rY   é   )r   Úfrom_tuplesrN   )Ú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   rQ   c                    s   g | ]}ˆ   ¡ ‘qS r   )Úcopy)Ú.0Úi©rJ   r   r   Ú
<listcomp>À   s    z0test_has_duplicates_overflow.<locals>.<listcomp>r
   r   rH   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   rN   r   ÚmapÚvaluesÚtolistr   )r‚   r„   r(   r‡   rI   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)rS   r˜   r/   r$   r   r   r   Útest_duplicatedÝ   s   	r›   c                    st   d\‰‰ t  ˆ¡t ˆ¡dt  ˆ¡ g}‡ ‡fdd„|D ƒ}t||d}|j| d}tj|j| d}t ||¡ d S )N)éÈ   iˆ  rŠ   c                    s   g | ]}t j ˆˆ ˆ ¡‘qS r   )r‹   ÚrandomÚchoice)r†   Úlev©ÚkÚnr   r   r‰   ï   s    z)test_duplicated_large.<locals>.<listcomp>rH   r—   )	r‹   r   r   ÚmakeStringIndexr   r™   r   r“   rš   )r˜   rI   rJ   r   r$   r/   r   r    r   Útest_duplicated_largeê   s    r¤   c               	   C   sú   dD ] } t  d| gdtjgg¡}|jrJ ‚t | ¡ tjddd¡ qt	ddƒD ]R}t	dd	ƒD ]J}t
t	d
|ƒt	d
|ƒƒ}t tdƒd |… tdƒd |… gtj t|ƒ¡jd}t|ƒ|d |d  kseJ ‚|jrjJ ‚t | ¡ tjt|ƒdd¡ q/q(d S )N)ée   éf   r¥   g      @r   Úbool©Údtyper
   é   r,   rQ   ÚabcdeÚWXYZrH   )r   r   r‹   ÚnanrN   r   rš   r™   Úzerosr;   r   r   r   ÚpermutationÚTÚlen)r   r   r¢   ÚmrJ   r   r   r   Útest_duplicated2÷   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   rO   )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§   r‹   r­   r™   r   Úassert_series_equal)r©   r/   r$   r   r   r   Ú&test_duplicated_series_complex_numbers*  s*   	þöóòr¶   c                  C   sx   t  g d¢g d¢g¡} d}tjt|d |  d¡}W d   ƒ n1 s$w   Y  t  g d¢g d¢g¡}t ||¡ d S )N)r
   r   r*   r
   z^In a future version of pandas all arguments of MultiIndex.drop_duplicates will be keyword-onlyr1   r–   )r   r*   r
   )r   r   r   r<   r=   rO   r   )r.   r?   r$   r/   r   r   r   Ú/test_multi_drop_duplicates_pos_args_deprecationI  s   ÿÿr·   )#Ú	itertoolsr   Únumpyr‹   r8   Úpandas._libsr   Úpandasr   r   r   Úpandas._testingÚ_testingr   ÚmarkÚparametrizer   r'   r0   r@   rD   rP   rV   r   r•   r   r›   Úarm_slowr¤   r³   r´   Ú	complex64Ú
complex128r¶   r·   r   r   r   r   Ú<module>   sP    


&ýþ

þþ
