3
Udt              
   @   s  d dl mZ d dlZd dlZd dlmZ d dlZd dlm	Z	m
Z
mZmZ d dljZG dd dZdd ZG d	d
 d
Zdd Zdd Zejjddgd ej
dgd gejjddddddgej
dddddggdd Zejjddgej
dggejjddgej
dggdd ZG dd dZG dd dZG dd dZdd Zejjd ejd!d"gd#d$d%ggd ejd&fejd!d"gd#d$d%ggd'ejd#fd(fd!d"d#gd$ejd$ggd'd"ejfd&fgd)d* Zejjd+ejd'd,gd-d.dgged d,dejd'fejd'd,gd-d.dgged d-dejd3fd'd,d-gd.ejdgged'd-dd,ejfd-fd'd,d-gd.ejdgged'd-dd,ejfd4fgd/d0 Z d1d2 Z!dS )5    )	timedeltaN)InvalidIndexError)CategoricalIndex
MultiIndex
date_rangec               @   s
  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	j
dejddgdddggdejdfejddgdddggdejdfejddgdddggdejdfdddgdejdggddejfdfdddgdejdggddejfdfdddgdejdggddejfdfgdd ZdS )TestSliceLocsc             C   sz   |j d\}}|jdd}|dks&t|jd d}|dks>t|jdd }|dt|fks^t|jdd	}|dksvtd S )Nr   footwoquxone      barbaz      )r	   r
   )r   r   )r   r   )r   r   )r   r   )r	   r
   )r   r   )	sortlevel
slice_locsAssertionErrorlen)selfidx
sorted_idx_result r   \/var/www/html/virt/lib64/python3.6/site-packages/pandas/tests/indexes/multi/test_indexing.pytest_slice_locs_partial   s    z%TestSliceLocs.test_slice_locs_partialc             C   s   t j }|j }|j}t|j|jd |jd  }|| }|dd j }t j|j|j t|j|jd tdd |jd tdd  }|| }|dd j }t j|j|j d S )Nr            )seconds   )	tmmakeTimeDataFramestackindexslicer   assert_almost_equalvaluesr   )r   dfstackedr   ZslobZslicedexpectedr   r   r   test_slice_locs   s    zTestSliceLocs.test_slice_locsc              C   s   t j }|j }|j}tjtdd |jd W d Q R X tjtdd" |j|jd tdd d W d Q R X t j	dd}|j }|j}tjtdd |jtdd W d Q R X tjtdd |j|jd d W d Q R X d S )Nz^Level type mismatch)matchr      r   r!   )r"   r   r    a)r   r0   )r   r   )r    r1   )
r$   r%   r&   r'   pytestraises	TypeErrorr   r   ZmakeCustomDataframe)r   r+   r,   r   r   r   r   "test_slice_locs_with_type_mismatch1   s    &z0TestSliceLocs.test_slice_locs_with_type_mismatchc             C   s   t ttjdttjdttjdgtjddddddddgtjddddddddgtjddddddddggd}d}tjt|d |jd	d
 W d Q R X |j	d\}}|jdd d S )Nr   r   r   r   r0   )levelscodesz4[Kk]ey length.*greater than MultiIndex lexsort depth)r/   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )
r   r   nparangearrayr2   r3   KeyErrorr   r   )r   r'   msgZsorted_indexr   r   r   r   test_slice_locs_not_sortedB   s    & z(TestSliceLocs.test_slice_locs_not_sortedc             C   s   t ddddgdddggdddddddddg	dddddddddg	gd}|jdd}|dks^t|jdd}|dksvt|jdd}|dkst|jdd}|dkst|jdd}|dkst|jdd
}|dt|fk std S )Nr   r   r   r#   r   r0   )r6   r7   r      
   )r   r   )r   r   )r0   r#   )r0   r#   )r   r   )r   r   )r0   r#   )r0   r#   )r   r   )r#   r0   )r0   r>   )r   r   r   r   )r   r'   r   r   r   r   test_slice_locs_not_containedT   s    0z+TestSliceLocs.test_slice_locs_not_containedz$index_arr,expected,start_idx,end_idxr1   bcder   r0   Nr   c             C   s(   t j|}|j||d}||ks$td S )N)startend)r   from_arraysr   r   )r   	index_arrr-   	start_idxend_idxr   r   r   r   r   "test_slice_locs_with_missing_valuen   s    
