a
    PfL                     @   s   d dl Z d dlZd dlZd dlm  mZ d dlZ	d dlm
Z
mZmZmZmZmZmZmZmZmZ d dlmZ ejdd Zejdd ZG dd dZdS )	    N)
CategoricalCategoricalDtypeCategoricalIndex	DataFrameIndexIntervalSeries	Timedelta	Timestampoption_contextc                   C   s0   t dtjdddittdttdddd	S )
NA   int64dtypeaabbcacabBr   nameindexr   nparanger   listr    r   r   _/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/indexing/test_categorical.pydf   s    r   c                   C   s0   t dtjdddittdttdddd	S )
Nr   r   r   r   r   caber   r   r   r   r   r   r   r   df2$   s    r    c                
   @   s  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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d!d"ejd#ed$d%gd&d' Zd(d) Zd*d+ Zejd,g d-g d.g d/g d0gd1d2 ejD d3d2 ejD ej g d4e!d5e"d6d7e"d7d8e"d8d9ge#d:d6d6e#d:d;d6e#d:d<d6ge$d6d=e$d;d=e$d<d>gd?d2 ej%D e&j'(g d@j e&j)dAd<dBj e&j*dCd<dDj dEdF Z+dGdH Z,dIS )JTestCategoricalIndexc                 C   s2  t td}|jd }ttddd|}|j|ks:J tdg dit|d}t	|| |
 }d	|jd< ttd
dd|}|j|ksJ tdg dit|d}t	|| tjtdd |jd  W d    n1 s0    Y  |
 }|
 }|jt|_d|jd< d|jd< t	|| d S )Nr   aZaaar   r   r   )r         r      r   )r&   r&            r&   z^'d'$matchd
   )r   r   locr   astyper   r   r   tmassert_frame_equalcopypytestraisesKeyErrorr   object)selfr   r   resultZbidxexpectedZbidx2r    r   r   r   test_loc_scalar1   s0    

(

z$TestCategoricalIndex.test_loc_scalarc              	   C   s   d|j d< | }d|j d< ttddd}tdg d	it|d
}t|| | }d|j d< tddddddtjgtjtjtjtjtjtjdgdt|d
}t|| d S )Nr&   r"   r-   )r,   r   Zaabbcadr   r#   r   )r&   r&   r'   r(   r)   r&   g      $@r   )r,   Cr'   r(   r)   )r   r;   )	r.   r2   r   r   r   r0   r1   r   nan)r7   r   Zdf3Zbidx3Z	expected3Zdf4r   r   r   ,test_loc_setitem_with_expansion_non_categoryQ   s&    


zATestCategoricalIndex.test_loc_setitem_with_expansion_non_categoryc                 C   s<   t jtdd |jd  W d    n1 s.0    Y  d S )Nz^1$r*   r$   r3   r4   r5   r.   )r7   r   r   r   r   $test_loc_getitem_scalar_non_categorym   s    z9TestCategoricalIndex.test_loc_getitem_scalar_non_categoryc                 C   s<  t tg d}|d d d }tjg dtjd}t| | tdt	dd 
di}tj|jg d	d
|d< t dtddgddgdd}|jd }t|| tdt	dd
dit	dd
dd}tj|jg d	d
|d< |jdd }t|| t dtddgddgdd}|jd }t|| d S )Nr$   r'   r(   r)   )r)   r(   r'   r$   r   valued   r$   r   )r      2   K   rC   )ZbinsD   r   rD   r-   r   r      r&   r   	      )r   r   r   arrayr   r0   Zassert_numpy_array_equalZ	__array__r   r   r/   pdcutrB   r   ilocassert_series_equalr1   r.   )r7   catreverseexpr   r9   r8   r   r   r   test_slicingq   s&    

z!TestCategoricalIndex.test_slicingc                 C   s  t g dg dd}tg d}g d}t||d|d}t dd	gg dd}td
dg}ddg}t||d|d}t||dd}	tddgddgdd
d}
d}|jddd d f }t|| t|d jt	sJ |jdd d f }t
||
 t|d tsJ |jd d df }t
