a
    dWK                     @   s   d dl Z d dlZd dl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 d dl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)r   c                   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   listCDT r   r   o/var/www/html/stable-diffusion-webui/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d!d" Zd#d$ Zd%d& Zejd'g d(g d)g d*g d+gd,d- ejD d.d- ejD ejg d/ed0ed1d2ed2d3ed3d4ge d5d1d1e d5d6d1e d5d7d1ge!d1d8e!d6d8e!d7d9gd:d- ej"D e#j$%g d;je#j&d<d7d=je#j'd>d7d?jd@dA Z(dBdC Z)dDS )E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_scalar+   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_categoryK   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_categoryg   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/   pdZcutrB   r   ilocassert_series_equalr1   r.   )r7   catreverseexpr   r9   r8   r   r   r   test_slicingk   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brU   rU   rU   rU   r"   rV   rU   
categorieshijklmn)r$   r'   r(   r)   r%   r      catsvaluesr   rV   rU   r]   r^   r(   r)   rd   rI   re   r6   )r   r   r   r'   r   )r'   r   )r]   rd   r$   )r   r   r   r   rO   r0   r1   
isinstancer   r   rP   strr.   columnsZiatatslice)r7   rd   idxre   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   sL  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|| |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"   rV   rV   rV   rU   rU   rU   rW   rX   rZ   )r$   r'   r'   r'   r(   r)   r%   rc   r   r'   r)   rV   r]   r^   categoryr   rd   re   r[   )r"   rV   rV   )r[   r\   r]   rI   r   r$   )r   r   r   rO   r0   r1   Zdtypesr   rP   r.   rh   )r7   rd   rk   re   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 )NrU   r"   )r)   r   r$   r%   TZcheck_index_type)r.   rO   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"   rV   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*   rs   r>   rw   r   r   r   &test_loc_getitem_label_unused_category/  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,   rt   rw   r   r   r   test_loc_getitem_non_category4  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&   rs   rr   Zaaabber   r   )rY   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_category9  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 )NrW   r$   r'   r(   r)   r%   r   r   r   r   r"   rV   rX   r$   r'   r)   r%   Tro   r"   r"   rV   )r$   r$   r'   )r)   r)   r%   ['x'] not in indexr*   x)r   r   r.   rY   r0   r1   r3   r4   r5   ru   rv   )r7   r   r   resr{   rS   r   r   r   test_loc_listlike_dtypesB  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"   rV   r"   r}   r~   r   r   r"   rV   r$   r(   r'   )r)   r   r%   r   Tro   r$   r(   r$   r(   r'   )r)   r   r)   r   r%   r"   r"   r"   r"   rV   r   r*   r   )
r   r   r.   r0   r1   r3   r4   r5   ru   rv   r7   r   r   r   rS   r   r   r   8test_loc_listlike_dtypes_duplicated_categories_and_codesY  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"   rV   r"   rU   abcderX   r@   r%   r   rb   rL   r   r   r"   rV   r   )r%   rb   r   r   Tro   r   )r%   rb   r%   rb   r   r   r   r*   r   )r   r   r   r.   r0   r1   r3   r4   r5   ru   rv   r   r   r   r   (test_loc_listlike_dtypes_unused_categoryp  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   rX   r@   r   r   r   rs   r*   rq   r"   )	r   r   r   r3   r4   r5   r.   ru   rv   )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   rh   r   rI   XZABr   r   r;   rX   r   rh   r   ZXY)r   YZr   )r   r   randomdefault_rngstandard_normalr   r2   r   r   rh   r   r.   r0   rP   r1   )r7   r   cdfexpectr{   exp_columnsr   r   r   test_ix_categorical_index  s$    ""z.TestCategoricalIndex.test_ix_categorical_indexc                 C   sp  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 | d S )Nr'   r   ZABAZXYXr   ZAAr   r   rX   r   ZXXr   r   ZAABZXXY)r   r   r   r   r   r   r2   r   r   rh   r.   r0   r1   )r7   r   r   r{   r   r   r   r   r   $test_ix_categorical_index_non_unique  s4    

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%   rV   rU   )r'   r(   r)   )r3   r4   	TypeErrorr.   rO   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.   ri   )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$   rV   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   rj   r.   r   r0   rP   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_nan(  s    z6TestCategoricalIndex.test_getitem_categorical_with_nanN)*__name__
__module____qualname__r:   r=   r?   rT   rl   rn   rp   rx   ry   rz   r|   r   r   r   r   r   r   r   r   r3   markZparametrizer0   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!   *   sb    y&	!	 
'r!   )ru   numpyr   r3   ZpandasrN   r   r   r   r   r   r   r   r	   r
   Zpandas._testingZ_testingr0   Zpandas.api.typesr   Zfixturer   r    r!   r   r   r   r   <module>   s   ,
	
	