B
    Y0dK                @   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dddddgdddddgddddgfdddddgdddddgddddgfddddgddddgdddg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d0d1 Zejd2ejdddgd3d4ejd5dd5gd6d4ejd7d8d7gd9d4gd:d; Zejd<ejddddgd3d4dfejddddgd3d4dfejd5dd5dgd6d4d5fejdd5ddgd6d4dfejd=d>d=d?ged4d=fejd@dAd@dBged4d@fejdAd@dAdBged4dAfgdCdD ZejdddgejdEdFdGdHgejjdIejd?d=dJd?ged4ejd?d=ged4fejddejdgdKd4ejddgdKd4fgdLdMgdNdOdP Zejdd=dJd?d=gejddddge dQd4ejd=d?ejged4fd=ejd?d=gejddddge dQd4ejd=d?ejged4fgdRdS Z!ejdddJddgejddddge dQd4ejddejgdTd4fdejddgejddddge dQd4ejddejgej"d4fgdUdV Z#dJS )W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!   I/var/www/html/venv/lib/python3.7/site-packages/pandas/tests/test_algos.py
<listcomp>C   s    z0TestFactorize.test_factorize.<locals>.<listcomp>)dtype)	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_factorize3   s    
zTestFactorize.test_factorizec             C   sp   t dddt jg}t|}|jd d\}}t jddddgt jd}tddt jg}t|| t	|| d S )N      )na_sentinelr   )r(   g      ?g       @)
r.   arraynanr   r)   r0   r   r1   r2   r3   )r4   valuessercodesuniquesr8   r7   r!   r!   r&   &test_series_factorize_na_sentinel_noneI   s    z4TestFactorize.test_series_factorize_na_sentinel_nonec          
   C   sJ  t ddddddddg\}}t|tjdddgtd t jddddddddgdd\}}tjdddddd	d	d	gtjd}t|| tjdddgtd}t|| tjd
tjdd d d }t |\}}tjddd	ddgtjd}t|| tjddd	ddg|j	d}t|| t j|dd\}}tjddd	ddgtjd}t|| tjddd	ddg|j	d}t|| tdd d d }t |\}}tjddd	ddgtjd}t|| tjdddddg|j	d}t|| t j|dd\}}tjddd	ddgtjd}t|| tjdddddg|j	d}t|| d S )Nabc)r(   T)r    r   r:   r;            g      @g      @g      @g       @g      ?g        )
r   r)   r1   r2   r.   r=   objectr0   aranger(   )r4   rA   rB   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ddddddgtjd	}t	|| t
dddtjg}t|| tj|d
d\}}tjddddddgtjd	}t	|| t
dtjddg}t|| d S )NABgQ	@r   rH   r:   r;   rI   )r(   T)r    )r   r.   r>   infr   r)   r=   r0   r1   r2   r   r3   )r4   xrA   rB   rM   r!   r!   r&   
test_mixed~   s    zTestFactorize.test_mixedc             C   sN  t d}t d}t||||||g}t|\}}tjddddddgtjd}t|| t	||g}t
|| tj|dd\}}tjddddddgtjd}t|| t	||g}t
|| tdd	d
}tdd	d
}t||||||g}t|\}}tjddddddgtjd}t|| t
|t||g tj|dd\}}tjddddddgtjd}t|| t
|t||g td}td}t|||||||g}t|\}}tjdddddddgtjd}t|| t
|t||g tj|dd\}}tjdddddddgtjd}t|| t
|t||g d S )Nz20130101 09:00:00.0000420130101r   r:   )r(   T)r    Z201302M)freqZ201303z1 day 1 minz1 day)r   r   r   r)   r.   r=   r0   r1   r2   r   r3   r   r   r   )r4   Zv1Zv2rS   rA   rB   rM   r!   r!   r&   test_datelike   sF    zTestFactorize.test_datelikec             C   s   t jdddt jgdd}tt|}xddD ]\}|j|d|d}t jddd|gd	d}tt|tt|ksrtt	
t|||k q,W t jdt jdgdd}d
}|j|d|d}t jdd
dgd	d}tt|tt|kstt	
t|||k d S )Nr:   r;   O)r(   )rH      T)r    r<   r   int32rH   F)r.   r=   r>   htZObjectFactorizerlenr)   setAssertionErrorr1   r2   pdisna)r4   keyZrizerr<   idsexpectedr!   r!   r&   test_factorize_nan   s    
z TestFactorize.test_factorize_nanz&data, expected_codes, expected_uniques)r:   r:   )r:   r;   )r   r   Znonsenser   r:   r;   rI   )r:   r;   rI   c             C   sD   t |\}}t|tj|tjd tj|t	d}t|| d S )N)r(   )
r`   r)   r1   r2   r.   r=   r0   comZasarray_tuplesaferK   )r4   datar8   r7   rA   rB   Zexpected_uniques_arrayr!   r!   r&   test_factorize_tuple_list   s    z'TestFactorize.test_factorize_tuple_listc          	   C   sV   t jdd tdD td}d}tjt|d tj|d d d dd	 W d Q R X d S )
Nc             S   s   g | ]}t |qS r!   )complex)r#   ir!   r!   r&   r'      s    z6TestFactorize.test_complex_sorting.<locals>.<listcomp>   )r(   zJunorderable types: .* [<>] .*|'[<>]' not supported between instances of .*)matchrH   T)r    )	r.   r=   rangerK   pytestraises	TypeErrorr   r)   )r4   Zx17msgr!   r!   r&   test_complex_sorting   s    z"TestFactorize.test_complex_sortingc             C   sn   |}t jddddg|d}t jddddgt jd}t jddg|d}t|\}}t|| t|| d S )Nr:   r;   )r(   r   )r.   r=   r0   r   r)   r1   r2   )r4   Zany_real_dtyper(   rg   r8   r7   rA   rB   r!   r!   r&   test_numeric_dtype_factorize   s    z*TestFactorize.test_numeric_dtype_factorizec             C   s   t jddddddgt jd}|j|d t jddddddgt jd}t jdddgt jd}t|\}}t|| t|| d S )	Ng      ?g    חAg:0yE>)r(   )writer   r:   r;   )	r.   r=   float64setflagsr0   r   r)   r1   r2   )r4   writablerg   r8   r7   rA   rB   r!   r!   r&   test_float64_factorize  s    z$TestFactorize.test_float64_factorizec             C   sv   t jdddgt jd}|j|d t jdddgt jd}t jddgt jd}t|\}}t|| t|| d S )Nl    r:   )r(   )rt   r   )	r.   r=   uint64rv   r0   r   r)   r1   r2   )r4   rw   rg   r8   r7   rA   rB   r!   r!   r&   test_uint64_factorize  s    z#TestFactorize.test_uint64_factorizec             C   sv   t jdddgt jd}|j|d t jdddgt jd}t jddgt jd}t|\}}t|| t|| d S )Nl    l         )r(   )rt   r   r:   )	r.   r=   int64rv   r0   r   r)   r1   r2   )r4   rw   rg   r8   r7   rA   rB   r!   r!   r&   test_int64_factorize  s    z"TestFactorize.test_int64_factorizec             C   s|   t jdddddgtd}|j|d t jdddddgt jd}t jdddgtd}t|\}}t|| t|| d S )	NrD   rF   rE   )r(   )rt   r   r:   r;   )	r.   r=   rK   rv   r0   r   r)   r1   r2   )r4   rw   rg   r8   r7   rA   rB   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dddddd	ddgt jd}t jdddgtd}t|\}}t	
|| t	
|| d S )
NrD   rF   rE   )r(   )rt   r   r:   rH   r;   )r.   r=   r>   r   rK   rv   r0   r   r)   r1   r2   )r4   rw   rg   r8   r7   rA   rB   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.000)rt   r   )r(   z2020-01-01T00:00:00.000000000zdatetime64[ns])	r.   r=   
datetime64rv   r0   r`   r)   r1   r2   )r4   rw   rg   r8   r7   rA   rB   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   r:   T)exact)r`   
RangeIndex
from_rangerm   r.   rL   r0   r   r)   r1   r2   r3   )r4   r    rird   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}|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(   rH   r   r:   )r    T)r   )r`   r   r   rm   r.   rL   r0   r   r)   r1   r2   r3   )r4   r    r   rd   Zri2r   r!   r!   r&   $test_factorize_rangeindex_decreasingT  s    $z2TestFactorize.test_factorize_rangeindex_decreasingc          	   C   sb   t jdddgt jd}tjtdd tj|dd W d Q R X t	d t| W d Q R X d S )	Nl            r:   )r(   zgot an unexpected keyword)rl   T)orderF)
r.   r=   ry   rn   ro   rp   r   r)   r1   assert_produces_warning)r4   rg   r!   r!   r&   test_deprecate_orderg  s
    z"TestFactorize.test_deprecate_orderrg   u8)r(   l         i8Z__nan__foorK   c             C   sL   t |\}}|ddg }tjdddgtjd}t|| t|| d S )Nr   r:   )r(   )r   r)   r.   r=   r0   r1   r2   )r4   rg   rA   rB   r7   r8   r!   r!   r&   ,test_parametrized_factorize_na_value_defaultp  s
    
