o
    gK                    @   s  d dl m Z  d dlmZ d dlZd dlZd dlZd dlmZ	m
Z d dlmZ d dlm  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/Z0 d dl1m2  m3Z d d	l4m5Z5 d dl6m2  m7Z8 G d
d dZ9G 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?dd Z@G dd dZAdd ZBG dd dZCd d! ZDd"d# ZEd$d% ZFd&d' ZGd(d) ZHd*d+ ZIG d,d- d-ZJG d.d/ d/ZKejLMd0ejNejNgd1d2 ZOdS )3    )datetime)permutationsN)algos	hashtable)np_array_datetime64_compat)is_bool_dtypeis_complex_dtypeis_float_dtypeis_integer_dtypeis_object_dtype)CategoricalDtype)CategoricalCategoricalIndex	DataFrameDatetimeIndexIndexIntervalIndex
MultiIndexNaTPeriodPeriodIndexSeries	Timedelta	Timestamp
date_rangetimedelta_rangeto_datetimeto_timedelta)DatetimeArrayc                   @   s  e Zd Zejdddgdd Zdd Z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+d, Zejdddgd-d. Zd/d0 Zejd1ejg d2d3d4ejg d5d6d4ejg d7d8d4gd9d: Zejd;ejg d<d3d4d=fejg d>d3d4d?fejg d@d6d4dAfejg dBd6d4d?fejg dCed4dDfejg dEed4dFfejg dGed4dHfgdIdJ ZejdddgejdKg dLejjdMejg dNed4ejdOdDged4fejdPd?ejdPgdQd4ejdPd?gdQd4fgdRdSgdTdUdV Zejdg dWejg dXe dYd4ejdDdOejged4fdDejdOdDgejg dXe dYd4ejdDdOejged4fgdZd[ Z!ejdg d\ejg d]e dYd4ejd?dPejgd^d4fd?ejd?dPgejg d]e dYd4ejd?dPejgej"d4fgd_d` Z#daS )bTestFactorizesortTFc           	         s   |}|j |d\}}t}t|trtj}|| }|r | }t|  fdd|D }tj	|tj
d}t|| t|| d S )Nr    c                    s   g | ]}  |qS  index).0valexpected_uniques_listr"   U/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/test_algos.py
<listcomp>C       z0TestFactorize.test_factorize.<locals>.<listcomp>dtype)	factorizer   
isinstancer   from_tuplesuniquesort_valueslistnpasarrayintptmassert_numpy_array_equalassert_index_equal)	selfindex_or_series_objr    objresult_codesresult_uniquesconstructorexpected_uniquesexpected_codesr"   r'   r)   test_factorize3   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      na_sentinelr   rC   r   rD   r,         ?       @)
r4   arraynanr   r.   r6   r   r7   r8   r9   )r:   valuessercodesuniquesrA   r@   r"   r"   r)   &test_series_factorize_na_sentinel_noneI   s   z4TestFactorize.test_series_factorize_na_sentinel_nonec                 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.   r7   r8   r4   rJ   objectr6   aranger-   )r:   rN   rO   exparrr"   r"   r)   
test_basicU   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BQ	@)r   r   rV   rC   rD   rW   r,   Tr!   )rD   rD   rV   rW   r   rC   )r   r4   rK   infr   r.   rJ   r6   r7   r8   r   r9   )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   201302Mfreq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.   r4   rJ   r6   r7   r8   r   r9   r   r   r   )r:   v1v2rf   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 ].}|j|d|d}t jddd|gd	d}tt|tt|ks8J t	t
|||k qt jdt jdgdd}d
}|j|d|d}t jg dd	d}tt|tt|kspJ t	t
|||k d S )NrC   rD   Or,   )rV      Tr    rF   r   int32rV   F)rD   rV   r   )r4   rJ   rK   htObjectFactorizerlenr.   setr7   r8   pdisna)r:   keyrizerrF   idsexpectedr"   r"   r)   test_factorize_nan   s   z TestFactorize.test_factorize_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   rC   rD   rW   )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,   )
rz   r.   r7   r8   r4   rJ   r6   comasarray_tuplesafer]   )r:   datarA   r@   rN   rO   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,   zJunorderable types: .* [<>] .*|'[<>]' not supported between instances of .*matchrV   Tr!   )	r4   rJ   ranger]   pytestraises	TypeErrorr   r.   )r:   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   )r4   rJ   r6   r   r.   r7   r8   )r:   any_real_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   )	r4   rJ   float64setflagsr6   r   r.   r7   r8   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   )	r4   rJ   uint64r   r6   r   r.   r7   r8   r   r"   r"   r)   test_uint64_factorize  r   z#TestFactorize.test_uint64_factorizec                 C   r   )N)             r   r,   r   r   r   r   )	r4   rJ   int64r   r6   r   r.   r7   r8   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   )	r4   rJ   r]   r   r6   r   r.   r7   r8   r   r"   r"   r)   test_string_factorize%  s   z#TestFactorize.test_string_factorizec              	   C   s|   t jddd t jddtdgtd}|j|d t jg dt jd}t jg dtd}t|\}}t	
|| t	
|| d S )NrQ   rS   rR   r,   r   )r   rC   rV   rV   r   rD   rV   rC   r   )r4   rJ   rK   r   r]   r   r6   r   r.   r7   r8   r   r"   r"   r)   test_object_factorize/  s    z#TestFactorize.test_object_factorizec                 C   sj   t t dg}|j|d t jdgt jd}t jdgdd}t|\}}t|| t|| d S )Nz2020-01-01T00:00:00.000r   r   r,   z2020-01-01T00:00:00.000000000datetime64[ns])	r4   rJ   
datetime64r   r6   rz   r.   r7   r8   r   r"   r"   r)   test_datetime64_factorize9  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   Texactrz   
RangeIndex
from_ranger   r4   r^   r6   r   r.   r7   r8   r9   )r:   r    rir   resultr"   r"   r)   test_factorize_rangeindexF  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   r   ri2r   r"   r"   r)   $test_factorize_rangeindex_decreasingT  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)
r4   rJ   r   r   r   r   r   r.   r7   assert_produces_warning)r:   r   r"   r"   r)   test_deprecate_orderg  s   "z"TestFactorize.test_deprecate_orderr   r   u8r,   )r   rC   r   i8)__nan__foor   r]   c                 C   sJ   t |\}}|ddg }tjg dtjd}t|| t|| d S )Nr   rC   r   r,   )r   r.   r4   rJ   r6   r7   r8   )r:   r   rN   rO   r@   rA   r"   r"   r)   ,test_parametrized_factorize_na_value_defaultp  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   factorize_arrayr4   rJ   r6   r7   r8   )r:   r   r   rN   rO   r@   rA   r"   r"   r)   $test_parametrized_factorize_na_value  s
   z2TestFactorize.test_parametrized_factorize_na_valuerF   )rV   id   zdata, uniques)rR   rQ   NrR   rR   rD   Int64numpy_arrayextension_arrayr~   c                 C   s   t j|||d\}}|rtjdd|dgtjd}t |}ntjdd|dgtjd}|}t|| t|tj	r@t|| d S t
