o
    dH                    @   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  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l,m-Z. d dl/m0  m1Z d dl2m3Z3m4Z4 d dl5m0  m6Z7 G d	d
 d
Z8G dd dZ9d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?dd Z@G dd dZAdd ZBdd  ZCd!d" ZDd#d$ ZEd%d& ZFd'd( ZGG d)d* d*ZHG d+d, d,ZIejJKd-ejLejLgd.d/ ZMd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
date_rangetimedelta_rangeto_datetimeto_timedelta)DatetimeArrayTimedeltaArrayc                   @   sD  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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jdOejg dPed8ejdQdHged8fejdRdCej dRgdSd8ejdRdCgdSd8fgdTdUgdVdWdX Z!ejdg dYejg dZe"d[d8ejdHej dQged8fdHej dQdHgejg dZe"d[d8ejdHej dQged8fgd\d] Z#ejdg d^ejg d@e"d[d8ejdCej dRgd_d8fdCej dCdRgejg d@e"d[d8ejdCej dRgej$d8fgd`da Z%ejde&e'g dbejg dcej(d8e)dHdQgdHdQgdddefe*e'g dbejg dcej(d8e)dHdQgdHdQgdddefe*e+dfdfgdgdhejdAdAgej(d8e+dfgdgdhfgdidj Z,dkS )l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Zexpected_uniques_listr"   K/app/.heroku/python/lib/python3.10/site-packages/pandas/tests/test_algos.py
<listcomp>N       z0TestFactorize.test_factorize.<locals>.<listcomp>dtypeTexact)	factorizer   
isinstancer   from_tuplesuniquer+   npZfloat16astypefloat32boolobjectZsort_valueslistasarrayintptmassert_numpy_array_equalassert_index_equal)
selfZindex_or_series_objr    objZresult_codesZresult_uniquesconstructorZexpected_arrexpected_uniquesexpected_codesr"   r&   r'   test_factorize5   s.   

