a
    j=icD                    @   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 d dlmZ d dlm  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/ d dl0m1Z2 d dl3m4  m5Z d d
l6m7Z7 d dl8m4  m9Z: G dd dZ;G dd dZ<G dd dZ=G dd dZ>G dd dZ?G dd dZ@G dd dZAdd ZBG dd dZCdd ZDdd  ZEd!d" ZFd#d$ ZGd%d& ZHd'd( ZIG d)d* d*ZJG d+d, d,ZKejLMd-ejNejNgd.d/ ZOdS )0    )datetime)permutationsN)algos	hashtable)pa_version_under7p0)PerformanceWarning)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
date_rangetimedelta_rangeto_datetimeto_timedelta)DatetimeArrayc                   @   s  e Zd Zejdddgdd Zdd Zejdg d	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+d, Zd-d. Zejdddgd/d0 Zejdddgd1d2 Zd3d4 Zejd5ejg d6d7d8ejg d9d:d8ejg d;d<d8gd=d> Zejd?ejg d@d7d8dAfejg dBd7d8dCfejg dDd:d8dEfejg dFd:d8dCfejg dGed8dHfejg dIed8dJfejg dKed8dLfgdMdN Zejdddgejdg dOejjdPejg dQed8ejdRdHged8fejdSdCejdSgdTd8ejdSdCgdTd8fgdUdVgdWdXdY Z ejdg dZejg d[e!d\d8ejdHejdRged8fdHejdRdHgejg d[e!d\d8ejdHejdRged8fgd]d^ Z"ejdg d_ejg d@e!d\d8ejdCejdSgd`d8fdCejdCdSgejg d@e!d\d8ejdCejdSgej#d8fgdadb Z$dcS )dTestFactorizesortTFc           	         s2  |}t t|o"to"t|jdddk  |j|d\}}W d    n1 sL0    Y  t}t|t	rjt	j
}|| }t|tr|jtkr|jtkr|t}|rt ttot|jdddk | }W d    n1 s0    Y  t|  fdd|D }tj|tjd}t || t j||dd	 d S )
NZstorage Zpyarrowr!   c                    s   g | ]}  |qS  index).0valZexpected_uniques_listr$   h/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/pandas/tests/test_algos.py
<listcomp>T       z0TestFactorize.test_factorize.<locals>.<listcomp>dtypeTexact)tmZmaybe_produces_warningr   r   getattrr.   	factorizer   
isinstancer   from_tuplesuniqueboolobjectastypeZsort_valueslistnpasarrayintpassert_numpy_array_equalassert_index_equal)	selfindex_or_series_objr!   objZresult_codesZresult_uniquesconstructorexpected_uniquesexpected_codesr$   r)   r*   test_factorize4   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Zuse_na_sentinelr   rG   r   rH   r-         ?       @)
r;   arraynanr   r3   r=   r   r1   r>   r?   )r@   valuessercodesuniquesrE   rD   r$   r$   r*   +test_series_factorize_use_na_sentinel_falseZ   s    z9TestFactorize.test_series_factorize_use_na_sentinel_falsena_sentinel)Nc                 C   s   |d u rd}n|dkrd}nd}t jt|d tj||d W d    n1 sR0    Y  t jt|d |j|d W d    n1 s0    Y  d S )Nz+Specifying `na_sentinel=None` is deprecatedrU   )Specifying `na_sentinel=-1` is deprecatedzDSpecifying the specific value to use for `na_sentinel` is deprecatedmatch)rT   )r1   assert_produces_warningFutureWarningpdr3   )r@   rT   rA   msgr$   r$   r*   test_depr_na_sentinelf   s    ,z#TestFactorize.test_depr_na_sentinelc                 C   s  t g d\}}t|tjg dtd t jg d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_   cra   ra   r_   r`   ra   r-   Tr#   )r   rG   rG   r   r   rH   rH   rH      rU   )r   rG   rH         )re   rd   rH   rG   r         @)      @      @rL   rK           )ri   rK   rL   rh   rg   )
r   r3   r1   r>   r;   rM   r8   r=   aranger.   )r@   rQ   rR   exparrr$   r$   r*   
test_basict   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   rU   rG   rH   rd   r-   Tr#   )rH   rH   rU   rd   r   rG   )r   r;   rN   infr   r3   rM   r=   r1   r>   r   r?   )r@   xrQ   rR   rk   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
|| 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 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20130101 09:00:00.0000420130101)r   r   r   rG   rG   r   r-   Tr#   )rG   rG   rG   r   r   rG   Z201302MfreqZ201303z1 day 1 min1 day)r   rG   r   r   rG   rG   r   )rG   r   rG   rG   r   r   rG   )r   r   r   r3   r;   rM   r=   r1   r>   r   r?   r   r   r   )r@   v1v2rq   rQ   rR   rk   r$   r$   r*   test_datelike   sF    zTestFactorize.test_datelikec                 C   s   t jdddt jgdd}tt|}dD ]\}|j|d|d}t jddd|gd	d}tt|tt|kspJ t	t
|||k q*t jdt jdgdd}d
}|j|d|d}t jg dd	d}tt|tt|ksJ t	t
|||k d S )NrG   rH   Or-   )rU      Tr!   rT   r   int32rU   F)rH   rU   r   )r;   rM   rN   htZObjectFactorizerlenr3   setr1   r>   r\   isna)r@   keyZrizerrT   idsexpectedr$   r$   r*   test_factorize_nan   s    z TestFactorize.test_factorize_nanz&data, expected_codes, expected_uniques)rG   rG   rG   rH   r   r   r   nonsense)r   rG   rH   rG   rd   )r   r   r   r   )r   r   r   r   rG   rH   rd   )r   r   r   r   )r   r   r   r   )r   rG   rH   rG   )r   r   r   c                 C   sD   t |\}}t|tj|tjd tj|t	d}t|| d S Nr-   )
r\   r3   r1   r>   r;   rM   r=   comZasarray_tuplesafer8   )r@   datarE   rD   rQ   rR   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 .*rX   rU   Tr#   )	r;   rM   ranger8   pytestraises	TypeErrorr   r3   )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)rG   rH   rH   rG   r-   )r   rG   rG   r   rG   rH   )r;   rM   r=   r   r3   r1   r>   )r@   Zany_real_numpy_dtyper.   r   rE   rD   rQ   rR   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)rK       חArK   :0yE>r   rK   r-   write)r   rG   r   rH   rG   r   )rK   r   r   )	r;   rM   float64setflagsr=   r   r3   r1   r>   r@   writabler   rE   rD   rQ   rR   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)    rG   r   r-   r   r   rG   r   r   rG   )	r;   rM   uint64r   r=   r   r3   r1   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   )	r;   rM   int64r   r=   r   r3   r1   r>   r   r$   r$   r*   test_int64_factorize6  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_   ra   r_   r`   ra   r-   r   )r   rG   r   rH   rG   r_   ra   r`   )	r;   rM   r8   r   r=   r   r3   r1   r>   r   r$   r$   r*   test_string_factorize@  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_   ra   r`   r-   r   )r   rG   rU   rU   r   rH   rU   rG   r   )r;   rM   rN   r   r8   r   r=   r   r3   r1   r>   r   r$   r$   r*   test_object_factorizeJ  s     z#TestFactorize.test_object_factorizec                 C   sj   t t dg}|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.000r   r   r-   z2020-01-01T00:00:00.000000000datetime64[ns])	r;   rM   
datetime64r   r=   r\   r3   r1   r>   r   r$   r$   r*   test_datetime64_factorizeT  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   rG   Tr/   r\   
RangeIndexZ
from_ranger   r;   rj   r=   r   r3   r1   r>   r?   )r@   r!   rir   resultr$   r$   r*   test_factorize_rangeindexa  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-   rU   r   rG   r#   Tr/   r   )r@   r!   r   r   Zri2r   r$   r$   r*   $test_factorize_rangeindex_decreasingo  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)            rG   r   r-   zgot an unexpected keywordrX   T)orderF)
r;   rM   r   r   r   r   r   r3   r1   rZ   )r@   r   r$   r$   r*   test_deprecate_order  s
    ,z"TestFactorize.test_deprecate_orderr   r   u8r-   )r   rG   r   i8)__nan__foor   r8   c                 C   sJ   t |\}}|ddg }tjg dtjd}t|| t|| d S )Nr   rG   r   r-   )r   r3   r;   rM   r=   r1   r>   )r@   r   rQ   rR   rD   rE   r$   r$   r*   ,test_parametrized_factorize_na_value_default  s
    
