a
    Of0                    @   s  d dl m Z  d dlZd dlZd dlZd dlmZmZ	 d dl
mZmZmZmZmZ d dlmZ d dlZd dlmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% d dl&m'Z( d dl)m*  m+Z d dl,m-Z-m.Z. d dl/m*  m0Z1 G dd	 d	Z2G d
d dZ3dd Z4G dd dZ5G dd dZ6G dd dZ7G dd dZ8G dd dZ9G dd dZ:G dd dZ;ej<=dej>ej>gdd Z?dS )    )datetimeN)algos	hashtable)is_bool_dtypeis_complex_dtypeis_float_dtypeis_integer_dtypeis_object_dtype)CategoricalDtype)CategoricalCategoricalIndex	DataFrameDatetimeIndexIndexIntervalIndex
MultiIndexNaTPeriodPeriodIndexSeries	Timedelta	Timestampcut
date_rangetimedelta_rangeto_datetimeto_timedelta)DatetimeArrayTimedeltaArrayc                   @   sd  e Zd Zdd Zejdddgdd Zdd	 Zd
d Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zejdg dg dg dfg dg dg dfg d g d!g d"fgd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zejdddgd5d6 Zejdddgd7d8 Zd9d: Zejd;ejg d<d=d>ejg d?d@d>ejg dAdBd>gdCdD ZejdEejg dFd=d>dGfejg dHd=d>dIfejg dJd@d>dKfejg dLd@d>dIfejg dMe d>dNfejg dOe d>dPfejg dQe d>dRfgdSdT Z!ejdddgejjdUejg dVe d>ejdWdNge d>fe"jdXdIej#dXgdYd>e"jdXdIgdYd>fgdZd[gd\d]d^ Z$ejdg d_ejg d`e%dad>ejdNej#dWge d>fdNej#dWdNgejg d`e%dad>ejdNej#dWge d>fgdbdc Z&ejdg ddejg dFe%dad>ejdIej#dXgded>fdIej#dIdXgejg dFe%dad>ejdIej#dXgej'd>fgdfdg Z(ejde)e*g dhejg diej+d>e,dNdWgdNdWgdjdkfe-e*g dhejg diej+d>e,dNdWgdNdWgdjdkfe-e.dldlgdmdnejdGdGgej+d>e.dlgdmdnfgdodp Z/dqdr Z0dsS )tTestFactorizec                 C   s   g d}d}t jt|d t|\}}W d    n1 s>0    Y  tjg dtjd}t || tjg dt	d}t || d S )N)             @      ?0factorize with argument that is not not a Seriesmatch)r   r    r!   dtype)      ?        y       @        r"   )
tmassert_produces_warningFutureWarningr   	factorizenparrayintpassert_numpy_array_equalobject)selfr.   msglabelsuniquesZexpected_labelsexpected_uniques r7   P/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/test_algos.pytest_factorize_complex4   s    ,z$TestFactorize.test_factorize_complexsortTFc           
         s   |}|j |d\}}t}t|tr(tj}| }|jtjkrH|	tj
}||}t|trx|jtkrx|jtkrx|	t}|r| }t|  fdd|D }	tj|	tjd}	t||	 tj||dd d S )Nr:   c                    s   g | ]}  |qS r7   )index).0valZexpected_uniques_listr7   r8   
<listcomp>[       z0TestFactorize.test_factorize.<locals>.<listcomp>r&   Texact)r,   r   
isinstancer   from_tuplesuniquer'   r-   Zfloat16astypefloat32boolr1   Zsort_valueslistasarrayr/   r)   r0   assert_index_equal)
r2   Zindex_or_series_objr:   objZresult_codesZresult_uniquesconstructorZexpected_arrr6   expected_codesr7   r?   r8   test_factorizeB   s.    

zTestFactorize.test_factorizec                 C   sl   t dddt jg}t|}|jdd\}}t jg dt jd}tddt jg}t|| t	|| d S )	Nr    r!   Fuse_na_sentinelr   r    r   r!   r&         ?       @)
r-   r.   nanr   r,   r/   r   r)   r0   rL   )r2   valuessercodesr5   rO   r6   r7   r7   r8   +test_series_factorize_use_na_sentinel_falsea   s    z9TestFactorize.test_series_factorize_use_na_sentinel_falsec                 C   s  t jg dtd}t|\}}t|t jg dtd tj|dd\}}t jg dt jd}t|| t jg dtd}t|| t jdt jdd d d }t|\}}t jg d	t jd}t|| t jg d
|j	d}t|| tj|dd\}}t jg d
t jd}t|| t jg d	|j	d}t|| t dd d d }t|\}}t jg d	t jd}t|| t jg d|j	d}t|| tj|dd\}}t jg d
t jd}t|| t jg d|j	d}t|| d S )N)abr\   r[   r[   cr]   r]   r&   r[   r\   r]   Tr;   )r   r    r    r   r   r!   r!   r!      )r   r    r!         )rb   ra   r!   r    r         @)      @      @rU   rT           )rf   rT   rU   re   rd   )
r-   r.   r1   r   r,   r)   r0   r/   aranger'   )r2   itemsrY   r5   exparrr7   r7   r8   
test_basicm   s<    zTestFactorize.test_basicc                 C   s   t ddtjddtjg}t|\}}tjg dtjd}t	|| t
dddtjg}t|| tj|dd\}}tjg dtjd}t	|| t
dtjddg}t|| d S )	NABgQ	@)r   r   r`   r    r!   ra   r&   Tr;   )r!   r!   r`   ra   r   r    )r   r-   rV   infr   r,   r.   r/   r)   r0   r   rL   )r2   xrY   r5   ri   r7   r7   r8   
test_mixed   s    zTestFactorize.test_mixedc                 C   s   t d}t d}t||||||g}t|\}}tjg dtjd}t|| t	||g}t
|| tj|dd\}}tjg dtjd}t|| t	||g}t
|| d S )Nz20130101 09:00:00.0000420130101r   r   r   r    r    r   r&   Tr;   )r    r    r    r   r   r    )r   r   r   r,   r-   r.   r/   r)   r0   r   rL   r2   Zv1Zv2ro   rY   r5   ri   r7   r7   r8   test_factorize_datetime64   s    z'TestFactorize.test_factorize_datetime64c                 C   s   t ddd}t ddd}t||||||g}t|\}}tjg dtjd}t|| t	|t
||g tj|dd\}}tjg dtjd}t|| t	|t
||g d S )	NZ201302MfreqZ201303rr   r&   Tr;   )r   r   r   r,   r-   r.   r/   r)   r0   rL   r   rs   r7   r7   r8   test_factorize_period   s    z#TestFactorize.test_factorize_periodc                 C   s   t d}t d}t|||||||g}t|\}}tjg dtjd}t|| t	|t ||g tj|dd\}}tjg dtjd}t|| t	|t ||g d S )Nz1 day 1 min1 day)r   r    r   r   r    r    r   r&   Tr;   )r    r   r    r    r   r   r    )
r   r   r   r,   r-   r.   r/   r)   r0   rL   rs   r7   r7   r8   test_factorize_timedelta   s    z&TestFactorize.test_factorize_timedeltac                 C   s   t jdddt jgdd}tt|}dD ]h}|j||d}t jddd|gt jd}tt|tt|kspJ t	
t|||k t	
|| q*d S )Nr    r!   Or&   )r`      )na_sentinelr   )r-   r.   rV   htObjectFactorizerlenr,   r/   setr)   r0   pdisna)r2   keyrizerr}   idsexpectedr7   r7   r8   test_factorize_nan   s    z TestFactorize.test_factorize_nanc                 C   s   t jg ddd}t g d}tt|}|j||d}t jg dt jd}t|| t jg ddd}t|j	
 | d S )N)r    r!   ra   r    r    r   int64r&   )FFFFFT)mask)r   r    r!   r   r   r`   r    r!   ra   )r-   r.   r~   ZInt64Factorizerr   r,   r/   r)   r0   r5   to_array)r2   datar   r   resultr   r6   r7   r7   r8   test_factorizer_with_mask   s    z'TestFactorize.test_factorizer_with_maskc                 C   s|   t ddddt jg}tt|}||t}t jg dt j	d}t
