3
Ud'                 @   sp  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	 d dl
jZejjddddggdd	 Zd
d Zejjdd dddgdd Zejjdddgdd Zdd Zejjddddgdddgdddggdd Zdd Zdd Zd d! Zd"d# Zejjd$dejddddddgfd%ejddddddgfdejddddddgfgd&d' Zd(d) Zd*d+ Zd,d- ZdS ).    )productN)	hashtable)DatetimeIndex
MultiIndexnamesfirstsecondc             C   s  t jddddgddddgg| d}|j }t jdddgdddgg|jd}tj|| t jtdtdg| d}|j }t jtdtdg|jd}tj|| t jtdtdg| d}|j }t jdgdgg|jd}tj|| t jg g g| d}|j }tj|| d S )	N      )r   ZaaaaZababZaaaba)r   from_arraysuniquer   tmassert_index_equallist)r   miresexp r   ^/var/www/html/virt/lib64/python3.6/site-packages/pandas/tests/indexes/multi/test_duplicates.pytest_unique   s    " r   c              C   s   t ddddddg} t ddddddgdd}tj| |gj }t ddddg}t ddddgdd}tj||g}tj|| d S )Nz
2015-01-01ZNaTz
2015-01-02z
Asia/Tokyo)tz)r   r   r   r   r   r   )Zidx1Zidx2resultZeidx1Zeidx2r   r   r   r   test_unique_datetimelike$   s    r   levelr	   c             C   s   | j |d}| j|j  }tj|| tjddddgddddggddgd	}|j |d}|j|}tj|| tjg g gddgd	}|j |d}|j|}d S )
N)r   r	      r
         r   r   )r   )r   Zget_level_valuesr   r   r   r   )idxr   r   expectedr   r   r   r   test_unique_level6   s    &
r!   dropnaTFc             C   sN   | dddddddg }|j |ddg }|j|d}|js>ttj|| d S )Nr   r	   )r"   )Z_shallow_copyZ_get_unique_indexr   AssertionErrorr   r   )r   r"   r   r    r   r   r   r   test_get_unique_indexI   s
    
r$   c              C   s   d} t jt| d, tdgd tdgdgd tdg}W d Q R X tjdddddgddddd	gg}d
} t jt| d, |jdddddgddd	ddggdd W d Q R X d S )Nz3Level values must be unique: \[[A', ]+\] on level 0)matchA
   r   Br	   r
   r   z4Level values must be unique: \[[AB', ]+\] on level 0r   T)inplace)pytestZraises
ValueErrorr   ranger   Z
set_levels)msgr   r   r   r   test_duplicate_multiindex_codesS   s    0"r/   r   br
   c             C   s   t jddggd | d}|j| ks&tt jddggd }|j| }|j| ksRt|j| d ddd |j| d | d gddgd}|j| kstd S )	Nr   r	   r   )r   T)r   r)   r
   )r   )r   Zfrom_productr   r#   rename)r   r   r   r   r   test_duplicate_level_namesa   s    
r2   c           
   C   s   t ddgdddggdddddddgdddddddggd} xP| | jd d g| jd dg| jddggD ]"}|jstt|j j|jksftqfW d S )Nr   r	   r
   )levelscodesNumZUpper)r   Z	set_nameshas_duplicatesr#   drop_duplicatesr   )r   r   r   r   r   test_duplicate_meta_datar   s    8
r8   c          
   C   s2  | j dkst| jdkst|j dks*t|jdks8ttddgdddggdddddddgdddddddggd}|j dkst|jdksttddgddggd	ddddgd
ddddggd}|j dkst|jdksttddgddggddddddgddddddggd}|j dkst|jdks.td S )NTFr   r	   r
   )r3   r4   r   r0   r9   r9   r9   r9   r9   )Z	is_uniquer#   r6   r   )r   idx_dupr   Zmi_nanZ
