o
    5³cN  ã                   @   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   úb/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/arrays/categorical/test_missing.pyÚ	test_isna   s   z TestCategoricalMissing.test_isnac                 C   sX   t tdƒƒ}tj ddd¡}d|d d d…< t||dd}t|ƒ t t	|ƒ|dk¡ d S )Né
   r   é   éÿÿÿÿé   T)Úfastpath)
ÚlistÚranger   ÚrandomÚrandintr   Ú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_nans7   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%   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%   r2   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%   r2   r3   NNr%   r7   ©Úmatchr   )r   ÚlenÚ	TypeErrorÚ
ValueErrorÚpytestÚraisesÚfillna)r   Úfillna_kwargsÚmsgr   Úerrr   r   r   Útest_fillna_raisesC   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>e   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   r/   Ú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   Úotherr/   rO   r   r   r   Útest_fillna_arrays   s   


z(TestCategoricalMissing.test_fillna_arrayzvalues, expectedr1   )FFFr2   r	   c                 C   sŽ   t  dd¡7 t|ƒ}| ¡ }t ||¡ t|ƒ ¡ }t|ƒ}t ||¡ t|ƒ ¡ }t|ƒ}t 	||¡ W d   ƒ d S 1 s@w   Y  d S ©Nzmode.use_inf_as_naT)
ÚpdÚoption_contextr   r   r   r   r   Úassert_series_equalr   Úassert_frame_equal©r   ÚvaluesrO   r   r/   r   r   r   Útest_use_inf_as_na‚   s   "õz)TestCategoricalMissing.test_use_inf_as_nac                 C   sŽ   t |ƒ}t dd¡3 t|ƒ}t ||¡ tt|ƒƒ}t|ƒ}t ||¡ tt|ƒƒ}t|ƒ}t 	||¡ W d   ƒ d S 1 s@w   Y  d S rV   )
r   rW   rX   r   r   r   r   rY   r   rZ   r[   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   rY   )r   Úa1Úa2r"   Úcat_typer/   rO   r   r   r   Ú%test_compare_categorical_with_missing´   s   	z<TestCategoricalMissing.test_compare_categorical_with_missingzna_value, dtypezdatetime64[ns])NÚfloat64rd   c                 C   s&   t ||gƒ}t |jtg |d¡ d S r_   )r   r   r(   r"   r   )r   Úna_valuer'   r/   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,   r0   r5   rA   ÚmarkÚparametrizer   rG   rP   rU   r   r   r   ÚinfrW   ÚNAr]   r^   rc   ÚNaTrf   r   r   r   r   r      sp    þ
þùþ

üþ
	üþ
	þþ
üþ	r   )rL   Únumpyr   rA   Úpandas.core.dtypes.dtypesr   ÚpandasrW   r   r   r   r   r   Úpandas._testingÚ_testingr   r   r   r   r   r   Ú<module>   s    