a
    j=ic                     @   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   s2  | }t |tdt|d }ttto4t| j	dk |
 }W d    n1 sV0    Y  tt|j}t|tjrtj|}|j|_tj||dd nt|tjr|jrt||j	d}tj||dd nZt|tjrtj||j	d}t|j	r| }tj||dd n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)   n/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/pandas/tests/base/test_unique.pytest_unique   s,    &
r+   null_objc                 C   s  |}t |std n6t|dk r0td nt|tjrNtd|  d |j}| |dd< t|}t	
|tdt|d }|||jd}tttot|jd	k | }W d    n1 s0    Y  t|j}d
d |D }| g| }	t|tjr,|jr,t|	|jd}
tj||
dd nht|tjrxtj|	|jd}
t|jrf| }|
 }
tj||
dd n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   Zisnull).0valr)   r)   r*   
<listcomp>E       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&   Zunique_values_rawZunique_values_not_nullr'   r(   r)   r)   r*   test_unique_null+   s>    &
r;   c                 C   s|   | }t |tdt|d }ttto4t| j	dk t|
 }W d    n1 sZ0    Y  |jdd|ksxJ 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    *r?   c                 C   s  |}t |std nt|tjr6td|  d |j}| |dd< t|}t	|t
dt|d }|||jd}t|tjr| t|jksJ |jdd	t|jd ksJ ntttot|jd
k t| }W d    n1 s0    Y  tttot|jd
k, | td|d ks:J W d    n1 sP0    Y  tttort|jd
k, |jdd	td|ksJ W d    n1 s0    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   ZCategoricalIndexr>   
categoriesr   r   r   r   r   r   max)r,   r$   r%   r   r9   r:   Znum_unique_valuesr)   r)   r*   test_nunique_nulla   s8     *<rB   z<Flaky in the CI. Remove once CI has a single build: GH 44584F)reasonstrictc                 C   sh   d}| |gd }|  }t|tjrHtjdgtd}tj||dd ntjdgtd}t	|| d S )Nu   r0   r   Tr	   )
r   r   r   r   objectr   r   r   r"   r#   )Zindex_or_seriesZuvalr%   r&   r(   r)   r)   r*   test_unique_bad_unicode   s    rF   r=   Tc                 C   s@   t ddt jtjd t jg}|| }| r4|dks<nds<J d S )Nyesr      )r   ZSeriesZNAr   nanZNaTr>   )r=   Zserresr)   r)   r*   test_nunique_dropna   s    
rK   )numpyr   r5   Zpandas.compatr   Zpandas.errorsr   Zpandas.core.dtypes.commonr   Zpandasr   Zpandas._testingZ_testingr   Zpandas.core.apir   Zpandas.tests.base.commonr   r+   markZparametrizerI   r;   r?   rB   Z
single_cpuZxfailrF   rK   r)   r)   r)   r*   <module>   s*   
*
$