a
    dA                    @   s  d dl m Z  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/m0Z0m1Z1 d dl2m-  m3Z4 G d	d
 d
Z5G dd dZ6dd Z7G dd dZ8G dd dZ9G dd dZ:G dd dZ;G dd dZ<dd Z=G dd dZ>dd Z?dd  Z@d!d" ZAd#d$ ZBd%d& ZCd'd( ZDG d)d* d*ZEG d+d, d,ZFejGHd-ejIejIgd.d/ ZJdS )0    )datetime)permutationsN)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                   @   sT  e Z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-d. Zd/d0 Zd1d2 Zejdddgd3d4 Zejdddgd5d6 Zd7d8 Zejd9ejg d:d;d<ejg d=d>d<ejg d?d@d<gdAdB ZejdCejg dDd;d<dEfejg dFd;d<dGfejg dHd>d<dIfejg dJd>d<dGfejg dKed<dLfejg dMed<dNfejg dOed<dPfgdQdR Z ejdddgejjdSejg dTed<ejdUdLged<fe!jdVdGej"dVgdWd<e!jdVdGgdWd<fgdXdYgdZd[d\ Z#ejdg d]ejg d^e$d_d<ejdLej"dUged<fdLej"dUdLgejg d^e$d_d<ejdLej"dUged<fgd`da Z%ejdg dbejg dDe$d_d<ejdGej"dVgdcd<fdGej"dGdVgejg dDe$d_d<ejdGej"dVgej&d<fgddde Z'ejde(e)g dfejg dgej*d<e+dLdUgdLdUgdhdife,e)g dfejg dgej*d<e+dLdUgdLdUgdhdife,e-djdjgdkdlejdEdEgej*d<e-djgdkdlfgdmdn Z.doS )pTestFactorize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  )index).0valZexpected_uniques_listr#   `/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/pandas/tests/test_algos.py
<listcomp>N       z0TestFactorize.test_factorize.<locals>.<listcomp>dtypeTexact)	factorizer   
isinstancer   from_tuplesuniquer,   npfloat16astypefloat32boolobjectZsort_valueslistasarrayintptmassert_numpy_array_equalassert_index_equal)
selfZindex_or_series_objr!   objZresult_codesZresult_uniquesconstructorZexpected_arrexpected_uniquesexpected_codesr#   r'   r(   test_factorize5   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 )	N      Fuse_na_sentinelr   rE   r   rF   r+         ?       @)
r3   arraynanr   r/   r;   r   r<   r=   r>   )r?   valuessercodesuniquesrC   rB   r#   r#   r(   +test_series_factorize_use_na_sentinel_falseT   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brT   rS   rS   crU   rU   r+   rS   rT   rU   Tr"   )r   rE   rE   r   r   rF   rF   rF      )r   rE   rF         )rZ   rY   rF   rE   r         @)      @      @rK   rJ           )r^   rJ   rK   r]   r\   )
r3   rL   r8   r   r/   r<   r=   r;   aranger,   )r?   itemsrP   rQ   exparrr#   r#   r(   
test_basic`   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   rX   rE   rF   rY   r+   Tr"   )rF   rF   rX   rY   r   rE   )r   r3   rM   infr   r/   rL   r;   r<   r=   r   r>   )r?   xrP   rQ   ra   r#   r#   r(   
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   rE   rE   r   r+   Tr"   )rE   rE   rE   r   r   rE   )r   r   r   r/   r3   rL   r;   r<   r=   r   r>   r?   Zv1Zv2rg   rP   rQ   ra   r#   r#   r(   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201303rj   r+   Tr"   )r   r   r   r/   r3   rL   r;   r<   r=   r>   r   rk   r#   r#   r(   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   rE   r   r   rE   rE   r   r+   Tr"   )rE   r   rE   rE   r   r   rE   )
r   r   r   r/   r3   rL   r;   r<   r=   r>   rk   r#   r#   r(   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 )NrE   rF   Or+   )rX      )na_sentinelr   )r3   rL   rM   htObjectFactorizerlenr/   r;   setr<   r=   pdisna)r?   keyrizerru   idsexpectedr#   r#   r(   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)rE   rF   rY   rE   rE   r   int64r+   )FFFFFT)mask)r   rE   rF   r   r   rX   rE   rF   rY   )r3   rL   rv   ZInt64Factorizerrx   r/   r;   r<   r=   rQ   to_array)r?   datar   r}   resultr   rB   r#   r#   r(   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 )NrE   rF   rY   )r   rE   rF   r   rX   r+   r   )r3   rL   rM   rv   rw   rx   r/   r5   r8   r;   r<   r=   rQ   r   )r?   r   r}   r   r   rB   r#   r#   r(   test_factorizer_object_with_nan   s    z-TestFactorize.test_factorizer_object_with_nanz&data, expected_codes, expected_uniques)rE   rE   rE   rF   r   r   r   nonsense)r   rE   rF   rE   rY   )r   r   r   r   )r   r   r   r   r   )r   r   r   r   )r   r   r   r   )r   rE   rF   rE   )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 )N0factorize with argument that is not not a Seriesmatchr+   )r<   assert_produces_warningFutureWarningrz   r/   r=   r3   rL   r;   comZasarray_tuplesafer8   )r?   r   rC   rB   msgrP   rQ   Zexpected_uniques_arrayr#   r#   r(   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 r#   )complex)r%   ir#   r#   r(   r)     r*   z6TestFactorize.test_complex_sorting.<locals>.<listcomp>   r+   z,'[<>]' not supported between instances of .*r   rX   Tr"   )	r3   rL   ranger8   pytestraises	TypeErrorr   r/   )r?   Zx17r   r#   r#   r(   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)rE   rF   rF   rE   r+   )r   rE   rE   r   rE   rF   )r3   rL   r;   r   r/   r<   r=   )r?   Zany_real_numpy_dtyper,   r   rC   rB   rP   rQ   r#   r#   r(   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)rJ       חArJ   :0yE>r   rJ   r+   write)r   rE   r   rF   rE   r   )rJ   r   r   )	r3   rL   float64setflagsr;   r   r/   r<   r=   r?   writabler   rC   rB   rP   rQ   r#   r#   r(   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)    rE   r   r+   r   r   rE   r   r   rE   )	r3   rL   uint64r   r;   r   r/   r<   r=   r   r#   r#   r(   test_uint64_factorize#  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   )	r3   rL   r   r   r;   r   r/   r<   r=   r   r#   r#   r(   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)rS   rU   rS   rT   rU   r+   r   )r   rE   r   rF   rE   rS   rU   rT   )	r3   rL   r8   r   r;   r   r/   r<   r=   r   r#   r#   r(   test_string_factorize7  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 )NrS   rU   rT   r+   r   )r   rE   rX   rX   r   rF   rX   rE   r   )r3   rL   rM   r   r8   r   r;   r   r/   r<   r=   r   r#   r#   r(   test_object_factorizeA  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.000000000datetime64[ns])	r3   rL   
datetime64r   r;   rz   r/   r<   r=   r   r#   r#   r(   test_datetime64_factorizeK  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   rE   Tr-   rz   
RangeIndexZ
from_ranger   r3   r_   r;   r   r/   r<   r=   r>   )r?   r!   rir   r   r#   r#   r(   test_factorize_rangeindexX  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+   rX   r   rE   r"   Tr-   r   )r?   r!   r   r   Zri2r   r#   r#   r(   $test_factorize_rangeindex_decreasingf  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)            rE   r   r+   zgot an unexpected keywordr   T)orderF)
r3   rL   r   r   r   r   r   r/   r<   r   )r?   r   r#   r#   r(   test_deprecate_ordery  s
    ,z"TestFactorize.test_deprecate_orderr   r   u8r+   )r   rE   r   i8)__nan__foor   r8   c                 C   sJ   t |\}}|ddg }tjg dtjd}t|| t|| d S )Nr   rE   r   r+   )r   r/   r3   rL   r;   r<   r=   )r?   r   rP   rQ   rB   rC   r#   r#   r(   ,test_parametrized_factorize_na_value_default  s
    
z:TestFactorize.test_parametrized_factorize_na_value_defaultzdata, na_valuerI   r   )rE   r   rE   rF   rE   )r   rE   r   r   r   )rE   r   rE   r   )rS    rS   rT   rS   )r#   rS   rE   r#   rS   rF   r#   )r   r#   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_valuerE   rY   )rX   r   rX   rE   r+   )r   Zfactorize_arrayr3   rL   r;   r<   r=   )r?   r   r   rP   rQ   rB   rC   r#   r#   r(   $test_parametrized_factorize_na_value  s
    z2TestFactorize.test_parametrized_factorize_na_valuezdata, uniques)rT   rS   NrT   rT   rF   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!   rH   )rE   r   rX   rE   r+   )r   rE   rX   r   )r   r/   r3   rL   r;   Z	safe_sortr<   r=   r0   ndarrayassert_extension_array_equal)r?   r!   r   rQ   rP   rC   rB   r#   r#   r(   test_factorize_use_na_sentinel  s    z,TestFactorize.test_factorize_use_na_sentinel)rS   NrT   rS   r   rE   rF   r   r;   c                 C   s@   t jtj|tddd\}}tj||dd tj||dd d S )Nr+   FrG   TZ
strict_nan)r   r/   r3   rL   r8   r<   r=   r?   r   rC   rB   rP   rQ   r#   r#   r(   +test_object_factorize_use_na_sentinel_false  s
    
z9TestFactorize.test_object_factorize_use_na_sentinel_false)rE   NrE   rF   rs   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   FrG   Tr   )r<   r   r   r   r/   r=   )r?   r   rC   rB   r   rP   rQ   r#   r#   r(   (test_int_factorize_use_na_sentinel_false  s
    0z6TestFactorize.test_int_factorize_use_na_sentinel_false)rS   rS   rT   )r   r   rE   category)
categoriesr,   Z2017
US/Easterntzc                 C   s*   t |\}}t|| t|| d S N)r   r/   r<   r=   r>   r   r#   r#   r(   test_factorize_mixed_values  s    z)TestFactorize.test_factorize_mixed_valuesN)/__name__
__module____qualname__r   markparametrizerD   rR   rc   rh   rl   rp   rr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r3   rL   r   r8   r   rz   rM   r   r,   r   r   r   r   r   r;   r   r   r   r   r#   r#   r#   r(   r    4   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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d,ejegd-d. Zd/d0 Zd1d2 Zd3S )4
TestUniquec                 C   s6   t jdjdddd}t|}t|t js2J d S )NrF   r   d   2   size)r3   randomdefault_rngintegersr   r2   r0   r   r?   rb   r   r#   r#   r(   	test_ints  s    
zTestUnique.test_intsc                 C   s<   t jdjddddd}t|}t|t js8J d S )NrF   r   r   r   r   rs   )	r3   r   r   r   r5   r   r2   r0   r   r   r#   r#   r(   test_objects  s    
zTestUnique.test_objectsc                 C   s2   t jg dtd}tdD ]}tt| qd S )N)rd   re   CDEr+     )r3   rL   r8   r   rx   r   r2   )r?   lstr   r#   r#   r(   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 )NrW   rF   )r   Zfrom_arraysr3   r_   repeattilerN   r!   rz   r2   r<   assert_almost_equal)r?   Zmindexr   r   r#   r#   r(   test_on_index_object!  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)rE   rF   rF   rE   rF   rJ   rK   r   TTFTF)rd   re   re   rd   re   r+   )mrm   )r<   ZBYTES_DTYPESZSTRING_DTYPESr	   r   r   r   r   r
   r   r2   r3   rL   r5   r8   r,   kindr0   r   r   r=   )r?   Zany_numpy_dtyper   rQ   r   r   r#   r#   r(   test_dtype_preservation/  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   )
r3   rL   r   r   r2   r<   r=   r,   r   rN   )r?   r   Zdt_indexr   srb   r#   r#   r(   $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   r3   rL   rz   r2   r<   r=   r?   rS   r   r   r#   r#   r(   test_datetime_non_nss  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   r#   r#   r(   test_timedelta_non_nsy  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  )
r3   rL   r   r   r2   r<   r=   r,   r   rN   )r?   r   Ztd_indexr   r   rb   r#   r#   r(   %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)rE   rF   r   r   r+   )rE   rF   r   )r   r3   r   rL   r<   r=   r   r2   )r?   r   ra   r#   r#   r(   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 )NrS   rU   r+   )r3   rM   rz   r2   rL   r8   r<   r=   )r?   Zduplicated_itemsr   r   r#   r#   r(   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   r9   r2   r<   assert_categorical_equalr   r   rz   r   r>   )r?   r   Z
expected_orU   r   r   cir#   r#   r(   test_categorical  s.    



zTestUnique.test_categoricalc              	   C   s  t ttdddtdddg }tttdddg}t	|| ttdddtdddg }t
dgdd d}t|| tt ttdddtdddg}tttdddg}t	|| tttdddtdddg}t
dgdd d}t|| d S )	N20160101r   r   z2016-01-01 00:00:00-05002016-01-01 00:00:00datetime64[ns, US/Eastern]r,   ro   
2016-01-01)r   r   r   r2   r   Z_from_sequencer3   rL   r<   r   r   r>   rz   r?   r   r   r#   r#   r(   test_datetime64tz_aware  sX    








z"TestUnique.test_datetime64tz_awarec                 C   sf  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 t ttdtdg}tjd	gd
d}t|| t ttdddtdddg}t	dgdd d}t
|| d}tjt|d t td}W d    n1 s0    Y  tjg dtd}t|| t tttd}ttd}t|| d S )N)rF   rE   rY   rY   )rF   rE   rY   r   r+   rF   rE   rW   r  z2016-01-01T00:00:00.000000000r   r   r   r  r  r  z5unique with argument that is not not a Series, Index,r   ZaabcrV   r  )rz   r2   r   r<   r=   r3   rL   r   r   r   r>   r   r   r9   r8   r   r  )r?   r   r   r   r#   r#   r(   test_order_of_appearance  s4    

.z#TestUnique.test_order_of_appearancez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   rz   r2   r=   )r?   argr   r   r   r#   r#   r(   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   )r3   rL   r8   rz   r2   r<   r=   r?   rb   r   r   r#   r#   r(   test_obj_none_preservation0  s    
z%TestUnique.test_obj_none_preservationc                 C   s4   t ddg}t|}t dg}t|| d S )Ng       r^   r   r   r#   r#   r(   test_signed_zero8  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packr3   rL   rz   r2   rM   r<   r=   )r?   NAN1NAN2rS   r   r   r#   r#   r(   test_different_nans?  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         r&  r#  r$  r   r+   rE   )r'  r(  r)  r3   rL   rz   r2   r   )	r?   r-  Zbits_for_nan1Zbits_for_nan2r*  r+  rS   r   Zresult_nan_bitsr#   r#   r(   test_first_nan_keptK  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+   rF   r   rE   )r3   rL   r8   rz   r2   r   )r?   Zunique_nulls_fixtureZunique_nulls_fixture2rS   r   r#   r#   r(   test_do_not_mangle_na_values\  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 )NrE   rF   rY   r+   )r   rz   ZNAr2   rL   r<   r   )r?   Zany_numeric_ea_dtyperO   r   r   r#   r#   r(   test_unique_maskedf  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   r3   rL   r8   r  r!  r"  r,  r   r.  r/  r0  r#   r#   r#   r(   r     s8   %)7%


r   c                 C   sB   | t jdddd}t|}tt|}||ks>J d S )NrF   r   rt      )r3   r   r   r   r   Znunique_intsrx   r2   )Zindex_or_series_or_arrayrN   r   r   r#   r#   r(   test_nunique_intsn  s    
r2  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
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d)d* Zd+d, Zd-d. Zd/S )0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   rE   )r   r   r   r   isin)r?   r   r#   r#   r(   test_invalidw  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   rE   rF   TFrS   rT   )	r<   r   r   r   r4  r3   rL   r=   r   )r?   r   r   r   r#   r#   r(   rc     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 )	Nri   rY   periodsr   )TFFrF   r   rq   )
r   rN   r   r4  r3   rL   r<   r=   ry   r   r   r#   r#   r(   test_i8  s(    zTestIsin.test_i8dtype1)r  r   M8[ns, UTC]	period[D]r,   )r   Zf8r   c                 C   s   t dddj}|dkr"|d}n*|dkr6|d}nt|d|j}|d|}t||}t	j
|jtd	}t|| d S )
Nz
2013-01-01rY   r7  r<  r   r;  UTCr   r+   )r   _valuesZ	to_periodZtz_localizer   viewr5   r   r4  r3   zerosshaper7   r<   r=   )r?   r,   r:  dtarb   compsr   r   r#   r#   r(   +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   )r8  ro   r   rF   r+   TrE   )
r   rN   r   r4  r3   r@  rx   r7   r<   r=   r?   r   r   r   r#   r#   r(   
test_large  s    zTestIsin.test_largec                 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   rV   rE   r   )TTFT)	r3   rL   r   r   
from_codesr   r4  r<   r=   )r?   valscatsZSdZStr   r   r#   r#   r(   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 rG  )r3   rL   r   rH  r   r4  r<   r=   )r?   rI  rJ  catotherr   r   r#   r#   r(   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 )NTr6  r   )	r3   rM   rL   r<   r   r   r   r4  r=   r?   rC  rN   r   r   r   r#   r#   r(   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 NrJ   iAB r   rE   r+   )r3   r   rM   r   r4  rL   onesrx   r7   r<   r=   rE  r#   r#   r(   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 rQ  )r3   r   r   rM   r4  rL   rR  rx   r7   r<   assert_series_equal)r?   r   Zseriesr   r   r#   r#   r(    test_same_nan_is_in_large_series  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 )NFr#   )r?   rM  r#   r#   r(   __eq__  s    z7TestIsin.test_same_object_is_in.<locals>.LikeNan.__eq__c                 S   s   dS )Nr   r#   )r?   r#   r#   r(   __hash__!  s    z9TestIsin.test_same_object_is_in.<locals>.LikeNan.__hash__N)r   r   r   r7   rW  rX  r#   r#   r#   r(   LikeNan  s   rY  r6  r   TF)r<   r   r   r=   r   r4  r3   rL   )r?   rY  rS   rT   r   r#   r#   r(   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 )NrM   r   Tr+   )
floatr   r4  r3   rL   r<   r=   r:   r8   r   )r?   rC  rN   r   r#   r#   r(   r,  -  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   )r3   rL   r<   r   r   r   r4  r=   rO  r#   r#   r(   test_no_castE  s    *zTestIsin.test_no_castemptyr+   c                 C   s6   t ddg}tddg}t||}t|| d S )NrS   rT   F)r   r3   rL   r   r4  r<   r=   )r?   r_  rI  r   r   r#   r#   r(   
test_emptyP  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 )NrM                 ?r+   )FFT)	r3   rL   rM   r[  r8   r   r4  r<   r=   )r?   rC  rI  r   r   r#   r#   r(   test_different_nan_objectsY  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 )Nr#  r$  r%  r   r&  r+   T)
r'  r(  r)  r3   rL   r   r   r4  r<   r=   )r?   r*  r+  rb   Zlookup1r   r   Zlookup2r#   r#   r(   test_different_nans_as_float64a  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 1rN   rE   rF   r  FN)r   r4  r<   assert_frame_equalr?   Zdfr   Zexpected_falser#   r#   r(   test_isin_int_df_string_searchw  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 NaNrN   rF   NaNr+   FN)r   r3   rM   r4  rL   r8   r<   rd  re  r#   r#   r(   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.4245rN   gn?g#Ed@z1.4245r+   FN)r   r4  r3   rL   r8   r<   rd  re  r#   r#   r(    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   r3   r   r4  r<   rT  r?   rO   r   r   r#   r#   r(   test_isin_unsigned_dtype  s    z!TestIsin.test_isin_unsigned_dtypeN)r   r   r   r5  rc   r9  r   r   r   rD  rF  rK  rN  rP  rS  rU  rZ  r,  r^  r   r8   r3   rL   r`  rb  rc  rf  rh  ri  rk  r#   r#   r#   r(   r3  v  s.   )

	
r3  c                   @   sz   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ejdejedf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  rZ   !pandas.value_counts is deprecatedr   )gV-g}?5^Ig/$ۿgףp=
?gʡE?Tr
  )rE   r   rF   rE   countr$   r  )r3   r   r   Zstandard_normalr   r<   r   r   r   value_countsr   Zfrom_breaksr5   CDTr   rT  Z
