o
    ҷh[C                    @   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r$|	tj
}||}t|tr<|jtkr<|jtkr<|	t}|rB| }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expected_uniques_listr#   J/var/www/html/venv/lib/python3.10/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objectsort_valueslistasarrayintptmassert_numpy_array_equalassert_index_equal)
selfindex_or_series_objr!   objresult_codesresult_uniquesconstructor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   rK   r   rL   r,         ?       @)
r4   arraynanr   r0   r=   r   r>   r?   r@   )rA   valuessercodesuniquesrI   rH   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brZ   rY   rY   cr[   r[   r,   rY   rZ   r[   Tr"   )r   rK   rK   r   r   rL   rL   rL      )r   rK   rL         )r`   r_   rL   rK   r         @)      @      @rQ   rP           )rd   rP   rQ   rc   rb   )
r4   rR   r9   r   r0   r>   r?   r=   aranger-   )rA   itemsrV   rW   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   r^   rK   rL   r_   r,   Tr"   )rL   rL   r^   r_   r   rK   )r   r4   rS   infr   r0   rR   r=   r>   r?   r   r@   )rA   xrV   rW   rg   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   rK   rK   r   r,   Tr"   )rK   rK   rK   r   r   rK   )r   r   r   r0   r4   rR   r=   r>   r?   r   r@   rA   v1v2rm   rV   rW   rg   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 )	N201302Mfreq201303rp   r,   Tr"   )r   r   r   r0   r4   rR   r=   r>   r?   r@   r   rq   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   rK   r   r   rK   rK   r   r,   Tr"   )rK   r   rK   rK   r   r   rK   )
r   r   r   r0   r4   rR   r=   r>   r?   r@   rq   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 ]4}|j||d}t jddd|gt jd}tt|tt|ks8J t	
t|||k t	
|| qd S )NrK   rL   Or,   )r^      )na_sentinelr   )r4   rR   rS   htObjectFactorizerlenr0   r=   setr>   r?   pdisna)rA   keyrizerr   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)rK   rL   r_   rK   rK   r   int64r,   )FFFFFT)mask)r   rK   rL   r   r   r^   rK   rL   r_   )r4   rR   r   Int64Factorizerr   r0   r=   r>   r?   rW   to_array)rA   datar   r   resultr   rH   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 )NrK   rL   r_   )r   rK   rL   r   r^   r,   r   )r4   rR   rS   r   r   r   r0   r6   r9   r=   r>   r?   rW   r   )rA   r   r   r   r   rH   r#   r#   r)   test_factorizer_object_with_nan   s   z-TestFactorize.test_factorizer_object_with_nanz&data, expected_codes, expected_uniques)rK   rK   rK   rL   r   r   r   nonsense)r   rK   rL   rK   r_   )r   r   r   r   )r   r   r   r   r   )r   r   r   r   )r   r   r   r   )r   rK   rL   rK   )r   r   r   c                 C   sv   d}t jt|d t|\}}W d    n1 sw   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FutureWarningr   r0   r?   r4   rR   r=   comasarray_tuplesafer9   )rA   r   rI   rH   msgrV   rW   expected_uniques_arrayr#   r#   r)   test_factorize_tuple_list   s   z'TestFactorize.test_factorize_tuple_listc                 C   sl   t jdd tdD td}d}tjt|d tj|d d d dd	 W d    d S 1 s/w   Y  d S )
Nc                 S      g | ]}t |qS r#   )complex)r%   ir#   r#   r)   r*         z6TestFactorize.test_complex_sorting.<locals>.<listcomp>   r,   z,'[<>]' not supported between instances of .*r   r^   Tr"   )	r4   rR   ranger9   pytestraises	TypeErrorr   r0   )rA   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)rK   rL   rL   rK   r,   )r   rK   rK   r   rK   rL   )r4   rR   r=   r   r0   r>   r?   )rA   any_real_numpy_dtyper-   r   rI   rH   rV   rW   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)rP       חArP   :0yE>r   rP   r,   write)r   rK   r   rL   rK   r   )rP   r   r   )	r4   rR   float64setflagsr=   r   r0   r>   r?   rA   writabler   rI   rH   rV   rW   r#   r#   r)   test_float64_factorize     z$TestFactorize.test_float64_factorizec                 C   r   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)    rK   r   r,   r   r   rK   r   r   rK   )	r4   rR   uint64r   r=   r   r0   r>   r?   r   r#   r#   r)   test_uint64_factorize#  r   z#TestFactorize.test_uint64_factorizec                 C   r   )N)             r   r,   r   r   r   r   )	r4   rR   r   r   r=   r   r0   r>   r?   r   r#   r#   r)   test_int64_factorize-  r   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)rY   r[   rY   rZ   r[   r,   r   )r   rK   r   rL   rK   rY   r[   rZ   )	r4   rR   r9   r   r=   r   r0   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 )NrY   r[   rZ   r,   r   )r   rK   r^   r^   r   rL   r^   rK   r   )r4   rR   rS   r   r9   r   r=   r   r0   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])	r4   rR   
datetime64r   r=   r   r0   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   rK   Tr.   r   
RangeIndex
from_ranger   r4   re   r=   r   r0   r>   r?   r@   )rA   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}|r3|d d d d |d d d d f}tj||d}t	
|d |d  t	j|d |d dd |j|d}t	
|d |d  t	j|d |d dd d S )	Nr   r,   r^   r   rK   r"   Tr.   r   )rA   r!   r   r   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 s#w   Y  t	d t| W d    d S 1 s>w   Y  d S )N)            rK   r   r,   zgot an unexpected keywordr   T)orderF)
r4   rR   r   r   r   r   r   r0   r>   r   )rA   r   r#   r#   r)   test_deprecate_ordery  s   "z"TestFactorize.test_deprecate_orderr   r   u8r,   )r   rK   r   i8)__nan__foor   r9   c                 C   sJ   t |\}}|ddg }tjg dtjd}t|| t|| d S )Nr   rK   r   r,   )r   r0   r4   rR   r=   r>   r?   )rA   r   rV   rW   rH   rI   r#   r#   r)   ,test_parametrized_factorize_na_value_default  s
   