zTestFactorize.test_factorizec                 C   sl   t dddt jg}t|}|jdd\}}t jg dt jd}tddt jg}t|| t	|| d S )	N      Fuse_na_sentinelr   rC   r   rD   r*         ?       @)
r2   arraynanr   r.   r9   r   r:   r;   r<   )r=   valuessercodesuniquesrA   r@   r"   r"   r'   +test_series_factorize_use_na_sentinel_falseT   s   z9TestFactorize.test_series_factorize_use_na_sentinel_falsec                 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brR   rQ   rQ   crS   rS   rQ   rR   rS   r*   Tr!   )r   rC   rC   r   r   rD   rD   rD      )r   rC   rD         )rX   rW   rD   rC   r         @)      @      @rI   rH           )r\   rH   rI   r[   rZ   )
r   r.   r:   r;   r2   rJ   r6   r9   aranger+   )r=   rN   rO   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   rV   rC   rD   rW   r*   Tr!   )rD   rD   rV   rW   r   rC   )r   r2   rK   infr   r.   rJ   r9   r:   r;   r   r<   )r=   xrN   rO   r^   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   rC   rC   r   r*   Tr!   )rC   rC   rC   r   r   rC   Z201302MfreqZ201303z1 day 1 min1 day)r   rC   r   r   rC   rC   r   )rC   r   rC   rC   r   r   rC   )r   r   r   r.   r2   rJ   r9   r:   r;   r   r<   r   r   r   )r=   Zv1Zv2rd   rN   rO   r^   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 ]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 )NrC   rD   Or*   )rV      )na_sentinelr   )r2   rJ   rK   htObjectFactorizerlenr.   r9   setr:   r;   pdisna)r=   keyrizerrn   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)rC   rD   rW   rC   rC   r   int64r*   )FFFFFT)mask)r   rC   rD   r   r   rV   rC   rD   rW   )r2   rJ   ro   ZInt64Factorizerrq   r.   r9   r:   r;   rO   to_array)r=   datar{   rv   resultrx   r@   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 )NrC   rD   rW   )r   rC   rD   r   rV   r*   r|   )r2   rJ   rK   ro   rp   rq   r.   r3   r6   r9   r:   r;   rO   r}   )r=   r~   rv   r   rx   r@   r"   r"   r'   test_factorizer_object_with_nan   s   z-TestFactorize.test_factorizer_object_with_nanz&data, expected_codes, expected_uniques)rC   rC   rC   rD   r   r   r   nonsense)r   rC   rD   rC   rW   )r   r   r   r   )r   r   r   r   r|   )r   r   r   r|   )r   r   r   r   )r   rC   rD   rC   )r   r   r   c                 C   sD   t |\}}t|tj|tjd tj|t	d}t|| d S Nr*   )
rs   r.   r:   r;   r2   rJ   r9   comZasarray_tuplesafer6   )r=   r~   rA   r@   rN   rO   Z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 .*matchrV   Tr!   )	r2   rJ   ranger6   pytestraises	TypeErrorr   r.   )r=   Zx17msgr"   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)rC   rD   rD   rC   r*   )r   rC   rC   r   rC   rD   )r2   rJ   r9   r   r.   r:   r;   )r=   Zany_real_numpy_dtyper+   r~   rA   r@   rN   rO   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)rH       חArH   :0yE>r   rH   r*   write)r   rC   r   rD   rC   r   )rH   r   r   )	r2   rJ   float64setflagsr9   r   r.   r:   r;   r=   writabler~   rA   r@   rN   rO   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)    rC   r   r*   r   r   rC   r   r   rC   )	r2   rJ   uint64r   r9   r   r.   r:   r;   r   r"   r"   r'   test_uint64_factorize   r   z#TestFactorize.test_uint64_factorizec                 C   r   )N)             r   r*   r   r   r   r   )	r2   rJ   rz   r   r9   r   r.   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)rQ   rS   rQ   rR   rS   r*   r   )r   rC   r   rD   rC   rQ   rS   rR   )	r2   rJ   r6   r   r9   r   r.   r:   r;   r   r"   r"   r'   test_string_factorize4  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 )NrQ   rS   rR   r*   r   )r   rC   rV   rV   r   rD   rV   rC   r   )r2   rJ   rK   r   r6   r   r9   r   r.   r:   r;   r   r"   r"   r'   test_object_factorize>  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])	r2   rJ   
datetime64r   r9   rs   r.   r:   r;   r   r"   r"   r'   test_datetime64_factorizeH  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   rC   Tr,   rs   
RangeIndexZ
from_ranger   r2   r]   r9   r   r.   r:   r;   r<   )r=   r    rirx   r   r"   r"   r'   test_factorize_rangeindexU  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*   rV   r   rC   r!   Tr,   r   )r=   r    r   rx   Zri2r   r"   r"   r'   $test_factorize_rangeindex_decreasingc  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)            rC   r   r*   zgot an unexpected keywordr   T)orderF)
r2   rJ   r   r   r   r   r   r.   r:   Zassert_produces_warning)r=   r~   r"   r"   r'   test_deprecate_orderv  s   "z"TestFactorize.test_deprecate_orderr~   r   u8r*   )r   rC   r   i8)__nan__foor   r6   c                 C   sJ   t |\}}|ddg }tjg dtjd}t|| t|| d S )Nr   rC   r   r*   )r   r.   r2   rJ   r9   r:   r;   )r=   r~   rN   rO   r@   rA   r"   r"   r'   ,test_parametrized_factorize_na_value_default  s
   
z:TestFactorize.test_parametrized_factorize_na_value_defaultzdata, na_valuerG   r   )rC   r   rC   rD   rC   )r   rC   r   r   r   )rC   r   rC   r   )rQ    rQ   rR   rQ   )r"   rQ   rC   r"   rQ   rD   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_valuerC   rW   )rV   r   rV   rC   r*   )r   Zfactorize_arrayr2   rJ   r9   r:   r;   )r=   r~   r   rN   rO   r@   rA   r"   r"   r'   $test_parametrized_factorize_na_value  s
   z2TestFactorize.test_parametrized_factorize_na_valuezdata, uniques)rR   rQ   NrR   rR   rD   ZInt64Znumpy_arrayZextension_array)rw   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    rF   )rC   r   rV   rC   r*   )r   rC   rV   r   )r   r.   r2   rJ   r9   Z	safe_sortr:   r;   r/   ndarrayassert_extension_array_equal)r=   r    r~   rO   rN   rA   r@   r"   r"   r'   test_factorize_use_na_sentinel  s   z,TestFactorize.test_factorize_use_na_sentinel)rQ   NrR   rQ   r   rC   rD   r   r9   c                 C   6   t j|dd\}}tj||dd tj||dd d S NFrE   TZ
