U
    -eM                     @   sd   d dl Zd dlZd dlmZ d dlZd dlmZmZ d dl	m
Z d dlmZ eZG dd deZdS )    N)ensure_platform_int)Index
RangeIndex)NumericBasec                   @   s4  e Zd ZeZejdd Zejdddddgdd	d
 Zejdd Z	ejedddddedddddgddgddd Z
dd Zdd Zdd  Zejd!ed"dd"d#fedd"dd"d#fed"dd$dd"dfed#d"dd#d"dfgd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Zd=d> Zd?d@ ZdAdB ZdCdD ZdEdF Z dGdH Z!dIdJ Z"dKdL Z#dMdN Z$ejdOdPdQgdRdS Z%dTdU Z&dVdW Z'dXdY Z(dZd[ Z)d\d] Z*d^d_ Z+d`da Z,dbdc Z-ddde Z.ejdfe/e0dgdhdh didj Z1eje2d#dkd"ge2d#dkd"fe2ddhdlge2ddhdlfe2d#dme2dmdnge2d#dnfe2d#d"de2d"dhge2d#dhdfe2d#dmde2dldndmge2d#dndmfe2dodmde2dldndge2dodndfe2dodpe2dpdqge2ddfe2dodpe2dmdoge2ddfe2dodpe2dmd"ge2dmd"fe2dode2dmd"ge3dodrdmdlgfe2de2dmd"ge2dmd"fe2de2dge3dd#dd#gfe2de2dd"e2d"dsdlge2ddhfe2de2dmd"e2d"dsdlge3dd#dmdld"gfe2dde2dd"e2d"dsdlge2ddhfe2dme3ddmdtgge3dd#dddmdtgfe2dme3ddudvgge3dd#dddudvgfe2dme3dwdxdygge3dd#ddwdxdygfe2dmd#e3dwdxdygge3dwdxdygfgddzd{ Z4d|d} Z5d~d Z6dd Z7ejdedddedd#d#ed#dmdedddedrdgdgdd Z8ejdedde3dd#ggdd Z9dd Z:dd Z;dxS )TestRangeIndexc                 C   s   t jS N)npint64self r   g/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/pandas/tests/indexes/ranges/test_range.pydtype   s    zTestRangeIndex.dtypeZuint64float64categoryZ
datetime64object)paramsc                 C   s   |j S r   paramr   requestr   r   r   invalid_dtype   s    zTestRangeIndex.invalid_dtypec                 C   s   | j ddddS )Nr         )startstopstep)
_index_clsr
   r   r   r   simple_index   s    zTestRangeIndex.simple_indexr   r   r   foo)r   r   r   name   barZ	index_incZ	index_dec)r   Zidsc                 C   s   |j S r   r   r   r   r   r   index#   s    zTestRangeIndex.indexc                 C   s0   |  dd}tjddg|d}t|j| d S )N      r   r   )r   r   arraytmassert_numpy_array_equal_data)r   r   resultexpectedr   r   r   test_constructor_unwraps_index-   s    z-TestRangeIndex.test_constructor_unwraps_indexc                 C   s"   |}|d }| |dkstd S )Nr   F)Z$_can_hold_identifiers_and_holds_nameAssertionError)r   r   idxkeyr   r   r   test_can_hold_identifiers2   s    z(TestRangeIndex.test_can_hold_identifiersc              	   C   s,   |}t jtdd ddg|_W 5 Q R X d S )Nz^LengthmatchZrogerZharold)pytestraises