|| t jg dtd}t
|j | d S )Nr    r!   ra   )r   r    r!   r   r`   r&   r   )r-   r.   rV   r~   r   r   r,   rG   r1   r/   r)   r0   r5   r   )r2   r   r   r   r   r6   r7   r7   r8   test_factorizer_object_with_nan   s    z-TestFactorize.test_factorizer_object_with_nanz&data, expected_codes, expected_uniques)r    r    r    r!   r   r   r   nonsense)r   r    r!   r    ra   )r   r   r   r   )r   r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r    r!   r    )r   r   r   c                 C   sv   d}t jt|d t|\}}W d    n1 s60    Y  t |tj|tjd t	j
|td}t || d S )Nr#   r$   r&   )r)   r*   r+   r   r,   r0   r-   r.   r/   comZasarray_tuplesafer1   )r2   r   rO   r6   r3   rY   r5   Zexpected_uniques_arrayr7   r7   r8   test_factorize_tuple_list   s    ,z'TestFactorize.test_factorize_tuple_listc                 C   sj   t jdd tdD td}d}tjt|d( tj|d d d dd	 W d    n1 s\0    Y  d S )
Nc                 S   s   g | ]}t |qS r7   )complexr=   ir7   r7   r8   r@     rA   z6TestFactorize.test_complex_sorting.<locals>.<listcomp>   r&   z,'[<>]' not supported between instances of .*r$   r`   Tr;   )	r-   r.   ranger1   pytestraises	TypeErrorr   r,   )r2   Zx17r3   r7   r7   r8   test_complex_sorting  s    z"TestFactorize.test_complex_sortingc                 C   sf   |}t jg d|d}t jg dt jd}t jddg|d}t|\}}t|| t|| d S )N)r    r!   r!   r    r&   )r   r    r    r   r    r!   )r-   r.   r/   r   r,   r)   r0   )r2   Zany_real_numpy_dtyper'   r   rO   r6   rY   r5   r7   r7   r8   test_numeric_dtype_factorize  s    z*TestFactorize.test_numeric_dtype_factorizec                 C   sr   t jg dt jd}|j|d t jg dt jd}t jg dt jd}t|\}}t|| t|| d S )N)rT       חArT   :0yE>r   rT   r&   write)r   r    r   r!   r    r   )rT   r   r   )	r-   r.   float64setflagsr/   r   r,   r)   r0   r2   writabler   rO   r6   rY   r5   r7   r7   r8   test_float64_factorize&  s    z$TestFactorize.test_float64_factorizec                 C   sr   t jg dt jd}|j|d t jg dt jd}t jddgt jd}t|\}}t|| t|| d S )N)    r    r   r&   r   r   r    r   r   r    )	r-   r.   uint64r   r/   r   r,   r)   r0   r   r7   r7   r8   test_uint64_factorize0  s    z#TestFactorize.test_uint64_factorizec                 C   sr   t jg dt jd}|j|d t jg dt jd}t jddgt jd}t|\}}t|| t|| d S )N)             r   r&   r   r   r   r   )	r-   r.   r   r   r/   r   r,   r)   r0   r   r7   r7   r8   test_int64_factorize:  s    z"TestFactorize.test_int64_factorizec                 C   sn   t jg dtd}|j|d t jg dt jd}t jg dtd}t|\}}t|| t|| d S )N)r[   r]   r[   r\   r]   r&   r   )r   r    r   r!   r    r[   r]   r\   )	r-   r.   r1   r   r/   r   r,   r)   r0   r   r7   r7   r8   test_string_factorizeD  s    z#TestFactorize.test_string_factorizec              	   C   s|   t jddd t jddtdgtd}|j|d t jg dt jd}t jg dtd}t|\}}t	
|| t	
|| d S )Nr[   r]   r\   r&   r   )r   r    r`   r`   r   r!   r`   r    r   )r-   r.   rV   r   r1   r   r/   r   r,   r)   r0   r   r7   r7   r8   test_object_factorizeN  s     z#TestFactorize.test_object_factorizec                 C   sn   t jt dgdd}|j|d t jdgt jd}t jdgdd}t|\}}t|| t|| d S )Nz2020-01-01T00:00:00.000M8[ns]r&   r   r   z2020-01-01T00:00:00.000000000zdatetime64[ns])	r-   r.   
datetime64r   r/   r   r,   r)   r0   r   r7   r7   r8   test_datetime64_factorizeX  s    z'TestFactorize.test_datetime64_factorizec                 C   s   t jtd}tjdtjd|f}tj||d}t	
|d |d  t	j|d |d dd |j|d}t	
|d |d  t	j|d |d dd d S )N
   r&   r;   r   r    TrB   r   
RangeIndexZ
from_ranger   r-   rg   r/   r   r,   r)   r0   rL   )r2   r:   rir   r   r7   r7   r8   test_factorize_rangeindexe  s    z'TestFactorize.test_factorize_rangeindexc                 C   s   t jtd}tjdtjd|f}|d d d }|d |f}|rf|d d d d |d d d d f}tj||d}t	
|d |d  t	j|d |d dd |j|d}t	
|d |d  t	j|d |d dd d S )	Nr   r&   r`   r   r    r;   TrB   r   )r2   r:   r   r   Zri2r   r7   r7   r8   $test_factorize_rangeindex_decreasings  s    $z2TestFactorize.test_factorize_rangeindex_decreasingc                 C   s   t jg dt jd}tjtdd tj|dd W d    n1 sF0    Y  t	d t| W d    n1 sz0    Y  d S )N)            r    r   r&   zgot an unexpected keywordr$   T)orderF)
r-   r.   r   r   r   r   r   r,   r)   r*   )r2   r   r7   r7   r8   test_deprecate_order  s
    ,z"TestFactorize.test_deprecate_orderr   r   u8r&   )r   r    r   i8)__nan__foor   r1   c                 C   sJ   t |\}}|ddg }tjg dtjd}t|| t|| d S )Nr   r    r   r&   )r   r,   r-   r.   r/   r)   r0   )r2   r   rY   r5   r6   rO   r7   r7   r8   ,test_parametrized_factorize_na_value_default  s
    
z:TestFactorize.test_parametrized_factorize_na_value_defaultzdata, na_valuerS   r   )r    r   r    r!   r    )r   r    r   r   r   )r    r   r    r   )r[    r[   r\   r[   )r7   r[   r    r7   r[   r!   r7   )r   r7   r   r   r   c                 C   sN   t j||d\}}|ddg }tjg dtjd}t|| t|| d S )N)na_valuer    ra   )r`   r   r`   r    r&   )r   Zfactorize_arrayr-   r.   r/   r)   r0   )r2   r   r   rY   r5   r6   rO   r7   r7   r8   $test_parametrized_factorize_na_value  s
    z2TestFactorize.test_parametrized_factorize_na_valuezdata, uniques)r\   r[   Nr\   r\   r!   ZInt64Znumpy_arrayZextension_array)r   c                 C   s   t j||dd\}}|r8tjg dtjd}t |}ntjg dtjd}|}t|| t|tj	rvt|| nt