z:TestFactorize.test_parametrized_factorize_na_value_defaultzdata, na_valuerD    rE   r!   )rD   r:   )rD   r;   c             C   sR   t j||d\}}|ddg }tjddddgtjd}t|| t|| d S )N)na_valuer:   rI   rH   r   )r(   )r   Zfactorize_arrayr.   r=   r0   r1   r2   )r4   rg   r   rA   rB   r7   r8   r!   r!   r&   $test_parametrized_factorize_na_value  s
    z2TestFactorize.test_parametrized_factorize_na_valuer<   rH   id   zdata, uniquesNZInt64Znumpy_arrayZextension_array)rc   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 )N)r    r<   r:   r   )r(   )r   r)   r.   r=   r0   Z	safe_sortr1   r2   r*   ndarrayassert_extension_array_equal)r4   r    r<   rg   rB   rA   r8   r7   r!   r!   r&   test_factorize_na_sentinel  s    z(TestFactorize.test_factorize_na_sentinelr0   c             C   s.   t j|d d\}}t|| t|| d S )N)r<   )r   r)   r1   r2   )r4   rg   r8   r7   rA   rB   r!   r!   r&   &test_object_factorize_na_sentinel_none  s    z4TestFactorize.test_object_factorize_na_sentinel_nonerY   c             C   s.   t j|d d\}}t|| t|| d S )N)r<   )r   r)   r1   r2   )r4   rg   r8   r7   rA   rB   r!   r!   r&   #test_int_factorize_na_sentinel_none  s    z1TestFactorize.test_int_factorize_na_sentinel_none)$__name__
__module____qualname__rn   markparametrizer9   rC   rO   rT   rX   re   rh   rr   rs   rx   rz   r|   r}   r~   r   r   r   r   r.   r=   r   rK   r   r`   r>   r   r(   r   ru   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,td S )Nr   r   2   )size)r.   randomrandintr   r,   r*   r   r_   )r4   rN   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s2td S )Nr   r   r   )r   rY   )	r.   r   r   astyper   r,   r*   r   r_   )r4   rN   r   r!   r!   r&   test_objects  s    
zTestUnique.test_objectsc             C   s2   dddddg}xt dD ]}tt| qW d S )NrP   rQ   CDEi  )rm   r]   r   r,   )r4   lstrj   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 )NrG   r;   )r   Zfrom_arraysr.   rL   repeattiler?   r    r`   r,   r1   assert_almost_equal)r4   Zmindexrd   r   r!   r!   r&   test_on_index_object  s    $

