a
    <b1P                    @   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l2m3Z3 d dl4m0  m5Z6 G d	d
 d
Z7G dd dZ8G dd dZ9G dd dZ:G dd dZ;G dd dZ<dd Z=G dd dZ>dd Z?G dd dZ@dd ZAdd  ZBd!d" ZCd#d$ ZDd%d& ZEd'd( ZFG d)d* d*ZGG d+d, d,ZHejIJd-ejKejKgd.d/ ZLd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)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j||dd d S )Nr   c                    s   g | ]}  |qS  index).0valZexpected_uniques_listr!   g/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/pandas/tests/test_algos.py
<listcomp>B       z0TestFactorize.test_factorize.<locals>.<listcomp>dtypeTexact)	factorizer   
isinstancer   from_tuplesuniqueZsort_valueslistnpasarrayintptmassert_numpy_array_equalassert_index_equal)	selfZindex_or_series_objr   objZresult_codesZresult_uniquesconstructorexpected_uniquesexpected_codesr!   r&   r'   test_factorize2   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   r?   r   r@   r*         ?       @)
r3   arraynanr   r.   r5   r   r6   r7   r8   )r9   valuessercodesuniquesr=   r<   r!   r!   r'   &test_series_factorize_na_sentinel_noneH   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brN   rM   rM   crO   rO   rM   rN   rO   r*   Tr    )r   r?   r?   r   r   r@   r@   r@      )r   r?   r@         )rT   rS   r@   r?   r         @)      @      @rE   rD           )rX   rD   rE   rW   rV   )
r   r.   r6   r7   r3   rF   objectr5   aranger+   )r9   rJ   rK   exparrr!   r!   r'   
test_basicT   s>    
zTestFactorize.test_basicc                 C   s   t ddtjddtjg}t|\}}tjg dtjd}t	|| t
dddtjg}t|| tj|dd\}}tjg dtjd}t	|| t
dtjddg}t|| d S )	NABQ	@)r   r   rR   r?   r@   rS   r*   Tr    )r@   r@   rR   rS   r   r?   )r   r3   rG   infr   r.   rF   r5   r6   r7   r   r8   )r9   xrJ   rK   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   r?   r?   r   r*   Tr    )r?   r?   r?   r   r   r?   Z201302MfreqZ201303z1 day 1 min1 day)r   r?   r   r   r?   r?   r   )r?   r   r?   r?   r   r   r?   )r   r   r   r.   r3   rF   r5   r6   r7   r   r8   r   r   r   )r9   v1v2rb   rJ   rK   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spJ t	t
|||k q*t jdt jdgdd}d
}|j|d|d}t jg dd	d}tt|tt|ksJ t	t
|||k d S )Nr?   r@   Or*   )rR      Tr   rB   r   int32rR   F)r@   rR   r   )r3   rF   rG   htZObjectFactorizerlenr.   setr6   r7   pdisna)r9   keyZrizerrB   idsexpectedr!   r!   r'   test_factorize_nan   s    z TestFactorize.test_factorize_nanz&data, expected_codes, expected_uniques)r?   r?   r?   r@   r   r   rz   nonsense)r   r?   r@   r?   rS   )ry   rz   r{   r|   )ry   rz   r{   rz   r?   r@   rS   )ry   rz   r{   r}   )ry   rz   r{   rz   )r   r?   r@   r?   )ry   rz   r{   c                 C   sD   t |\}}t|tj|tjd tj|t	d}t|| d S Nr*   )
rs   r.   r6   r7   r3   rF   r5   comZasarray_tuplesaferY   )r9   datar=   r<   rJ   rK   Zexpected_uniques_arrayr!   r!   r'   test_factorize_tuple_list   s    z'TestFactorize.test_factorize_tuple_listc                 C   sj   t jdd tdD td}d}tjt|d( tj|d d d dd	 W d    n1 s\0    Y  d S )
Nc                 S   s   g | ]}t |qS r!   )complex)r$   ir!   r!   r'   r(      r)   z6TestFactorize.test_complex_sorting.<locals>.<listcomp>   r*   z,'[<>]' not supported between instances of .*matchrR   Tr    )	r3   rF   rangerY   pytestraises	TypeErrorr   r.   )r9   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)r?   r@   r@   r?   r*   )r   r?   r?   r   r?   r@   )r3   rF   r5   r   r.   r6   r7   )r9   Zany_real_numpy_dtyper+   r   r=   r<   rJ   rK   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)rD       חArD   :0yE>r   rD   r*   write)r   r?   r   r@   r?   r   )rD   r   r   )	r3   rF   float64setflagsr5   r   r.   r6   r7   r9   writabler   r=   r<   rJ   rK   r!   r!   r'   test_float64_factorize  s    z$TestFactorize.test_float64_factorizec                 C   sr   t jg dt jd}|j|d t jg dt jd}t jddgt jd}t|\}}t|| t|| d S )N)    r?   r   r*   r   r   r?   r   r   r?   )	r3   rF   uint64r   r5   r   r.   r6   r7   r   r!   r!   r'   test_uint64_factorize  s    z#TestFactorize.test_uint64_factorizec                 C   sr   t jg dt jd}|j|d t jg dt jd}t jddgt jd}t|\}}t|| t|| d S )N)             r   r*   r   r   r   r   )	r3   rF   int64r   r5   r   r.   r6   r7   r   r!   r!   r'   test_int64_factorize  s    z"TestFactorize.test_int64_factorizec                 C   sn   t jg dtd}|j|d t jg dt jd}t jg dtd}t|\}}t|| t|| d S )N)rM   rO   rM   rN   rO   r*   r   )r   r?   r   r@   r?   rM   rO   rN   )	r3   rF   rY   r   r5   r   r.   r6   r7   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 )NrM   rO   rN   r*   r   )r   r?   rR   rR   r   r@   rR   r?   r   )r3   rF   rG   r   rY   r   r5   r   r.   r6   r7   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])	r3   rF   
datetime64r   r5   rs   r.   r6   r7   r   r!   r!   r'   test_datetime64_factorize4  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   r?   Tr,   rs   
RangeIndexZ
from_ranger   r3   rZ   r5   r   r.   r6   r7   r8   )r9   r   rirw   resultr!   r!   r'   test_factorize_rangeindexA  s    z'TestFactorize.test_factorize_rangeindexc                 C   s   t jtd}tjdtjd|f}|d d d }|d |f}|rf|d d d d |d d d d f}tj||d}t	
|d |d  t	j|d |d dd |j|d}t	
|d |d  t	j|d |d dd d S )	Nr   r*   rR   r   r?   r    Tr,   r   )r9   r   r   rw   Zri2r   r!   r!   r'   $test_factorize_rangeindex_decreasingO  s    $z2TestFactorize.test_factorize_rangeindex_decreasingc                 C   s   t jg dt jd}tjtdd tj|dd W d    n1 sF0    Y  t	d t| W d    n1 sz0    Y  d S )N)            r?   r   r*   zgot an unexpected keywordr   T)orderF)
r3   rF   r   r   r   r   r   r.   r6   assert_produces_warning)r9   r   r!   r!   r'   test_deprecate_orderb  s
    ,z"TestFactorize.test_deprecate_orderr   r   u8r*   )r   r?   r   i8)__nan__foor   rY   c                 C   sJ   t |\}}|ddg }tjg dtjd}t|| t|| d S )Nr   r?   r   r*   )r   r.   r3   rF   r5   r6   r7   )r9   r   rJ   rK   r<   r=   r!   r!   r'   ,test_parametrized_factorize_na_value_defaultk  s
    