strict_nanr   r.   r:   r;   r=   r~   rA   r@   rN   rO   r"   r"   r'   +test_object_factorize_use_na_sentinel_false     z9TestFactorize.test_object_factorize_use_na_sentinel_false)rC   NrC   rD   rl   c                 C   r   r   r   r   r"   r"   r'   (test_int_factorize_use_na_sentinel_false  r   z6TestFactorize.test_int_factorize_use_na_sentinel_false)rQ   rQ   rR   )r   r   rC   category)
categoriesr+   Z2017
US/Easterntzc                 C   s*   t |\}}t|| t|| d S N)r   r.   r:   r;   r<   r   r"   r"   r'   test_factorize_mixed_values  s   z)TestFactorize.test_factorize_mixed_valuesN)-__name__
__module____qualname__r   markparametrizerB   rP   r`   re   rk   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r2   rJ   r   r6   r   rs   rK   r   r+   r   r   r   r   r   r9   r   r   r   r   r"   r"   r"   r'   r   4   s    
(0

	






	




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   d   2   size)r2   randomrandintr   r1   r/   r   r=   r_   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sJ d S )Nr   r   r   r   rl   )r2   r   r   r3   r   r1   r/   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)ra   rb   CDE  )r   rq   r   r1   )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 )NrU   rD   )r   Zfrom_arraysr2   r]   repeattilerL   r    rs   r1   r:   assert_almost_equal)r=   Zmindexrx   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)rC   rD   rD   rC   rD   rH   rI   r   TTFTF)ra   rb   rb   ra   rb   r*   )mrg   )r:   ZBYTES_DTYPESZSTRING_DTYPESr	   r   r   r   r   r
   r   r1   r2   rJ   r3   r6   r+   kindr/   r   r   r;   )r=   Zany_numpy_dtyper~   rO   r   rx   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   )
r2   rJ   r   r   r1   r:   r;   r+   r   rL   )r=   rx   Zdt_indexr   sr_   r"   r"   r'   $test_datetime64_dtype_array_returnedM  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   r2   rJ   rs   r1   r:   r;   r=   rQ   r   rx   r"   r"   r'   test_datetime_non_nsl     
zTestUnique.test_datetime_non_nsc                 C   r   )Nr   ztimedelta64[s]r*   i  i  r   r   r"   r"   r'   test_timedelta_non_nsr  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  )
r2   rJ   r   r   r1   r:   r;   r+   r   rL   )r=   rx   Ztd_indexr   r   r_   r"   r"   r'   %test_timedelta64_dtype_array_returnedx  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)rC   rD   r   r   r*   )rC   rD   r   )r   r2   r   rJ   r:   r;   r   r1   )r=   r   r^   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 )NrQ   rS   r*   )r2   rK   rs   r1   rJ   r6   r:   r;   )r=   Zduplicated_itemsr   rx   r"   r"   r'   test_nan_in_object_array  s   
z#TestUnique.test_nan_in_object_arrayc                 C   s  t td}t tdtddd}t td}| }t|| t|}t|| t tddd}| }t|| t|}t|| tt tddd}| }t|| t|}t|| tt tdtdd	}t|}| }t	|| t|}t	|| d S )
NZbacabcTr   orderedZbaabcr	  r   namer   )
r   r7   r1   r:   assert_categorical_equalr   r   rs   r   r<   )r=   rx   Z
expected_orS   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+   ri   
2016-01-01)r   r   r   r1   r   Z_from_sequencer2   rJ   r:   r   r   r<   rs   r=   r   rx   r"   r"   r'   test_datetime64tz_aware  s`   








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)rD   rC   rW   rW   )rD   rC   rW   rz   r*   rD   rC   rU   r  z2016-01-01T00:00:00.000000000r   r   r   r  r  r  ZaabcrT   r  )rs   r1   r   r:   r;   r2   rJ   r   r   r   r<   r7   r6   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      t |}t|| d S r   rs   r1   r:   r;   )r=   argrx   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   )r2   rJ   r6   rs   r1   r:   r;   r=   r_   r   rx   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       r\   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s$J t||g}t|}ttjg}t	|| d S )Nd=Q          r            )
structunpackpackr2   rJ   rs   r1   rK   r:   r;   )r=   NAN1NAN2rQ   r   rx   r"   r"   r'   test_different_nans4  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         r%  r"  r#  r   r*   rC   )r&  r'  r(  r2   rJ   rs   r1   r   )	r=   r,  Zbits_for_nan1Zbits_for_nan2r)  r*  rQ   r   Zresult_nan_bitsr"   r"   r'   test_first_nan_kept@  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*   rD   r   rC   )r2   rJ   r6   rs   r1   r   )r=   Zunique_nulls_fixtureZunique_nulls_fixture2rQ   r   r"   r"   r'   test_do_not_mangle_na_valuesQ  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 )NrC   rD   rW   r*   )r   rs   ZNAr1   rJ   r:   r   )r=   Zany_numeric_ea_dtyperM   r   rx   r"   r"   r'   test_unique_masked[  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   r2   rJ   r6   r  r   r!  r+  r   r-  r.  r/  r"   r"   r"   r'   r     s:    %)7#