|| d S )Nrt   rC   r   r,   )r   r.   r4   rJ   r6   	safe_sortr7   r8   r/   ndarrayassert_extension_array_equal)r:   r    rF   r   rO   rN   rA   r@   r"   r"   r)   test_factorize_na_sentinel  s   z(TestFactorize.test_factorize_na_sentinel)rQ   NrR   rQ   )r   rD   rC   r   r6   c                 C   .   t j|d d\}}t|| t|| d S NrE   r   r.   r7   r8   r:   r   rA   r@   rN   rO   r"   r"   r)   &test_object_factorize_na_sentinel_none     z4TestFactorize.test_object_factorize_na_sentinel_none)rC   NrC   rD   )r   rD   r   rC   rr   c                 C   r   r   r   r   r"   r"   r)   #test_int_factorize_na_sentinel_none  r   z1TestFactorize.test_int_factorize_na_sentinel_noneN)$__name__
__module____qualname__r   markparametrizerB   rP   ra   rg   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   r4   rJ   r   r]   r   rz   rK   r   r-   r   r   r   r"   r"   r"   r)   r   2   s    
)1
	






	



r   c                	   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zejddejdd ged!fd"ejd#ged!fgd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0S )1
TestUniquec                 C   s0   t jjdddd}t|}t|t jsJ d S )Nr   r   2   size)r4   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   rr   )r4   r   r   astyper   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)rb   rc   CDE  )r   rx   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   from_arraysr4   r^   repeattilerL   r    rz   r1   r7   assert_almost_equal)r:   mindexr   r   r"   r"   r)   test_on_index_object  s    

zTestUnique.test_on_index_objectc                 C   s   |t jt j v rtd nYt|rg d}ddg}nLt|r(g d}ddg}n?t|rEtddtddtddg}tddtddg}n"t	|rRg d}d	d
g}nt
|r_g d}ddg}ng d}ddg}t||d }tj||d}t || d S )Nzskip string dtype)rC   rD   rD   rC   rD   rH   rI   r   TTFTF)rb   rc   rc   rb   rc   r,   )r7   BYTES_DTYPESSTRING_DTYPESr   skipr
   r	   r   r   r   r   r   r1   r4   rJ   r8   )r:   any_numpy_dtyper   rO   r   r   r"   r"   r)   test_dtype_preservation  s,   