sort_index)r?   rb   Zfactorr   r   Zbreaksr$   r   r#   r#   r(   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)rE   rF   rY   rZ   rm  r   rE   binsrZ   )Zd;?r\   rn  ro  rF   F)rt  r!   )ru        @)rv  r\   )	r<   r   r   r   rp  r   r   r1   rT  )r?   r   r   r   r   r#   r#   r(   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 )Nrm  r   rE   rJ   rs  )rE   rJ   r  rF   z*bins argument only works with numeric datar  r+   )r<   r   r   r   rp  r3   rL   rx   r   r   r   r   r8   )r?   Zmsg2r   r   r#   r#   r(   test_value_counts_dtypes  s    260z(TestValueCounts.test_value_counts_dtypesc              	   C   s   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t	|| W d    n1 s0    Y  d S )Nr  timedelta64[ns]r+   r   z
2014-01-01rm  r   FdropnarE   rF   z2014-01-01 00:00:00rn  r  )r   r3   timedelta64r   r   r<   r   r   r   rp  rx   r   rT  )r?   tddtr   r   ZvcZ
vc_with_naZexp_dtr#   r#   r(   test_value_counts_nat  s    
,z%TestValueCounts.test_value_counts_natc              
   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}| }ttdddtdddtdddgtd}t g d|dd}t|| tt d	tj	gd
