o
    ŀg:                     @   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 g ddd}|tg d}t g ddd}t|| t|j|j |jtg ddd}t dd	tjgg ddd
}t|| t|j|j |jtg dddd}t g ddd}t|| t|j|j t t	dt	dddd}|tg d}t t	dt	dddd}t|| t|j|j |jtg ddd}t ddtjgt	dddd}t|| t|j|j |jtg dddd}t t	dt	dddd}t|| t|j|j d}t
jt|d |jtg ddd W d    n	1 sw   Y  t
jt|d |jtg ddd W d    n	1 s6w   Y  d}t
jt|d |td	dg W d    d S 1 s[w   Y  d S )N         xxxnamer	   r   )r
   r	   r   T
fill_valuer
   r	   )
categoriesr   F
allow_fillr   CBAABC)r   orderedr   BCABCJWhen allow_fill=True and fill_value is not None, all indices must be >= -1matchr	   r   r	   r   3index -5 is out of bounds for (axis 0 with )?size 3r"   )r   takenparraytmassert_index_equalassert_categorical_equalvaluesnanlistpytestraises
ValueError
IndexError)selfidxresultexpectedmsg r6   b/var/www/html/myenv/lib/python3.10/site-packages/pandas/tests/indexes/categorical/test_indexing.pytest_take_fill_value   s\   $zTestTake.test_take_fill_valuec                 C   s  t jg ddd}t|}|tg d}t jg ddd}t|}t|| |jtg ddd}t jg ddd}t g d}t||d	}t|| |jtg dd
dd}t jg ddd}t|}t|| d}tj	t
|d |jtg ddd W d    n1 sw   Y  tj	t
|d |jtg ddd W d    n1 sw   Y  d}tj	t|d |tddg W d    d S 1 sw   Y  d S )N)
2011-01-01
2011-02-01
2011-03-01r   r   r   )r:   r9   r;   Tr   )r:   r9   NaTr   Fr   r   r   r   r!   r#   r	   r"   )pdDatetimeIndexr   r$   r%   r&   r'   r(   r-   r.   r/   r0   )r1   r2   r3   r4   exp_catsr5   r6   r6   r7   test_take_fill_value_datetimeO   s>   "z&TestTake.test_take_fill_value_datetimec                 C   s   t g ddd}g d}d}tjt|d |j|dd W d    n1 s'w   Y  d	}tjt|d |j||d
 W d    n1 sGw   Y  d}tjt|d |j|dd W d    d S 1 shw   Y  d S )Nr   foor   r   z1take\(\) got an unexpected keyword argument 'foo'r   r
   )rB   z$the 'out' parameter is not supported)outz%the 'mode' parameter is not supportedclip)mode)r   r-   r.   	TypeErrorr$   r/   )r1   r2   indicesr5   r6   r6   r7   test_take_invalid_kwargsv   s   "z!TestTake.test_take_invalid_kwargsN)__name__
__module____qualname__r8   rA   rH   r6   r6   r6   r7   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sJ |d|dks(J ||fD ]}tjtdd |d W d    n1 sEw   Y  q,t td	tdd}ttd	}|d
}t||d
 t|t	
g d |d}||dksJ |dksJ ||fD ]}tjtdd |d W d    n1 sw   Y  qt tdtdd}ttd}|d}||dksJ |tddd ksJ |d}||dksJ |tddd ksJ ||fD ]}tjtdd |d W d    n	1 s	w   Y  qd S )Nabcdeedabcr=   aez'NOT-EXIST'r   z	NOT-EXISTaacdedd)FFFTFT   aabbbabcr   r
   b   z'c'c)r   r,   r   get_locr-   r.   KeyErrorr'   assert_numpy_array_equalr%   r&   slice)	r1   cidx1idx1icidx2idx2rescidx3idx3r6   r6   r7   test_get_loc   sL   



zTestGetLoc.test_get_locc                 C   s&   t td}|d}|dksJ d S )NrU   rV   r	   )r   r,   rY   )r1   cidxr3   r6   r6   r7   test_get_loc_unique   s   
zTestGetLoc.test_get_loc_uniquec                 C   s2   t td}|d}tddd }||ksJ d S )NabbcrV   r	   r   )r   r,   rY   r\   r1   rf   r3   r4   r6   r6   r7    test_get_loc_monotonic_nonunique   s   
z+TestGetLoc.test_get_loc_monotonic_nonuniquec                 C   s8   t td}|d}tjg dtd}t|| d S )NabcbrV   )FTFTdtype)r   r,   rY   r%   r&   boolr'   r[   ri   r6   r6   r7   #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J d S )NAr   r
   )r   r%   r+   rY   )r1   cirb   r6   r6   r7   test_get_loc_nan   s   zTestGetLoc.test_get_loc_nanN)rI   rJ   rK   re   rg   rj   ro   rr   r6   r6   r6   r7   rL      s    /rL   c                   @   sL   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
dS )TestGetIndexerc                 C   s   t tdtdd}tjt|tjd}||}t|| t	j
tdd |j|dd W d    d S 1 s9w   Y  d S )Ncabr=   rl   zInvalid fill methodr   invalidmethod)r   r,   r%   arangelenintpget_indexerr'   r[   r-   r.   r/   )r1   r2   r4   actualr6   r6   r7   test_get_indexer_base   s   
"z$TestGetIndexer.test_get_indexer_basec              	   C   s   t tdtddd}tt|}d}dddt|fD ].}|tjdjd	t||d
 }t	j
