|
12 | 12 |
|
13 | 13 | from pandas.core.dtypes import concat as _concat
|
14 | 14 | from pandas.core.dtypes.common import (
|
15 |
| - is_int64_dtype, is_integer, is_scalar, is_timedelta64_dtype) |
| 15 | + ensure_python_int, is_int64_dtype, is_integer, is_scalar, |
| 16 | + is_timedelta64_dtype) |
16 | 17 | from pandas.core.dtypes.generic import (
|
17 | 18 | ABCDataFrame, ABCSeries, ABCTimedeltaIndex)
|
18 | 19 |
|
@@ -92,39 +93,19 @@ def __new__(cls, start=None, stop=None, step=None,
|
92 | 93 | **dict(start._get_data_as_items()))
|
93 | 94 |
|
94 | 95 | # validate the arguments
|
95 |
| - def ensure_int(value, field): |
96 |
| - msg = ("RangeIndex(...) must be called with integers," |
97 |
| - " {value} was passed for {field}") |
98 |
| - if not is_scalar(value): |
99 |
| - raise TypeError(msg.format(value=type(value).__name__, |
100 |
| - field=field)) |
101 |
| - try: |
102 |
| - new_value = int(value) |
103 |
| - assert(new_value == value) |
104 |
| - except (TypeError, ValueError, AssertionError): |
105 |
| - raise TypeError(msg.format(value=type(value).__name__, |
106 |
| - field=field)) |
| 96 | + if com._all_none(start, stop, step): |
| 97 | + raise TypeError("RangeIndex(...) must be called with integers") |
107 | 98 |
|
108 |
| - return new_value |
| 99 | + start = ensure_python_int(start) if start is not None else 0 |
109 | 100 |
|
110 |
| - if com._all_none(start, stop, step): |
111 |
| - msg = "RangeIndex(...) must be called with integers" |
112 |
| - raise TypeError(msg) |
113 |
| - elif start is None: |
114 |
| - start = 0 |
115 |
| - else: |
116 |
| - start = ensure_int(start, 'start') |
117 | 101 | if stop is None:
|
118 |
| - stop = start |
119 |
| - start = 0 |
| 102 | + start, stop = 0, start |
120 | 103 | else:
|
121 |
| - stop = ensure_int(stop, 'stop') |
122 |
| - if step is None: |
123 |
| - step = 1 |
124 |
| - elif step == 0: |
| 104 | + stop = ensure_python_int(stop) |
| 105 | + |
| 106 | + step = ensure_python_int(step) if step is not None else 1 |
| 107 | + if step == 0: |
125 | 108 | raise ValueError("Step must not be zero")
|
126 |
| - else: |
127 |
| - step = ensure_int(step, 'step') |
128 | 109 |
|
129 | 110 | return cls._simple_new(start, stop, step, name)
|
130 | 111 |
|
@@ -161,7 +142,7 @@ def _simple_new(cls, start, stop=None, step=None, name=None,
|
161 | 142 | except TypeError:
|
162 | 143 | return Index(start, stop, step, name=name, **kwargs)
|
163 | 144 |
|
164 |
| - result._range = range(start, stop or 0, step or 1) # type: range |
| 145 | + result._range = range(start, stop or 0, step or 1) |
165 | 146 |
|
166 | 147 | result.name = name
|
167 | 148 | for k, v in kwargs.items():
|
|
0 commit comments