3
pdB                @   s  d dl m Z  d dlmZ d dlZd dlZd dlmZ d dlZd dl	m
ZmZmZ d dlmZ d dljj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( d dl)j*Z+d dl,j-j.Z
d d
l/m0Z0 d dl1j-j2Z3G dd dZ4G dd dZ5G dd dZ6G dd dZ7G dd dZ8G dd dZ9G dd de9Z:G dd de9Z;G dd dZ<dd Z=dd  Z>G d!d" d"Z?d#d$ Z@G d%d& d&ZAd'd( ZBd)d* ZCd+d, ZDd-d. ZEd/d0 ZFd1d2 ZGG d3d4 d4ZHdS )5    )datetime)permutationsN)RandomState)algosgroupby	hashtable)np_array_datetime64_compat)is_bool_dtypeis_complex_dtypeis_float_dtypeis_integer_dtypeis_object_dtype)CategoricalDtype)CategoricalCategoricalIndexDatetimeIndexIndexIntervalIndexSeries	Timestampcompat)DatetimeArrayc               @   s  e Zd Zdd Zdd Zdd Zdd Zejj	d	dCdDdEdFdgdd
dd
dgdGdHdIdgfdJdKdLdMdNgdd
dd
dgdOdPdQdRgfdSdTdUdVgdd
dd
gdWdXdYg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ejj	dejdd
dgd d!ejd[d
d]gd#d!ejd$d%d$gd&d!gd'd( Zejj	d)ejdd
ddgd d!dfejd
dd
dgd d!d
fejd_d
dadgd#d!dcfejd
ded
dgd#d!d
fejd*d+d*d,ged!d*fejf dff dgged!f fejdhf didjged!dkfgd-d. Zejj	d/d0d1gejj	d2dldmd4gejj	d5ejd,d*d6d,ged!ejd,d*ged!fejdd
ejdgd7d!ejdd
gd7d!fgd8d9gd:d;d< Zejj	d	d*d6d,d*gejddd
dgejd=d!ejd*d,ejged!fd*ejd,d*gejddd
dgejd=d!ejd*d,ejged!fgd>d? Zejj	d	d
d6d
dgejdddd
gejd=d!ejd
dejgd@d!fd
ejd
dgejdddd
gejd=d!ejd
dejgejd!fgdAdB Zd6S )nTestFactorizec          	   C   sP  t jddddddddg\}}tj|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j|| tjdddgtd}tj|| t jtt	t
d
\}}tjddd	ddgtjd}tj|| tjddd	ddgtjd}tj|| t jtt	t
d
dd\}}tjddd	ddgtjd}tj|| tjddd	ddgtjd}tj|| t jtt	tjd\}}tjddd	ddgtjd}tj|| tjdddddgtjd}tj|| t jtt	tjddd\}}tjddd	ddgtjd}tj|| tjdddddgtjd}tj|| d S )Nabc)dtypeT)sortr                  g      @g      @g      @g       @g      ?g        )r   	factorizetmassert_numpy_array_equalnparrayobjectintplistreversedrangeint64arangefloat64)selfcodesuniquesexp r4   9/tmp/pip-build-7vycvbft/pandas/pandas/tests/test_algos.py
test_basic(   s8      zTestFactorize.test_basicc             C   s   t ddtjddtjg}tj|\}}tjddddddgtjd}tj	|| t
dddtjg}tj|| tj|d	d
\}}tjddddddgtjd}tj	|| t
dtjddg}tj|| d S )NABgQ	@r   r   r   r!   )r   T)r   r9   )r   r&   naninfr   r#   r'   r)   r$   r%   r   assert_index_equal)r0   xr1   r2   r3   r4   r4   r5   
test_mixedN   s    zTestFactorize.test_mixedc             C   s^  t d}t d}t||||||g}tj|\}}tjddddddgtjd}tj|| t	||g}tj
|| tj|dd\}}tjddddddgtjd}tj|| t	||g}tj
|| tjdd	d
}tjdd	d
}t||||||g}tj|\}}tjddddddgtjd}tj|| tj
|tj||g tj|dd\}}tjddddddgtjd}tj|| tj
|tj||g tjd}tjd}t|||||||g}tj|\}}tjdddddddgtjd}tj|| tj
|tj||g tj|dd\}}tjdddddddgtjd}tj|| tj
|tj||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'   r)   r$   r%   r   r<   pdPeriodZPeriodIndexto_timedelta)r0   Zv1Zv2r=   r1   r2   r3   r4   r4   r5   test_datelike_   sF    

zTestFactorize.test_datelikec             C   s   t jdddt jgdd}tjt|}xddD ]\}|j|d|d}t jddd|gd	d}tt|tt|ksrtt	j
tj|||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	j
tj|||k d S )Nr   r   O)r      T)r   na_sentinelr   Zint32Fr9   )r9   rG   r9   r9   )r&   r'   r:   htZ
Factorizerlenr#   setAssertionErrorr$   r%   rB   isna)r0   keyZrizerrH   idsexpectedr4   r4   r5   test_factorize_nan   s    
z TestFactorize.test_factorize_nanz&data, expected_codes, expected_uniquesr   r   r   Znonsenser!   c             C   sD   t j|\}}tj|tj|tjd tj|t	d}tj|| d S )N)r   )
rB   r#   r$   r%   r&   r'   r)   comZasarray_tuplesafer(   )r0   dataexpected_codesexpected_uniquesr1   r2   Zexpected_uniques_arrayr4   r4   r5   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 r4   )complex).0ir4   r4   r5   
<listcomp>   s    z6TestFactorize.test_complex_sorting.<locals>.<listcomp>   )r   zJunorderable types: .* [<>] .*|'[<>]' not supported between instances of .*)matchr   T)r   r9   )	r&   r'   r,   r(   pytestraises	TypeErrorr   r#   )r0   Zx17msgr4   r4   r5   test_complex_sorting   s    z"TestFactorize.test_complex_sortingc             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j|\}}tj|| tj|| d S )	Ng      ?g    חAg:0yE>)r   )writer   r   r   )	r&   r'   r/   setflagsr)   r   r#   r$   r%   )r0   writablerS   rT   rU   r1   r2   r4   r4   r5   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j|\}}tj|| tj|| d S )Nr   @   r   )r   )rb   r   l            l    l            l    l            l    )	r&   r'   uint64rc   r)   r   r#   r$   r%   )r0   rd   rS   rT   rU   r1   r2   r4   r4   r5   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j|\}}tj|| tj|| d S )Nr   ?   r   )r   )rb   r   l            l    l            l         l            l    l            l    l            l         )	r&   r'   r-   rc   r)   r   r#   r$   r%   )r0   rd   rS   rT   rU   r1   r2   r4   r4   r5   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j|\}}tj|| tj|| d S )	Nr   r   r   )r   )rb   r   r   r   )	r&   r'   r(   rc   r)   r   r#   r$   r%   )r0   rd   rS   rT   rU   r1   r2   r4   r4   r5   test_string_factorize   s    z#TestFactorize.test_string_factorizec          	   C   s   t jddd t jddtj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j	|\}}t
j|| t
j|| d S )Nr   r   r   )r   )rb   r   r   r   r9   r9   r9   )r&   r'   r:   rB   NaTr(   rc   r)   r   r#   r$   r%   )r0   rd   rS   rT   rU   r1   r2   r4   r4   r5   test_object_factorize   s    " z#TestFactorize.test_object_factorizec             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j	d	 tj| W d Q R X d S )Nr   ri   r   )r   zgot an unexpected keyword)r\   T)orderFl            l            )
r&   r'   rg   r]   r^   r_   r   r#   r$   assert_produces_warning)r0   rS   r4   r4   r5   test_deprecate_order   s
    z"TestFactorize.test_deprecate_orderrS   u8)r   ri   i8Z__nan__foor(   c             C   sL   t j|\}}|ddg }tjdddgtjd}tj|| tj|| d S )Nr   r   )r   )r   r#   r&   r'   r)   r$   r%   )r0   rS   r1   r2   rU   rT   r4   r4   r5   ,test_parametrized_factorize_na_value_default  s
    