z"TestUnique.test_dtype_preservationc                 C   s   t ddgdd}tg d}t|}t|| |j|jks!J t|}t|}t|| |j|jks8J |j}t|}t|| |j|jksNJ d S )Nz"2015-01-03T00:00:00.000000000+0000z"2015-01-01T00:00:00.000000000+0000M8[ns]r,   )z2015-01-03T00:00:00.0000000002015-01-01T00:00:00.000000000r  )	r   r   r   r1   r7   r8   r-   r   rL   )r:   r   dt_indexr   sr`   r"   r"   r)   $test_datetime64_dtype_array_returned  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  r   r4   rJ   rz   r1   r7   r8   r:   rQ   r   r   r"   r"   r)   test_datetime_non_ns=     
zTestUnique.test_datetime_non_nsc                 C   r  )Nr  ztimedelta64[s]r,   l     RFl    jIGtimedelta64[ns]r	  r
  r"   r"   r)   test_timedelta_non_nsC  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   rJ   r   r   r1   r7   r8   r-   r   rL   )r:   r   td_indexr   r  r`   r"   r"   r)   %test_timedelta64_dtype_array_returnedI  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   r4   r   rJ   r7   r8   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,   )r4   rK   rz   r1   rJ   r]   r7   r8   )r:   duplicated_itemsr   r   r"   r"   r)   test_nan_in_object_arraya  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
categoriesorderedbaabcr  r   )namer  )
r   r3   r1   r7   assert_categorical_equalr   r   rz   r   r9   )r:   r   
expected_orS   r   r  cir"   r"   r)   test_categoricalg  s.   



zTestUnique.test_categoricalc              	   C   s  t ttdddtdddg }tttdddg}t	|| ttdddtdddg }t
dgdd d}t|| tt ttdddtdddg}tttdddg}t	|| tttdddtdddg}t
dgdd d}t|| d S )	N20160101
US/Easterntzz2016-01-01 00:00:00-05002016-01-01 00:00:00datetime64[ns, US/Eastern]r-   rl   
2016-01-01)r   r   r   r1   r   _from_sequencer4   rJ   r7   r   r   r9   rz   r:   r   r   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   r   r,   rD   rC   rU   r(  z2016-01-01T00:00:00.000000000r   r)  r*  r,  r-  r.  aabcrT   r  )rz   r1   r   r7   r8   r4   rJ   r   r   r   r9   r3   r]   r   r$  r1  r"   r"   r)   test_order_of_appearance  s0   

z#TestUnique.test_order_of_appearancezarg ,expected)1r5  2r5  r6  r,   )r   r   c                 C   s   t |}t|| d S N)rz   r1   r7   r8   )r:   argr   r   r"   r"   r)   test_tuple_with_strings  s   
	z"TestUnique.test_tuple_with_stringsc                 C   sB   t jdd gtd}t|}t jdd gtd}tj||dd d S )Nr   r,   T)
strict_nan)r4   rJ   r]   rz   r1   r7   r8   r:   r`   r   r   r"   r"   r)   test_obj_none_preservation  s   
z%TestUnique.test_obj_none_preservationc                 C   s4   t ddg}t|}t dg}t|| d S )N       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packr4   rJ   rz   r1   rK   r7   r8   )r:   NAN1NAN2rQ   r   r   r"   r"   r)   test_different_nans  s   
zTestUnique.test_different_nansc           	   	   C   s   d}d}t dt d|d }t dt d|d }||ks"J ||ks(J tjtfD ]+}tj||g|d}t|}|j	dksDJ t dt d|d d }||ksXJ q-d S )Nl         rB  r?  r@  r   r,   rC   )
rC  rD  rE  r4   r   r]   rJ   rz   r1   r   )	r:   bits_for_nan1bits_for_nan2rF  rG  el_typerQ   r   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   )r4   rJ   r]   rz   r1   r   )r:   unique_nulls_fixtureunique_nulls_fixture2rQ   r   r"   r"   r)   test_do_not_mangle_na_values#  s   
z'TestUnique.test_do_not_mangle_na_valuesN)r   r   r   r   r   r   r   r   r  r  r  r  r  r  r'  r2  r4  r   r   r   r4   rJ   r]   r9  r<  r>  rH  rM  rP  r"   r"   r"   r)   r     s6    *7#
r   c                   @   s   e Zd Zdd Zdd Zdd Zejdg dejd	g d
dd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zejdg eed eg gd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-S ).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_invalid/  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   rR  r4   rJ   r7   r8   r   r1  r"   r"   r)   ra   <  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 )	Nrh   rW   periodsr   )TFFrD   r   rn   )
r   rL   r   rR  r4   rJ   r7   r8   ry   r   r;  r"   r"   r)   test_i8b  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-01rW   rT  rY  r   rX  UTCr   r,   )r   _values	to_periodtz_localizer   viewr   r   rR  r4   zerosshapeboolr7   r8   )r:   r-   rW  dtar`   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  )rU  rl   r   rD   r,   TrC   )
r   rL   r   rR  r4   r`  rx   rb  r7   r8   r:   r  r   r   r"   r"   r)   
test_large  s   zTestIsin.test_largec                 C   sv   t g d}g d}ttdg||}ttdgt ddg|}t g d}t||}t|| d S N)r   rC   rD   r   rT   rC   r   )TTFT)	r4   rJ   r   r   
from_codesr   rR  r7   r8   )r:   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 ri  )r4   rJ   r   rj  r   rR  r7   r8   )r:   rk  rl  catotherr   r   r"   r"   r)   test_categorical_isin  s   zTestIsin.test_categorical_isinc                 C   s8   t jg}t jg}t dg}t||}t|| d S )NT)r4   rK   rJ   r   rR  r7   r8   r:   rd  rL   r   r   r"   r"   r)   test_same_nan_is_in  s
   zTestIsin.test_same_nan_is_inc                 C   sJ   t dd}t j|d< t|t jdg}t jt|td}t	|| d S NrH   iAB r   rC   r,   )
