o
    dU                     @   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	m
Z
 d dlmZ d dl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)NAIndex
RangeIndexSeries	Timestamp)FloatingArrayc                  C   s   g d} t | tjdS )N)            l   
        l           l           l           dtype)r   npuint64)Zlarge r   ^/app/.heroku/python/lib/python3.10/site-packages/pandas/tests/indexes/numeric/test_indexing.pyindex_large   s   r   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	
ddgdgedgdggdd Zej	
dg ddd Zdd ZdS )
TestGetLocc                 C   s"   t g d}|ddksJ d S )Nr         r   )r   get_locselfindexr   r   r   test_get_loc   s   zTestGetLoc.test_get_locc                 C   sN   t g d}tjtdd |ddg W d    d S 1 s w   Y  d S )Nr   z\[1, 2\]matchr   r   )r   pytestraisesr   r   r   r   r   r   test_get_loc_raises_bad_label   s   "z(TestGetLoc.test_get_loc_raises_bad_labelc                 C   s   t g dtjd}tjtdd |d W d    n1 s w   Y  tjtdd |d W d    n1 s<w   Y  tjtdd |d	 W d    n1 sXw   Y  tjtd
d |d W d    d S 1 suw   Y  d S )Ng              ?       @r
   z^'foo'$r   fooz^1\.5$      ?z^True$Tz^False$F)r   r   float64r   r   KeyErrorr   r   idxr   r   r   test_get_loc_float64"   s   "zTestGetLoc.test_get_loc_float64c                 C   s  t tjddgtjd}|ddksJ |tjdksJ t tjdtjgtjd}|ddks3J d}tjt|d |tj W d    n1 sMw   Y  t tjdtjtjgtjd}|ddksiJ d}tjt|d |tj W d    d S 1 sw   Y  d S )Nr   r   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   r   nanr$   r   r   r   r%   
slice_locs)r   r'   msgr   r   r   test_get_loc_na.   s   "zTestGetLoc.test_get_loc_nac                 C   s   t ddgtjd}|ddksJ tjtdd |d W d    n1 s)w   Y  tjtdd |tj W d    n1 sFw   Y  tjtd	d |tjg W d    d S 1 sew   Y  d S )
Nr   r   r
   r   z^3$r      z^nan$z\[nan\])	r   r   r$   r   r   r   r%   r)   r   r&   r   r   r   test_get_loc_missing_nanA   s   "z#TestGetLoc.test_get_loc_missing_nanvalsr   r    z
2019-12-31testc                 C   sH   t |}tjtdd |tj W d    d S 1 sw   Y  d S )Nr)   r   )r   r   r   r%   r   r   r)   )r   r/   r'   r   r   r   (test_get_loc_float_index_nan_with_methodM   s   "z3TestGetLoc.test_get_loc_float_index_nan_with_methodr   )Zf8i8u8c                 C   sT   t jd|d}t|}tjtdd |d  W d    d S 1 s#w   Y  d S )Ni r
   Noner   )r   aranger   r   r   r%   r   )r   r   Zarrr'   r   r   r   %test_get_loc_numericindex_none_raisesT   s
   "z0TestGetLoc.test_get_loc_numericindex_none_raisesc                 C   s   t g d}ttjjd }tjtt|d |	| W d    n1 s(w   Y  tjtt|d |j
	| W d    d S 1 sHw   Y  d S )N)r   r   r   r   r   )r   r   Ziinfoint64maxr   r   r%   strr   Z_engine)r   r'   valr   r   r   test_get_loc_overflows\   s   "z!TestGetLoc.test_get_loc_overflowsN)__name__
