Skip to content

Commit 5359f6b

Browse files
committed
Remove option to use bare range in init
1 parent 0678071 commit 5359f6b

File tree

4 files changed

+11
-9
lines changed

4 files changed

+11
-9
lines changed

doc/source/whatsnew/v0.25.0.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ Other Enhancements
100100
- :class:`DatetimeIndex` and :class:`TimedeltaIndex` now have a ``mean`` method (:issue:`24757`)
101101
- :meth:`DataFrame.describe` now formats integer percentiles without decimal point (:issue:`26660`)
102102

103+
103104
.. _whatsnew_0250.api_breaking:
104105

105106
Backwards incompatible API changes

pandas/core/indexes/base.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,8 +270,10 @@ def __new__(cls, data=None, dtype=None, copy=False, name=None,
270270
data = data.to_numpy()
271271

272272
# range
273-
if isinstance(data, (RangeIndex, range)):
273+
if isinstance(data, RangeIndex):
274274
return RangeIndex(start=data, copy=copy, dtype=dtype, name=name)
275+
elif isinstance(data, range):
276+
return RangeIndex.from_range(data, dtype=dtype, name=name)
275277

276278
# categorical
277279
elif is_categorical_dtype(data) or is_categorical_dtype(dtype):

pandas/core/indexes/range.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class RangeIndex(Int64Index):
4040
4141
Parameters
4242
----------
43-
start : int (default: 0), range or RangeIndex instance
43+
start : int (default: 0) or other RangeIndex instance
4444
If int and "stop" is not given, interpreted as "stop" instead.
4545
stop : int (default: 0)
4646
step : int (default: 1)
@@ -85,10 +85,9 @@ def __new__(cls, start=None, stop=None, step=None,
8585
return cls._simple_new(range(start, stop, step), name=name)
8686

8787
# RangeIndex, range
88-
if isinstance(start, (RangeIndex, range)):
89-
if isinstance(start, RangeIndex):
90-
name = start.name if name is None else name
91-
start = start._range
88+
if isinstance(start, RangeIndex):
89+
name = start.name if name is None else name
90+
start = start._range
9291
return cls._simple_new(start, dtype=dtype, name=name)
9392

9493
# validate the arguments

pandas/tests/indexes/test_range.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,9 @@ def test_constructor_same(self):
9494

9595
def test_constructor_range(self):
9696

97-
result = RangeIndex(range(1, 5, 2))
98-
expected = RangeIndex(1, 5, 2)
99-
tm.assert_index_equal(result, expected, exact=True)
97+
msg = "Value needs to be a scalar value, was type <class 'range'>"
98+
with pytest.raises(TypeError, match=msg):
99+
result = RangeIndex(range(1, 5, 2))
100100

101101
result = RangeIndex.from_range(range(1, 5, 2))
102102
expected = RangeIndex(1, 5, 2)

0 commit comments

Comments
 (0)