a
    oÝEbñJ  ã                   @   s~   d dl Z 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mZmZmZmZ d dlmZ d dlmZ G dd„ dƒZdS )é    N)Úis_categorical_dtype)ÚCategoricalÚCategoricalIndexÚ	DataFrameÚIndexÚIntervalÚSeriesÚ	TimedeltaÚ	Timestamp)ÚCategoricalDtypec                
   @   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d'd(„ Zej d)g d*¢g d+¢g d,¢g d-¢gd.d/„ ejD ƒ¢d0d/„ ejD ƒ¢ejg d1¢ed2�‘e d3d4ƒe d4d5ƒe d5d6ƒg‘e!d7d3d3ƒe!d7d8d3ƒe!d7d9d3ƒg‘e"d3d:ƒe"d8d:ƒe"d9d;ƒg‘d<d/„ ej#D ƒ¢e$j% &g d=¢¡j‘e$j'd>d9d?�j‘e$j(d@d9dA�j‘¡dBdC„ ƒZ)dDdE„ Z*dFS )GÚTestCategoricalIndexc                 C   sh   t dtjddd�ittdƒttdƒƒdd�d	�| _t dtjddd�ittdƒttd
ƒƒdd�d	�| _d S )NÚAé   Úint64©ÚdtypeÚaabbcaÚcabÚB)r   Úname©ÚindexÚcabe)r   ÚnpÚaranger   ÚlistÚCDTÚdfÚdf2)ÚselfÚmethod© r!   úf/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/indexing/test_categorical.pyÚsetup_method   s    ÿüÿüz!TestCategoricalIndex.setup_methodc                 C   s6  t tdƒƒ}| jjd }ttdƒdd� |¡}|j|ks<J ‚tdg d¢it|ƒd�}t	 
||¡ | j ¡ }d	|jd< ttd
ƒdd� |¡}|j|ks˜J ‚tdg d¢it|ƒd�}t	 
||¡ tjtdd�� |jd  W d   ƒ n1 sê0    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   r   Úlocr   Úastyper   r   r   ÚtmÚassert_frame_equalÚcopyÚpytestÚraisesÚKeyErrorr   Úobject)r   r   ÚresultZbidxÚexpectedr   Zbidx2r   r!   r!   r"   Útest_loc_scalar'   s0    

ÿü(

z$TestCategoricalIndex.test_loc_scalarc              	   C   s¸   | j }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   r0   r4   r   r   r   r2   r3   r   Únan)r   r   Zdf3Zbidx3Z	expected3Zdf4r!   r!   r"   Ú,test_loc_setitem_with_expansion_non_categoryG   s(    

