o
    _~#gL                     @   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   0   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/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/pandas/tests/indexing/test_categorical.pydf      r   c                   C   r   )
Nr   r   r   r   r   caber   r   r   r   r   r   r   r   df2$   r    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sJJ tdg dit|d}t	|| tjtdd |jd  W d    n1 ssw   Y  |
 }|
 }|jt|_d|jd< d|jd< t	|| d S )Nr   a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   resultbidxexpectedbidx2r"   r   r   r   test_loc_scalar1   s2   



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$   r0   )r/   r   aabbcadr   r&   r   )r)   r)   r*   r+   r,   r)   g      $@r   )r/   Cr*   r+   r,   )r   rA   )	r1   r5   r   r   r   r3   r4   r   nan)r:   r   df3bidx3	expected3df4r   r   r   ,test_loc_setitem_with_expansion_non_categoryQ   s&   


zATestCategoricalIndex.test_loc_setitem_with_expansion_non_categoryc                 C   >   t jtdd |jd  W d    d S 1 sw   Y  d S )Nz^1$r-   r'   r6   r7   r8   r1   )r:   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   rN   )binsD   r   rO   r0   r   r      r)   r   	      )r   r   r   arrayr   r3   assert_numpy_array_equal	__array__r   r   r2   pdcutrM   r   ilocassert_series_equalr4   r1   )r:   catreverseexpr   r=   r;   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	sjJ |jdd d f }t
||
 t|d tsJ |jd d df }t
||	 t|jt	sJ |jd }||ksJ |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sJ |jd
|jd f }||ks
J |jd }||ksJ |jd }||ks"J |jdg }||d dk }t|| ||d dk }t|| |jd }||ksPJ |jd }t
||
 t|d tseJ |jtdd }t|| t|d jt	s~J |jddg }t|| t|d jt	sJ |jd d df }t