z:TestFactorize.test_parametrized_factorize_na_value_defaultzdata, na_valuerO   r   )rK   r   rK   rL   rK   )r   rK   r   r   r   )rK   r   rK   r   )rY    rY   rZ   rY   )r#   rY   rK   r#   rY   rL   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_valuerK   r_   )r^   r   r^   rK   r,   )r   factorize_arrayr4   rR   r=   r>   r?   )rA   r   r   rV   rW   rH   rI   r#   r#   r)   $test_parametrized_factorize_na_value  s
   z2TestFactorize.test_parametrized_factorize_na_valuezdata, uniques)rZ   rY   NrZ   rZ   rL   Int64numpy_arrayextension_array)r   c                 C   s   t j||dd\}}|rtjg dtjd}t |}ntjg dtjd}|}t|| t|tj	r<t|| d S t
|| d S )NT)r!   rN   )rK   r   r^   rK   r,   )r   rK   r^   r   )r   r0   r4   rR   r=   	safe_sortr>   r?   r1   ndarrayassert_extension_array_equal)rA   r!   r   rW   rV   rI   rH   r#   r#   r)   test_factorize_use_na_sentinel  s   z,TestFactorize.test_factorize_use_na_sentinel)rY   NrZ   rY   r   rK   rL   r   r=   c                 C   s@   t jtj|tddd\}}tj||dd tj||dd d S )Nr,   FrM   T
strict_nan)r   r0   r4   rR   r9   r>   r?   rA   r   rI   rH   rV   rW   r#   r#   r)   +test_object_factorize_use_na_sentinel_false  s
   
z9TestFactorize.test_object_factorize_use_na_sentinel_false)rK   NrK   rL   r}   c                 C   sh   d}t jt|d tj|dd\}}W d    n1 sw   Y  t j||dd t j||dd d S )Nr   r   FrM   Tr   )r>   r   r   r   r0   r?   )rA   r   rI   rH   r   rV   rW   r#   r#   r)   (test_int_factorize_use_na_sentinel_false  s   z6TestFactorize.test_int_factorize_use_na_sentinel_false)rY   rY   rZ   )r   r   rK   category)
categoriesr-   2017
US/Easterntzc                 C   s*   t |\}}t|| t|| d S N)r   r0   r>   r?   r@   r   r#   r#   r)   test_factorize_mixed_values  s   z)TestFactorize.test_factorize_mixed_valuesN)/__name__
__module____qualname__r   markparametrizerJ   rX   ri   rn   rt   rz   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r4   rR   r   r9   r   r   rS   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sJ d S )NrL   r   d   2   size)r4   randomdefault_rngintegersr   r3   r1   r   rA   rh   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sJ d S )NrL   r   r   r   r   r}   )	r4   r   r   r   r6   r   r3   r1   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)rj   rk   CDEr,     )r4   rR   r9   r   r   r   r3   )rA   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 )Nr]   rL   )r   from_arraysr4   re   repeattilerT   r!   r   r3   r>   assert_almost_equal)rA   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}nYt|rg d}ddg}nLt|r+g d}ddg}n?t|rHtddtddtddg}tddtddg}n"t|rUg d}dd	g}nt|rbg d
}ddg}ng d}ddg}t	||d
 }tj||d}|t jv r|t}|jjdv rt|ttfsJ t|}t || d S )N)rK   rL   rL   rK   rL   rP   rQ   r   TTFTF)rj   rk   rk   rj   rk   r,   )mrv   )r>   BYTES_DTYPESSTRING_DTYPESr	   r   r   r   r   r
   r   r3   r4   rR   r6   r9   r-   kindr1   r   r   r?   )rA   any_numpy_dtyper   rW   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s"J t|}t|}t|| |j|jks9J |j	}t|}t|| |j|jksOJ d S )N2015-01-03T00:00:00.0000000002015-01-01T00:00:00.000000000r   r,   )r  r  r  )