zTestUnique.test_on_index_objectc             C   s  |t jt j krtd nt|r8dddg}ddg}nt|rTdddg}ddg}nt|rtddtddtddg}tddtddg}nJt	|rdddg}ddg}n.t
|rd	d
d
g}d	d
g}ndddg}ddg}t||d }tj||d}t || d S )Nzskip string dtyper:   r;   g      ?g       @r   TFrP   rQ   )r(   )r1   ZBYTES_DTYPESZSTRING_DTYPESrn   skipr
   r	   r   ri   r   r   r   r,   r.   r=   r2   )r4   Zany_numpy_dtyperg   rB   r   rd   r!   r!   r&   test_dtype_preservation  s,    








z"TestUnique.test_dtype_preservationc             C   s   t ddgdd}tdddg}t|}t|| |j|jksDtt|}t|}t|| |j|jksrt|j	}t|}t|| |j|jkstd S )Nz"2015-01-03T00:00:00.000000000+0000z"2015-01-01T00:00:00.000000000+0000zM8[ns])r(   z2015-01-03T00:00:00.000000000z2015-01-01T00:00:00.000000000)
r   r   r   r,   r1   r2   r(   r_   r   r?   )r4   rd   Zdt_indexr   srN   r!   r!   r&   $test_datetime64_dtype_array_returned  s&    


z/TestUnique.test_datetime64_dtype_array_returnedc             C   s@   t jdddgdd}t|}t jddgdd}t|| d S )N20002001zdatetime64[s])r(   zdatetime64[ns])r.   r=   r`   r,   r1   r2   )r4   rD   r   rd   r!   r!   r&   test_datetime_non_ns=  s    
zTestUnique.test_datetime_non_nsc             C   s@   t jdddgdd}t|}t jddgdd}t|| d S )Nr   r   ztimedelta64[s])r(   l     RFl    jIGztimedelta64[ns])r.   r=   r`   r,   r1   r2   )r4   rD   r   rd   r!   r!   r&   test_timedelta_non_nsC  s    
z TestUnique.test_timedelta_non_nsc             C   s   t jdddgdd}tdddddg}t|}t|| |j|jksLtt	|}t|}t|| |j|jkszt|j
}t|}t|| |j|jkstd S )Niy  in  i'  zm8[ns])r(   )r.   r=   r   r   r,   r1   r2   r(   r_   r   r?   )r4   rd   Ztd_indexr   r   rN   r!   r!   r&   %test_timedelta64_dtype_array_returnedI  s    


z0TestUnique.test_timedelta64_dtype_array_returnedc             C   sB   t ddddgtjd}tjdddgtjd}tt|| d S )Nr:   r;   l            )r(   )r   r.   ry   r=   r1   r2   r   r,   )r4   r   rM   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 )NrD   rF   )r(   )r.   r>   r`   r,   r=   rK   r1   r2   )r4   Zduplicated_itemsr   rd   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 )
NZbacabcT)
categoriesorderedZbaabc)r   r   )name)r   )
r   r-   r,   r1   assert_categorical_equalr   r   r`   r   r3   )r4   rd   Z
expected_orF   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20160101z
US/Eastern)tzz2016-01-01 00:00:00-0500z2016-01-01 00:00:00zdatetime64[ns, US/Eastern])r(   rW   z
2016-01-01)r   r   r   r,   r   Z_from_sequencer.   r=   r1   r   r   r3   r`   )r4   r   rd   r!   r!   r&   test_datetime64tz_aware  s8    



z"TestUnique.test_datetime64tz_awarec             C   s:  t tddddg}t|tjdddg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dddgtd}t|| t tttd}ttd}t|| d S )Nr;   r:   rI   r{   )r(   rG   r   z2016-01-01T00:00:00.000000000zdatetime64[ns]z
US/Eastern)r   z2016-01-01 00:00:00zdatetime64[ns, US/Eastern])r(   rW   ZaabcrD   rE   rF   r   )r`   r,   r   r1   r2   r.   r=   r   r   r   r3   r-   rK   r   r   )r4   r   rd   r!   r!   r&   test_order_of_appearance  s(    
z#TestUnique.test_order_of_appearancezarg ,expected)1r   2r   r   )r(   )r   r   c             C   s   t |}t|| d S )N)r`   r,   r1   r2   )r4   argrd   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)r.   r=   rK   r`   r,   r1   r2   )r4   rN   r   rd   r!   r!   r&   test_obj_none_preservation  s    
z%TestUnique.test_obj_none_preservationc             C   s4   t ddg}t|}t dg}t|| d S )Ng       g        )r.   r=   r`   r,   r1   r2   )r4   rD   r   rd   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<t||ksHtt||g}t|}ttjg}t	
|| d S )Ndz=Ql          r   l         )structunpackpackr_   r.   r=   r`   r,   r>   r1   r2   )r4   NAN1NAN2rD   r   rd   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sDt||ksPtxdtjtgD ]V}tj||g|d}t	|}|j
dkstt dt d|d d }||ks\tq\W d S )Nl         l         r   z=Qr   )r(   r:   )r   r   r   r_   r.   ru   rK   r=   r`   r,   r   )	r4   Zbits_for_nan1Zbits_for_nan2r   r   Zel_typerD   r   Zresult_nan_bitsr!   r!   r&   test_first_nan_kept  s    
zTestUnique.test_first_nan_keptc             C   sZ   ||krd S t j||gtd}t|}|jdks6t|d |ksFt|d |ksVtd S )N)r(   r;   r   r:   )r.   r=   rK   r`   r,   r   r_   )r4   Zunique_nulls_fixtureZunique_nulls_fixture2rD   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   rn   r   r   r.   r=   rK   r   r   r   r   r   r   r!   r!   r!   r&   r     s.   *7# r   c               @   s   e Zd Zdd Zdd Zdd Zejddd	d
dgejddddgdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zejd$g eed%eg gd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2S )3TestIsinc          	   C   s~   d}t jt|d tdd W d Q R X t jt|d tddg W d Q R X t jt|d tdgd W d Q R X d S )NzQonly list-like objects are allowed to be passed to isin\(\), you passed a \[int\])rl   r:   )rn   ro   rp   r   isin)r4   rq   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;   TFrD   rE   )r   r   r.   r=   r1   r2   r   )r4   r   rd   r!   r!   r&   rO   <  s6    zTestIsin.test_basicc             C   sD  t dddj}t||d g}tdddg}t|| t||dd }tdddg}t|| t|t|dd }tdddg}t|| t	dddj}t||d g}tdddg}t|| t||dd }tdddg}t|| t|t|dd }tdddg}t|| d S )	NrU   rI   )periodsr   TFr;   z1 day)
r   r?   r   r   r.   r=   r1   r2   r^   r   )r4   rN   r   rd   r!   r!   r&   test_i8b  s(    zTestIsin.test_i8dtype1zm8[ns]zM8[ns]zM8[ns, UTC]z	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-01rI   )r   z	period[D]r   zM8[ns, UTC]UTCr   )r(   )r   Z_valuesZ	to_periodZtz_localizer   viewr   r   r   r.   zerosshapeboolr1   r2   )r4   r(   r   dtarN   compsr   rd   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   rW   r   r;   )r(   Tr:   )
r   r?   r   r   r.   r   r]   r   r1   r2   )r4   r   r   rd   r!   r!   r&   
test_large  s    zTestIsin.test_largec             C   s   t ddddg}dddg}ttdg||}ttdgt ddg|}t ddddg}t||}t|| d S )	Nr   r:   r;   rD   rE   rF   TF)	r.   r=   r   r   
from_codesr   r   r1   r2   )r4   valscatsZSdZStrd   r   r!   r!   r&   test_categorical_from_codes  s    
 z$TestIsin.test_categorical_from_codesc             C   sx   t ddddg}dddg}tdg||}tdgt ddg|}t ddddg}t||}t|| d S )	Nr   r:   r;   rD   rE   rF   TF)r.   r=   r   r   r   r   r1   r2   )r4   r   r   catotherrd   r   r!   r!   r&   test_categorical_isin  s    