z:TestFactorize.test_parametrized_factorize_na_value_defaultzdata, na_valuerJ   r   )rG   r   rG   rH   rG   )r   rG   r   r   r   )rG   r   rG   r   )r_   r"   r_   r`   r_   )r$   r_   rG   r$   r_   rH   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_valuerG   rd   )rU   r   rU   rG   r-   )r   Zfactorize_arrayr;   rM   r=   r1   r>   )r@   r   r   rQ   rR   rD   rE   r$   r$   r*   $test_parametrized_factorize_na_value  s
    z2TestFactorize.test_parametrized_factorize_na_value)rU   rV   d   zdata, uniques)r`   r_   Nr`   r`   rH   ZInt64Znumpy_arrayZextension_array)r   c           	      C   s   |dkrd}nd}t jt|d$ tj|||d\}}W d    n1 sJ0    Y  |r|tjdd|dgtjd}t|}ntjdd|dgtjd}|}t 	|| t
|tjrt 	|| nt || d S )	NrU   rW   z9the specific value to use for `na_sentinel` is deprecatedrX   r}   rG   r   r-   )r1   rZ   r[   r   r3   r;   rM   r=   Z	safe_sortr>   r4   ndarrayassert_extension_array_equal)	r@   r!   rT   r   rR   r]   rQ   rE   rD   r$   r$   r*   test_factorize_na_sentinel  s    2z(TestFactorize.test_factorize_na_sentinel)r_   Nr`   r_   r   rG   rH   r   r=   c                 C   s6   t j|dd\}}tj||dd tj||dd d S NFrI   TZ
strict_nanr   r3   r1   r>   r@   r   rE   rD   rQ   rR   r$   r$   r*   +test_object_factorize_use_na_sentinel_false  s    z9TestFactorize.test_object_factorize_use_na_sentinel_false)rG   NrG   rH   r{   c                 C   s6   t j|dd\}}tj||dd tj||dd d S r   r   r   r$   r$   r*   (test_int_factorize_use_na_sentinel_false  s    z6TestFactorize.test_int_factorize_use_na_sentinel_falseN)%__name__
__module____qualname__r   markparametrizerF   rS   r^   rm   rr   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r;   rM   r   r8   r   r\   rN   r   r.   r   r   r   r$   r$   r$   r*   r    3   s   
%
)1
	






	



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   s0   t jjdddd}t|}t|t js,J d S )Nr   r   2   size)r;   randomrandintr   r6   r4   r   r@   rl   r   r$   r$   r*   	test_ints  s    
zTestUnique.test_intsc                 C   s6   t jjddddd}t|}t|t js2J d S )Nr   r   r   r   r{   )r;   r   r   r9   r   r6   r4   r   r   r$   r$   r*   test_objects  s    
zTestUnique.test_objectsc                 C   s(   g d}t dD ]}tt| qd S )N)rn   ro   CDE  )r   r   r   r6   )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 )Nrc   rH   )r   Zfrom_arraysr;   rj   repeattilerO   r!   r\   r6   r1   assert_almost_equal)r@   Zmindexr   r   r$   r$   r*   test_on_index_object  s     