|| d S )NT)r:   rR   )r    r   r`   r    r&   )r   r    r`   r   )r   r,   r-   r.   r/   Z	safe_sortr)   r0   rD   ndarrayassert_extension_array_equal)r2   r:   r   r5   rY   rO   r6   r7   r7   r8   test_factorize_use_na_sentinel  s    z,TestFactorize.test_factorize_use_na_sentinel)r[   Nr\   r[   r   r    r!   r   r/   c                 C   s@   t jtj|tddd\}}tj||dd tj||dd d S )Nr&   FrQ   TZ
strict_nan)r   r,   r-   r.   r1   r)   r0   r2   r   rO   r6   rY   r5   r7   r7   r8   +test_object_factorize_use_na_sentinel_false  s
    
z9TestFactorize.test_object_factorize_use_na_sentinel_false)r    Nr    r!   r{   c                 C   sh   d}t jt|d" tj|dd\}}W d    n1 s:0    Y  t j||dd t j||dd d S )Nr#   r$   FrQ   Tr   )r)   r*   r+   r   r,   r0   )r2   r   rO   r6   r3   rY   r5   r7   r7   r8   (test_int_factorize_use_na_sentinel_false  s
    0z6TestFactorize.test_int_factorize_use_na_sentinel_false)r[   r[   r\   )r   r   r    category)
categoriesr'   Z2017
US/Easterntzc                 C   s*   t |\}}t|| t|| d S )N)r   r,   r)   r0   rL   r   r7   r7   r8   test_factorize_mixed_values  s    z)TestFactorize.test_factorize_mixed_valuesc                 C   s   t dtjdg|}t dtjdg|}t||}| \}}|jd| dksZJ td|}t|| || }| \}	}
|
jd| dksJ t|	d	|	d	}| \}}|jd| d
ksJ d S )N
2016-01-01z
2015-10-11z
2016-01-02z
2015-10-15zinterval[datetime64[z	], right]r   zinterval[timedelta64[
US/Pacificz, US/Pacific], right])
r   r-   rV   as_unitr   from_arraysr,   r'   r   Ztz_localize)r2   unitleftrightidxrY   catstsZidx2Zcodes2Zcats2Zidx3Zcodes3Zcats3r7   r7   r8    test_factorize_interval_non_nano  s    z.TestFactorize.test_factorize_interval_non_nanoN)1__name__
__module____qualname__r9   r   markparametrizerP   rZ   rk   rp   rt   rx   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r-   r.   r   r1   r   r   rV   r   r'   r   r   r   r   r   r/   r   r   r   r   r   r7   r7   r7   r8   r   3   s   
'








	







r   c                	   @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zejd!d"ejd#d$ged%fd&ejd'ged%fgd(d) Zd*d+ Zd,d- Zd.d/ Zejd0ejegd1d2 Zd3d4 Zd5d6 Z d7S )8
TestUniquec                 C   s6   t jdjdddd}t|}t|t js2J d S )Nr!   r   d   2   size)r-   randomdefault_rngintegersr   rF   rD   r   r2   rj   r   r7   r7   r8   	test_ints0  s    
zTestUnique.test_intsc                 C   s<   t jdjddddd}t|}t|t js8J d S )Nr!   r   r   r   r   r{   )	r-   r   r   r   rG   r   rF   rD   r   r   r7   r7   r8   test_objects6  s    
zTestUnique.test_objectsc                 C   s2   t jg dtd}tdD ]}tt| qd S )N)rl   rm   CDEr&     )r-   r.   r1   r   r   r   rF   )r2   lstr   r7   r7   r8   test_object_refcount_bug<  s    z#TestUnique.test_object_refcount_bugc                 C   sb   t tddttddg}|j}|  |d}t	|}|  t
|| d S )Nr_   r!   )r   r   r-   rg   repeattilerW   r:   r   rF   r)   assert_almost_equal)r2   Zmindexr   r   r7   r7   r8   test_on_index_objectA  s     

zTestUnique.test_on_index_objectc                 C   sD  |t jt j v r"g d}ddg}nt|r<g d}ddg}nt|rVg d}ddg}n~t|rtddtddtddg}tddtddg}nDt|rg d}dd	g}n*t|rg d
}ddg}ng d}ddg}t	||d
 }tj||d}|t jv r|t}|jjdv r4t|ttfs*J t|}t || d S )N)r    r!   r!   r    r!   rT   rU   r   TTFTF)rl   rm   rm   rl   rm   r&   )mru   )r)   ZBYTES_DTYPESZSTRING_DTYPESr   r   r   r   r   r	   r   rF   r-   r.   rG   r1   r'   kindrD   r   r   r0   )r2   Zany_numpy_dtyper   r5   r   r   r7   r7   r8   test_dtype_preservationO  s8    






z"TestUnique.test_dtype_preservationc                 C   s   t jddgdd}tg d}t|}t|| |j|jksDJ t|}t|}t|| |j|jksrJ |j	}t|}t|| |j|jksJ d S )N2015-01-03T00:00:00.0000000002015-01-01T00:00:00.000000000r   r&   )r  r  r  )
r-   r.   r   r   rF   r)   r0   r'   r   rW   )r2   r   Zdt_indexr   srj   r7   r7   r8   $test_datetime64_dtype_array_returnedt  s(    


z/TestUnique.test_datetime64_dtype_array_returnedc                 C   s>   t jg ddd}t|}t jddgdd}t|| d S )N2000r  2001zdatetime64[s]r&   r  r  r-   r.   r   rF   r)   r0   r2   r[   r   r   r7   r7   r8   test_datetime_non_ns  s    
zTestUnique.test_datetime_non_nsc                 C   s>   t jg ddd}t|}t jddgdd}t|| d S )Nr  ztimedelta64[s]r&   i  i  r  r	  r7   r7   r8   test_timedelta_non_ns  s    
z TestUnique.test_timedelta_non_nsc                 C   s   t jg ddd}tg d}t|}t|| |j|jksDJ t|}t|}t|| |j|jksrJ |j	}t|}t|| |j|jksJ d S )N)y  n  '  m8[ns]r&   )r  r  r  r  r  )
r-   r.   r   r   rF   r)   r0   r'   r   rW   )r2   r   Ztd_indexr   r  rj   r7   r7   r8   %test_timedelta64_dtype_array_returned  s    


z0TestUnique.test_timedelta64_dtype_array_returnedc                 C   s<   t g dtjd}tjg dtjd}tt|| d S )N)r    r!   r   r   r&   )r    r!   r   )r   r-   r   r.   r)   r0   r   rF   )r2   r  ri   r7   r7   r8   test_uint64_overflow  s    zTestUnique.test_uint64_overflowc                 C   sH   dt jddg}tt j|td}t jdt jdgtd}t|| d S )Nr[   r]   r&   )r-   rV   r   rF   r.   r1   r)   r0   )r2   Zduplicated_itemsr   r   r7   r7   r8   test_nan_in_object_array  s    z#TestUnique.test_nan_in_object_arrayc                 C   s  t td}t tdtddd}t td}| }t|| t|}t|| t tddd}| }t|| t|}t|| tt tddd}| }t|| t|}t|| tt tdtdd	}t|}| }t	|| t|}t	|| d S )
NZbacabcTr   orderedZbaabcr  r   namer   )
r   rJ   rF   r)   assert_categorical_equalr   r   r   r   rL   )r2   r   Z
expected_or]   r   r  cir7   r7   r8   test_categorical  s.    