ÿü
þûzATestCategoricalIndex.test_loc_setitem_with_expansion_non_categoryc                 C   s>   t jtdd�� | jjd  W d   ƒ n1 s00    Y  d S )Nz^1$r,   r&   )r5   r6   r7   r   r0   ©r   r!   r!   r"   Ú$test_loc_getitem_scalar_non_categoryd   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   Úvalueéd   r&   r   )r   é   é2   éK   rD   )ZbinsÚDé   r   rE   r/   ©r   r   é   r(   r   é	   é   )r   r   r   Úarrayr   r2   Zassert_numpy_array_equalZ	__array__r   r   r1   ÚpdÚcutrC   r   ÚilocÚassert_series_equalr3   r0   )r   ÚcatÚreverseÚexpr   r:   r9   r!   r!   r"   Útest_slicingh   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ƒsÒJ ‚|jdd d …f }t 	||
¡ t
|d tƒ�sJ ‚|jd d …df }t 	||	¡ t|jƒ�s2J ‚|jd }||k�sJJ ‚|jd
d…d d …f }t ||¡ t|d jƒ�s€J ‚|jd
d d …f }t 	||
¡ t
|d tƒ�s²J ‚|jd d …df }t 	||	¡ t|jƒ�sàJ ‚|jd }||k�søJ ‚|jd
|jd f }||k�sJ ‚|jd }||k�s2J ‚|jd }||k�sJJ ‚|jdg }||d dk }t ||¡ ||d dk }t ||¡ |jd }||k�s¦J ‚|jd }t 	||
¡ t
|d tƒ�sÐJ ‚|jtddƒ }t ||¡ t|d jƒ�s J ‚|jddg }t ||¡ t|d jƒ�s.J ‚|jd d …df }t 	||	¡ t|jƒ�s\J ‚|jd d …tddƒf }t ||¡ t|d jƒ�s”J ‚|jd d …ddgf }t ||¡ t|d jƒ�sÊJ ‚d S )N)r$   ÚcÚbrW   rW   rW   rW   ©r$   rX   rW   ©Ú
categories©ÚhÚiÚjÚkÚlÚmÚn)r&   r)   r*   r+   r'   r   é   ©ÚcatsÚvaluesr   rX   rW   r_   r`   r*   r+   rf   rJ   rg   r8   )r   r   r   r)   r   )r)   r   )r_   rf   r&   )r   r   r   r   rQ   r2   r3   r   r   rR   Ú
isinstanceÚstrr0   ÚcolumnsZiatÚatÚslice)r   rf   Úidxrg   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$   rX   rX   rX   rW   rW   rW   rY   rZ   r\   )r&   r)   r)   r)   r*   r+   r'   re   r   r)   r+   rX   r_   r`   Úcategoryr   rf   rg   r]   )r$   rX   rX   )r]   r^   r_   rJ   r   r&   )r   r   r   rQ   r2   r3   Zdtypesr   rR   r0   rj   )r   rf   rm   rg   r   r9   r:   r!   r!   r"   Útest_slicing_doc_examplesû   s<    ÿþûýþz.TestCategoricalIndex.test_slicing_doc_examplesc                 C   s4   | j jddg }| j jg d¢ }tj||dd� d S )NrW   r$   )r+   r   r&   r'   T©Zcheck_index_type)r   r0   rQ   r2   r3   )r   r9   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jg d¢  W d   ƒ n1 s:0    Y  d S )Nú['e'] not in indexr,   ©r$   rX   Úe©r5   r6   r7   ÚreÚescaper   r0   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jd  W d   ƒ n1 s00    Y  d S )Nz^'e'$r,   ru   )r5   r6   r7   r   r0   r?   r!   r!   r"   Ú&test_loc_getitem_label_unused_category.  s    z;TestCategoricalIndex.test_loc_getitem_label_unused_categoryc                 C   sH   t jtt d¡d��  | jjddg  W d   ƒ n1 s:0    Y  d S )Nz['d'] not in indexr,   r$   r.   rv   r?   r!   r!   r"   Útest_loc_getitem_non_category3  s    z2TestCategoricalIndex.test_loc_getitem_non_categoryc                 C   s\   | j  ¡ }d|jd< |jg d¢ }ttdƒtdƒdd�}tdg d	¢i|d
�}t ||¡ d S )Nr(   ru   rt   Zaaabber   r   )r[   r   r   )r   r&   r'   r)   r*   r(   r   )r   r4   r0   r   r   r   r2   r3   )r   r   r9   Ú	exp_indexr:   r!   r!   r"   Ú0test_loc_setitem_expansion_label_unused_category8  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 sò0    Y  d S )NrY   ©r&   r)   r*   ©r+   r'   r   ©r   r   r   r$   rX   rZ   r&   r)   r+   r'   Trq   ©r$   r$   rX   )r&   r&   r)   )r+   r+   r'   ú['x'] not in indexr,   Úx)r   r   r0   r[   r2   r3   r5   r6   r7   rw   rx   )r   r   r   Úresr|   rU   r!   r!   r"   Útest_loc_listlike_dtypesA  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 sÞ0    Y  d S )N)r$   rX   r$   r~   r   r€   r   r$   rX   ©r&   r*   r)   )r+   r   r'   r�   Trq   ©r&   r*   r&   r*   r)   )r+   r   r+   r   r'   ©r$   r$   r$   r$   rX   r‚   r,   rƒ   )
r   r   r0   r2   r3   r5   r6   r7   rw   rx   ©r   r   r   r„   rU   r!   r!   r"   Ú8test_loc_listlike_dtypes_duplicated_categories_and_codesX  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 sö0    Y  d S )N©r$   rX   r$   rW   ÚabcderZ   rA   ©r'   r   rd   rM   r€   r   r$   rX   r†   )r'   rd   r   r�   Trq   r‡   )r'   rd   r'   rd   r   rˆ   r‚   r,   rƒ   )r   r   r   r0   r2   r3   r5   r6   r7   rw   rx   r‰   r!   r!   r"   Ú(test_loc_listlike_dtypes_unused_categoryo  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 sž0    Y  d S )Nr‹   rŒ   rZ   rA   r�   r€   r   ru   r,   rs   r$   )	r   r   r   r5   r6   r7   r0   rw   rx   )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*   ÚABCZXYZ©r   rj   r   rJ   ÚXZAB©r   r   r<   rZ   r   ©rj   r   ZXY)r’   ÚYÚZr•   )r   r   ÚrandomÚrandnr   r4   r   r   rj   r   r0   r2   rR   r3   )r   r   ÚcdfÚexpectr|   Úexp_columnsr!   r!   r"   Útest_ix_categorical_index’  s     ""z.TestCategoricalIndex.test_ix_categorical_indexc                 C   sl  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*   ZABAZXYXr‘   ZAAr   r   rZ   r”   ZXXr’   r•   ZAABZXXY)r   r   r—   r˜   r   r4   r   r   rj   r0   r2   r3   )r   r   r™   r|   rš   r›   r!   r!   r"   Ú$test_ix_categorical_index_non_unique§  s,     
ý
ýz9TestCategoricalIndex.test_ix_categorical_index_non_uniquec                 C   sr   d}t jt|d��  | jjdd…  W d   ƒ n1 s80    Y  | jjdd… }| jjg d¢ }t ||¡ d S )NzRcannot do slice indexing on CategoricalIndex with these indexers \[1\] of type intr,   r&   r'   rX   rW   )r)   r*   r+   )r5   r6   Ú	TypeErrorr   r0   rQ   r2   r3   )r   Úmsgr9   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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   r0   rk   )r   r   Úsr!   r!   r"   Ú&test_loc_and_at_with_categorical_indexÒ  s    ÿz;TestCategoricalIndex.test_loc_and_at_with_categorical_indexÚ
idx_valuesr~   )rB   éþÿÿÿéýÿÿÿ©g      ø?g      @ç      @)g      ø¿g      Àg      Àc                 c   s    | ]}t jg d ¢|d�V  qdS ©r~   r   N©r   rN   ©Ú.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&   rX   r§   r   r&   r+   r   rL   iã  r)   r*   r.   rH   c                 c   s    | ]}t jg d ¢|d�V  qdS r¨   )rO   rN   rª   r!   r!   r"   r¬   ò  r­   )r&   r+   r   rL   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±   rJ   r)   r²   r‘   Úqux)r´   r²   r³   Úqux2)r´   rµ   r³   )	r   r   rl   r0   r   r2   rR   r3   r4   )r   r£   r°   Zcat_idxr   Úslr9   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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   Úranger0   r   )r   ÚciZserr   r!   r!   r"   Ú!test_getitem_categorical_with_nan   s    z6TestCategoricalIndex.test_getitem_categorical_with_nanN)+Ú__name__Ú
__module__Ú__qualname__r#   r;   r>   r@   rV   rn   rp   rr   ry   rz   r{   r}   r…   rŠ   rŽ   r�   rœ   r�   r    r¢   r5   ÚmarkZparametrizer2   ZALL_INT_NUMPY_DTYPESZFLOAT_NUMPY_DTYPESr   rN   r8   r   r
   r	   ZALL_INT_EA_DTYPESrO   ZIntervalIndexZfrom_breaksZ
date_rangeZtimedelta_ranger·   rº   r!   r!   r!   r"   r      sd    z'	ûù	÷õó òñïíìëþ
'r   )rw   Únumpyr   r5   Zpandas.core.dtypes.commonr   ZpandasrO   r   r   r   r   r   r   r	   r
   Zpandas._testingZ_testingr2   Zpandas.api.typesr   r   r   r!   r!   r!   r"   Ú<module>   s   (