r4   rR   r   r   r3   r>   r?   r-   r   rT   )rA   r   dt_indexr   srh   r#   r#   r)   $test_datetime64_dtype_array_returnedT  s(   


z/TestUnique.test_datetime64_dtype_array_returnedc                 C   >   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  r4   rR   r   r3   r>   r?   rA   rY   r   r   r#   r#   r)   test_datetime_non_nss     
zTestUnique.test_datetime_non_nsc                 C   r  )Nr  ztimedelta64[s]r,   i  i  r  r   r#   r#   r)   test_timedelta_non_nsy  r"  z TestUnique.test_timedelta_non_nsc                 C   s   t jg ddd}tg d}t|}t|| |j|jks"J t|}t|}t|| |j|jks9J |j	}t|}t|| |j|jksOJ d S )N)y  n  '  m8[ns]r,   )r$  r%  r$  r&  r%  )
r4   rR   r   r   r3   r>   r?   r-   r   rT   )rA   r   td_indexr   r  rh   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)rK   rL   r   r   r,   )rK   rL   r   )r   r4   r   rR   r>   r?   r   r3   )rA   r  rg   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 )NrY   r[   r,   )r4   rS   r   r3   rR   r9   r>   r?   )rA   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 )
NbacabcTr   orderedbaabcr0  r   namer   )
r   r;   r3   r>   assert_categorical_equalr   r   r   r   r@   )rA   r   
expected_or[   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-   rx   
2016-01-01)r   r   r   r3   r   _from_sequencer4   rR   r>   r   r   r@   r   rA   r   r   r#   r#   r)   test_datetime64tz_aware  s`   








z"TestUnique.test_datetime64tz_awarec                 C   sd  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 sw   Y  tjg dtd}t|| t tttd}ttd}t|| d S )N)rL   rK   r_   r_   )rL   rK   r_   r   r,   rL   rK   r]   r:  z2016-01-01T00:00:00.000000000r   r   r   r;  r<  r=  z5unique with argument that is not not a Series, Index,r   aabcr\   r.  )r   r3   r   r>   r?   r4   rR   r   r   r   r@   r   r   r;   r9   r   r6  )rA   r   r   r   r#   r#   r)   test_order_of_appearance  s6   

z#TestUnique.test_order_of_appearancezarg ,expected)1rD  2rD  rE  r,   )r   r   c                 C   L   d}t jt|d t|}W d    n1 sw   Y  t || d S N-unique with argument that is not not a Seriesr   r>   r   r   r   r3   r?   )rA   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   )r4   rR   r9   r   r3   r>   r?   rA   rh   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       rd   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s$J t||g}t|}ttjg}t	|| d S )Nd=Q          r            )
structunpackpackr4   rR   r   r3   rS   r>   r?   )rA   NAN1NAN2rY   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s"J ||ks(J tj||g|d}t|}|jdks=J t dt d|d d }||ksQJ d S )Nl         rR  rO  rP  r   r,   rK   )rS  rT  rU  r4   rR   r   r3   r   )	rA   rY  bits_for_nan1bits_for_nan2rV  rW  rY   r   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sJ |d |u s#J |d |u s+J d S )Nr,   rL   r   rK   )r4   rR   r9   r   r3   r   )rA   unique_nulls_fixtureunique_nulls_fixture2rY   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 )NrK   rL   r_   r,   )r   r   NAr3   rR   r>   r   )rA   any_numeric_ea_dtyperU   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,  r9  rA  rC  r   r   r   r4   rR   r9   rK  rM  rN  rX  r   r]  r`  rc  r#   r#   r#   r)   r     s:    %)7%