zTestUnique.test_categoricalc                 C   s   t tdddtdddg|}t|}| }|d d j}t|| | }|d d }t|| t	|}|d d j}t|| t	|}|d d }t|| d S )N20160101r   r   r    )
r   r   r   r   rF   _datar)   r   rL   r   )r2   r   dtirX   r   r   r7   r7   r8   test_datetime64tz_aware  s(    



z"TestUnique.test_datetime64tz_awarec                 C   s   t tg d}t|tjg ddd t tdgdgd  }t|tjddgdd d}tjt|d	 t t	d
}W d    n1 s0    Y  tjg dt
d}t|| t ttt	d
}tt	d}t|| d S )N)r!   r    ra   ra   )r!   r    ra   r   r&   r!   r    r_   z5unique with argument that is not not a Series, Index,r$   Zaabcr^   r  )r   rF   r   r)   r0   r-   r.   r*   r+   rJ   r1   r   r  )r2   r   r3   r   r7   r7   r8   test_order_of_appearance  s    ,z#TestUnique.test_order_of_appearancec                 C   sN   t tdtdgj|}t|}tjdgd| dd}t	|| d S )Nr  z2016-01-01T00:00:00.000000000zM8[]r&   )
r   r   dtr   r   rF   r-   r.   r)   r0   )r2   r   rX   r   r   r7   r7   r8   test_order_of_appearance_dt64  s    
z(TestUnique.test_order_of_appearance_dt64c                 C   sT   t tdddtdddg|}t|}t dgd| dd d}t|| d S )Nr  r   r   z2016-01-01 00:00:00zdatetime64[z, US/Eastern])r'   rw   )r   r   r   r   rF   r)   rL   )r2   r   r  r   r   r7   r7   r8   test_order_of_appearance_dt64tz  s    


z*TestUnique.test_order_of_appearance_dt64tzzarg ,expected)1r&  2r&  r'  r&   )r   r   c                 C   sL   d}t jt|d t|}W d    n1 s20    Y  t || d S N-unique with argument that is not not a Seriesr$   r)   r*   r+   r   rF   r0   )r2   argr   r3   r   r7   r7   r8   test_tuple_with_strings(  s    	(z"TestUnique.test_tuple_with_stringsc                 C   sB   t jdd gtd}t|}t jdd gtd}tj||dd d S )Nr   r&   Tr   )r-   r.   r1   r   rF   r)   r0   r2   rj   r   r   r7   r7   r8   test_obj_none_preservation6  s    
z%TestUnique.test_obj_none_preservationc                 C   s4   t ddg}t|}t dg}t|| d S )Ng       rf   r  r	  r7   r7   r8   test_signed_zero>  s    
zTestUnique.test_signed_zeroc                 C   s~   t dt ddd }t dt ddd }||ks<J ||ksHJ t||g}t|}ttjg}t	|| d S )Nd=Q          r            )
structunpackpackr-   r.   r   rF   rV   r)   r0   )r2   NAN1NAN2r[   r   r   r7   r7   r8   test_different_nansE  s    
zTestUnique.test_different_nansel_typec           	      C   s   d}d}t dt d|d }t dt d|d }||ksDJ ||ksPJ tj||g|d}t|}|jdkszJ t dt d|d d }||ksJ d S )Nl         r3  r0  r1  r   r&   r    )r4  r5  r6  r-   r.   r   rF   r   )	r2   r:  Zbits_for_nan1Zbits_for_nan2r7  r8  r[   r   Zresult_nan_bitsr7   r7   r8   test_first_nan_keptQ  s    
zTestUnique.test_first_nan_keptc                 C   sZ   ||u rd S t j||gtd}t|}|jdks6J |d |u sFJ |d |u sVJ d S )Nr&   r!   r   r    )r-   r.   r1   r   rF   r   )r2   Zunique_nulls_fixtureZunique_nulls_fixture2r[   r   r7   r7   r8   test_do_not_mangle_na_valuesb  s    
z'TestUnique.test_do_not_mangle_na_valuesc                 C   sH   t dtjdgd |d}t|}tjdtjdg|d}t|| d S )Nr    r!   ra   r&   )r   r   ZNArF   r.   r)   r   )r2   Zany_numeric_ea_dtyperX   r   r   r7   r7   r8   test_unique_maskedl  s    
zTestUnique.test_unique_maskedN)!r   r   r   r   r   r   r   r   r  r
  r  r  r  r  r  r   r!  r$  r%  r   r   r   r-   r.   r1   r,  r.  r/  r9  r   r;  r<  r=  r7   r7   r7   r8   r   /  s<   %)


r   c                 C   sB   | t jdddd}t|}tt|}||ks>J d S )Nr!   r   r|      )r-   r   r   r   r   Znunique_intsr   rF   )Zindex_or_series_or_arrayrW   r   r   r7   r7   r8   test_nunique_intst  s    
r?  c                   @   s,  e Zd Zdd Zdd Zdd Zejdg dejd	g d
dd Z	dd Z
ejd	g ddd Zejd	g ddd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zejd&g eed'eg gd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Z d6S )7TestIsinc                 C   s   d}t jt|d tdd W d    n1 s40    Y  t jt|d tddg W d    n1 sp0    Y  t jt|d tdgd W d    n1 s0    Y  d S )NzOonly list-like objects are allowed to be passed to isin\(\), you passed a `int`r$   r    )r   r   r   r   isin)r2   r3   r7   r7   r8   test_invalid}  s    *,zTestIsin.test_invalidc                 C   sD  d}t jt|d" tddgdg}W d    n1 s:0    Y  tddg}t || ttddgdg}tddg}t || ttddgdg}tddg}t || ttddgtdg}tddg}t || ttddgdh}tddg}t || t jt|d" tddgdg}W d    n1 s\0    Y  tddg}t || ttddgtdg}tddg}t || ttddgdh}tddg}t || t jt|d" tddgdg}W d    n1 s0    Y  tddg}t || d S )	N+isin with argument that is not not a Seriesr$   r    r!   TFr[   r\   )	r)   r*   r+   r   rA  r-   r.   r0   r   )r2   r3   r   r   r7   r7   r8   rk     s>    022zTestIsin.test_basicc                 C   s8  t dddj}t||d g}tg d}t|| t||dd }tg d}t|| t|t|dd }tg d}t|| t	dddj}t||d g}tg d}t|| t||dd }tg d}t|| t|t|dd }tg d}t|| d S )	Nrq   ra   periodsr   TFFr!   r   ry   )
r   rW   r   rA  r-   r.   r)   r0   r   r   r-  r7   r7   r8   test_i8  s(    zTestIsin.test_i8dtype1)r  r   M8[ns, UTC]z	period[D]r'   )r   Zf8r   c                 C   s`   t dddj}t|dj|}|d|}t||}tj	|j
td}t|| d S )N
2013-01-01ra   rD  r   r&   )r   _valuesr   viewr.   rG   r   rA  r-   zerosshaperI   r)   r0   )r2   r'   rH  dtarj   compsr   r   r7   r7   r8   +test_isin_datetimelike_values_numeric_comps  s    z4TestIsin.test_isin_datetimelike_values_numeric_compsc                 C   sV   t ddddj}t||dd }tjt|td}d|d< d|d	< t	|| d S )
NZ20000101i r  )rE  rw   r   r!   r&   Tr    )
r   rW   r   rA  r-   rM  r   rI   r)   r0   r2   r  r   r   r7   r7   r8   
test_large  s    zTestIsin.test_largec                 C   s\   t dddj}t|dj|}t|d< t|tg}tjg dt	d}t
|| d S )NrJ  ra   rD  r   r   rF  r&   )r   rK  r   rL  r.   r   r   rA  r-   rI   r)   r0   )r2   r'   rO  rj   r   r   r7   r7   r8   test_isin_datetimelike_all_nat  s    z'TestIsin.test_isin_datetimelike_all_nat)r  r   rI  c           	      C   s   t dddj}t|dj|}dd |D }d}tjt|d t	||}W d    n1 sf0    Y  |
 s|J tj|td	}tjt|d t	||}W d    n1 s0    Y  |
 sJ d S )