__module____qualname__r   r   r(   r,   r.   r   markparametrizer   r1   r6   r;   r   r   r   r   r      s     

r   c                   @   s0  e Zd Zdd Zejdddgejdejg dej	dd	fejg dej	dd
fejg dej	ddfejg dej	ddfgdd Z
dd Zejdd	dg dg dfddg dg dfddg dg dfd	dg dg dfddg dg dfddg dg dfd	dg dg dfddg dg dfddg dg dfd	dg dg dfddg dg dfddg dg dfd	dg dg dfddg dg dfddg dg dfgd d! Zejd"eeeejgejd#eeg d$g d%g d&gg dg dg d'gd(d) Zd*d+ Zejd,d	g d-fdg d.fdg d/fgd0d1 Zejd2g d3ejd4d5d6gd7d8 Zejd4g d9d:d; Zd<d= Zd>d? Zd@dA ZdBdC ZdDdE ZejdFdGdHdIefeefgdJdK ZdLdM ZdNdO ZejdPdIdQgdRdS ZejdTdUdVgdWdX Z dS )YTestGetIndexerc                 C   sF   t g d}t g d}||}tjg dtjd}t|| d S )Nr   r   r-         r   rC      )r   r-   r
   )r   get_indexerr   arrayintptmassert_almost_equal)r   index1index2r1e1r   r   r   test_get_indexeri   s
   
zTestGetIndexer.test_get_indexerreverseTFzexpected,method)rG   r   r   r   r   r
   padZffill)r   r   r   r   r   backfillZbfillc                 C   sV   t g d}t g d}|r|d d d }|d d d }|j||d}t|| d S )NrB   rE   rG   method)r   rH   rK   rL   )r   rR   expectedrV   rM   rN   resultr   r   r   test_get_indexer_methodsq   s   z'TestGetIndexer.test_get_indexer_methodsc                 C   s   t td}tjtdd |jddgdd W d    n1 s"w   Y  tjtdd |jddgdd W d    d S 1 sCw   Y  d S )	N
   ztolerance argumentr   r   r   )	tolerancelimit argument)limitr   r   r5   r   r   
ValueErrorrH   r   r   r   r   test_get_indexer_invalid   s   "z'TestGetIndexer.test_get_indexer_invalidz$method, tolerance, indexer, expectedNr   rD   	   nearestr   皙?g?      !@)r   r      )r   r   rb   )r   r   rb   r   re   )r   rG   rG   )rG   r   rG   r   r   rG   c                 C   s:   t td}|j|||d}t|tj|tjd d S )NrZ   rV   r[   r
   r   r   r5   rH   rK   assert_numpy_array_equalrI   rJ   )r   rV   r[   indexerrW   r   actualr   r   r   test_get_indexer_nearest   s   z'TestGetIndexer.test_get_indexer_nearestlisttypeztolerance, expected)333333?rp   皙?)re   rq   rq   )rq         ?rr   )rG   r   rb   c                 C   sB   t td}|jg dd||d}t|tj|tjd d S )NrZ   rd   rc   ri   r
   rj   )r   r[   rW   ro   r   rm   r   r   r   +test_get_indexer_nearest_listlike_tolerance   s
   z:TestGetIndexer.test_get_indexer_nearest_listlike_tolerancec                 C   s   t td}tjtdd |jddgddd W d    n1 s#w   Y  tjtdd |jddgdg d	d
 W d    d S 1 sGw   Y  d S )NrZ   r\   r   r   r   rc   )rV   r]   ztolerance size must matchr   r   r-   ri   r^   r   r   r   r   test_get_indexer_nearest_error   s   "z-TestGetIndexer.test_get_indexer_nearest_errorzmethod,expected)rg      r   )rb   rg   r   )rb   rv   r   c                 C   st   t tdd d d }|jg d|d}t|tjg dtjd |jg d|d}t|tj|tjd d S )NrZ   rG   ra   rU   )rb   rC   r   r
   rd   rj   )r   rV   rW   r   rm   r   r   r   #test_get_indexer_nearest_decreasing   s
   z2TestGetIndexer.test_get_indexer_nearest_decreasing	idx_dtype)r7   r$   r   rangerV   rH   get_indexer_non_uniquec                 C   s   |dkr	t d}n	ttjd|d}tg d}t|||}tjg dtjd}|dkr5t|| d S tjdtjd}t|d | t|d	 | d S )
Nry   rC   r
   )TFT)rG   rG   rG   rH   r-   r   r   )	r   r   r   r5   getattrrI   rJ   rK   rk   )r   rV   rx   Znumeric_indexotherrX   rW   missingr   r   r   -test_get_indexer_numeric_index_boolean_target   s   
