U
    *ifO                    @   s  d dl m Z  d dlmZ d dlZd dlZd dlZd dlmZ	m
Z d dlm  mZ d dlmZmZmZmZmZ d dlmZ d dlZd dlmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+ d dl,m-Z. d dl/m0  m1Z d dl2m3Z3 d dl4m0  m5Z6 G d	d
 d
Z7G dd dZ8G dd dZ9G dd dZ:G dd dZ;G dd dZ<dd Z=G dd dZ>dd Z?G dd dZ@dd ZAdd  ZBd!d" ZCd#d$ ZDd%d& ZEd'd( ZFG d)d* d*ZGG d+d, d,ZHejIJd-ejKejKgd.d/ ZLdS )0    )datetime)permutationsN)algos	hashtable)is_bool_dtypeis_complex_dtypeis_float_dtypeis_integer_dtypeis_object_dtype)CategoricalDtype)CategoricalCategoricalIndex	DataFrameDatetimeIndexIndexIntervalIndex
MultiIndexNaTPeriodPeriodIndexSeries	Timedelta	Timestamp
date_rangetimedelta_rangeto_datetimeto_timedelta)DatetimeArrayc                   @   s  e Zd Zejdddgdd Zdd Zdd	 Zd
d Z	dd Z
dd Zejd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j||dd d S )Nr   c                    s   g | ]}  |qS  index).0valZexpected_uniques_listr!   J/home/mars/bis/venv/lib/python3.8/site-packages/pandas/tests/test_algos.py
<listcomp>B   s     z0TestFactorize.test_factorize.<locals>.<listcomp>dtypeTexact)	factorizer   
isinstancer   from_tuplesuniqueZsort_valueslistnpasarrayintptmassert_numpy_array_equalassert_index_equal)	selfZindex_or_series_objr   objZresult_codesZresult_uniquesconstructorexpected_uniquesexpected_codesr!   r&   r'   test_factorize2   s    
zTestFactorize.test_factorizec                 C   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)         ?       @)
r2   arraynanr   r-   r4   r   r5   r6   r7   )r8   valuessercodesuniquesr<   r;   r!   r!   r'   &test_series_factorize_na_sentinel_noneH   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cr)   Tr    r   r>   r?                  @      @g      @rC   rB           )
r   r-   r5   r6   r2   rD   objectr4   aranger*   )r8   rH   rI   exparrr!   r!   r'   
test_basicT   s@     
 zTestFactorize.test_basicc                 C   s   t ddtjddtjg}t|\}}tj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BQ	@r   rO   r>   r?   rP   r)   Tr    )r   r2   rE   infr   r-   rD   r4   r5   r6   r   r7   )r8   xrH   rI   rW   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)   Tr    Z201302MfreqZ201303z1 day 1 min1 day)r   r   r   r-   r2   rD   r4   r5   r6   r   r7   r   r   r   )r8   Zv1Zv2r^   rH   rI   rW   r!   r!   r'   test_datelike   sF    zTestFactorize.test_datelikec                 C   s   t jdddt jgdd}tt|}dD ]\}|j|d|d}t jddd|gd	d}tt|tt|ksptt	
t|||k q*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?   Or)   )rO      Tr   rA   r   int32rO   F)r2   rD   rE   htZObjectFactorizerlenr-   setAssertionErrorr5   r6   pdisna)r8   keyZrizerrA   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?   rP   )r>   r?   rP   c                 C   sD   t |\}}t|tj|tjd tj|t	d}t|| d S Nr)   )
rn   r-   r5   r6   r2   rD   r4   comZasarray_tuplesaferU   )r8   datar<   r;   rH   rI   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 5 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)   z,'[<>]' not supported between instances of .*matchrO   Tr    )	r2   rD   rangerU   pytestraises	TypeErrorr   r-   )r8   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   )r2   rD   r4   r   r-   r5   r6   )r8   Zany_real_numpy_dtyper*   rx   r<   r;   rH   rI   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 )	NrB   g    חAg:0yE>r)   writer   r>   r?   )	r2   rD   float64setflagsr4   r   r-   r5   r6   r8   writablerx   r<   r;   rH   rI   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)   r   r   )	r2   rD   uint64r   r4   r   r-   r5   r6   r   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             r)   r   r   r>   )	r2   rD   int64r   r4   r   r-   r5   r6   r   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 )	NrK   rM   rL   r)   r   r   r>   r?   )	r2   rD   rU   r   r4   r   r-   r5   r6   r   r!   r!   r'   test_string_factorize   s    z#TestFactorize.test_string_factorizec              	   C   s   t jddd t jddtdgtd}|j|d t j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 )
NrK   rM   rL   r)   r   r   r>   rO   r?   )r2   rD   rE   r   rU   r   r4   r   r-   r5   r6   r   r!   r!   r'   test_object_factorize*  s      z#TestFactorize.test_object_factorizec                 C   sj   t t dg}|j|d t jdgt jd}t jdgdd}t|\}}t|| t|| d S )Nz2020-01-01T00:00:00.000r   r   r)   z2020-01-01T00:00:00.000000000datetime64[ns])	r2   rD   
datetime64r   r4   rn   r-   r5   r6   r   r!   r!   r'   test_datetime64_factorize4  s     z'TestFactorize.test_datetime64_factorizec                 C   s   t jtd}tjdtjd|f}tj||d}t	
|d |d  t	j|d |d dd |j|d}t	
|d |d  t	j|d |d dd d S )N
   r)   r    r   r>   Tr+   rn   