NrJ  ra   rD  r   c                 S   s   g | ]}t |qS r7   )str)r=   ro   r7   r7   r8   r@     rA   zFTestIsin.test_isin_datetimelike_strings_deprecated.<locals>.<listcomp>z2The behavior of 'isin' with dtype=.* is deprecatedr$   r&   )r   rK  r   rL  r.   r)   r*   r+   r   rA  allr-   rU  )	r2   r'   rO  rj   valsr3   resZvals2Zres2r7   r7   r8   )test_isin_datetimelike_strings_deprecated  s    **z2TestIsin.test_isin_datetimelike_strings_deprecatedc                 C   sP   t dddd}t|}t|d< t|jtg}tjg dtd}t	
|| d S )Nr   ra   UTCrE  r   r   rF  r&   )r   r   r   r   rA  rK  r-   r.   rI   r)   r0   )r2   r  rX   rX  ri   r7   r7   r8   test_isin_dt64tz_with_nat  s    z"TestIsin.test_isin_dt64tz_with_natc                 C   sv   t g d}g d}ttdg||}ttdgt ddg|}t g d}t||}t|| d S Nr   r^   r    r   )TTFT)	r-   r.   r   r   
from_codesr   rA  r)   r0   )r2   rW  r   ZSdZStr   r   r7   r7   r8   test_categorical_from_codes
  s     z$TestIsin.test_categorical_from_codesc                 C   sn   t g d}g d}tdg||}tdgt ddg|}t g d}t||}t|| d S r]  )r-   r.   r   r^  r   rA  r)   r0   )r2   rW  r   catotherr   r   r7   r7   r8   test_categorical_isin  s    zTestIsin.test_categorical_isinc                 C   sj   t jg}t jg}t dg}d}tjt|d t||}W d    n1 sP0    Y  t|| d S )NTrC  r$   )	r-   rV   r.   r)   r*   r+   r   rA  r0   r2   rP  rW   r   r3   r   r7   r7   r8   test_same_nan_is_in  s    *zTestIsin.test_same_nan_is_inc                 C   sP   t dd}t j|d< t|t t jdg}t jt|td}t	
|| d S NrT   iAB r   r    r&   )r-   r   rV   r   rA  r.   onesr   rI   r)   r0   rR  r7   r7   r8   test_same_nan_is_in_large,  s
    
z"TestIsin.test_same_nan_is_in_largec                 C   sZ   t dd}t|}t j|d< |t t jdg}tt jt|td}t	
|| d S re  )r-   r   r   rV   rA  r.   rf  r   rI   r)   assert_series_equal)r2   r  Zseriesr   r   r7   r7   r8    test_same_nan_is_in_large_series4  s    
z)TestIsin.test_same_nan_is_in_large_seriesc                 C   s   G dd d}| |  }}d}t jt|dP t t|g|gtdg t t|g|gtdg W d    n1 s0    Y  d S )Nc                   @   s"   e Zd ZedddZdd ZdS )z0TestIsin.test_same_object_is_in.<locals>.LikeNan)returnc                 S   s   dS )NFr7   )r2   ra  r7   r7   r8   __eq__D  s    z7TestIsin.test_same_object_is_in.<locals>.LikeNan.__eq__c                 S   s   dS )Nr   r7   )r2   r7   r7   r8   __hash__G  s    z9TestIsin.test_same_object_is_in.<locals>.LikeNan.__hash__N)r   r   r   rI   rk  rl  r7   r7   r7   r8   LikeNanC  s   rm  rC  r$   TF)r)   r*   r+   r0   r   rA  r-   r.   )r2   rm  r[   r\   r3   r7   r7   r8   test_same_object_is_in=  s     zTestIsin.test_same_object_is_inc                 C   s   t dg}t dg}|d |d us(J tt||}ttdg| ttj|tdtj|td}ttdg| ttj|tj	dtj|tj	d}ttdg| d S )NrV   r   Tr&   )
floatr   rA  r-   r.   r)   r0   rK   r1   r   )r2   rP  rW   r   r7   r7   r8   r9  S  s    

zTestIsin.test_different_nansc                 C   sj   ddg}dg}t ddg}d}tjt|d t||}W d    n1 sP0    Y  t|| d S )Nss*   Z42Fz2isin with argument that is not not a Series, Indexr$   )r-   r.   r)   r*   r+   r   rA  r0   rc  r7   r7   r8   test_no_castk  s    *zTestIsin.test_no_castemptyr&   c                 C   s6   t ddg}tddg}t||}t|| d S )Nr[   r\   F)r   r-   r.   r   rA  r)   r0   )r2   rs  rW  r   r   r7   r7   r8   
test_emptyv  s    zTestIsin.test_emptyc                 C   s\   t jdt jd tdgtd}t jtdgtd}t g d}t||}t|| d S )NrV                 ?r&   )FFT)	r-   r.   rV   ro  r1   r   rA  r)   r0   )r2   rP  rW  r   r   r7   r7   r8   test_different_nan_objects  s
    z#TestIsin.test_different_nan_objectsc                 C   s   t dt ddd }t dt ddd }||ks<J ||ksHJ tj||gtjd}tj|gtjd}t||}tddg}t	|| tj|gtjd}t||}tddg}t	|| d S )Nr0  r1  r2  r   r3  r&   T)
r4  r5  r6  r-   r.   r   r   rA  r)   r0   )r2   r7  r8  rj   Zlookup1r   r   Zlookup2r7   r7   r8   test_different_nans_as_float64  s    z'TestIsin.test_different_nans_as_float64c                 C   s<   t dddgi}|dg}t dddgi}t|| dS )zComparing df with int`s (1,2) with a string at isin() ("1")
        -> should not match values because int 1 is not equal str 1rW   r    r!   r&  FN)r   rA  r)   assert_frame_equalr2   Zdfr   Zexpected_falser7   r7   r8   test_isin_int_df_string_search  s    z'TestIsin.test_isin_int_df_string_searchc                 C   sH   t dtjdgi}|tjdgtd}t dddgi}t|| dS )zComparing df with nan value (np.nan,2) with a string at isin() ("NaN")
        -> should not match values because np.nan is not equal str NaNrW   r!   NaNr&   FN)r   r-   rV   rA  r.   r1   r)   rx  ry  r7   r7   r8   test_isin_nan_df_string_search  s    z'TestIsin.test_isin_nan_df_string_searchc                 C   sF   t dddgi}|tjdgtd}t dddgi}t|| dS )zComparing df with floats (1.4245,2.32441) with a string at isin() ("1.4245")
        -> should not match values because float 1.4245 is not equal str 1.4245rW   gn?g#Ed@z1.4245r&   FN)r   rA  r-   r.   r1   r)   rx  ry  r7   r7   r8    test_isin_float_df_string_search  s    z)TestIsin.test_isin_float_df_string_searchc                 C   s4   t dgtjd}|dg}t d}t|| d S )Nl   
G r&   l    
G F)r   r-   r   rA  r)   rh  r2   rX   r   r   r7   r7   r8   test_isin_unsigned_dtype  s    z!TestIsin.test_isin_unsigned_dtypeN)!r   r   r   rB  rk   rG  r   r   r   rQ  rS  rT  rY  r\  r_  rb  rd  rg  ri  rn  r9  rr  r   r1   r-   r.   rt  rv  rw  rz  r|  r}  r  r7   r7   r7   r8   r@  |  s8   )




	
r@  c                   @   s   e Zd Zdd Zdd Zdd Zdd Zej	d	e
d
gdd Zdd Zdd Zdd Zdd Zej	d	eje
dfdd Zdd Zdd ZdS )TestValueCountsc                 C   s   t jdd}t|d}d}tjt|d t	|}W d    n1 sN0    Y  g d}t
|tdd}tg d|d	d
}t| |  d S )Ni  rb   !pandas.value_counts is deprecatedr$   )gV-g}?5^Ig/$ۿgףp=
?gʡE?Tr  )r    r   r!   r    countr<   r  )r-   r   r   Zstandard_normalr   r)   r*   r+   r   value_countsr   Zfrom_breaksrG   r
   r   rh  Z