||	 t|jt	s6J |jd }||ksNJ |jd
dd d f }t|| t|d jt	sJ |jd
d d f }t
||
 t|d tsJ |jd d df }t
||	 t|jt	sJ |jd }||ks J |jd
|jd f }||ks"J |jd }||ks:J |jd }||ksRJ |jdg }||d dk }t|| ||d dk }t|| |jd }||ksJ |jd }t
||
 t|d tsJ |jtdd }t|| t|d jt	s
J |jddg }t|| t|d jt	s:J |jd d df }t
||	 t|jt	sjJ |jd d tddf }t|| t|d jt	sJ |jd d ddgf }t|| t|d jt	sJ d S )N)r"   cbrV   rV   rV   rV   r"   rW   rV   
categorieshijklmn)r$   r'   r(   r)   r%   r      catsvaluesr   rW   rV   r^   r_   r(   r)   re   rI   rf   r6   )r   r   r   r'   r   )r'   r   )r^   re   r$   )r   r   r   r   rP   r0   r1   
isinstancer   r   rQ   strr.   columnsZiatatslice)r7   re   idxrf   r   Zcats2Zidx2Zvalues2Zexp_dfZexp_colZexp_rowZexp_valZres_dfZres_rowZres_colZres_valZ	exp_fancyZ	res_fancyr   r   r   test_slicing_and_getting_ops   s    





z1TestCategoricalIndex.test_slicing_and_getting_opsc                 C   sP  t g dg dd}tg d}g d}t||d|d}|jdd	d d f }tt d
d
gg ddddgdddgd}t|| |jdd	d d f j}tddgddgtd}t	|| |j
dddf }tt g dg ddg ddd}t	|| |j
dd|jdd f }tdt g dg ddig dd}t|| d S )N)r"   rW   rW   rW   rV   rV   rV   rX   rY   r[   )r$   r'   r'   r'   r(   r)   r%   rd   r   r'   r)   rW   r^   r_   categoryr   re   rf   r   r\   )r"   rW   rW   )r\   r]   r^   rI   r   r$   )r   r   r   rP   r0   r1   Zdtypesr   r6   rQ   r.   ri   )r7   re   rl   rf   r   r8   r9   r   r   r   test_slicing_doc_examples  s<    z.TestCategoricalIndex.test_slicing_doc_examplesc                 C   s0   |j ddg }|jg d }tj||dd d S )NrV   r"   )r)   r   r$   r%   TZcheck_index_type)r.   rP   r0   r1   )r7   r   r8   r9   r   r   r    test_loc_getitem_listlike_labels)  s    z5TestCategoricalIndex.test_loc_getitem_listlike_labelsc                 C   sF   t jttdd |jg d  W d    n1 s80    Y  d S )N['e'] not in indexr*   r"   rW   er3   r4   r5   reescaper.   r7   r    r   r   r   )test_loc_getitem_listlike_unused_category/  s    z>TestCategoricalIndex.test_loc_getitem_listlike_unused_categoryc                 C   s<   t jtdd |jd  W d    n1 s.0    Y  d S )Nz^'e'$r*   rt   r>   rx   r   r   r   &test_loc_getitem_label_unused_category5  s    z;TestCategoricalIndex.test_loc_getitem_label_unused_categoryc                 C   sF   t jttdd |jddg  W d    n1 s80    Y  d S )Nz['d'] not in indexr*   r"   r,   ru   rx   r   r   r   test_loc_getitem_non_category:  s    z2TestCategoricalIndex.test_loc_getitem_non_categoryc                 C   sZ   |  }d|jd< |jg d }ttdtddd}tdg d	i|d
}t|| d S )Nr&   rt   rs   Zaaabber   r   )rZ   r   r   )r   r$   r%   r'   r(   r&   r   )r2   r.   r   r   r   r0   r1   )r7   r    r   r8   	exp_indexr9   r   r   r   0test_loc_setitem_expansion_label_unused_category?  s    
zETestCategoricalIndex.test_loc_setitem_expansion_label_unused_categoryc                 C   s   t g d}tg dg dd|d}|jddg }t ddg|jd}td	d
gddgd|d}tj||dd |jg d }t g d|jd}tg dg dd|d}tj||dd tjtt	
dd |jddg  W d    n1 s0    Y  d S )NrX   r$   r'   r(   r)   r%   r   r   r   r   r"   rW   rY   r$   r'   r)   r%   Trp   r"   r"   rW   )r$   r$   r'   )r)   r)   r%   ['x'] not in indexr*   x)r   r   r.   rZ   r0   r1   r3   r4   r5   rv   rw   )r7   r   r   resr|   rT   r   r   r   test_loc_listlike_dtypesH  s    z-TestCategoricalIndex.test_loc_listlike_dtypesc                 C   s   t g d}tg dg dd|d}|jddg }tg dg d	dt g d
d}tj||dd |jg d
 }tg dg ddt g dd}tj||dd tjtt	dd |jddg  W d    n1 s0    Y  d S )N)r"   rW   r"   r~   r   r   r   r"   rW   r$   r(   r'   )r)   r   r%   r   Trp   r$   r(   r$   r(   r'   )r)   r   r)   r   r%   r"   r"   r"   r"   rW   r   r*   r   )
