o
    $j                     @   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   m/var/www/html/Deteccion_Ine/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   randomZdefault_rngZ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   Z
_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$   r0   )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$   Zffill)valuemethodz)Cannot specify both 'value' and 'method'.z(Must specify a fill 'value' or 'method'.r4   badz%Invalid fill method. Expecting .* badr3   )r$   r   r0      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   r0   NNr$   r3   matchr   )r   len	TypeError
ValueErrorpytestraisesfillna)r   Z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%   r7   r8   )collections
namedtupler   r   r   objectr?   r   r1   r=   r>   r;   )r   rC   rD   r   r-   expectedr@   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CNNrN   r   )rL   rM   rN   rM   rL   r%   )r   r?   r   r1   r   r   r   r&   )r   r   otherr-   rJ   r   r   r   test_fillna_arrayr   s   


z(TestCategoricalMissing.test_fillna_arrayzvalues, expectedr/   )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 deprecatedr8   zmode.use_inf_as_naT)r   assert_produces_warningFutureWarningpdoption_contextr   r   r   r   assert_series_equalr   assert_frame_equal)r   valuesrJ   r@   r   r-   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 rQ   )r   r   rR   rS   rT   rU   r   r   r   rV   r   rW   )r   rX   rJ   r   r@   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   rV   )r   Za1Za2r!   Zcat_typer-   rJ   r   r   r   %test_compare_categorical_with_missing   s   	z<TestCategoricalMissing.test_compare_categorical_with_missingzna_value, dtypezdatetime64[ns])Nfloat64r]   c                 C   s&   t ||g}t|jtg |d d S r[   )r   r   r'   r!   r   )r   Z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+   r.   r2   r=   markZparametrizer   rB   rK   rP   r   r   r   infrT   ZNArY   rZ   r\   ZNaTr^   r   r   r   r   r      sp    



	
	
	r   )rG   numpyr   r=   Zpandas.core.dtypes.dtypesr   ZpandasrT   r   r   r   r   r   Zpandas._testingZ_testingr   r   r   r   r   r   <module>   s    