sort_index)r2   rj   factorr3   r   Zbreaksr<   r   r7   r7   r8   test_value_counts  s    
(z!TestValueCounts.test_value_countsc                 C   s   g d}d}t jt|d tj|dd}W d    n1 s>0    Y  tdgtdgdd	}t || t jt|d  tj|d
dd}W d    n1 s0    Y  td
d
gtddgdd	}t || d S )N)r    r!   ra   rb   r  r$   r    binsrb   )Zd;?rd   r  r  r!   F)r  r:   )r        @)r  rd   )	r)   r*   r+   r   r  r   r   rE   rh  )r2   r  r3   r   r   r7   r7   r8   test_value_counts_bins  s     ,.z&TestValueCounts.test_value_counts_binsc              	   C   s  d}t jt|d$ ttddg}W d    n1 s<0    Y  t|dksVJ t jt|d( tjtddgdd}W d    n1 s0    Y  t|dksJ t jt|d" ttg d}W d    n1 s0    Y  t|dksJ d}t	j
t|d\ t jt|d, tjtjd	dgtd
dd W d    n1 sR0    Y  W d    n1 sr0    Y  d S )Nr  r$   r    rT   r  )r    rT   r&  r!   z*bins argument only works with numeric datar&  r&   )r)   r*   r+   r   r  r-   r.   r   r   r   r   r   r1   )r2   Zmsg2r   r3   r7   r7   r8   test_value_counts_dtypes  s    260z(TestValueCounts.test_value_counts_dtypesc              	   C   sR  t tdtgdd}tddg}d}||fD ]j}tjt|d( t	|}tj	|dd	}W d    n1 sn0    Y  t
|d
ksJ t
|dks.J q.t tdd
idd}tjt|d t	|}W d    n1 s0    Y  t|| t tdd
idd}	tjt|d t	|}
W d    n1 s80    Y  t|
|	 d S )Nr  timedelta64[ns]r&   r   z
2014-01-01r  r$   Fdropnar    r!   z2014-01-01 00:00:00r  r  )r   r-   timedelta64r   r   r)   r*   r+   r   r  r   r   rh  )r2   tdr#  r3   rX   vcZ
vc_with_naZexp_dtZ	result_dtZexp_tdZ	result_tdr7   r7   r8   test_value_counts_nat  s"    
,(*z%TestValueCounts.test_value_counts_natr'   zM8[us]c              
   C   s   t tdddtdddtdddtdddtdddtdddg|d}| }ttdddtdddtdddg|d}t g d|dd}t|| d S )	Ni  r    i  ip  r&   ra   r!   r    r  r  )r   r   r  r   r)   rh  )r2   r'   rX   rX  Z	exp_indexri   r7   r7   r8   &test_value_counts_datetime_outofbounds  s"    





 z6TestValueCounts.test_value_counts_datetime_outofboundsc                 C   st   t ttd}| }t g dtg ddd}tj||dd |j }| }|j	 |_	tj||dd d S )NZaaabbcr  r^   r  r  TZcheck_index_type)
r   r   rJ   r  r   r)   rh  r`  Z
as_orderedr<   rR  r7   r7   r8   r    s    
z TestValueCounts.test_categoricalc                 C   s>  t ttd}tj|jd< | }t g dtg dg dddd}tj	||dd	 |jd
d}t g dtdddtjgdd}tj	||dd	 t ttddg dd}tj|jd< | }t g dtg dg ddddd}tj	||dd	 |jd
d}t g dtdddtjgg ddddd}tj	||dd	 d S )NZ
aaaaabbbccr    )rb   ra   r!   r^   r  r  r  Tr  Fr  )rb   ra   r!   r    r[   r\   r]   )r\   r[   r]   )r  r   r  )
r   r   rJ   r-   rV   Zilocr  r   r)   rh  rR  r7   r7   r8   test_categorical_nans.  sL    	z%TestValueCounts.test_categorical_nansc                 C   sZ   t ttdtddd}| }t g dtg dtddddd}tj||dd	 d S )
NZbbbaacabcdTr  )ra   r!   r    r   )r\   r[   r]   r0  r  r  r  )r   r   rJ   r  r)   rh  rR  r7   r7   r8   test_categorical_zeroesY  s    z'TestValueCounts.test_categorical_zeroesc              	   C   s  t tg djddtddgddgdd t tg djddtddgddgdd t tdgd	 dgd  d gd
  jddtd	dgtddgtddd t tdgd
 dgd	  d gd  jddtg dg ddd t tg djddtddgddgdd t tg djddtddgddgdd t tg djddtddgddgdd tg djdd}tg dg ddd}t || d S )Nr   Tr  r!   r    Fr  r  ra   r_   r&   )r_   ra   r!   )TFN)皙$@rc   rc   rc   r  )r  rc   rc   N)r  r  rc   rc   rc   Nr  )rc   r  N)r)   rh  r   r  r   r1   )r2   r   r   r7   r7   r8   test_value_counts_dropnaf  s>    ((z(TestValueCounts.test_value_counts_dropnar   c                 C   s   t dgd dgd  tjgd  }||}|jddd}t g dt tjd	d
g|ddd}t|| |jddd}t ddgt d	d
g|ddd}t|| d S )Nr    r!   ra   r_   TF)	normalizer  )g      ?g333333?g?rU   rT   r&   Z
proportionr  g333333?g?)r   r-   rV   rG   r  r)   rh  )r2   r'   r  Zs_typedr   r   r7   r7   r8   test_value_counts_normalized  s    $
z,TestValueCounts.test_value_counts_normalizedc                 C   s   t jdgt jd}tdgdgdd}d}tjt|d t|}W d    n1 sV0    Y  t	|| t jddgt
d}tddgddgdd}tjt|d t|}W d    n1 s0    Y  t	|| d S )	Nr   r&   r    r  r  r  r$   r`   )r-   r.   r   r   r)   r*   r+   r   r  rh  r1   )r2   rj   r   r3   r   r7   r7   r8   test_value_counts_uint64  s    ((z(TestValueCounts.test_value_counts_uint64c                 C   sX   t dddddt jg}t|jdd}tg dtjg ddd	d
d}t|| d S )Nra   r    r!   rb   r  )r!   r!   r    ))r  rU   )rU   re   )re   rd   zinterval[float64, right]r&   r  r  )	r-   r.   rV   r   r  r   rE   r)   rh  )r2   rW   r   r   r7   r7   r8   test_value_counts_series  s    z(TestValueCounts.test_value_counts_seriesN)r   r   r   r  r  r  r  r   r   r   r1   r  r  r  r  r  r-   r   r  r  r  r7   r7   r7   r8   r    s   
+&
r  c                   @   s$  e Zd Zdd Zejdeg dedddej	ddddej	d	g
eg d
ejg de
dejg dejdgdd Zdd Zejdeg deddgdd Zejdg dg dfg dddgfg dg dfgdd  Zejd!g d"ejg d#e
dfgd$d% Zd&S )'TestDuplicatedc                 C   s  t jddt jddt jgtd}t|}t g d}t|| tj|dd}t g d}t|| tj|dd}t g d	}t|| tj|d
d}t g d}t|| t jdtd}t	t
ddt jt jgd dt jdt jgd D ]\}}|||< qt|}d
gd }dgd }t || }t|| tj|dd}t || }t|| tj|d
d}t || }t|| d S )Nr   r    r!   r&   )FFFTFTfirstZkeeplast)TFTFFFF)TFTTFT   rb   T)r-   r.   rV   r1   r   
duplicatedr)   r0   rs  	enumeratezip)r2   keysr   r   r   tZfalsesZtruesr7   r7   r8   test_duplicated_with_nas  s:    
(



z'TestDuplicated.test_duplicated_with_nascase)
r    r!   r    r_   ra   r!   rb   r    r_      g?g@gffffff
@g@gffffff@)
      ?      ?       @       @r        @      @y      @      @r  y      @      @r  r  y      @      @)
