U
    ¾mœd¡M  ã                   @   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„ Z6d€d�„ Z7ej d‚edddƒedd#d#ƒed#dmdƒedddƒedrdgdƒg¡dƒd„„ ƒZ8ej d…eddƒe3dd#gƒg¡d†d‡„ ƒZ9dˆd‰„ Z:dŠd‹„ Z;dxS )ŒÚTestRangeIndexc                 C   s   t jS ©N)ÚnpÚint64©Úself© r   ú_/home/sam/Atlas/atlas_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sŠt‚| ¡  |ji ks t‚| ¡  |ji ks¶t‚|D ]}qº|ji ksÎt‚| ¡  |ji ksät‚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�sœt‚|j t|jtjƒ�s¶t‚|j|jk�sÈt‚t|jƒdk�sÜt‚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sˆt‚|jdks–t‚t ddƒ}|jdks®t‚|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sþt‚|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�sˆt‚|jdk�s˜t‚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   i÷ÿÿÿr#   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‚| |¡rŒt‚t |dtd� |¡s¤t‚|jtd� |jdd�¡rÂt‚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s€t‚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sœt‚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   iØÿÿÿr(   é(   )	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s¦t‚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   