U
    sVcAY                     @   s   d dl Zd dlZd dlmZ d dlmZmZmZm	Z	 d dl
mZ d dlmZmZmZ ejdd ZG dd dZG d	d
 d
ZG dd dZG dd dZG dd dZG dd dZG dd dZdS )    N)InvalidIndexError)Index
RangeIndexSeries	Timestamp)Float64Index
Int64IndexUInt64Indexc                  C   s   dddddg} t | S )N            l   
        l           l           l           )r	   )Zlarge r   N/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/indexes/numeric/test_indexing.pyindex_large   s    r   c                   @   s6  e Zd Zejdddddgdd Zejdddddgejdd	d
 Zejddddgejddd Z	ejddddgdd Z
dd Zdd Zdd Zejddd Zdd Zdd Zejdd gd!ged"gd#ggejddddgd$d% Zejd&d'd(d)gd*d+ Zd,d- ZdS ).
TestGetLocmethodNpadbackfillnearestc              	   C   s   t dddg}|d krd nt}tj|dd |jd|ddksDtW 5 Q R X |rtj|dd |jd|dddksztW 5 Q R X d S )Nr         
deprecatedmatchr   r   	tolerance)r   FutureWarningtmassert_produces_warningget_locAssertionError)selfr   indexwarnr   r   r   test_get_loc   s     zTestGetLoc.test_get_locz#ignore:Passing method:FutureWarningc              	   C   sT   t dddg}|rd}t}nd}t}tj||d |jddg|d W 5 Q R X d S )Nr   r   r   znot supported betweenz\[1, 2\]r   r   )r   	TypeErrorr   pytestraisesr   )r    r   r!   msgerrr   r   r   test_get_loc_raises_bad_label(   s    z(TestGetLoc.test_get_loc_raises_bad_labelz
method,locr   r   r   r   r   r   c                 C   s>   t dddg}|d||ks"t|jd|dd|ks:td S )Nr   r   r   皙?r   )r   r   r   )r    r   locr!   r   r   r   test_get_loc_tolerance6   s    z!TestGetLoc.test_get_loc_tolerancec              
   C   sV   t dddg}tjtdd0 tjtdd |jd|dd	 W 5 Q R X W 5 Q R X d S )
Nr   r   r   z1.1r   r   r-   g?r.   )r   r%   r&   KeyErrorr   r   r   r   )r    r   r!   r   r   r   %test_get_loc_outside_tolerance_raises?   s    z0TestGetLoc.test_get_loc_outside_tolerance_raisesc              
   C   sV   t dddg}tjtdd0 tjtdd |jddd	d
 W 5 Q R X W 5 Q R X d S )Nr   r   r   must be numericr   r   r-   r   invalidr.   r   r%   r&   
ValueErrorr   r   r   r   r    r!   r   r   r   !test_get_loc_bad_tolerance_raisesF   s    z,TestGetLoc.test_get_loc_bad_tolerance_raisesc              	   C   s:   t dddg}tjtdd |jddd W 5 Q R X d S )Nr   r   r   ztolerance .* valid ifr   r-   r.   )r   r%   r&   r6   r   r7   r   r   r   'test_get_loc_tolerance_no_method_raisesL   s    z2TestGetLoc.test_get_loc_tolerance_no_method_raisesc              
   C   sZ   t dddg}tjtdd4 tjtdd |jddddgd	 W 5 Q R X W 5 Q R X d S )