r[   r\   r[   er]   r\   r0  r[   r  fr&   )
r    r   r       r   r   '   r    r     c           
      C   sF  t g d}t g d}||B }tj|dd}t|| tj|dd}t|| tj|dd}t|| t|t|ddfD ]L}|jdd}t|| |jdd}t|| |jdd}t|| qt|t|ddfD ]X}	|	jdd}t|t| |	jdd}t|t| |	jdd}t|t| qd S )	N
FFTFFTFTTF
TTTTFFFFFFr  r  r  Fr   r&   )	r-   r.   r   r  r)   r0   r   r   rh  )
r2   r  	exp_firstexp_last	exp_false	res_firstres_last	res_falser   r  r7   r7   r8   test_numeric_object_likes  s6    z(TestDuplicated.test_numeric_object_likesc                 C   s  g d}g d}t dd |D t dd |D t dd |D t dd |D t dd |D g}t g d	}t g d
}||B }|D ]:}tj|dd}t|| tj|dd}	t|	| tj|dd}
t|
| t|t|ddt|tdfD ]N}|jdd}t|| |jdd}	t|	| |jdd}
t|
| qt|t|ddt|tdfD ]Z}|jdd}t	|t| |jdd}	t	|	t| |jdd}
t	|
t| qvqd S )N)

2011-01-01
2011-01-02r  r   
2011-01-03r  z
2011-01-04r  r   z
2011-01-06)
1 days2 daysr  r   z3 daysr  z4 daysr  r   z6 daysc                 S   s   g | ]}t |qS r7   r   r=   r0  r7   r7   r8   r@   A  rA   z6TestDuplicated.test_datetime_likes.<locals>.<listcomp>c                 S   s   g | ]}t |d dqS )r   r   r  r  r7   r7   r8   r@   B  rA   c                 S   s   g | ]}t |d dqS )r   rv   )r   r  r7   r7   r8   r@   C  rA   c                 S   s   g | ]}t |qS r7   )r-   r   r  r7   r7   r8   r@   D  rA   c                 S   s   g | ]}t |qS r7   )r   r  r7   r7   r8   r@   E  rA   r  r  r  r  r  Fr   r&   )
r-   r.   r   r  r)   r0   r   r1   r   rh  )r2   r#  r  Zcasesr  r  r  r  r  r  r  r   r  r7   r7   r8   test_datetime_likes&  sT    




z"TestDuplicated.test_datetime_likesr   r   ra   c                 C   s,   |j du sJ t| tg d d S )NT)FFF)Z	is_uniquer)   r0   r  r-   r.   )r2   r  r7   r7   r8   test_unique_indexx  s    z TestDuplicated.test_unique_indexzarr, uniques)r   r   r    r    r   r   r   r  r  r   )r   r  r  r   )r\   r]   r[   r\   r  r  r  r  )r   r\   r!   r[   ra   r   )r   r  r  c                 C   sj   t jt|td}||d d < d}tjt|d t|}W d    n1 sP0    Y  t	|| d S )Nr&   r)  r$   )
r-   rs  r   r1   r)   r*   r+   r   rF   r0   )r2   rj   r5   r   r3   r   r7   r7   r8   test_unique_tuples}  s    (z!TestDuplicated.test_unique_tupleszarray,expected)r  r   r    ru        ?       @r  )r  y                r(   ru  r  c                 C   sL   d}t jt|d t|}W d    n1 s20    Y  t || d S r(  r*  )r2   r.   r   r3   r   r7   r7   r8   test_unique_complex_numbers  s    (z*TestDuplicated.test_unique_complex_numbersN)r   r   r   r  r   r   r   r-   r.   rV   r1   r   r  r  r   r   r   r  r  r  r7   r7   r7   r8   r    sL   ' 

(R 



r  c                   @   s  e Zd Zejdejdd edD fej	dd edD fej
ejdejdfejejdejdfejejdejdfgdd Zejdejd	d edD fej	d
d edD fej
ejdejdfejejdejdfejejdejdfgdd ZdS )TestHashTablezhtable, datac                 C   s   g | ]}d | qS Zfoo_r7   r   r7   r7   r8   r@     rA   zTestHashTable.<listcomp>r   c                 C   s   g | ]}d | qS r  r7   r   r7   r7   r8   r@     rA   r&   c           
      C   s   t |}|tjkr tj|jd< n |tjkr@tjd tg|jdd< |jdddj	dd}|j
j|d |jdd	j
}| |j
}t|| | j|j
dd
\}}t|| || }	t|	|j
 d S )N    ra   TfracreplaceZdropr   r  r  )Zreturn_inverse)r   r~   Float64HashTabler-   rV   locPyObjectHashTabler   samplereset_indexrW   r   drop_duplicatesrF   r)   r0   )
r2   htabler   r   r  s_duplicatedexpected_uniqueresult_uniqueresult_inverseZreconstrr7   r7   r8   test_hashtable_unique  s     


z#TestHashTable.test_hashtable_uniquec                 C   s   g | ]}d | qS r  r7   r   r7   r7   r8   r@     rA   c                 C   s   g | ]}d | qS r  r7   r   r7   r7   r8   r@     rA   c                 C   s   t |}|tjkr tj|jd< n |tjkr@tjd tg|jdd< |jdddj	dd}|j
j|d | j
}| |j
\}}|  j
}	t||	 |||   }
| j
}t|
| d S )Nr  r  ra   Tr  r  r   )r   r~   r  r-   rV   r  r  r   r  r  rW   r   r   r,   r  r  r)   r0   )r2   r  r   r   r  r  Zna_maskr  r  r  Zresult_reconstructZexpected_reconstructr7   r7   r8   test_hashtable_factorize  s    



