a
    PfX                     @   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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)ArrowExtensionArrayFloatingArrayc                  C   s   g d} t | tjdS )N)            l   
        l           l           l           dtype)r   npuint64)Zlarge r   c/var/www/ai-form-bot/venv/lib/python3.9/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   sL   t g d}tjtdd |ddg W d    n1 s>0    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@0    Y  tjtdd |d W d    n1 sx0    Y  tjtdd |d	 W d    n1 s0    Y  tjtd
d |d W d    n1 s0    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sfJ d}tjt|d |tj W d    n1 s0    Y  t tjdtjtjgtjd}|ddksJ d}tjt|d |tj W d    n1 s0    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_na1   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 sR0    Y  tjtdd |tj W d    n1 s0    Y  tjtd	d |tjg W d    n1 s0    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_nanD   s    (*z#TestGetLoc.test_get_loc_missing_nanvalsr   r!   z
2019-12-31testc                 C   sF   t |}tjtdd |tj W d    n1 s80    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_methodP   s    z3TestGetLoc.test_get_loc_float_index_nan_with_methodr   )Zf8i8u8c                 C   sR   t jd|d}t|}tjtdd |d  W d    n1 sD0    Y  d S )Ni r   Noner   )r   aranger   r   r   r&   r   )r   r   Zarrr(   r   r   r   %test_get_loc_numericindex_none_raisesW   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 sP0    Y  tjtt|d |j
	| W d    n1 s0    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   r2   r7   r<   r   r   r   r   r      s    

r   c                   @   s8  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 dYdZ Z!dS )[TestGetIndexerc                 C   sF   t g d}t g d}||}tjg dtjd}t|| d S )Nr   r   r.         r   rD      )r   r.   r   )r   get_indexerr   arrayintptmassert_almost_equal)r   index1index2r1e1r   r   r   test_get_indexerl   s
    
zTestGetIndexer.test_get_indexerreverseTFzexpected,method)rH   r   r   r   r   r   padZffill)r   r   r   r   r   backfillZbfillc                 C   sV   t g d}t g d}|r8|d d d }|d d d }|j||d}t|| d S )NrC   rF   rH   method)r   rI   rL   rM   )r   rS   expectedrW   rN   rO   resultr   r   r   test_get_indexer_methodst   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 sD0    Y  tjtdd" |jddgdd W d    n1 s0    Y  d S )	N
   ztolerance argumentr   r   r   )	tolerancelimit argument)limitr   r   r6   r   r   
ValueErrorrI   r   r   r   r   test_get_indexer_invalid   s
    0z'TestGetIndexer.test_get_indexer_invalidz$method, tolerance, indexer, expectedNr   rE   	   nearestr   皙?g?      !@)r   r      )r   r   rc   )r   r   rc   r   rf   )r   rH   rH   )rH   r   rH   r   r   rH   c                 C   s:   t td}|j|||d}t|tj|tjd d S )Nr[   rW   r\   r   r   r   r6   rI   rL   assert_numpy_array_equalrJ   rK   )r   rW   r\   indexerrX   r   actualr   r   r   test_get_indexer_nearest   s    z'TestGetIndexer.test_get_indexer_nearestlisttypeztolerance, expected)333333?rq   皙?)rf   rr   rr   )rr         ?rs   )rH   r   rc   c                 C   sB   t td}|jg dd||d}t|tj|tjd d S )Nr[   re   rd   rj   r   rk   )r   r\   rX   rp   r   rn   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 sF0    Y  tjtdd( |jddgdg d	d
 W d    n1 s0    Y  d S )Nr[   r]   r   r   r   rd   )rW   r^   ztolerance size must matchr   r   r.   rj   r_   r   r   r   r   test_get_indexer_nearest_error   s
    2z-TestGetIndexer.test_get_indexer_nearest_errorzmethod,expected)rh      r   )rc   rh   r   )rc   rw   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 )Nr[   rH   rb   rV   )rc   rD   r   r   re   rk   )r   rW   rX   r   rn   r   r   r   #test_get_indexer_nearest_decreasing   s
    z2TestGetIndexer.test_get_indexer_nearest_decreasing	idx_dtype)r8   r%   r   rangerW   rI   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rht|| n0tjdtjd}t|d | t|d	 | d S )