r   c                 C   sB   | t jdddd}t|}tt|}||ksJ d S )NrL   r   r~      )r4   r   r   r   r   nunique_intsr   r3   )index_or_series_or_arrayrT   r   r   r#   r#   r)   test_nunique_intsn  s   
rg  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 sw   Y  t jt|d tddg W d    n1 s8w   Y  t jt|d tdgd W d    d S 1 sWw   Y  d S )NzOonly list-like objects are allowed to be passed to isin\(\), you passed a `int`r   rK   )r   r   r   r   isin)rA   r   r#   r#   r)   test_invalidw  s   "zTestIsin.test_invalidc                 C   sB  d}t jt|d tddgdg}W d    n1 sw   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 sw   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w   Y  tddg}t || d S )	N+isin with argument that is not not a Seriesr   rK   rL   TFrY   rZ   )	r>   r   r   r   ri  r4   rR   r?   r   )rA   r   r   r   r#   r#   r)   ri     sD   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 )	Nro   r_   periodsr   )TFFrL   r  r{   )
r   rT   r   ri  r4   rR   r>   r?   r   r   rL  r#   r#   r)   test_i8  s(   zTestIsin.test_i8dtype1)r'  r   M8[ns, UTC]	period[D]r-   )r   f8r   c                 C   s   t dddj}|dkr|d}n|dkr|d}nt|d|j}|d|}t||}t	j
|jtd	}t|| d S )
Nz
2013-01-01r_   rl  rq  r  rp  UTCr   r,   )r   _values	to_periodtz_localizer   viewr6   r   ri  r4   zerosshaper8   r>   r?   )rA   r-   ro  dtarh   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 )
N20000101i r  )rm  rx   r   rL   r,   TrK   )
r   rT   r   ri  r4   rx  r   r8   r>   r?   rA   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   r\   rK   r   )TTFT)	r4   rR   r   r   
from_codesr   ri  r>   r?   )rA   valscatsSd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  )r4   rR   r   r  r   ri  r>   r?   )rA   r  r  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 s(w   Y  t|| d S )NTrk  r   )	r4   rS   rR   r>   r   r   r   ri  r?   rA   r{  rT   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 NrP   iAB r   rK   r,   )r4   r  rS   r   ri  rR   onesr   r8   r>   r?   r~  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 r  )r4   r  r   rS   ri  rR   r  r   r8   r>   assert_series_equal)rA   r  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) t t|g|gtdg t t|g|gtdg W d    d S 1 sCw   Y  d S )Nc                   @   s"   e Zd ZdefddZdd ZdS )z0TestIsin.test_same_object_is_in.<locals>.LikeNanreturnc                 S      dS )NFr#   )rA   r  r#   r#   r)   __eq__     z7TestIsin.test_same_object_is_in.<locals>.LikeNan.__eq__c                 S   r  )Nr   r#   )rA   r#   r#   r)   __hash__!  r  z9TestIsin.test_same_object_is_in.<locals>.LikeNan.__hash__N)r   r   r   r8   r  r  r#   r#   r#   r)   LikeNan  s    r  rk  r   TF)r>   r   r   r?   r   ri  r4   rR   )rA   r  rY   rZ   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 )NrS   r   Tr,   )
floatr   ri  r4   rR   r>   r?   r<   r9   r   )rA   r{  rT   r   r#   r#   r)   rX  -  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 s(w   Y  t|| d S )Nss*   42Fz2isin with argument that is not not a Series, Indexr   )r4   rR   r>   r   r   r   ri  r?   r  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 )NrY   rZ   F)r   r4   rR   r   ri  r>   r?   )rA   r  r  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 )NrS                 ?r,   )FFT)	r4   rR   rS   r  r9   r   ri  r>   r?   )rA   r{  r  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s$J 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 )NrO  rP  rQ  r   rR  r,   T)
rS  rT  rU  r4   rR   r   r   ri  r>   r?   )rA   rV  rW  rh   lookup1r   r   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 1rT   rK   rL   rD  FN)r   ri  r>   assert_frame_equalrA   dfr   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 NaNrT   rL   NaNr,   FN)r   r4   rS   ri  rR   r9   r>   r  r  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.4245rT   gn?g#Ed@z1.4245r,   FN)r   ri  r4   rR   r9   r>   r  r  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   r4   r   ri  r>   r  rA   rU   r   r   r#   r#   r)   test_isin_unsigned_dtype  s   z!TestIsin.test_isin_unsigned_dtypeN)r   r   r   rj  ri   rn  r   r   r   r|  r  r  r  r  r  r  r  rX  r  r   r9   r4   rR   r  r  r  r  r  r  r  r#   r#   r#   r)   rh  v  s0    )

	
rh  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ejdejedfdd Zdd Zdd ZdS )TestValueCountsc                 C   s   t jdd}t|d}d}tjt|d t	|}W d    n1 s'w   Y  g d}t
|tdd}tg d|d	d
}t| |  d S )Ni  r`   !pandas.value_counts is deprecatedr   )gV-g}?5^Ig/$ۿgףp=
?gʡE?Tr2  )rK   r   rL   rK   countr$   r4  )r4   r   r   standard_normalr   r>   r   r   r   value_countsr   from_breaksr6   CDTr   r  
sort_index)rA   rh   factorr   r   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w   Y  tdgtdgdd	}t || t jt|d tj|d
dd}W d    n1 sPw   Y  td
d
gtddgdd	}t || d S )N)rK   rL   r_   r`   r  r   rK   binsr`   )Zd;?rb   r  r  rL   F)r  r!   )r        @)r  rb   )	r>   r   r   r   r  r   r   r2   r  )rA   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w   Y  t|dks+J t jt|d tjtddgdd}W d    n1 sIw   Y  t|dksVJ t jt|d ttg d}W d    n1 sqw   Y  t|dks~J d}t	j
t|d6 t jt|d tjtjd	dgtd
dd W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )Nr  r   rK   rP   r  )rK   rP   rD  rL   z*bins argument only works with numeric datarD  r,   )r>   r   r   r   r  r4   rR   r   r   r   r   r   r9   )rA   msg2r   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}d}||fD ]5}tjt|d t	|}tj	|dd	}W d    n1 s7w   Y  t
|d
ksDJ t
|dksLJ qt tdd
idd}tjt|d tt	|| W d    d S 1 ssw   Y  d S )Nr&  timedelta64[ns]r,   r   z
2014-01-01r  r   FdropnarK   rL   z2014-01-01 00:00:00r  r3  )r   r4   timedelta64r   r   r>   r   r   r   r  r   r   r  )rA   tddtr   r  vc
vc_with_na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  rK   i  ip  r,   r_   rL   rK   r  r  z
2362-01-01ignore)errors)
r   r   r  r   r9   r>   r  r   r4   rS   )rA   r  res	exp_indexrg   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 )Naaabbcr  r\   r  r  Tcheck_index_type)
r   r   r;   r  r   r>   r  r  
as_orderedr$   r~  r#   r#   r)   r9    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 )N
aaaaabbbccrK   )r`   r_   rL   r\   r5  r  r  Tr  Fr  )r`   r_   rL   rK   rY   rZ   r[   )rZ   rY   r[   )r0  r   r/  )
r   r   r;   r4   rS   ilocr  r   r>   r  r~  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 )
NbbbaacabcdTr/  )r_   rL   rK   r   )rZ   rY   r[   rO  r  r  r  )r   r   r;   r  r>   r  r~  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  Tr  rL   rK   Fr  r  r_   r]   r,   )r]   r_   rL   )TFN)皙$@ra   ra   ra   r  )r  ra   ra   N)r  r  ra   ra   ra   Nr  )ra   r  N)r>   r  r   r  r   r9   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 )NrK   rL   r_   r]   TF)	normalizer  )g      ?g333333?g?rQ   rP   r,   
proportionr  g333333?g?)r   r4   rS   r6   r  r>   r  )rA   r-   r  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 s+w   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 saw   Y  t	|| d S )	Nr   r,   rK   r  r  r  r   r^   )r4   rR   r   r   r>   r   r   r   r  r  r9   )rA   rh   r   r   r   r#   r#   r)   test_value_counts_uint64w  s   z(TestValueCounts.test_value_counts_uint64c                 C   sX   t dddddt jg}t|jdd}tg dtjg ddd	d
d}t|| d S )Nr_   rK   rL   r`   r  )rL   rL   rK   ))r  rQ   )rQ   rc   )rc   rb   zinterval[float64, right]r,   r  r  )	r4   rR   rS   r   r  r   r2   r>   r  )rA   rT   r   r   r#   r#   r)   test_value_counts_series  s   z(TestValueCounts.test_value_counts_seriesN)r   r   r   r  r  r  r  r  r9  r  r  r  r   r   r   r4   r   r9   r  r  r  r#   r#   r#   r)   r    s    +&
r  c                   @   s$  e Zd Zdd Zejdeg dedddej	ddddej	d	g
eg d
ejg de
dejg dejdgdd Zdd Zejdeg deddgdd Zejdg dg dfg dddgfg dg dfgdd  Zejd!g d"ejg d#e
dfgd$d% Zd&S )'TestDuplicatedc                 C   s  t jddt jddt jgtd}t|}t g d}t|| tj|dd}t g d}t|| tj|dd}t g d	}t|| tj|d
d}t g d}t|| t jdtd}t	t
ddt jt jgd dt jdt jgd D ]\}}|||< q{t|}d
gd }dgd }t || }t|| tj|dd}t || }t|| tj|d
d}t || }t|| d S )Nr   rK   rL   r,   )FFFTFTfirstkeeplast)TFTFFFF)TFTTFT   r`   T)r4   rR   rS   r9   r   
duplicatedr>   r?   r  	enumeratezip)rA   keysr   r   r   tfalsestruesr#   r#   r)   test_duplicated_with_nas  s:   
(



z'TestDuplicated.test_duplicated_with_nascase)
rK   rL   rK   r]   r_   rL   r`   rK   r]      g?g@gffffff
@g@gffffff@)
      ?      ?       @       @r        @      @y      @      @r  y      @      @r  r  y      @      @)