z:TestFactorize.test_parametrized_factorize_na_value_defaultzdata, na_valuerC   r   )r?   r   r?   r@   r?   )r   r?   r   r   r   )r?   r   r?   r   )rM    rM   rN   rM   )r!   rM   r?   r!   rM   r@   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_valuer?   rS   )rR   r   rR   r?   r*   )r   Zfactorize_arrayr3   rF   r5   r6   r7   )r9   r   r   rJ   rK   r<   r=   r!   r!   r'   $test_parametrized_factorize_na_value{  s
    z2TestFactorize.test_parametrized_factorize_na_valuerB   )rR   id   zdata, uniques)rN   rM   NrN   rN   r@   ZInt64Znumpy_arrayZextension_array)rv   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|| nt
|| d S )Nrn   r?   r   r*   )r   r.   r3   rF   r5   Z	safe_sortr6   r7   r/   ndarrayassert_extension_array_equal)r9   r   rB   r   rK   rJ   r=   r<   r!   r!   r'   test_factorize_na_sentinel  s    z(TestFactorize.test_factorize_na_sentinel)rM   NrN   rM   )r   r@   r?   r   r5   c                 C   s.   t j|d d\}}t|| t|| d S NrA   r   r.   r6   r7   r9   r   r=   r<   rJ   rK   r!   r!   r'   &test_object_factorize_na_sentinel_none  s    z4TestFactorize.test_object_factorize_na_sentinel_none)r?   Nr?   r@   )r   r@   r   r?   rl   c                 C   s.   t j|d d\}}t|| t|| d S r   r   r   r!   r!   r'   #test_int_factorize_na_sentinel_none  s    z1TestFactorize.test_int_factorize_na_sentinel_noneN)$__name__
__module____qualname__r   markparametrizer>   rL   r]   rc   rk   rx   r   r   r   r   r   r   r   r   r   r   r   r   r3   rF   r   rY   r   rs   rG   r   r+   r   r   r   r!   r!   r!   r'   r   1   s   
)1
	






	



r   c                	   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zejddejdd ged!fd"ejd#ged!fgd$d% Zd&d' Zd(d) Zd*d+ Zejd,ejegd-d. Zd/d0 Zd1S )2
TestUniquec                 C   s0   t jjdddd}t|}t|t js,J d S )Nr   r   2   size)r3   randomrandintr   r1   r/   r   r9   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s2J d S )Nr   r   r   r   rl   )r3   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)r^   r_   CDE  )r   rq   r   r1   )r9   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 )NrQ   r@   )r   Zfrom_arraysr3   rZ   repeattilerH   r   rs   r1   r6   assert_almost_equal)r9   Zmindexrw   r   r!   r!   r'   test_on_index_object  s     

zTestUnique.test_on_index_objectc                 C   s  |t jt j v r"g d}ddg}nt|r<g d}ddg}nt|rVg d}ddg}n~t|rtddtddtddg}tddtddg}nDt|rg d}dd	g}n*t|rg d
}ddg}ng d}ddg}t	||d
 }tj||d}|t jv r|t}t || d S )N)r?   r@   r@   r?   r@   rD   rE   r   TTFTF)r^   r_   r_   r^   r_   r*   )r6   ZBYTES_DTYPESZSTRING_DTYPESr	   r   r   r   r   r
   r   r1   r3   rF   r   rY   r7   )r9   Zany_numpy_dtyper   rK   r   rw   r!   r!   r'   test_dtype_preservation  s2    





z"TestUnique.test_dtype_preservationc                 C   s   t jddgdd}tg d}t|}t|| |j|jksDJ t|}t|}t|| |j|jksrJ |j	}t|}t|| |j|jksJ d S )N2015-01-03T00:00:00.0000000002015-01-01T00:00:00.000000000M8[ns]r*   )r   r   r   )
r3   rF   r   r   r1   r6   r7   r+   r   rH   )r9   rw   Zdt_indexr   sr\   r!   r!   r'   $test_datetime64_dtype_array_returned  s(    