Nr   r   r   tolerance size must matchr   r   r-   r   r.   r5   r7   r   r   r   &test_get_loc_raises_missized_toleranceQ   s    z1TestGetLoc.test_get_loc_raises_missized_tolerancec              	   C   s  t dddg}dD ]8}|d|dks*t|d k	r|jd|dddkstqdD ]4\}}|d	||kslt|jd	|d
d|ksPtqPtjtdd |d W 5 Q R X tjtdd |d W 5 Q R X tjtdd |jdddd W 5 Q R X tjtdd |d W 5 Q R X tjtdd |d W 5 Q R X tjtdd |jdddd W 5 Q R X tjtdd |jddtdgd W 5 Q R X tjtdd  |jddtddgd W 5 Q R X d S )N              ?       @)Nr   r   r   r   r   r.   )r*   r+   r,   r-   g?z^'foo'$r   fooz^1\.5$      ?r   皙?r   z^True$Tz^False$Fr3   gffffff?r   zmust contain numeric elementsz+tolerance size must match target index sizer   )	r   r   r   r%   r&   r1   r6   nparray)r    idxr   r/   r   r   r   test_get_loc_float64W   s6    " zTestGetLoc.test_get_loc_float64c              	   C   s   t tjddg}|ddks"t|tjdks6tt tjdtjg}|ddksZtd}tjt|d |tj W 5 Q R X t tjdtjtjg}|ddkstd}tjt|d |tj W 5 Q R X d S )Nr   r   r   z7'Cannot get left slice bound for non-unique label: nan'r   z6'Cannot get left slice bound for non-unique label: nan)	r   rB   nanr   r   r%   r&   r1   
slice_locs)r    rD   r'   r   r   r   test_get_loc_nay   s    zTestGetLoc.test_get_loc_nac              	   C   s   t ddg}|ddksttjtdd |d W 5 Q R X tjtdd |tj W 5 Q R X tjtdd |tjg W 5 Q R X d S )	Nr   r   r   z^3$r      z^nan$z\[nan\])	r   r   r   r%   r&   r1   rB   rF   r   )r    rD   r   r   r   test_get_loc_missing_nan   s    z#TestGetLoc.test_get_loc_missing_nanvalsr   r=   z
2019-12-31testc              
   C   sP   t |}tjtdd0 tjtdd |jtj	|d W 5 Q R X W 5 Q R X d S )NrF   r   r   r   )
r   r%   r&   r1   r   r   r   r   rB   rF   )r    rK   r   rD   r   r   r   (test_get_loc_float_index_nan_with_method   s    z3TestGetLoc.test_get_loc_float_index_nan_with_methoddtypeZf8i8u8c              	   C   s>   t jd|d}t|}tjtdd |d  W 5 Q R X d S )Ni rN   Noner   )rB   aranger   r%   r&   r1   r   )r    rN   ZarrrD   r   r   r   %test_get_loc_numericindex_none_raises   s    z0TestGetLoc.test_get_loc_numericindex_none_raisesc              	   C   sv   t dddg}ttjjd }tjtt|d |	| W 5 Q R X tjtt|d |j
	| W 5 Q R X d S )Nr   r   r   r   )r   rB   Ziinfoint64maxr%   r&   r1   strr   Z_engine)r    rD   valr   r   r   test_get_loc_overflows   s    z!TestGetLoc.test_get_loc_overflows)__name__
__module____qualname__r%   markparametrizer#   filterwarningsr)   r0   r2   r8   r9   r;   rE   rH   rJ   r   rM   rT   rY   r   r   r   r   r      s4   

 



! 
r   c                   @   s2  e Zd Zdd Zejdddgejdejdddd	d	gej	d
dfejdddd	d	gej	d
dfejddd	d	dgej	d
dfejddd	d	dgej	d
dfgdd Z
dd Zejddddddgdddgfdddddgdddgfdddddgdddgfdddddgdddgfdddddgdddgfdddddgdddgfdddddgdd	dgfdddddgd	ddgfdddddgdddgfdd	dddgdd	dgfdd	dddgd	ddgfdd	dddgdddgfdddddgdddgfdddddgdddgfdddddgdddgfgdd Zejdeeeejgejd eed!d!d"gdd"d"gd"d#d#ggdddgdddgdddggd$d% Zd&d' Zejd(ddd)dgfdddd	gfddd)dgfgd*d+ Zejd,eeeegejd-d.d/gd0d1 Zejd-dddgd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= ZdS )>TestGetIndexerc                 C   sP   t dddddg}t dddg}||}tjdddgtjd}t|| d S )	Nr   r   rI            rQ   )r   get_indexerrB   rC   intpr   assert_almost_equal)r    index1index2Zr1e1r   r   r   test_get_indexer   s
    