zTestUnique.test_on_index_objectc                 C   s  |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}t || d S )N)rG   rH   rH   rG   rH   rK   rL   r   TTFTF)rn   ro   ro   rn   ro   r-   )r1   ZBYTES_DTYPESZSTRING_DTYPESr   r
   r	   r   r   r   r   r6   r;   rM   r9   r8   r>   )r@   Zany_numpy_dtyper   rR   r   r   r$   r$   r*   test_dtype_preservation!  s2    





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.000000000M8[ns]r-   )r   r   r   )
r;   rM   r   r   r6   r1   r>   r.   r   rO   )r@   r   Zdt_indexr   srl   r$   r$   r*   $test_datetime64_dtype_array_returnedB  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;   rM   r\   r6   r1   r>   r@   r_   r   r   r$   r$   r*   test_datetime_non_nsa  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-   l     RFl    jIGtimedelta64[ns]r   r   r$   r$   r*   test_timedelta_non_nsg  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;   rM   r   r   r6   r1   r>   r.   r   rO   )r@   r   Ztd_indexr   r   rl   r$   r$   r*   %test_timedelta64_dtype_array_returnedm  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)rG   rH   r   r   r-   )rG   rH   r   )r   r;   r   rM   r1   r>   r   r6   )r@   r   rk   r$   r$   r*   test_uint64_overflow  s    zTestUnique.test_uint64_overflowc                 C   s>   dt jddg}t|}t jdt jdgtd}t|| d S )Nr_   ra   r-   )r;   rN   r\   r6   rM   r8   r1   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
categoriesorderedZbaabcr   r   namer   )
r   r:   r6   r1   assert_categorical_equalr   r   r\   r   r?   )r@   r   Z
expected_ora   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20160101
US/Easterntzz2016-01-01 00:00:00-05002016-01-01 00:00:00datetime64[ns, US/Eastern]r.   rv   
2016-01-01)r   r   r   r6   r   Z_from_sequencer;   rM   r1   r   r   r?   r\   r@   r   r   r$   r$   r*   test_datetime64tz_aware  sX    