r4   r   rK   r   rR  onesrx   rb  r7   r8   rg  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 ru  )
r4   r   r   rK   rR  rv  rx   rb  r7   assert_series_equal)r:   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}| | }}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:   rq  r"   r"   r)   __eq__     z7TestIsin.test_same_object_is_in.<locals>.LikeNan.__eq__c                 S   r|  )Nr   r"   r:   r"   r"   r)   __hash__  r~  z9TestIsin.test_same_object_is_in.<locals>.LikeNan.__hash__N)r   r   r   rb  r}  r  r"   r"   r"   r)   LikeNan  s    r  TF)r7   r8   r   rR  r4   rJ   )r:   r  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   rR  r7   r8   r4   rJ   r5   r]   r   )r:   rd  rL   r   r"   r"   r)   rH    s   

zTestIsin.test_different_nansc                 C   s8   ddg}dg}t ddg}t||}t|| d S )Nss*   42F)r4   rJ   r   rR  r7   r8   rs  r"   r"   r)   test_no_cast  s
   zTestIsin.test_no_castemptyr,   c                 C   s6   t ddg}tddg}t||}t|| d S )NrQ   rR   F)r   r4   rJ   r   rR  r7   r8   )r:   r  rk  r   r   r"   r"   r)   
test_empty   s   zTestIsin.test_emptyc                 C   s\   t jdt jd tdgtd}t jtdgtd}t g d}t||}t|| d S )NrK   y              ?r,   )FFT)	r4   rJ   rK   r  r]   r   rR  r7   r8   )r:   rd  rk  r   r   r"   r"   r)   test_different_nan_objects	  s
   z#TestIsin.test_different_nan_objectsc                 C   s   t dt ddd }t dt ddd }||ksJ ||k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@  rA  r   rB  r,   T)