zTestGetIndexer.test_get_indexerreverseTFzexpected,methodrd   r   r   rQ   r   Zffillr   r   Zbfillc                 C   s^   t dddddg}t dddg}|r@|d d d }|d d d }|j||d}t|| d S )	Nr   r   rI   ra   rb   rc   rd   r   )r   re   r   rg   )r    rl   expectedr   rh   ri   resultr   r   r   test_get_indexer_methods   s    z'TestGetIndexer.test_get_indexer_methodsc              	   C   sj   t td}tjtdd |jddgdd W 5 Q R X tjtdd |jddgdd W 5 Q R X d S )	N
   ztolerance argumentr   r   r   r.   limit argument)limitr   rB   rS   r%   r&   r6   re   r7   r   r   r   test_get_indexer_invalid   s
    z'TestGetIndexer.test_get_indexer_invalidz$method, tolerance, indexer, expectedNrb   	   r   皙??      !@   c                 C   s:   t td}|j|||d}t|tj|tjd d S )Nrp   r   rQ   r   rB   rS   re   r   assert_numpy_array_equalrC   rf   )r    r   r   indexerrm   r!   actualr   r   r   test_get_indexer_nearest   s    z'TestGetIndexer.test_get_indexer_nearestlisttypeztolerance, expectedg333333?rA         ?c                 C   sD   t td}|jdddgd||d}t|tj|tjd d S )Nrp   rv   rw   rx   r   r   rQ   rz   )r    r   rm   r   r!   r}   r   r   r   +test_get_indexer_nearest_listlike_tolerance   s      z:TestGetIndexer.test_get_indexer_nearest_listlike_tolerancec              	   C   st   t td}tjtdd |jddgddd W 5 Q R X tjtdd  |jddgddd	d
gd W 5 Q R X d S )Nrp   rq   r   r   r   r   )r   rr   r:   r   rI   r   rs   r7   r   r   r   test_get_indexer_nearest_error  s
    z-TestGetIndexer.test_get_indexer_nearest_errorzmethod,expected   c                 C   sz   t tdd d d }|jdddg|d}t|tjdddgtjd |jd	d
dg|d}t|tj|tjd d S )Nrp   rd   r   rb   ru   r   ra   rQ   rv   rw   rx   rz   )r    r   rm   r!   r}   r   r   r   #test_get_indexer_nearest_decreasing  s
    z2TestGetIndexer.test_get_indexer_nearest_decreasing	idx_classr   re   get_indexer_non_uniquec                 C   s   |t d}tdddg}t|||}tjdddgtjd}|dkrTt|| n0tjdtjd}t|d | t|d	 | d S )
Nra   TFrd   rQ   re   rI   r   r   )	r   r   getattrrB   rC   rf   r   r{   rS   )r    r   r   Znumeric_indexotherrn   rm   missingr   r   r   -test_get_indexer_numeric_index_boolean_target   s    z<TestGetIndexer.test_get_indexer_numeric_index_boolean_targetc              	   C   sn   t dddg}t ddg}tjtdd |j||d W 5 Q R X tjtdd |j||d W 5 Q R X d S )	Nr   r   rI   TFzCannot comparer   r   )r   r%   r&   r$   re   )r    r   leftrightr   r   r   ,test_get_indexer_with_method_numeric_vs_bool3  s    z;TestGetIndexer.test_get_indexer_with_method_numeric_vs_boolc                 C   s   t dddg}t ddg}||}dtjt|tjd }t|| ||}dtjt|tjd }t|| ||d }dtjt|tjd }t|| ||d }dtjt|tjd }t|| d S )	Nr   r   rI   TFrd   rQ   r   )	r   re   rB   Zoneslenrf   r   r{   r   )r    r   r   resrm   r   r   r    test_get_indexer_numeric_vs_bool>  s    

z/TestGetIndexer.test_get_indexer_numeric_vs_boolc                 C   s   t dddg}t||tjdddgtjd dd	d
g}t||dtjdddgtjd t||dtjdddgtjd t||dtjdddgtjd d S )Nr<   r=   r>   r   r   r   rQ   gr   r-   r   rd   r   r   )r   r   r{   re   rB   rC   rf   )r    rD   targetr   r   r   test_get_indexer_float64R  s$     

 
 
 z'TestGetIndexer.test_get_indexer_float64c                 C   s<   t ddtjgtjg}tjdgtjd}t|| d S )Nr   r   rQ   )r   rB   rF   re   rC   rf   r   r{   )r    rn   rm   r   r   r   test_get_indexer_nanc  s    z#TestGetIndexer.test_get_indexer_nanc                 C   s   t tddd}t td}||}tjddddddddddg