z"TestUnique.test_datetime64tz_awarec                 C   s2  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
|| t td}tjg dtd}t|| t tttd}ttd}t|| d S )N)rH   rG   rd   rd   )rH   rG   rd   r   r-   rH   rG   rc   r  z2016-01-01T00:00:00.000000000r   r  r	  r  r  r  Zaabcrb   r   )r\   r6   r   r1   r>   r;   rM   r   r   r   r?   r:   r8   r   r  r  r$   r$   r*   test_order_of_appearance  s0    

z#TestUnique.test_order_of_appearancezarg ,expected)1r  2r  r  r-   )r   r   c                 C   s   t |}t|| d S Nr\   r6   r1   r>   )r@   argr   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   )r;   rM   r8   r\   r6   r1   r>   r@   rl   r   r   r$   r$   r*   test_obj_none_preservation  s    
z%TestUnique.test_obj_none_preservationc                 C   s4   t ddg}t|}t dg}t|| d S )Ng       ri   r   r   r$   r$   r*   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;   rM   r\   r6   rN   r1   r>   )r@   NAN1NAN2r_   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-   rG   )r  r   r!  r;   rM   r\   r6   r   )	r@   r%  Zbits_for_nan1Zbits_for_nan2r"  r#  r_   r   Zresult_nan_bitsr$   r$   r*   test_first_nan_kept6  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-   rH   r   rG   )r;   rM   r8   r\   r6   r   )r@   Zunique_nulls_fixtureZunique_nulls_fixture2r_   r   r$   r$   r*   test_do_not_mangle_na_valuesG  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 )NrG   rH   rd   r-   )r   r\   ZNAr6   rM   r1   r   )r@   Zany_numeric_ea_dtyperP   r   r   r$   r$   r*   test_unique_maskedQ  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;   rM   r8   r  r  r  r$  r   r&  r'  r(  r$   r$   r$   r*   r      s8   !*7#


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
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 )NzQonly list-like objects are allowed to be passed to isin\(\), you passed a \[int\]rX   rG   )r   r   r   r   isin)r@   r]   r$   r$   r*   test_invalidZ  s    *,zTestIsin.test_invalidc                 C   s  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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 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 ddgdg}tddg}t|| d S )NrG   rH   TFr_   r`   )r   r*  r;   rM   r1   r>   r   r  r$   r$   r*   rm   g  s6    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 )	Nrs   rd   periodsr   )TFFrH   r   rw   )
r   rO   r   r*  r;   rM   r1   r>   r   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-01rd   r,  r1  r   r0  UTCr   r-   )r   _valuesZ	to_periodZtz_localizer   viewr9   r   r*  r;   zerosshaper7   r1   r>   )r@   r.   r/  dtarl   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   )r-  rv   r   rH   r-   TrG   )
r   rO   r   r*  r;   r5  r   r7   r1   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   rb   rG   r   )TTFT)	r;   rM   r   r   
from_codesr   r*  r1   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 r<  )r;   rM   r   r=  r   r*  r1   r>   )r@   r>  r?  catotherr   r   r$   r$   r*   test_categorical_isin  s    zTestIsin.test_categorical_isinc                 C   s8   t jg}t jg}t dg}t||}t|| d S )NT)r;   rN   rM   r   r*  r1   r>   r@   r8  rO   r   r   r$   r$   r*   test_same_nan_is_in  s
    zTestIsin.test_same_nan_is_inc                 C   sJ   t dd}t j|d< t|t jdg}t jt|td}t	|| d S NrK   iAB r   rG   r-   )
r;   r   rN   r   r*  onesr   r7   r1   r>   r:  r$   r$   r*   test_same_nan_is_in_large  s
    
z"TestIsin.test_same_nan_is_in_largec                 C   sT   t dd}t|}t j|d< |t jdg}tt jt|td}t	|| d S rF  )
r;   r   r   rN   r*  rG  r   r7   r1   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}| |  }}t t|g|gtdg t t|g|gtdg 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@   rB  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   rL  rM  r$   r$   r$   r*   LikeNan  s   rN  TF)r1   r>   r   r*  r;   rM   )r@   rN  r_   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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 )NrN   r   Tr-   )
floatr   r*  r1   r>   r;   rM   r<   r8   r   )r@   r8  rO   r   r$   r$   r*   r$  
  s    

zTestIsin.test_different_nansc                 C   s8   ddg}dg}t ddg}t||}t|| d S )Nss*   Z42F)r;   rM   r   r*  r1   r>   rD  r$   r$   r*   test_no_cast"  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;   rM   r   r*  r1   r>   )r@   rT  r>  r   r   r$   r$   r*   
test_empty+  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 )NrN                 ?r-   )FFT)	r;   rM   rN   rP  r8   r   r*  r1   r>   )r@   r8  r>  r   r   r$   r$   r*   test_different_nan_objects4  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!  r;   rM   r   r   r*  r1   r>   )r@   r"  r#  rl   Zlookup1r   r   Zlookup2r$   r$   r*   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 1rO   rG   rH   r  FNr   r*  r1   assert_frame_equalr@   dfr   Zexpected_falser$   r$   r*   test_isin_int_df_string_searchR  s    z'TestIsin.test_isin_int_df_string_searchc                 C   s>   t dtjdgi}|dg}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 NaNrO   rH   NaNFN)r   r;   rN   r*  r1   rZ  r[  r$   r$   r*   test_isin_nan_df_string_searchZ  s    z'TestIsin.test_isin_nan_df_string_searchc                 C   s<   t dddgi}|dg}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.4245rO   gn?g#Ed@z1.4245FNrY  r[  r$   r$   r*    test_isin_float_df_string_searchb  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   r*  r1   rI  r@   rP   r   r   r$   r$   r*   test_isin_unsigned_dtypej  s    z!TestIsin.test_isin_unsigned_dtypeN)r   r   r   r+  rm   r.  r   r   r   r9  r;  r@  rC  rE  rH  rJ  rO  r$  rS  r   r8   r;   rM   rU  rW  rX  r]  r_  r`  rb  r$   r$   r$   r*   r)  Y  s.   &

		
r)  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dlm} t jd}||d}t|}g d}t	|
tdd}tg d|d	}t| |  d S )
Ni  r   )cutre   )gvgQg`"?gw/?g!rh?Tr   )rG   rG   rG   rG   r%   )r;   r   seedZpandas.core.reshape.tilerd  Zrandnr   value_countsr   Zfrom_breaksr9   CDTr   r1   rI  Z
sort_index)r@   rd  rl   factorr   Zbreaksr&   r   r$   r$   r*   test_value_countss  s    

z!TestValueCounts.test_value_countsc                 C   sr   g d}t j|dd}tdgtdgd}t|| t j|ddd	}tddgtd
dgd}t|| d S )N)rG   rH   rd   re   rG   binsre   )Zd;?rg   r%   rH   F)rk  r!   )rl        @)rm  rg   )r   rf  r   r   r5   r1   rI  r:  r$   r$   r*   test_value_counts_bins  s    z&TestValueCounts.test_value_counts_binsc                 C   s   t ddg}t|dksJ t jddgdd}t|dks@J t tg d}t|dksbJ d}tjt|d" t jddgdd W d    n1 s0    Y  d S )	NrG   rK   rj  )rG   rK   r  rH   z*bins argument only works with numeric datarX   r  )r   rf  r   r   r   r   r   )r@   r   r]   r$   r$   r*   test_value_counts_dtypes  s    z(TestValueCounts.test_value_counts_dtypesc                 C   s   t tdtgdd}tddg}||fD ]<}t|}tj|dd}t|dksVJ t|d	ks*J q*t td
di}t	
t|| d S )Nr   r   r-   r   z
2014-01-01FdropnarG   rH   z2014-01-01 00:00:00)r   r;   timedelta64r   r   r   rf  r   r   r1   rI  )r@   tddtr   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}t|| tt dtj	gd	d
}t dtj	gtd}t|| d S )Ni  rG   i  ip  r-   rd   rH   rG   r%   z
2362-01-01ignore)errors)
r   r   rf  r   r8   r1   rI  r   r;   rN   )r@   r   resZ	exp_indexrk   r$   r$   r*   &test_value_counts_datetime_outofbounds  s&    






 z6TestValueCounts.test_value_counts_datetime_outofboundsc                 C   sr   t ttd}| }t g dtg dd}tj||dd |j }| }|j	 |_	tj||dd d S )NZaaabbcrw  rb   r%   TZcheck_index_type)
r   r   r:   rf  r   r1   rI  rA  Z
as_orderedr&   r:  r$   r$   r*   r    s    
z TestValueCounts.test_categoricalc                 C   s6  t ttd}tj|jd< | }t g dtg dg ddd}tj	||dd |jd	d
}t g dtdddtjg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}tj	||dd |jd	d
}t g dtdddtjgg dddd}tj	||dd d S )NZ
aaaaabbbccrG   )re   rd   rH   rb   r  r%   Tr|  Frp  )re   rd   rH   rG   r_   r`   ra   )r`   r_   ra   )r   r   r   )
r   r   r:   r;   rN   Zilocrf  r   r1   rI  r:  r$   r$   r*   test_categorical_nans  s>    z%TestValueCounts.test_categorical_nansc                 C   sX   t ttdtddd}| }t g dtg dtdddd}tj||dd d S )	NZbbbaacabcdTr   )rd   rH   rG   r   )r`   r_   ra   r  r%   r|  )r   r   r:   rf  r1   rI  r:  r$   r$   r*   test_categorical_zeroes  s    z'TestValueCounts.test_categorical_zeroesc              	   C   s  t tg djddtddgddgd t tg djddtddgddg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 t tdgd	 dgd  d gd  jddtg dddtjgd t tg djddtddgddgd t tg djddtddgddgd t tg djddtddgddgd tg djdd}tg dddtjgd}t || d S )Nr   Trp  rH   rG   Fr%   rd   rc   r-   )rc   rd   rH   )皙$@rf   rf   rf   r  )r  rf   rf   N)r  r  rf   rf   rf   Nrw  )r1   rI  r   rf  r   r8   r;   rN   r  r$   r$   r*   test_dropna   s>    ((zTestValueCounts.test_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}t|| |jddd}t ddgt d	d
g|dd}t|| d S )NrG   rH   rd   rc   TF)	normalizerq  )g      ?g333333?g?rL   rK   r-   r%   g333333?g?)r   r;   rN   r9   rf  r1   rI  )r@   r.   r   Zs_typedr   r   r$   r$   r*   test_value_counts_normalized&  s    $
z,TestValueCounts.test_value_counts_normalizedc                 C   sx   t jdgt jd}tdgdgd}t|}t|| t jddgtd}tddgddgd}t|}t|| d S )Nr   r-   rG   r%   rU   )	r;   rM   r   r   r   rf  r1   rI  r8   )r@   rl   r   r   r$   r$   r*   test_value_counts_uint645  s    

