@@ -23,13 +23,14 @@ class RangeIndex(Int64Index):
23
23
24
24
Parameters
25
25
----------
26
- start : int (default: 0)
26
+ start : int (default: 0), or other RangeIndex instance.
27
+ If int and "stop" is not given, interpreted as "stop" instead.
27
28
stop : int (default: 0)
28
29
step : int (default: 1)
29
30
name : object, optional
30
31
Name to be stored in the index
31
32
copy : bool, default False
32
- Make a copy of input if its a RangeIndex
33
+ Unused, accepted for homogeneity with other index types.
33
34
34
35
"""
35
36
@@ -46,20 +47,17 @@ def __new__(cls, start=None, stop=None, step=None, name=None, dtype=None,
46
47
47
48
# RangeIndex
48
49
if isinstance (start , RangeIndex ):
49
- if not copy :
50
- return start
51
50
if name is None :
52
- name = getattr (start , 'name' , None )
53
- start , stop , step = start ._start , start ._stop , start ._step
51
+ name = start .name
52
+ return cls ._simple_new (name = name ,
53
+ ** dict (start ._get_data_as_items ()))
54
54
55
55
# validate the arguments
56
56
def _ensure_int (value , field ):
57
57
try :
58
58
new_value = int (value )
59
- except :
60
- new_value = value
61
-
62
- if not com .is_integer (new_value ) or new_value != value :
59
+ assert (new_value == value )
60
+ except (ValueError , AssertionError ):
63
61
raise TypeError ("RangeIndex(...) must be called with integers,"
64
62
" {value} was passed for {field}" .format (
65
63
value = type (value ).__name__ ,
0 commit comments