ValueErrornamesr   r   r%   r   r   r   test_too_many_names7   s    z"TestRangeIndex.test_too_many_nameszindex, start, stop, step   r&   )r   c                 C   s.   |j |kst|j|kst|j|ks*td S r   )r   r0   r   r   )r   r%   r   r   r   r   r   r   test_start_stop_step_attrs<   s    z)TestRangeIndex.test_start_stop_step_attrsc                 C   sV   t ddd}| }||k	s t||s.t|jtdddksDt|jdksRtd S )Nr<   Foor    r   r&   )r   copyr0   	identical_rangeranger    )r   iZi_copyr   r   r   	test_copyK   s    zTestRangeIndex.test_copyc                 C   s|   t ddd}t|}d}||ks$tt|}tj||dd t ddd}t|}d	}||ks`tt|}tj||dd d S )
Nr<   r>   r?   z/RangeIndex(start=0, stop=5, step=1, name='Foo')Texactr   r"   z$RangeIndex(start=5, stop=0, step=-1))r   reprr0   evalr*   assert_index_equal)r   rD   r-   r.   r   r   r   	test_reprS   s    zTestRangeIndex.test_reprc                 C   s   t ddd}|dd }tj|dd |d|d dd tdtjdd	d
dgtjd}tjd tj	fD ] }t dd|}t|| qft ddtj
}tdtj
dd	d
dgtd}t|| d S )Nr<   r>   r?   r&      r   equivrF   r   r'   r(   )r   r*   rJ   insertr   r   nanr   pdZNAZNaTr   )r   r1   r-   r.   nar   r   r   test_insertd   s    $zTestRangeIndex.test_insertc                 C   sl   t tddd}|dd}t tddd}tj||dd |dd}t tdd	d}tj||dd d S )
NrL   	   r   r   TrF   r'   
      r   rC   rN   r*   rJ   r   r1   r-   r.   r   r   r   &test_insert_edges_preserves_rangeindexu   s    z5TestRangeIndex.test_insert_edges_preserves_rangeindexc                 C   sh   t tddd}|dd}t td}tj||dd |d }|dd}|d }tj||dd d S )Nr   r'   r   r&   TrF   rV   rW   r   r   r   'test_insert_middle_preserves_rangeindex   s    z6TestRangeIndex.test_insert_middle_preserves_rangeindexc              	   C   s   t ddd}|dd  }|d}tj||dd |j|jksBt|d d }|d}tj||dd |j|jksxtd	}tjtt	f|d
 |t
|}W 5 Q R X d S )Nr<   r>   r?   r&   r   TrF   r"   z/index 5 is out of bounds for axis 0 with size 5r4   )r   deleter*   rJ   r    r0   r6   r7   
IndexErrorr8   len)r   r1   r.   r-   msgr   r   r   test_delete   s    

zTestRangeIndex.test_deletec                 C   sZ   t tddd}|dg}t tddd}tj||dd |d}tj||dd d S )Nr   r   r?   r&   TrF   r   rC   rZ   r*   rJ   rW   r   r   r    test_delete_preserves_rangeindex   s    
z/TestRangeIndex.test_delete_preserves_rangeindexc                 C   sV   t tddd}|d}|d d d }tj||dd |d}tj||dd d S )	Nr'   r   r?   r&   r   TrF   r#   r_   rW   r   r   r   'test_delete_preserves_rangeindex_middle   s    

z6TestRangeIndex.test_delete_preserves_rangeindex_middlec                 C   sf   t ddd}ddddg}||}|d d }tj||dd	 ||d d d
 }tj||dd	 d S Nr      r&   r   r'   rL   r<   TrF   r"   r   rZ   r*   rJ   r   r1   locr-   r.   r   r   r   ,test_delete_preserves_rangeindex_list_at_end   s    
z;TestRangeIndex.test_delete_preserves_rangeindex_list_at_endc                 C   sf   t ddd}ddddg}||}t ddd}tj||dd	 ||d d d
 }tj||dd	 d S rb   rd   re   r   r   r   ,test_delete_preserves_rangeindex_list_middle   s    
z;TestRangeIndex.test_delete_preserves_rangeindex_list_middlec                 C   sj   t ddd}ddddddg}||}|d d }tj||dd	 ||d d d
 }tj||dd	 d S rb   rd   re   r   r   r   $test_delete_all_preserves_rangeindex   s    
z3TestRangeIndex.test_delete_all_preserves_rangeindexc                 C   sf   t ddd}dddg}||}tdddg}tj||dd	 ||d d d
 }tj||dd	 d S )Nr   rc   r&   r'   r<   r   rL   TrF   r"   )r   rZ   r   r*   rJ   re   r   r   r   %test_delete_not_preserving_rangeindex   s    

z4TestRangeIndex.test_delete_not_preserving_rangeindexc                 C   sT   t ddd}| }|jdks"t|d}t|j| |t }t|| d S )Nr   r>   r?   i8)r   viewr    r0   r*   r+   valuesrJ   )r   rD   Zi_viewr   r   r   	test_view   s    