z(TestValueCounts.test_value_counts_uint64N)r   r   r   ri  rn  ro  rv  r{  r  r}  r  r  r   r   r   r;   r   r8   r  r  r$   r$   r$   r*   rc  r  s   $&
rc  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   rG   rH   r-   )FFFTFTfirstZkeeplast)TFTFFFF)TFTTFT   re   T)r;   rM   rN   r8   r   
duplicatedr1   r>   rT  	enumeratezip)r@   keysr   r   r   tZfalsesZtruesr$   r$   r*   test_duplicated_with_nasD  s:    
(



z'TestDuplicated.test_duplicated_with_nascase)
rG   rH   rG   rc   rd   rH   re   rG   rc      g?g@gffffff
@g@gffffff@)
      ?      ?       @       @r        @      @y      @      @r  y      @      @r  r  y      @      @)
r_   r`   r_   era   r`   r  r_   r  fr-   )
rG   r   rG      r   r   '   rG   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  Fcategoryr-   )	r;   rM   r   r  r1   r>   r   r   rI  )
r@   r  	exp_firstexp_last	exp_false	res_firstres_last	res_falseidxr   r$   r$   r*   test_numeric_object_likesk  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   ru   )r   r  r$   r$   r*   r+     r,   c                 S   s   g | ]}t |qS r$   )r;   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-   )
r;   rM   r   r  r1   r>   r   r8   r   rI  )r@   rt  rs  Zcasesr  r  r  r  r  r  r  r  r   r$   r$   r*   test_datetime_likes  sT    