z&TestHashTable.test_hashtable_factorizeN)r   r   r   r   r   r   r~   r  r   ZStringHashTabler  r-   rg   r   ZInt64HashTabler   ZUInt64HashTabler   r  r  r7   r7   r7   r8   r    s(   


r  c                   @   s   e Zd Zejdejejdddejdddejg
dejdddejdddejg
gdd Zejd	ej	d
 dd Z
ejd	ejejgdd Zdd Zejjdd ZdS )TestRankrj   rc   r    r!   ra   rd   c                 C   s`   t d}t|}t| }| }t|}tj||< |	|}tj
||< t|| d S )Nzscipy.stats)r   Zimportorskipr-   r.   isfinitecopylibalgosZrank_1drn   ZrankdatarV   r)   r   )r2   rj   Zsp_statsr   r   ri   r7   r7   r8   test_scipy_compat  s    





zTestRank.test_scipy_compatr'   
AllIntegerc                 C   sT   t jddgt jd}t jddg|d}|j|d t|}t|}t|| d S )Nr    r!   r&   r   r   )	r-   r.   r   r   r   r   rankr)   r0   )r2   r   r'   ri   r   rX   r   r7   r7   r8   rk     s    
zTestRank.test_basicc                 C   s:   t jddgt jd}tddg|d}tt|| d S )Nr    r!   r&   r   )r-   r.   r   r   r)   r0   r   r  )r2   r'   ri   r  r7   r7   r8   r    s    zTestRank.test_uint64_overflowc                 C   s^   t g dg dg dgg}d}tjt|d t| W d    n1 sP0    Y  d S )Nr   )rb   r_   r  )r  r  	   z%Array with ndim > 2 are not supportedr$   )r-   r.   r   r   r   r   r  )r2   rj   r3   r7   r7   r8   test_too_many_ndims  s    zTestRank.test_too_many_ndimsc                 C   s\   t d}tj|dd }|dks(J t ddd}tj|dd }|dksXJ d S )Ni  T)Zpctr    i  r!   )r-   rg   r   r  maxreshape)r2   rW   r   r7   r7   r8   test_pct_max_many_rows$  s    
zTestRank.test_pct_max_many_rowsN)r   r   r   r   r   r   r-   rV   r  	typecodesrk   r   r   r  r  Z
single_cpur  r7   r7   r7   r8   r    s   

	
r  c                   @   s   e Zd Zdd Zejdejd ejd  dd Z	dd	 Z
ejdejd ejd  d
d Zdd Zejdeegdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )TestModec                 C   s6   t g tjtg tdd}ttt	g |j
 d S )Nr&   )r'   r<   )r   r-   r   r   intr)   r0   r   moder.   rW   r2   ri   r7   r7   r8   test_no_mode1  s    zTestMode.test_no_moder#  r  Floatc                 C   s   dg}dg}dg}ddg}t ||d}t ||d}tt|j|j t| | t ||d}t ||d}tt|j|j t| | d S )Nr    r&   r   r)   r0   r   r  rW   rh  r2   r#  Z
exp_singleZdata_singleZ	exp_multiZ
data_multirX   ri   r7   r7   r8   test_mode_single5  s    zTestMode.test_mode_singlec                 C   sN   t dgtd}tt|j|j t g dtd}tt|j|j d S )Nr    r&   r^   )r   r  r)   r0   r   r  rW   r1   r  r7   r7   r8   test_mode_obj_intH  s    zTestMode.test_mode_obj_intc                 C   s   dg}dgd dgd  }ddg}dgd dgd  dgd  }t ||d}t ||d}tt|j|j t| | t ||d}t ||d}tt|j|j t| | d S )Nr    r_   r!   ra   r&   r  r  r7   r7   r8   test_number_modeO  s    zTestMode.test_number_modec                 C   s\   dg}dgd dgd  }t |dd}t |dd}tt|j|j t| | d S )Nr\   r[   r!   ra   r]   r&   r  )r2   ri   r   rX   r7   r7   r8   test_strobj_modea  s    zTestMode.test_strobj_modec                 C   s\   dg}dgd dgd  }t ||d}t ||d}tt|j|j t| | d S )Nbarr   r!   ra   r&   r  )r2   r#  ri   r   rX   r7   r7   r8   test_strobj_multi_charj  s    zTestMode.test_strobj_multi_charc                 C   s   t g ddd}t g ddd}tt|j|j t| | t ddgdd}t g ddd}tt|j|j t| | d S )N)
1900-05-03r  
2013-01-02r   r&   )r  r  r   r  r  )r  r  r   r  r  r   r)   r   r   r  rW   rK  rh  r2   ri   rX   r7   r7   r8   test_datelike_modet  s    zTestMode.test_datelike_modec                 C   s   t g ddd}t g ddd}tt|j|j t| | t ddgdd}t g ddd}tt|j|j t| | d S )N)-1 days0 daysr  r  r&   )r  r  r  2 minry   ry   ry   z-1 dayz-1 day 2 minr  r  r  r  r7   r7   r8   test_timedelta_mode  s    zTestMode.test_timedelta_modec                 C   sD   t dgtd}t g d}tt|j|j t| | d S )Nr   r&   )r    r   r   )r   r1   r)   r0   r   r  rW   rh  r  r7   r7   r8   test_mixed_dtype  s    zTestMode.test_mixed_dtypec                 C   s   t dgtjd}t g dtjd}tt|j|j t| | t ddgtjd}t ddgtjd}tt|j|j t| | d S )Nr   r&   )r    r   r   r    )	r   r-   r   r)   r0   r   r  rW   rh  r  r7   r7   r8   r    s    zTestMode.test_uint64_overflowc                 C   s   t ddg}|}t| j}t|| t g d}t dgddgd}t| j}t|| t g d}t ddgg dd}t| j}t|| d S )	Nr    r!   r    r[   r[   r[   r  r    r    r!   ra   ra   ra   r   )r   r   r  rK  r)   r  )r2   r]   ri   rX  r7   r7   r8   r    s    zTestMode.test_categoricalc                 C   s   t g d}tg dtjd}tt||j t g d}tdgt	d}tt||j t g d}tddgtjd}tt||j t g dd	d}t
jtd
d t| W d    n1 s0    Y  d S )Nr   r&   r  r[   r  r    ra   r  r  ZTimedeltaIndexr$   )r   r   r-   r   r)   r0   r   r  rW   r1   r   r   AttributeError)r2   r   ri   r7   r7   r8   
test_index  s    zTestMode.test_indexc                 C   s6   t g ddd}| }t dgdd}t|| d S )N)r    r    ra   r   r  r    )r   r  r)   rh  r~  r7   r7   r8   test_ser_mode_with_name  s    z TestMode.test_ser_mode_with_nameN)r   r   r   r  r   r   r   r-   r  r  r  r  r  rU  r1   r  r  r	  r
  r  r  r  r  r7   r7   r7   r8   r  0  s    

	
	r  c                   @   sH   e Zd Zejdddgdd Zdd Zejddd	gd
d ZdS )TestDiffr'   r   r  c                 C   s   t dt j|dd}|jdd|d d df< tj	|ddd	}t j
|jd
dd }t dd|d d df< t dd|dd d f< t|| tj	|jddd	}t||j d S )N   ra   rb   r   nsr!   r    r   Zaxisr  r&   )r-   rg   rG   r   rL  r  r'   typer   diffrf  rN  r  r)   r0   Tr2   r'   rj   r   r   r7   r7   r8   test_diff_datetimelike_nat  s     z#TestDiff.test_diff_datetimelike_natc                 C   sV   t ddddj}d}tjt|d  tj|ddd W d    n1 sH0    Y  d S )	Nr   ra   r   r[  z#cannot diff DatetimeArray on axis=1r$   r    r  )r   r  r   r   
ValueErrorr   r  )r2   rO  r3   r7   r7   r8   test_diff_ea_axis  s    zTestDiff.test_diff_ea_axisZint8Zint16c                 C   sH   t jg d|d}t|d}t jt jddddgdd}t|| d S )N)r   r    r    r   r   r&   r    r   r`   rH   )r-   r.   r   r  rV   r)   r0   r  r7   r7   r8   test_diff_low_precision_int  s    z$TestDiff.test_diff_low_precision_intN)	r   r   r   r   r   r   r  r  r  r7   r7   r7   r8   r    s
   
r  opc                 C   sf   | g d}| g d}| g d}t |tjrJt||}t|| nt||}t|| d S )N)ra   r    ra   rb   )r!   ra   r    r    )ra   ra   r    r    rb   r!   )rD   r-   r   r   Zunion_with_duplicatesr)   r0   r   )r  ZlvalsZrvalsr   r   r7   r7   r8   test_union_with_duplicates  s    r  )@r   r4  numpyr-   r   Zpandas._libsr   r  r   r~   Zpandas.core.dtypes.commonr   r   r   r   r	   Zpandas.core.dtypes.dtypesr
   Zpandasr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingr)   Zpandas.core.algorithmscoreZ
algorithmsZpandas.core.arraysr   r   Zpandas.core.commoncommonr   r   r   r?  r@  r  r  r  r  r  r  r   r   r.   r  r7   r7   r7   r8   <module>   sH   P       G  C   kP9  