zTestRangeIndex.test_viewc                 C   s   |}|j tjkstd S r   )r   r   r	   r0   r:   r   r   r   
test_dtype   s    zTestRangeIndex.test_dtypec              	   C   s  t ddd}|ji kstt| |ji ks0tt| |ji ksFt|d |ji ks^td|k |ji ksttd|k |ji kst|  |ji kst|  |ji kst|D ]}q|ji kst|  |ji kstt	j
dtdi|d}t| |ji kst|jd	  |ji ks,ttjtd
d |jd  W 5 Q R X |ji ks`t|jdd	  |ji ks~t|jdd  |ji kst|j t|jtjst|j|jkstt|jdksttjddddd}t|jd | d S )Nr   d   rT   r   Z   [   a)r%   2   51r4   3   r<   r&   r	   r(   r,   )r   _cacher0   rH   strget_locallanyformatrP   Z	DataFramerC   rf   r6   r7   KeyErrorZilocr,   
isinstancer   Zndarrayr\   aranger*   r+   )r   r1   _Zdfr.   r   r   r   
test_cache   sN    

zTestRangeIndex.test_cachec                 C   s  t ddd}|jdkst|jdks(t|jdks6t|jdksDt|jdksRtt ddd}|jdkslt|jdkszt|jdkst|jdkstt dd}|jdkst|jdkst|jdkst|jdkst|jdkstt dd}|jdkst|jdkst|jdkst|jdks.t|jdks>tt dd}|jdksXt|jdksht|jdksxt|jdkst|jdkstd S )	Nr   r   r   TFrL   r"   r&   )r   Zis_monotonic_increasingr0   Zis_monotonic_decreasingZ!_is_strictly_monotonic_increasingZ!_is_strictly_monotonic_decreasingr   r%   r   r   r   test_is_monotonic*  s:    


z TestRangeIndex.test_is_monotonicc                 C   s   t dddt dddft dt dddft dddt dddft dd	d
t ddd
fg}|D ]$\}}||srt||s\tq\d S )Nr   rS   r   rT   r&   r"   r'   rL   ir#   i)r   equalsr0   )r   Zequiv_pairsleftrightr   r   r   test_equals_rangeM  s    z TestRangeIndex.test_equals_rangec                 C   s4   |}|  |j  kst| |j ks0td S r   )rz   rm   r0   r{   )r   r   r1   r   r   r   test_logical_compatX  s    z"TestRangeIndex.test_logical_compatc                 C   s   |}t | }||stt|tr,d S t |td}||rFt|jtd}|d}t |td}||jtds~t||rtt |dtd|st|jtd|jddrtd S )Nr(   r   )r    r   r	   )r   r@   rA   r0   r~   r   r   rename)r   r   r%   rD   Zsame_values_different_typeZsame_valuesr   r   r   test_identical]  s    

zTestRangeIndex.test_identicalc                 C   sB   t dd}|jt|jjd k s$tt dd}|j|jks>td S )Nr   i  rT   )r   nbytesr   Z_valuesr0   )r   r1   i2r   r   r   test_nbytess  s    

zTestRangeIndex.test_nbyteszstart,stop,step)r   r$   Zbaz)012c              	   C   s>   dt | d| }tjt|d t||| W 5 Q R X d S )NzWrong type z for value r4   )typer6   r7   	TypeErrorr   )r   r   r   r   r]   r   r   r   test_cant_or_shouldnt_cast|  s    
z)TestRangeIndex.test_cant_or_shouldnt_castc                 C   s   |}| t d S r   )rl   r   r:   r   r   r   test_view_index  s    zTestRangeIndex.test_view_indexc                 C   s"   |}| d}|jtjkstd S )NO)Zastyper   r   Zobject_r0   r   r   r%   r-   r   r   r   test_prevent_casting  s    
z#TestRangeIndex.test_prevent_castingc                 C   s   |}t tt|| d S r   )r*   rJ   rI   rH   r:   r   r   r   test_repr_roundtrip  s    z"TestRangeIndex.test_repr_roundtripc                 C   s*   t dddd}|j|dd  jks&td S )Nr&   r   Zasdfr?   )r   r    r0   r   r1   r   r   r   test_slice_keep_name  s    z#TestRangeIndex.test_slice_keep_namec                 C   s   |j s
t|jrtd S r   )Z	is_uniquer0   Zhas_duplicatesr   r   r   r   test_has_duplicates  s    
z"TestRangeIndex.test_has_duplicatesc                 C   s   |}| dd}|d |d d |d d  ks4td|d ksDt| dd}d|d d |d d  ksptd|d kstd S )Nrc   rT   r   r&   r   )Z_extended_gcdr0   r   r   r   r   test_extended_gcd  s    $ z TestRangeIndex.test_extended_gcdc                 C   s   t dddd}d|kstt ddd}d|ks:tt dddd}d|ksXtt ddd	d}d|ksvtd
}t d|d d|}||kstd S )Nr   r   r   r&   rc   r!   r#   r<   r"   l      !;o )r   Z_min_fitting_elementr0   )r   r-   Zbig_numr   r   r   test_min_fitting_element  s    z'TestRangeIndex.test_min_fitting_elementc                 C   s   d S r   r   r
   r   r   r   test_pickle_compat_construction  s    z.TestRangeIndex.test_pickle_compat_constructionc                 C   s  |}d|_ |d }d}||ks"t|d }d}||ks:t|d d  }|}t|| |ddd }tddgdd	}tj||d
d |ddd }tddgdd	}tj||d
d |ddd }tddgdd	}tj||d
d |d d d }t|jd d d dd	}tj||d
d |dd d }tdddgdd	}tj||d
d |dd d }ttjg tjddd	}tj||d
d |dd d }t|jdd d dd	}tj||d
d |dd d }t|jd d d dd	}tj||d
d d S )Nr   r&   r   r"   r!      rT      r?   rM   rF   r#   rp   rL      r   ir(   (   )	r    r0   r*   rJ   r   rm   r   r)   r	   )r   r   r%   resr.   Zindex_slicer   r   r   test_slice_specialised  sF    z%TestRangeIndex.test_slice_specialisedr   r   rc   c                 C   sb   |dkrdnd\}}t |||}t|||}t|t|ksBtt|||}t|dks^td S )Nr   )r   r<   )r<   r   )r   r   r   r\   r0   )r   r   r   r   Zarrr%   r   r   r   test_len_specialised  s    z#TestRangeIndex.test_len_specialisedr   rL   r'   r   r   i      g@g      .@rs   Nr   c                 C   s   |j S )z6Inputs and expected outputs for RangeIndex.append testr   r   r   r   r   appends  s    zTestRangeIndex.appendsc                 C   s`   |\}}|d  |dd  }tj||dd t|dkr\|d  |d }tj||dd d S )Nr   r&   TrF   r   )appendr*   rJ   r\   )r   r   indicesr.   r-   Zresult2r   r   r   test_append  s    zTestRangeIndex.test_appendc              	   C   s   t ddd}|ddkstt|ddgttddg t	j
tdd	 |d W 5 Q R X d
|jksttt	j
tdd	 |d W 5 Q R X d
|jkstd S )Nr   rT   r'   r<   r&   r   r   3r4   Z_enginez'a'rs   )r   ry   r0   r*   r+   Zget_indexerr   r   r)   r6   r7   r}   rw   r   r   r   r   test_engineless_lookup*  s     z%TestRangeIndex.test_engineless_lookupc                 C   s4   |  d}| g kst|jdddgks0td S )Nr   Tr?    )r   r|   r0   )r   Z	empty_idxr   r   r   test_format_empty@  s    
z TestRangeIndex.test_format_emptyRIc                 C   s   | g }tj||dd d S )NTrF   )r   r*   rJ   )r   r   r-   r   r   r   test_append_len_oneF  s    
z"TestRangeIndex.test_append_len_onebasec                 C   s2   t dd}||}tddg}t|| d S )Nr   r&   TF)r   isinr   r)   r*   r+   )r   r   rm   r-   r.   r   r   r   test_isin_rangeU  s    