zTestIsin.test_categorical_isinc             C   s8   t jg}t jg}t dg}t||}t|| d S )NT)r.   r>   r=   r   r   r1   r2   )r4   r   r?   rd   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 )Ng      ?iAB r   r:   )r(   )
r.   r   r>   r   r   onesr]   r   r1   r2   )r4   r   r   rd   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 )Ng      ?iAB r   r:   )r(   )
r.   r   r   r>   r   r   r]   r   r1   assert_series_equal)r4   r   Zseriesr   rd   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!   )r4   r   r!   r!   r&   __eq__  s    z7TestIsin.test_same_object_is_in.<locals>.LikeNan.__eq__c             S   s   dS )Nr   r!   )r4   r!   r!   r&   __hash__  s    z9TestIsin.test_same_object_is_in.<locals>.LikeNan.__hash__N)r   r   r   r   r   r   r!   r!   r!   r&   LikeNan  s   r   TF)r1   r2   r   r   r.   r=   )r4   r   rD   rE   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 k	s(tt||}ttdg| ttj|t	dtj|t	d}ttdg| ttj|tj
dtj|tj
d}ttdg| d S )Nr>   r   T)r(   )floatr_   r   r   r1   r2   r.   r=   r/   rK   ru   )r4   r   r?   r   r!   r!   r&   r     s    

 zTestIsin.test_different_nansc             C   s8   ddg}dg}t ddg}t||}t|| d S )Nss*   Z42F)r.   r=   r   r   r1   r2   )r4   r   r?   rd   r   r!   r!   r&   test_no_cast  s
    zTestIsin.test_no_castempty)r(   c             C   s6   t ddg}tddg}t||}t|| d S )NrD   rE   F)r   r.   r=   r   r   r1   r2   )r4   r   r   rd   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 dddg}t||}t|| d S )Nr>   y              ?)r(   FT)	r.   r=   r>   r   rK   r   r   r1   r2   )r4   r   r   rd   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<t||ksHt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   z=Ql          r   l         )r(   T)r   r   r   r_   r.   r=   ru   r   r   r1   r2   )r4   r   r   rN   Zlookup1r   rd   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 1r?   r:   r;   r   FN)r   r   r1   assert_frame_equal)r4   dfr   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 NaNr?   r;   NaNFN)r   r.   r>   r   r1   r   )r4   r   r   r   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.4245r?   gn?g#Ed@z1.4245FN)r   r   r1   r   )r4   r   r   r   r!   r!   r&    test_isin_float_df_string_search7  s    z)TestIsin.test_isin_float_df_string_searchN)r   r   r   r   rO   r   rn   r   r   r   r   r   r   r   r   r   r   r   r   r   rK   r.   r=   r   r   r   r   r  r  r!   r!   r!   r&   r   .  s(   &

		(	r   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|}ddddd	g}t	|