z:TestFactorize.test_parametrized_factorize_na_value_defaultzdata, na_valuer    r   c             C   sR   t j||d\}}|ddg }tjddddgtjd}tj|| tj|| d S )N)na_valuer   r!   r   )r   r9   r9   )r   Z_factorize_arrayr&   r'   r)   r$   r%   )r0   rS   rv   r1   r2   rU   rT   r4   r4   r5   $test_parametrized_factorize_na_value  s
    z2TestFactorize.test_parametrized_factorize_na_valuer   TFrH   
   d   zdata, uniquesNZInt64Znumpy_arrayZextension_array)rO   c             C   s   t j|||d\}}|r<tjdd|dgtjd}t j|}ntjdd|dgtjd}|}tj|| t|tj	r~tj|| ntj
|| d S )N)r   rH   r   r   )r   )r   r#   r&   r'   r)   Z	safe_sortr$   r%   
isinstancendarrayassert_extension_array_equal)r0   r   rH   rS   r2   r1   rT   rU   r4   r4   r5   test_factorize_na_sentinel*  s    z(TestFactorize.test_factorize_na_sentinelr)   c             C   s.   t j|d d\}}tj|| tj|| d S )N)rH   )r   r#   r$   r%   )r0   rS   rT   rU   r1   r2   r4   r4   r5   &test_object_factorize_na_sentinel_noneH  s    z4TestFactorize.test_object_factorize_na_sentinel_nonerF   c             C   s.   t j|d d\}}tj|| tj|| d S )N)rH   )r   r#   r$   r%   )r0   rS   rT   rU   r1   r2   r4   r4   r5   #test_int_factorize_na_sentinel_none_  s    z1TestFactorize.test_int_factorize_na_sentinel_none)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   l            l         l            l         l            l         l            l         l            l         l            l         )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   r9   i)__name__
__module____qualname__r6   r>   rE   rQ   r]   markparametrizerV   ra   re   rh   rj   rk   rm   rp   r&   r'   rt   r(   rw   rB   r:   r}   r   r~   r/   r   r4   r4   r4   r5   r   '   sv   &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jdd/ejddged fd0e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d.S )1
TestUniquec             C   s0   t jjdddd}tj|}t|t js,td S )Nr   ry   2   )size)r&   randomrandintr   uniquerz   r{   rL   )r0   arrresultr4   r4   r5   	test_intsx  s    
zTestUnique.test_intsc             C   s6   t jjddddjd}tj|}t|t js2td S )Nr   ry   r   )r   rF   )	r&   r   r   astyper   r   rz   r{   rL   )r0   r   r   r4   r4   r5   test_objects~  s    
zTestUnique.test_objectsc             C   s2   dddddg}xt dD ]}ttj| qW d S )Nr7   r8   CDEi  )r,   rJ   r   r   )r0   lstrY   r4   r4   r5   test_object_refcount_bug  s    z#TestUnique.test_object_refcount_bugc             C   sd   t jjtjdjdtjtjddg}|j}|j  |jd}t j	|}|j  t
j|| d S )Nr    r   )rB   Z
MultiIndexZfrom_arraysr&   r.   repeattilevaluesr   r   r$   assert_almost_equal)r0   ZmindexrP   r   r4   r4   r5   test_on_index_object  s    $

zTestUnique.test_on_index_objectc             C   s  |t jt j krtj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j }tj||d}t j|| d S )Nzskip string dtyper   r   g      ?g       @r   TFr7   r8   )r   )r$   ZBYTES_DTYPESZSTRING_DTYPESr]   skipr   r   r
   rW   r	   r   r   r   r&   r'   r%   )r0   Zany_numpy_dtyperS   r2   r   rP   r4   r4   r5   test_dtype_preservation  s,    








z"TestUnique.test_dtype_preservationc             C   s   t ddgdd}tjdddg}tj|}tj|| |j|jksFtt	|}tj|}tj|| |j|jkstt|j
}tj|}tj|| |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   rB   to_datetimer   r   r$   r%   r   rL   r   r   )r0   rP   Zdt_indexr   sr   r4   r4   r5   $test_datetime64_dtype_array_returned  s&    


z/TestUnique.test_datetime64_dtype_array_returnedc             C   s@   t jdddgdd}tj|}t jddgdd}tj|| d S )N20002001zdatetime64[s])r   zdatetime64[ns])r&   r'   rB   r   r$   r%   )r0   r   r   rP   r4   r4   r5   test_datetime_non_ns  s    
zTestUnique.test_datetime_non_nsc             C   s@   t jdddgdd}tj|}t jddgdd}tj|| d S )Nr   r   ztimedelta64[s])r   l     RFl    jIGztimedelta64[ns])r&   r'   rB   r   r$   r%   )r0   r   r   rP   r4   r4   r5   test_timedelta_non_ns  s    
z TestUnique.test_timedelta_non_nsc             C   s   t jdddgdd}tjdddddg}tj|}tj|| |j|jksNt	t
|}tj|}tj|| |j|jks|t	|j}tj|}tj|| |j|jkst	d S )Niy  in  i'  zm8[ns])r   )r&   r'   rB   rD   r   r   r$   r%   r   rL   r   r   )r0   rP   Ztd_indexr   r   r   r4   r4   r5   %test_timedelta64_dtype_array_returned  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jtj|| d S )Nr   r   ri   )r   l            l            l            )r   r&   rg   r'   r$   r%   r   r   )r0   r   r3   r4   r4   r5   test_uint64_overflow  s    zTestUnique.test_uint64_overflowc             C   s>   dt jddg}tj|}t jdt jdgtd}tj|| d S )Nr   r   )r   )r&   r:   rB   r   r'   r(   r$   r%   )r0   Zduplicated_itemsr   rP   r4   r4   r5   test_nan_in_object_array  s    
z#TestUnique.test_nan_in_object_arrayc             C   s&  t tdtdd}t tdtddd}t td}|j }tj|| tj|}tj|| t tddd}|j }tj|| tj|}tj|| tt tddd	}|j }tj|| tj|}tj|| tt tdtdd}t|}|j }tj	|| tj|}tj	|| d S )
NZbac)
categoriesabcT)r   orderedZbaabc)r   rs   )name)
r   r*   r   r$   assert_categorical_equalr   r   rB   r   r<   )r0   rP   Z
expected_or   r   r   Zcir4   r4   r5   test_categorical  s.    



