3
UdsL                 @   sx   d dl m Z mZ d dlZd dlZd dlmZmZmZm	Z	m
Z
mZ d dljZG dd dZG dd dZG dd	 d	ZdS )
    )datetime	timedeltaN)	DataFrameDatetimeIndexIndex
MultiIndexSeries
date_rangec               @   sV  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
ejjdddddgd=gejjdddgejjdddgdd Zejjdddddgd>gejjdddgdd Zejjdddddgd?gejjdddgd d! Zd"d# Zejjd$eeejed%d& d'd& gejjd(d@dAdBdCgejjdddgd+d, Zejjd$eeejed-d& gejjd(dDdEdFdGdHgejjdddgd.d/ Zejjd0eeejeed1d& d2d& gejjd3eeejeed4d& d5d& gejjd(dIdJdKdLgejjdddgd6d7 Zejjd8ddgejjdddgd9d: Zd;d< Zd)S )MTestSetIndexc             C   s   t ddddddddd	d
dddd
gddddgd}|jddg}|ddg }tj|d |d gddgd|_tj|| d S )N   r   )ap   
   )r   m         )r   r   r            r   r   r   x)columns)names)r   	set_indexr   from_arraysindextmassert_frame_equal)selfdfresultexpected r#   ]/var/www/html/virt/lib64/python3.6/site-packages/pandas/tests/frame/methods/test_set_index.pytest_set_index_empty_column   s    
 z(TestSetIndex.test_set_index_empty_columnc             C   s   t jdd	d
g}ttjjdd|d}|j|jd }|jd d dd f }|jd d df j	|_
|jd g|j
_tj|| d S )Nfoor   r   barr   )r   r   )r&   r   )r&   r   )r'   r   )r   from_tuplesr   nprandomrandnr   r   Zilocvaluesr   r   r   r   )r   r   r    r!   r"   r#   r#   r$    test_set_index_multiindexcolumns   s    z-TestSetIndex.test_set_index_multiindexcolumnsc             C   sv   t dgddjd}td|i}|j|jd jdks:tt t|jd jdksVt|j|jjd jdksrtd S )Nz2014-01-01 10:10:10UTC)tzzEurope/RomeAr   r   )	r   Z
tz_convertr   r   r   hourAssertionErrorr   r0   )r   idxr    r#   r#   r$   test_set_index_timezone(   s
    z$TestSetIndex.test_set_index_timezonec             C   sB   t dd tdD tjjdd}|jd}t|jts>t	d S )Nc             S   s    g | ]}t d ddt| qS )i  r   )r   r   ).0ir#   r#   r$   
<listcomp>4   s    zBTestSetIndex.test_set_index_cast_datetimeindex.<locals>.<listcomp>i  )r0   Br0   )
r   ranger)   r*   r+   r   
isinstancer   r   r2   )r   r    idfr#   r#   r$   !test_set_index_cast_datetimeindex1   s
    