z/TestUnique.test_datetime64_dtype_array_returnedc                 C   s>   t jg ddd}t|}t jddgdd}t|| d S )N2000r   2001zdatetime64[s]r*   r   r   r   r3   rF   rs   r1   r6   r7   r9   rM   r   rw   r!   r!   r'   test_datetime_non_ns<  s    
zTestUnique.test_datetime_non_nsc                 C   s>   t jg ddd}t|}t jddgdd}t|| d S )Nr   ztimedelta64[s]r*   l     RFl    jIGtimedelta64[ns]r   r   r!   r!   r'   test_timedelta_non_nsB  s    
z TestUnique.test_timedelta_non_nsc                 C   s   t jg ddd}tg d}t|}t|| |j|jksDJ t|}t|}t|| |j|jksrJ |j	}t|}t|| |j|jksJ d S )N)y  n  '  m8[ns]r*   )r   r   r   r   r   )
r3   rF   r   r   r1   r6   r7   r+   r   rH   )r9   rw   Ztd_indexr   r   r\   r!   r!   r'   %test_timedelta64_dtype_array_returnedH  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)r?   r@   r   r   r*   r?   r@   r   )r   r3   r   rF   r6   r7   r   r1   r9   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 )NrM   rO   r*   )r3   rG   rs   r1   rF   rY   r6   r7   )r9   Zduplicated_itemsr   rw   r!   r!   r'   test_nan_in_object_array`  s    
z#TestUnique.test_nan_in_object_arrayc                 C   s  t td}t tdtddd}t td}| }t|| t|}t|| t tddd}| }t|| t|}t|| tt tddd}| }t|| t|}t|| tt tdtdd	}t|}| }t	|| t|}t	|| d S )
NZbacabcT
categoriesorderedZbaabcr   r   )namer   )
r   r2   r1   r6   assert_categorical_equalr   r   rs   r   r8   )r9   rw   Z
expected_orO   r   r   cir!   r!   r'   test_categoricalf  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+   rg   
2016-01-01)r   r   r   r1   r   Z_from_sequencer3   rF   r6   r   r   r8   rs   r9   r   rw   r!   r!   r'   test_datetime64tz_aware  sX    








z"TestUnique.test_datetime64tz_awarec                 C   s2  t tg d}t|tjg ddd t tdgdgd  }t|tjddgdd t ttdtdg}tjd	gd
d}t|| t ttdddtdddg}t	dgdd d}t
|| t td}tjg dtd}t|| t tttd}ttd}t|| d S )N)r@   r?   rS   rS   )r@   r?   rS   r   r*   r@   r?   rQ   r   z2016-01-01T00:00:00.000000000r   r   r  r  r  r  ZaabcrP   r   )rs   r1   r   r6   r7   r3   rF   r   r   r   r8   r2   rY   r   r   r  r!   r!   r'   test_order_of_appearance  s0    

z#TestUnique.test_order_of_appearancezarg ,expected)1r
  2r
  r  r*   )r   r   c                 C   s   t |}t|| d S Nrs   r1   r6   r7   )r9   argrw   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)Z
strict_nan)r3   rF   rY   rs   r1   r6   r7   r9   r\   r   rw   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       rX   r   r   r!   r!   r'   test_signed_zero  s    
zTestUnique.test_signed_zeroc                 C   s~   t dt ddd }t dt ddd }||ks<J ||ksHJ t||g}t|}ttjg}t	|| d S )Nd=Q          r            )
structunpackpackr3   rF   rs   r1   rG   r6   r7   )r9   NAN1NAN2rM   r   rw   r!   r!   r'   test_different_nans  s    
zTestUnique.test_different_nansel_typec           	      C   s   d}d}t dt d|d }t dt d|d }||ksDJ ||ksPJ tj||g|d}t|}|jdkszJ t dt d|d d }||ksJ d S )Nl         r  r  r  r   r*   r?   )r  r  r  r3   rF   rs   r1   r   )	r9   r  Zbits_for_nan1Zbits_for_nan2r  r  rM   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s6J |d |u sFJ |d |u sVJ d S )Nr*   r@   r   r?   )r3   rF   rY   rs   r1   r   )r9   Zunique_nulls_fixtureZunique_nulls_fixture2rM   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   r  r	  r   r   r   r3   rF   rY   r  r  r  r  r   r  r   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 s40    Y  t jt|d tddg W d    n1 sp0    Y  t jt|d tdgd W d    n1 s0    Y  d S )NzQonly list-like objects are allowed to be passed to isin\(\), you passed a \[int\]r   r?   )r   r   r   r   isin)r9   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 )Nr?   r@   TFrM   rN   )r   r"  r3   rF   r6   r7   r   r  r!   r!   r'   r]   ;  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 )	Nrd   rS   periodsr   )TFFr@   r   rh   )
r   rH   r   r"  r3   rF   r6   r7   rr   r   r  r!   r!   r'   test_i8a  s(    zTestIsin.test_i8dtype1)r   r   M8[ns, UTC]	period[D]r+   )r   Zf8r   c                 C   s   t dddj}|dkr"|d}n*|dkr6|d}nt|d|j}|d|}t||}t	j
|jtd	}t|| d S )
Nz
2013-01-01rS   r$  r)  r   r(  UTCr   r*   )r   _valuesZ	to_periodZtz_localizer   viewr   r   r"  r3   zerosshapeboolr6   r7   )r9   r+   r'  dtar\   compsr   rw   r!   r!   r'   +test_isin_datetimelike_values_numeric_comps}  s    z4TestIsin.test_isin_datetimelike_values_numeric_compsc                 C   sV   t ddddj}t||dd }tjt|td}d|d< d|d	< t	|| d S )
NZ20000101i r   )r%  rg   r   r@   r*   Tr?   )
r   rH   r   r"  r3   r-  rq   r/  r6   r7   r9   r   r   rw   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   r?   r@   r   rP   r?   r   )TTFT)	r3   rF   r   r   
from_codesr   r"  r6   r7   )r9   valscatsZSdZStrw   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 r5  )r3   rF   r   r6  r   r"  r6   r7   )r9   r7  r8  catotherrw   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)r3   rG   rF   r   r"  r6   r7   r9   r1  rH   rw   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 NrD   iAB r   r?   r*   )
r3   r   rG   r   r"  onesrq   r/  r6   r7   r3  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 r?  )
r3   r   r   rG   r"  r@  rq   r/  r6   assert_series_equal)r9   r   Zseriesr   rw   r!   r!   r'    test_same_nan_is_in_large_series  s    
z)TestIsin.test_same_nan_is_in_large_seriesc                 C   s`   G dd d}| |  }}t t|g|gtdg t t|g|gtdg d S )Nc                   @   s"   e Zd ZedddZdd ZdS )z0TestIsin.test_same_object_is_in.<locals>.LikeNan)returnc                 S   s   dS )NFr!   )r9   r;  r!   r!   r'   __eq__  s    z7TestIsin.test_same_object_is_in.<locals>.LikeNan.__eq__c                 S   s   dS )Nr   r!   )r9   r!   r!   r'   __hash__  s    z9TestIsin.test_same_object_is_in.<locals>.LikeNan.__hash__N)r   r   r   r/  rE  rF  r!   r!   r!   r'   LikeNan  s   rG  TF)r6   r7   r   r"  r3   rF   )r9   rG  rM   rN   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 )NrG   r   Tr*   )
floatr   r"  r6   r7   r3   rF   r4   rY   r   )r9   r1  rH   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)r3   rF   r   r"  r6   r7   r=  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 )NrM   rN   F)r   r3   rF   r   r"  r6   r7   )r9   rM  r7  rw   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 )NrG                 ?r*   )FFT)	r3   rF   rG   rI  rY   r   r"  r6   r7   )r9   r1  r7  rw   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sHJ tj||gtjd}tj|gtjd}t||}tddg}t	|| tj|gtjd}t||}tddg}t	|| d S )Nr  r  r  r   r  r*   T)
r  r  r  r3   rF   r   r   r"  r6   r7   )r9   r  r  r\   Zlookup1r   rw   Zlookup2r!   r!   r'   test_different_nans_as_float64  s    z'TestIsin.test_different_nans_as_float64c                 C   s<   t dddgi}|dg}t dddgi}t|| dS )zComparing df with int`s (1,2) with a string at isin() ("1")
        -> should not match values because int 1 is not equal str 1rH   r?   r@   r
  FNr   r"  r6   assert_frame_equalr9   Zdfr   Zexpected_falser!   r!   r'   test_isin_int_df_string_search&  s    z'TestIsin.test_isin_int_df_string_searchc                 C   s>   t dtjdgi}|dg}t dddgi}t|| dS )zComparing df with nan value (np.nan,2) with a string at isin() ("NaN")
        -> should not match values because np.nan is not equal str NaNrH   r@   NaNFN)r   r3   rG   r"  r6   rS  rT  r!   r!   r'   test_isin_nan_df_string_search.  s    z'TestIsin.test_isin_nan_df_string_searchc                 C   s<   t dddgi}|dg}t dddgi}t|| dS )zComparing df with floats (1.4245,2.32441) with a string at isin() ("1.4245")
        -> should not match values because float 1.4245 is not equal str 1.4245rH   gn?g#Ed@z1.4245FNrR  rT  r!   r!   r'    test_isin_float_df_string_search6  s    z)TestIsin.test_isin_float_df_string_searchN)r   r   r   r#  r]   r&  r   r   r   r2  r4  r9  r<  r>  rA  rC  rH  r  rL  r   rY   r3   rF   rN  rP  rQ  rU  rW  rX  r!   r!   r!   r'   r!  -  s,   &

		