z"TestDuplicated.test_datetime_likesr   r   rd   c                 C   s,   |j du sJ t| tg d d S )NT)FFF)Z	is_uniquer1   r>   r  r;   rM   )r@   r  r$   r$   r*   test_unique_index  s    z TestDuplicated.test_unique_indexzarr, uniques)r   r   rG   rG   r   r   r   r  r  r   )r   r  r  r   )r`   ra   r_   r`   r  r  r  r  )r   r`   rH   r_   rd   r   )r   r  r  c                 C   s8   t jt|td}||d d < t|}t|| d S r   )r;   rT  r   r8   r\   r6   r1   r>   )r@   rl   rR   r   r   r$   r$   r*   test_unique_tuples  s    
z!TestDuplicated.test_unique_tupleszarray,expected)r  r   rG   rV        ?       @r  )r  y                y      ?        rV  r  c                 C   s   t |}t|| d S r  r  )r@   rM   r   r   r$   r$   r*   test_unique_complex_numbers  s    
z*TestDuplicated.test_unique_complex_numbersN)r   r   r   r  r   r   r   r;   rM   rN   r8   r   r  r  r   r\   r   r  r  r  r$   r$   r$   r*   r  C  sL   ' 

(S 


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       rd   TfracreplaceZdropr   r  r  )Zreturn_inverse)r2   r1   r   r   Float64HashTabler;   rN   locPyObjectHashTabler   samplereset_indexrO   r   drop_duplicatesr6   r>   )r@   htabletm_dtyper   makerr   s_duplicatedexpected_uniqueresult_uniqueresult_inverseZreconstrr$   r$   r*   test_hashtable_unique+  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  rd   Tr  r  r   )r2   r1   r   r   r  r;   rN   r  r  r   r  r  rO   r   r   r3   rq  r  r>   )r@   r  r  r   r  r   r  Zna_maskr  r  r  Zresult_reconstructZexpected_reconstructr$   r$   r*   test_hashtable_factorizeS  s    