r   c                 C   s<   | t jddd}t|}tt|}||ksJ d S )Nr   rm      )r2   r   r   r   Znunique_intsrq   r1   )Zindex_or_series_or_arrayrL   r   rx   r"   r"   r'   test_nunique_intsc  s   
r1  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 )NzQonly list-like objects are allowed to be passed to isin\(\), you passed a \[int\]r   rC   )r   r   r   r   isin)r=   r   r"   r"   r'   test_invalidl  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 )NrC   rD   TFrQ   rR   )r   r3  r2   rJ   r:   r;   r   r  r"   r"   r'   r`   x  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 )	Nrf   rW   periodsr   )TFFrD   r   rj   )
r   rL   r   r3  r2   rJ   r:   r;   rr   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r|d}nt|d|j}|d|}t||}t	j
|jtd	}t|| d S )
Nz
2013-01-01rW   r5  r:  r   r9  UTCr   r*   )r   _valuesZ	to_periodZtz_localizer   viewr3   r   r3  r2   zerosshaper5   r:   r;   )r=   r+   r8  dtar_   compsr   rx   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   )r6  ri   r   rD   r*   TrC   )
r   rL   r   r3  r2   r>  rq   r5   r:   r;   r=   r   r   rx   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   rT   rC   r   )TTFT)	r2   rJ   r   r   
from_codesr   r3  r:   r;   )r=   valscatsZSdZStrx   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 rE  )r2   rJ   r   rF  r   r3  r:   r;   )r=   rG  rH  catotherrx   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)r2   rK   rJ   r   r3  r:   r;   r=   rA  rL   rx   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 NrH   iAB r   rC   r*   )
r2   r   rK   r   r3  onesrq   r5   r:   r;   rC  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 rO  )
r2   r   r   rK   r3  rP  rq   r5   r:   assert_series_equal)r=   r   Zseriesr   rx   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defddZdd ZdS )z0TestIsin.test_same_object_is_in.<locals>.LikeNanreturnc                 S      dS )NFr"   )r=   rK  r"   r"   r'   __eq__     z7TestIsin.test_same_object_is_in.<locals>.LikeNan.__eq__c                 S   rU  )Nr   r"   )r=   r"   r"   r'   __hash__  rW  z9TestIsin.test_same_object_is_in.<locals>.LikeNan.__hash__N)r   r   r   r5   rV  rX  r"   r"   r"   r'   LikeNan  s    rY  TF)r:   r;   r   r3  r2   rJ   )r=   rY  rQ   rR   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 )NrK   r   Tr*   )
floatr   r3  r:   r;   r2   rJ   r8   r6   r   )r=   rA  rL   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)r2   rJ   r   r3  r:   r;   rM  r"   r"   r'   test_no_cast1  s
   zTestIsin.test_no_castemptyr*   c                 C   s6   t ddg}tddg}t||}t|| d S )NrQ   rR   F)r   r2   rJ   r   r3  r:   r;   )r=   r_  rG  rx   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 )NrK                 ?r*   )FFT)	r2   rJ   rK   r[  r6   r   r3  r:   r;   )r=   rA  rG  rx   r   r"   r"   r'   test_different_nan_objectsC  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 )Nr"  r#  r$  r   r%  r*   T)
r&  r'  r(  r2   rJ   r   r   r3  r:   r;   )r=   r)  r*  r_   Zlookup1r   rx   Zlookup2r"   r"   r'   test_different_nans_as_float64K  s   z'TestIsin.test_different_nans_as_float64c                 C   <   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 1rL   rC   rD   r  FNr   r3  r:   assert_frame_equalr=   Zdfr   Zexpected_falser"   r"   r'   test_isin_int_df_string_searcha     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 NaNrL   rD   NaNFN)r   r2   rK   r3  r:   rf  rg  r"   r"   r'   test_isin_nan_df_string_searchi  s   z'TestIsin.test_isin_nan_df_string_searchc                 C   rd  )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.4245rL   gn?g#Ed@z1.4245FNre  rg  r"   r"   r'    test_isin_float_df_string_searchq  ri  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   r2   r   r3  r:   rR  r=   rM   r   rx   r"   r"   r'   test_isin_unsigned_dtypey  s   z!TestIsin.test_isin_unsigned_dtypeN)r   r   r   r4  r`   r7  r   r   r   rB  rD  rI  rL  rN  rQ  rS  rZ  r+  r^  r   r6   r2   rJ   r`  rb  rc  rh  rk  rl  rn  r"   r"   r"   r'   r2  k  s0    %

		
r2  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	d
}t| |  d S )Ni  r   )cutrX   )gvgQg`"?gw/?g!rh?Tr
  )rC   rC   rC   rC   countr#   r  )r2   r   seedZpandas.core.reshape.tilerp  Zrandnr   value_countsr   Zfrom_breaksr3   CDTr   r:   rR  Z