zTestUnique.test_categoricalc             C   s  t ttdddtdddgj }tjtjtdddg}tj	|| ttdddtdddgj }t
dgdd d}tj|| tjt ttdddtdddg}tjtjtdddg}tj	|| tjttdddtdddg}t
dgdd d}tj|| 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   rA   z
2016-01-01)r   r   r   r   r   Z_from_sequencer&   r'   r$   r|   r   r<   rB   )r0   r   rP   r4   r4   r5   test_datetime64tz_aware(  s8    



z"TestUnique.test_datetime64tz_awarec             C   s:  t jtddddg}tj|tjdddgdd t jtdgdgd  }tj|tjddgdd t jttdtdg}tjdgd	d}tj|| t jttdd
dtdd
dg}t	dgdd d}tj
|| t jtd}tjdddgtd}tj|| t jtttd}ttd}tj|| d S )Nr   r   r!   r-   )r   r    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   rA   Zaabcr   r   r   r   )rB   r   r   r$   r%   r&   r'   r   r   r   r<   r*   r(   r   r   )r0   r   rP   r4   r4   r5   test_order_of_appearance_  s(    
z#TestUnique.test_order_of_appearancezarg ,expected12)r   rs   c             C   s   t j|}tj|| d S )N)rB   r   r$   r%   )r0   argrP   r   r4   r4   r5   test_tuple_with_strings  s    	
z"TestUnique.test_tuple_with_stringsc             C   sB   t jdd gtd}tj|}t jdd gtd}tj||dd d S )Nrs   )r   T)Z
strict_nan)r&   r'   r(   rB   r   r$   r%   )r0   r   r   rP   r4   r4   r5   test_obj_none_preservation  s    
z%TestUnique.test_obj_none_preservationc             C   s4   t jddg}tj|}t jdg}tj|| d S )Ng        g       g       )r&   r'   rB   r   r$   r%   )r0   r   r   rP   r4   r4   r5   test_signed_zero  s    
zTestUnique.test_signed_zeroc             C   s~   t jdt jddd }t jdt jddd }||ks<t||ksHttj||g}tj|}tjtjg}t	j
|| d S )Ndz=Ql          r   l         )structunpackpackrL   r&   r'   rB   r   r:   r$   r%   )r0   NAN1NAN2r   r   rP   r4   r4   r5   test_different_nans  s    
zTestUnique.test_different_nansc       	      C   s   d}d}t jdt jd|d }t jdt jd|d }||ksDt||ksPtxdtjtgD ]V}tj||g|d}tj	|}|j
dkstt jdt jd|d d }||ks\tq\W d S )Nl         l         r   z=Qr   )r   r   )r   r   r   rL   r&   r/   r(   r'   rB   r   r   )	r0   Zbits_for_nan1Zbits_for_nan2r   r   Zel_typer   r   Zresult_nan_bitsr4   r4   r5   test_first_nan_kept  s    
zTestUnique.test_first_nan_keptc             C   sZ   ||krd S t j||gtd}tj|}|jdks6t|d |ksFt|d |ksVtd S )N)r   r   r   r   )r&   r'   r(   rB   r   r   rL   )r0   Zunique_nulls_fixtureZunique_nulls_fixture2r   r   r4   r4   r5   test_do_not_mangle_na_values  s    
z'TestUnique.test_do_not_mangle_na_valuesN)r   r   r   )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   r4   r4   r4   r5   r   w  s.   *7# 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ejjdg eedejg gdd Zdd Zdd  Zejjd!d"d#d$ Zejjd!d"d%d& Zejjd!d"d'd( Zd)S )*TestIsinc             C   s~   d}t jt|d tjdd W d Q R X t jt|d tjddg W d Q R X t jt|d tj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\])r\   r   )r]   r^   r_   r   isin)r0   r`   r4   r4   r5   test_invalid  s    zTestIsin.test_invalidc             C   s  t jddgdg}tjddg}tj|| t jtjddgdg}tjddg}tj|| t jtddgdg}tjddg}tj|| t jtddgtdg}tjddg}tj|| t jtddgdh}tjddg}tj|| t jddgdg}tjddg}tj|| t jtddgtdg}tjddg}tj|| t jtddgdh}tjddg}tj|| t jddgdg}tjddg}tj|| d S )Nr   r   TFr   r   )r   r   r&   r'   r$   r%   r   )r0   r   rP   r4   r4   r5   r6     s6    zTestIsin.test_basicc             C   sH  t jdddj}tj||d g}tjdddg}tj|| tj||dd }tjdddg}tj|| tj|t	|dd }tjdddg}tj|| t j
dddj}tj||d g}tjdddg}tj|| tj||dd }tjdddg}tj|| tj|t	|dd }tjdddg}tj|| d S )	Nr?   r!   )periodsr   TFr   z1 day)rB   
date_ranger   r   r   r&   r'   r$   r%   rK   Ztimedelta_range)r0   r   r   rP   r4   r4   r5   test_i8  s(    zTestIsin.test_i8c             C   sX   t jddddj}tj||dd }tjt|td}d|d< d|d	< t	j
|| d S )
NZ20000101i r   )r   rA   r   r   )r   Tr   )rB   r   r   r   r   r&   zerosrJ   boolr$   r%   )r0   r   r   rP   r4   r4   r5   
test_large  s    zTestIsin.test_largec             C   s|   t jddddg}dddg}ttdj||}ttdjt jddg|}t jddddg}tj||}tj|| d S )	Nr   r   r   r   r   r   TF)	r&   r'   r   r   
from_codesr   r   r$   r%   )r0   valscatsZSdZStrP   r   r4   r4   r5   test_categorical_from_codes  s    
z$TestIsin.test_categorical_from_codesc             C   st   t jddddg}dddg}tdj||}tdjt jddg|}t jddddg}tj||}tj|| d S )	Nr   r   r   r   r   r   TF)r&   r'   r   r   r   r   r$   r%   )r0   r   r   catotherrP   r   r4   r4   r5   test_categorical_isin'  s    
zTestIsin.test_categorical_isinc             C   s8   t jg}t jg}t jdg}tj||}tj|| d S )NT)r&   r:   r'   r   r   r$   r%   )r0   compsr   rP   r   r4   r4   r5   test_same_nan_is_in1  s
    zTestIsin.test_same_nan_is_inc             C   sJ   t jdd}t j|d< tj|t jdg}t jt|td}tj	|| d S )Ng      ?iAB r   r   )r   )
r&   r   r:   r   r   onesrJ   r   r$   r%   )r0   r   r   rP   r4   r4   r5   test_same_nan_is_in_large=  s
    
z"TestIsin.test_same_nan_is_in_largec             C   sX   t jdd}tj|}t j|d< |jt jdg}tjt jt|td}t	j
|| d S )Ng      ?iAB r   r   )r   )r&   r   rB   r   r:   r   r   rJ   r   r$   assert_series_equal)r0   r   Zseriesr   rP   r4   r4   r5    test_same_nan_is_in_large_seriesE  s    

z)TestIsin.test_same_nan_is_in_large_seriesc             C   s`   G dd d}| |  }}t jtj|g|gtjdg t jtj|g|gtj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 )NFr4   )r0   r   r4   r4   r5   __eq__U  s    z7TestIsin.test_same_object_is_in.<locals>.LikeNan.__eq__c             S   s   dS )Nr   r4   )r0   r4   r4   r5   __hash__X  s    z9TestIsin.test_same_object_is_in.<locals>.LikeNan.__hash__N)r   r   r   r   r   r   r4   r4   r4   r5   LikeNanT  s   r   TF)r$   r%   r   r   r&   r'   )r0   r   r   r   r4   r4   r5   test_same_object_is_inN  s     zTestIsin.test_same_object_is_inc             C   s   t dg}t dg}|d |d k	s(ttj||}tjtjdg| tjtj|t	dtj|t	d}tjtjdg| tjtj|tj
dtj|tj
d}tjtjdg| d S )Nr:   r   T)r   )floatrL   r   r   r$   r%   r&   r'   Zasarrayr(   r/   )r0   r   r   r   r4   r4   r5   r   a  s    

 zTestIsin.test_different_nansc             C   s8   ddg}dg}t jddg}tj||}tj|| d S )Nss*   Z42F)r&   r'   r   r   r$   r%   )r0   r   r   rP   r   r4   r4   r5   test_no_casty  s
    zTestIsin.test_no_castempty)r   c             C   s6   t ddg}tjddg}tj||}tj|| d S )Nr   r   F)r   r&   r'   r   r   r$   r%   )r0   r   r   rP   r   r4   r4   r5   
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 jdddg}tj||}tj|| d S )Nr:   y              ?)r   FT)	r&   r'   r:   r   r(   r   r   r$   r%   )r0   r   r   rP   r   r4   r4   r5   test_different_nan_objects  s
    z#TestIsin.test_different_nan_objectsc             C   s   t jdt jddd }t jdt jddd }||ks<t||ksHttj||gtjd}tj|gtjd}tj||}tjddg}t	j