Nrz   rD   r   )TFT)rH   rH   rH   rI   r.   r   r   )	r   r   r   r6   getattrrJ   rK   rL   rl   )r   rW   ry   Znumeric_indexotherrY   rX   missingr   r   r   -test_get_indexer_numeric_index_boolean_target   s    
z<TestGetIndexer.test_get_indexer_numeric_index_boolean_target)rT   rU   rd   c                 C   s   t g d}t ddg}tjtdd |j||d W d    n1 sJ0    Y  tjtdd |j||d W d    n1 s0    Y  d S )Nru   TFzCannot comparer   rV   )r   r   r   	TypeErrorrI   )r   rW   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 )Nru   TFrH   r   r   )	r   rI   r   ZoneslenrK   rL   rl   r{   )r   r   r   resrX   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   )grs   g?rT   )rH   r   r   rU   rd   )r   r   r   )r   r   r%   rL   rl   rI   rJ   rK   )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%   rI   rJ   rK   rL   rl   )r   rY   rX   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   r[   )
r   rH   r   rH   r   rH   r.   rH   rD   rH   rT   rV   )
r   r   r   r   r   r   r.   r.   rD   rD   rU   )
r   r   r   r   r   r.   r.   rD   rD   rE   )
r   rz   r   r8   r6   rI   rJ   rK   rL   rl   )r   r   r   rm   rX   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 )Nr[   r   rE   r
   )
r   rH   r   r   r.   rD   rH   rH   rH   rH   r   rT   rV   )
r   r   r   r   r.   rD   rD   rD   rD   rD   rU   )
r   r   r   r   r.   rD   rH   rH   rH   rH   )	r   r   r6   ZastyperI   rJ   rK   rL   rl   )r   r   r   rm   rX   r   r   r   test_get_indexer_uint642  s    
z&TestGetIndexer.test_get_indexer_uint64z	val, val2)rD   rE   )rD   rD   rD   c                 C   sh   t ddd||g|d}|d}|dks,J tjtdd |d W d    n1 sZ0    Y  d S )Nr   r   r.   r   9r   rc   )r   r   r   r   r&   )r   r;   Zval2any_numeric_ea_and_arrow_dtyper(   rY   r   r   r   test_get_loc_maskedB  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    n1 s0    Y  d S )Nr   r   r   )FFTTru   r   r   )
r   r   r   rL   rl   r   rJ   r   r   r&   )r   r   r(   rY   r   r   r   test_get_loc_masked_naL  s    

z%TestGetIndexer.test_get_loc_masked_nac                 C   sL  t ttdddtjgtg dd}|t}|dks@J |tj}|dksXJ t ttg dtg dd}|t}|dksJ tjt	dd	 |tj W d    n1 s0    Y  t ttddtjgtg d
d}|tj}|dksJ tjt	dd	 |t W d    n1 s>0    Y  d S )Nr   r   )FFTF)maskr.   )r   r   r!   )FFTr*   r   )FFFr   )
r   r	   r   rJ   r*   r   r   r   r   r&   )r   r(   rY   r   r   r   test_get_loc_masked_na_and_nanZ  s2    

*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   rE   ri   F)Zcheck_dtype)r   r   Zget_indexer_forr   rJ   rL   rl   )r   r   r;   r(   rY   rX   r   r   r   test_get_indexer_masked_nax  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sPJ d S )Nr   pyarrowTFr   r   r   )r   importorskipr   r   r   )r   r   r(   rY   r   r   r   "test_get_indexer_masked_na_boolean  s    


z1TestGetIndexer.test_get_indexer_masked_na_booleanc           
   	   C   s   t d}tt|jddg|| | d}tdg}||}tjddgtj	d}t
