@@ -785,7 +785,13 @@ 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
+
789
+ if name is None and names is None :
790
+ from copy import deepcopy
791
+ names = deepcopy (self .names ) if deep else self .names
792
+ else :
793
+ names = self ._validate_names (name = name , names = names )
794
+
789
795
new_index = new_index .set_names (names )
790
796
791
797
if dtype :
@@ -800,24 +806,21 @@ def __deepcopy__(self, memo=None):
800
806
memo = {}
801
807
return self .copy (deep = True )
802
808
803
- def _validate_names (self , name = None , names = None , deep = False ):
809
+ def _validate_names (self , name = None , names = None ):
804
810
"""
805
- Handles the quirks of having a singular ' name' parameter for general
806
- Index and plural 'names' parameter for MultiIndex .
811
+ Returns valid `names` considering both `names` and ` name`
812
+ or raises TypeError in case of wrong arguments passed .
807
813
"""
808
- from copy import deepcopy
809
814
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 :
812
- 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
815
+ raise TypeError ("Can provide only one of names and name arguments" )
816
+
817
+ if names is not None and not is_list_like (names ):
818
+ raise TypeError ("names must be list-like" )
819
+
820
+ if name is not None :
821
+ return name if is_list_like (name ) else [name ]
822
+
823
+ return names
821
824
822
825
def __unicode__ (self ):
823
826
"""
0 commit comments