|| tj|gtjd}tj||}tjddg}t	j
|| d S )Nr   z=Ql          r   l         )r   T)r   r   r   rL   r&   r'   r/   r   r   r$   r%   )r0   r   r   r   Zlookup1r   rP   Zlookup2r4   r4   r5   test_different_nans_as_float64  s    z'TestIsin.test_different_nans_as_float64z!problem related with issue #34125)reasonc             C   s@   t jdddgi}|jdg}t jdddgi}tj|| 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)rB   	DataFramer   r$   assert_frame_equal)r0   dfr   expected_falser4   r4   r5   test_isin_int_df_string_search  s    z'TestIsin.test_isin_int_df_string_searchc             C   sB   t jdtjdgi}|jdg}t jdddgi}tj|| 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 NaN r   r   NaNFN)rB   r   r&   r:   r   r$   r   )r0   r   r   r   r4   r4   r5   test_isin_nan_df_string_search  s    z'TestIsin.test_isin_nan_df_string_searchc             C   s@   t jdddgi}|jdg}t jdddgi}tj|| 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)rB   r   r   r$   r   )r0   r   r   r   r4   r4   r5    test_isin_float_df_string_search  s    z)TestIsin.test_isin_float_df_string_searchN)r   r   r   r   r6   r   r   r   r   r   r   r   r   r   r   r]   r   r   r   r(   r&   r'   r   r   r   Zxfailr   r   r   r4   r4   r4   r5   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jd ddlm} t jjd}||d}tj|}ddddd	g}tj	|j
td
d}tddddg|d}tj|j |j  d S )Ni  r   )cutr"   gv?gQ?g`"?gw/?g!rh?T)r   r   )indexgvgQ)r&   r   seedZpandas.core.reshape.tiler   randnr   value_countsr   Zfrom_breaksr   CDTr   r$   r   Z
sort_index)r0   r   r   Zfactorr   Zbreaksr   rP   r4   r4   r5   test_value_counts  s    

z!TestValueCounts.test_value_countsc             C   sv   ddddg}t j|dd}tdgtjdgd}tj|| t j|dd	d
}tddgtjddgd}tj|| d S )Nr   r   r!   r"   )binsZd;?      @)r   F)r   r         @)r   r   )r   r   )r   r   )r   r   r   r   from_tuplesr$   r   )r0   r   r   rP   r4   r4   r5   test_value_counts_bins  s    z&TestValueCounts.test_value_counts_binsc             C   s   t jddg}t|dkstt jddgdd}t|dks@tt j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)r\   )r   r   rJ   rL   r   r]   r^   r_   )r0   r   r`   r4   r4   r5   test_value_counts_dtypes  s    z(TestValueCounts.test_value_counts_dtypesc             C   s   t tjdtjgdd}tjddg}xH||gD ]<}tj|}tj|dd}t|dks\t	t|d	ks0t	q0W t t
d
di}tjtj|| d S )Ni'  ztimedelta64[ns])r   rl   z
2014-01-01F)dropnar   r   z2014-01-01 00:00:00)r   r&   Ztimedelta64rB   rl   r   r   r   rJ   rL   r   r$   r   )r0   tddtr   vcZ
vc_with_naZexp_dtr4   r4   r5   test_value_counts_nat  s    
z%TestValueCounts.test_value_counts_natc          
   C   s   t tdddtdddtdddtdddtdddtdddg}|j }ttdddtdddtdddgtd}t dddg|d}tj|| tjt d	t	j
gd
d}t d	t	j
gtd}tj|| d S )Ni  r   i  ip  )r   r!   r   )r   z
2362-01-01ignore)errors)r   r   r   r   r(   r$   r   rB   r   r&   r:   )r0   r   resZ	exp_indexr3   r4   r4   r5   &test_value_counts_datetime_outofbounds  s     




 z6TestValueCounts.test_value_counts_datetime_outofboundsc             C   sv   t ttd}|j }t dddgtdddgd}tj||d	d
 |jj }|j }|j	j |_	tj||d	d
 d S )NZaaabbcr!   r   r   r   r   r   )r   T)check_index_type)