rC  rD  rE  r4   rJ   r   r   rR  r7   r8   )r:   rF  rG  r`   lookup1r   r   lookup2r"   r"   r)   test_different_nans_as_float64  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   r5  FNr   rR  r7   assert_frame_equalr:   dfr   expected_falser"   r"   r)   test_isin_int_df_string_search'     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   r4   rK   rR  r7   r  r  r"   r"   r)   test_isin_nan_df_string_search/  s   z'TestIsin.test_isin_nan_df_string_searchc                 C   r  )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.4245FNr  r  r"   r"   r)    test_isin_float_df_string_search7  r  z)TestIsin.test_isin_float_df_string_searchN)r   r   r   rS  ra   rV  r   r   r   re  rh  ro  rr  rt  rw  rz  r  rH  r  r   r]   r4   rJ   r  r  r  r  r  r  r"   r"   r"   r)   rQ  .  s.    &

		
rQ  c                   @   sd   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S )TestValueCountsc                 C   s~   t jd ddlm} t jd}||d}t|}g d}t	|
tdd}tg d|d	}t| |  d S )
Ni  r   )cutrX   )gvgQg`"?gw/?g!rh?Tr!  )rC   rC   rC   rC   r#   )r4   r   seedpandas.core.reshape.tiler  randnr   value_countsr   from_breaksr   CDTr   r7   rx  
sort_index)r:   r  r`   factorr   breaksr$   r   r"   r"   r)   test_value_countsA  s   

z!TestValueCounts.test_value_countsc                 C   sr   g d}t j|dd}tdgtdgd}t|| t j|ddd	}tddgtd
dgd}t|| d S )N)rC   rD   rW   rX   rC   binsrX   )Zd;?rZ   r#   rD   F)r  r    )r        @)r  rZ   )r   r  r   r   r0   r7   rx  rg  r"   r"   r)   test_value_counts_binsO  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   r  )rC   rH   r5  rD   z*bins argument only works with numeric datar   r5  )r   r  rx   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}t	
t|| d S )Nr  r  r,   r   z
2014-01-01FdropnarC   rD   z2014-01-01 00:00:00)r   r4   timedelta64r   r   r   r  rx   r   r7   rx  )r:   tddtr  vc
vc_with_naexp_dtr"   r"   r)   test_value_counts_nati  s   
z%TestValueCounts.test_value_counts_natc              
   C   s   t tdddtdddtdddtdddtdddtdddg}| }ttdddtdddtdddgtd}t g d|d}t|| tt dtj	gd	d
}t dtj	gtd}t|| d S )Ni  rC   i  ip  r,   rW   rD   rC   r#   z
2362-01-01ignore)errors)
r   r   r  r   r]   r7   rx  r   r4   rK   )r:   r  res	exp_indexr_   r"   r"   r)   &test_value_counts_datetime_outofboundsw  s&   






 z6TestValueCounts.test_value_counts_datetime_outofboundsc                 C   sr   t ttd}| }t g dtg dd}tj||dd |j }| }|j	 |_	tj||dd d S )Naaabbcr  rT   r#   Tcheck_index_type)
r   r   r3   r  r   r7   rx  rp  
as_orderedr$   rg  r"   r"   r)   r'    s   
z TestValueCounts.test_categoricalc                 C   s6  t ttd}tj|jd< | }t g dtg dg ddd}tj	||dd |jd	d
}t g dtdddtjgd}tj	||dd t ttddg dd}tj|jd< | }t g dtg dg dddd}tj	||dd |jd	d
}t g dtdddtjgg dddd}tj	||dd d S )N
aaaaabbbccrC   )rX   rW   rD   rT   r#  r#   Tr  Fr  )rX   rW   rD   rC   rQ   rR   rS   )rR   rQ   rS   )r  r  r  )
r   r   r3   r4   rK   ilocr  r   r7   rx  rg  r"   r"   r)   test_categorical_nans  s>   z%TestValueCounts.test_categorical_nansc                 C   sX   t ttdtddd}| }t g dtg dtdddd}tj||dd d S )	NbbbaacabcdTr  )rW   rD   rC   r   )rR   rQ   rS   r?  r#   r  )r   r   r3   r  r7   rx  rg  r"   r"   r)   test_categorical_zeroes  s   z'TestValueCounts.test_categorical_zeroesc                 C   s  t tg djddtddgddgd t tg djddtddgddgd t tdgd dgd  d gd	  jddtddgddgd t tdgd	 dgd  d gd  jddtg d
ddtjgd t tg djddtddgddgd t tg djddtddgddgd t tg djddtddgddgd tg djdd}tg dddtjgd}t || d S )Nr   Tr  rD   rC   Fr#   rW   rU   )rU   rW   rD   )皙$@rY   rY   rY   r  )r  rY   rY   N)r  r  rY   rY   rY   Nr  )r7   rx  r   r  r4   rK   r1  r"   r"   r)   test_dropna  s>   ((zTestValueCounts.test_dropnac                 C   s   t dgd dgd  tjgd  }tjtdf}|D ]?}||}|jddd}t g d	t tjd
dg|dd}t|| |jddd}t ddgt d
dg|dd}t|| qd S )NrC   rD   rW   rU   r   TF)	normalizer  )      ?g333333?g?rI   rH   r,   r#   g333333?g?)	r   r4   rK   r   r]   r   r  r7   rx  )r:   r  dtypests_typedr   r   r"   r"   r)   test_value_counts_normalized  s   $
z,TestValueCounts.test_value_counts_normalizedc                 C   sx   t jdgt jd}tdgdgd}t|}t|| t jddgtd}tddgddgd}t|}t|| d S )Nr   r,   rC   r#   rV   )	r4   rJ   r   r   r   r  r7   rx  r]   )r:   r`   r   r   r"   r"   r)   test_value_counts_uint64  s   

z(TestValueCounts.test_value_counts_uint64N)r   r   r   r  r  r  r  r  r'  r  r  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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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keeplast)TFTFFFF)TFTTFT   rX   T)r4   rJ   rK   r]   r   
duplicatedr7   r8   r  	enumeratezip)r:   keysr   r   r   r  falsestruesr"   r"   r)   test_duplicated_with_nas  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  Fcategoryr,   )	r4   rJ   r   r  r7   r8   r   r   rx  )
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   rk   )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   rJ   r   r  r7   r8   r   r]   r   rx  )r:   r  r  casesr  r  r  r  r  r  r  r  r  r"   r"   r)   test_datetime_likes{  sX   



z"TestDuplicated.test_datetime_likesc                 C   sN   t g dtddg}|D ]}|jdu sJ t| tg d qd S )Nr   r   rW   T)FFF)	r   rz   r   	is_uniquer7   r8   r  r4   rJ   )r:   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   )r4   r  rx   r]   rz   r1   r7   r8   )r:   r`   rO   r   r   r"   r"   r)   test_unique_tuples  s   
z!TestDuplicated.test_unique_tuplesN)r   r   r   r  r   r   r   r4   rJ   rK   r]   r   r  r  r  r  r"   r"   r"   r)   r    s<    ' 