d}t d	tj	gtd}t|| d S )Ni  rE   i  ip  r+   rY   rF   rE   rn  ro  z
2362-01-01ignore)errors)
r   r   rp  r   r8   r<   rT  r   r3   rM   )r?   r   resZ	exp_indexra   r#   r#   r(   &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  rV   rn  ro  TZcheck_index_type)
r   r   r9   rp  r   r<   rT  rL  Z
as_orderedr$   rE  r#   r#   r(   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
aaaaabbbccrE   )rZ   rY   rF   rV   r  rn  ro  Tr  Frz  )rZ   rY   rF   rE   rS   rT   rU   )rT   rS   rU   )r	  r   r  )
r   r   r9   r3   rM   Zilocrp  r   r<   rT  rE  r#   r#   r(   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bbbaacZabcdTr  )rY   rF   rE   r   )rT   rS   rU   r#  rn  ro  r  )r   r   r9   rp  r<   rT  rE  r#   r#   r(   test_categorical_zeroes1  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   Trz  rF   rE   Frn  ro  rY   rW   r+   )rW   rY   rF   )TFN)皙$@r[   r[   r[   r  )r  r[   r[   N)r  r  r[   r[   r[   Nr  )r[   r  N)r<   rT  r   rp  r   r8   r  r#   r#   r(   test_value_counts_dropna>  s>    ((z(TestValueCounts.test_value_counts_dropnar,   r   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 )NrE   rF   rY   rW   TF)	normalizer{  )g      ?g333333?g?rK   rJ   r+   Z
proportionro  g333333?g?)r   r3   rM   r5   rp  r<   rT  )r?   r,   r   Zs_typedr   r   r#   r#   r(   test_value_counts_normalizedd  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+   rE   rn  ro  rm  r   rX   )r3   rL   r   r   r<   r   r   r   rp  rT  r8   )r?   rb   r   r   r   r#   r#   r(   test_value_counts_uint64w  s    ((z(TestValueCounts.test_value_counts_uint64N)r   r   r   rr  rw  rx  r  r  r  r  r  r  r   r   r   r3   r   r8   r  r  r#   r#   r#   r(   rl    s   +&
rl  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   rE   rF   r+   )FFFTFTfirstZkeeplast)TFTFFFF)TFTTFT   rZ   T)r3   rL   rM   r8   r   
duplicatedr<   r=   r_  	enumeratezip)r?   keysr   r   r   tZfalsesZtruesr#   r#   r(   test_duplicated_with_nas  s:    
(



z'TestDuplicated.test_duplicated_with_nascase)
rE   rF   rE   rW   rY   rF   rZ   rE   rW      g?g@gffffff
@g@gffffff@)
      ?      ?       @       @r        @      @y      @      @r  y      @      @r  r  y      @      @)