r!  c                   @   sz   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zejdejedfdd Zdd ZdS )TestValueCountsc                 C   s~   t jd ddlm} t jd}||d}t|}g d}t	|
tdd}tg d|d	}t| |  d S )
Ni  r   )cutrT   )gvgQg`"?gw/?g!rh?Tr   )r?   r?   r?   r?   r"   )r3   r   seedZpandas.core.reshape.tilerZ  randnr   value_countsr   Zfrom_breaksr   CDTr   r6   rB  Z
sort_index)r9   rZ  r\   Zfactorr   Zbreaksr#   rw   r!   r!   r'   test_value_counts@  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)r?   r@   rS   rT   r?   binsrT   )Zd;?rV   r"   r@   F)ra  r   )rb        @)rc  rV   )r   r]  r   r   r0   r6   rB  r3  r!   r!   r'   test_value_counts_binsN  s    z&TestValueCounts.test_value_counts_binsc                 C   s   t ddg}t|dksJ t jddgdd}t|dks@J t tg d}t|dksbJ d}tjt|d" t jddgdd W d    n1 s0    Y  d S )	Nr?   rD   r`  )r?   rD   r
  r@   z*bins argument only works with numeric datar   r
  )r   r]  rq   r   r   r   r   )r9   r   r   r!   r!   r'   test_value_counts_dtypesZ  s    z(TestValueCounts.test_value_counts_dtypesc                 C   s   t tdtgdd}tddg}||fD ]<}t|}tj|dd}t|dksVJ t|d	ks*J q*t td
di}t	
t|| d S )Nr   r   r*   r   z
2014-01-01Fdropnar?   r@   z2014-01-01 00:00:00)r   r3   timedelta64r   r   r   r]  rq   r   r6   rB  )r9   tddtr   ZvcZ
vc_with_naZexp_dtr!   r!   r'   test_value_counts_nath  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  r?   i  ip  r*   rS   r@   r?   r"   z
2362-01-01ignore)errors)
r   r   r]  r   rY   r6   rB  r   r3   rG   )r9   r   resZ	exp_indexr[   r!   r!   r'   &test_value_counts_datetime_outofboundsv  s&    






 z6TestValueCounts.test_value_counts_datetime_outofboundsc                 C   sr   t ttd}| }t g dtg dd}tj||dd |j }| }|j	 |_	tj||dd d S )NZaaabbcrl  rP   r"   TZcheck_index_type)