z&TestHashTable.test_hashtable_factorizeN)r   r   r   r   r   r   r   r  ZStringHashTabler  ZInt64HashTableZUInt64HashTabler  r  r$   r$   r$   r*   r  *  s(   


r  c                   @   s   e Zd Zej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 )TestRankrl   rf   rG   rH   rd   rg   c                 C   s`   ddl m} t|}t| }| }t|}tj||< ||}tj	||< t
|| d S )Nr   )rankdata)Zscipy.statsr  r;   rM   isfinitecopylibalgosZrank_1drp   rN   r1   r   )r@   rl   r  maskr   rk   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 )NrG   rH   r-   r   r   )	r;   rM   r   r   r   r   rankr1   r>   )r@   r   r.   rk   r   rP   r   r$   r$   r*   rm     s    
zTestRank.test_basicc                 C   s:   t jddgt jd}tddg|d}tt|| d S )NrG   rH   r-   r   )r;   rM   r   r   r1   r>   r   r  )r@   r.   rk   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   )re   rc   r  )r  r  	   z%Array with ndim > 2 are not supportedrX   )r;   rM   r   r   r   r   r  )r@   rl   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pctrG   i  rH   )r;   rj   r   r  maxreshape)r@   rO   r   r$   r$   r*   test_pct_max_many_rows  s    
zTestRank.test_pct_max_many_rowsN)r   r   r   rs  Zskip_if_no_scipyr   r   r   r;   rN   r  	typecodesrm   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 )Nr{   r-   i        r8   rU   )	r;   rM   r   r  padr=   r1   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rG   rc   r   r  int64_t)r   r   rG   rG   rG   rG   rH   rH   rH   rH   rH   rU   r-   rG   re   rc   r   rU   rU   rU   rU   rU   )r   r:   r   r  r  rO   r;   rM   r=   r1   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d}tjd |j|j}tjg dtjd}t	
|| d S )	Nr  r  r  )rU   r   r   r   r   rG   rG   rG   rG   rG   rH   rH   r-   rc   r   r  )r   r:   r   r  r  rO   r;   rM   r=   r1   r>   rj   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   s6   t jg dddt jg dddg} t| r2J d S )N)|rd   rd   rd   rd   rd   rd   rd   rd   rd   rd   rd   rd   rd   rd   rd   rd   rd   rd   rd   rd   rd   rd   rd   rd   rd   rd   rd   rd   rd   rd   rd   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rG   rG   rG   rG   rG   rG   rG   rG   rG   rG   rG   rG   rG   rG   rG   rG   rG   rG   rG   rG   rG   rG   rG   rG   rG   rG   rG   rG   rG   rG   rG   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   r   r   r   r   r   r   r-   )|                              r|         r               r     r   r  r  r  r  rc   re   rd   rH   rG   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  rc   re   rd   rH   rG   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  rc   re   rd   rH   rG   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  rc   re   rd   rH   rG   r   )r;   rM   r  Zis_lexsorted)Zfailurer$   r$   r*   test_is_lexsorted  s    ~ ~   r  c                  C   s   t jdddt j} t j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 )Nr   r   r   Z	mergesort)kindi@B )r;   r   r   r9   r=   r  Zgroupsort_indexerargsortr1   r>   Zlexsort)r_   r`   r   r   r   r$   r$   r*   test_groupsort_indexer  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}Ô%ITrp   c                 3   s   | ]} |kV  qd S r  r$   r'   rq   Infr$   r*   	<genexpr>  r,   z%test_infinity_sort.<locals>.<genexpr>c                 3   s   | ]} |kp| u V  qd S r  r$   r  r  r$   r*   r    r,   c                 3   s   | ]} |kV  qd S r  r$   r  NegInfr$   r*   r  #  r,   c                 3   s   | ]} |k p| u V  qd S r  r$   r  r  r$   r*   r  $  r,       )
r  InfinityNegInfinityrP  allr   sortedr;   rM   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
  r;   rN   r  r$   r$   r*   test_infinity_against_nan2  s    r  c                  C   s*   t jdt jd} t| }|| u s&J d S )Nr   r-   )r;   rj   r=   r  Zensure_platform_int)rl   r   r$   r$   r*   test_ensure_platform_intE  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^ tt2 t	t 