z0TestSliceLocs.test_slice_locs_with_missing_value)r   r0   )r   r0   )r   r0   )rB   rE   )r   r0   )r   r0   )r   r0   )rC   rE   )__name__
__module____qualname__r   r.   r5   r=   rA   r2   markparametrizer8   nanrL   r   r   r   r   r      s   ""r   c             C   s   d}t jt|d$ | jtjt| d tjd W d Q R X t jt|d$ | jtjt| d tjd W d Q R X t jt|d | jdd W d Q R X d S )Nz,putmask: mask and data must be the same size)r/   r   r	   )r2   r3   
ValueErrorZputmaskr8   Zonesr   Zbool_)r   r<   r   r   r   test_putmask_with_wrong_mask   s    ((rT   c               @   s  e Zd Zdd Zdd Zdd Zejjdde	j
d	gd
ddggde	j
d	ge	jdddge	jdfde	j
d	gd
ddgge	j
dfge	jdge	jdfdd	d
ge	j
ddggde	j
fge	jdge	jdfdd	d
ge	j
ddgge	j
ddge	jdddge	jdfgdd Zdd Zdd Zdd ZdS )TestGetIndexerc          	   C   sH  t tjd}t tjd}tjdddddddgtjd}tjdddddddgtjd}t||g||gd}|d d }|dddg }|j|}tj|tjdddgtjd |j|d	d
}tjdddddgtjd}	tj||	 |j|d d d d	d
}
tj|
|	d d d  |j|dd
}tj|| |j|dd
}tjdddddgtjd}	tj||	 |j|d d d dd
}
tj|
|	d d d  |j|dd
}tj|| |j|j	}|j|}tj|| |jdddg}|dddgkj
 stt ttdttd }t ttd}d}tjt|d |j| W d Q R X d S )Nr   r   r   r   r0   )dtype)r6   r7   r   pad)methodffillbackfillbfillr?      z8Reindexing only valid with uniquely valued Index objects)r/   r@   r@   r@   r@   r@   r@   r@   r@   r@   )r   r8   r9   r:   intpr   get_indexerr$   r)   r*   allr   listranger2   r3   r   )r   Z
major_axisZ
minor_axisZmajor_codesZminor_codesr'   Zidx1Zidx2Zr1e1Zr2Zrffill1Zrbfill1Zrexp1r<   r   r   r   test_get_indexer   sD    

zTestGetIndexer.test_get_indexerc             C   sp   t jddg}d}tjt|d |jdgdd W d Q R X d	}tjt|d |jdgd
dd W d Q R X d S )Nr1   r   rB   r   zJmethod='nearest' not implemented yet for MultiIndex; see GitHub issue 9365)r/   nearest)rX   z,tolerance not implemented yet for MultiIndexrW   )rX   Z	tolerance)r1   r   )rB   r   )r   from_tuplesr2   r3   NotImplementedErrorr^   )r   midxr<   r   r   r   test_get_indexer_nearest   s    z'TestGetIndexer.test_get_indexer_nearestc             C   sL   t jtdddgttddddg}|j|}tj|tjdtj	d	 d S )
Nr1   rB   rC   z
2012-01-01r0   H)periodsfreq	   )rV   )
r   from_productr   r   r^   r$   assert_numpy_array_equalr8   r9   r]   )r   rg   r   r   r   r   !test_get_indexer_categorical_time   s
    
z0TestGetIndexer.test_get_indexer_categorical_timezindex_arr,labels,expectedr   r   r0   r   r   )rV   r   c             C   s$   t j|}|j|}tj|| d S )N)r   rH   r^   r$   rn   )r   rI   labelsr-   r   r   r   r   r   #test_get_indexer_with_missing_value   s    

