3
���hl � @ sD d dl mZ d dlZd dlmZ d dlmZmZmZ d dl Z d dl
Zd dlm
Z d dlmZ d dlmZ d dljZd dlmZ d d lmZmZmZ d d
lmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ d dl%m&Z& d dl'm(Z( d dl)j*j+Z,d d
l-m.Z. d dl/j*j0j1Z2d dl/m3Z3m4Z4 d dl5m6Z6 d dl7m8Z8 e9d �Z:G dd� de6�Z;e;j<� dS )� )� timedeltaN)� getsizeof)�Any�List�Optional)�index)�
no_default)�Label)�function)�Appender�cache_readonly�doc)�ensure_platform_int�ensure_python_int�is_float�
is_integer�is_integer_dtype�is_list_like� is_scalar�is_timedelta64_dtype)�ABCTimedeltaIndex)�ops)�
extract_array)�_index_shared_docs�maybe_extract_name)�
Int64Index)�unpack_zerodim_and_deferc s4 e Zd ZU dZdZejZe dZ
eej
dwdd�Zedxed d�dd ��Zedyeed d
�dd��Zed
d� �Zedd� �Zeed�dd��Zdd� Zdd� Zdd� Zdzdd�Zd{ee eee d�dd�Zd Z ed!d"� �Z!ed#d$� �Z"ed%d&� �Z#ed'd(� �Z$ed)d*� �Z%ed+d,� �Z&ee'd�d-d.��Z(d|e)e'd/�d0d1�Z*eej+d�d2d3��Z+ee)d�d4d5��Z,ee)d�d6d7��Z-ee)d�d8d9��Z.ee)d�d:d;��Z/e0e)d<�d=d>�Z1e2ej3�d}� fd?d@� �Z3e4e5dA �d~� fdBdC� �Z6dDdE� Z7e2ej8�de9fedF�dGdH��Z8e2ej:�ddIdJ��Z:edK�dLdM�Z;d�e'd�dOdP�Z<d�e'd�dQdR�Z=ej
d�dSdT�Z>e)d�� fdUdV�Z?d�� fdWdX� Z@e'e'dY�dZd[�ZAe'e'd\�d]d^�ZBd_d`� ZC� fdadb�ZDe2ejE�d�� fddde� �ZE� fdfdg�ZFe'd�dhdi�ZGee'd�djdk��ZH� fdldm�ZIeJdn�dodp� �ZKe)d�dqdr�ZLe)d�dsdt�ZMedudv� �ZN� ZOS )��
RangeIndexa�
Immutable Index implementing a monotonic integer range.
RangeIndex is a memory-saving special case of Int64Index limited to
representing monotonic ranges. Using RangeIndex may in some instances
improve computing speed.
This is the default index type used
by DataFrame and Series when no explicit index is provided by the user.
Parameters
----------
start : int (default: 0), or other RangeIndex instance
If int and "stop" is not given, interpreted as "stop" instead.
stop : int (default: 0)
step : int (default: 1)
name : object, optional
Name to be stored in the index.
copy : bool, default False
Unused, accepted for homogeneity with other index types.
Attributes
----------
start
stop
step
Methods
-------
from_range
See Also
--------
Index : The base pandas Index type.
Int64Index : Index of int64 data.
Z
rangeindexNFc C s� | j |� t||| �}t|t�r4|j}| j||d�S tj|||�rJtd��|d k rZt |�nd}|d krrd| }}nt |�}|d k r�t |�nd}|dkr�t
d��t|||�}| j||d�S )N)�namez,RangeIndex(...) must be called with integersr � zStep must not be zero)�_validate_dtyper �
isinstancer �_range�_simple_new�comZall_none� TypeErrorr �
ValueError�range)�cls�start�stop�step�dtype�copyr �rng� r/ �;/tmp/pip-build-5_djhm0z/pandas/pandas/core/indexes/range.py�__new__V s
zRangeIndex.__new__)�data�returnc C s< |