(Sr  c                   @   sb  e Z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e	j
dejejddfejejddfejejddfejejddfejejddfejejd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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ejejejejejgd$d% Zd&S )'TestHashTablec                 C   s   t  }|dd |ddksJ tjtdd |dd W d    n1 s+w   Y  tjtdd |d W d    d S 1 sHw   Y  d S )Nr|   rC   z'key' has incorrect typer   rX   r  z'val' has incorrect type)rv   StringHashTableset_itemget_itemr   r   r   )r:   tblr"   r"   r)   (test_string_hashtable_set_item_signature  s   "z6TestHashTable.test_string_hashtable_set_item_signaturec              	   C   s^   t ddt jddddg}|j|d t }|| t|	|t j
t|t jd d S )	NgX9v@rd   irU   rD   rW   r   r,   )r4   rJ   rK   r   rv   Float64HashTablemap_locationsr7   r8   lookupr^   rx   r6   r:   r   xsmr"   r"   r)   test_lookup_nan  s
   
&zTestHashTable.test_lookup_nanc                 C   s:   d}t |}|dd |dd t|dksJ d S )NrX   r\   r   r=  rC   )rv   r	  r  rx   )r:   Nr  r"   r"   r)   test_add_signed_zeros  s
   
z#TestHashTable.test_add_signed_zerosc                 C   s|   t dt ddd }t dt ddd }||ksJ ||ks$J t }||d ||d t|dks<J d S )Nr?  r@  rA  r   rB  rC   )rC  rD  rE  rv   r	  r  rx   )r:   rF  rG  r  r"   r"   r)   test_add_different_nans  s   z%TestHashTable.test_add_different_nansc                 C   sX   t jg dt jd}|j|d t }|| t|	|t j
t|t jd d S )Nr  r,   r   )r4   rJ   r   r   rv   UInt64HashTabler
  r7   r8   r  r^   rx   r6   r  r"   r"   r)   test_lookup_overflow  s
   
&z"TestHashTable.test_lookup_overflowc                 C   s:   t g dtjd}tjg dtjd}t| | d S r  )r   r4   r   rJ   r7   r8   r1   r  r"   r"   r)   test_get_unique$  s   zTestHashTable.test_get_uniquenvalsr   r   z&htable, uniques, dtype, safely_resizesr]   FTr   r   ru   r   c           
      C   s   t jt jd|d}|j|d | }| }||d | |dd | }|j}	|r5|||dd ntj	t
dd |||dd W d    n1 sOw   Y  |  |j|	ks_J d S )Nr   r,   r   r   rV   zexternal reference.*r   )r4   rJ   r   r  r   
get_labelsto_arrayra  r   r   
ValueError)
r:   r   htablerO   r-   safely_resizesr  rk  tmpoldshaper"   r"   r)   test_vector_resize)  s   z TestHashTable.test_vector_resizez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       rW   Tfracreplacedropr   r  r  )return_inverse)getattrr7   r   rv   r	  r4   rK   locPyObjectHashTabler   samplereset_indexrL   r   drop_duplicatesr1   r8   )r:   r  tm_dtyper   makerr  s_duplicatedexpected_uniqueresult_uniqueresult_inversereconstrr"   r"   r)   test_hashtable_uniqueV  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,  r7   r   rv   r	  r4   rK   r-  r.  r   r/  r0  rL   r   r{   r.   r  r1  r8   )r:   r  r2  r   r3  r  r4  na_maskr6  r7  r5  result_reconstructexpected_reconstructr"   r"   r)   test_hashtable_factorize~  s   



z&TestHashTable.test_hashtable_factorizer   c                 C   s    t t jjd }||d}d S )NrC   )	size_hint)r4   iinfouint32max)r:   r   r>  r  r"   r"   r)   test_hashtable_large_sizehint  s   z+TestHashTable.test_hashtable_large_sizehintN)r   r   r   r  r  r  r  r  r  r   r   r   rv   r.  ObjectVectorr  r	  Float64VectorInt64HashTableInt64VectorInt32HashTableInt32Vectorr  UInt64Vectorr  r9  r=  rB  r"   r"   r"   r)   r    sd    !



r  c                  C   sB   t tjd} t| g d}t| jg d}t|| d S )Nr   )r   g      ?r  g      ?rH   )	r   r4   r   r  r   quantilerL   r7   r   )r  r   r   r"   r"   r)   test_quantile  s   rK  c                  C   s   t jdddd} t| }t j| ddd }tj||dd d	| t j	t
| d
< t| }t j| ddd dd  }tj||dd d S )NrC   i   i   r   T)return_indexF)check_dtyperV   r   )r4   r   r   r   rv   unique_label_indicesr1   r7   r8   choicerx   )rQ   leftrightr"   r"   r)   test_unique_label_indices  s   

rR  c                	   @   s   e Zd Zejdd Zejde	j
d dd Zdd Zd	d
 Zejjejjejjde	de	dddgddgddd ZdS )TestRankc                    sn   ddl m   fdd}|ttjtjdddtjdddtjg
 |td	tjdddtjddd	tjg
 d S )
Nr   rankdatac                    s^   t |  }|  } tj| t jt| t jdd}t j| |<  | }t j	||< t
|| d S )Nr,   )labels)r4   isfinitecopylibalgosrank_1dr`  rx   r6   re   rK   r7   r   )r`   maskr   r_   rT  r"   r)   _check  s   