r   r   r*   r   r   r$   r   r   Z
as_orderedr   )r0   r   r   rP   r4   r4   r5   r     s    
z TestValueCounts.test_categoricalc             C   sN  t ttd}tj|jd< |j }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< |j }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   r"   r!   r   r   r   r   )r   )r   T)r  F)r   )r   r   )r   r   )
r   r   r*   r&   r:   Zilocr   r   r$   r   )r0   r   r   rP   r4   r4   r5   test_categorical_nans#  s2    "
 z%TestValueCounts.test_categorical_nansc             C   s`   t ttdtddd}|j }t ddddgtd	d
ddgtdddd}tj||dd d S )NZbbbaacZabcdT)r   r   r!   r   r   r   r   r   r   r   )r   )r  )r   r   r*   r   r$   r   )r0   r   r   rP   r4   r4   r5   test_categorical_zeroesG  s    
z'TestValueCounts.test_categorical_zeroesc             C   s  t jtdddgjddtddgddgd t jtdddgjddtddgddgd t jtdddd gjddtddgddgd t jtdddd gjddtdddgddtjgd t jtdddgjddtddgddgd t jtdddgjddtddgddgd t jtdddd gjddtddgddgd tj stdddd gjdd}tdddgddtjgd}t j|| d S )	NTF)r   r   r   )r   g$@g      @)r$   r   r   r   r&   r:   r   is_platform_32bit)r0   r   rP   r4   r4   r5   test_dropnaS  s2    
zTestValueCounts.test_dropnac             C   s   t ddtjtjtjg}tjtdf}x|D ]}|j|}|jddd}t dddgt tjd	d
g|dd}tj|| |jddd}t ddgt d	d
g|dd}tj|| q*W d S )Nr   r   zM8[ns]TF)	normalizer   g333333?g?g       @g      ?)r   )r   g      ?)	r   r&   r:   r/   r(   r   r   r$   r   )r0   r   ZdtypestZs_typedr   rP   r4   r4   r5   test_value_counts_normalized{  s    

 z,TestValueCounts.test_value_counts_normalizedc             C   s   t jdgt jd}tdgdgd}tj|}tj|| t jdd	gtd}tddgd
dgd}tj|}t	j
 s|tj|| d S )Nr   ri   )r   r   )r   l            l            r9   l            r9   l            )r&   r'   rg   r   r   r   r$   r   r(   r   r  )r0   r   rP   r   r4   r4   r5   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  r4   r4   r4   r5   r     s   $(r   c               @   s.  e Zd Zdd Zejjdejdddddddddd	g
ejd
dd
ej	dddd
ej	dg
ejd+d,d-d.d/d0d1d2d3d4g
ejddddddddddg
e
dejdd5dd6dd7ddd8dg
ejdgd d! Zd"d# Zd$d% Zejjd&d9d:d;d<d=d>d?d@gdAdBdCdDgfdEdFdGdHgdIdJgfdKdLdMdNgdOdPdQgfgd(d) Zd*S )RTestDuplicatedc             C   s  t jddt jddt jgtd}tj|}t jddddddg}tj|| tj|dd}t jddddddg}tj|| tj|d	d}t jddddddg}tj|| tj|dd}t jddddddg}tj|| 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j|}dgd }dgd }t j|| }tj|| tj|d	d}t j|| }tj|| tj|dd}t j|| }tj|| d S )Nr   r   r   )r   FTfirst)keeplast   r"   )r&   r'   r:   r(   r   
duplicatedr$   r%   r   	enumeratezip)r0   keysr   rP   rY   r	  ZfalsesZtruesr4   r4   r5   test_duplicated_with_nas  s8    
4


z'TestDuplicated.test_duplicated_with_nascaser   r   r    r!   r"      g?g@gffffff
@g@gffffff@y              ?y               @y              @y              @y              @y              @r   r   er   r   f)r   ri   rx   '      c       
      C   sp  t jddddddddddg
}t jddddddddddg
}||B }tj|dd}tj|| tj|dd}tj|| tj|dd}tj|| xdt|t|ddgD ]L}|jdd}tj|| |jdd}tj|| |jdd}tj|| qW xrt|t|ddgD ]Z}	|	jdd}tj|t| |	jdd}tj|t| |	jdd}tj|t| qW d S )NFTr  )r  r  category)r   )	r&   r'   r   r  r$   r%   r   r   r   )
r0   r  	exp_firstexp_last	exp_false	res_firstres_last	res_falseidxr   r4   r4   r5   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 jdd |D t jdd |D t jdd |D t jdd |D t jdd |D g}t jddddddddddg
}t jddddddddddg
}||B }xL|D ]B}tj|dd}tj|| tj|dd}	tj|	| tj|dd}
tj|
| xpt|t|ddt|tdgD ]N}|jdd}tj|| |jdd}	tj|	| |jdd}
tj|
| qNW x|t|t|ddt|tdgD ]Z}|jdd}tj	|t| |jdd}	tj	|	t| |jdd}
tj	|
t| qW qW d S )Nz
2011-01-01z
2011-01-02rl   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 r4   )r   )rX   r   r4   r4   r5   rZ      s    z6TestDuplicated.test_datetime_likes.<locals>.<listcomp>c             S   s   g | ]}t |d dqS )z
US/Eastern)r   )r   )rX   r   r4   r4   r5   rZ   !  s    c             S   s   g | ]}t j|d dqS )r   )rA   )rB   rC   )rX   r   r4   r4   r5   rZ   "  s    c             S   s   g | ]}t j|qS r4   )r&   Z
datetime64)rX   r   r4   r4   r5   rZ   #  s    c             S   s   g | ]}t j|qS r4   )rB   Z	Timedelta)rX   r   r4   r4   r5   rZ   $  s    FTr  )r  r  r  )r   )
r&   r'   r   r  r$   r%   r   r(   r   r   )r0   r   r   casesr  r  r  r  r   r!  r"  r#  r   r4   r4   r5   test_datetime_likes  sr    

z"TestDuplicated.test_datetime_likesc             C   sV   t dddgtjddg}x6|D ].}|jdks2ttj|j tj	dddg q W d S )Nr   r   r!   r   TF)
r   rB   Z
RangeIndexZ	is_uniquerL   r$   r%   r  r&   r'   )r0   r%  r  r4   r4   r5   test_unique_indexW  s
    
z TestDuplicated.test_unique_indexzarr, uniquer   c             C   s8   t jt|td}||d d < tj|}tj|| d S )N)r   )r&   r   rJ   r(   rB   r   r$   r%   )r0   r   r   rP   r   r4   r4   r5   test_unique_tuples_  s    
z!TestDuplicated.test_unique_tuplesNy      ?      ?y       @       @y      ?      ?y      @      @y      @      @y       @       @y      @      @y      ?      ?y      @      @y      @      @l               l            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(   rg   r$  r&  r'  r(  r4   r4   r4   r5   r    s8   '  ,,S
r  c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )GroupVarTestMixinc             C   s   t d}tjtjd j| j}tjddd}d|jddj| j }tjtj	ddjd}tj
|jdd	d
jdddd d d tjf }|d }| j|||| tj||| jsttj|| d S )Ni  r    r   r-   )r   rx      r!   F)rn   )axisddofr   )r    r   )r!   )r    r!   )r   r&   r:   r   r   r   r   randr   r.   ZsqueezereshapestdZnewaxisalgoallclosertolrL   r$   r%   )r0   prngoutcountsr   labelsexpected_outexpected_countsr4   r4   r5   test_group_var_generic_1dw  s    &
z+GroupVarTestMixin.test_group_var_generic_1dc             C   s   t d}tjtjd	 j| j}tjddd}d|jddj| j }tjddd}tj|j	ddd gg}|d }| j
|||| tj||| jsttj|| d S )
Ni  r   r-   )r   rx   r    )r.  r   )r   r   )r   r&   r:   r   r   r   r   r/  r'   r1  r2  r3  r4  rL   r$   r%   )r0   r5  r6  r7  r   r8  r9  r:  r4   r4   r5   %test_group_var_generic_1d_flat_labels  s    z7GroupVarTestMixin.test_group_var_generic_1d_flat_labelsc             C   s   t d}tjtjd
 j| j}tjddd}d|jddj| j }tjtj	ddjd}tj
|jdddddd	d }|d }| j|||| tj||| jsttj|| d S )Ni  r    r   r-   )r   rx   r   r   )r.  r-  )r    r   )r   )r   r&   r:   r   r   r   r   r/  r   r.   r1  r0  r2  r3  r4  rL   r$   r%   )r0   r5  r6  r7  r   r8  r9  r:  r4   r4   r5   $test_group_var_generic_2d_all_finite  s    z6GroupVarTestMixin.test_group_var_generic_2d_all_finitec             C   s   t d}tjtjd j| j}tjddd}d|jddj| j }tj|d d df< tjtj	ddjd}tj
|d d df jddd	d
jdddd tjtjd gjj| j}|d }| j|||| tj||dd tj|| d S )Ni  r    r   r-   )r   rx   r   r   r,  )rn   )r.  r-  gƠ>)r4  )r    r   )r   )r   r&   r:   r   r   r   r   r/  r   r.   Zvstackr0  r1  Tr2  r$   r   r%   )r0   r5  r6  r7  r   r8  r9  r:  r4   r4   r5   "test_group_var_generic_2d_some_nan  s    (z4GroupVarTestMixin.test_group_var_generic_2d_some_nanc             C   s   t jt jgg| jd}t jdgdd}dt jd| jd }t jddd}| j|||| |d dksht|d	 dksxttj	|d
 d d S )N)r   r   r-   gUUUժ?r!   r   g        )r!   r   )r   r   )r   r   )
r&   r'   r:   r   r   r   r2  rL   r$   r   )r0   r6  r7  r   r8  r4   r4   r5   test_group_var_constant  s    z)GroupVarTestMixin.test_group_var_constantN)r   r   r   r;  r<  r=  r?  r@  r4   r4   r4   r5   r*  v  s
   r*  c               @   s,   e Zd ZdZeejZej	Z
dZdd ZdS )TestGroupVarFloat64Tgh㈵>c             C   s   t d}tjtjgg| jd}tjdgdd}|jdd j| j}d|_tjddd}| j	|||| |d dksxt
tj|d dd
d d S )Ni  )r   r   r-   rx   r     r   g      ?gMb@?)r4  i@B l    J)@B )rC  r   i@B i@B )r   r   gUUUUUU?)r   r&   r'   r:   r   r/  r   shaper   r2  rL   r$   r   )r0   r5  r6  r7  r   r8  r4   r4   r5   test_group_var_large_inputs  s    z/TestGroupVarFloat64.test_group_var_large_inputsN)r   r   r   __test__staticmethod
libgroupbyZgroup_var_float64r2  r&   r/   r   r4  rE  r4   r4   r4   r5   rA    s
   
rA  c               @   s$   e Zd ZdZeejZej	Z
dZdS )TestGroupVarFloat32Tg{Gz?N)r   r   r   rF  rG  rH  Zgroup_var_float32r2  r&   Zfloat32r   r4  r4   r4   r4   r5   rI    s   
rI  c               @   sP  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Ze	j
jdddge	j
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gdd Ze	j
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
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
jd"ejejejejejgd#d$ Zd%S )&TestHashTablec             C   st   t j }|jdd |jddks&ttjtdd |jdd W d Q R X tjtdd |jd W d Q R X d S )NrN   r   z'key' has incorrect type)r\   r"   r  z'val' has incorrect type)rI   StringHashTableset_itemZget_itemrL   r]   r^   r_   )r0   tblr4   r4   r5   (test_string_hashtable_set_item_signature  s    z6TestHashTable.test_string_hashtable_set_item_signaturec             C   s^   t jddt jd	dddg}|j|d tj }|j| tj|j	|t j
t|t jd d S )
NgX9v@gQ	@r  r    r   r!   )rb   )r   i)r&   r'   r:   rc   rI   Float64HashTablemap_locationsr$   r%   lookupr.   rJ   r-   )r0   rd   xsmr4   r4   r5   test_lookup_nan  s
    
zTestHashTable.test_lookup_nanc             C   s:   d}t j|}|jdd |jdd t|dks6td S )Nr"   g        r   r   g       )rI   rO  rL  rJ   rL   )r0   NrS  r4   r4   r5   test_add_signed_zeros   s
    
z#TestHashTable.test_add_signed_zerosc             C   s|   t jdt jddd }t jdt jddd }||ks<t||ksHttj }|j|d |j|d t|dksxtd S )Nr   z=Ql          r   l         r   )r   r   r   rL   rI   rO  rL  rJ   )r0   r   r   rS  r4   r4   r5   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j }|j| tj|j	|t j
t|t jd d S )Nr   r   ri   )r   )rb   l            )r&   r'   rg   rc   rI   UInt64HashTablerP  r$   r%   rQ  r.   rJ   r-   )r0   rd   rR  rS  r4   r4   r5   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j|j | d S )Nr   r   ri   )r   l            l            l            )r   r&   rg   r'   r$   r%   r   )r0   r   r3   r4   r4   r5   test_get_unique!  s    zTestHashTable.test_get_uniquenvalsr   rx   z&htable, uniques, dtype, safely_resizesr(   FTr/   r-   rg   c       
      C   s   t jt jjd|d}|j|d | }| }|j|d | |dd |j }|j}	|rj|j||dd	 n*tj	t
dd |j||dd
 W d Q R X |j  |j|	kstd S )Ni  )r   )rb   r   r   zexternal reference.*)r\   r9   r9   r9   )r&   r'   r   r   rc   Z
get_labelsZto_arrayrD  r]   r^   
ValueErrorrL   )
r0   rd   htabler2   r   Zsafely_resizesr[  r   tmpZoldshaper4   r4   r5   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rXtjd t	j
g|jdd< |jdddjdd	}|jj|d
 |jddj}| j|j}tj|| | j|jdd\}}	tj|| ||	 }
tj|
|j d S )Nmaker   i  i  i  r!   T)fracreplace)drop)rb   r  )r  )Zreturn_inverse)getattrr$   r   rI   rO  r&   r:   locPyObjectHashTablerB   rl   samplereset_indexr   rc   drop_duplicatesr   r%   )r0   r]  tm_dtyperd   makerr   s_duplicatedexpected_uniqueresult_uniqueresult_inverseZreconstrr4   r4   r5   test_hashtable_uniqueR  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rXtjd t	j
g|jdd< |jdddjdd	}|jj|d
 |j j}| j|j\}}	|j j j}
tj||
 ||	|   }|j j}tj|| d S )Nrb  r   i  i  i  r!   T)rc  rd  )re  )rb   )rf  r$   r   rI   rO  r&   r:   rg  rh  rB   rl   ri  rj  r   rc   rM   r#   r   rk  r%   )r0   r]  rl  rd   rm  r   rn  Zna_maskrp  rq  ro  Zresult_reconstructZexpected_reconstructr4   r4   r5   test_hashtable_factorizez  s    



z&TestHashTable.test_hashtable_factorizer   c             C   s    t jt jjd }||d}d S )Nr   )	size_hint)r&   iinfoZuint32max)r0   r   rt  rM  r4   r4   r5   test_hashtable_large_sizehint  s    z+TestHashTable.test_hashtable_large_sizehintN)r   r   r   rN  rT  rV  rW  rY  rZ  r]   r   r   rI   rh  ZObjectVectorrK  rO  ZFloat64VectorZInt64HashTableZInt64VectorrX  ZUInt64Vectorr_  rr  rs  rw  r4   r4   r4   r5   rJ    sF   $!!rJ  c              C   sN   t tjjd} tj| dddddg}tj| jdddddg}tj|| d S )Nry   r   g      ?g      ?g      ?g      ?)	r   r&   r   r   r   Zquantiler   r$   r   )r   r   rP   r4   r4   r5   test_quantile  s    rx  c              C   s   t jjdd	d
jd} tj| }t j| ddd }tj||dd d| t jj	t
| d< tj| }t j| ddd dd  }tj||dd d S )Nr   rx   r+  rr   T)Zreturn_indexF)Zcheck_dtypei   i   r9   )r&   r   r   r   rI   Zunique_label_indicesr   r$   r%   choicerJ   )r   leftrightr4   r4   r5   test_unique_label_indices  s    

r|  c               @   sx   e Zd Zejdd Zdd Zdd Zdd Ze	j
je	j
je	j
jd	ejdejdjdd
gddgddd ZdS )TestRankc                sn   ddl m   fdd}|tjtjtjdddtjdddtjg
 |tjd	tjdddtjddd	tjg
 d S )
Nr   )rankdatac                sJ   t j|  }| j } tj| }t j| |<  | }t j||< tj|| d S )N)	r&   isfinitecopylibalgosZrank_1dr;   r:   r$   r   )r   maskr   r3   )r~  r4   r5   _check  s    


z*TestRank.test_scipy_compat.<locals>._checkg      @r   r   r!   g      @)Zscipy.statsr~  r&   r'   r:   )r0   r  r4   )r~  r5   test_scipy_compat  s    	*zTestRank.test_scipy_compatc             C   sd   t jddgt jd}xJt jd D ]<}t jddg|d}|j|d t|}tjtj	|| q W d S )Nr   r   )r   
AllIntegerry   )rb   )
r&   r'   r/   	typecodesrc   r   r$   r%   r   rank)r0   rd   r3   r   rS   r   r4   r4   r5   r6     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jtj|| q"W d S )Nr   r   )r   ri   l            )	r&   r'   r/   rg   r   r$   r%   r   r  )r0   r3   r   r   r4   r4   r5   r     s    zTestRank.test_uint64_overflowc          	   C   sP   t jdddgdddgddd	ggg}d
}tjt|d tj| W d Q R X d S )Nr   r   r!   r"   r    r  r  r  	   z%Array with ndim > 2 are not supported)r\   )r&   r'   r]   r^   r_   r   r  )r0   r   r`   r4   r4   r5   test_too_many_ndims  s    $zTestRank.test_too_many_ndimsr   r      r      Z1dZ2d)rO   c             C   s"   t j|ddj }|dkstd S )NT)Zpctr   )r   r  rv  rL   )r0   r   r   r4   r4   r5   test_pct_max_many_rows  s    	zTestRank.test_pct_max_many_rowsNi   i  i   i  i   i  )r   r   r   r   Zskip_if_no_scipyr  r6   r   r  r]   r   ZsingleZhigh_memoryr   r&   r.   r0  r  r4   r4   r4   r5   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j|| tjd || }t jg t jd}tj|| tjd | |}t jd	gt jd}tj|| tjd || }t jg t jd}tj|| d S )
NrF   )r   i  rB     r(   r   r9   r9   )	r&   r'   r   r  padr-   r$   r%   backfill)oldnewr   rP   r4   r4   r5   !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 )Nr4   )r0   r4   r4   r5   test_combineFunc  s    z TestTseriesUtil.test_combineFuncc             C   s   d S )Nr4   )r0   r4   r4   r5   test_reindex  s    zTestTseriesUtil.test_reindexc             C   s   d S )Nr4   )r0   r4   r4   r5   	test_isna  s    zTestTseriesUtil.test_isnac             C   s   d S )Nr4   )r0   r4   r4   r5   test_groupby  s    zTestTseriesUtil.test_groupbyc             C   s   d S )Nr4   )r0   r4   r4   r5   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	j
|| 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	j
|| d S )Nr   r    rx   rB  int64_tr   r   )r   r"   r9   r9   r9   r9   r9   r9   )r   r*   r,   r  r  r   r&   r'   r-   r$   r%   )r0   r  r  fillerexpect_fillerr4   r4   r5   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	j
|| t ddg}t tjd}tjd |j|j}tjd
ddddgtjd}t	j
|| d S )Nr   r    rx   rB  r  r   r   )r   r9   r9   r9   r9   r9   r9   )r   r*   r,   r  r  r   r&   r'   r-   r$   r%   r.   )r0   r  r  r  r  r4   r4   r5   test_pad5  s    (zTestTseriesUtil.test_padN)
r   r   r   r  r  r  r  r  r  r  r4   r4   r4   r5   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j|  std S )"Nr!   r   r   r   r-   )r                  r  r           rG         r[      r+        rB     rx   r  r  r  r  r    r"   )r&   r'   r  Zis_lexsortedrL   )Zfailurer4   r4   r5   test_is_lexsortedF  s   
r  c              C   s   t jjdddjt j} t jjdddjt j}tj| dd }t j| dd}|jt j}tj	|| | d | }tj|dd }t j
|| f}|jt j}tj	|| d S )Nr   i  ry   Z	mergesort)kindi@B )r&   r   r   r   r-   r  Zgroupsort_indexerargsortr$   r%   Zlexsort)r   r   r   rP   rN   r4   r4   r5   test_groupsort_indexerO  s    r  c                 s  t j  t j 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  r  k stt j t j kstt j t j k sttfdd| D sttfd	d| D stkrkstk  rk stt j t j ks.tt j t j k sFtx$t| D ]}t|| ksPtqPW tj	t j gd
 j
  tj	t j gd
 j
  d S )Nz-infg}Ô%ITr   r;   c             3   s   | ]} |kV  qd S )Nr4   )rX   r=   )Infr4   r5   	<genexpr>s  s    z%test_infinity_sort.<locals>.<genexpr>c             3   s   | ]} |kp| kV  qd S )Nr4   )rX   r=   )r  r4   r5   r  t  s    c             3   s   | ]} |kV  qd S )Nr4   )rX   r=   )NegInfr4   r5   r  z  s    c             3   s   | ]} |k p| kV  qd S )Nr4   )rX   r=   )r  r4   r5   r  {  s        g}Ô%I)r  InfinityNegInfinityr   allrL   r   sortedr&   r'   r  )Zref_numsZpermr4   )r  r  r5   test_infinity_sorth  s&    r  c              C   s   t j } t j }| tjk s t| tjk s0t| tjk  s@t| tjk sPt| tjk s`t| tjksnt|tjk s~t|tjk st|tjk  st|tjk st|tjk st|tjkstd S )N)r  r  r  r&   r:   rL   )r  r  r4   r4   r5   test_infinity_against_nan  s    r  c              C   s*   t jdt jd} tj| }|| ks&td S )Nry   )r   )r&   r.   r)   r  Zensure_platform_intrL   )r   r   r4   r4   r5   test_ensure_platform_int  s    
