U
    -eX                     @   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   dddddg} t | tjdS )N            l   
        l           l           l           dtype)r   npuint64)Zlarge r   k/var/www/html/Darija-Ai-Train/env/lib/python3.8/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dddgdd Zdd ZdS )
TestGetLocc                 C   s$   t dddg}|ddks td S )Nr         )r   get_locAssertionErrorselfindexr   r   r   test_get_loc   s    zTestGetLoc.test_get_locc              	   C   s:   t dddg}tjtdd |ddg W 5 Q R X d S )Nr   r   r   z\[1, 2\]match)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 dddgtjd}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 |d W 5 Q R X tjtdd |d W 5 Q R X d S )N              ?       @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(t|tjdks<tt tjdtjgtjd}|ddksftd}tjt|d |	tj W 5 Q R X t tjdtjtjgtjd}|ddkstd}tjt|d |	tj W 5 Q R X 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   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$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   r   z^3$r      z^nan$z\[nan\])
r   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   s2   t |}tjtdd |tj W 5 Q R X 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   s>   t jd|d}t|}tjtdd |d  W 5 Q R X 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   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   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                   @   s  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,d-d.d/d0gejd1d2d3gd4d5 Zejd1dddgd6d7 Zd8d9 Zd:d; Zd<d= Zd>d? Zd@dA ZejdBdCdDdEefeefgdFdG ZdHdI ZdJdK ZejdLdEdgdMdN ZejdOdPdQgdRdS Z dTdU Z!dS )V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   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,methodrF   r   r   r   padZffillr   backfillZ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   r.   rC   rD   rE   rF   method)r   rG   rJ   rK   )r   rQ   expectedrU   rL   rM   resultr   r   r   test_get_indexer_methodst   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   )	tolerancelimit argument)limitr   r   r6   r   r   
ValueErrorrG   r   r   r   r   test_get_indexer_invalid   s
    z'TestGetIndexer.test_get_indexer_invalidz$method, tolerance, indexer, expectedNrD   	   nearest皙??      !@   c                 C   s:   t td}|j|||d}t|tj|tjd d S )NrY   rU   rZ   r   r   r   r6   rG   rJ   assert_numpy_array_equalrH   rI   )r   rU   rZ   indexerrV   r   actualr   r   r   test_get_indexer_nearest   s    z'TestGetIndexer.test_get_indexer_nearestlisttypeztolerance, expectedg333333?g?      ?c                 C   sD   t td}|jdddgd||d}t|tj|tjd d S )NrY   rb   rc   rd   ra   rf   r   rg   )r   rZ   rV   rl   r   rj   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 )NrY   r[   r   r   r   ra   )rU   r\   ztolerance size must matchr   r.   rf   r]   r   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 )NrY   rF   r   rD   r`   rT   rC   r   rb   rc   rd   rg   )r   rU   rV   r   rj   r   r   r   #test_get_indexer_nearest_decreasing   s
    z2TestGetIndexer.test_get_indexer_nearest_decreasing	idx_dtyper8   r%   r   rangerU   rG   get_indexer_non_uniquec                 C   s   |dkrt d}nttjd|d}tdddg}t|||}tjdddgtjd}|dkrlt|| n0tjdtjd}t|d	 | t|d
 | d S )Nrs   rC   r   TFrF   rG   r.   r   r   )	r   r   r   r6   getattrrH   rI   rJ   rh   )r   rU   rr   Znumeric_indexotherrW   rV   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   r.   TFzCannot comparer   rT   )r   r   r   	TypeErrorrG   )r   rU   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 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   r.   TFrF   r   r   )	r   rG   r   ZoneslenrI   rJ   rh   rt   )r   rz   r{   resrV   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jd}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   r   grm   g?rR   rF   rS   ra   )r   r   r%   rJ   rh   rG   rH   rI   )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%   rG   rH   rI   rJ   rh   )r   rW   rV   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ddddddddd	dg
tjd}t	|| t tdtjd}|j|d
d}tjddddddddd	d	g
tjd}t	|| t tdtj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   r   rY   rF   r   r.   rC   rR   rT   rS   rD   )
r   rs   r   r8   r6   rG   rH   rI   rJ   rh   )r   r   r   ri   rV   r   r   r   test_get_indexer_int64!  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 )NrY   r   rD   r
   r   rF   r   r   r.   rC   r   rR   rT   rS   )	r   r   r6   ZastyperG   rH   rI   rJ   rh   )r   r   r   ri   rV   r   r   r   test_get_indexer_uint642  s    
$$$z&TestGetIndexer.test_get_indexer_uint64z	val, val2)rC   rD   )rC   rC   rC   c              	   C   sT   t ddd||g|d}|d}|dks,ttjtdd |d W 5 Q R X d S )Nr   r   r.   r   9r   r`   )r   r   r   r   r   r&   )r   r;   Zval2any_numeric_ea_and_arrow_dtyper(   rW   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(tt ddttg|d}|t}t|tddddg t dddg|d}tj	t
dd |t W 5 Q R X d S )	Nr   r   r   FTr.   r   r   )r   r   r   r   rJ   rh   r   rH   r   r   r&   )r   r   r(   rW   r   r   r   test_get_loc_masked_naL  s    

z%TestGetIndexer.test_get_loc_masked_nac              	   C   s,  t ttdddtjgtddddgd}|t}|dksDt|tj}|dks\tt ttdddgtdddgd}|t}|dksttj	t
dd	 |tj W 5 Q R X t ttddtjgtdddgd}|tj}|dksttj	t
d
d	 |t W 5 Q R X d S )Nr   r   FT)maskr.   r!   r*   r   r   )r   r	   r   rH   r*   r   r   r   r   r   r&   )r   r(   rW   r   r   r   test_get_loc_masked_na_and_nanZ  s6     
"
 z-TestGetIndexer.test_get_loc_masked_na_and_nanr;   c                 C   sJ   t ddtd|g|d}|dtdg}tdddg}tj||dd	 d S )
