o
    jhU                     @   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)large r   k/var/www/html/smartRegister/venv/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   r0   r(   r   r   r   (test_get_loc_float_index_nan_with_methodM   s   "z3TestGetLoc.test_get_loc_float_index_nan_with_methodr   )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   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   iinfoint64maxr   r   r&   strr   _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   r2   r9   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   rH      )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)rL   r   r   r   r   r
   padffill)r   r   r   r   r   backfillbfillc                 C   sV   t g d}t g d}|r|d d d }|d d d }|j||d}t|| d S )NrG   rJ   rL   method)r   rM   rP   rQ   )r   rW   expectedr]   rR   rS   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   r7   r   r   
ValueErrorrM   r   r   r   r   test_get_indexer_invalid   s   "z'TestGetIndexer.test_get_indexer_invalidz$method, tolerance, indexer, expectedNr   rI   	   nearestr   皙?g?      !@)r   r      )r   r   ri   )r   r   ri   r   rl   )r   rL   rL   )rL   r   rL   r   r   rL   c                 C   s:   t td}|j|||d}t|tj|tjd d S )Nra   r]   rb   r
   r   r   r7   rM   rP   assert_numpy_array_equalrN   rO   )r   r]   rb   indexerr^   r   actualr   r   r   test_get_indexer_nearest   s   z'TestGetIndexer.test_get_indexer_nearestlisttypeztolerance, expected)333333?rw   皙?)rl   rx   rx   )rx         ?ry   )rL   r   ri   c                 C   sB   t td}|jg dd||d}t|tj|tjd d S )Nra   rk   rj   rp   r
   rq   )r   rb   r^   rv   r   rt   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 )Nra   rc   r   r   r   rj   )r]   rd   ztolerance size must matchr   r   r.   rp   re   r   r   r   r   test_get_indexer_nearest_error   s   "z-TestGetIndexer.test_get_indexer_nearest_errorzmethod,expected)rn      r   )ri   rn   r   )ri   r}   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 )Nra   rL   rh   r\   )ri   rH   r   r
   rk   rq   )r   r]   r^   r   rt   r   r   r   #test_get_indexer_nearest_decreasing   s
   z2TestGetIndexer.test_get_indexer_nearest_decreasing	idx_dtype)r;   r%   r   ranger]   rM   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 )
Nr   rH   r
   )TFT)rL   rL   rL   rM   r.   r   r   )	r   r   r   r7   getattrrN   rO   rP   rr   )r   r]   r   numeric_indexotherr_   r^   missingr   r   r   -test_get_indexer_numeric_index_boolean_target   s   
z<TestGetIndexer.test_get_indexer_numeric_index_boolean_target)rX   rZ   rj   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 )Nr{   TFzCannot comparer   r\   )r   r   r   	TypeErrorrM   )r   r]   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 )Nr{   TFrL   r
   r   )	r   rM   r   oneslenrO   rP   rr   r   )r   r   r   resr^   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   )gry   g?rX   )rL   r   r   rZ   rj   )r   r   r   )r   r   r%   rP   rr   rM   rN   rO   )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%   rM   rN   rO   rP   rr   )r   r_   r^   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
   ra   )
r   rL   r   rL   r   rL   r.   rL   rH   rL   rX   r\   )
r   r   r   r   r   r   r.   r.   rH   rH   rZ   )
r   r   r   r   r   r.   r.   rH   rH   rI   )
r   r   r   r;   r7   rM   rN   rO   rP   rr   )r   r   r   rs   r^   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 )Nra   r   rI   r	   )
r   rL   r   r   r.   rH   rL   rL   rL   rL   r
   rX   r\   )
r   r   r   r   r.   rH   rH   rH   rH   rH   rZ   )
r   r   r   r   r.   rH   rL   rL   rL   rL   )	r   r   r7   astyperM   rN   rO   rP   rr   )r   r   r   rs   r^   r   r   r   test_get_indexer_uint64/  s   
z&TestGetIndexer.test_get_indexer_uint64z	val, val2)rH   rI   )rH   rH   rH   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   ri   )r   r   r   r   r&   )r   r?   val2any_numeric_ea_and_arrow_dtyper(   r_   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
   )FFTTr{   r   r   )
r   r   r   rP   rr   r   rN   r   r   r&   )r   r   r(   r_   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   rN   r*   r   r   r   r   r&   )r   r(   r_   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
   rI   ro   F)check_dtype)r   r   get_indexer_forr   rN   rP   rr   )r   r   r?   r(   r_   r^   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   pyarrowTFr
   r   r   )r   importorskipr   r   r   )r   r   r(   r_   r   r   r   "test_get_indexer_masked_na_boolean}  s   


z1TestGetIndexer.test_get_indexer_masked_na_boolean)!rA   rB   rC   rV   r   rD   rE   r   rN   rO   r`   rg   ru   listtupler   ziprz   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rF   h   s    	

	
 
	


	
rF   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   rI   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   	_na_valuetolistr   r%   rP   assert_index_equal)r   listlike_boxr   condr^   r_   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   rK   r   r
   )FTFr   )r   rK   r   )	r   r   r   rN   r;   r   rP   r   putmask)r   r(   r   r   r^   r_   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*   notnar   rP   r   )r   r   r   r   r^   r_   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)rA   rB   rC   r   rD   rE   r   r   r7   r   r;   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 )
TestTaker   c                 C   s4   t g d|dd}|g d}|j|jksJ d S )N)r   r   r.   rH   r#   r   name)r.   r   r   )r   taker   )r   r   r   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   rL   )r"   r!   r   r   T
fill_valuer"   r!   F
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   rN   rP   r   r*   r   r   rf   
IndexError)r   r(   r_   r^   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 )Nr{   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   rN   rP   r   typerA   r   r   rf   r   )r   r   r(   r_   r^   r   r,   r   r   r   test_take_fill_value_ints  s,   
"z"TestTake.test_take_fill_value_intsN)rA   rB   rC   r   rD   rE   r   r%   r;   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.   rH   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)rA   rB   rC   r   rD   rE   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 )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   rI   rK   r}   ri   ra   r
   r   startr.   rn   )r.   rK   rI   ra   end)r   rK   ri   )r   r}   rL   r   rK   r}   )r   rI   r   r   rN   r   r+   r   r   r   nrS   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.   rn   rL   rm   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)ra      r      r
   r   r   r.         rL   )r   r   rN   r+   )r   r   r   rS   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   rI   )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)rA   rB   rC   r   rD   rE   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   rH   )r   rI   c                 C   s*   t td}|jd|d}||ksJ d S )NrK   rH   sider   r   get_slice_bound)r   r   r^   r   r_   r   r   r   test_get_slice_bounds_withinA  s   z/TestGetSliceBounds.test_get_slice_bounds_withinr   r   r   zbound, expected)rL   r   )ra   rK   c                 C   s*   t td}|j||d}||ksJ d S )NrK   r   r   )r   r   r^   boundr   r_   r   r   r   test_get_slice_bounds_outsideG  s   z0TestGetSliceBounds.test_get_slice_bounds_outsideN)rA   rB   rC   r   rD   rE   r   r   r   r   r   r   r   @  s    
r   )numpyr   r   pandas.errorsr   pandasr   r   r   r   r   pandas._testing_testingrP   pandas.core.arraysr   fixturer   r   rF   r   r   r   r   r   r   r   r   r   <module>   s"    
P  #,C8