r   r   r.   r0   r1   r3   r4   r5   rv   rw   r7   r   r   r   rT   r   r   r   8test_loc_listlike_dtypes_duplicated_categories_and_codes_  s    
zMTestCategoricalIndex.test_loc_listlike_dtypes_duplicated_categories_and_codesc                 C   s  t g dtdd}tg dg dd|d}|jdd	g }tg d
g ddt g dtddd}tj||dd |jg d }tg dg ddt g dtddd}tj||dd tjtt	
dd |jddg  W d    n1 s0    Y  d S )Nr"   rW   r"   rV   abcderY   r@   r%   r   rc   rL   r   r   r"   rW   r   )r%   rc   r   r   Trp   r   )r%   rc   r%   rc   r   r   r   r*   r   )r   r   r   r.   r0   r1   r3   r4   r5   rv   rw   r   r   r   r   (test_loc_listlike_dtypes_unused_categoryv  s     z=TestCategoricalIndex.test_loc_listlike_dtypes_unused_categoryc                 C   s   t g dtdd}tg dg dd|d}tjtdd	 |jd  W d    n1 s\0    Y  tjttd
d	 |jddg  W d    n1 s0    Y  d S )Nr   r   rY   r@   r   r   r   rt   r*   rr   r"   )	r   r   r   r3   r4   r5   r.   rv   rw   )r7   r   r   r   r   r   9test_loc_getitem_listlike_unused_category_raises_keyerror  s    (zNTestCategoricalIndex.test_loc_getitem_listlike_unused_category_raises_keyerrorc                 C   s`  t tjddtdtdd}| }t|j|_t|j	|_	t
|jdd d f |j	dd}t|jdd d f | t
|jd d df |jdd}t|jd d df | ttd	g d
d}t |jddgd d f |j	|d}t|jddgd d f | ttdg dd}t |jd d ddgf |j|d}t|jd d ddgf | d S )Nr'   r(   r(   ABCZXYZr   ri   r   rI   XZABr   r   r;   rY   r   ri   r   ZXY)r   YZr   )r   r   randomdefault_rngstandard_normalr   r2   r   r   ri   r   r.   r0   rQ   r1   )r7   r   cdfexpectr|   exp_columnsr   r   r   test_ix_categorical_index  s$    ""z.TestCategoricalIndex.test_ix_categorical_indexinfer_stringFTZpyarrow)Zmarksc                 C   s  t d|| ttjddtdtdd}| }t|j	|_	t|j
|_
ttddd	gd
}t|jdd d f |j
|d}t|jdd d f | ttdddgd
}t|jd d df |j	|d}t|jd d df | t|jdd	gd d f |j
ttdd}t|jdd	gd d f | t|jd d ddgf |j	ttdd}t|jd d ddgf | W d    n1 s0    Y  d S )Nzfuture.infer_stringr'   r   ZABAZXYXr   ZAAr   r   rY   r   ZXXr   r   ZAABZXXY)r   r   r   r   r   r   r   r2   r   r   ri   r.   r0   r1   )r7   r   r   r   r|   r   r   r   r   r   $test_ix_categorical_index_non_unique  s6    

