o
    Û­jóL  ã                   @   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   úc/var/www/html/CropPilot/venv/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   Úvalueéd   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ƒs‚J ‚|jd d …df }t 
||	¡ t|jt	ƒs™J ‚|jd }||ks¤J ‚|jd
d…d d …f }t ||¡ t|d jt	ƒs¿J ‚|jd
d d …f }t 
||
¡ t|d tƒs×J ‚|jd d …df }t 
||	¡ t|jt	ƒsîJ ‚|jd }||ksùJ ‚|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	ƒ�s–J ‚|jd d …df }t 
||	¡ t|jt	ƒ�s®J ‚|jd d …tddƒf }t ||¡ t|d jt	ƒ�sËJ ‚|jd d …ddgf }t ||¡ t|d jt	ƒ�sçJ ‚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 sÇw   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