z.TestSetIndex.test_set_index_cast_datetimeindexc             C   s   t ddddd}tdddgdd	d
gd|dj }|jd}tdddgdd	d
gdt|ddd}tj|| |jddg}tj|dddggddgd}tddd	d
gi|d}tj|| d S )Nz2006-10-29 00:00:00r   Hz
US/Pacific)Zperiodsfreqr/   r   r   r   r      )r   b)datar   r   )namer   )r   r@   )r   )	r	   r   reset_indexr   r   r   r   r   r   )r   Zdir    resexpZ	exp_indexr#   r#   r$   test_set_index_dst<   s    "
$zTestSetIndex.test_set_index_dstc             C   sj   |}t tjt|d d d }|j|}tj|j| tj	t
dd |j|d d d  W d Q R X d S )Nr   zLength mismatch)matchr   )r   r)   Zarangelenr   r   assert_index_equalr   pytestraises
ValueError)r   Zfloat_string_framer    r3   r#   r#   r$   test_set_indexM   s    
zTestSetIndex.test_set_indexc             C   s  t j }d|j_|j|jjjdgks*ttj|ddg j	j
ddgd}tj|ddddg j	j
ddddgd}|jddg}|j|jjjddgkstt|j|jjtstt j|j|jj| |jjddg}t|j|j|gjtstt j|j|j|gj| d S )NrB   r0   r8   )r   CD)r   ZmakeDataFramer   rB   r   r   r2   r   r   Tr,   r:   rJ   rename)r   r    miZmi2Zidx2r#   r#   r$   test_set_index_namesV   s    "z!TestSetIndex.test_set_index_namesc             C   sH   t dddgdddgddd	d
gd}|j|jjtj}tj|| d S )Ng?g@gffffff
@g      @gffffff@g@)r0   r8   i  i  i  )r   )r   r   r   Zastyper)   Zint32r   r   )r   r    df2r#   r#   r$   test_set_index_castt   s    "z TestSetIndex.test_set_index_castkeysr0   rO   r8   tupleaslabelinplaceTFdropc       	         s   | t |tr,tj fdd|D |d}nt | |d}|rN j|ddn }||_|r j }|j||dd}|d kst	n j||d	}t
j|| d S )
Nc                s   g | ]} | qS r#   r#   )r5   r   )r    r#   r$   r7      s    z<TestSetIndex.test_set_index_drop_inplace.<locals>.<listcomp>)r   )rB   r   )axisT)r\   r[   )r\   )r:   listr   r   r   r\   r   copyr   r2   r   r   )	r   frame_of_index_colsr\   r[   rW   r3   r"   r!   Zreturn_valuer#   )r    r$   test_set_index_drop_inplace}   s    
z(TestSetIndex.test_set_index_drop_inplacec                s   | t |tr|n|g}tj jg fdd|D  d g| d}|rT j|ddn j }||_ j||dd}tj	|| d S )Nc                s   g | ]} | qS r#   r#   )r5   r   )r    r#   r$   r7      s    z6TestSetIndex.test_set_index_append.<locals>.<listcomp>)r   r   )r]   T)r\   append)
r:   r^   r   r   r   r\   r_   r   r   r   )r   r`   r\   rW   r3   r"   r!   r#   )r    r$   test_set_index_append   s    &z"TestSetIndex.test_set_index_appendc             C   s\   |j dg|dd}t|tr |n|g}|j dg| |dd}|j ||dd}tj|| d S )NrP   T)r\   rb   )r   r:   r^   r   r   )r   r`   r\   rW   r    r"   r!   r#   r#   r$   #test_set_index_append_to_multiindex   s
    z0TestSetIndex.test_set_index_append_to_multiindexc             C   sh   t dddgdddgd}t dddgitddgd	d
}|j|jjdd  }|jd	}tj|| d S )Nr   r   r   r   r@   c)valkeyrf   rg   )rB   c             S   s   | dkS )Nr   r#   )Zindxr#   r#   r$   <lambda>   s    z<TestSetIndex.test_set_index_after_mutation.<locals>.<lambda>)r   r   locr   mapr   r   r   )r   r    r"   rU   r!   r#   r#   r$   test_set_index_after_mutation   s
    
z*TestSetIndex.test_set_index_after_mutationboxc             C   s
   t | gS )N)r^   )r   r#   r#   r$   rh      s    zTestSetIndex.<lambda>c             C   s   t j| gS )N)r   r   )r   r#   r#   r$   rh      s    zappend, index_nameNtestc             C   s   |}||j _||d }|tkrPd}tjt|d |j|||d W d Q R X njt|dd }	|	d krrt|dd gn|	}
|j|||d}|jdgd|d}|r|g|
 n|
|j _t	j
|| d S )Nr8   z%['one', 'two', 'three', 'one', 'two'])rG   )r\   rb   r   rB   F)r   rB   r^   rK   rL   KeyErrorr   getattrr   r   r   )r   r`   r\   rb   
index_namerl   r    rg   msgZname_mirB   r!   r"   r#   r#   r$    test_set_index_pass_single_array   s    z-TestSetIndex.test_set_index_pass_single_arrayc             C   s   t j| gS )N)r   r   )r   r#   r#   r$   rh      s    c             C   s   |}||j _d||d g}d|tjtttgkr4d ndg}|j|||d}	|jddgd|d}
|rp|
jdddn|
}
|r|g| n||
j _	t
j|	|
 d S )Nr0   r8   )r\   rb   Fr   )r]   )r   rB   r)   arrayr^   rX   iterr   r\   r   r   r   )r   r`   r\   rb   rp   rl   r    rW   r   r!   r"   r#   r#   r$   test_set_index_pass_arrays   s    z'TestSetIndex.test_set_index_pass_arraysbox2c             C   s   t j| gS )N)r   r   )r   r#   r#   r$   rh     s    c             C   s   | j S )N)rB   )r   r#   r#   r$   rh     s    box1c             C   s   t j| gS )N)r   r   )r   r#   r#   r$   rh     s    c             C   s   | j S )N)rB   )r   r#   r#   r$   rh     s    c             C   s   |}||j _||d ||d g}|j|||d}	||d ||d g}t|d tr|d dkrt|d tr|d dkrdn|}
