o
    i                     @   s   d dl Zd dlZd dlmZ d dlmZ d dlmZ d dl	Z
d dlmZ d dlmZ d dlmZ dd Z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ejjddddd Zejdddgdd ZdS )    N)pa_version_under2p0)PerformanceWarning)is_datetime64tz_dtype)NumericIndex)allow_na_opsc                 C   s4  | }t |tdt|d }tttot| j	dk |
 }W d    n1 s+w   Y  tt|j}t|tjrRtj|}|j|_tj||dd d S t|tjrl|jrlt||j	d}tj||dd d S t|tjrtj||j	d}t|j	r| }tj||dd d S t |}t|| d S )N   string[pyarrow]Texactdtype)nprepeatrangelentmmaybe_produces_warningr   r   strr   uniquelistdictfromkeysvalues
isinstancepd
MultiIndexfrom_tuplesnamesassert_index_equalIndex(_is_backward_compat_public_numeric_indexr   r   	normalizearrayassert_numpy_array_equal)index_or_series_objobjresultunique_valuesexpected r)   X/var/www/edux/Edux_v2/venv/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ttoSt|jd	k | }W d    n1 sdw   Y  t|j}d
d |D }| g| }	t|tjr|jrt|	|jd}
tj||
dd d S t|tjrtj|	|jd}
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   r   c                 S   s   g | ]	}t |s|qS r)   )r   isnull).0valr)   r)   r*   
<listcomp>E   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!   r"   r#   )r,   r$   r%   r   klassrepeated_valuesr&   unique_values_rawunique_values_not_nullr'   r(   r)   r)   r*   test_unique_null+   s@   


r=   c                 C   s|   | }t |tdt|d }tttot| j	dk t|
 }W d    n1 s-w   Y  |jdd|ks<J d S )Nr   r   Fdropna)r   r   r   r   r   r   r   r   r   r   r   nunique)r$   r%   r(   r)   r)   r*   test_nuniqueV   s   rA   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toit|jd
k t| }W d    n1 s|w   Y  tttot|jd
k | td|d ksJ W d    n1 sw   Y  tttot|jd
k |jdd	td|ksJ W d    d S 1 sw   Y  d S )Nr-   r.   r/   r   r0   r   r   Fr>   r   )r   r5   r6   r   r   r   r7   r8   r   r   r   r   r   CategoricalIndexr@   
categoriesr   r   r   r   r   r   max)r,   r$   r%   r   r9   r:   num_unique_valuesr)   r)   r*   test_nunique_nulla   s>   ""rF   z<Flaky in the CI. Remove once CI has a single build: GH 44584F)reasonstrictc                 C   sj   d}| |g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   r0   r   Tr	   )
r   r   r   r   objectr   r   r   r"   r#   )index_or_seriesuvalr%   r&   r(   r)   r)   r*   test_unique_bad_unicode   s   rL   r?   Tc                 C   s>   t ddt jtjd t jg}|| }| r|dksJ d S d S )Nyesr   )r   SeriesNAr   nanNaTr@   )r?   serresr)   r)   r*   test_nunique_dropna   s   
rT   )numpyr   r5   pandas.compatr   pandas.errorsr   pandas.core.dtypes.commonr   pandasr   pandas._testing_testingr   pandas.core.apir   pandas.tests.base.commonr   r+   markparametrizerP   r=   rA   rF   
single_cpuxfailrL   rT   r)   r)   r)   r*   <module>   s,    
*
$