t|d || W d    n1 sEw   Y  qtdtdfD ]}t	j
t|d || W d    n1 slw   Y  qSd S )Naabbcart   Fr   r   8Reindexing only valid with uniquely valued Index objectsr	   r
   rW   r   )sizer   aababca)r   r,   r   r%   r&   ry   randomdefault_rngintegersr-   r.   r   r{   )r1   rq   oidxr5   nfinderr6   r6   r7    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 ]7}d}tjt|d || W d    n1 s6w   Y  ||\}}tj	g dtj
d}t|| qd S )	NaabcderN   r=   abfr   r   )r   r	   r
   r   rl   )r   r,   r   r-   r.   r   r{   get_indexer_non_uniquer%   r&   rz   r'   assert_almost_equal)r1   r^   ra   indexerr5   r1_r4   r6   r6   r7   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 d    n1 s+w   Y  d	}tjt|d |j|d
d W d    n1 sKw   Y  d}tjt|d |j|dd W d    d S 1 slw   Y  d S )Nr   rN   r=   r   z3method pad not yet implemented for CategoricalIndexr   padrv   z8method backfill not yet implemented for CategoricalIndexbackfillz7method nearest not yet implemented for CategoricalIndexnearest)r   r,   r-   r.   NotImplementedErrorr{   )r1   r^   ra   r5   r6   r6   r7   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:00rl   Fcategory)r   r   rm   r   r	   rz   )r%   r&   r   objectr   r{   r'   r[   )r1   arrcatsrq   r3   r4   r6   r6   r7   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 NrO   rV   r=   r	   rz   rl   r   r{   r%   r&   r'   r[   r1   rq   r3   r4   r6   r6   r7   +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   r6   r6   r7   0test_get_indexer_same_categories_different_order   s   z?TestGetIndexer.test_get_indexer_same_categories_different_orderc                 C   s   t ddtjdg}dddtjg}||}tjg dtjd}t|| g d}||}tjg dtjd}t|| d S )	Nr	   r
   r   rS   )r	   r   r   r
   rl   )r	   rS   r
   r   )r   r   r	   r   )r   r%   r+   r{   r&   rz   r'   r[   )r1   rq   other1res1	expected1other2res2	expected2r6   r6   r7   )test_get_indexer_nans_in_index_and_target(  s   

z8TestGetIndexer.test_get_indexer_nans_in_index_and_targetN)rI   rJ   rK   r}   r   r   r   r   r   r   r   r6   r6   r6   r7   rs      s    rs   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 )Nr~   rt   Fr   Tr	   r=   )
r   r,   ry   wherer'   r(   r%   r+   tolistr   )r1   listlike_boxklassr_   condr4   r3   r6   r6   r7   
test_where6  s   "zTestWhere.test_wherec                 C   s   t g d}tg d}||d}tg dtd}t|| d}tj	t
|d |j|d W d    d S 1 s=w   Y  d S )N)rO   rV   rX   rR   )TFTFr
   )rO   r
   rX   r
   rl   z3Cannot setitem on a Categorical with a new categoryr   )r   r%   r&   r   r   r   r'   r(   r-   r.   rF   _data_where)r1   rq   maskr3   r4   r5   r6   r6   r7   test_where_non_categoriesD  s   "z#TestWhere.test_where_non_categoriesN)rI   rJ   rK   r   r   r6   r6   r6   r7   r   5  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|v sJ d|vsJ d|vsJ tj|vs$J d|vs*J d	|vs0J d S )
Nr~   cabdefFr   rO   zrP   r   r	   r   r,   r%   r+   r1   rq   r6   r6   r7   test_containsS  s   zTestContains.test_containsc                 C   s.   t tdtjg tdd}tj|v sJ d S )Nr~   r   r=   r   r   r6   r6   r7   test_contains_nan_  s   zTestContains.test_contains_nanunwrapTFc           	      C   sP  t jddddt j}|d}||d  }t|}|}|r"|j}tj|v s)J d |v s/J t j|v s6J t	d|v s?J t
d|vsHJ t|}|rQ|j}tj|v sXJ d |v s^J t j|v seJ t	d|vsnJ t
d|v swJ t|}|r|j}tj|v sJ d |v sJ t j|v sJ t	d|vsJ t
d|vsJ d S )Nz
2016-01-01d   )periodsr   Dr   r<   )r>   
date_rangeinsertr<   	to_periodr   r   r%   r+   
datetime64timedelta64)	r1   r   dtipitdirq   objobj2obj3r6   r6   r7   test_contains_na_dtypec  s8   
z#TestContains.test_contains_na_dtypezitem, expectedr   r	   )      ?Tg      ?r   )rO   F)idsc                 C   s*   t ttd}||v }||u sJ d S )Nr   )r   r   from_breaksrange)r1   itemr4   rq   r3   r6   r6   r7   test_contains_interval  s   z#TestContains.test_contains_intervalc                 C   s   t g d}d|vsJ tjtdd dg|v  W d    n1 s#w   Y  tjtdd ddg|v  W d    d S 1 sAw   Y  d S )Nr   rO   zunhashable typer   rV   )r   r-   r.   rF   )r1   r2   r6   r6   r7   test_contains_list  s   "zTestContains.test_contains_listN)rI   rJ   rK   r   r   r-   markparametrizer   r>   Intervalr   	Timedeltastrr   r   r6   r6   r6   r7   r   R  s$    
$

r   )numpyr%   r-   pandas.errorsr   pandasr>   r   r   r   r   pandas._testing_testingr'   r   rL   rs   r   r   r6   r6   r6   r7   <module>   s    wIe