z*TestRank.test_scipy_compat.<locals>._checkrY   rC   rD   rW   rZ   )scipy.statsrU  r4   rJ   rK   )r:   r\  r"   rT  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   )	r4   rJ   r   r   r   r   rankr7   r8   )r:   r   r-   r_   r   rM   r   r"   r"   r)   ra     s   
zTestRank.test_basicc                 C   sL   t jddgt jd}t jt jfD ]}tddg|d}tt|| qd S )NrC   rD   r,   r   )	r4   rJ   r   r   r   r7   r8   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   )r4   rJ   r   r   r   r   r`  )r:   r`   r   r"   r"   r)   test_too_many_ndims  s
   "zTestRank.test_too_many_ndimsrL   i  i  rD   1d2dr   c                 C   s"   t j|dd }|dksJ d S )NT)pctrC   )r   r`  rA  )r:   rL   r   r"   r"   r)   test_pct_max_many_rows  s   	zTestRank.test_pct_max_many_rowsN)r   r   r   r  skip_if_no_scipyr^  r   r   r   r4   	typecodesra   r  rb  singlehigh_memoryr^   reshaperf  r"   r"   r"   r)   rS    s    

	rS  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 )Nrr   r,   i        r]   rV   )	r4   rJ   r   rY  padr6   r7   r8   backfill)oldnewr   r   r"   r"   r)   !test_pad_backfill_object_segfault  s   rr  c                   @   sD   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S )TestTseriesUtilc                 C      d S r7  r"   r  r"   r"   r)   test_combineFunc  r~  z TestTseriesUtil.test_combineFuncc                 C   rt  r7  r"   r  r"   r"   r)   test_reindex  r~  zTestTseriesUtil.test_reindexc                 C   rt  r7  r"   r  r"   r"   r)   	test_isna!  r~  zTestTseriesUtil.test_isnac                 C   rt  r7  r"   r  r"   r"   r)   test_groupby$  r~  zTestTseriesUtil.test_groupbyc                 C   rt  r7  r"   r  r"   r"   r)   test_groupby_withnull'  r~  z%TestTseriesUtil.test_groupby_withnullc                 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   rl  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   r3   r   rY  ro  rL   r4   rJ   r6   r7   r8   r:   rp  rq  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d}tjd |j|j}tjg dtjd}t	
|| d S )	Nrz  rl  r{  )rV   r   r   r   r   rC   rC   rC   rC   rC   rD   rD   r,   rU   r   r|  )r   r3   r   rY  rn  rL   r4   rJ   r6   r7   r8   r^   r}  r"   r"   r)   test_pad;  s   zTestTseriesUtil.test_padN)
r   r   r   ru  rv  rw  rx  ry  r  r  r"   r"   r"   r)   rs    s    rs  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   r   r,   )|                              rs         r               rl     r   ra  r  r  r  rU   rX   rW   rD   rC   r   r  r  r  r  r  r  r  r  r  r  rs   r  r  r   r  r  r  r  rl  r  r   ra  r  r  r  rU   rX   rW   rD   rC   r   r  r  r  r  r  r  r  r  r  r  rs   r  r  r   r  r  r  r  rl  r  r   ra  r  r  r  rU   rX   rW   rD   rC   r   r  r  r  r  r  r  r  r  r  r  rs   r  r  r   r  r  r  r  rl  r  r   ra  r  r  r  rU   rX   rW   rD   rC   r   )r4   rJ   rY  is_lexsorted)failurer"   r"   r)   test_is_lexsortedL  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   	mergesort)kindi@B )r4   r   r   r   r6   rY  groupsort_indexerargsortr7   r8   lexsort)rQ   rR   r   r   r|   r"   r"   r)   test_groupsort_indexerU  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}Ô%ITre   c                 3   s    | ]} |kV  qd S r7  r"   r%   rf   Infr"   r)   	<genexpr>y      z%test_infinity_sort.<locals>.<genexpr>c                 3   s     | ]} |kp| u V  qd S r7  r"   r  r  r"   r)   r  z      c                 3   s    | ]} |kV  qd S r7  r"   r  NegInfr"   r)   r    r  c                 3   s     | ]} |k p| u V  qd S r7  r"   r  r  r"   r)   r    r      )
rY  InfinityNegInfinityr  allr   sortedr4   rJ   r  )ref_numspermr"   r  r  r)   test_infinity_sortn  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 r7  )rY  r  r  r4   rK   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   r^   r6   rY  ensure_platform_int)r`   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 t	t 
||gt 
t j|g W d    n	1 sw   Y  W d    n	1 sw   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   r?  r   rA  minr   r   OverflowErrorr   checked_add_with_arrrJ   r7   r   RuntimeWarningrK   )r   r  nr"   r"   r)   test_int64_add_overflow  sl   """$$$$$
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S )TestModec                 C   s.   t g tjtg tdd}ttg | d S )Nr,   )r-   r$   )	r   r4   r   r   intr7   rx  r   mode)r:   r_   r"   r"   r)   test_no_mode  s   zTestMode.test_no_modec                 C   s   dg}dg}dg}ddg}t jd t jd  D ],}t||d}t||d}tt|| t||d}t||d}tt|| qtdgtd}ttdg| tg dtd}ttg d| d S )NrC   r_  r   r,   rT   )	r4   rh  r   r7   rx  r   r  r  r]   r:   
exp_singledata_single	exp_multi
data_multir  r  r_   r"   r"   r)   test_mode_single  s   zTestMode.test_mode_singlec                 C   s   dg}dgd dgd  }ddg}dgd dgd  dgd  }t jd t jd  D ],}t||d}t||d}tt|| t||d}t||d}tt|| q*d S )NrC   rU   rD   rW   r_  r   r,   )r4   rh  r   r7   rx  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|| dg}dgd dgd  }ttfD ]}t ||d}t ||d}tt|| q3d S )	NrR   rQ   rD   rW   rS   r,   barr   )r   r7   rx  r   r  strr]   )r:   r_   r   r  r  r"   r"   r)   test_strobj_mode		  s   zTestMode.test_strobj_modec                 C   h   t g ddd}t g ddd}tt|| t ddgdd}t g ddd}tt|| d S )N)
1900-05-03r  
2013-01-02r   r,   )r  r  r  r  r  )r  r  r  r  r  r   r7   rx  r   r  r:   r_   r  r"   r"   r)   test_datelike_mode	     zTestMode.test_datelike_modec                 C   r  )N)-1 days0 daysr  r  r,   )r  r  r  2 minrn   rn   rn   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|| d S )Nr   )rC   r   r   r  r  r"   r"   r)   test_mixed_dtype1	  s   
zTestMode.test_mixed_dtypec                 C   sn   t dgtjd}t g dtjd}tt|| t ddgtjd}t ddgtjd}tt|| d S )Nr   r,   )rC   r   r   rC   )r   r4   r   r7   rx  r   r  r  r"   r"   r)   r  6	  s   zTestMode.test_uint64_overflowc                 C   s   t ddg}|}tt|| t| | t g d}t dgddgd}tt|| t| | t g d}t ddgg dd}tt|| t| | d S )	NrC   rD   rC   rQ   rQ   rQ   r#  rC   rC   rD   rW   rW   rW   r   )r   r7   r$  r   r  )r:   rS   r_   r"   r"   r)   r'  ?	  s   zTestMode.test_categoricalc                 C   s   t g d}tg dtjd}tt|| t g d}tdgtd}tt|| t g d}tddgtjd}tt|| tdd	gd
d}t g dd
d}tt|| d S )Nr   r,   r  rQ   r  rC   rW   r  rn   r  r  )	r   r   r4   r   r7   rx  r   r  r]   )r:   r  r_   r"   r"   r)   
test_indexO	  s   zTestMode.test_indexN)r   r   r   r  r  r  r  r  r  r  r  r'  r  r"   r"   r"   r)   r    s    	r  c                   @   sH   e Zd Zejdddgdd Zdd Zejddd	gd
d ZdS )TestDiffr-   r   r  c                 C   s   t dt j|dd}|jdd|d d df< tj	|ddd	}t j
|jd
dd }t dd|d d df< t dd|dd d f< t|| tj	|jddd	}t||j d S )Nrl  rW   rX   r   nsrD   rC   r   axisr  r,   )r4   r^   r   r   r_  rk  r-   typer   diffrv  ra  r  r7   r8   Tr:   r-   r`   r   r   r"   r"   r)   test_diff_datetimelike_nate	  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)rU  r+  z#cannot diff DatetimeArray on axis=1r   rC   r  )r   _datar   r   r  r   r  )r:   rc  r   r"   r"   r)   test_diff_ea_axisu	  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   rC   rC   r   r   r,   rC   r   rV   float32)r4   rJ   r   r  rK   r7   r8   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  d	  s    
r  opc                 C   s   | g d}| g d}| g d}t |tjr&t||}t|| d S tt t||}W d    n1 s<w   Y  t	|| d S )N)rW   rC   rW   rX   )rD   rW   rC   rC   )rW   rW   rC   rC   rX   rD   )
r/   r4   r   r   union_with_duplicatesr7   r8   r   r  r   )r  lvalsrvalsr   r   r"   r"   r)   test_union_with_duplicates	  s   r  )Pr   	itertoolsr   rC  numpyr4   r   pandas._libsr   rY  r   rv   pandas.compatr   pandas.util._test_decoratorsutil_test_decoratorsr  pandas.core.dtypes.commonr   r   r	   r
   r   pandas.core.dtypes.dtypesr   r  pandasrz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   pandas._testing_testingr7   pandas.core.algorithmscore
algorithmspandas.core.arraysr   pandas.core.commoncommonr   r   r   rQ  r  r  r  rK  rR  rS  rr  rs  r  r  r  r  r  r  r  r  r   r   rJ   r  r"   r"   r"   r)   <module>   sd    L   1  P   S \ K62  !4  