z<TestGetIndexer.test_get_indexer_numeric_index_boolean_target)rS   rT   rc   c                 C   s   t g d}t ddg}tjtdd |j||d W d    n1 s%w   Y  tjtdd |j||d W d    d S 1 sDw   Y  d S )Nrt   TFzCannot comparer   rU   )r   r   r   	TypeErrorrH   )r   rV   leftrightr   r   r   ,test_get_indexer_with_method_numeric_vs_bool   s   "z;TestGetIndexer.test_get_indexer_with_method_numeric_vs_boolc                 C   s   t g d}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 )Nrt   TFrG   r
   r   )	r   rH   r   ZoneslenrJ   rK   rk   rz   )r   r   r   resrW   r   r   r    test_get_indexer_numeric_vs_bool   s   

z/TestGetIndexer.test_get_indexer_numeric_vs_boolc                 C   s   t g dtjd}t||tjg dtjd g d}t||dtjg dtjd t||dtjg dtjd t||dtjg d	tjd d S )
Nr   r
   r   )grr   g?rS   )rG   r   r   rT   rc   )r   r   r   )r   r   r$   rK   rk   rH   rI   rJ   )r   r'   targetr   r   r   test_get_indexer_float64  s   z'TestGetIndexer.test_get_indexer_float64c                 C   sB   t ddtjgtjdtjg}tjdgtjd}t|| d S )Nr   r   r
   )	r   r   r)   r$   rH   rI   rJ   rK   rk   )r   rX   rW   r   r   r   test_get_indexer_nan  s    z#TestGetIndexer.test_get_indexer_nanc                 C   s   t tdddtjd}t tdtjd}||}tjg dtjd}t	|| t tdtjd}|j|dd}tjg d	tjd}t	|| t tdtjd}|j|d
d}tjg dtjd}t	|| d S )Nr      r   r
   rZ   )
r   rG   r   rG   r   rG   r-   rG   rC   rG   rS   rU   )
r   r   r   r   r   r   r-   r-   rC   rC   rT   )
r   r   r   r   r   r-   r-   rC   rC   rD   )
r   ry   r   r7   r5   rH   rI   rJ   rK   rk   )r   r   r   rl   rW   r   r   r   test_get_indexer_int64  s   
z%TestGetIndexer.test_get_indexer_int64c                 C   s   t tddd d }||}tjg dtjd}t|| t tddd d }|j|dd}tjg d	tjd}t|| t tddd d }|j|d
d}tjg dtjd}t|| d S )NrZ   r   rD   r	   )
r   rG   r   r   r-   rC   rG   rG   rG   rG   r
   rS   rU   )
r   r   r   r   r-   rC   rC   rC   rC   rC   rT   )
r   r   r   r   r-   rC   rG   rG   rG   rG   )	r   r   r5   ZastyperH   rI   rJ   rK   rk   )r   r   r   rl   rW   r   r   r   test_get_indexer_uint64/  s   
z&TestGetIndexer.test_get_indexer_uint64z	val, val2)rC   rD   )rC   rC   rC   c                 C   sj   t ddd||g|d}|d}|dksJ tjtdd |d W d    d S 1 s.w   Y  d S )Nr   r   r-   r
   9r   rb   )r   r   r   r   r%   )r   r:   Zval2any_numeric_ea_and_arrow_dtyper'   rX   r   r   r   test_get_loc_masked?  s   
"z"TestGetIndexer.test_get_loc_maskedc                 C   s   t ddtg|d}|t}|dksJ t ddttg|d}|t}t|tg d t g d|d}tjt	dd |t W d    d S 1 sNw   Y  d S )Nr   r   r
   )FFTTrt   r   r   )
r   r   r   rK   rk   r   rI   r   r   r%   )r   r   r'   rX   r   r   r   test_get_loc_masked_naI  s   

"z%TestGetIndexer.test_get_loc_masked_nac                 C   sJ  t ttdddtjgtg dd}|t}|dks J |tj}|dks,J t ttg dtg dd}|t}|dksIJ tjt	dd	 |tj W d    n1 saw   Y  t ttddtjgtg d
d}|tj}|dksJ tjt	dd	 |t W d    d S 1 sw   Y  d S )Nr   r   )FFTF)maskr-   )r   r   r    )FFTr)   r   )FFFr   )
r   r   r   rI   r)   r   r   r   r   r%   )r   r'   rX   r   r   r   test_get_loc_masked_na_and_nanW  s6   