r   r   r2   r]  r   r6   rB  r:  Z
as_orderedr#   r3  r!   r!   r'   r     s    
z TestValueCounts.test_categoricalc                 C   s6  t ttd}tj|jd< | }t g dtg dg ddd}tj	||dd |jd	d
}t g dtdddtjgd}tj	||dd t ttddg dd}tj|jd< | }t g dtg dg dddd}tj	||dd |jd	d
}t g dtdddtjgg dddd}tj	||dd d S )NZ
aaaaabbbccr?   )rT   rS   r@   rP   r   r"   Trq  Frf  )rT   rS   r@   r?   rM   rN   rO   )rN   rM   rO   )r   r   r   )
r   r   r2   r3   rG   Zilocr]  r   r6   rB  r3  r!   r!   r'   test_categorical_nans  s>    z%TestValueCounts.test_categorical_nansc                 C   sX   t ttdtddd}| }t g dtg dtdddd}tj||dd d S )	NZbbbaacZabcdTr   )rS   r@   r?   r   )rN   rM   rO   r  r"   rq  )r   r   r2   r]  r6   rB  r3  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   Trf  r@   r?   Fr"   rS   rQ   )rQ   rS   r@   )皙$@rU   rU   rU   rt  )rt  rU   rU   N)rt  rt  rU   rU   rU   Nrl  )r6   rB  r   r]  r3   rG   r  r!   r!   r'   test_dropna  s>    ((zTestValueCounts.test_dropnar+   r   c                 C   s   t dgd dgd  tjgd  }||}|jddd}t g dt tjd	d
g|dd}t|| |jddd}t ddgt d	d
g|dd}t|| d S )Nr?   r@   rS   rQ   TF)	normalizerg  )g      ?g333333?g?rE   rD   r*   r"   g333333?g?)r   r3   rG   r   r]  r6   rB  )r9   r+   r   Zs_typedr   rw   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*   r?   r"   rR   )	r3   rF   r   r   r   r]  r6   rB  rY   )r9   r\   rw   r   r!   r!   r'   test_value_counts_uint64  s    

z(TestValueCounts.test_value_counts_uint64N)r   r   r   r_  rd  re  rk  rp  r   rr  rs  ru  r   r   r   r3   r   rY   rw  rx  r!   r!   r!   r'   rY  ?  s   $&
rY  c                   @   s$  e Zd Zdd Zejdeg dedddej	ddddej	d	g
eg d
ejg de
dejg dejdgdd Zdd Zejdeg deddgdd Zejdg dg dfg dddgfg dg dfgdd  Zejd!g d"ejg d#e
dfgd$d% Zd&S )'TestDuplicatedc                 C   s  t jddt jddt jgtd}t|}t g d}t|| tj|dd}t g d}t|| tj|dd}t g d	}t|| tj|d
d}t g d}t|| t jdtd}t	t
ddt jt jgd dt jdt jgd D ]\}}|||< qt|}d
gd }dgd }t || }t|| tj|dd}t || }t|| tj|d
d}t || }t|| d S )Nr   r?   r@   r*   )FFFTFTfirstZkeeplast)TFTFFFF)TFTTFT   rT   T)r3   rF   rG   rY   r   
duplicatedr6   r7   rM  	enumeratezip)r9   keysr   rw   r   tZfalsesZtruesr!   r!   r'   test_duplicated_with_nas  s:    
(



z'TestDuplicated.test_duplicated_with_nascase)
r?   r@   r?   rQ   rS   r@   rT   r?   rQ      g?g@gffffff
@g@gffffff@)
      ?      ?       @       @r        @      @y      @      @r  y      @      @r  r  y      @      @)
rM   rN   rM   erO   rN   r  rM   r  fr*   )
r?   r   r?      r   r   '   r?   r     c           
      C   sF  t g d}t g d}||B }tj|dd}t|| tj|dd}t|| tj|dd}t|| t|t|ddfD ]L}|jdd}t|| |jdd}t|| |jdd}t|| qt|t|ddfD ]X}	|	jdd}t|t| |	jdd}t|t| |	jdd}t|t| qd S )	N
FFTFFTFTTF
TTTTFFFFFFrz  r{  r|  Fcategoryr*   )	r3   rF   r   r~  r6   r7   r   r   rB  )
r9   r  	exp_firstexp_last	exp_false	res_firstres_last	res_falseidxr   r!   r!   r'   test_numeric_object_likes8  s6    z(TestDuplicated.test_numeric_object_likesc                 C   s  g d}g d}t dd |D t dd |D t dd |D t dd |D t dd |D g}t g d	}t g d
}||B }|D ]:}tj|dd}t|| tj|dd}	t|	| tj|dd}
t|
| t|t|ddt|tdfD ]N}|jdd}t|| |jdd}	t|	| |jdd}
t|
| qt|t|ddt|tdfD ]Z}|jdd}t	|t| |jdd}	t	|	t| |jdd}
t	|
t| qvqd S )N)

2011-01-01
2011-01-02r  r   
2011-01-03r  z
2011-01-04r  r   z
2011-01-06)
1 days2 daysr  r   z3 daysr  z4 daysr  r   z6 daysc                 S   s   g | ]}t |qS r!   r   r$   r  r!   r!   r'   r(     r)   z6TestDuplicated.test_datetime_likes.<locals>.<listcomp>c                 S   s   g | ]}t |d dqS )r   r  r  r  r!   r!   r'   r(     r)   c                 S   s   g | ]}t |d dqS )r   rf   )r   r  r!   r!   r'   r(     r)   c                 S   s   g | ]}t |qS r!   )r3   r   r  r!   r!   r'   r(     r)   c                 S   s   g | ]}t |qS r!   )r   r  r!   r!   r'   r(     r)   r  r  rz  r{  r|  Fr  r*   )
r3   rF   r   r~  r6   r7   r   rY   r   rB  )r9   rj  ri  Zcasesr  r  r  r  r  r  r  r  r   r!   r!   r'   test_datetime_likesy  sT    