z2TestGetIndexer.test_get_indexer_with_missing_valuec             C   s"  t jdddgddddgg}t jdgdddgg}|j|}tjdddg|jd}tj|| |j|d	d
}tjdddg|jd}tj|| |j|dd
}tjdddg|jd}tj|| |j|dd
}tjdddg|jd}tj|| |j|dd
}tjdddg|jd}tj|| d S )Nr   r   r   r0   r   r#      )rV   rZ   )rX   r   r[   rW   rY   r@   r@   )r   rm   r^   r8   r:   rV   r$   r)   )r   
mult_idx_1
mult_idx_2indexerr-   backfill_indexerpad_indexerr   r   r   test_get_indexer_methods   s"    
z'TestGetIndexer.test_get_indexer_methodsc       
      C   s  t jjddgdddgddgg}t jjdddddddg}|jsDt|jsNt|jsXt|jsbt|d
 |d
 k svt|d |d   k o|d k n  st|d |d kst|d |d   k o|d k n   st|d |d   k  o|d k n  st|d |d   k o(|d k n  s4t|d |d k sJt|j|}tj	dddddddg|j
d}tj|| |j|dd}tj	d
dddddd g|j
d}tj|| |j|dd}tj	d!ddddddg|j
d}tj|| |d
 |d
   k o|d k n  st|d
 |d   k o:|d k n  sFt|d
 |d   k of|d k n  srt|d
 |d   k o|d k n  st|d |d   k o|d k n  st|d |d kst|d |d   k o |d k n  st|d |d   k o,|d k n  s8t|d |d   k oX|d k n  sdt|d |d	   k o|d k n  st|d |d   k o|d k n  st|d |d   k o|d k n  st|j|}tj	d"d#d$d%d&dd'd(d)d*d+d,g|j
d}tj|| |j|dd}tj	ddddddddddddg|j
d}tj|| |j|dd}	tj	d
d
d
d
ddddddddg|	j
d}tj||	 d S )-Nr   r0   r   r   r#   r   rr   r>   rl   r   )rV   rZ   )rX   rW      r?   r[   )r   r   r>   )r   r   rl   )r   r#   rr   )r   r   r#   )r   rr   rr   )r   rr   r>   )r0   r#   r>   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   )pdr   rm   re   Zis_monotonicr   Z	is_uniquer^   r8   r:   rV   r$   r)   )
r   rs   rt   Zindexer_no_fillr-   Zindexer_backfilledZindexer_paddedru   rv   rw   r   r   r   %test_get_indexer_three_or_more_levels'  sj     



(*,,
,,,,,,,,,,,
$$$z4TestGetIndexer.test_get_indexer_three_or_more_levelsc             C   s   t jjddggd }t jjddg}|d |d   k oD|d k n  sNt|d |d k sbt|j|}tjddg|jd}t	j
|| |j|d	d
}tjddg|jd}t	j
|| |j|dd
}tjddg|jd}t	j
|| d S )Nr   r   r   r0   rr   r   r>   )rV   r[   )rX   rY   r   )r   r0   r   r   )r   r0   r   r   r@   r@   r@   r@   )rz   r   rm   re   r   r^   r8   r:   rV   r$   r)   )r   rs   rt   ru   r-   rv   rw   r   r   r    test_get_indexer_crossing_levels  s    (
z/TestGetIndexer.test_get_indexer_crossing_levelsNr@   r@   r@   r@   r@   r@   )rM   rN   rO   rc   rh   ro   r2   rP   rQ   r8   rR   r:   r]   rq   rx   r{   r|   r   r   r   r   rU      s    4
00
$
4crU   c             C   s   | d d
kst | dd }| dddg }|j|s8t | ddddddg }| tjddddddg }| d	dddg }|j|st |j|st d S )Nr   r   r   r   r0   r   TFr   )r   r   )r   equalsr8   r:   )r   r   r-   Zresult2r   r   r   test_getitem  s    r~   c             C   sB   | j d\}}|jdtddks&t|jdtddks>td S )Nr   r   r0   r   r	   r   )r   get_locr(   r   )r   r   r   r   r   r   test_getitem_group_select  s    r   ind1Tr   ind2Fc             C   sF   t jdddddg}tj||  | t jddg}tj|| | d S )Nr?   r   r\   r   r!   r0   (   r   2   r   )r?   r   )r\   r   )r!   r0   )r   r   )r   r   )r?   r   )r!   r0   )r   re   r$   assert_index_equal)r   r   r   r-   r   r   r   test_getitem_bool_index_all  s    r   c             C   s^   t jdg}tj||  | tj tjg tjdtjg tjdgg g gd}tj|| | d S )Nr?   r   )rV   )r6   r7   )r?   r   )r   re   r$   r   rz   r8   r:   int64)r   r   r   r-   r   r   r   test_getitem_bool_index_single  s    r   c               @   s   e Zd Zdd Zdd Zdd Zejjde	e
eegejjde	e
eegd	d
 Zejjdddgejjde	e