|j|d g|
|d}|j|d g|dd}tj|	| d S )Nr0   )r\   rb   r   r   FT)r   rB   r   r:   strr   r   )r   r`   r\   rb   rp   rw   rv   r    rW   r!   Z
first_dropr"   r#   r#   r$   $test_set_index_pass_arrays_duplicate  s    z1TestSetIndex.test_set_index_pass_arrays_duplicaterb   c             C   sV   |}t j|d |d gddgd}|j|||d}|jddgd|d}tj|| d S )Nr0   r8   )r   )r\   rb   F)r   r   r   r   r   )r   r`   r\   rb   r    rW   r!   r"   r#   r#   r$   test_set_index_pass_multiindexD  s
    z+TestSetIndex.test_set_index_pass_multiindexc             C   s   t jd}d|_ttjjd|jd}|jd}t j	|j
| ttjjd|d}|jd}t j	|j
| |j jd}t j	|j
| d S )Nr   r8   )r0   r8   )r   ZmakeCategoricalIndexrB   r   r)   r*   r+   r,   r   rJ   r   rC   )r   cir    r;   r#   r#   r$   (test_construction_with_categorical_indexQ  s    


z5TestSetIndex.test_construction_with_categorical_index)rX   rY   rZ   )rX   rY   rZ   )rX   rY   rZ   )TN)Tr8   )Trm   )FN)TN)Tr0   )Tr8   )Trm   )FN)TN)Tr0   )Trm   )FN)__name__
__module____qualname__r%   r-   r4   r<   rF   rN   rT   rV   rK   markparametrizera   rc   rd   rk   r   r   r)   rs   r^   rr   ru   rt   ry   rz   r|   r#   r#   r#   r$   r
   
   sr   			


 !r
   c               @   s   e Zd Zdd Zejjdddgejjdddgdd Zejjdddgejjdddgejjd	egd
gddd Z	ejjd	e
eejedd gdddddgdejjdddgddgdejjdddgejjdddgdd ZdS )TestSetIndexInvalidc             C   sd   |}t jtdd |jddd W d Q R X t jtdd  |j|d |d gdd W d Q R X d S )NzIndex has duplicate keys)rG   r0   T)Zverify_integrity)rK   rL   rM   r   )r   r`   r    r#   r#   r$   test_set_index_verify_integritye  s
    z3TestSetIndexInvalid.test_set_index_verify_integrityrb   TFr\   c          "   C   s   |}t jtdd |jdddg||d W d Q R X t jtdd$ |j|d |d	 dg||d W d Q R X d
}t jt|d |jt|d ||d W d Q R X t jt|d( |jd|d t|d g||d W d Q R X d S )Nz['foo', 'bar', 'baz'])rG   r&   r'   Zbaz)r\   rb   Xr0   r8   z%[('foo', 'foo', 'foo', 'bar', 'bar')])rK   rL   rn   r   rX   )r   r`   r\   rb   r    rq   r#   r#   r$   test_set_index_raise_keysn  s     ("z-TestSetIndexInvalid.test_set_index_raise_keysrl   set)idsc             C   sz   |}d}t jt|d |j||d ||d W d Q R X t jt|d( |jd|d ||d g||d W d Q R X d S )Nz,The parameter "keys" may be a column key, .*)rG   r0   )r\   rb   )rK   rL   	TypeErrorr   )r   r`   rl   r\   rb   r    rq   r#   r#   r$   test_set_index_raise_on_type  s    "z0TestSetIndexInvalid.test_set_index_raise_on_typec             C   s   t j| gS )N)r   r   )r   r#   r#   r$   rh     s    zTestSetIndexInvalid.<lambda>r   r   znp.arrayrt   r   lengthr      Z	too_shortZtoo_longc       	      C   s   |}t jjdd|f}d}tjt|d |j||||d W d Q R X tjt|d" |jd|j||g||d W d Q R X d S )Nr   r   z<Length mismatch: Expected 5 rows, received array of length.*)rG   )r\   rb   r0   )r)   r*   randintrK   rL   rM   r   r0   )	r   r`   rl   r   r\   rb   r    r,   rq   r#   r#   r$   test_set_index_raise_on_len  s    z/TestSetIndexInvalid.test_set_index_raise_on_lenN)r}   r~   r   r   rK   r   r   r   r   r   r   r   r)   rs   rt   r   r#   r#   r#   r$   r   d  s   	"r   c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestSetIndexCustomLabelTypec       	      C   s   G dd d}|dd}|dd}t |ddg|d	d
gi}t |ddgitd	d
g|dd}|j|}tj|| |j|g}tj|| |dd}d}tjt|d |j| W d Q R X tjt|d |j|g W d Q R X d S )Nc               @   s&   e Zd Zdd ZedddZeZdS )zKTestSetIndexCustomLabelType.test_set_index_custom_label_type.<locals>.Thingc             S   s   || _ || _d S )N)rB   color)r   rB   r   r#   r#   r$   __init__  s    zTTestSetIndexCustomLabelType.test_set_index_custom_label_type.<locals>.Thing.__init__)returnc             S   s   dt | j dS )Nz<Thing >)reprrB   )r   r#   r#   r$   __str__  s    zSTestSetIndexCustomLabelType.test_set_index_custom_label_type.<locals>.Thing.__str__N)r}   r~   r   r   rx   r   __repr__r#   r#   r#   r$   Thing  s   r   OneredTwobluer   r   r   r   )rB   )r   Threepinkz<Thing 'Three'>)rG   )r   r   r   r   r   rK   rL   rn   )	r   r   thing1thing2r    r"   r!   thing3rq   r#   r#   r$    test_set_index_custom_label_type  s    

 