td
d}tddddg|d}t| |  d S )Ni  r   )cutrJ   gvgQg`"?gw/?g!rh?T)r   r:   )r"   )r.   r   seedZpandas.core.reshape.tiler  randnr   value_countsr   Zfrom_breaksr   CDTr   r1   r   Z
sort_index)r4   r  rN   factorr   Zbreaksr"   rd   r!   r!   r&   test_value_countsA  s    

z!TestValueCounts.test_value_countsc             C   sv   ddddg}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 )Nr:   r;   rI   rJ   )bins)gZd;?g      @)r"   F)r  r    )gZd;?g      @)g      @g      @)r   r  r   r   r+   r1   r   )r4   r   r   rd   r!   r!   r&   test_value_counts_binsO  s    z&TestValueCounts.test_value_counts_binsc          	   C   s   t ddg}t|dkstt jddgdd}t|dks@tt tdddg}t|dksdtd}tjt|d t jddgdd W d Q R X d S )Nr:   g      ?)r  r   r;   z*bins argument only works with numeric data)rl   )r   r  r]   r_   r   rn   ro   rp   )r4   r   rq   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}xH||gD ]<}t|}tj|dd}t|dksXtt|d	ks,tq,W t t	d
di}t
t|| d S )Ni'  ztimedelta64[ns])r(   r   z
2014-01-01F)dropnar:   r;   z2014-01-01 00:00:00)r   r.   timedelta64r   r   r   r  r]   r_   r   r1   r   )r4   tddtr   vcZ
vc_with_naZ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 dddg|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(   rI   r;   )r"   z
2362-01-01ignore)errors)
r   r   r  r   rK   r1   r   r   r.   r>   )r4   r   resZ	exp_indexrM   r!   r!   r&   &test_value_counts_datetime_outofboundsw  s     




 z6TestValueCounts.test_value_counts_datetime_outofboundsc             C   sv   t ttd}| }t dddgtdddgd}tj||d	d
 |j }| }|j	 |_	tj||d	d
 d S )NZaaabbcrI   r;   r:   rD   rE   rF   )r"   T)check_index_type)
r   r   r-   r  r   r1   r   r   Z
as_orderedr"   )r4   r   r   rd   r!   r!   r&   r     s    
z TestValueCounts.test_categoricalc             C   sN  t ttd}tj|jd< | }t dddgtdddgdddgd	d
}tj	||dd |jdd}t ddddgtdddtjgd
}tj	||dd t ttdddddgd}tj|jd< | }t dddgtdddgdddgddd
}tj	||dd |jdd}t ddddgtdddtjgdddgddd
}tj	||dd d S )NZ
aaaaabbbccr:   rJ   rI   r;   rD   rE   rF   )r   )r"   T)r  F)r  )r   r   )r   r   )
r   r   r-   r.   r>   Zilocr  r   r1   r   )r4   r   r   rd   r!   r!   r&   test_categorical_nans  s2    "
 z%TestValueCounts.test_categorical_nansc             C   s`   t ttdtddd}| }t ddddgtd	d
ddgtdddd}tj||dd d S )NZbbbaacabcdT)r   r   rI   r;   r:   r   rE   rD   rF   r   )r"   )r  )r   r   r-   r  r1   r   )r4   r   r   rd   r!   r!   r&   test_categorical_zeroes  s    
z'TestValueCounts.test_categorical_zeroesc             C   s  t tdddgjddtddgddgd t tdddg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dddgddtjgd t td	d
d
gjddtddgd
d	gd t td	d
d
gjddtddgd
d	gd t td	d
d
d gjddtddgd
d	gd td	d	d
d
d
d gjdd}tdddgd
d	tjgd}t || d S )NTF)r  r;   r:   )r"   rI   rG   g$@g      @)r1   r   r   r  r.   r>   )r4   r   rd   r!   r!   r&   test_dropna  s0    ((zTestValueCounts.test_dropnac             C   s   t dgd dgd  tjgd  }tjtdf}x|D ]}||}|jddd}t d	d
dgt tjddg|dd}t|| |jddd}t ddgt ddg|dd}t|| q6W d S )Nr:   r;   rI   rG   zM8[ns]TF)	normalizer  g      ?g333333?g?g       @g      ?)r(   )r"   g333333?g?)	r   r.   r>   ru   rK   r   r  r1   r   )r4   r   ZdtypestZs_typedr   rd   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 )Nl            )r(   r:   )r"   rH   )	r.   r=   ry   r   r   r  r1   r   rK   )r4   rN   rd   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dddddddddd	g
ed
dd
ej	dddd
ej	dg
eddddddddddg
ejddddddddddg
e
dejdddddddddd g
ejdgd!d" Zd#d$ Zd%d& Zejd'd(d)d*d+d(d)d*d+gd(d)d*d+gfd,d-d-d,gd,d-gfd.d/d0d.gd.d/d0gfgd1d2 Zd3S )4TestDuplicatedc             C   s  t jddt jddt jgtd}t|}t ddddddg}t|| tj|dd}t ddddddg}t|| tj|d	d}t ddddddg}t|| tj|dd}t ddddddg}t|| t jd
td}xDt	t
ddt jt jgd dt jdt jgd D ]\}}|||< qW t|}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(   FTfirst)keeplast   rJ   )r.   r=   r>   rK   r   
duplicatedr1   r2   r   	enumeratezip)r4   keysr   rd   rj   r  ZfalsesZtruesr!   r!   r&   test_duplicated_with_nas  s8    
4