ge
e	ggdd Zdd Zejjdddgdd Zdd Zdd Zdd ZdS )
TestGetLocc          "   C   sR  |j ddkst|j ddks$ttjtdd |j d W d Q R X tjtd	d |j d
 W d Q R X d}tjt|d |j ddd W d Q R X tttj	dttj	dttj	dgtj
ddddddddgtj
ddddddddgtj
ddddddddggd}tjtdd |j d W d Q R X |j dtddksNtd S )Nr	   r
   r   r   r0   z^10$)r/   r   z^'quux'$ZquuxzEonly the default get_loc method is currently supported for MultiIndexrd   )rX   r   r   r   )r6   r7   z
^\(1, 1\)$r   )r	   r
   )r   r
   )r   r
   )r   r   )r   r   )r   r   r2   r3   r;   rf   r   r   r8   r9   r:   r(   )r   r   r<   r'   r   r   r   test_get_loc  s"    & zTestGetLoc.test_get_locc          	   C   s   t ddddg}|jd}tdd}||ks0tt dddddg}|jd}d}||ks\ttjt |jd W d Q R X d S )Nr   r   r   rC   r1   rB   )r   r   r(   r   r2   r3   r;   )r   r'   r   r-   rsZxpr   r   r   test_get_loc_duplicates  s    


z"TestGetLoc.test_get_loc_duplicatesc             C   s  t ttjdttjdttjdgtjddddddddgtjddddddddgtjddddddddggd}|jd\}}tdd}|| jdjd}||kst|j	|st|jd\}}d}||kst|d kstt
jtdd |jd W d Q R X t
jtd	d |jdjd W d Q R X t
jtd	d |jddd
jddd
 W d Q R X t dgttdgtjddddgtjddddggd}|jdtd d f\}}td d }||kst|j	|jdstd S )Nr   r   r   r   r0   )r6   r7   z