RangeIndexZ
from_ranger   r2   rV   r4   r   r-   r5   r6   r7   )r8   r   rirr   resultr!   r!   r'   test_factorize_rangeindexA  s    z'TestFactorize.test_factorize_rangeindexc                 C   s   t jtd}tjdtjd|f}|d d d }|d |f}|rf|d d d d |d d d d f}tj||d}t	
|d |d  t	j|d |d dd |j|d}t	
|d |d  t	j|d |d dd d S )	Nr   r)   rO   r   r>   r    Tr+   r   )r8   r   r   rr   Zri2r   r!   r!   r'   $test_factorize_rangeindex_decreasingO  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 5 Q R X t	d t| W 5 Q R X d S )	N            r>   r)   zgot an unexpected keywordr}   T)orderF)
r2   rD   r   r   r   r   r   r-   r5   assert_produces_warning)r8   rx   r!   r!   r'   test_deprecate_orderb  s
    z"TestFactorize.test_deprecate_orderrx   u8r)   r   i8Z__nan__foorU   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-   r2   rD   r4   r5   r6   )r8   rx   rH   rI   r;   r<   r!   r!   r'   ,test_parametrized_factorize_na_value_defaultk  s
    
z:TestFactorize.test_parametrized_factorize_na_value_defaultzdata, na_valuerK    rL   r!   rK   r>   )rK   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>   rP   rO   r   r)   )r   Zfactorize_arrayr2   rD   r4   r5   r6   )r8   rx   r   rH   rI   r;   r<   r!   r!   r'   $test_parametrized_factorize_na_value{  s
    z2TestFactorize.test_parametrized_factorize_na_valuerA   rO   id   zdata, uniquesNZInt64Znumpy_arrayZextension_array)rq   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 )Nrh   r>   r   r)   )r   r-   r2   rD   r4   Z	safe_sortr5   r6   r.   ndarrayassert_extension_array_equal)r8   r   rA   rx   rI   rH   r<   r;   r!   r!   r'   test_factorize_na_sentinel  s    z(TestFactorize.test_factorize_na_sentinelr4   c                 C   s.   t j|d d\}}t|| t|| d S Nr@   r   r-   r5   r6   r8   rx   r<   r;   rH   rI   r!   r!   r'   &test_object_factorize_na_sentinel_none  s    z4TestFactorize.test_object_factorize_na_sentinel_nonerf   c                 C   s.   t j|d d\}}t|| t|| d S r   r   r   r!   r!   r'   #test_int_factorize_na_sentinel_none  s    z1TestFactorize.test_int_factorize_na_sentinel_none)$__name__
__module____qualname__r   markparametrizer=   rJ   rY   r_   re   rs   ry   r   r   r   r   r   r   r   r   r   r   r   r2   rD   r   rU   r   rn   rE   r   r*   r   r   r   r!   r!   r!   r'   r   1   s   
)1


	






	





r   c                	   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zejddejdd ged!fd"ejd#ged!fgd$d% Zd&d' Zd(d) Zd*d+ Zejd,ejegd-d. Zd/d0 Zd1S )2
TestUniquec                 C   s0   t jjdddd}t|}t|t js,td S )Nr   r   2   size)r2   randomrandintr   r0   r.   r   rm   r8   rX   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   rf   )	r2   r   r   astyper   r0   r.   r   rm   r   r!   r!   r'   test_objects  s    
zTestUnique.test_objectsc                 C   s.   dddddg}t dD ]}tt| qd S )NrZ   r[   CDE  )r   rk   r   r0   )r8   lstr{   r!   r!   r'   test_object_refcount_bug  s    z#TestUnique.test_object_refcount_bugc                 C   sb   t tddttddg}|j}|  |d}t	|}|  t
|| d S )NrN   r?   )r   Zfrom_arraysr2   rV   repeattilerF   r   rn   r0   r5   assert_almost_equal)r8   Zmindexrr   r   r!   r!   r'   test_on_index_object  s     

zTestUnique.test_on_index_objectc                 C   s$  |t jt j kr$dddg}ddg}nt|r@dddg}ddg}nt|r\d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 jkr|t}t || d S )Nr>   r?   rB   rC   r   TFrZ   r[   r)   )r5   ZBYTES_DTYPESZSTRING_DTYPESr	   r   r   rz   r   r
   r   r0   r2   rD   r   rU   r6   )r8   Zany_numpy_dtyperx   rI   r   rr   r!   r!   r'   test_dtype_preservation  s2    