mi_nan_dupr   r   r   test_has_duplicates   s     8.2r;   c              C   sD   d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;g} t j| }|j  s@td S )<Nxoutzr   yin      w   	                     z                                    o      r      y      ~          !   {         )r<   r=   r>   r   r?   r@   r>   rA   )r<   r=   r>   rB   r?   r@   r>   rC   )r<   r=   r>   rD   r?   r@   r>   rE   )r<   r=   r>   rF   r?   r@   r>   rG   )r<   r=   r>   rH   r?   r@   r>   rI   )r<   r=   r>   rJ   r?   r@   r>   rK   )r<   r=   r>   rL   r?   r@   r>   rM   )r<   r=   r>   rN   r?   r@   r>   rO   )r<   r=   r>   rP   r?   r@   r>   rQ   )r<   r=   r>   rR   r?   r@   r>   rS   )r<   r=   r>   rT   r?   r@   r>   rU   )r<   r=   r>   rV   r?   r@   r>   rW   )r<   r=   r>   rX   r?   r@   r>   rY   )r<   r=   r>   rZ   r?   r@   r>   r[   )r<   r=   r>   r\   r?   r@   r>   r]   )r<   r=   r>   r^   r?   r@   r>   r_   )r<   r=   r>   r`   r?   r@   r>   ra   )r<   r=   r>   rb   r?   r@   r>   rc   )r   from_tuplesr6   r#   )tr   r   r   r   test_has_duplicates_from_tuples   s(    
rf   c              C   s4   dd } | dd | dd | dd | dd d S )Nc                s"  t jt jdd t jd}|rd
 d<  fddt| D  x(t| D ]}d | d| | d  < qHW  t jddgjdg7  n g|  t jdjdg  |g|  ddgg }t| d}|j st|rdd	 }t	t
|  t| d}n|jj }tj||d g }|jstd S )Ni  r
   r	   c                s   g | ]} j  qS r   )copy).0i)r4   r   r   
<listcomp>   s    z?test_has_duplicates_overflow.<locals>.check.<locals>.<listcomp>r   )r3   r4   c             S   s   t j| d| d S )Ni  r   )npinsert)r   r   r   r   f   s    z6test_has_duplicates_overflow.<locals>.check.<locals>.fr9   r9   r9   )rk   Ztilearanger-   arrayrepeatr   r6   r#   r   mapvaluestolistrd   )ZnlevelsZ
with_nullsr   ri   r3   r   rm   rr   r   )r4   r   check   s&    

z+test_has_duplicates_overflow.<locals>.checkr   FT   r   )rt   r   r   r   test_has_duplicates_overflow   s
    #


rv   zkeep, expectedlastc             C   s   | j |d}tj|| d S )N)keep)
duplicatedr   assert_numpy_array_equal)r:   rx   r    r   r   r   r   test_duplicated   s    	r{   c                st   d\ t jtjdt j g} fdd|D }t||d}|j| d}tj|j| d}tj	|| d S )	N     i  c                s   g | ]}t jj  qS r   )rk   randomchoice)rh   Zlev)knr   r   rj      s    z)test_duplicated_large.<locals>.<listcomp>)r3   r4   )rx   )r|   r}   )
rk   rn   r   ZmakeStringIndexr   ry   r   Zduplicated_objectrr   rz   )rx   r3   r4   r   r   r    r   )r   r   r   test_duplicated_large   s     r   c              C   s
  xJdD ]B} t jd| gdtjgg}|j s.ttj|j tj	ddd qW xt
ddD ]}xt
dd	D ]}tt
d|t
d|}t td
d | tdd | gtjjt|jd}t||d |d  kst|j sttj|j tj	t|dd qhW qXW d S )Ne   f   g      @r
   bool)dtyper	      r   ZabcdeZWXYZ)r3   r4   )r   r   r9   r9   )r   r   rk   nanr6   r#   r   rz   ry   Zzerosr-   r   r   r~   ZpermutationTlen)r   r   r   mr4   r   r   r   test_duplicated2   s    
r   c              C   sz  t jddddddgddddddgf} tjddddddgtd}| j }tj|| |jtksbt	t jdddddgdddddgf}tj
| j | tjddddddg}| jdd}tj|| |jtkst	t jdddddgdddddgf}tj
| jdd| tjddddddg}| jdd}tj|| |jtksDt	t jddddgddddgf}tj
| jdd| d S )	Nr	   r
   r   FT)r   rw   )rx   )r   r   rk   ro   r   ry   r   rz   r   r#   r   r7   )r   r    ry   r   r   r   test_duplicated_drop_duplicates  s&    &""r   )	itertoolsr   Znumpyrk   r+   Zpandas._libsr   Zpandasr   r   Zpandas._testingZ_testingr   markZparametrizer   r   r!   r$   r/   r2   r8   r;   rf   rv   ro   r{   r   r   r   r   r   r   r   <module>   s.   

.-&