^\(2, 2\)$)r/   z^2$)leveli  )r   r   )r   r   r   )r   r   )r   r   r8   r9   r:   Zget_loc_levelr(   Z	droplevelr   r}   r2   r3   r;   dropr`   ra   )r   r'   locZ	new_indexr-   Z	exp_indexr   r   r   r   test_get_loc_level  s6    & 
"(
zTestGetLoc.test_get_loc_leveldtype1dtype2c             C   sN   t jddgj|t jddgj|g}tjj|}|j|d dksJtd S )Nr   r   r   )r8   r:   Zastyperz   r   rm   r   r   )r   r   r   r6   r   r   r   r   test_get_loc_multiple_dtypes:  s    (z'TestGetLoc.test_get_loc_multiple_dtypesr   r   r   dtypesc             C   sf   ddgddgg}ddg}|\}}t jddg|d||< |d||< tj|}|jt|dksbtd S )	Nr1   rB   rC   rD   r   r   )rV   r0   )r8   r:   r   rm   r   tupler   )r   r   r   r6   keyZ	lev_dtypeZ	key_dtyper   r   r   r   test_get_loc_implicit_castB  s    
z%TestGetLoc.test_get_loc_implicit_castc             C   s   ddgt jdddg}tj|}|jddks2t|jddksDttjtdd	 |jd W d Q R X tjtd
d	 |jd W d Q R X d S )NFTr   r   )rV   r   r   z^\(False, True\)$)r/   z^\(True, False\)$)r   r   )r   r   )FT)TF)	r8   r9   r   rm   r   r   r2   r3   r;   )r   r6   r   r   r   r   test_get_loc_cast_boolN  s    
z!TestGetLoc.test_get_loc_cast_boolc             C   s^   ddgddgg}ddg}t jd|gt|d||< |||< tj|}|jt|dksZtd S )Nr1   rB   rC   rD   r   )rV   r0   )r8   r:   typer   rm   r   r   r   )r   r   Znulls_fixturer6   r   r   r   r   r   test_get_loc_nan[  s    
zTestGetLoc.test_get_loc_nanc             C   s   t jddgddgg}t|jdts*ttjtdd |jd W d Q R X tjtd	d |jt	j
 W d Q R X tjtd
d |jt	j
g W d Q R X d S )Ng      ?g       @g      @g      @r   z^3$)r/   r0   z^nan$zunhashable type: 'list')r   rH   
isinstancer   r(   r   r2   r3   r;   r8   rR   r4   )r   r   r   r   r   test_get_loc_missing_nane  s    z#TestGetLoc.test_get_loc_missing_nanc             C   s   t jtjdggd }tddd }|jtj|ks6tt jtjddtjgg}tjddddg}t	j
|jtj| t jtjdggd }tddd }|jtjdf|kstd S )Nr   r   r   TFr0   r   )r   rm   r8   rR   r(   r   r   rH   r:   r$   rn   )r   r   r-   r   r   r   1test_get_loc_with_values_including_missing_valuesq  s    z<TestGetLoc.test_get_loc_with_values_including_missing_valuesc             C   st   t dddgdddddd	d
dggddddddddddg
ddddddddddg
gddgd}|jdtddksptd S )NDBCr         %   9   C   K   R   r   r   r0   r   r#   r   rr   tagday)r6   r7   names)r   r   r(   r   )r   r'   r   r   r   test_get_loc_duplicates2  s
    .z#TestGetLoc.test_get_loc_duplicates2N)rM   rN   rO   r   r   r   r2   rP   rQ   intfloatboolstrr   r   r   r   r   r   r   r   r   r   r   r     s   & $
r   c               @   s6   e Zd Zdd Zejjdeee	j
ejgdd ZdS )	TestWherec          	   C   s:   t jddg}d}tjt|d |jd W d Q R X d S )	NAr   r   z2\.where is not supported for MultiIndex operations)r/   T)r   r   )r   r   )r   re   r2   r3   rf   where)r   ir<   r   r   r   
test_where  s    zTestWhere.test_whereklassc          
   C   sF   t jdd	g}ddg}d}tjt|d |j|| W d Q R X d S )
Nr   r   r   FTz2\.where is not supported for MultiIndex operations)r/   )r   r   )r   r   )r   re   r2   r3   rf   r   )r   r   r   Zcondr<   r   r   r   test_where_array_like  s
    zTestWhere.test_where_array_likeN)rM   rN   rO   r   r2   rP   rQ   r`   r   r8   r:   rz   Seriesr   r   r   r   r   r     s   r   c               @   sL   e Z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 ZdS )TestContainsc             C   s4   t jddgddgg}d|ks"td|jks0td S )Nr   r   r   r   )r   rm   r   Z_engine)r   rg   r   r   r   test_contains_top_level  s    z$TestContains.test_contains_top_levelc          	   C   st   t dgtjdddgddddddgdddddd	ggd d
gd}dtjdf|ksTtx|jD ]}||ks\tq\W d S )Nr   z
2012-01-01r   )rj   r   r   r   r0   r   r   )r6   r7   r   r@   )r   rz   r   	Timestampr   r*   )r   mivalr   r   r   test_contains_with_nat  s    z#TestContains.test_contains_with_natc             C   s(   d|kst d|kst d |ks$t d S )Nr	   r
   r   )r	   r
   )r   r
   )r   )r   r   r   r   r   test_contains  s    zTestContains.test_containsc             C   s^   t jdtjdgg}tj|ks"tt jddgtjdgg}tj|ksHtdtjf|ksZtd S )Nr   r   r0   )r   rH   r8   rR   r   )r   r   r   r   r    test_contains_with_missing_value  s
    z-TestContains.test_contains_with_missing_valuec             C   s   t jddgddgg}d|ks"t|jd}d|jd ks>td|ksJtt jddgdd	gg}d|kslt|jd}d|jd kstd|kstd S )