z"TestUnique.test_dtype_preservationc                 C   s   t jddgdd}tdddg}t|}t|| |j|jksFtt	|}t|}t|| |j|jkstt|j
}t|}t|| |j|jkstd S )Nz2015-01-03T00:00:00.000000000z2015-01-01T00:00:00.000000000M8[ns]r)   )r2   rD   r   r   r0   r5   r6   r*   rm   r   rF   )r8   rr   Zdt_indexr   srX   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)   r   r2   rD   rn   r0   r5   r6   r8   rK   r   rr   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timedelta64[ns]r   r   r!   r!   r'   test_timedelta_non_nsB  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  '  m8[ns]r)   )r2   rD   r   r   r0   r5   r6   r*   rm   r   rF   )r8   rr   Ztd_indexr   r   rX   r!   r!   r'   %test_timedelta64_dtype_array_returnedH  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?   r   r)   )r   r2   r   rD   r5   r6   r   r0   r8   r   rW   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 )NrK   rM   r)   )r2   rE   rn   r0   rD   rU   r5   r6   )r8   Zduplicated_itemsr   rr   r!   r!   r'   test_nan_in_object_array`  s    
z#TestUnique.test_nan_in_object_arrayc                 C   s  t td}t tdtddd}t td}| }t|| t|}t|| t tddd}| }t|| t|}t|| tt tddd}| }t|| t|}t|| tt tdtdd	}t|}| }t	|| t|}t	|| d S )
NZbacabcT
categoriesorderedZbaabcr   r   )namer   )
r   r1   r0   r5   assert_categorical_equalr   r   rn   r   r7   )r8   rr   Z
expected_orM   r   r   cir!   r!   r'   test_categoricalf  s.    



zTestUnique.test_categoricalc              	   C   s  t ttdddtdddg }tttdddg}t	|| ttdddtdddg }t
dgdd d}t|| tt ttdddtdddg}tttdddg}t	|| tttdddtdddg}t
dgdd d}t|| d S )	N20160101
US/Easterntzz2016-01-01 00:00:00-05002016-01-01 00:00:00datetime64[ns, US/Eastern]r*   rc   
2016-01-01)r   r   r   r0   r   Z_from_sequencer2   rD   r5   r   r   r7   rn   r8   r   rr   r!   r!   r'   test_datetime64tz_aware  s`    



  




  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>   rP   r   r)   rN   r   z2016-01-01T00:00:00.000000000r   r   r   r   r   r   ZaabcrK   rL   rM   r   )rn   r0   r   r5   r6   r2   rD   r   r   r   r7   r1   rU   r   r   r   r!   r!   r'   test_order_of_appearance  s4    

  z#TestUnique.test_order_of_appearancezarg ,expected)1r   2r   r   r)   )r   r   c                 C   s   t |}t|| d S Nrn   r0   r5   r6   )r8   argrr   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)r2   rD   rU   rn   r0   r5   r6   r8   rX   r   rr   r!   r!   r'   test_obj_none_preservation  s    
z%TestUnique.test_obj_none_preservationc                 C   s4   t ddg}t|}t dg}t|| d S )N       rT   r   r   r!   r!   r'   test_signed_zero  s    
zTestUnique.test_signed_zeroc                 C   s~   t dt ddd }t dt ddd }||ks<t||ksHtt||g}t|}ttjg}t	
|| d S )Nd=Q          r            )structunpackpackrm   r2   rD   rn   r0   rE   r5   r6   )r8   NAN1NAN2rK   r   rr   r!   r!   r'   test_different_nans  s    
zTestUnique.test_different_nansel_typec           	      C   s   d}d}t dt d|d }t dt d|d }||ksDt||ksPttj||g|d}t|}|jdksztt dt d|d d }||kstd S )Nl         r   r   r   r   r)   r>   )	r  r  r  rm   r2   rD   rn   r0   r   )	r8   r  Zbits_for_nan1Zbits_for_nan2r  r  rK   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 )Nr)   r?   r   r>   )r2   rD   rU   rn   r0   r   rm   )r8   Zunique_nulls_fixtureZunique_nulls_fixture2rK   r   r!   r!   r'   test_do_not_mangle_na_values"  s    
z'TestUnique.test_do_not_mangle_na_valuesN)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r2   rD   rU   r   r   r   r  r   r  r	  r!   r!   r!   r'   r     s6   !*7#