rS   rT   rS   erU   rT   r#  rS   r  fr+   )
rE   r   rE      r   r   '   rE   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+   )	r3   rL   r   r  r<   r=   r   r   rT  )
r?   r  	exp_firstexp_last	exp_false	res_firstres_last	res_falseidxr   r#   r#   r(   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 r#   r   r%   r#  r#   r#   r(   r)     r*   z6TestDuplicated.test_datetime_likes.<locals>.<listcomp>c                 S   s   g | ]}t |d dqS )r   r   r  r  r#   r#   r(   r)     r*   c                 S   s   g | ]}t |d dqS )r   rn   )r   r  r#   r#   r(   r)     r*   c                 S   s   g | ]}t |qS r#   )r3   r   r  r#   r#   r(   r)     r*   c                 S   s   g | ]}t |qS r#   )r   r  r#   r#   r(   r)     r*   r  r  r  r  r  Fr   r+   )
r3   rL   r   r  r<   r=   r   r8   r   rT  )r?   r~  r}  Zcasesr  r  r  r  r  r  r  r  r   r#   r#   r(   test_datetime_likes  sT    




z"TestDuplicated.test_datetime_likesr   r   rY   c                 C   s,   |j du sJ t| tg d d S )NT)FFF)Z	is_uniquer<   r=   r  r3   rL   )r?   r  r#   r#   r(   test_unique_indexC  s    z TestDuplicated.test_unique_indexzarr, uniques)r   r   rE   rE   r   r   r   r  r  r   )r   r  r  r   )rT   rU   rS   rT   r  r  r  r  )r   rT   rF   rS   rY   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   )
r3   r_  rx   r8   r<   r   r   rz   r2   r=   )r?   rb   rQ   r   r   r   r#   r#   r(   test_unique_tuplesH  s    (z!TestDuplicated.test_unique_tupleszarray,expected)r  r   rE   ra        ?       @r  )r  y                y      ?        ra  r  c                 C   sL   d}t jt|d t|}W d    n1 s20    Y  t || d S r  r  )r?   rL   r   r   r   r#   r#   r(   test_unique_complex_numbers`  s    (z*TestDuplicated.test_unique_complex_numbersN)r   r   r   r  r   r   r   r3   rL   rM   r8   r   r  r  r   rz   r   r  r  r  r#   r#   r#   r(   r    sL   ' 