Nr   r   r0   r   r   r1   rB   rC   rD   )r   rm   r   r   r6   )r   r   r   r   r    test_multiindex_contains_dropped  s    

z-TestContains.test_multiindex_contains_droppedc             C   sT   t jdddd}tj|tjt|g}|d |ks8td|ksDtd|ksPtd S )Nz09:30:00z16:00:00z30 min)rk   r   Zelement_not_exitz0 day 09:30:00)rz   Ztimedelta_ranger   rH   r8   r9   r   r   )r   Ztxr   r   r   r   test_contains_td64_level  s
    z%TestContains.test_contains_td64_levelc             C   s&   t jtdtdg}d|ks"td S )Nr?   r#   r   i@B i@B @B )r   r   )r   rH   ra   r   )r   r   r   r   r   test_large_mi_contains  s    z#TestContains.test_large_mi_containsN)rM   rN   rO   r   r   r   r   r   r   r2   rP   Zslowr   r   r   r   r   r     s   	r   c              C   s   t jjt jddddddgdgg} t jdtjt| i| }|jt j	d	d dd d f df }t jjt jd
dddddgdgg}t j
tjdt|d |dd}tj|| d S )Nz2019-01-01T00:15:33d   ri   date)rj   rk   namexr0   r	   z2019-1-2z2019-01-02T00:15:33z2019-01-05T02:15:33)rF   rG   rk   r      )datar'   r   )rz   r   rm   r   Z	DataFramer8   r9   r   r   Z
IndexSlicer   r$   Zassert_series_equal)r   r+   r   ZqidxZ	should_ber   r   r   !test_timestamp_multiindex_indexer  s     
"
 r   zindex_arr,expected,target,algor1   rB   rC   rD   rE   leftr   rightc             C   s*   t j| }|j||dd}||ks&td S )Nr   )Zsidekind)r   rH   Zget_slice_boundr   )rI   r-   targetalgor   r   r   r   r   'test_get_slice_bound_with_missing_value  s    

r   z$index_arr,expected,start_idx,end_idxr   r0   r   c             C   s(   t j| }|j||d}||ks$td S )N)rF   rG   )r   rH   Zslice_indexerr   )rI   r-   rJ   rK   r   r   r   r   r   %test_slice_indexer_with_missing_value  s    
r   c           	      s\  d} dd dgd |  dgd |  dgd |  t jg|  dgd |   dg|  dgd |   t jg|  dgd	 |   dg|   gD  xltt D ]\}tj }|j | |kstt j|d t j	d
}|j
 fdd|D }tj|| qW tt }t jdgt| t j	d
}tddgd |  }|j
|g fdd|D  }tj|| d S )Nr   c             S   s   g | ]}t |qS r   )r   ).0lr   r   r   
<listcomp>  s   z%test_pyint_engine.<locals>.<listcomp>r   r?   r   r   rl   r>   )rV   c                s   g | ]} | qS r   r   )r   r   )keysr   r   r   2  s    c                s   g | ]} | qS r   r   )r   r   )r   r   r   r   9  s    r@   )r8   rR   ra   r   r   re   r   r   r9   r]   r^   r$   rn   r:   r`   r   )Nr   r'   r-   r   Zidcesmissingr   )r   r   test_pyint_engine  s&    *	
r   )r   r   )r0   r   )"datetimer   Znumpyr8   r2   Zpandas.errorsr   Zpandasrz   r   r   r   r   Zpandas._testingZ_testingr$   r   rT   rU   r~   r   rP   rQ   r   r   r   r   r   r   rR   r   r(   r   r   r   r   r   r   <module>   sH   
u  +".& B"0
&&*8
