o
    Eh                     @   s   d dl Zd dlZd dlZd dlmZ d dlm	Z	 ej
ddd Zej
dej
dejdgdd Zd	d
 Zej
dejdgdd Zej
jdd Zej
dddgdd ZdS )    N)allow_na_opsz3ignore:PeriodDtype\[B\] is deprecated:FutureWarningc                 C   s   | }t |tdt|d }| }tt|j}t	|t
jr5t
j|}|j|_tj||dd d S t	|t
jrXt
j||jd}t	|jt
jrN| }tj||dd d S t |}t|| d S )N   Texactdtype)nprepeatrangelenuniquelistdictfromkeysvalues
isinstancepd
MultiIndexZfrom_tuplesnamestmassert_index_equalIndexr   DatetimeTZDtype	normalizearrayassert_numpy_array_equal)index_or_series_objobjresultunique_valuesexpected r!   =lib/python3.10/site-packages/pandas/tests/base/test_unique.pytest_unique	   s   
r#   null_objc                 C   s*  |}t |std nt|dk rtd nt|tjr'td|  d |j}| |dd< t|}t	
|tdt|d }|||jd}| }t|j}d	d
 |D }| g| }	t|tjrtj|	|jd}
t|jtjr{| }|
 }
tj||
dd d S t	j|	|jd}
t||
 d S )N$type doesn't allow for NA operationsr   z%Test doesn't make sense on empty dataMultiIndex can't hold ''r      r   c                 S   s   g | ]	}t |s|qS r!   )r   Zisnull).0valr!   r!   r"   
<listcomp>6   s    z$test_unique_null.<locals>.<listcomp>Tr   )r   pytestskipr   r   r   r   _valuestyper   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   )r$   r   r   r   klassrepeated_valuesr   Zunique_values_rawZunique_values_not_nullr   r    r!   r!   r"   test_unique_null   s0   
r2   c                 C   sB   | }t |tdt|d }t| }|jdd|ksJ d S )Nr   Fdropna)r   r	   r
   r   r   nunique)r   r   r    r!   r!   r"   test_nuniqueD   s   r6   c                 C   s   |}t |std nt|tjrtd|  d |j}| |dd< t|}t	|t
dt|d }|||jd}t|tjr^| t|jksMJ |jdd	t|jd ks\J d S t| }| td|d ksqJ |jdd	td|ks~J d S )
Nr%   r&   r'   r   r(   r   r   Fr3   )r   r,   r-   r   r   r   r.   r/   r   r	   r
   r   r   ZCategoricalIndexr5   
categoriesr   max)r$   r   r   r   r0   r1   Znum_unique_valuesr!   r!   r"   test_nunique_nullK   s    "r9   c                 C   sn   d}| |gd t d}| }t|tjr'tjdgt d}tj||dd d S tjdgt d}t	|| d S )Nu   r(   r   Tr   )
objectr   r   r   r   r   r   r   r   r   )Zindex_or_seriesZuvalr   r   r    r!   r!   r"   test_unique_bad_unicoded   s   r;   r4   TFc                 C   s>   t ddt jtjd t jg}|| }| r|dksJ d S d S )NZyesr   )r   ZSeriesZNAr   nanZNaTr5   )r4   Zserresr!   r!   r"   test_nunique_dropnat   s   
r>   )Znumpyr   r,   Zpandasr   Zpandas._testingZ_testingr   Zpandas.tests.base.commonr   Zmarkfilterwarningsr#   Zparametrizer<   r2   r6   r9   Z
single_cpur;   r>   r!   r!   r!   r"   <module>   s"    


#

