U
    b8                     @   s   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mZ G dd dZG dd dZG dd	 d	ZG d
d dZG dd dZdS )    N)InvalidIndexError)CategoricalIndexIndexIntervalIndex	Timestampc                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestTakec              	   C   s  t dddgdd}|tdddg}t dddgdd}t|| t|j|j |jtdddgdd	}t ddtjgdddgdd
}t|| t|j|j |jtdddgddd}t dddgdd}t|| t|j|j t t	dt	dddd}|tdddg}t t	dt	dddd}t|| t|j|j |jtdddgdd	}t ddtjgt	dddd}t|| t|j|j |jtdddgddd}t t	dt	dddd}t|| t|j|j d}t
jt|d  |jtdddgdd	 W 5 Q R X t
jt|d  |jtdddgdd	 W 5 Q R X d}t
jt|d |tddg W 5 Q R X d S )N         xxxnamer   T
fill_value)
categoriesr   FZ
allow_fillr   ZCBAABC)r   orderedr   ZBCABCJWhen allow_fill=True and fill_value is not None, all indices must be >= -1match3index -5 is out of bounds for (axis 0 with )?size 3)r   takenparraytmassert_index_equalZassert_categorical_equalvaluesnanlistpytestraises
ValueError
IndexError)selfidxresultexpectedmsg r.   R/tmp/pip-unpacked-wheel-ck39h295/pandas/tests/indexes/categorical/test_indexing.pytest_take_fill_value   sn          
      $$zTestTake.test_take_fill_valuec              	   C   s  t jdddgdd}t|}|tdddg}t jdddgdd}t|}t|| |jtdddgd	d
}t jdddgdd}t dddg}t||d}t|| |jtdddgdd	d}t jdddgdd}t|}t|| d}tj	t
|d  |jtdddgd	d
 W 5 Q R X tj	t
|d  |jtdddgd	d
 W 5 Q R X d}tj	t|d |tddg W 5 Q R X d S )Nz
2011-01-01z
2011-02-01z
2011-03-01r   r   r   r   r   Tr   NaTr   Fr   r   r   r   r   r   )pdZDatetimeIndexr   r   r   r   r    r!   r%   r&   r'   r(   )r)   r*   r+   r,   Zexp_catsr-   r.   r.   r/   test_take_fill_value_datetimeO   s<      $$z&TestTake.test_take_fill_value_datetimec              	   C   s   t dddgdd}dddg}d}tjt|d	 |j|dd
 W 5 Q R X d}tjt|d	 |j||d W 5 Q R X d}tjt|d	 |j|dd W 5 Q R X d S )Nr   r	   r
   foor   r   r   z1take\(\) got an unexpected keyword argument 'foo'r   )r5   z$the 'out' parameter is not supported)outz%the 'mode' parameter is not supportedZclip)mode)r   r%   r&   	TypeErrorr   r'   )r)   r*   indicesr-   r.   r.   r/   test_take_invalid_kwargsw   s    
z!TestTake.test_take_invalid_kwargsN)__name__
__module____qualname__r0   r4   r:   r.   r.   r.   r/   r      s   >(r   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )
TestGetLocc           	      C   s  t tdtdd}ttd}|d|dks8t|d|dksPt||fD ](}tjtdd |d W 5 Q R X qXt td	tdd}ttd	}|d
}t	||d
 t	|t
ddddddg |d}||dkst|dkst||fD ]*}tjtdd |d W 5 Q R X qt tdtdd}ttd}|d}||dksxt|tddd kst|d}||dkst|tddd kst||fD ]*}tjtdd |d W 5 Q R X qd S )NZabcdeedabcr2   aez'NOT-EXIST'r   z	NOT-EXISTZaacdeddFT   Zaabbbabcr   r	   b   z'c'c)r   r$   r   get_locAssertionErrorr%   r&   KeyErrorr    assert_numpy_array_equalr   r   slice)	r)   Zcidx1idx1iZcidx2idx2resZcidx3Zidx3r.   r.   r/   test_get_loc   s@    
 