sort_index)r=   rp  r_   factorr   Zbreaksr#   rx   r"   r"   r'   test_value_counts  s   

z!TestValueCounts.test_value_countsc                 C   sv   g d}t j|dd}tdgtdgdd}t|| t j|dd	d
}tddgtddgdd}t|| d S )N)rC   rD   rW   rX   rC   binsrX   )Zd;?rZ   rq  rr  rD   F)ry  r    )rz        @)r{  rZ   )r   rt  r   r   r0   r:   rR  rC  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s1J d}tjt|d t jddgdd W d    d S 1 sOw   Y  d S )	NrC   rH   rx  )rC   rH   r  rD   z*bins argument only works with numeric datar   r  )r   rt  rq   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s+J t|d	ks3J qt td
didd}t	
t|| d S )Nr  timedelta64[ns]r*   r   z
2014-01-01FdropnarC   rD   z2014-01-01 00:00:00rq  r  )r   r2   timedelta64r   r   r   rt  rq   r   r:   rR  )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d}t|| tt d	tj	gd
d}t d	tj	gtd}t|| d S )Ni  rC   i  ip  r*   rW   rD   rC   rq  rr  z
2362-01-01ignore)errors)
r   r   rt  r   r6   r:   rR  r   r2   rK   )r=   r   resZ	exp_indexr^   r"   r"   r'   &test_value_counts_datetime_outofbounds  s&   






 z6TestValueCounts.test_value_counts_datetime_outofboundsc                 C   st   t ttd}| }t g dtg ddd}tj||dd |j }| }|j	 |_	tj||dd d S )NZaaabbcr  rT   rq  rr  TZcheck_index_type)
r   r   r7   rt  r   r:   rR  rJ  Z
as_orderedr#   rC  r"   r"   r'   r    s   
z TestValueCounts.test_categoricalc                 C   s>  t ttd}tj|jd< | }t g dtg dg dddd}tj	||dd	 |jd
d}t g dtdddtjgdd}tj	||dd	 t ttddg dd}tj|jd< | }t g dtg dg ddddd}tj	||dd	 |jd
d}t g dtdddtjgg ddddd}tj	||dd	 d S )NZ
aaaaabbbccrC   )rX   rW   rD   rT   r  rq  rr  Tr  Fr  )rX   rW   rD   rC   rQ   rR   rS   )rR   rQ   rS   )r	  r   r  )
r   r   r7   r2   rK   Zilocrt  r   r:   rR  rC  r"   r"   r'   test_categorical_nans  sL   	z%TestValueCounts.test_categorical_nansc                 C   sZ   t ttdtddd}| }t g dtg dtddddd}tj||dd	 d S )
NZbbbaacabcdTr  )rW   rD   rC   r   )rR   rQ   rS   r"  rq  rr  r  )r   r   r7   rt  r:   rR  rC  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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ddtj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 tg djddtddgddgdd tg djdd}tg dddtjgdd}t || d S )Nr   Tr  rD   rC   Frq  rr  rW   rU   r*   )rU   rW   rD   )皙$@rY   rY   rY   r  )r  rY   rY   N)r  r  rY   rY   rY   Nr  )r:   rR  r   rt  r   r6   r2   rK   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d}t|| |jddd}t ddgt d	d
g|ddd}t|| d S )NrC   rD   rW   rU   TF)	normalizer  )g      ?g333333?g?rI   rH   r*   Z
proportionrr  g333333?g?)r   r2   rK   r3   rt  r:   rR  )r=   r+   r   Zs_typedr   rx   r"   r"   r'   test_value_counts_normalizedC  s   $
z,TestValueCounts.test_value_counts_normalizedc                 C   s|   t jdgt jd}tdgdgdd}t|}t|| t jddgtd}tddgddgdd}t|}t|| d S )Nr   r*   rC   rq  rr  rV   )	r2   rJ   r   r   r   rt  r:   rR  r6   )r=   r_   rx   r   r"   r"   r'   test_value_counts_uint64V  s   