r   c                   @   s   e Zd Zdd Zdd Zdd Zejd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 5 Q R X t jt|d tddg W 5 Q R X t jt|d tdgd W 5 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)r8   r   r!   r!   r'   test_invalid.  s    zTestIsin.test_invalidc                 C   s  t ddgdg}tddg}t|| t tddgdg}tddg}t|| t tddgdg}tddg}t|| t tddgtdg}tddg}t|| t tddgdh}tddg}t|| t ddgdg}tddg}t|| t tddgtdg}tddg}t|| t tddgdh}tddg}t|| t ddgdg}tddg}t|| d S )Nr>   r?   TFrK   rL   )r   r  r2   rD   r5   r6   r   r   r!   r!   r'   rY   ;  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 )	Nr`   rP   periodsr   TFr?   rd   )
r   rF   r   r  r2   rD   r5   r6   rl   r   r   r!   r!   r'   test_i8a  s(    zTestIsin.test_i8dtype1r   r   M8[ns, UTC]	period[D]r*   r   Zf8r   c                 C   s   t dddj}|dkr"|d}n*|dkr6|d}nt|d|j}|d|}t||}t	j
|jtd	}t|| d S )
Nz
2013-01-01rP   r  r  r   r  UTCr   r)   )r   _valuesZ	to_periodZtz_localizer   viewr   r   r  r2   zerosshapeboolr5   r6   )r8   r*   r  dtarX   compsr   rr   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  rc   r   r?   r)   Tr>   )
r   rF   r   r  r2   r  rk   r  r5   r6   r8   r   r   rr   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?   rK   rL   rM   TF)	r2   rD   r   r   
from_codesr   r  r5   r6   )r8   valscatsZSdZStrr   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 r  )r2   rD   r   r  r   r  r5   r6   )r8   r   r!  catotherrr   r   r!   r!   r'   test_categorical_isin  s    
zTestIsin.test_categorical_isinc                 C   s8   t jg}t jg}t dg}t||}t|| d S )NT)r2   rE   rD   r   r  r5   r6   r8   r  rF   rr   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 NrB   iAB r   r>   r)   )
r2   r   rE   r   r  onesrk   r  r5   r6   r  r!   r!   r'   test_same_nan_is_in_large  s
    
z"TestIsin.test_same_nan_is_in_largec                 C   sT   t dd}t|}t j|d< |t jdg}tt jt|td}t	|| d S r(  )
r2   r   r   rE   r  r)  rk   r  r5   assert_series_equal)r8   r   Zseriesr   rr   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!   )r8   r$  r!   r!   r'   __eq__  s    z7TestIsin.test_same_object_is_in.<locals>.LikeNan.__eq__c                 S   s   dS )Nr   r!   )r8   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   r0  TF)r5   r6   r   r  r2   rD   )r8   r0  rK   rL   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 )NrE   r   Tr)   )floatrm   r   r  r5   r6   r2   rD   r3   rU   r   )r8   r  rF   r   r!   r!   r'   r    s    

  zTestIsin.test_different_nansc                 C   s8   ddg}dg}t ddg}t||}t|| d S )Nss*   Z42F)r2   rD   r   r  r5   r6   r&  r!   r!   r'   test_no_cast  s
    zTestIsin.test_no_castemptyr)   c                 C   s6   t ddg}tddg}t||}t|| d S )NrK   rL   F)r   r2   rD   r   r  r5   r6   )r8   r6  r   rr   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 )NrE                 ?r)   FT)	r2   rD   rE   r2  rU   r   r  r5   r6   )r8   r  r   rr   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   r   r   r   r   r)   T)r  r  r  rm   r2   rD   r   r   r  r5   r6   )r8   r  r  rX   Zlookup1r   rr   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 1rF   r>   r?   r   FNr   r  r5   assert_frame_equalr8   Zdfr   Zexpected_falser!   r!   r'   test_isin_int_df_string_search&  s    z'TestIsin.test_isin_int_df_string_searchc                 C   s>   t dtjdgi}|dg}t dddgi}t|| dS )zComparing df with nan value (np.nan,2) with a string at isin() ("NaN")
        -> should not match values because np.nan is not equal str NaNrF   r?   NaNFN)r   r2   rE   r  r5   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.4245rF   gn?g#Ed@z1.4245FNr;  r=  r!   r!   r'    test_isin_float_df_string_search6  s    z)TestIsin.test_isin_float_df_string_searchN)r   r   r   r  rY   r  r   r   r   r  r  r"  r%  r'  r*  r,  r1  r  r5  r   rU   r2   rD   r7  r9  r:  r>  r@  rA  r!   r!   r!   r'   r
  -  s,   &

		
r
  c                   @   sz   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zejdejedfdd Zdd ZdS )TestValueCountsc                 C   s   t jd ddlm} t jd}||d}t|}ddddd	g}t	|
td
d}tddddg|d}t| |  d S )Ni  r   )cutrQ   gvgQg`"?gw/?g!rh?Tr   r>   r"   )r2   r   seedZpandas.core.reshape.tilerC  randnr   value_countsr   Zfrom_breaksr   CDTr   r5   r+  Z
sort_index)r8   rC  rX   factorr   Zbreaksr#   rr   r!   r!   r'   test_value_counts@  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?   rP   rQ   bins)Zd;?rS   r"   F)rK  r   )rL        @)rM  rS   )r   rF  r   r   r/   r5   r+  r  r!   r!   r'   test_value_counts_binsN  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 5 Q R X d S )Nr>   rB   rJ  r   r?   z*bins argument only works with numeric datar}   )r   rF  rk   rm   r   r   r   r   )r8   r   r   r!   r!   r'   test_value_counts_dtypesZ  s    z(TestValueCounts.test_value_counts_dtypesc                 C   s   t tdtgdd}tddg}||fD ]<}t|}tj|dd}t|dksVtt|d	ks*tq*t t	d
di}t
t|| d S )Nr   r   r)   r   z
2014-01-01Fdropnar>   r?   z2014-01-01 00:00:00)r   r2   timedelta64r   r   r   rF  rk   rm   r   r5   r+  )r8   tddtr   vcZ
vc_with_naZexp_dtr!   r!   r'   test_value_counts_nath  s    
z%TestValueCounts.test_value_counts_natc              
   C   s   t tdddtdddtdddtdddtdddtdddg}| }ttdddtdddtdddgtd}t 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)   rP   r?   r"   z
