o
    ‡Å€g†  ã                   @   sf   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 d dlmZ G dd„ dƒZdS )é    N)ÚCategoricalDtype)ÚCategoricalÚ	DataFrameÚIndexÚSeriesÚisnac                   @   sô  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zej	 
ddddœdfi dfddidfdeg d¢ƒidfg¡dd„ ƒZej	 
dddg¡dd„ ƒZdd„ Zej	 
d g d!¢e g d"¢¡fdd#ejge g d$¢¡fdd#ejge g d$¢¡fdd#ejge g d$¢¡fg¡d%d&„ ƒZej	 
d g d!¢e g d"¢¡fdd#ejge g d$¢¡fdd#ejge g d$¢¡fdd#ejge g d$¢¡fg¡d'd(„ ƒZej	 
d)g d*¢ejd+d,gg d*¢fg d!¢ejdd#gg d!¢fg¡d-d.„ ƒZej	 
d/ejd0fd1ejd2fejd2fg¡d3d4„ ƒZd5S )6ÚTestCategoricalMissingc                 C   s6   t  g d¢¡}tddt jgƒ}| ¡ }t ||¡ d S )N©FFTÚaÚb)ÚnpÚarrayr   Únanr   ÚtmÚassert_numpy_array_equal)ÚselfÚexpÚcatÚres© r   ú`/var/www/html/myenv/lib/python3.10/site-packages/pandas/tests/arrays/categorical/test_missing.pyÚ	test_isna   s   z TestCategoricalMissing.test_isnac                 C   sZ   t tdƒƒ}tj d¡ ddd¡}d|d d d…< t||ƒ}t|ƒ t 	t
|ƒ|dk¡ d S )Né
   é   r   é   éÿÿÿÿé   )ÚlistÚranger   ÚrandomÚdefault_rngÚintegersr   Úreprr   r   r   )r   Ú
categoriesÚlabelsr   r   r   r   Útest_na_flags_int_categories   s   
z3TestCategoricalMissing.test_na_flags_int_categoriesc                 C   sÎ   t ddtjdgƒ}t |jtddgƒ¡ t |jtj	g d¢tj
d¡ tj|d< t |jtddgƒ¡ t |jtj	g d¢tj
d¡ t ddtjdgƒ}t |jtddgƒ¡ t |jtj	g d¢tj
d¡ d S )Nr
   r   )r   é   r   r   ©Údtyper&   )r   r   r   r   )r   r   r   r   Úassert_index_equalr#   r   r   Ú_codesr   Úint8)r   Úcr   r   r   Útest_nan_handling'   s   
"z(TestCategoricalMissing.test_nan_handlingc                 C   sB   t ddtjgƒ}| tddgƒ¡}t |jtjg d¢dd¡ d S )Nr
   r   r,   )r   r   r   r+   r'   )	r   r   r   Ú
_set_dtyper   r   r   Úcodesr   )r   r,   Úresultr   r   r   Útest_set_dtype_nans6   s    z*TestCategoricalMissing.test_set_dtype_nansc                 C   s>   t g d¢ƒ}tj|d< t dtjdgg d¢d}t ||¡ d S )N©r&   r   é   r&   r3   )r#   )r   r   r   r   Úassert_categorical_equal)r   r   r   r   r   r   Útest_set_item_nan;   s   
z(TestCategoricalMissing.test_set_item_nanzfillna_kwargs, msgr&   Úffill)ÚvalueÚmethodz)Cannot specify both 'value' and 'method'.z(Must specify a fill 'value' or 'method'.r8   Úbadz%Invalid fill method. Expecting .* badr7   )r&   r   r3   é   r
   ú3Cannot setitem on a Categorical with a new categoryc                 C   sn   t g d¢ƒ}t|ƒdkrd|v rt}nt}tj||d |jdi |¤Ž W d   ƒ d S 1 s0w   Y  d S )N)r&   r   r3   NNr&   r7   ©Úmatchr   )r   ÚlenÚ	TypeErrorÚ
ValueErrorÚpytestÚraisesÚfillna)r   Úfillna_kwargsÚmsgr   Úerrr   r   r   Útest_fillna_raisesB   s   "ÿz)TestCategoricalMissing.test_fillna_raisesÚnamedTFc                 C   sæ   |r	t  dd¡}ndd„ }ttj|ddƒ|ddƒd gtdƒ}| |ddƒ¡}t|ddƒ|ddƒ|ddƒgƒ}t ||¡ ttj|ddƒ|ddƒd gtdƒ}d}t	j
t|d	 | |ddƒ¡ W d   ƒ d S 1 slw   Y  d S )
NÚPointzx yc                  W   s   | S )Nr   )Úargsr   r   r   Ú<lambda>d   s    zFTestCategoricalMissing.test_fillna_iterable_category.<locals>.<lambda>r   r&   r'   r;   r<   )ÚcollectionsÚ
namedtupler   r   r   ÚobjectrC   r   r4   rA   rB   r?   )r   rH   rI   r   r0   ÚexpectedrE   r   r   r   Útest_fillna_iterable_category^   s   $ $"ÿz4TestCategoricalMissing.test_fillna_iterable_categoryc                 C   s†   t g d¢ƒ}| d¡}| |¡}t ||¡ t|d ƒsJ ‚t g d¢¡}| |¡}t g d¢|jd}t ||¡ t|d ƒsAJ ‚d S )N)ÚAÚBÚCNNrS   r   )rQ   rR   rS   rR   rQ   r'   )r   rC   r   r4   r   r   r   r(   )r   r   Úotherr0   rO   r   r   r   Útest_fillna_arrayr   s   


z(TestCategoricalMissing.test_fillna_arrayzvalues, expectedr2   )FFFr   r	   c              	   C   sÐ   d}t jt|dU t dd¡6 t|ƒ}| ¡ }t  ||¡ t|ƒ ¡ }t|ƒ}t  	||¡ t
|ƒ ¡ }t
|ƒ}t  ||¡ W d   ƒ n1 sIw   Y  W d   ƒ d S W d   ƒ d S 1 saw   Y  d S ©Nz"use_inf_as_na option is deprecatedr<   zmode.use_inf_as_naT)r   Úassert_produces_warningÚFutureWarningÚpdÚoption_contextr   r   r   r   Úassert_series_equalr   Úassert_frame_equal)r   ÚvaluesrO   rE   r   r0   r   r   r   Útest_use_inf_as_na   s    õÿ"ÿz)TestCategoricalMissing.test_use_inf_as_nac              	   C   sÐ   t |ƒ}d}tjt|dQ t dd¡2 t|ƒ}t ||¡ tt|ƒƒ}t|ƒ}t 	||¡ tt
|ƒƒ}t
|ƒ}t ||¡ W d   ƒ n1 sIw   Y  W d   ƒ d S W d   ƒ d S 1 saw   Y  d S rV   )r   r   rW   rX   rY   rZ   r   r   r   r[   r   r\   )r   r]   rO   r   rE   r0   r   r   r   Ú"test_use_inf_as_na_outside_context›   s    öÿ"ÿz9TestCategoricalMissing.test_use_inf_as_na_outside_contextza1, a2, categories)r
   r   r,   r
   r   c                 C   st   t |ƒ}t||dt||dk}t|ƒt|ƒk}t ||¡ t||dt||dk}t|ƒt|ƒk}t ||¡ d S ©Nr'   )r   r   r   r[   )r   Úa1Úa2r#   Úcat_typer0   rO   r   r   r   Ú%test_compare_categorical_with_missing·   s   	z<TestCategoricalMissing.test_compare_categorical_with_missingzna_value, dtypezdatetime64[ns])NÚfloat64re   c                 C   s&   t ||gƒ}t |jtg |d¡ d S r`   )r   r   r)   r#   r   )r   Úna_valuer(   r0   r   r   r   Ú,test_categorical_only_missing_values_no_castÌ   s   zCTestCategoricalMissing.test_categorical_only_missing_values_no_castN)Ú__name__Ú
__module__Ú__qualname__r   r%   r-   r1   r5   rA   ÚmarkÚparametrizer   rG   rP   rU   r   r   r   ÚinfrY   ÚNAr^   r_   rd   ÚNaTrg   r   r   r   r   r      sp    þ
þùþ

üþ
	üþ
	þþ
üþ	r   )rL   Únumpyr   rA   Úpandas.core.dtypes.dtypesr   ÚpandasrY   r   r   r   r   r   Úpandas._testingÚ_testingr   r   r   r   r   r   Ú<module>   s    