|| ||\}}tjddgtj	dtjdgtj	d }}	t
|| t
||	 d S )Nr   r   r   )typer   rH   r   )r   r   r   r   rJ   
dictionaryZint8rI   r   r8   rL   rl   r{   )
r   par   r(   rY   rX   Zresult_1Zresult_2Z
expected_1Z
expected_2r   r   r   (test_get_indexer_arrow_dictionary_target  s     
 


z7TestGetIndexer.test_get_indexer_arrow_dictionary_target)"r=   r>   r?   rR   r   r@   rA   r   rJ   rK   rZ   ra   ro   listtupler   ziprt   rv   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rB   k   s   	

	
 
	


	


rB   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   rE   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%   rL   assert_index_equal)r   Zlistlike_boxr   condrX   rY   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   rG   r   r   )FTFr   )r   rG   r   )	r   r   r   rJ   r8   r   rL   r   Zputmask)r   r(   r   r}   rX   rY   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   rL   r   )r   r   r   r}   rX   rY   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@   rA   r   r   r6   rz   r8   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 )
TestTakery   c                 C   s4   t g d|dd}|g d}|j|jks0J d S )N)r   r   r.   rD   r#   r   name)r.   r   r   )r   taker   )r   ry   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 s0    Y  tj	t
|d( |jtg ddd W d    n1 sF0    Y  d}tj	t|d$ |tddg W d    n1 s0    Y  d S )N)r!   r"         @xxx)r   r   r   r   rH   )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   rJ   rL   r   r*   r   r   r`   
IndexError)r   r(   rY   rX   r,   r   r   r   test_take_fill_value_float64  s&    68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 s0    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 s0    Y  tj	t
|d( |jtg dd	d
 W d    n1 s^0    Y  d}tj	t|d$ |tddg W d    n1 s0    Y  d S )Nru   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   rJ   rL   r   r   r=   r   r   r`   r   )r   r   r(   rY   rX   r   r,   r   r   r   test_take_fill_value_ints  s$    
688z"TestTake.test_take_fill_value_intsN)r=   r>   r?   r   r@   rA   r   r%   r8   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.   rD   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@   rA   r   r%   r8   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s6J |jddd|fksNJ |dddksbJ |dd	d|fkszJ |jdd
dksJ |jdd
dksJ |d d d }|dddksJ |dddksJ d S )Nr   r   r   rE   rG   rw   rc   r[   r   r   startr.   rh   )r.   rG   rE   r[   end)r   rG   rc   )r   rw   rH   r   rG   rw   )r   rE   r   r   rJ   r   r+   r   r   r   nrO   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s6J |dddksJJ |d d d	 }|d
ddkslJ |dd	d|fksJ d S )Nr   r   g      @g      $@r.   g      @g      %@)r.   rh   rH   rg   r$   r   r   r   r   r   r   r   test_slice_locs_float_locs1  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s`J |dddkstJ d S )N)r[      r      r   r   r   r.         rH   )r   r   rJ   r+   )r   r   r   rO   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s6J t dtjtjddg}|tjdks`J d S )Nr   r   r   )r   r.   r   )r   rE   )r   r   r*   r+   r   r   r   r   test_slice_locs_naF  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@0    Y  tjtdd |jdd W d    n1 sz0    Y  d S )Nr   r    r   r$   r   r   )r   r   r*   r   r   r&   r+   r   r   r   r   test_slice_locs_na_raisesN  s
    *z'TestSliceLocs.test_slice_locs_na_raisesN)r=   r>   r?   r   r@   rA   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   rD   )r   rE   c                 C   s*   t td}|jd|d}||ks&J d S )NrG   rD   sider   rz   Zget_slice_bound)r   r   rX   r   rY   r   r   r   test_get_slice_bounds_withinX  s    z/TestGetSliceBounds.test_get_slice_bounds_withinr   r   r   zbound, expected)rH   r   )r[   rG   c                 C   s*   t td}|j||d}||ks&J d S )NrG   r   r   )r   r   rX   boundr   rY   r   r   r   test_get_slice_bounds_outside^  s    z0TestGetSliceBounds.test_get_slice_bounds_outsideN)r=   r>   r?   r   r@   rA   r   r   r   r   r   r   r   W  s
   
r   )numpyr   r   Zpandas.errorsr   Zpandasr   r   r   r   r   Zpandas._testingZ_testingrL   Zpandas.core.arraysr   r	   Zfixturer   r   rB   r   r   r   r   r   r   r   r   r   <module>   s    
P  7,C8