z"TestDuplicated.test_datetime_likesr}   r   rS   c                 C   s,   |j du sJ t| tg d d S )NT)FFF)Z	is_uniquer6   r7   r~  r3   rF   )r9   r  r!   r!   r'   test_unique_index  s    z TestDuplicated.test_unique_indexzarr, uniques)r{   r   r?   r?   r   ry   r{   r  r  ry   )r{   r  r  ry   )rN   rO   rM   rN   r  r  r  r  )r   rN   r@   rM   rS   r   )r   r  r  c                 C   s8   t jt|td}||d d < t|}t|| d S r~   )r3   rM  rq   rY   rs   r1   r6   r7   )r9   r\   rK   rw   r   r!   r!   r'   test_unique_tuples  s    
z!TestDuplicated.test_unique_tupleszarray,expected)r  r   r?   rO        ?       @r  )r  y                y      ?        rO  r  c                 C   s   t |}t|| d S r  r  )r9   rF   rw   r   r!   r!   r'   test_unique_complex_numbers  s    
z*TestDuplicated.test_unique_complex_numbersN)r   r   r   r  r   r   r   r3   rF   rG   rY   r   r  r  r   rs   r   r  r  r  r!   r!   r!   r'   ry    sL   ' 

(S 


ry  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 sV0    Y  tjtdd |d W d    n1 s0    Y  d S )Nru   r?   z'key' has incorrect typer   rT   r  z'val' has incorrect type)rp   StringHashTableset_itemZget_itemr   r   r   )r9   Z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@r`   irQ   r@   rS   r   r*   )r3   rF   rG   r   rp   Float64HashTablemap_locationsr6   r7   lookuprZ   rq   r5   r9   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s6J d S )NrT   rX   r   r  r?   )rp   r  r  rq   )r9   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sHJ t }||d ||d t|dksxJ d S )Nr  r  r  r   r  r?   )r  r  r  rp   r  r  rq   )r9   r  r  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   )r3   rF   r   r   rp   UInt64HashTabler  r6   r7   r  rZ   rq   r5   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   r3   r   rF   r6   r7   r1   r   r!   r!   r'   test_get_unique.  s    zTestHashTable.test_get_uniquenvalsr   r   z&htable, uniques, dtype, safely_resizesrY   FTr   r   ro   r   c           
      C   s   t jt jd|d}|j|d | }| }||d | |dd | }|j}	|rj|||dd n>tj	t
dd  |||dd W d    n1 s0    Y  |  |j|	ksJ d S )Nr   r*   r   r   rR   zexternal reference.*r   )r3   rF   r   r\  r   Z
get_labelsZto_arrayr.  r   r   
ValueError)
r9   r   htablerK   r+   Zsafely_resizesr  r7  tmpZoldshaper!   r!   r'   test_vector_resize3  s    .z TestHashTable.test_vector_resizezhtable, tm_dtypeStringFloatZIntZUIntc                 C   s   t td| d }t|d}|tjkr6tj|jd< n |tjkrVtjd t	g|jdd< |j
dddjdd	}|jj|d
 |jddj}| |j}t|| | j|jdd\}}	t|| ||	 }
t|
|j d S )Nmaker   r       rS   TfracreplaceZdropr   rz  r{  )Zreturn_inverse)getattrr6   r   rp   r  r3   rG   locPyObjectHashTabler   samplereset_indexrH   r   drop_duplicatesr1   r7   )r9   r  tm_dtyper   makerr   s_duplicatedexpected_uniqueresult_uniqueresult_inverseZreconstrr!   r!   r'   test_hashtable_unique`  s"    


z#TestHashTable.test_hashtable_uniquec                 C   s   t td| d }t|d}|tjkr6tj|jd< n |tjkrVtjd t	g|jdd< |j
dddjdd	}|jj|d
 | j}| |j\}}	|  j}
t||
 ||	|   }| j}t|| d S )Nr  r   r   r  r  rS   Tr  r  r   )r  r6   r   rp   r  r3   rG   r  r  r   r  r  rH   r   rt   r.   rg  r  r7   )r9   r  r  r   r  r   r  Zna_maskr  r  r  Zresult_reconstructZexpected_reconstructr!   r!   r'   test_hashtable_factorize  s    



z&TestHashTable.test_hashtable_factorizer   c                 C   s    t t jjd }||d d S )Nr?   )	size_hint)r3   iinfoZuint32max)r9   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   rp   r  ZObjectVectorr  r  ZFloat64VectorZInt64HashTableZInt64VectorZInt32HashTableZInt32Vectorr  ZUInt64Vectorr  r  r  r  r!   r!   r!   r'   r    sb   !

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