zTestRangeIndex.test_isin_rangec                    sZ   dddddd t ddd}|j fddd	}td
ddddgdd}tj||dd d S )Nr   r   r   rT   r   )r   rc   rL   r   r   c                    s
   |   S r   )map)xZ
sort_orderr   r   <lambda>a      z5TestRangeIndex.test_sort_values_key.<locals>.<lambda>)r2   rL   rc   r	   r(   T)Zcheck_exact)r   Zsort_valuesr   r*   rJ   )r   rm   r-   r.   r   r   r   test_sort_values_key]  s
    z#TestRangeIndex.test_sort_values_keyc                 C   s   t d d S )Nz.casting of strings not relevant for RangeIndex)r6   skip)r   r   r   r   r   test_cast_stringe  s    zTestRangeIndex.test_cast_string)<__name__
__module____qualname__r   r   r6   Zfixturer   r   r   r%   r/   r3   r;   markZparametrizer=   rE   rK   rR   rX   rY   r^   r`   ra   rg   rh   ri   rj   rn   ro   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   setrC   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s   



	

	?#		

7
 """$,&((($








r   )numpyr   r6   Zpandas.core.dtypes.commonr   ZpandasrP   r   r   Zpandas._testingZ_testingr*   Zpandas.tests.indexes.commonr   r   r   r   r   r   r   <module>   s   