"z-TestGetIndexer.test_get_loc_masked_na_and_nanr:   r   c                 C   sH   t ddtd|g|d}|dtdg}tg d}tj||dd d S )	Nr   r   r-   r
   rD   rh   F)Zcheck_dtype)r   r   Zget_indexer_forr   rI   rK   rk   )r   r   r:   r'   rX   rW   r   r   r   test_get_indexer_masked_nau  s   z)TestGetIndexer.test_get_indexer_masked_nar   booleanbool[pyarrow]c                 C   sT   |dkr	t d tddtg|d}|d}|dksJ |t}|dks(J d S )Nr   ZpyarrowTFr
   r   r   )r   Zimportorskipr   r   r   )r   r   r'   rX   r   r   r   "test_get_indexer_masked_na_boolean}  s   


z1TestGetIndexer.test_get_indexer_masked_na_boolean)!r<   r=   r>   rQ   r   r?   r@   r   rI   rJ   rY   r`   rn   listtupler   ziprs   ru   rw   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rA   h   s    	

	
 
	


	
rA   c                
   @   sf   e Zd Zejdeejdddee	dddej
deejdddgd	d
 Zdd Zdd ZdS )	TestWherer   rD   r$   r
   r   r   r   r   c                 C   sx   dgt | }|}|||}dgdgt |d   }t|jg|dd    tjd}|||}t|| d S )NTFr   r
   )	r   wherer   Z	_na_valuetolistr   r$   rK   assert_index_equal)r   Zlistlike_boxr   condrW   rX   r   r   r   
test_where  s   	"zTestWhere.test_wherec                 C   sz   t g dtjd}tg d}tjdgtjd}t g dtjd}|||}t|| || |}t|| d S )N)r   rF   r   r
   )FTFr   )r   rF   r   )	r   r   r   rI   r7   r   rK   r   Zputmask)r   r'   r   r|   rW   rX   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stringr
   r    )r   r   r)   Znotnar   rK   r   )r   r   r   r|   rW   rX   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)r<   r=   r>   r   r?   r@   r   r   r5   ry   r7   r   r   r   r   r   r   r   r     s    

r   c                   @   sT   e Zd Zejdejejej	gdd Z
dd Zejdejej	gdd Zd	S )
TestTakerx   c                 C   s4   t g d|dd}|g d}|j|jksJ d S )N)r   r   r-   rC   r"   r   name)r-   r   r   )r   taker   )r   rx   r   Ztakenr   r   r   test_take_preserve_name  s   z TestTake.test_take_preserve_namec                 C   s  t g ddtjd}|tg d}t g dtjdd}t|| |jtg ddd}t d	d
tjgtjdd}t|| |jtg dddd}t g dtjdd}t|| d}tj	t
|d |jtg ddd W d    n1 sw   Y  tj	t
|d |jtg ddd W d    n1 sw   Y  d}tj	t|d |tddg W d    d S 1 sw   Y  d S )N)r    r!         @xxx)r   r   r   r   rG   )r!   r    r   r   T
fill_valuer!   r    FZ
allow_fillr   zJWhen allow_fill=True and fill_value is not None, all indices must be >= -1r   r   r   r   r   3index -5 is out of bounds for (axis 0 with )?size 3r   r   )r   r   r$   r   rI   rK   r   r)   r   r   r_   
IndexError)r   r'   rX   rW   r+   r   r   r   test_take_fill_value_float64  s,   "z%TestTake.test_take_fill_value_float64r   c                 C   s  t g d|dd}|tg d}t g d|dd}t|| t|j}d| d}tj	t
|d |jtg dd	d
 W d    n1 sKw   Y  |jtg ddd	d}t g d|dd}t|| tj	t
|d |jtg dd	d
 W d    n1 sw   Y  tj	t
|d |jtg dd	d
 W d    n1 sw   Y  d}tj	t|d |tddg W d    d S 1 sw   Y  d S )Nrt   r   r   r   )r   r   r-   zUnable to fill values because z cannot contain NAr   Tr   Fr   r   r   r   r   r   )r   r   r   rI   rK   r   typer<   r   r   r_   r   )r   r   r'   rX   rW   r   r+   r   r   r   test_take_fill_value_ints  s,   
"z"TestTake.test_take_fill_value_intsN)r<   r=   r>   r   r?   r@   r   r$   r7   r   r   r   r   r   r   r   r   r     s    
r   c                   @   s>   e Zd Zejdejejej	gdd Z
dd Zdd ZdS )	TestContainsr   c                 C   s    t g d|d}d |vsJ d S )N)r   r   r   r-   rC   r
   )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d}tj|v sJ d S Nr    r!   r
   r   r   r)   r$   r   r   r   r   test_contains_float64_nans  s   z'TestContains.test_contains_float64_nansc                 C   s&   t ddtjgtjd}d|v sJ d S r   r   r   r   r   r   test_contains_float64_not_nans  s   z+TestContains.test_contains_float64_not_nansN)r<   r=   r>   r   r?   r@   r   r$   r7   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 )TestSliceLocsr   c                 C   s   t tjg d|d}t|}|jddd|fksJ |jddd|fks'J |dddks1J |dd	d|fks=J |jdd
dksGJ |jdd
dksQJ |d d d }|dddksbJ |dddkslJ d S )Nr   r   r   rD   rF   rv   rb   rZ   r
   r   startr-   rg   )r-   rF   rD   rZ   end)r   rF   rb   )r   rv   rG   r   rF   rv   )r   rD   r   r   rI   r   r*   r   r   r   nrN   r   r   r   test_slice_locs	  s   zTestSliceLocs.test_slice_locsc                 C   s   t tjg d|d}t|}|ddd|fksJ |dddks%J |d d d	 }|d
ddks6J |dd	d|fksBJ d S )Nr   r
   g      @g      $@r-   g      @g      %@)r-   rg   rG   rf   r#   r   r   r   r   r   r   r   test_slice_locs_float_locs  s   z(TestSliceLocs.test_slice_locs_float_locsc                 C   sx   t tjg d|d}|dddksJ |dddksJ |d d d }|dddks0J |dddks:J d S )N)rZ      r      r
   r   r   r-         rG   )r   r   rI   r*   )r   r   r   rN   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J |tjdksJ t dtjtjddg}|tjdks0J d S )Nr   r   r   )r   r-   r   )r   rD   )r   r   r)   r*   r   r   r   r   test_slice_locs_na/  s
   z TestSliceLocs.test_slice_locs_nac                 C   s   t tjddg}tjtdd |jdd W d    n1 s w   Y  tjtdd |jdd W d    d S 1 s>w   Y  d S )Nr   r    r   r#   r   r   )r   r   r)   r   r   r%   r*   r   r   r   r   test_slice_locs_na_raises7  s   "z'TestSliceLocs.test_slice_locs_na_raisesN)r<   r=   r>   r   r?   r@   intfloatr   r   r   r   r   r   r   r   r   r     s    



	r   c                   @   sR   e Zd Zejdddgdd Zejdddgejd	d
dgdd ZdS )TestGetSliceBoundszside, expected)r   rC   )r   rD   c                 C   s*   t td}|jd|d}||ksJ d S )NrF   rC   sider   ry   Zget_slice_bound)r   r   rW   r   rX   r   r   r   test_get_slice_bounds_withinA  s   z/TestGetSliceBounds.test_get_slice_bounds_withinr   r   r   zbound, expected)rG   r   )rZ   rF   c                 C   s*   t td}|j||d}||ksJ d S )NrF   r   r   )r   r   rW   boundr   rX   r   r   r   test_get_slice_bounds_outsideG  s   z0TestGetSliceBounds.test_get_slice_bounds_outsideN)r<   r=   r>   r   r?   r@   r   r   r   r   r   r   r   @  s    
r   )numpyr   r   Zpandas.errorsr   Zpandasr   r   r   r   r   Zpandas._testingZ_testingrK   Zpandas.core.arraysr   Zfixturer   r   rA   r   r   r   r   r   r   r   r   r   <module>   s"    
P  #,C8