||gt 
t j|g W d    n1 s0    Y  W d    n1 s00    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 additionrX   FT)arr_mask)b_mask)r  r  )r;   Ziinfor   r  minr   r   OverflowErrorr   Zchecked_add_with_arrrM   r1   rZ   RuntimeWarningrN   )r]   mnr$   r$   r*   test_int64_add_overflowL  sV    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   s0   t g tjtg tdd}ttg |j	 d S )Nr-   )r.   r&   )
r   r;   r   r   intr1   r>   r   moderO   r@   rk   r$   r$   r*   test_no_mode  s    zTestMode.test_no_modert  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 )NrG   r-   r   r1   r>   r   r  rO   rI  r@   rt  Z
exp_singleZdata_singleZ	exp_multiZ
data_multirP   rk   r$   r$   r*   test_mode_single  s    zTestMode.test_mode_singlec                 C   sP   t dgtd}ttdg|j t g dtd}ttg d|j d S )NrG   r-   rb   )r   r  r1   r>   r   r  rO   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 )NrG   rc   rH   rd   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 )Nr`   r_   rH   rd   ra   r-   r  )r@   rk   r   rP   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   rH   rd   r-   r  )r@   rt  rk   r   rP   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   r1   r   r   r  rO   r3  rI  r@   rk   rP   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  r   r-   )r  r,  r-  2 minrw   rw   rw   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   )rG   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-   )rG   r   r   rG   )	r   r;   r   r1   r>   r   r  rO   rI  r*  r$   r$   r*   r     s    zTestMode.test_uint64_overflowc                 C   s  t ddg}|}d}tjt|d | }W d    n1 s@0    Y  t|| t g d}t dgddgd}tjt|d | }W d    n1 s0    Y  t|| t g d}t dd	gg d
d}tjt|d | }W d    n1 s0    Y  t|| d S )NrG   rH   zCategorical.mode is deprecatedrX   rG   r_   r_   r_   r  rG   rG   rH   rd   rd   rd   r   )r   r1   rZ   r[   r  r  )r@   ra   rk   r]   rz  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-   r2  r_   r3  rG   rd   r/  r   ZTimedeltaIndexrX   )r   r   r;   r   r1   r>   r   r  rO   r8   r   r   AttributeError)r@   r  rk   r$   r$   r*   
test_index	  s    zTestMode.test_indexc                 C   s6   t g ddd}| }t dgdd}t|| d S )N)rG   rG   rd   r   r  rG   )r   r  r1   rI  ra  r$   r$   r*   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$  strr8   r&  r+  r0  r1  r   r  r5  r6  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  rd   re   r   nsrH   rG   r   Zaxisr   r-   )r;   rj   r9   r   r4  r  r.   typer   diffrG  r6  rr  r1   r>   Tr@   r.   rl   r   r   r$   r$   r*   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  rd   z
US/Pacific)r-  r
  z#cannot diff DatetimeArray on axis=1rX   rG   r:  )r   _datar   r   
ValueErrorr   r<  )r@   r7  r]   r$   r$   r*   test_diff_ea_axis3	  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   rG   rG   r   r   r-   rG   r   rU   float32)r;   rM   r   r<  rN   r1   r>   r>  r$   r$   r*   test_diff_low_precision_int:	  s    z$TestDiff.test_diff_low_precision_intN)	r   r   r   r   r   r   r?  rB  rE  r$   r$   r$   r*   r8  "	  s
   
r8  opc                 C   sf   | g d}| g d}| g d}t |tjrJt||}t|| nt||}t|| d S )N)rd   rG   rd   re   )rH   rd   rG   rG   )rd   rd   rG   rG   re   rH   )r4   r;   r   r   Zunion_with_duplicatesr1   r>   r   )rF  ZlvalsZrvalsr   r   r$   r$   r*   test_union_with_duplicatesB	  s    rG  )Pr   	itertoolsr   r  numpyr;   r   Zpandas._libsr   r  r   r   Zpandas.compatr   Zpandas.errorsr   Zpandas.util._test_decoratorsutilZ_test_decoratorsrs  Zpandas.core.dtypes.commonr   r	   r
   r   r   Zpandas.core.dtypes.dtypesr   rg  Zpandasr\   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingr1   Zpandas.core.algorithmscoreZ
algorithmsZpandas.core.arraysr   Zpandas.core.commoncommonr   r    r   r)  rc  r  r  r  r  r  r  r  r  r  r  r  r  r8  r   r   rM   rG  r$   r$   r$   r*   <module>   s^   L   P  [   R hR:#  !4 # 