2362-01-01ignore)errors)
r   r   rF  r   rU   r5   r+  r   r2   rE   )r8   r   resZ	exp_indexrW   r!   r!   r'   &test_value_counts_datetime_outofboundsv  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aaabbcrP   r?   r>   rK   rL   rM   r"   TZcheck_index_type)
r   r   r1   rF  r   r5   r+  r#  Z
as_orderedr#   r  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>   rQ   rP   r?   rK   rL   rM   r   r"   Tr[  FrP  )r   r   r   )
r   r   r1   r2   rE   ZilocrF  r   r5   r+  r  r!   r!   r'   test_categorical_nans  sF    "  
  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abcdTr   rP   r?   r>   r   rL   rK   rM   r   r"   r[  )r   r   r1   rF  r5   r+  r  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 )NTFrP  r?   r>   r"   rP   rN   g$@rR   )r5   r+  r   rF  r2   rE   r   r!   r!   r'   test_dropna  s>    ((zTestValueCounts.test_dropnar*   r   c                 C   s   t dgd dgd  tjgd  }||}|jddd}t 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|| d S )Nr>   r?   rP   rN   TF)	normalizerQ  g      ?g333333?g?rC   rB   r)   r"   g333333?g?)r   r2   rE   r   rF  r5   r+  )r8   r*   r   Zs_typedr   rr   r!   r!   r'   test_value_counts_normalized  s    $
 z,TestValueCounts.test_value_counts_normalizedc                 C   sx   t jdgt jd}tdgdgd}t|}t|| t jddgtd}tddgddgd}t|}t|| d S )Nr   r)   r>   r"   rO   )	r2   rD   r   r   r   rF  r5   r+  rU   )r8   rX   rr   r   r!   r!   r'   test_value_counts_uint64  s    

z(TestValueCounts.test_value_counts_uint64N)r   r   r   rI  rN  rO  rV  rZ  r   r\  r^  r_  r   r   r   r2   r   rU   ra  rb  r!   r!   r!   r'   rB  ?  s   $&
rB  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ejdedddged%dg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/d0d1d/gd/d0d1gfgd2d3 Zejd4dd%dd5d6d6gejdd7d8d5d6ge
dfgd9d: Zd;S )<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}t	t
ddt jt jgd dt jdt jgd D ]\}}|||< qt|}dgd }dgd }t || }t|| tj|d	d}t || }t|| tj|dd}t || }t|| d S )Nr   r>   r?   r)   FTfirstZkeeplast   rQ   )r2   rD   rE   rU   r   
duplicatedr5   r6   r6  	enumeratezip)r8   keysr   rr   r{   tZfalsesZtruesr!   r!   r'   test_duplicated_with_nas  s:    
(


z'TestDuplicated.test_duplicated_with_nascaser>   r?   rN   rP   rQ      g?g@gffffff
@g@gffffff@y      ?      ?y       @       @y      @      @y      @      @y      @      @y      @      @rK   rL   erM   r   fr)   r      r   '      c           
      C   sh  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|| t|t|ddfD ]L}|jdd}t|| |jdd}t|| |jdd}t|| qt|t|ddfD ]Z}	|	jdd}t|t| |	jdd}t|t| |	jdd}t|t| qd S )NFTrd  re  rf  categoryr)   )	r2   rD   r   rh  r5   r6   r   r   r+  )
r8   rn  	exp_firstexp_last	exp_false	res_firstres_last	res_falseidxr   r!   r!   r'   test_numeric_object_likes8  s6    z(TestDuplicated.test_numeric_object_likesc                 C   s  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 }|D ]:}tj|dd}t|| tj|dd}	t|	| tj|dd}
t|
| t|t|ddt|tdfD ]N}|jdd}t|| |jdd}	t|	| |jdd}
t|
| qHt|t|ddt|tdfD ]Z}|jdd}t	|t| |jdd}	t	|	t| |jdd}
t	|
t| qqd S )Nz
2011-01-01z
2011-01-02r   
2011-01-03z
2011-01-04z
2011-01-06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 )r   r   r  r  r!   r!   r'   r(     s     c                 S   s   g | ]}t |d dqS )r   rb   )r   r  r!   r!   r'   r(     s     c                 S   s   g | ]}t |qS r!   )r2   r   r  r!   r!   r'   r(     s     c                 S   s   g | ]}t |qS r!   )r   r  r!   r!   r'   r(     s     FTrd  re  rf  ru  r)   )
r2   rD   r   rh  r5   r6   r   rU   r   r+  )r8   rT  rS  Zcasesrv  rw  rx  rn  ry  rz  r{  r|  r   r!   r!   r'   test_datetime_likesy  s|    




z"TestDuplicated.test_datetime_likesr   c                 C   s.   |j dkstt| tdddg d S )NTF)Z	is_uniquerm   r5   r6   rh  r2   rD   )r8   rn  r!   r!   r'   test_unique_index  s    z TestDuplicated.test_unique_indexzarr, uniquesru   )r   r>   )r>   r   rt   )rL   rM   )rK   rL   r   )rL   r?   )rK   rP   c                 C   s8   t jt|td}||d d < t|}t|| d S rv   )r2   r6  rk   rU   rn   r0   r5   r6   )r8   rX   rI   rr   r   r!   r!   r'   test_unique_tuples  s    
z!TestDuplicated.test_unique_tupleszarray,expectedr8  y      ?       @y                y      ?        c                 C   s   t |}t|| d S r   r   )r8   rD   rr   r   r!   r!   r'   test_unique_complex_numbers  s    
z*TestDuplicated.test_unique_complex_numbersN)r   r   r   rm  r   r   r   r2   rD   rE   rU   r   r}  r  r   rn   r   r  r  r  r!   r!   r!   r'   rc    sb   '   
(S"




rc  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 5 Q R X tjtdd |d W 5 Q R X d S )Nrp   r>   z'key' has incorrect typer}   rQ   ro  z'val' has incorrect type)rj   StringHashTableset_itemZget_itemrm   r   r   r   )r8   tblr!   r!   r'   (test_string_hashtable_set_item_signature  s    z6TestHashTable.test_string_hashtable_set_item_signaturec              	   C   s^   t ddt jddddg}|j|d t }|| t|	|t j
t|t jd d S )	NgX9v@r\   irN   r?   rP   r   r)   )r2   rD   rE   r   rj   Float64HashTablemap_locationsr5   r6   lookuprV   rk   r4   r8   r   Z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 )NrQ   rT   r   r   r>   )rj   r  r  rk   rm   )r8   Nr  r!   r!   r'   test_add_signed_zeros  s
    