z(TestValueCounts.test_value_counts_uint64N)r   r   r   rw  r|  r}  r  r  r  r  r  r  r   r   r   r2   r   r6   r  r  r"   r"   r"   r'   ro    s    +&
ro  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   rC   rD   r*   )FFFTFTfirstZkeeplast)TFTFFFF)TFTTFT   rX   T)r2   rJ   rK   r6   r   
duplicatedr:   r;   r_  	enumeratezip)r=   keysr   rx   r   tZfalsesZtruesr"   r"   r'   test_duplicated_with_nase  s:   
(



z'TestDuplicated.test_duplicated_with_nascase)
rC   rD   rC   rU   rW   rD   rX   rC   rU      g?g@gffffff
@g@gffffff@)
      ?      ?       @       @r        @      @y      @      @r  y      @      @r  r  y      @      @)
rQ   rR   rQ   erS   rR   r"  rQ   r  fr*   )
rC   r   rC      r   r   '   rC   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*   )	r2   rJ   r   r  r:   r;   r   r   rR  )
r=   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$   r"  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   rh   )r   r  r"   r"   r'   r(     r  c                 S   s   g | ]}t |qS r"   )r2   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*   )
r2   rJ   r   r  r:   r;   r   r6   r   rR  )r=   r  r  casesr  r  r  r  r  r  r  r  r   r"   r"   r'   test_datetime_likes  sX   



z"TestDuplicated.test_datetime_likesr|   r   rW   c                 C   s,   |j du sJ t| tg d d S )NT)FFF)Z	is_uniquer:   r;   r  r2   rJ   )r=   r  r"   r"   r'   test_unique_index  s   z TestDuplicated.test_unique_indexzarr, uniques)r   r   rC   rC   r   r   r   r  r  r   )r   r  r  r   )rR   rS   rQ   rR   r  r  r  r  )r   rR   rD   rQ   rW   r   )r   r  r  c                 C   s8   t jt|td}||d d < t|}t|| d S r   )r2   r_  rq   r6   rs   r1   r:   r;   )r=   r_   rO   rx   r   r"   r"   r'   test_unique_tuples$  s   
z!TestDuplicated.test_unique_tupleszarray,expected)r  r   rC   ra        ?       @r  )r  y                y      ?        ra  r  c                 C   r  r   r  )r=   rJ   rx   r   r"   r"   r'   test_unique_complex_numbers:  s   
z*TestDuplicated.test_unique_complex_numbersN)r   r   r   r  r   r   r   r2   rJ   rK   r6   r   r  r  r   rs   r   r  r  r  r"   r"   r"   r'   r  d  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FloatZIntZ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       rW   TfracreplaceZdropr   r  r  )Zreturn_inverse)getattrr:   r   ro   Float64HashTabler2   rK   locPyObjectHashTabler   samplereset_indexrL   r   drop_duplicatesr1   r;   )r=   htabletm_dtyper   makerr   s_duplicatedexpected_uniqueresult_uniqueresult_inverseZreconstrr"   r"   r'   test_hashtable_uniqueK  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  rW   Tr  r  r   )r  r:   r   ro   r  r2   rK   r  r  r   r  r  rL   r   rt   r.   r  r  r;   )r=   r  r  r   r  r   r  Zna_maskr  r  r  Zresult_reconstructZexpected_reconstructr"   r"   r'   test_hashtable_factorizes  s   