zTestGetLoc.test_get_locc                 C   s&   t td}|d}|dks"td S )NrD   rE   r   )r   r$   rH   rI   )r)   cidxr+   r.   r.   r/   test_get_loc_unique   s    
zTestGetLoc.test_get_loc_uniquec                 C   s2   t td}|d}tddd }||ks.td S )NZabbcrE   r   r
   )r   r$   rH   rL   rI   r)   rR   r+   r,   r.   r.   r/    test_get_loc_monotonic_nonunique   s    
z+TestGetLoc.test_get_loc_monotonic_nonuniquec                 C   s<   t td}|d}tjddddgtd}t|| d S )NZabcbrE   FTdtype)r   r$   rH   r   r   boolr    rK   rT   r.   r.   r/   #test_get_loc_nonmonotonic_nonunique   s    
z.TestGetLoc.test_get_loc_nonmonotonic_nonuniquec                 C   s,   t ddtjg}|tj}|dks(td S )NAr   r	   )r   r   r#   rH   rI   )r)   cirP   r.   r.   r/   test_get_loc_nan   s    zTestGetLoc.test_get_loc_nanN)r;   r<   r=   rQ   rS   rU   rY   r\   r.   r.   r.   r/   r>      s
   /r>   c                   @   sD   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S )TestGetIndexerc              	   C   sj   t tdtdd}tjt|tjd}||}t|| t	j
tdd |j|dd W 5 Q R X d S )Ncabr2   rV   zInvalid fill methodr   invalidmethod)r   r$   r   Zarangelenintpget_indexerr    rK   r%   r&   r'   )r)   r*   r,   actualr.   r.   r/   test_get_indexer_base   s    
z$TestGetIndexer.test_get_indexer_basec              
   C   s   t jd ttdtddd}tt |}d}ddd	t|fD ]B}|t jjd
t||d }t	j
t|d || W 5 Q R X qDtdtdfD ](}t	j
t|d || W 5 Q R X qd S )Ni[aabbcar^   Fr   r   8Reindexing only valid with uniquely valued Index objectsr   r	   rF   r   )sizer   Zaababca)r   randomseedr   r$   r   r   rb   randintr%   r&   r   rd   )r)   r[   Zoidxr-   nfinderr.   r.   r/    test_get_indexer_requires_unique   s    z/TestGetIndexer.test_get_indexer_requires_uniquec              
   C   s   t tdtdd}t td}|tdttdfD ]^}d}tjt|d || W 5 Q R X ||\}}tj	ddd	d
