|
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