rY   rZ   rY   er[   rZ   rO  rY   r  fr,   )
rK   r   rK      r   r   '   rK   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 ]&}|jdd}t|| |jdd}t|| |jdd}t|| qCt|t|ddfD ],}	|	jdd}t|t| |	jdd}t|t| |	jdd}t|t| qtd S )	N
FFTFFTFTTF
TTTTFFFFFFr  r  r  Fr   r,   )	r4   rR   r   r  r>   r?   r   r   r  )
rA   r  	exp_firstexp_last	exp_false	res_firstres_last	res_falseidxr  r#   r#   r)   test_numeric_object_likes  s8   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 ]&}|jdd}t|| |jdd}	t|	| |jdd}
t|
| qt|t|ddt|tdfD ],}|jdd}t	|t| |jdd}	t	|	t| |jdd}
t	|
t| qqKd 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   r   r#   r   r%   rO  r#   r#   r)   r*     r   z6TestDuplicated.test_datetime_likes.<locals>.<listcomp>c                 S      g | ]}t |d dqS )r   r   r  r  r#   r#   r)   r*         c                 S   r  )r  rw   )r   r  r#   r#   r)   r*     r  c                 S   s   g | ]}t |qS r#   )r4   r   r  r#   r#   r)   r*     r+   c                 S   r   r#   )r   r  r#   r#   r)   r*     r   r  r  r  r  r  Fr   r,   )
r4   rR   r   r  r>   r?   r   r9   r   r  )rA   r  r  casesr  r  r   r  r  r  r  r  r  r#   r#   r)   test_datetime_likes  sX   