z9TestCategoricalIndex.test_ix_categorical_index_non_uniquec                 C   sl   d}t jt|d |jdd  W d    n1 s60    Y  |jdd }|jg d }t|| d S )NzRcannot do slice indexing on CategoricalIndex with these indexers \[1\] of type intr*   r$   r%   rW   rV   )r'   r(   r)   )r3   r4   	TypeErrorr.   rP   r0   r1   )r7   r   msgr8   r9   r   r   r   test_loc_slice  s    ,z#TestCategoricalIndex.test_loc_slicec                 C   sz   t ddgddgddggtg dd}|d	 }|jd
 dks@J |jd
 dksRJ |jd dksdJ |jd dksvJ d S )Nr$   r'   r(   r)   r%   r   r   r   r   r   )r   r$   )r   r   r.   rj   )r7   r   sr   r   r   &test_loc_and_at_with_categorical_index  s    z;TestCategoricalIndex.test_loc_and_at_with_categorical_index
idx_valuesr~   )rA   g      ?g      @      @)g      g      g      c                 c   s    | ]}t jg d |dV  qdS r~   r   Nr   rM   .0r   r   r   r   	<genexpr>      zTestCategoricalIndex.<genexpr>c                 c   s    | ]}t jg d |dV  qdS )r   r   Nr   )r   Zdtypr   r   r   r     r   )r$   rW   r   r   r$   r)   r   rK   i  r'   r(   r,   rG   c                 c   s    | ]}t jg d |dV  qdS r   )rN   rM   r   r   r   r   r     r   )r$   r)   r   rK   z
2019-01-01)periodsZ1d)startr   c                 C   s  t ||d}tdg di|d}t|d |d }|j|d  }tdgdg|d d}t|| |j|d d	  }tdd
g|d d	 dgd}t|| |j| }tdd
g|d d	 dgd}t|| | }d|j|d < tdg di|d}t|| | }ddg|j|d d	 df< tdg di|d}t|| | }ddg|j|df< tdg di|d}t|| d S )N)orderedr   )foobarbazr   r   r$   r   rI   r'   r   r   qux)r   r   r   qux2)r   r   r   )	r   r   rk   r.   r   r0   rQ   r1   r2   )r7   r   r   Zcat_idxr   slr8   r9   r   r   r   +test_loc_getitem_with_non_string_categories  s0    
z@TestCategoricalIndex.test_loc_getitem_with_non_string_categoriesc                 C   s   t ddtjg}ttd|d}|tj dks2J |jtj dksFJ t|}|jtjdf dksfJ |jtj d dks~J d S )Nr   r   r(   r   r'   r   )r   r   r<   r   ranger.   r   )r7   ciZserr   r   r   r   !test_getitem_categorical_with_nan2  s    z6TestCategoricalIndex.test_getitem_categorical_with_nanN)-__name__
__module____qualname__r:   r=   r?   rU   rm   ro   rq   ry   rz   r{   r}   r   r   r   r   r   r3   markZparametrizeparamtdZ
skip_if_nor   r   r   r0   ZALL_INT_NUMPY_DTYPESZFLOAT_NUMPY_DTYPESr   rM   r6   r   r
   r	   ZALL_INT_EA_DTYPESrN   ZIntervalIndexZfrom_breaksZ
date_rangeZtimedelta_ranger   r   r   r   r   r   r!   0   sh    y&	
"	 
'r!   )rv   numpyr   r3   Zpandas.util._test_decoratorsutilZ_test_decoratorsr   ZpandasrN   r   r   r   r   r   r   r   r	   r
   r   Zpandas._testingZ_testingr0   Zfixturer   r    r!   r   r   r   r   <module>   s   0