r  c           M   C   s  d} t jt jj}t jt jj}tjt| d tj	t j
||g| W d Q R X tjt| d& tj	t j
||gt j
||g W d Q R X tjt| d tj	t j
||g| W d Q R X tjt| d& tj	t j
||gt j
||g W d Q R X tjt| d& tj	t j
||gt j
||g W d Q R X tjt| d4 tj	t j
||gt j
||gt j
ddgd W d Q R X tjt| d4 tj	t j
||gt j
||gt j
ddgd W d Q R X tjt| d@ tj	t j
||gt j
||gt j
ddgt j
ddgd W d Q R X tjt| d> tjt( tj	t j
||gt j
t j|g W d Q R X W d Q R X tj	t j
||gt j
||gt j
ddgd tj	t j
||gt j
||gt j
ddgd tj	t j
||gt j
||gt j
ddgt j
ddgd d S )NzOverflow in int64 addition)r\   FT)arr_mask)b_mask)r  r  )r&   ru  r-   rv  minr]   r^   OverflowErrorr   Zchecked_add_with_arrr'   r$   ro   RuntimeWarningr:   )r`   rS  nr4   r4   r5   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d}tjtjg | d S )N)r   )r   r&   r/   r$   r   r   mode)r0   r3   r4   r4   r5   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jtj|| t||d}t||d}tjtj|| q0W tdgtd}tjtjdg| tdddgtd}tjtjdddg| d S )Nr   r  ra  )r   r   r   r   )	r&   r  r   r$   r   r   r  intr(   )r0   
exp_singledata_single	exp_multi
data_multir   r   r3   r4   r4   r5   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jtj|| t||d}t||d}tjtj|| qVW d S )Nr   r    r   r!   r  ra  )r   )r&   r  r   r$   r   r   r  )r0   r  r  r  r  r   r   r3   r4   r4   r5   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jtj|| dg}dgd dgd  }x:ttgD ].}t ||d}t ||d}tjtj|| qhW d S )	Nr   r   r   r!   r   )r   barrs   )r   r$   r   r   r  strr(   )r0   r3   rS   r   r   r4   r4   r5   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jtj|| t ddgdd}t dddddgdd}tjtj|| d S )Nz
1900-05-03z
2011-01-03z
2013-01-02zM8[ns])r   )r   r$   r   r   r  )r0   r3   r   r4   r4   r5   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jtj|| t ddgdd}t dddd	ddgdd}tjtj|| d S )
Nz-1 daysz0 daysz1 daysztimedelta64[ns])r   z2 minz1 dayz-1 dayz-1 day 2 min)r   r$   r   r   r  )r0   r3   r   r4   r4   r5   test_timedelta_mode	  s    zTestMode.test_timedelta_modec             C   s.   t dg}t dddg}tjtj|| d S )Nrs   r   )r   r$   r   r   r  )r0   r3   r   r4   r4   r5   test_mixed_dtype+	  s    
zTestMode.test_mixed_dtypec             C   sp   t dgtjd}t dddgtjd}tjtj|| t ddgtjd}t dd	gtjd}tjtj|| d S )
Nr   ri   )r   r   l            l            l            l            l            )r   r&   rg   r$   r   r   r  )r0   r3   r   r4   r4   r5   r   0	  s    zTestMode.test_uint64_overflowc             C   s   t ddg}|}tjtj|| tj|j | t dddg}t dgddgd}tjtj|| tj|j | t dddddg}t ddgdddgd}tjtj|| tj|j | d S )Nr   r   r   )r   r!   )r   r$   r   r   r  )r0   r   r3   r4   r4   r5   r   9	  s    zTestMode.test_categoricalc             C   s   t dddg}tdddgtjd}tjtj|| t dddg}tdgtd}tjtj|| t dddddg}tddgtjd}tjtj|| tddgdd}t ddd	d
ddgdd}tjtj|| d S )Nr   r   r!   )r   r   z2 minz1 dayztimedelta64[ns]z-1 dayz-1 day 2 min)	r   r   r&   r-   r$   r   r   r  r(   )r0   r#  r3   r4   r4   r5   
test_indexI	  s    zTestMode.test_indexN)r   r   r   r  r  r  r  r  r  r  r   r   r  r4   r4   r4   r5   r    s   	r  )Ir   	itertoolsr   r   numpyr&   Znumpy.randomr   r]   Zpandas._libsr   r  r   rH  r   rI   Zpandas.compat.numpyr   Zpandas.util._test_decoratorsutilZ_test_decoratorsr   Zpandas.core.dtypes.commonr	   r
   r   r   r   Zpandas.core.dtypes.dtypesr   r   ZpandasrB   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingr$   Zpandas.core.algorithmscoreZ
algorithmsZpandas.core.arraysr   Zpandas.core.commoncommonrR   r   r   r   r   r  r*  rA  rI  rJ  rx  r|  r}  r  r  r  r  r  r  r  r  r  r4   r4   r4   r5   <module>   s`   (

  R  P   W \U I52  !4