z"TestDuplicated.test_datetime_likesr   r   r_   c                 C   s,   |j du sJ t| tg d d S )NT)FFF)	is_uniquer>   r?   r  r4   rR   )rA   r  r#   r#   r)   test_unique_indexP  s   z TestDuplicated.test_unique_indexzarr, uniques)r   r   rK   rK   r   r   r   r  r  r   )r   r  r  r   )rZ   r[   rY   rZ   r  r  r  r  )r   rZ   rL   rY   r_   r   )r   r  r  c                 C   sj   t jt|td}||d d < d}tjt|d t|}W d    n1 s(w   Y  t	|| d S )Nr,   rH  r   )
r4   r  r   r9   r>   r   r   r   r3   r?   )rA   rh   rW   r   r   r   r#   r#   r)   test_unique_tuplesU  s   z!TestDuplicated.test_unique_tupleszarray,expected)r  r   rK   r        ?       @r  )r  y                y      ?        r  r  c                 C   rF  rG  rI  )rA   rR   r   r   r   r#   r#   r)   test_unique_complex_numbersm  s
   z*TestDuplicated.test_unique_complex_numbersN)r   r   r   r  r   r   r   r4   rR   rS   r9   r   r  r  r   r   r   r  r  r  r#   r#   r#   r)   r    sN    ' 

( 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FloatIntUIntc                 C   s   t td| d }t|d}|tjkrtj|jd< n|tjkr+tjd t	g|jdd< |j
dddjdd	}|jj|d
 |jddj}| |j}t|| | j|jdd\}}	t|| ||	 }
t|
|j d S )Nmaker   r      r_   Tfracreplacedropr   r  r  )return_inverse)getattrr>   r   r   Float64HashTabler4   rS   locPyObjectHashTabler   samplereset_indexrT   r   drop_duplicatesr3   r?   )rA   htabletm_dtyper   makerr  s_duplicatedexpected_uniqueresult_uniqueresult_inversereconstrr#   r#   r)   test_hashtable_unique  s"   


z#TestHashTable.test_hashtable_uniquec                 C   s   t td| d }t|d}|tjkrtj|jd< n|tjkr+tjd t	g|jdd< |j
dddjdd	}|jj|d
 | j}| |j\}}	|  j}
t||
 ||	|   }| j}t|| d S )Nr!  r   r  r"  r#  r_   Tr$  r'  r   )r*  r>   r   r   r+  r4   rS   r,  r-  r   r.  r/  rT   r   r   r0   r  r0  r?   )rA   r1  r2  r   r3  r  r4  na_maskr6  r7  r5  result_reconstructexpected_reconstructr#   r#   r)   test_hashtable_factorize  s   