z'TestDuplicated.test_duplicated_with_nascaser:   r;   rG   rI   rJ      g?g@gffffff
@g@gffffff@y      ?      ?y       @       @y      @      @y      @      @y      @      @y      @      @rD   rE   erF   r   f)r(   l               r   '      c       
      C   sp  t ddddddddddg
}t ddddddddddg
}||B }tj|dd}t|| tj|dd}t|| tj|dd}t|| xdt|t|ddgD ]L}|jdd}t|| |jdd}t|| |jdd}t|| qW xrt|t|ddgD ]Z}	|	jdd}t|t| |	jdd}t|t| |	jdd}t|t| qW d S )NFTr"  )r#  r$  category)r(   )	r.   r=   r   r&  r1   r2   r   r   r   )
r4   r+  	exp_firstexp_last	exp_false	res_firstres_last	res_falseidxr   r!   r!   r&   test_numeric_object_likes:  s2    z(TestDuplicated.test_numeric_object_likesc             C   s&  ddddddddddg
}ddddd	dd
dddg
}t dd |D t dd |D t dd |D t dd |D t dd |D g}t ddddddddddg
}t ddddddddddg
}||B }xL|D ]B}tj|dd}t|| tj|dd}	t|	| tj|dd}
t|
| xpt|t|ddt|tdgD ]N}|jdd}t|| |jdd}	t|	| |jdd}
t|
| qNW x|t|t|ddt|tdgD ]Z}|jdd}t	|t| |jdd}	t	|	t| |jdd}
t	|
t| qW qW d S )Nz
2011-01-01z
2011-01-02r   z
2011-01-03z
2011-01-04z
2011-01-06z1 daysz2 daysz3 daysz4 daysz6 daysc             S   s   g | ]}t |qS r!   )r   )r#   r   r!   r!   r&   r'     s    z6TestDuplicated.test_datetime_likes.<locals>.<listcomp>c             S   s   g | ]}t |d dqS )z
US/Eastern)r   )r   )r#   r   r!   r!   r&   r'     s    c             S   s   g | ]}t |d dqS )r   )rW   )r   )r#   r   r!   r!   r&   r'     s    c             S   s   g | ]}t |qS r!   )r.   r   )r#   r   r!   r!   r&   r'     s    c             S   s   g | ]}t |qS r!   )r   )r#   r   r!   r!   r&   r'     s    FTr"  )r#  r$  r2  )r(   )
r.   r=   r   r&  r1   r2   r   rK   r   r   )r4   r  r  casesr3  r4  r5  r+  r6  r7  r8  r9  r   r!   r!   r&   test_datetime_likes{  sr    

z"TestDuplicated.test_datetime_likesc          	   C   sV   t dddgtddg}x6|D ].}|jdks2tt| t	dddg q W d S )Nr:   r;   rI   r   TF)
r   r`   r   Z	is_uniquer_   r1   r2   r&  r.   r=   )r4   r;  r+  r!   r!   r&   test_unique_index  s
    
z TestDuplicated.test_unique_indexzarr, uniques)r   r   )r   r:   )r:   r   )r:   r:   )rE   rF   )rD   rE   )rD   r:   )rE   r;   )rD   rI   c             C   s8   t jt|td}||d d < t|}t|| d S )N)r(   )r.   r   r]   rK   r`   r,   r1   r2   )r4   rN   rB   rd   r   r!   r!   r&   test_unique_tuples  s    
z!TestDuplicated.test_unique_tuplesN)r   r   r   r*  rn   r   r   r.   r=   r>   rK   ry   r:  r<  r=  r>  r!   r!   r!   r&   r!    s8   '  ,,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   st   t  }|dd |ddks&ttjtdd |dd W d Q R X tjtdd |d W d Q R X d S )Nrb   r:   z'key' has incorrect type)rl   rJ   r,  z'val' has incorrect type)r\   StringHashTableset_itemZget_itemr_   rn   ro   rp   )r4   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@gQ	@irG   r;   rI   )rt   )r(   )r.   r=   r>   rv   r\   Float64HashTablemap_locationsr1   r2   lookuprL   r]   r0   )r4   rw   xsmr!   r!   r&   test_lookup_nan  s
    
zTestHashTable.test_lookup_nanc             C   s:   d}t |}|dd |dd t|dks6td S )NrJ   g        r   g       r:   )r\   rD  rA  r]   r_   )r4   NrH  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<t||ksHtt }||d ||d t|dksxtd S )Nr   z=Ql          r   l         r:   )r   r   r   r_   r\   rD  rA  r]   )r4   r   r   rH  r!   r!   r&   test_add_different_nans  s    z%TestHashTable.test_add_different_nansc             C   sZ   t jdddgt jd}|j|d t }|| t|	|t j
t|t jd d S )Nr:   r;   l            )r(   )rt   )r.   r=   ry   rv   r\   UInt64HashTablerE  r1   r2   rF  rL   r]   r0   )r4   rw   rG  rH  r!   r!   r&   test_lookup_overflow  s
    
z"TestHashTable.test_lookup_overflowc             C   s@   t ddddgtjd}tjdddgtjd}t| | d S )Nr:   r;   l            )r(   )r   r.   ry   r=   r1   r2   r,   )r4   r   rM   r!   r!   r&   test_get_unique$  s    zTestHashTable.test_get_uniquenvalsr   r   z&htable, uniques, dtype, safely_resizesrK   FTru   r{   r[   ry   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 Q R X |  |j|	kstd S )Ni  )r(   )rt   r   rH   zexternal reference.*)rl   )r.   r=   r   r  rv   Z
get_labelsZto_arrayr   rn   ro   
ValueErrorr_   )
r4   rw   htablerB   r(   Zsafely_resizesrP  r   tmpZoldshaper!   r!   r&   test_vector_resize)  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   i  i  i  rI   T)fracreplace)drop)rt   r"  )r#  )Zreturn_inverse)getattrr1   r   r\   rD  r.   r>   locPyObjectHashTabler   samplereset_indexr?   rv   drop_duplicatesr,   r2   )r4   rR  tm_dtyperw   makerr   s_duplicatedexpected_uniqueresult_uniqueresult_inverseZreconstrr!   r!   r&   test_hashtable_uniqueV  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 )NrW  r   i  i  i  rI   T)rX  rY  )rZ  )rt   )r[  r1   r   r\   rD  r.   r>   r\  r]  r   r^  r_  r?   rv   ra   r)   r  r`  r2   )r4   rR  ra  rw   rb  r   rc  Zna_maskre  rf  rd  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)r.   iinfoZuint32max)r4   r   ri  rB  r!   r!   r&   test_hashtable_large_sizehint  s    z+TestHashTable.test_hashtable_large_sizehintN)r   r   r   rC  rI  rK  rL  rN  rO  rn   r   r   r\   r]  ZObjectVectorr@  rD  ZFloat64VectorZInt64HashTableZInt64VectorZInt32HashTableZInt32VectorrM  ZUInt64VectorrT  rg  rh  rl  r!   r!   r!   r&   r?    sJ   $!!r?  c              C   sN   t tjd} t| dddddg}t| jdddddg}t|| d S )Nr   r   g      ?g      ?g      ?g      ?)	r   r.   r   r  r   Zquantiler?   r1   r   )r   r   rd   r!   r!   r&   test_quantile  s    rm  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 )Nr:   i   i   r{   T)Zreturn_indexF)Zcheck_dtyperH   r   )r.   r   r   r   r\   Zunique_label_indicesr,   r1   r2   choicer]   )rD   leftrightr!   r!   r&   test_unique_label_indices  s    

rq  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 )N)r(   )labels)r.   isfinitecopylibalgosZrank_1dr   r]   r0   rR   r>   r1   r   )rN   maskr   rM   )rs  r!   r&   _check  s    

