o
    gA                     @   sx   d dl Zd dlZd dlmZ d dlZd dlmZmZm	Z	m
Z
 d dlmZ d dlmZ e
Ze	ZeZeZG dd deZdS )    N)ensure_platform_int)Float64IndexIndex
Int64Index
RangeIndex)NumericBasec                   @   s  e Zd ZeZejdd Zejg dddd Zejde	f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ejd$g d%d&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Zd>d? Zejd@dAdBgdCdD ZdEdF Z dGdH Z!dIdJ Z"dKdL Z#dMdN Z$dOdP Z%dQdR Z&dSdT Z'dUdV Z(ejdWe)e*dXdYd
h dZd[ Z+eje,d d\dge,d d\dfe,d
dYd]ge,d
dYd]fe,d d^e,d^d_ge,d d_fe,d dde,ddYge,d dYdfe,d d^de,d]d_d^ge,d d_d^fe,d`d^de,d]d_dge,d`d_dfe,d`dae,dadbge,d
d
fe,d`dae,d^d`ge,d
d
fe,d`dae,d^dge,d^dfe,d`de,d^dge-g dcfe,de,d^dge,d^dfe,de,dge-g ddfe,de,dde,dded]ge,d
dYfe,de,d^de,dded]ge-g dffe,dde,dde,dded]ge,ddYfe,d^e-g dgge-g dhfe,d^e.g dige.g djfe,d^e/g dkge/g dlfe,d^d e/g dkge/g dkfgddmdn Z0dodp Z1dqdr Z2dsdt Z3ejdued
dded
d d ed d^ded
ddedvdXdgdwdx Z4ejdyed
de	d
d ggdzd{ Z5d|S )}TestRangeIndexc                 C   s   t jS N)npint64self r   d/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/indexes/ranges/test_range.pydtype   s   zTestRangeIndex.dtype)uint64float64category
datetime64object)paramsc                 C      |j S r	   paramr   requestr   r   r   invalid_dtype   s   zTestRangeIndex.invalid_dtypereturnc                 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   bar	index_inc	index_dec)r   idsc                 C   r   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_index2   s   z-TestRangeIndex.test_constructor_unwraps_indexc                 C   s"   |}|d }| |du sJ d S )Nr   F)$_can_hold_identifiers_and_holds_name)r   r%   idxkeyr   r   r   test_can_hold_identifiers7   s   z(TestRangeIndex.test_can_hold_identifiersc                 C   sB   |}t jtdd ddg|_W d    d S 1 sw   Y  d S )Nz^Lengthmatchrogerharold)pytestraises
ValueErrornamesr   r%   r/   r   r   r   test_too_many_names<   s   "z"TestRangeIndex.test_too_many_nameszindex, start, stop, step   r0   )r#   c                 C   s.   |j |ksJ |j|ksJ |j|ksJ d S r	   r    )r   r/   r!   r"   r#   r   r   r   test_start_stop_step_attrsA   s   z)TestRangeIndex.test_start_stop_step_attrs	attr_name)_start_stop_stepc                 C   s>   |}t t t|| W d    d S 1 sw   Y  d S r	   )r4   assert_produces_warningFutureWarninggetattr)r   rJ   r%   r;   r   r   r   %test_deprecated_start_stop_step_attrsP   s   "z4TestRangeIndex.test_deprecated_start_stop_step_attrsc                 C   sV   t ddd}| }||usJ ||sJ |jtdddks"J |jdks)J d S )NrH   Foor'   r   r0   )r   copy	identical_rangeranger'   )r   ii_copyr   r   r   	test_copyW   s   zTestRangeIndex.test_copyc                 C   s|   t ddd}t|}d}||ksJ t|}tj||dd t ddd}t|}d	}||ks0J t|}tj||dd d S )
NrH   rR   rS   z/RangeIndex(start=0, stop=5, step=1, name='Foo')Texactr   r)   z$RangeIndex(start=5, stop=0, step=-1))r   reprevalr4   assert_index_equal)r   rX   r7   r8   r   r   r   	test_repr_   s   zTestRangeIndex.test_reprc                 C   s   t ddd}|dd }t|dd |d|d  tdtjddddg}tjd tjfD ]}t dd|}t|| q.t ddtj	}t
dtj	ddddgtd	}t|| d S )
NrH   rR   rS   r0      r   r   r1   r2   )r   r4   r_   insertr   r
   nanpdNANaTr   r   )r   r;   r7   r8   nar   r   r   test_insertp   s    zTestRangeIndex.test_insertc                 C   s   t ddd}|dd  t}|d}t|| |j|jks"J |d d t}|d}t|| |j|jks>J d}tjt	t
f|d |t|}W d    d S 1 s\w   Y  d S )	NrH   rR   rS   r0   r   r)   z/index 5 is out of bounds for axis 0 with size 5r>   )r   astypeintdeleter4   r_   r'   rB   rC   
IndexErrorrD   len)r   r;   r8   r7   msgr   r   r   test_delete   s   

"zTestRangeIndex.test_deletec                 C   sT   t ddd}| }|jdksJ |d}t|j| |t }t|| d S )Nr   rR   rS   i8)r   viewr'   r4   r5   valuesr_   )r   rX   i_viewr   r   r   	test_view   s   

zTestRangeIndex.test_viewc                 C   s   |}|j tjks
J d S r	   )r   r
   r   rF   r   r   r   
test_dtype   s   zTestRangeIndex.test_dtypec                 C   s  t ddd}|ji ksJ t| |ji ksJ t| |ji ks#J |d |ji ks/J d|v  |ji ks:J d|v  |ji ksEJ |  |ji ksPJ |  |ji ks[J |D ]}q]|ji ksgJ |  |ji ksrJ tj	dt
di|d}t| |ji ksJ |jd	  |ji ksJ tjtd
d |jd  W d    n1 sw   Y  |ji ksJ |jdd	  |ji ksJ |jdd  |ji ksJ |j t|jtjsJ |j|ju sJ t|jdksJ tjddddd}t|jd | d S )Nr   d   
   r   Z   [   a)r/   2   51r>   3   rH   r0   r   r2   r6   )r   _cacher]   strget_locallanyformatrd   	DataFramerW   locrB   rC   KeyErrorilocr6   
isinstancer
   ndarrayrm   aranger4   r5   )r   r;   _dfr8   r   r   r   
test_cache   sP   

zTestRangeIndex.test_cachec                 C   s  t ddd}|jdu sJ |jdu sJ |jdu sJ |jdu s"J |jdu s)J t ddd}|jdu s6J |jdu s=J |jdu sDJ |jdu sKJ t dd}|jdu sWJ |jdu s^J |jdu seJ |jdu slJ |jdu ssJ t dd}|jdu sJ |jdu sJ |jdu sJ |jdu sJ |jdu sJ t dd}|jdu sJ |jdu sJ |jdu sJ |jdu sJ |jdu sJ d S )	Nr   r   r   TFra   r)   r0   )r   is_monotonicis_monotonic_increasingis_monotonic_decreasing!_is_strictly_monotonic_increasing!_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 ]\}}||s9J ||s@J q.d S )Nr   	   r   rw   r0   r)   r1   ra   ir*   i)r   equals)r   equiv_pairsleftrightr   r   r   test_equals_range  s   z TestRangeIndex.test_equals_rangec                 C   s4   |}|  |j  ksJ | |j ksJ d S r	   )r   rr   r   )r   r%   r;   r   r   r   test_logical_compat  s   z"TestRangeIndex.test_logical_compatc                 C   s   |}t | }||sJ t|trd S t |td}||r#J |jtd}|d}t |td}||jtds?J ||rFJ t |dtd|sRJ |jtd|jddraJ d S )Nr2   r&   )r'   r   r   )r   rT   rU   r   r   r   rename)r   r%   r/   rX   same_values_different_typesame_valuesr   r   r   test_identical  s   

"zTestRangeIndex.test_identicalc                 C   s>   t dd}|j|jjd k sJ t dd}|j|jksJ d S )Nr   i  rw   )r   nbytes_int64index)r   rX   i2r   r   r   test_nbytes+  s   

zTestRangeIndex.test_nbyteszstart,stop,step)r&   r+   baz)012c                 C   sT   dt | d| }tjt|d t||| W d    d S 1 s#w   Y  d S )NzWrong type z for value r>   )typerB   rC   	TypeErrorr   )r   r!   r"   r#   rn   r   r   r   test_cant_or_shouldnt_cast5  s   
"z)TestRangeIndex.test_cant_or_shouldnt_castc                 C   s   |}| t d S r	   )rq   r   rF   r   r   r   test_view_indexC  s   zTestRangeIndex.test_view_indexc                 C   s"   |}| d}|jtjksJ d S )NO)ri   r   r
   object_r   r%   r/   r7   r   r   r   test_prevent_castingG  s   
z#TestRangeIndex.test_prevent_castingc                 C   s   |}t tt|| d S r	   )r4   r_   r^   r]   rF   r   r   r   test_repr_roundtripL  s   z"TestRangeIndex.test_repr_roundtripc                 C   s*   t dddd}|j|dd  jksJ d S )Nr0   r   asdfrS   )r   r'   r   r;   r   r   r   test_slice_keep_nameP  s   z#TestRangeIndex.test_slice_keep_namec                 C   s   |j sJ |jr
J d S r	   )	is_uniquehas_duplicatesr   r   r   r   test_has_duplicatesT  s   
z"TestRangeIndex.test_has_duplicatesc                 C   s   |}| dd}|d |d d |d d  ksJ d|d ks"J | dd}d|d d |d d  ks8J d|d ks@J d S )N   rw   r   r0   r   )_extended_gcdr   r   r   r   test_extended_gcdX  s   $ z TestRangeIndex.test_extended_gcdc                 C   s   t dddd}d|ksJ t ddd}d|ksJ t dddd}d|ks,J t ddd	d}d|ks;J d
}t d|d d|}||ksNJ d S )Nr   r   r   r0   r   r(   r*   rH   r)   l      !;o )r   _min_fitting_element)r   r7   big_numr   r   r   test_min_fitting_elementb  s   z'TestRangeIndex.test_min_fitting_elementc                 C   s   d S r	   r   r   r   r   r   test_pickle_compat_constructiont  s   z.TestRangeIndex.test_pickle_compat_constructionc                 C   s  |}d|_ |d }d}||ksJ |d }d}||ksJ |d d  }|}t|| |ddd }ttddgdd	}t|| |dd
d }ttddgdd	}t|| |ddd }ttddgdd	}t|| |d d d }t|jd d d dd	}t|| |dd d }ttg ddd	}t|| |dd d }ttjg tjddd	}t|| |dd d }t|jdd d dd	}t|| |dd d }t|jd d d dd	}t|| d S )Nr&   r0   r   r)   r(      rw      rS   r*   rv   ra      )ra   r   r   ir2   (   )r'   r4   r_   r   r
   r3   rr   r   )r   r%   r/   resr8   index_slicer   r   r   test_slice_specialisedx  sF   z%TestRangeIndex.test_slice_specialisedr#   r   r   c                 C   sb   |dkrdnd\}}t |||}t|||}t|t|ks!J t|||}t|dks/J d S )Nr   )r   rH   )rH   r   )r
   r   r   rm   )r   r#   r!   r"   arrr/   r   r   r   test_len_specialised  s   z#TestRangeIndex.test_len_specialisedr   ra   r1   r   r   i)r   r1   ra   )r   r0   r   r0      )r   r0   r1   ra   rH   )r)   r1      )r   r0   r   r)   r1   r   )r)   @      .@)r   r0   r   r)   r   r   )rz   Nr   )r   r0   r   rz   Nr   c                 C   r   )z6Inputs and expected outputs for RangeIndex.append testr   r   r   r   r   appends  s   zTestRangeIndex.appendsc                 C   sd   |\}}|d  |dd  }tj||dd t|dkr0|d  |d }tj||dd d S d S )Nr   r0   Tr[   r   )appendr4   r_   rm   )r   r   indicesr8   r7   result2r   r   r   test_append  s   zTestRangeIndex.test_appendc                 C   s   t ddd}|ddksJ t|ddgttddg tj	t
dd	 |d W d    n1 s8w   Y  d
|jvsDJ tj	t
dd	 |d W d    n1 s[w   Y  d
|jvsgJ d S )Nr   rw   r1   rH   r0   r   r   3r>   _enginez'a'rz   )r   r   r4   r5   get_indexerr   r
   r3   rB   rC   r   r~   r   r   r   r   test_engineless_lookup  s   z%TestRangeIndex.test_engineless_lookupc                 C   s4   |  d}| g ksJ |jdddgksJ d S )Nr   TrS    )r$   r   )r   	empty_idxr   r   r   test_format_empty  s   
z TestRangeIndex.test_format_emptyRIr   c                 C   s   | g }tj||dd d S )NTr[   )r   r4   r_   )r   r   r7   r   r   r   test_append_len_one  s   
z"TestRangeIndex.test_append_len_onebasec                 C   s2   t dd}||}tddg}t|| d S )Nr   r0   TF)r   isinr
   r3   r4   r5   )r   r   rr   r7   r8   r   r   r   test_isin_range  s   

zTestRangeIndex.test_isin_rangeN)6__name__
__module____qualname__r   r$   rB   fixturer   r   r   r%   r/   r9   r=   rG   markparametrizerI   rQ   rZ   r`   rh   ro   rt   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   setrW   r   r   I64F64OIr   r   r   r   r   r   r   r   r   r   r      s    



	
?#

	
7
 ""$&& 







r   )numpyr
   rB   pandas.core.dtypes.commonr   pandasrd   r   r   r   r   pandas._testing_testingr4   pandas.tests.indexes.commonr   r   r   r   r   r   r   r   r   r   <module>   s    