z&TestHashTable.test_hashtable_factorizeN)r   r   r   r   r   r   r   r-  StringHashTabler+  Int64HashTableUInt64HashTabler9  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 )TestRankrh   ra   rK   rL   r_   rb   c                 C   s`   t d}t|}t| }| }t|}tj||< |	|}tj
||< t|| d S )Nzscipy.stats)r   importorskipr4   rR   isfinitecopylibalgosrank_1drl   rankdatarS   r>   r  )rA   rh   sp_statsr   r   rg   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 )NrK   rL   r,   r   r   )	r4   rR   r   r   r   r   rankr>   r?   )rA   r   r-   rg   r   rU   r   r#   r#   r)   ri     s   
zTestRank.test_basicc                 C   s:   t jddgt jd}tddg|d}tt|| d S )NrK   rL   r,   r   )r4   rR   r   r   r>   r?   r   rK  )rA   r-   rg   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    d S 1 s)w   Y  d S )Nr   )r`   r]   r  )r  r  	   z%Array with ndim > 2 are not supportedr   )r4   rR   r   r   r   r   rK  )rA   rh   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s,J d S )Ni  T)pctrK   i  rL   )r4   re   r   rK  maxreshape)rA   rT   r   r#   r#   r)   test_pct_max_many_rows  s   
zTestRank.test_pct_max_many_rowsN)r   r   r   r   r   r   r4   rS   rI  	typecodesri   r   r   r*  rM  
single_cpurQ  r#   r#   r#   r)   rA    s    

	
rA  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        r9   r^   )	r4   rR   r   rE  padr=   r>   r?   backfill)oldnewr   r   r#   r#   r)   !test_pad_backfill_object_segfault
  s   rZ  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rK   r]   r   rT  int64_t)r   r   rK   rK   rK   rK   rL   rL   rL   rL   rL   r^   r,   rK   r`   r]   r   r^   r^   r^   r^   r^   )r   r;   r   rE  rW  rT   r4   rR   r=   r>   r?   rA   rX  rY  filler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\  rT  r]  )r^   r   r   r   r   rK   rK   rK   rK   rK   rL   rL   r,   r]   r   r^  )r   r;   r   rE  rV  rT   r4   rR   r=   r>   r?   re   r   r_  r#   r#   r)   test_pad1  s   zTestTseriesUtil.test_padN)r   r   r   rb  rc  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| r2J d S )Nr_       rL   rK   r   r   r,   rU  r^   r`   )r4   rR   r;   r   rE  is_lexsorted)failurer#   r#   r)   test_is_lexsortedB  s   &rg  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 )NrL   r   r  r   	mergesort)r  i@B )r4   r   r   r   r6   r=   rE  groupsort_indexerargsortr>   r?   lexsort)rY   rZ   r   r   r   r#   r#   r)   test_groupsort_indexerQ  s   rl  c                     s  t   t  tddddtd g} t fdd| D s"J t fdd| D s/J   kr7  ks9J   k sA  krCJ t  t  ksMJ t  t  krWJ tfd	d| D sdJ tfd