z*TestRank.test_scipy_compat.<locals>._checkg      @r:   r;   rI   g      @)Zscipy.statsrs  r.   r=   r>   )r4   ry  r!   )rs  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   )rt   )	r.   r=   ru   rv   r   r   rankr1   r2   )r4   rw   r(   rM   rg   r@   r   r!   r!   r&   rO     s    
zTestRank.test_basicc             C   sP   t jddgt jd}x6t jt jgD ]&}tddg|d}tt|| q"W d S )Nr:   r;   )r(   l            )	r.   r=   ru   ry   r   r1   r2   r   r|  )r4   rM   r(   r   r!   r!   r&   r     s    zTestRank.test_uint64_overflowc          	   C   sP   t dddgdddgddd	ggg}d
}tjt|d t| W d Q R X d S )Nr:   r;   rI   rJ   rG   r,  r1  r%  	   z%Array with ndim > 2 are not supported)rl   )r.   r=   rn   ro   rp   r   r|  )r4   rN   rq   r!   r!   r&   test_too_many_ndims  s    $zTestRank.test_too_many_ndimsr?   i  i  r;   Z1dZ2d)rc   c             C   s"   t j|dd }|dkstd S )NT)Zpctr:   )r   r|  rk  r_   )r4   r?   r   r!   r!   r&   test_pct_max_many_rows  s    	zTestRank.test_pct_max_many_rowsN)r   r   r   r  Zskip_if_no_scipyrz  rn   r   r   r.   	typecodesrO   r   r~  ZsingleZhigh_memoryrL   reshaper  r!   r!   r!   r&   rr    s   
rr  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 )NrY   )r(   i        rK   rH   )	r.   r=   r   rw  padr0   r1   r2   backfill)oldnewr   rd   r!   r!   r&   !test_pad_backfill_object_segfault  s    r  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   s   d S )Nr!   )r4   r!   r!   r&   test_combineFunc  s    z TestTseriesUtil.test_combineFuncc             C   s   d S )Nr!   )r4   r!   r!   r&   test_reindex  s    zTestTseriesUtil.test_reindexc             C   s   d S )Nr!   )r4   r!   r!   r&   	test_isna!  s    zTestTseriesUtil.test_isnac             C   s   d S )Nr!   )r4   r!   r!   r&   test_groupby$  s    zTestTseriesUtil.test_groupbyc             C   s   d S )Nr!   )r4   r!   r!   r&   test_groupby_withnull'  s    z%TestTseriesUtil.test_groupby_withnullc             C   s   t dddg}t ttd}tjd |j|j}tjddddddddddddgtjd	}t	
|| t dd
g}t ttdd}tjd |j|j}tjdddddgtjd	}t	
|| d S )Nr:   rG   r   r  int64_tr   r;   rH   )r(   rJ   )r   r-   rm   rw  r  r?   r.   r=   r0   r1   r2   )r4   r  r  fillerexpect_fillerr!   r!   r&   test_backfill*  s    (zTestTseriesUtil.test_backfillc             C   s   t dddg}t ttd}tjd |j|j}tjddddddddddddgtjd	}t	
|| t ddg}t td}tjd |j|j}tjdddddgtjd	}t	
|| d S )
Nr:   rG   r   r  r  rH   r   r;   )r(   )r   r-   rm   rw  r  r?   r.   r=   r0   r1   r2   rL   )r4   r  r  r  r  r!   r!   r&   test_pad;  s    (zTestTseriesUtil.test_padN)
r   r   r   r  r  r  r  r  r  r  r!   r!   r!   r&   r    s   r  c           ~   C   s   t jddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddg|ddt jddd	d
dddddddddddddddddddddd d!ddddddd	d
dddddddddddddddddddddd d!ddddddd	d
dddddddddddddddddddddd d!ddddddd	d
dddddddddddddddddddddd d!ddddg|ddg} t| rtd S )"NrI   r;   r:   r   r{   )r(                                 rZ         rk               r     r   r}  r%  r1  r,  rG   rJ   )r.   r=   rw  Zis_lexsortedr_   )Z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   i  r   Z	mergesort)kindi@B )r.   r   r   r   r0   rw  Zgroupsort_indexerargsortr1   r2   Zlexsort)rD   rE   r   rd   rb   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 sDtt fdd| D s^t  krn  ksrt  k s  krtt  t  kstt  t  krttfd	d| D sttfd
d| D stkrkstk s
krtt  t  ks$tt  t  kr:tx$t| D ]}t|| ksDtqDW t	t  gd 
  t	t  gd 
  d S )Nz-infg}Ô%Ir   g}Ô%ITrR   c             3   s   | ]} |kV  qd S )Nr!   )r#   rS   )Infr!   r&   	<genexpr>y  s    z%test_infinity_sort.<locals>.<genexpr>c             3   s   | ]} |kp| kV  qd S )Nr!   )r#   rS   )r  r!   r&   r  z  s    c             3   s   | ]} |kV  qd S )Nr!   )r#   rS   )NegInfr!   r&   r    s    c             3   s   | ]} |k p| kV  qd S )Nr!   )r#   rS   )r  r!   r&   r    s        )rw  InfinityNegInfinityr   allr_   r   sortedr.   r=   r  )Zref_numsZpermr!   )r  r  r&   test_infinity_sortn  s&    r  c              C   s   t  } t  }| tjkrt| tjkr,t| tjk r:t| tjkrHt| tjkrVt| tjksdt|tjkrrt|tjkrt|tjk rt|tjkrt|tjkrt|tjkstd S )N)rw  r  r  r.   r>   r_   )r  r  r!   r!   r&   test_infinity_against_nan  s    r  c              C   s*   t jdt jd} t| }|| ks&td S )Nr   )r(   )r.   rL   r0   rw  Zensure_platform_intr_   )rN   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 Q R X tjt| d& t	t 