(R 



r  c                	   @   s   e Zd Zejdejdfejdfej	dfej
dfejdfgdd Zejdejdfejdfej	dfej
dfejdfgdd	 Zd
S )TestHashTablezhtable, tm_dtypeStringFloatZIntZUIntc                 C   s   t td| d }t|d}|tjkr6tj|jd< n |tjkrVt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maker   r       rY   TfracreplaceZdropr   r  r  )Zreturn_inverse)getattrr<   r   rv   Float64HashTabler3   rM   locPyObjectHashTabler   samplereset_indexrN   r   drop_duplicatesr2   r=   )r?   htabletm_dtyper   makerr   s_duplicatedexpected_uniqueresult_uniqueresult_inverseZreconstrr#   r#   r(   test_hashtable_uniques  s"    


z#TestHashTable.test_hashtable_uniquec                 C   s   t td| d }t|d}|tjkr6tj|jd< n |tjkrVt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   r   r  r  rY   Tr  r  r   )r  r<   r   rv   r  r3   rM   r  r  r   r  r  rN   r   r{   r/   r{  r  r=   )r?   r  r  r   r  r   r  Zna_maskr  r  r  Zresult_reconstructZexpected_reconstructr#   r#   r(   test_hashtable_factorize  s    



z&TestHashTable.test_hashtable_factorizeN)r   r   r   r   r   r   rv   r  ZStringHashTabler  ZInt64HashTableZUInt64HashTabler  r  r#   r#   r#   r(   r  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 )TestRankrb   r[   rE   rF   rY   r\   c                 C   s`   t d}t|}t| }| }t|}tj||< |	|}tj
||< t|| d S )Nzscipy.stats)r   Zimportorskipr3   rL   isfinitecopylibalgosZrank_1drf   ZrankdatarM   r<   r   )r?   rb   Zsp_statsr   r   ra   r#   r#   r(   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 )NrE   rF   r+   r   r   )	r3   rL   r   r   r   r   rankr<   r=   )r?   r   r,   ra   r   rO   r   r#   r#   r(   rc     s    
zTestRank.test_basicc                 C   s:   t jddgt jd}tddg|d}tt|| d S )NrE   rF   r+   r   )r3   rL   r   r   r<   r=   r   r  )r?   r,   ra   r   r#   r#   r(   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   )rZ   rW   r  )r  r  	   z%Array with ndim > 2 are not supportedr   )r3   rL   r   r   r   r   r  )r?   rb   r   r#   r#   r(   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pctrE   i  rF   )r3   r_   r   r  maxreshape)r?   rN   r   r#   r#   r(   test_pct_max_many_rows  s    
zTestRank.test_pct_max_many_rowsN)r   r   r   r   r   r   r3   rM   r  	typecodesrc   r   r   r  r  Z
single_cpur  r#   r#   r#   r(   r    s   

	
r  c                  C   s   t jg dd} t jtdddgdd}tjd | |}t jdgt jd}t|| tjd || }t jg t jd}t|| tjd | |}t jdgt jd}t|| tjd || }t jg t jd}t|| d S )Nrs   r+   i        r8   rX   )	r3   rL   r   r  padr;   r<   r=   backfill)oldnewr   r   r#   r#   r(   !test_pad_backfill_object_segfault  s    r  c                   @   s   e Zd Zdd Zdd ZdS )TestTseriesUtilc                 C   s   t g d}t ttd}tjd |j|j}tjg dtjd}t	
|| t ddg}t ttdd	}tjd |j|j}tjg d
tjd}t	
|| d S )NrE   rW   r   r  int64_t)r   r   rE   rE   rE   rE   rF   rF   rF   rF   rF   rX   r+   rE   rZ   rW   r   rX   rX   rX   rX   rX   )r   r9   r   r  r  rN   r3   rL   r;   r<   r=   r?   r  r  ZfillerZexpect_fillerr#   r#   r(   test_backfill  s    zTestTseriesUtil.test_backfillc                 C   s   t g d}t ttd}tjd |j|j}tjg dtjd}t	
|| t ddg}t tjdtjd}tjd |j|j}tjg dtjd}t	
|| d S )	Nr  r  r  )rX   r   r   r   r   rE   rE   rE   rE   rE   rF   rF   r+   rW   r   r  )r   r9   r   r  r  rN   r3   rL   r;   r<   r=   r_   r   r  r#   r#   r(   test_pad$  s    zTestTseriesUtil.test_padN)r   r   r   r  r  r#   r#   r#   r(   r    s   r  c                  C   sh   t jdgd dgd  dgd  dgd  ddt jttdd d d	 d
 ddg} t| rdJ d S )NrY       rF   rE   r   r   r+   r  rX   rZ   )r3   rL   r9   r   r  Zis_lexsorted)Zfailurer#   r#   r(   test_is_lexsorted5  s    &r  c                  C   s   t jddddt j} t jddddt j}t| dd }t j| dd}|t j}t	