d| D sqJ kryks{J k skrJ t  t  ksJ t  t  krJ t| D ]
}t|| ksJ qtt  gd 	  tt  gd 	  d S )Nz-infg}Ô%Ir   g}Ô%ITrl   c                 3   s    | ]} |kV  qd S r   r#   r%   rm   Infr#   r)   	<genexpr>u      z%test_infinity_sort.<locals>.<genexpr>c                 3   s     | ]} |kp| u V  qd S r   r#   rm  rn  r#   r)   rp  v      c                 3   s    | ]} |kV  qd S r   r#   rm  NegInfr#   r)   rp  |  rq  c                 3   s     | ]} |k p| u V  qd S r   r#   rm  rs  r#   r)   rp  }  rr  rd  )
rE  InfinityNegInfinityr  allr   sortedr4   rR   rj  )ref_numspermr#   ro  rt  r)   test_infinity_sortj  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r$J | tjkr+J | tjks2J |tjkr9J |tjkr@J |tjk rGJ |tjkrNJ |tjkrUJ |tjks\J d S r   )rE  ru  rv  r4   rS   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,   )r4   re   r=   rE  ensure_platform_int)rh   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 s-w   Y  tjt| d t	t 
||gt 
||g W d    n1 sTw   Y  tjt| d t	t 
||g| W d    n1 svw   Y  tjt| d t	t 
||gt 
||g W d    n1 sw   Y  tjt| d t	t 
||gt 
||g W d    n1 sw   Y  tjt| d tj	t 
||gt 
||gt 
ddgd W d    n1 sw   Y  tjt| d tj	t 
||gt 
||gt 
ddgd W d    n	1 s!w   Y  tjt| d% tj	t 
||gt 
||gt 
ddgt 
ddgd W d    n	1 sVw   Y  tjt| d t	t 
||gt 
t j|g W d    n	1 sw   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  )r4   iinfor   rO  minr   r   OverflowErrorr   checked_add_with_arrrR   rS   )r   r  nr#   r#   r)   test_int64_add_overflow  sf   """$$$$$
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   r4   r   r   intr>   r?   r   moderR   rT   rA   rg   r#   r#   r)   test_no_mode  s   zTestMode.test_no_moder  rJ  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 )NrK   r,   r   r>   r?   r   r  rT   r  rA   r  
exp_singledata_single	exp_multi
data_multirU   rg   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 )NrK   r,   r\   )r   r  r>   r?   r   r  rT   r9   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 )NrK   r]   rL   r_   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 )NrZ   rY   rL   r_   r[   r,   r  )rA   rg   r   rU   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   rL   r_   r,   r  )rA   r  rg   r   rU   r#   r#   r)   test_strobj_multi_char  s   zTestMode.test_strobj_multi_charc                 C      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  rT   rt  r  rA   rg   rU   r#   r#   r)   test_datelike_mode     zTestMode.test_datelike_modec                 C   r  )N)-1 days0 daysr	  r  r,   )r	  r  r  2 minr{   r{   r{   z-1 dayz-1 day 2 minr  r  r  r  r#   r#   r)   test_timedelta_mode*  r  zTestMode.test_timedelta_modec                 C   s@   t dg}t g d}tt|j|j t| | d S )Nr   )rK   r   r   r  r  r#   r#   r)   test_mixed_dtype8  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,   )rK   r   r   rK   )	r   r4   r   r>   r?   r   r  rT   r  r  r#   r#   r)   r*  >  s   zTestMode.test_uint64_overflowc                 C   s   t ddg}|}t| j}t|| t g d}t dgddgd}t| j}t|| t g d}t ddgg dd}t| j}t|| d S )	NrK   rL   rK   rY   rY   rY   r5  rK   rK   rL   r_   r_   r_   r   )r   r   r  rt  r>   r6  )rA   r[   rg   r  r#   r#   r)   r9  I  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    d S 1 siw   Y  d S )Nr   r,   r  rY   r  rK   r_   r  r  TimedeltaIndexr   )r   r   r4   r   r>   r?   r   r  rT   r9   r   r   AttributeError)rA   r  rg   r#   r#   r)   
test_indexY  s    "zTestMode.test_indexc                 C   s6   t g ddd}| }t dgdd}t|| d S )N)rK   rK   r_   r   r3  rK   )r   r  r>   r  r  r#   r#   r)   test_ser_mode_with_namen  s   z TestMode.test_ser_mode_with_nameN)r   r   r   r  r   r   r   r4   rR  r  r  r  r  strr9   r  r  r  r  r*  r9  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 )NrT  r_   r`   r   nsrL   rK   r   axisr  r,   )r4   re   r6   r   rw  rP  r-   typer   diffr  ry  r  r>   r?   TrA   r-   rh   r   r   r#   r#   r)   test_diff_datetimelike_natw  s    z#TestDiff.test_diff_datetimelike_natc                 C   sX   t ddddj}d}tjt|d tj|ddd W d    d S 1 s%w   Y  d S )	Nr>  r_   z
US/Pacific)rm  r   z#cannot diff DatetimeArray on axis=1r   rK   r  )r   _datar   r   
ValueErrorr   r  )rA   rz  r   r#   r#   r)   test_diff_ea_axis  s
   "zTestDiff.test_diff_ea_axis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   rK   rK   r   r   r,   rK   r   r^   r7   )r4   rR   r   r  rS   r>   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  r  r  r#   r#   r#   r)   r  v  s    
r  opc                 C   sh   | g d}| g d}| g d}t |tjr&t||}t|| d S t||}t|| d S )N)r_   rK   r_   r`   )rL   r_   rK   rK   )r_   r_   rK   rK   r`   rL   )r1   r4   r   r   union_with_duplicatesr>   r?   r   )r  lvalsrvalsr   r   r#   r#   r)   test_union_with_duplicates  s   r  )Kr   	itertoolsr   rS  numpyr4   r   pandas._libsr   rE  r   r   pandas.core.dtypes.commonr   r   r   r	   r
   pandas.core.dtypes.dtypesr   r  pandasr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   pandas._testing_testingr>   pandas.core.algorithmscore
algorithmspandas.core.arraysr   r   pandas.core.commoncommonr   r    r   rg  rh  r  r  r  rA  rZ  r[  rg  rl  r|  r}  r  r  r  r  r   r   rR   r  r#   r#   r#   r)   <module>   sX    P   ^  a  #  kR9#!3  