||gt 
||g W d Q R X tjt| d t	t 
||g| W d Q R X tjt| d& t	t 
||gt 
||g W d Q R X tjt| d& t	t 
||gt 
||g W d Q R X tjt| d4 tj	t 
||gt 
||gt 
ddgd W d Q R X tjt| d4 tj	t 
||gt 
||gt 
ddgd W d Q R X tjt| d@ tj	t 
||gt 
||gt 
ddgt 
ddgd W d Q R X tjt| d> tt( t	t 
||gt 
t j|g W d Q R X W d Q R X 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 addition)rl   FT)arr_mask)b_mask)r  r  )r.   rj  r{   rk  minrn   ro   OverflowErrorr   Zchecked_add_with_arrr=   r1   r   RuntimeWarningr>   )rq   rH  nr!   r!   r&   test_int64_add_overflow  sJ     * **446**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 )N)r(   )r(   r"   )	r   r.   ru   r   intr1   r   r   mode)r4   rM   r!   r!   r&   test_no_mode  s    zTestMode.test_no_modec             C   s   dg}dg}dg}ddg}xpt jd t jd  D ]X}t||d}t||d}tt|| t||d}t||d}tt|| q0W tdgtd}ttdg| tdddgtd}ttdddg| d S )Nr:   r{  rV  )r(   rD   rE   rF   )	r.   r  r   r1   r   r   r  r  rK   )r4   
exp_singledata_single	exp_multi
data_multir  r   rM   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  }xpt jd t jd  D ]X}t||d}t||d}tt|| t||d}t||d}tt|| qVW d S )Nr:   rG   r;   rI   r{  rV  )r(   )r.   r  r   r1   r   r   r  )r4   r  r  r  r  r  r   rM   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  }x:ttgD ].}t ||d}t ||d}tt|| qhW d S )	NrE   rD   r;   rI   rF   )r(   barr   )r   r1   r   r   r  strrK   )r4   rM   rg   r   r  r!   r!   r&   test_strobj_mode		  s    zTestMode.test_strobj_modec             C   sr   t dddgdd}t dddgdd}tt|| t ddgdd}t dddddgdd}tt|| d S )Nz
1900-05-03z
2011-01-03z
2013-01-02zM8[ns])r(   )r   r1   r   r   r  )r4   rM   r   r!   r!   r&   test_datelike_mode	  s    zTestMode.test_datelike_modec             C   st   t dddgdd}t dddgdd}tt|| t ddgdd}t dddd	ddgdd}tt|| d S )
Nz-1 daysz0 daysz1 daysztimedelta64[ns])r(   z2 minz1 dayz-1 dayz-1 day 2 min)r   r1   r   r   r  )r4   rM   r   r!   r!   r&   test_timedelta_mode%	  s    zTestMode.test_timedelta_modec             C   s.   t dg}t dddg}tt|| d S )Nr   r:   )r   r1   r   r   r  )r4   rM   r   r!   r!   r&   test_mixed_dtype1	  s    
zTestMode.test_mixed_dtypec             C   sp   t dgtjd}t dddgtjd}tt|| t ddgtjd}t ddgtjd}tt|| d S )Nl            )r(   r:   )r   r.   ry   r1   r   r   r  )r4   rM   r   r!   r!   r&   r   6	  s    zTestMode.test_uint64_overflowc             C   s   t ddg}|}tt|| t| | t dddg}t dgddgd}tt|| t| | t dddddg}t ddgdddgd}tt|| t| | d S )Nr:   r;   rD   )r   rI   )r   r1   r   r   r  )r4   rF   rM   r!   r!   r&   r   ?	  s    zTestMode.test_categoricalc             C   s   t dddg}tdddgtjd}tt|| t dddg}tdgtd}tt|| t dddddg}tddgtjd}tt|| tddgdd}t ddd	d
ddgdd}tt|| d S )Nr:   r;   rI   )r(   rD   z2 minz1 dayztimedelta64[ns]z-1 dayz-1 day 2 min)	r   r   r.   r{   r1   r   r   r  rK   )r4   r9  rM   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(   zM8[ns]zm8[ns]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  rI   rJ   r   nsr;   r:   r   )axisztimedelta64[ns])r(   )r.   rL   r   r{   r   r  r(   typer   diffr   r   r  r1   r2   T)r4   r(   rN   r   rd   r!   r!   r&   test_diff_datetimelike_nate	  s     z#TestDiff.test_diff_datetimelike_natc          	   C   sB   t ddddj}d}tjt|d tj|ddd W d Q R X d S )	Nz
2016-01-01rI   z
US/Pacific)r   r   z#cannot diff DatetimeArray on axis=1)rl   r:   )r  )r   _datarn   ro   rQ  r   r  )r4   r   rq   r!   r!   r&   test_diff_ea_axisu	  s    zTestDiff.test_diff_ea_axisZint8Zint16c             C   sN   t jdddddg|d}t|d}t jt jddddgdd}t|| d S )Nr   r:   )r(   rH   Zfloat32)r.   r=   r   r  r>   r1   r2   )r4   r(   rN   r   rd   r!   r!   r&   test_diff_low_precision_int|	  s    z$TestDiff.test_diff_low_precision_intN)	r   r   r   rn   r   r   r  r  r  r!   r!   r!   r&   r  d	  s   r  opc          	   C   s   | ddddg}| ddddg}| ddddddg}t |tjrZt||}t|| n.tt t||}W d Q R X t	|| d S )NrI   r:   rJ   r;   )
r*   r.   r   r   Zunion_with_duplicatesr1   r2   r   r  r   )r  ZlvalsZrvalsrd   r   r!   r!   r&   test_union_with_duplicates	  s    r  )Pr   	itertoolsr   r   numpyr.   rn   Zpandas._libsr   rw  r   r\   Zpandas.compatr   Zpandas.util._test_decoratorsutilZ_test_decoratorsr  Zpandas.core.dtypes.commonr   r   r	   r
   r   Zpandas.core.dtypes.dtypesr   r  Zpandasr`   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingr1   Zpandas.core.algorithmscoreZ
algorithmsZpandas.core.arraysr   Zpandas.core.commoncommonrf   r   r   r   r  r!  r?  rm  rq  rr  r  r  r  r  r  r  r  r  r  r  r   r   r=   r  r!   r!   r!   r&   <module>   s`   L   1  P   S \ K62  !4  