|| | d | }t|dd }t || f}|t j}t	
|| d S )NrF   r   r   r   Z	mergesort)r   i@B )r3   r   r   r   r5   r;   r  Zgroupsort_indexerargsortr<   r=   Zlexsort)rS   rT   r   r   r|   r#   r#   r(   test_groupsort_indexerD  s    r  c                     s  t   t  tddddtd g} t fdd| D sDJ t fdd| D s^J   krn  ksrJ   k s  krJ t  t  ksJ t  t  krJ tfd	d| D sJ tfd
d| D sJ krksJ k s
krJ t  t  ks$J t  t  kr:J t| D ]}t|| ksBJ qBtt  gd 	  tt  gd 	  d S )Nz-infg}Ô%Ir   g}Ô%ITrf   c                 3   s   | ]} |kV  qd S r   r#   r%   rg   Infr#   r(   	<genexpr>h  r*   z%test_infinity_sort.<locals>.<genexpr>c                 3   s   | ]} |kp| u V  qd S r   r#   r  r  r#   r(   r  i  r*   c                 3   s   | ]} |kV  qd S r   r#   r  NegInfr#   r(   r  o  r*   c                 3   s   | ]} |k p| u V  qd S r   r#   r  r  r#   r(   r  p  r*   r  )
r  InfinityNegInfinityr[  allr   sortedr3   rL   r  )Zref_numspermr#   r  r  r(   test_infinity_sort]  s&    r  c                  C   s   t  } t  }| tjkrJ | tjkr,J | tjk r:J | tjkrHJ | tjkrVJ | tjksdJ |tjkrrJ |tjkrJ |tjk rJ |tjkrJ |tjkrJ |tjksJ d S r   )r  r  r  r3   rM   r  r#   r#   r(   test_infinity_against_nan~  s    r  c                  C   s*   t jdt jd} t| }|| u s&J d S )Nr   r+   )r3   r_   r;   r  Zensure_platform_int)rb   r   r#   r#   r(   test_ensure_platform_int  s    
r  c               	   C   s  d} t t jj}t t jj}tjt| d& t	t 
||g| W d    n1 sZ0    Y  tjt| d0 t	t 
||gt 
||g W d    n1 s0    Y  tjt| d& t	t 
||g| W d    n1 s0    Y  tjt| d0 t	t 
||gt 
||g W d    n1 s<0    Y  tjt| d0 t	t 
||gt 
||g W d    n1 s0    Y  tjt| d> tj	t 
||gt 
||gt 
ddgd W d    n1 s0    Y  tjt| d> tj	t 
||gt 
||gt 
ddgd W d    n1 sH0    Y  tjt| dJ tj	t 
||gt 
||gt 
ddgt 
ddgd W d    n1 s0    Y  tjt| d2 t	t 
||gt 
t j|g W d    n1 s0    Y  tj	t 
||gt 
||gt 
ddgd tj	t 
||gt 
||gt 
ddgd tj	t 
||gt 
||gt 
ddgt 
ddgd d S )NzOverflow in int64 additionr   FT)arr_mask)b_mask)r  r  )r3   Ziinfor   r  minr   r   OverflowErrorr   Zchecked_add_with_arrrL   rM   )r   r   nr#   r#   r(   test_int64_add_overflow  sT    4>4@@$&$&&B$$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   r3   r   r   intr<   r=   r   moderL   rN   r?   ra   r#   r#   r(   test_no_mode  s    zTestMode.test_no_moder~  r  r  c                 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 )NrE   r+   r   r<   r=   r   r  rN   rT  r?   r~  Z
exp_singleZdata_singleZ	exp_multiZ
data_multirO   ra   r#   r#   r(   test_mode_single  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 )NrE   r+   rV   )r   r  r<   r=   r   r  rN   r8   r  r#   r#   r(   test_mode_obj_int  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 )NrE   rW   rF   rY   r+   r  r  r#   r#   r(   test_number_mode  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 )NrT   rS   rF   rY   rU   r+   r  )r?   ra   r   rO   r#   r#   r(   test_strobj_mode  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   rF   rY   r+   r  )r?   r~  ra   r   rO   r#   r#   r(   test_strobj_multi_char  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  rN   r>  rT  r?   ra   rO   r#   r#   r(   test_datelike_mode  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  ry  r+   )r  r  r  2 minrq   rq   rq   z-1 dayz-1 day 2 minr   r   r  r  r#   r#   r(   test_timedelta_mode  s    zTestMode.test_timedelta_modec                 C   s@   t dg}t g d}tt|j|j t| | d S )Nr   )rE   r   r   r  r  r#   r#   r(   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+   )rE   r   r   rE   )	r   r3   r   r<   r=   r   r  rN   rT  r  r#   r#   r(   r  1  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 )	NrE   rF   rE   rS   rS   rS   r  rE   rE   rF   rY   rY   rY   r   )r   r   r  r>  r<   r  )r?   rU   ra   r  r#   r#   r(   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$  rS   r%  rE   rY   r!  ry  ZTimedeltaIndexr   )r   r   r3   r   r<   r=   r   r  rN   r8   r   r   AttributeError)r?   r  ra   r#   r#   r(   
test_indexL  s    zTestMode.test_indexc                 C   s6   t g ddd}| }t dgdd}t|| d S )N)rE   rE   rY   r   r  rE   )r   r  r<   rT  rj  r#   r#   r(   test_ser_mode_with_namea  s    z TestMode.test_ser_mode_with_nameN)r   r   r   r  r   r   r   r3   r  r  r  r  r  strr8   r  r  r"  r#  r  r  r'  r(  r#   r#   r#   r(   r    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 )Nr  rY   rZ   r   nsrF   rE   r   Zaxisry  r+   )r3   r_   r5   r   r?  r  r,   typer   diffrR  rA  r|  r<   r=   Tr?   r,   rb   r   r   r#   r#   r(   test_diff_datetimelike_natj  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  rY   z
US/Pacific)r8  r   z#cannot diff DatetimeArray on axis=1r   rE   r,  )r   _datar   r   
ValueErrorr   r.  )r?   rB  r   r#   r#   r(   test_diff_ea_axisz  s    zTestDiff.test_diff_ea_axisZint8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   rE   rE   r   r   r+   rE   r   rX   r6   )r3   rL   r   r.  rM   r<   r=   r0  r#   r#   r(   test_diff_low_precision_int  s    z$TestDiff.test_diff_low_precision_intN)	r   r   r   r   r   r   r1  r4  r6  r#   r#   r#   r(   r*  i  s
   
r*  opc                 C   sf   | g d}| g d}| g d}t |tjrJt||}t|| nt||}t|| d S )N)rY   rE   rY   rZ   )rF   rY   rE   rE   )rY   rY   rE   rE   rZ   rF   )r0   r3   r   r   Zunion_with_duplicatesr<   r=   r   )r7  ZlvalsZrvalsr   r   r#   r#   r(   test_union_with_duplicates  s    r8  )Kr   	itertoolsr   r'  numpyr3   r   Zpandas._libsr   r  r   rv   Zpandas.core.dtypes.commonr   r   r   r	   r
   Zpandas.core.dtypes.dtypesr   rq  Zpandasrz   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   r2  r3  rl  r  r  r  r  r  r  r  r  r  r  r  r  r*  r   r   rL   r8  r#   r#   r#   r(   <module>   sV   P   ^  a  # r kR9#!3  