||	 t|jt	sJ |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brd   rd   rd   rd   r$   re   rd   
categorieshijklmn)r'   r*   r+   r,   r(   r      catsvaluesr   re   rd   rl   rm   r+   r,   rs   rU   rt   r9   )r   r   r   r*   r   )r*   r   )rl   rs   r'   )r   r   r   r   r^   r3   r4   
isinstancer   r   r_   strr1   columnsiatatslice)r:   rs   idxrt   r   cats2idx2values2exp_dfexp_colexp_rowexp_valres_dfres_rowres_colres_val	exp_fancy	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$   re   re   re   rd   rd   rd   rf   rg   ri   )r'   r*   r*   r*   r+   r,   r(   rr   r   r*   r,   re   rl   rm   categoryr   rs   rt   r   rj   )r$   re   re   )rj   rk   rl   rU   r   r'   )r   r   r   r^   r3   r4   dtypesr   r9   r_   r1   rw   )r:   rs   r{   rt   r   r;   r=   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 )Nrd   r$   )r,   r   r'   r(   Tcheck_index_type)r1   r^   r3   r4   )r:   r   r;   r=   r   r   r    test_loc_getitem_listlike_labels)  s   z5TestCategoricalIndex.test_loc_getitem_listlike_labelsc                 C   sH   t jttdd |jg d  W d    d S 1 sw   Y  d S )N['e'] not in indexr-   r$   re   er6   r7   r8   reescaper1   r:   r"   r   r   r   )test_loc_getitem_listlike_unused_category/  s   "z>TestCategoricalIndex.test_loc_getitem_listlike_unused_categoryc                 C   rH   )Nz^'e'$r-   r   rI   r   r   r   r   &test_loc_getitem_label_unused_category5  s   "z;TestCategoricalIndex.test_loc_getitem_label_unused_categoryc                 C   sH   t jttdd |jddg  W d    d S 1 sw   Y  d S )Nz['d'] not in indexr-   r$   r/   r   r   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)   r   r   aaabber!   r   )rh   r   r   )r   r'   r(   r*   r+   r)   r   )r5   r1   r   r   r   r3   r4   )r:   r"   r   r;   	exp_indexr=   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    d S 1 szw   Y  d S )Nrf   r'   r*   r+   r,   r(   r   r   r   r   r$   re   rg   r'   r*   r,   r(   Tr   r$   r$   re   )r'   r'   r*   )r,   r,   r(   ['x'] not in indexr-   x)r   r   r1   rh   r3   r4   r6   r7   r8   r   r   )r:   r   r   resr   rb   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    d S 1 spw   Y  d S )N)r$   re   r$   r   r   r   r   r$   re   r'   r+   r*   )r,   r   r(   r   Tr   r'   r+   r'   r+   r*   )r,   r   r,   r   r(   r$   r$   r$   r$   re   r   r-   r   )
r   r   r1   r3   r4   r6   r7   r8   r   r   r:   r   r   r   rb   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    d S 1 s|w   Y  d S )Nr$   re   r$   rd   abcderg   rK   r(   r   rq   rX   r   r   r$   re   r   )r(   rq   r   r   Tr   r   )r(   rq   r(   rq   r   r   r   r-   r   )r   r   r   r1   r3   r4   r6   r7   r8   r   r   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.w   Y  tjttd
d	 |jddg  W d    d S 1 sPw   Y  d S )Nr   r   rg   rK   r   r   r   r   r-   r   r$   )	r   r   r   r6   r7   r8   r1   r   r   )r:   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+   ABCXYZr   rw   r   rU   XABr   r   rA   rg   r   rw   r   XY)r   YZr   )r   r   randomdefault_rngstandard_normalr   r5   r   r   rw   r   r1   r3   r_   r4   )r:   r   cdfexpectr   exp_columnsr   r   r   test_ix_categorical_index  s$   """z.TestCategoricalIndex.test_ix_categorical_indexinfer_stringFTpyarrow)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    d S 1 sw   Y  d S )Nzfuture.infer_stringr*   r   ABAXYXr   AAr   r   rg   r   XXr   r   AABXXY)r   r   r   r   r   r   r   r5   r   r   rw   r1   r3   r4   )r:   r   r   r   r   r   r   r   r   r   $test_ix_categorical_index_non_unique  s8   

 "z9TestCategoricalIndex.test_ix_categorical_index_non_uniquec                 C   sl   d}t jt|d |jdd  W d    n1 sw   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(   re   rd   )r*   r+   r,   )r6   r7   	TypeErrorr1   r^   r3   r4   )r:   r   msgr;   r=   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s)J |jd dks2J |jd dks;J d S )Nr'   r*   r+   r,   r(   r   r   r   r   r   )r   r'   )r   r   r1   ry   )r:   r   sr   r   r   &test_loc_and_at_with_categorical_index  s   z;TestCategoricalIndex.test_loc_and_at_with_categorical_index
idx_valuesr   )rL   g      ?g      @      @)g      g      g      c                 c   "    | ]}t jg d |dV  qdS r   r   Nr   rY   .0r   r   r   r   	<genexpr>       zTestCategoricalIndex.<genexpr>c                 c   r   )r   r   Nr   )r   dtypr   r   r   r     r   )r'   re   r   r   r'   r,   r   rW   i  r*   r+   r/   rS   c                 c   r   r   )r\   rY   r   r   r   r   r     r   )r'   r,   r   rW   z
2019-01-01)periods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   rU   r*   r   r   qux)r   r   r   qux2)r   r   r   )	r   r   rz   r1   r   r3   r_   r4   r5   )r:   r   r   cat_idxr   slr;   r=   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sJ |jtj dks#J t|}|jtjdf dks3J |jtj d dks?J d S )Nr   r   r+   r   r*   r   )r   r   rB   r   ranger1   r   )r:   ciserr   r   r   r   !test_getitem_categorical_with_nan2  s   z6TestCategoricalIndex.test_getitem_categorical_with_nanN)-__name__
__module____qualname__r?   rG   rJ   rc   r   r   r   r   r   r   r   r   r   r   r   r   r6   markparametrizeparamtd
skip_if_nor   r   r   r3   ALL_INT_NUMPY_DTYPESFLOAT_NUMPY_DTYPESr   rY   r9   r   r
   r	   ALL_INT_EA_DTYPESr\   IntervalIndexfrom_breaks
date_rangetimedelta_ranger   r   r   r   r   r   r#   0   sj     y&	
"	 
'r#   )r   numpyr   r6   pandas.util._test_decoratorsutil_test_decoratorsr   pandasr\   r   r   r   r   r   r   r   r	   r
   r   pandas._testing_testingr3   fixturer   r"   r#   r   r   r   r   <module>   s    0