z&TestHashTable.test_hashtable_factorizeN)r   r   r   r   r   r   ro   r  ZStringHashTabler  ZInt64HashTableZUInt64HashTabler  r  r"   r"   r"   r'   r  J  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 )TestRankr_   rY   rC   rD   rW   rZ   c                 C   s`   ddl m} t|}t| }| }t|}tj||< ||}tj	||< t
|| d S )Nr   )rankdata)Zscipy.statsr  r2   rJ   isfinitecopylibalgosZrank_1drc   rK   r:   r   )r=   r_   r  r{   r   r^   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 )NrC   rD   r*   r   r   )	r2   rJ   r   r   r   r   rankr:   r;   )r=   r   r+   r^   r~   rM   r   r"   r"   r'   r`     s   
zTestRank.test_basicc                 C   s:   t jddgt jd}tddg|d}tt|| d S )NrC   rD   r*   r   )r2   rJ   r   r   r:   r;   r   r  )r=   r+   r^   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|   )rX   rU   r  )r  r  	   z%Array with ndim > 2 are not supportedr   )r2   rJ   r   r   r   r   r  )r=   r_   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)ZpctrC   i  rD   )r2   r]   r   r  maxreshape)r=   rL   r   r"   r"   r'   test_pct_max_many_rows  s   
zTestRank.test_pct_max_many_rowsN)r   r   r   r  Zskip_if_no_scipyr   r   r   r2   rK   r  	typecodesr`   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 )Nrl   r*   i        r6   rV   )	r2   rJ   r   r  padr9   r:   r;   backfill)oldnewr   rx   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rC   rU   r   r  int64_t)r   r   rC   rC   rC   rC   rD   rD   rD   rD   rD   rV   r*   rC   rX   rU   r   rV   rV   rV   rV   rV   )r   r7   r   r  r  rL   r2   rJ   r9   r:   r;   r=   r  r  ZfillerZexpect_fillerr"   r"   r'   test_backfill  s   zTestTseriesUtil.test_backfillc                 C   s   t g d}t ttd}tjd |j|j}tjg dtjd}t	
|| t ddg}t tjdtjd}tjd |j|j}tjg dtjd}t	
|| d S )	Nr  r  r  )rV   r   r   r   r   rC   rC   rC   rC   rC   rD   rD   r*   rU   r   r  )r   r7   r   r  r  rL   r2   rJ   r9   r:   r;   r]   rz   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| rJ d S )N)|rW   rW   rW   rW   rW   rW   rW   rW   rW   rW   rW   rW   rW   rW   rW   rW   rW   rW   rW   rW   rW   rW   rW   rW   rW   rW   rW   rW   rW   rW   rW   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   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   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   rz   r*   )|r0                             rm         r               r     r   r  r  r  r  rU   rX   rW   rD   rC   r   r0  r  r  r   r  r  r  r  r  r  rm   r  r  r   r	  r
  r  r  r  r  r   r  r  r  r  rU   rX   rW   rD   rC   r   r0  r  r  r   r  r  r  r  r  r  rm   r  r  r   r	  r
  r  r  r  r  r   r  r  r  r  rU   rX   rW   rD   rC   r   r0  r  r  r   r  r  r  r  r  r  rm   r  r  r   r	  r
  r  r  r  r  r   r  r  r  r  rU   rX   rW   rD   rC   r   )r2   rJ   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)r   i@B )r2   r   r   r3   r9   r  Zgroupsort_indexerargsortr:   r;   Zlexsort)rQ   rR   r   rx   ru   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 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}Ô%ITrc   c                 3   s    | ]} |kV  qd S r   r"   r$   rd   Infr"   r'   	<genexpr>;      z%test_infinity_sort.<locals>.<genexpr>c                 3   s     | ]} |kp| u V  qd S r   r"   r  r  r"   r'   r  <      c                 3   s    | ]} |kV  qd S r   r"   r  NegInfr"   r'   r  B  r  c                 3   s     | ]} |k p| u V  qd S r   r"   r  r  r"   r'   r  C  r      )
r  InfinityNegInfinityr[  allr   sortedr2   rJ   r  )Zref_numspermr"   r  r  r'   test_infinity_sort0  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   )r  r  r  r2   rK   r  r"   r"   r'   test_infinity_against_nanQ  s   r!  c                  C   s*   t jdt jd} t| }|| u sJ d S )Nr   r*   )r2   r]   r9   r  Zensure_platform_int)r_   r   r"   r"   r'   test_ensure_platform_intd  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$  )r2   Ziinforz   r  minr   r   OverflowErrorr   Zchecked_add_with_arrrJ   rK   )r   r   nr"   r"   r'   test_int64_add_overflowk  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   s0   t g tjtg tdd}ttg |j	 d S )Nr*   )r+   r#   )
r   r2   r   r   intr:   r;   r   moderL   r=   r^   r"   r"   r'   test_no_mode  s   zTestMode.test_no_moder  r  r  c                 C   s   dg}dg}dg}ddg}t ||d}t ||d}tt|j|j t| | t ||d}t ||d}tt|j|j t| | d S )NrC   r*   r   r:   r;   r   r+  rL   rR  r=   r  Z
exp_singleZdata_singleZ	exp_multiZ
data_multirM   r^   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 )NrC   r*   rT   )r   r*  r:   r;   r   r+  rL   r6   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 )NrC   rU   rD   rW   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 )NrR   rQ   rD   rW   rS   r*   r.  )r=   r^   r~   rM   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   rD   rW   r*   r.  )r=   r  r^   r~   rM   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  r8  r7  r  r8  )r  r8  r7  r  r8  r   r:   r   r   r+  rL   r<  rR  r=   r^   rM   r"   r"   r'   test_datelike_mode     zTestMode.test_datelike_modec                 C   r6  )N)-1 days0 daysr  r~  r*   )r  r=  r>  2 minrj   rj   rj   z-1 dayz-1 day 2 minr?  r?  r9  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   )rC   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*   )rC   r   r   rC   )	r   r2   r   r:   r;   r   r+  rL   rR  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 )	NrC   rD   rC   rQ   rQ   rQ   r  rC   rC   rD   rW   rW   rW   r|   )r   r   r+  r<  r:   r  )r=   rS   r^   r  r"   r"   r'   r  	  s   zTestMode.test_categoricalc                 C   s   t g d}tg dtjd}tt||j t g d}tdgt	d}tt||j t g d}tddgtjd}tt||j t g dd	d}t
jtd
d t| W d    d S 1 siw   Y  d S )Nr|   r*   rC  rQ   rD  rC   rW   r@  r~  ZTimedeltaIndexr   )r   r   r2   rz   r:   r;   r   r+  rL   r6   r   r   AttributeError)r=   r  r^   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)rC   rC   rW   r   r  rC   )r   r+  r:   rR  rm  r"   r"   r'   test_ser_mode_with_name4	  s   z TestMode.test_ser_mode_with_nameN)r   r   r   r-  r   r   r   r2   r  r0  r1  r2  r3  strr6   r5  r;  rA  rB  r  r  rF  rG  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  rW   rX   r   nsrD   rC   r   Zaxisr~  r*   )r2   r]   r3   rz   r=  r  r+   typer   diffrP  r?  r  r:   r;   Tr=   r+   r_   r   rx   r"   r"   r'   test_diff_datetimelike_nat=	  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  rW   z
US/Pacific)r6  r   z#cannot diff DatetimeArray on axis=1r   rC   rK  )r   _datar   r   
ValueErrorr   rM  )r=   r@  r   r"   r"   r'   test_diff_ea_axisM	  s
   "zTestDiff.test_diff_ea_axisZint8Zint16c                 C   sH   t jg d|d}t|d}t jt jddddgdd}t|| d S )N)r   rC   rC   r   r   r*   rC   r   rV   r4   )r2   rJ   r   rM  rK   r:   r;   rO  r"   r"   r'   test_diff_low_precision_intT	  s   z$TestDiff.test_diff_low_precision_intN)	r   r   r   r   r   r   rP  rS  rT  r"   r"   r"   r'   rI  <	  s    
rI  opc                 C   sh   | g d}| g d}| g d}t |tjr&t||}t|| d S t||}t|| d S )N)rW   rC   rW   rX   )rD   rW   rC   rC   )rW   rW   rC   rC   rX   rD   )r/   r2   r   r   Zunion_with_duplicatesr:   r;   r   )rU  ZlvalsZrvalsrx   r   r"   r"   r'   test_union_with_duplicates\	  s   rV  )Nr   	itertoolsr   r&  numpyr2   r   Zpandas._libsr   r  r   ro   Zpandas.util._test_decoratorsutilZ_test_decoratorsr  Zpandas.core.dtypes.commonr   r   r   r	   r
   Zpandas.core.dtypes.dtypesr   ru  Zpandasrs   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingr:   Zpandas.core.algorithmscoreZ
algorithmsZpandas.core.arraysr   r   Zpandas.core.commoncommonr   r   r   r1  r2  ro  r  r  r  r  r  r  r  r   r!  r"  r(  r)  rI  r   r   rJ   rV  r"   r"   r"   r'   <module>   s^    L   W  ]   d gR:#  !3  