r  c                  C   s   t jdddt j} 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 )
Nr?   i   i   T)Zreturn_indexF)Zcheck_dtyperR   r   )r3   r   r   r   r5   rp   Zunique_label_indicesr1   r6   r7   choicerq   )rM   leftrightr!   r!   r'   test_unique_label_indices  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ejjdd ZdS )TestRankr\   rU   r?   r@   rS   rV   c                 C   s`   ddl m} t|}t| }| }t|}tj||< ||}tj	||< t
|| d S )Nr   )rankdata)Zscipy.statsr  r3   rF   isfinitecopylibalgosZrank_1dra   rG   r6   r   )r9   r\   r  maskr   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 )Nr?   r@   r*   r   r   )	r3   rF   r   r   r   r   rankr6   r7   )r9   r   r+   r[   r   rI   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 )Nr?   r@   r*   r   )r3   rF   r   r   r6   r7   r   r  )r9   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    n1 sP0    Y  d S )Nr}   )rT   rQ   r  )r  r}  	   z%Array with ndim > 2 are not supportedr   )r3   rF   r   r   r   r   r  )r9   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sXJ d S )Ni  T)Zpctr?   i  r@   )r3   rZ   r   r  r  reshape)r9   rH   r   r!   r!   r'   test_pct_max_many_rows  s    
zTestRank.test_pct_max_many_rowsN)r   r   r   ri  Zskip_if_no_scipyr   r   r   r3   rG   r  	typecodesr]   r   r   r   r  singleZhigh_memoryr  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        rY   rR   )	r3   rF   r   r  padr5   r6   r7   backfill)oldnewr   rw   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r?   rQ   r   r  int64_t)r   r   r?   r?   r?   r?   r@   r@   r@   r@   r@   rR   r*   r?   rT   rQ   r   rR   rR   rR   rR   rR   )r   r2   r   r  r  rH   r3   rF   r5   r6   r7   r9   r  r  ZfillerZexpect_fillerr!   r!   r'   test_backfill"  s    zTestTseriesUtil.test_backfillc                 C   s   t g d}t ttd}tjd |j|j}tjg dtjd}t	
|| t ddg}t td}tjd |j|j}tjg dtjd}t	
|| d S )	Nr  r  r  )rR   r   r   r   r   r?   r?   r?   r?   r?   r@   r@   r*   rQ   r   r  )r   r2   r   r  r  rH   r3   rF   r5   r6   r7   rZ   r  r!   r!   r'   test_pad3  s    zTestTseriesUtil.test_padN)r   r   r   r  r  r!   r!   r!   r'   r  !  s   r  c                  C   s6   t jg dddt jg dddg} t| r2J d S )N)|rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r@   r?   r?   r?   r?   r?   r?   r?   r?   r?   r?   r?   r?   r?   r?   r?   r?   r?   r?   r?   r?   r?   r?   r?   r?   r?   r?   r?   r?   r?   r?   r?   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r*   )|                              rm         r               r     r   r  r}  r  r  rQ   rT   rS   r@   r?   r   r  r  r  r   r  r  r  r  r  r  rm   r  r  r   r	  r
  r  r  r  r  r   r  r}  r  r  rQ   rT   rS   r@   r?   r   r  r  r  r   r  r  r  r  r  r  rm   r  r  r   r	  r
  r  r  r  r  r   r  r}  r  r  rQ   rT   rS   r@   r?   r   r  r  r  r   r  r  r  r  r  r  rm   r  r  r   r	  r
  r  r  r  r  r   r  r}  r  r  rQ   rT   rS   r@   r?   r   )r3   rF   r  Zis_lexsorted)Zfailurer!   r!   r'   test_is_lexsortedD  s    ~ ~   r  c                  C   s   t jdddt j} t jdddt j}t| dd }t j| dd}|t j}t	|| | d | }t|dd }t 