Nr   r   r.   r   rD   r   rF   F)Zcheck_dtype)r   r   Zget_indexer_forr   rH   rJ   rh   )r   r   r;   r(   rW   rV   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:t|t}|dksPtd S )Nr   pyarrowTFr   r   r   )r   importorskipr   r   r   r   )r   r   r(   rW   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   rF   r   )r   r   r   r   rH   
dictionaryZint8rG   r   r8   rJ   rh   rt   )
r   par   r(   rW   rV   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?   rP   r   r@   rA   r   rH   rI   rX   r_   rk   listtupler   ziprn   ro   rq   rx   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   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%   rJ   assert_index_equal)r   Zlistlike_boxr   condrV   rW   r   r   r   
test_where  s    	"zTestWhere.test_wherec                 C   s   t dddgtjd}tdddg}tjdgtjd}t dddgtjd}|||}t|| || |}t|| d S )Nr   rE   r   r   FTr   )	r   r   r   rH   r8   r   rJ   r   Zputmask)r   r(   r   rv   rV   rW   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   rJ   r   )r   r   r   rv   rV   rW   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   rs   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 )
TestTakerr   c                 C   s:   t ddddg|dd}|dddg}|j|jks6td S )Nr   r   r.   rC   r#   r   namer   )r   taker   r   )r   rr   r   Ztakenr   r   r   test_take_preserve_name  s    z TestTake.test_take_preserve_namec              	   C   sl  t dddgdtjd}|tdddg}t dddgtjdd	}t|| |jtdddgd
d}t ddtjgtjdd	}t|| |jtdddgdd
d}t dddgtj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      @xxx)r   r   r   r   rF   r   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   r%   r   rH   rJ   r   r*   r   r   r^   
IndexError)r   r(   rW   rV   r,   r   r   r   test_take_fill_value_float64  s&    $$z%TestTake.test_take_fill_value_float64r   c              	   C   sn  t dddg|dd}|tdddg}t dddg|dd}t|| 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}t 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   r.   r   r   r   rF   zUnable to fill values because z cannot contain NAr   Tr   Fr   r   r   r   )r   r   r   rH   rJ   r   r   r=   r   r   r^   r   )r   r   r(   rW   rV   r   r,   r   r   r   test_take_fill_value_ints  s$    
$$$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 dddddg|d}d |ks"td S )Nr   r   r   r.   rC   r   )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|ks$td S Nr!   r"   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|ks"t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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   rD   rE   rp   r`   rY   r   startr.   re   )r.   rE   end)r   rE   )r   rp   rF   r   rE   )r   rD   r   r   rH   r}   r+   r   r   r   r   nrM   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   rD   rE   rp   r`   rY   r   g      @g      $@r.   g      @g      %@)r.   re   rF   rd   r$   r   r   r   r   r   r   test_slice_locs_float_locs1  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 )	NrY         r   r   r.         rF   )r   r   rH   r+   r   )r   r   r   rM   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   r.   r   )r   rD   )r   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 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   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)rz   rC   )r{   rD   c                 C   s*   t td}|jd|d}||ks&td S )NrE   rC   sider   rs   Zget_slice_boundr   )r   r   rV   r   rW   r   r   r   test_get_slice_bounds_withinX  s    z/TestGetSliceBounds.test_get_slice_bounds_withinr   rz   r{   zbound, expected)rF   r   )rY   rE   c                 C   s*   t td}|j||d}||ks&td S )NrE   r   r   )r   r   rV   boundr   rW   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_testingrJ   Zpandas.core.arraysr   r	   Zfixturer   r   rB   r   r   r   r   r   r   r   r   r   <module>   s    
P  7,C8