gtj
d}t|| q6d S )Naabcder?   r2   abfri   r   r   r   r	   r   rV   )r   r$   r   r%   r&   r   rd   Zget_indexer_non_uniquer   r   rc   r    Zassert_almost_equal)r)   rM   rO   Zindexerr-   Zr1_r,   r.   r.   r/   test_get_indexer_non_unique   s    z*TestGetIndexer.test_get_indexer_non_uniquec              	   C   s   t tdtdd}t td}d}tjt|d |j|dd W 5 Q R X d	}tjt|d |j|d
d W 5 Q R X d}tjt|d |j|dd W 5 Q R X d S )Nrq   r?   r2   rr   z3method pad not yet implemented for CategoricalIndexr   padr`   z8method backfill not yet implemented for CategoricalIndexZbackfillz7method nearest not yet implemented for CategoricalIndexZnearest)r   r$   r%   r&   NotImplementedErrorrd   )r)   rM   rO   r-   r.   r.   r/   test_get_indexer_method  s    z&TestGetIndexer.test_get_indexer_methodc                 C   sf   t jtdtdgtd}tdtdg}t||ddd}||}t jddgd	d}t|| d S )
Nz1999-12-31 00:00:00z2000-12-31 00:00:00rV   Fcategory)r   r   rW   r   r   rc   )r   r   r   objectr   rd   r    rK   )r)   ZarrZcatsr[   r+   r,   r.   r.   r/   test_get_indexer_array  s    
z%TestGetIndexer.test_get_indexer_arrayc                 C   sP   t ddgddgd}|t ddgddgd}tjddgdd}t|| d S Nr@   rE   r2   r   rc   rV   r   rd   r   r   r    rK   r)   r[   r+   r,   r.   r.   r/   +test_get_indexer_same_categories_same_order  s    z:TestGetIndexer.test_get_indexer_same_categories_same_orderc                 C   sP   t ddgddgd}|t ddgddgd}tjddgdd}t|| d S r{   r|   r}   r.   r.   r/   0test_get_indexer_same_categories_different_order%  s    z?TestGetIndexer.test_get_indexer_same_categories_different_orderN)
r;   r<   r=   rf   rp   rt   rw   rz   r~   r   r.   r.   r.   r/   r]      s   r]   c                   @   s   e Zd Zdd Zdd ZdS )	TestWherec                 C   s   |}t tdtddd}dgt| }|}|||}t|| dgdgt|d   }t tjg|dd    |j	d}|||}t|| d S )Nrg   r^   Frh   Tr   r2   )
r   r$   rb   wherer    r!   r   r#   tolistr   )r)   Zlistlike_boxklassrN   Zcondr,   r+   r.   r.   r/   
test_where/  s    "zTestWhere.test_wherec              	   C   s~   t ddddg}tddddg}||d}tddddgtd}t|| d	}tj	t
|d
 |j|d W 5 Q R X d S )Nr@   rE   rG   rB   TFr	   rV   z3Cannot setitem on a Categorical with a new categoryr   )r   r   r   r   r   ry   r    r!   r%   r&   r8   _dataZ_where)r)   r[   maskr+   r,   r-   r.   r.   r/   test_where_non_categories=  s    z#TestWhere.test_where_non_categoriesN)r;   r<   r=   r   r   r.   r.   r.   r/   r   .  s   r   c                
   @   s   e Zd Zdd Zdd Zejdddgdd	 Zejjd
e	
dddfde	
dddfdeddfe	ddfgeddd Zdd ZdS )TestContainsc                 C   sd   t tdtddd}d|ks"td|ks.td|ks:ttj|ksHtd|ksTtd	|ks`td S )
Nrg   cabdefFrh   r@   zrA   r   r   )r   r$   rI   r   r#   r)   r[   r.   r.   r/   test_containsL  s    zTestContains.test_containsc                 C   s.   t tdtjg tdd}tj|ks*td S )Nrg   r   r2   )r   r$   r   r#   rI   r   r.   r.   r/   test_contains_nanY  s    zTestContains.test_contains_nanunwrapTFc           	      C   s\  t jddddt j}|d}||d  }t|}|}|rD|j}tj|ksRt	d |ks^t	t j|kslt	t
d|ks~t	td|kst	t|}|r|j}tj|kst	d |kst	t j|kst	t
d|kst	td|kst	t|}|r|j}tj|kst	d |ks t	t j|ks0t	t
d|ksDt	td|ksXt	d S )Nz
2016-01-01d   )Zperiodsr   Dr   r1   )r3   Z
date_rangeinsertr1   Z	to_periodr   r   r   r#   rI   Z
datetime64Ztimedelta64)	r)   r   ZdtipiZtdir[   objobj2Zobj3r.   r.   r/   test_contains_na_dtype]  s8    
z#TestContains.test_contains_na_dtypezitem, expectedr   r   )      ?Tg      ?r   )r@   F)idsc                 C   s*   t ttd}||k}||ks&td S )Nr
   )r   r   Zfrom_breaksrangerI   )r)   itemr,   r[   r+   r.   r.   r/   test_contains_interval  s    z#TestContains.test_contains_intervalc              	   C   sh   t dddg}d|ksttjtdd dg|k W 5 Q R X tjtdd ddg|k W 5 Q R X d S )Nr   r	   r
   r@   zunhashable typer   rE   )r   rI   r%   r&   r8   )r)   r*   r.   r.   r/   test_contains_list  s    zTestContains.test_contains_listN)r;   r<   r=   r   r   r%   markZparametrizer   r3   ZIntervalr   Z	Timedeltastrr   r   r.   r.   r.   r/   r   K  s"   
$

r   )Znumpyr   r%   Zpandas.errorsr   Zpandasr3   r   r   r   r   Zpandas._testingZ_testingr    r   r>   r]   r   r   r.   r.   r.   r/   <module>   s   xI]