z<TestSetIndexCustomLabelType.test_set_index_custom_label_typec       	      C   s   G dd dt }|ddg}|ddg}t|ddg|d	d
gi}t|ddgitd	d
g|dd}|j|}tj|| |j|g}tj|| |ddg}d}tjt|d |j| W d Q R X tjt|d |j|g W d Q R X d S )Nc               @   s   e Zd ZedddZdS )zXTestSetIndexCustomLabelType.test_set_index_custom_label_hashable_iterable.<locals>.Thing)r   c             S   s$   t | }djtt|}d| dS )Nz, zfrozenset({z}))sortedjoinrj   r   )r   tmpZjoined_reprsr#   r#   r$   r     s    zaTestSetIndexCustomLabelType.test_set_index_custom_label_hashable_iterable.<locals>.Thing.__repr__N)r}   r~   r   rx   r   r#   r#   r#   r$   r     s   r   r   r   r   r   r   r   r   r   )rB   )r   r   r   z frozenset\(\{'Three', 'pink'\}\))rG   )		frozensetr   r   r   r   r   rK   rL   rn   )	r   r   r   r   r    r"   r!   r   rq   r#   r#   r$   -test_set_index_custom_label_hashable_iterable  s     
zITestSetIndexCustomLabelType.test_set_index_custom_label_hashable_iterablec             C   s   G dd dt }|dd}|dd}tddgd	d
gg||gd}d}tjt|d |j| W d Q R X tjt|d |j|g W d Q R X d S )Nc               @   s"   e Zd Zdd ZedddZdS )zRTestSetIndexCustomLabelType.test_set_index_custom_label_type_raises.<locals>.Thingc             S   s   || _ || _d S )N)rB   r   )r   rB   r   r#   r#   r$   r     s    z[TestSetIndexCustomLabelType.test_set_index_custom_label_type_raises.<locals>.Thing.__init__)r   c             S   s   dt | j dS )Nz<Thing r   )r   rB   )r   r#   r#   r$   r     s    zZTestSetIndexCustomLabelType.test_set_index_custom_label_type_raises.<locals>.Thing.__str__N)r}   r~   r   r   rx   r   r#   r#   r#   r$   r     s   r   r   r   r   r   r   r   r   r   )r   z,The parameter "keys" may be a column key, .*)rG   )r   r   rK   rL   r   r   )r   r   r   r   r    rq   r#   r#   r$   'test_set_index_custom_label_type_raises  s    

zCTestSetIndexCustomLabelType.test_set_index_custom_label_type_raisesN)r}   r~   r   r   r   r   r#   r#   r#   r$   r     s   &'r   )r   r   Znumpyr)   rK   Zpandasr   r   r   r   r   r	   Zpandas._testingZ_testingr   r
   r   r   r#   r#   r#   r$   <module>   s    
  \K