z#TestHashTable.test_add_signed_zerosc                 C   s|   t dt ddd }t dt ddd }||ks<t||ksHtt }||d ||d t|dksxtd S )Nr   r   r   r   r   r>   )r  r  r  rm   rj   r  r  rk   )r8   r  r  r  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?   r   r)   r   )r2   rD   r   r   rj   UInt64HashTabler  r5   r6   r  rV   rk   r4   r  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 r   )r   r2   r   rD   r5   r6   r0   r   r!   r!   r'   test_get_unique.  s    zTestHashTable.test_get_uniquenvalsr   r   z&htable, uniques, dtype, safely_resizesrU   FTr   r   ri   r   c           
   	   C   s   t jt jd|d}|j|d | }| }||d | |dd | }|j}	|rj|||dd n*tj	t
dd |||dd W 5 Q R X |  |j|	kstd S )Nr   r)   r   r   rO   zexternal reference.*r}   )r2   rD   r   rE  r   Z
get_labelsZto_arrayr  r   r   
ValueErrorrm   )
r8   r   htablerI   r*   Zsafely_resizesr  r   tmpZoldshaper!   r!   r'   test_vector_resize3  s    z TestHashTable.test_vector_resizezhtable, tm_dtypeStringFloatZIntZUIntc                 C   s   t td| d }t|d}|tjkr6tj|jd< n |tjkrVtjd t	g|jdd< |j
dddjdd	}|jj|d
 |jddj}| |j}t|| | j|jdd\}}	t|| ||	 }
t|
|j d S )Nmaker   r       rP   TfracreplaceZdropr   rd  re  )Zreturn_inverse)getattrr5   r   rj   r  r2   rE   locPyObjectHashTabler   samplereset_indexrF   r   drop_duplicatesr0   r6   )r8   r  tm_dtyper   makerr   s_duplicatedexpected_uniqueresult_uniqueresult_inverseZreconstrr!   r!   r'   test_hashtable_unique`  s$    

 
z#TestHashTable.test_hashtable_uniquec                 C   s   t td| d }t|d}|tjkr6tj|jd< n |tjkrVtjd t	g|jdd< |j
dddjdd	}|jj|d
 | j}| |j\}}	|  j}
t||
 ||	|   }| j}t|| d S )Nr  r   r   r  r  rP   Tr  r  r   )r  r5   r   rj   r  r2   rE   r  r  r   r  r  rF   r   ro   r-   rQ  r  r6   )r8   r  r  r   r  r   r  Zna_maskr  r  r  Zresult_reconstructZexpected_reconstructr!   r!   r'   test_hashtable_factorize  s    



z&TestHashTable.test_hashtable_factorizer   c                 C   s    t t jjd }||d d S )Nr>   )	size_hint)r2   iinfoZuint32max)r8   r   r  r!   r!   r'   test_hashtable_large_sizehint  s    z+TestHashTable.test_hashtable_large_sizehintN)r   r   r   r  r  r  r  r  r  r   r   r   rj   r  ZObjectVectorr  r  ZFloat64VectorZInt64HashTableZInt64VectorZInt32HashTableZInt32Vectorr  ZUInt64Vectorr  r  r  r  r!   r!   r!   r'   r    sb   !

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

r  c                  C   s   t jdddt j} t| }t j| ddd }tj	||dd d| t j
t| d	< t| }t j| ddd dd  }tj	||dd d S )
Nr>   i   i   T)Zreturn_indexF)Zcheck_dtyperO   r   )r2   r   r   r   r4   rj   Zunique_label_indicesr0   r5   r6   choicerk   )rK   leftrightr!   r!   r'   test_unique_label_indices  s    

