Skip to content

Commit 8e9d11c

Browse files
committed
CLN: Refactor Index names validation
1 parent 787ab55 commit 8e9d11c

File tree

2 files changed

+19
-14
lines changed

2 files changed

+19
-14
lines changed

pandas/core/indexes/base.py

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -785,7 +785,7 @@ def copy(self, name=None, deep=False, dtype=None, **kwargs):
785785
new_index = self._shallow_copy()
786786

787787
names = kwargs.get('names')
788-
names = self._validate_names(name=name, names=names, deep=deep)
788+
names = self._handle_names(name=name, names=names, deep=deep)
789789
new_index = new_index.set_names(names)
790790

791791
if dtype:
@@ -800,24 +800,29 @@ def __deepcopy__(self, memo=None):
800800
memo = {}
801801
return self.copy(deep=True)
802802

803-
def _validate_names(self, name=None, names=None, deep=False):
803+
def _handle_names(self, name=None, names=None, deep=False):
804804
"""
805805
Handles the quirks of having a singular 'name' parameter for general
806806
Index and plural 'names' parameter for MultiIndex.
807807
"""
808808
from copy import deepcopy
809-
if names is not None and name is not None:
810-
raise TypeError("Can only provide one of `names` and `name`")
811-
elif names is None and name is None:
809+
810+
if names is None and name is None:
812811
return deepcopy(self.names) if deep else self.names
813-
elif names is not None:
814-
if not is_list_like(names):
815-
raise TypeError("Must pass list-like as `names`.")
816-
return names
817-
else:
818-
if not is_list_like(name):
819-
return [name]
820-
return name
812+
813+
return self._validate_names(name=name, names=names)
814+
815+
def _validate_names(self, name=None, names=None):
816+
if names is not None and name is not None:
817+
raise TypeError("Can provide only one of names and name arguments")
818+
819+
if names is not None and not is_list_like(names):
820+
raise TypeError("names must be list-like")
821+
822+
if name is not None:
823+
return name if is_list_like(name) else [name]
824+
825+
return names
821826

822827
def __unicode__(self):
823828
"""

pandas/core/indexes/multi.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,7 @@ def copy(self, names=None, dtype=None, levels=None, labels=None,
428428
This could be potentially expensive on large MultiIndex objects.
429429
"""
430430
name = kwargs.get('name')
431-
names = self._validate_names(name=name, names=names, deep=deep)
431+
names = self._handle_names(name=name, names=names, deep=deep)
432432

433433
if deep:
434434
from copy import deepcopy

0 commit comments

Comments
 (0)