tjd	}t|| t td}|j|d
d}tjddddddddddg
tjd	}t|| t td}|j|dd}tjddddddddddg
tjd	}t|| d S )Nr      r   rp   rd   r   rI   ra   rQ   r   r   r   rb   )	r   rangerB   rS   re   rC   rf   r   r{   )r    r!   r   r|   rm   r   r   r   test_get_indexer_int64i  s    
$$$z%TestGetIndexer.test_get_indexer_int64c                 C   s  t tddd d }||}tjddddd	d
ddddg
tjd}t|| t tddd d }|j|dd}tjddddd	d
d
d
d
d
g
tjd}t|| t tddd d }|j|dd}tjddddd	d
ddddg
tjd}t|| d S )Nrp   uint64rb   r
   r   rd   r   r   rI   ra   rQ   r   r   r   )	r	   rB   rS   Zastypere   rC   rf   r   r{   )r    r   r   r|   rm   r   r   r   test_get_indexer_uint64z  s    
$$$z&TestGetIndexer.test_get_indexer_uint64)rZ   r[   r\   rk   r%   r]   r^   rB   rC   rf   ro   rt   r~   listtupler   zipr   r   r   r   r   r   r	   r   r   r   r   r   r   r   r   r   r   r   r`      s|   	

	
&
	 


r`   c                
   @   s`   e Zd Zejdeejddde	e
dddeejdddgd	d
 Zdd Zdd ZdS )	TestWherer!   rb   Zfloat64rQ   r   r   r   r   c                 C   sr   dgt | }|}|||}dgdgt |d   }t|jg|dd    }|||}t|| d S )NTFr   )r   wherer   Z	_na_valuetolistr   assert_index_equal)r    Zlistlike_boxr!   condrm   rn   r   r   r   
test_where  s    	zTestWhere.test_wherec                 C   st   t dddg}tdddg}tjdgtjd}t dddg}|||}t|| || |}t|| d S )Nr   rc   r   FTr   rQ   )r	   rB   rC   rU   r   r   r   Zputmask)r    rD   maskr   rm   rn   r   r   r   test_where_uint64  s    zTestWhere.test_where_uint64c                 C   sN   t dtjg}| }t ddgdd}t ddg}|||}t|| d S )Nr   abstringrQ   r=   )r   rB   rF   Znotnar   r   r   )r    r!   r   r   rm   rn   r   r   r   Ctest_where_infers_type_instead_of_trying_to_convert_string_to_float  s    zMTestWhere.test_where_infers_type_instead_of_trying_to_convert_string_to_floatN)rZ   r[   r\   r%   r]   r^   r   rB   rS   r   r   r	   r   r   r   r   r   r   r   r     s   

r   c                   @   sJ   e Zd Zejdeeegdd Z	dd Z
ejdeegdd ZdS )	TestTakeklassc                 C   s8   |ddddgdd}| dddg}|j|jks4td S )Nr   r   rI   ra   r?   namer   )taker   r   )r    r   r!   Ztakenr   r   r   test_take_preserve_name  s    z TestTake.test_take_preserve_namec              	   C   s\  t dddgdd}|tdddg}t dddgdd}t|| |jtdddgd	d
}t ddtjgdd}t|| |jtdddgdd	d}t dddgdd}t|| d}tjt	|d  |jtdddgd	d
 W 5 Q R X tjt	|d  |jtdddgd	d
 W 5 Q R X d}tjt
|d |tddg W 5 Q R X d S )Nr=   r>   g      @xxxr   r   r   rd   T
fill_valueFZ
allow_fillr   zJWhen allow_fill=True and fill_value is not None, all indices must be >= -1r   3index -5 is out of bounds for (axis 0 with )?size 3)r   r   rB   rC   r   r   rF   r%   r&   r6   
IndexError)r    rD   rn   rm   r'   r   r   r   test_take_fill_value_float64  s&    $$z%TestTake.test_take_fill_value_float64c              	   C   sd  |dddgdd}| tdddg}|dddgdd}t|| |j}d| d	}tjt|d
  |j tdddgdd W 5 Q R X |j tdddgddd}|dddgdd}t|| tjt|d
  |j tdddgdd W 5 Q R X tjt|d
  |j tdddgdd W 5 Q R X d}tjt	|d
 | tddg W 5 Q R X d S )Nr   r   rI   r   r   r   rd   zUnable to fill values because z cannot contain NAr   Tr   Fr   r   r   r   )
r   rB   rC   r   r   rZ   r%   r&   r6   r   )r    r   rD   rn   rm   r   r'   r   r   r   test_take_fill_value_ints  s$    $$$z"TestTake.test_take_fill_value_intsN)rZ   r[   r\   r%   r]   r^   r   r   r	   r   r   r   r   r   r   r   r     s
   
r   c                   @   s8   e Zd Zejdeeegdd Z	dd Z
dd ZdS )	TestContainsr   c                 C   s"   |dddddg}d |kst d S )Nr   r   r   rI   ra   )r   )r    r   r!   r   r   r   test_contains_none  s    zTestContains.test_contains_nonec                 C   s"   t ddtjg}tj|kstd S Nr=   r>   r   rB   rF   r   r7   r   r   r   test_contains_float64_nans  s    z'TestContains.test_contains_float64_nansc                 C   s    t ddtjg}d|kstd S r   r   r7   r   r   r   test_contains_float64_not_nans  s    z+TestContains.test_contains_float64_not_nansN)rZ   r[   r\   r%   r]   r^   r   r   r	   r   r   r   r   r   r   r   r     s   
r   c                   @   sj   e Zd Zejdeegdd Zejdeegdd Z	ejdeegdd Z
dd	 Zd
d ZdS )TestSliceLocsrN   c              
   C   s   t tjddddddddg|d	}t|}|jdd
d|fksBt|jdd
d|fksZt|dddksnt|ddd|fkst|jdddkst|jdddkst|d d d }|dddkst|dddkstd S )Nr   r   r   rb   rc   r   ru   rp   rQ   startrI   ry   )rI   rc   end)r   rc   )r   r   rd   r   rc   )r   rb   r   rB   rC   r   rG   r   r    rN   r!   nri   r   r   r   test_slice_locs  s    "zTestSliceLocs.test_slice_locsc              
   C   s   t tjddddddddg|d	}t|}|d
dd|fksBt|dddksVt|d d d }|dddksxt|ddd|fkstd S )Nr   r   r   rb   rc   r   ru   rp   rQ   g      @g      $@rI   g      @g      %@)rI   ry   rd   rx   r@   r   r   r   r   r   r   test_slice_locs_float_locs  s    "z(TestSliceLocs.test_slice_locs_float_locsc                 C   s|   t tjddddg|d}|dddks.t|dddksBt|d d d }|dddksdt|dddksxtd S )	Nrp         rQ   r   rI         rd   )r   rB   rC   rG   r   )r    rN   r!   ri   r   r   r   test_slice_locs_dup_numeric'  s    z)TestSliceLocs.test_slice_locs_dup_numericc                 C   sd   t tjddg}|ddks"t|tjdks6tt dtjtjddg}|tjdks`td S )Nr   r   r   )r   rI   r   )r   rb   )r   rB   rF   rG   r   r7   r   r   r   test_slice_locs_na1  s
    z TestSliceLocs.test_slice_locs_nac              	   C   s`   t tjddg}tjtdd |jdd W 5 Q R X tjtdd |jdd W 5 Q R X d S )Nr   r    r   r@   r   r   )r   rB   rF   r%   r&   r1   rG   r7   r   r   r   test_slice_locs_na_raises9  s
    z'TestSliceLocs.test_slice_locs_na_raisesN)rZ   r[   r\   r%   r]   r^   intfloatr   r   r   r   r   r   r   r   r   r   
  s   



	r   c                   @   sz   e Zd Zejddddgejdddgdd	 Zejddddgejd
ddgejdddgdd ZdS )TestGetSliceBoundskindgetitemr/   Nzside, expected)r   ra   )r   rb   c              	   C   sF   t td}tjtdd |jd||d}W 5 Q R X ||ksBtd S )Nrc   'kind' argumentr   ra   r   sider   r   r   r   r   Zget_slice_boundr   )r    r   r   rm   r!   rn   r   r   r   test_get_slice_bounds_withinC  s    z/TestGetSliceBounds.test_get_slice_bounds_withinr   r   r   zbound, expected)rd   r   )rp   rc   c              	   C   sF   t td}tjtdd |j|||d}W 5 Q R X ||ksBtd S )Nrc   r   r   r   r   )r    r   r   rm   boundr!   rn   r   r   r   test_get_slice_bounds_outsideL  s    z0TestGetSliceBounds.test_get_slice_bounds_outside)rZ   r[   r\   r%   r]   r^   r   r   r   r   r   r   r   B  s   r   )ZnumpyrB   r%   Zpandas.errorsr   Zpandasr   r   r   r   Zpandas._testingZ_testingr   Zpandas.core.indexes.apir   r   r	   Zfixturer   r   r`   r   r   r   r   r   r   r   r   r   <module>   s    
  W,C8