r  c                   @   s   e Zd Zejejdej	ej	dddej	dddej	g
dej	dddej	dddej	g
gdd Z
ejd	ejd
 dd Zejd	ejejgdd Zdd Zejjejjdd ZdS )TestRankrX   rR   r>   r?   rP   rS   c                 C   s`   ddl m} t|}t| }| }t|}tj||< ||}tj	||< t
|| d S )Nr   )rankdata)Zscipy.statsr  r2   rD   isfinitecopylibalgosZrank_1dr]   rE   r5   r   )r8   rX   r  maskr   rW   r!   r!   r'   test_scipy_compat  s    	



zTestRank.test_scipy_compatr*   
AllIntegerc                 C   sT   t jddgt jd}t jddg|d}|j|d t|}t|}t|| d S )Nr>   r?   r)   r   r   )	r2   rD   r   r   r   r   rankr5   r6   )r8   r   r*   rW   rx   rG   r   r!   r!   r'   rY     s    
zTestRank.test_basicc                 C   s:   t jddgt jd}tddg|d}tt|| d S )Nr>   r?   r)   r   )r2   rD   r   r   r5   r6   r   r  )r8   r*   rW   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 5 Q R X d S )Nr>   r?   rP   rQ   rN   ro  rt  rg  	   z%Array with ndim > 2 are not supportedr}   )r2   rD   r   r   r   r   r  )r8   rX   r   r!   r!   r'   test_too_many_ndims  s    $zTestRank.test_too_many_ndimsc                 C   s\   t d}tj|dd }|dks(tt ddd}tj|dd }|dksXtd S )Ni  T)Zpctr>   i  r?   )r2   rV   r   r  r  rm   reshape)r8   rF   r   r!   r!   r'   test_pct_max_many_rows  s    
zTestRank.test_pct_max_many_rowsN)r   r   r   rS  Zskip_if_no_scipyr   r   r   r2   rE   r  	typecodesrY   r   r   r   r  Z
single_cpuZhigh_memoryr  r!   r!   r!   r'   r    s    
	
r  c                  C   s   t jg dd} t jtdddgdd}tjd | |}t jdgt jd}t|| tjd || }t jg t jd}t|| tjd | |}t jdgt jd}t|| tjd || }t jg t jd}t|| d S )Nrf   r)   i        rU   rO   )	r2   rD   r   r  padr4   r5   r6   backfill)oldnewr   rr   r!   r!   r'   !test_pad_backfill_object_segfault  s    r  c                   @   s   e Zd Zdd Zdd ZdS )TestTseriesUtilc                 C   s   t 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>   rN   r   r  int64_tr   r?   rO   r)   rQ   )r   r1   r   r  r  rF   r2   rD   r4   r5   r6   r8   r  r  ZfillerZ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>   rN   r   r  r  rO   r   r?   r)   )r   r1   r   r  r  rF   r2   rD   r4   r5   r6   rV   r  r!   r!   r'   test_pad3  s    (zTestTseriesUtil.test_padN)r   r   r   r  r  r!   r!   r!   r'   r  !  s   r  c               ~   C   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 )"NrP   r?   r>   r   r   r)                                 rg         r|               r     r   r  rg  rt  ro  rN   rQ   )r2   rD   r  Zis_lexsortedrm   )Zfailurer!   r!   r'   test_is_lexsortedD  s   ~ ~   r  c                  C   s   t jdddt j} t jdddt j}t| dd }t j| dd}|t j}t	|| | d | }t|dd }t 
|| f}|t j}t	|| d S )Nr   r   r   Z	mergesort)kindi@B )r2   r   r   r   r4   r  Zgroupsort_indexerargsortr5   r6   Zlexsort)rK   rL   r   rr   rp   r!   r!   r'   test_groupsort_indexerM  s    r  c                     s  t   t  tddddtd g} t fdd| D 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t| D ]}t|| ksBtqBt	t  gd 
  t	t  gd 
  d S )Nz-infg}Ô%Ir   g}Ô%ITr]   c                 3   s   | ]} |kV  qd S r   r!   r$   r^   Infr!   r'   	<genexpr>q  s     z%test_infinity_sort.<locals>.<genexpr>c                 3   s   | ]} |kp| kV  qd S r   r!   r  r  r!   r'   r  r  s     c                 3   s   | ]} |kV  qd S r   r!   r  NegInfr!   r'   r  x  s     c                 3   s   | ]} |k p| kV  qd S r   r!   r  r  r!   r'   r  y  s         )r  InfinityNegInfinityr2  allrm   r   sortedr2   rD   r  )Zref_numspermr!   r  r  r'   test_infinity_sortf  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 r   )r  r  r  r2   rE   rm   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)   )r2   rV   r4   r  Zensure_platform_intrm   )rX   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 5 Q R X tjt| d& t	t 
||gt 
||g W 5 Q R X tjt| d t	t 
||g| W 5 Q R X tjt| d& t	t 
||gt 
||g W 5 Q R X tjt| d& t	t 
||gt 
||g W 5 Q R X tjt| d4 tj	t 
||gt 
||gt 
ddgd W 5 Q R X tjt| d4 tj	t 
||gt 
||gt 
ddgd W 5 Q R X tjt| d@ tj	t 
||gt 
||gt 
ddgt 
ddgd W 5 Q R X tjt| d> tt( t	t 
||gt 
t j|g W 5 Q R X W 5 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 additionr}   FT)arr_mask)b_mask)r  r  )r2   r  r   r  minr   r   OverflowErrorr   Zchecked_add_with_arrrD   r5   r   RuntimeWarningrE   )r   r  nr!   r!   r'   test_int64_add_overflow  sf     * **    6    r   c                   @   s   e Zd Zdd Zejdejd ejd  dd Z	dd	 Z
ejdejd ejd  d
d Zdd Zejdeegdd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )TestModec                 C   s0   t g tjtg tdd}ttg |j	 d S )Nr)   )r*   r#   )
r   r2   r   r   intr5   r6   r   moderF   r8   rW   r!   r!   r'   test_no_mode  s    zTestMode.test_no_moderT  r  r  c                 C   s   dg}dg}dg}ddg}t ||d}t ||d}tt|j|j t| | t ||d}t ||d}tt|j|j t| | d S )Nr>   r)   r   r5   r6   r   r  rF   r+  r8   rT  Z
exp_singleZdata_singleZ	exp_multiZ
data_multirG   rW   r!   r!   r'   test_mode_single  s    zTestMode.test_mode_singlec                 C   sT   t dgtd}ttdg|j t dddgtd}ttdddg|j d S )Nr>   r)   rK   rL   rM   )r   r  r5   r6   r   r  rF   rU   r  r!   r!   r'   test_mode_obj_int  s    zTestMode.test_mode_obj_intc                 C   s   dg}dgd dgd  }ddg}dgd dgd  dgd  }t ||d}t ||d}tt|j|j t| | t ||d}t ||d}tt|j|j t| | d S )Nr>   rN   r?   rP   r)   r  r  r!   r!   r'   test_number_mode  s    zTestMode.test_number_modec                 C   s\   dg}dgd dgd  }t |dd}t |dd}tt|j|j t| | d S )NrL   rK   r?   rP   rM   r)   r  )r8   rW   rx   rG   r!   r!   r'   test_strobj_mode	  s    zTestMode.test_strobj_modec                 C   s\   dg}dgd dgd  }t ||d}t ||d}tt|j|j t| | d S )Nbarr   r?   rP   r)   r  )r8   rT  rW   rx   rG   r!   r!   r'   test_strobj_multi_char	  s    zTestMode.test_strobj_multi_charc                 C   s   t dddgdd}t dddgdd}tt|j|j t| | t ddgdd}t dddddgdd}tt|j|j t| | d S )Nz
1900-05-03r~  z
2013-01-02r   r)   r   r5   r   r   r  rF   r  r+  r8   rW   rG   r!   r!   r'   test_datelike_mode	  s    zTestMode.test_datelike_modec                 C   s   t dddgdd}t dddgdd}tt|j|j t| | t ddgdd}t dddd	ddgdd}tt|j|j t| | d S )
Nz-1 daysz0 daysr  r   r)   2 minrd   -1 day-1 day 2 minr  r  r!   r!   r'   test_timedelta_mode'	  s    zTestMode.test_timedelta_modec                 C   sB   t dg}t dddg}tt|j|j t| | d S )Nr   r>   r  r  r!   r!   r'   test_mixed_dtype5	  s    
zTestMode.test_mixed_dtypec                 C   s   t dgtjd}t dddgtjd}tt|j|j t| | t ddgtjd}t ddgtjd}tt|j|j t| | d S )Nr   r)   r>   )	r   r2   r   r5   r6   r   r  rF   r+  r  r!   r!   r'   r   ;	  s    zTestMode.test_uint64_overflowc              	   C   s   t ddg}|}d}tjt|d | }W 5 Q R X t|| t dddg}t dgddgd}tjt|d | }W 5 Q R X t|| t dddddg}t ddgdddgd}tjt|d | }W 5 Q R X t|| d S )Nr>   r?   zCategorical.mode is deprecatedr}   rK   r   rP   )r   r5   r   FutureWarningr  r   )r8   rM   rW   r   rY  r!   r!   r'   r   F	  s     zTestMode.test_categoricalc              	   C   s   t dddg}tdddgtjd}tt||j t dddg}tdgt	d}tt||j t dddddg}tddgtjd}tt||j t ddddd	d	gd
d}t
jtdd t| W 5 Q R X d S )Nr>   r?   rP   r)   rK   rd   r  r  r  r   ZTimedeltaIndexr}   )r   r   r2   r   r5   r6   r   r  rF   rU   r   r   AttributeError)r8   r|  rW   r!   r!   r'   
test_indexZ	  s    zTestMode.test_indexN)r   r   r   r  r   r   r   r2   r  r  r	  r
  r  strrU   r  r  r  r  r   r   r  r!   r!   r!   r'   r    s   

	
	r  c                   @   sH   e Zd Zejdddgdd Zdd Zejddd	gd
d ZdS )TestDiffr*   r   r   c                 C   s   t dt j|dd}|jdd|d d df< tj	|ddd	}t j
|jd
dd }t dd|d d df< t dd|dd d f< t|| tj	|jddd	}t||j d S )Nr  rP   rQ   r   nsr?   r>   r   Zaxisr   r)   )r2   rV   r   r   r  r  r*   typer   diffr)  r  rR  r5   r6   Tr8   r*   rX   r   rr   r!   r!   r'   test_diff_datetimelike_natq	  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 5 Q R X d S )	Nr   rP   z
US/Pacific)r  r   z#cannot diff DatetimeArray on axis=1r}   r>   r  )r   _datar   r   r  r   r  )r8   r  r   r!   r!   r'   test_diff_ea_axis	  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)   rO   Zfloat32)r2   rD   r   r  rE   r5   r6   r   r!   r!   r'   test_diff_low_precision_int	  s    z$TestDiff.test_diff_low_precision_intN)	r   r   r   r   r   r   r!  r#  r$  r!   r!   r!   r'   r  p	  s
   
r  opc                 C   sv   | 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|| d S )NrP   r>   rQ   r?   )r.   r2   r   r   Zunion_with_duplicatesr5   r6   r   )r%  ZlvalsZrvalsrr   r   r!   r!   r'   test_union_with_duplicates	  s    r&  )Mr   	itertoolsr   r  numpyr2   r   Zpandas._libsr   r  r   rj   Zpandas.util._test_decoratorsutilZ_test_decoratorsrS  Zpandas.core.dtypes.commonr   r   r   r	   r
   Zpandas.core.dtypes.dtypesr   rG  Zpandasrn   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingr5   Zpandas.core.algorithmscoreZ
algorithmsZpandas.core.arraysr   Zpandas.core.commoncommonrw   r   r   r
  rB  rc  r  r  r  r  r  r  r  r  r  r  r   r  r  r   r   rD   r&  r!   r!   r!   r'   <module>   s^   L   -  T   R h K;#  !4  