o
    ҷh                     @   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/venv/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    