@@ -785,7 +785,7 @@ def copy(self, name=None, deep=False, dtype=None, **kwargs):
785
785
new_index = self ._shallow_copy ()
786
786
787
787
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 )
789
789
new_index = new_index .set_names (names )
790
790
791
791
if dtype :
@@ -800,24 +800,29 @@ def __deepcopy__(self, memo=None):
800
800
memo = {}
801
801
return self .copy (deep = True )
802
802
803
- def _validate_names (self , name = None , names = None , deep = False ):
803
+ def _handle_names (self , name = None , names = None , deep = False ):
804
804
"""
805
805
Handles the quirks of having a singular 'name' parameter for general
806
806
Index and plural 'names' parameter for MultiIndex.
807
807
"""
808
808
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 :
812
811
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
821
826
822
827
def __unicode__ (self ):
823
828
"""
0 commit comments