|| f}|t j}t	|| d S )Nr   r   r   Z	mergesort)kindi@B )r3   r   r   r   r5   r  Zgroupsort_indexerargsortr6   r7   Zlexsort)rM   rN   r   rw   ru   r!   r!   r'   test_groupsort_indexerM  s    r  c                     s  t   t  tddddtd g} t fdd| D sDJ t fdd| D s^J   krn  ksrJ   k s  krJ t  t  ksJ t  t  krJ tfd	d| D sJ tfd
d| D sJ krksJ k s
krJ t  t  ks$J t  t  kr:J t| D ]}t|| ksBJ qBtt  gd 	  tt  gd 	  d S )Nz-infg}Ô%Ir   g}Ô%ITra   c                 3   s   | ]} |kV  qd S r  r!   r$   rb   Infr!   r'   	<genexpr>q  r)   z%test_infinity_sort.<locals>.<genexpr>c                 3   s   | ]} |kp| u V  qd S r  r!   r  r  r!   r'   r  r  r)   c                 3   s   | ]} |kV  qd S r  r!   r  NegInfr!   r'   r  x  r)   c                 3   s   | ]} |k p| u V  qd S r  r!   r  r  r!   r'   r  y  r)       )
r  InfinityNegInfinityrI  allr   sortedr3   rF   r  )Zref_numspermr!   r  r  r'   test_infinity_sortf  s&    r  c                  C   s   t  } t  }| tjkrJ | tjkr,J | tjk r:J | tjkrHJ | tjkrVJ | tjksdJ |tjkrrJ |tjkrJ |tjk rJ |tjkrJ |tjkrJ |tjksJ d S r  )r  r  r  r3   rG   r  r!   r!   r'   test_infinity_against_nan  s    r   c                  C   s*   t jdt jd} t| }|| u s&J d S )Nr   r*   )r3   rZ   r5   r  Z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 sZ0    Y  tjt| d0 t	t 
||gt 
||g W d    n1 s0    Y  tjt| d& t	t 
||g| W d    n1 s0    Y  tjt| d0 t	t 
||gt 
||g W d    n1 s<0    Y  tjt| d0 t	t 
||gt 
||g W d    n1 s0    Y  tjt| d> tj	t 
||gt 
||gt 
ddgd W d    n1 s0    Y  tjt| d> tj	t 
||gt 
||gt 
ddgd W d    n1 sH0    Y  tjt| dJ tj	t 
||gt 
||gt 
ddgt 
ddgd W d    n1 s0    Y  tjt| d^ tt2 t	t 
||gt 
t j|g W d    n1 s0    Y  W d    n1 s00    Y  tj	t 
||gt 
||gt 
ddgd tj	t 
||gt 
||gt 
ddgd tj	t 
||gt 
||gt 
ddgt 
ddgd d S )NzOverflow in int64 additionr   FT)arr_mask)b_mask)r"  r#  )r3   r  r   r  minr   r   OverflowErrorr   Zchecked_add_with_arrrF   r6   r   RuntimeWarningrG   )r   r  nr!   r!   r'   test_int64_add_overflow  sV    4>4@@$&$&&b$$r(  c                   @   s   e Zd Zdd Zejdejd ejd  dd Z	dd	 Z
ejdejd ejd  d
d Zdd Zejdeegdd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )TestModec                 C   s0   t g tjtg tdd}ttg |j	 d S )Nr*   )r+   r#   )
r   r3   r   r   intr6   r7   r   moderH   r9   r[   r!   r!   r'   test_no_mode  s    zTestMode.test_no_moderj  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 )Nr?   r*   r   r6   r7   r   r+  rH   rB  r9   rj  Z
exp_singleZdata_singleZ	exp_multiZ
data_multirI   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 )Nr?   r*   rP   )r   r*  r6   r7   r   r+  rH   rY   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 )Nr?   rQ   r@   rS   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 )NrN   rM   r@   rS   rO   r*   r.  )r9   r[   r   rI   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   r@   rS   r*   r.  )r9   rj  r[   r   rI   r!   r!   r'   test_strobj_multi_char	  s    zTestMode.test_strobj_multi_charc                 C   s   t g ddd}t g ddd}tt|j|j t| | t ddgdd}t g ddd}tt|j|j t| | d S )N)
1900-05-03r  
2013-01-02r   r*   )r  r7  r6  r  r7  )r  r7  r6  r  r7  r   r6   r   r   r+  rH   r+  rB  r9   r[   rI   r!   r!   r'   test_datelike_mode	  s    zTestMode.test_datelike_modec                 C   s   t g ddd}t g ddd}tt|j|j t| | t ddgdd}t g ddd}tt|j|j t| | d S )N)-1 days0 daysr  r   r*   )r  r;  r<  2 minrh   rh   rh   z-1 dayz-1 day 2 minr=  r=  r8  r9  r!   r!   r'   test_timedelta_mode'	  s    zTestMode.test_timedelta_modec                 C   s@   t dg}t g d}tt|j|j t| | d S )Nr   )r?   r   r   r.  r9  r!   r!   r'   test_mixed_dtype5	  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*   )r?   r   r   r?   )	r   r3   r   r6   r7   r   r+  rH   rB  r9  r!   r!   r'   r   ;	  s    zTestMode.test_uint64_overflowc                 C   s  t ddg}|}d}tjt|d | }W d    n1 s@0    Y  t|| t g d}t dgddgd}tjt|d | }W d    n1 s0    Y  t|| t g d}t dd	gg d
d}tjt|d | }W d    n1 s0    Y  t|| d S )Nr?   r@   zCategorical.mode is deprecatedr   r?   rM   rM   rM   r   r?   r?   r@   rS   rS   rS   r}   )r   r6   r   FutureWarningr+  r   )r9   rO   r[   r   ro  r!   r!   r'   r   F	  s     &&(zTestMode.test_categoricalc                 C   s   t g d}tg dtjd}tt||j t g d}tdgt	d}tt||j t g d}tddgtjd}tt||j t g dd	d}t
jtd
d t| W d    n1 s0    Y  d S )Nr}   r*   rA  rM   rB  r?   rS   r>  r   ZTimedeltaIndexr   )r   r   r3   r   r6   r7   r   r+  rH   rY   r   r   AttributeError)r9   r  r[   r!   r!   r'   
test_indexZ	  s    zTestMode.test_indexN)r   r   r   r-  r   r   r   r3   r  r0  r1  r2  r3  strrY   r5  r:  r?  r@  r   r   rE  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  rS   rT   r   nsr@   r?   r   Zaxisr   r*   )r3   rZ   r   r   r,  r  r+   typer   diffr@  r.  rh  r6   r7   Tr9   r+   r\   r   rw   r!   r!   r'   test_diff_datetimelike_natq	  s     z#TestDiff.test_diff_datetimelike_natc                 C   sV   t ddddj}d}tjt|d  tj|ddd W d    n1 sH0    Y  d S )	Nr  rS   z
US/Pacific)r%  r  z#cannot diff DatetimeArray on axis=1r   r?   rI  )r   _datar   r   r  r   rK  )r9   r0  r   r!   r!   r'   test_diff_ea_axis	  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   r?   r?   r   r   r*   r?   r   rR   Zfloat32)r3   rF   r   rK  rG   r6   r7   rM  r!   r!   r'   test_diff_low_precision_int	  s    z$TestDiff.test_diff_low_precision_intN)	r   r   r   r   r   r   rN  rP  rQ  r!   r!   r!   r'   rG  p	  s
   
rG  opc                 C   sf   | g d}| g d}| g d}t |tjrJt||}t|| nt||}t|| d S )N)rS   r?   rS   rT   )r@   rS   r?   r?   )rS   rS   r?   r?   rT   r@   )r/   r3   r   r   Zunion_with_duplicatesr6   r7   r   )rR  ZlvalsZrvalsrw   r   r!   r!   r'   test_union_with_duplicates	  s    rS  )Mr   	itertoolsr   r  Znumpyr3   r   Zpandas._libsr   r  r   rp   Zpandas.util._test_decoratorsutilZ_test_decoratorsri  Zpandas.core.dtypes.commonr   r   r   r	   r
   Zpandas.core.dtypes.dtypesr   r^  Zpandasrs   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingr6   Zpandas.core.algorithmscoreZ
algorithmsZpandas.core.arraysr   Zpandas.core.commoncommonr   r   r   r!  rY  ry  r  r  r  r  r  r  r  r  r   r!  r(  r)  rG  r   r   rF   rS  r!   r!   r!   r'   <module>   s^   L   -  T   R h K;#  !4  