@@ -987,12 +987,38 @@ def _constructor(self):
987
987
return MultiIndex .from_tuples
988
988
989
989
@Appender (Index ._shallow_copy .__doc__ )
990
- def _shallow_copy (self , values = None , ** kwargs ):
990
+ def _shallow_copy (
991
+ self ,
992
+ values = None ,
993
+ name = lib .no_default ,
994
+ levels = None ,
995
+ codes = None ,
996
+ dtype = None ,
997
+ sortorder = None ,
998
+ names = lib .no_default ,
999
+ _set_identity : bool = True ,
1000
+ ):
1001
+ if names is not lib .no_default and name is not lib .no_default :
1002
+ raise TypeError ("Can only provide one of `names` and `name`" )
1003
+ elif names is lib .no_default :
1004
+ names = name if name is not lib .no_default else self .names
1005
+
991
1006
if values is not None :
992
- names = kwargs .pop ("names" , kwargs .pop ("name" , self .names ))
993
- return MultiIndex .from_tuples (values , names = names , ** kwargs )
1007
+ assert levels is None and codes is None and dtype is None
1008
+ return MultiIndex .from_tuples (values , sortorder = sortorder , names = names )
1009
+
1010
+ levels = levels if levels is not None else self .levels
1011
+ codes = codes if codes is not None else self .codes
994
1012
995
- result = self .copy (** kwargs )
1013
+ result = MultiIndex (
1014
+ levels = levels ,
1015
+ codes = codes ,
1016
+ dtype = dtype ,
1017
+ sortorder = sortorder ,
1018
+ names = names ,
1019
+ verify_integrity = False ,
1020
+ _set_identity = _set_identity ,
1021
+ )
996
1022
result ._cache = self ._cache .copy ()
997
1023
result ._cache .pop ("levels" , None ) # GH32669
998
1024
return result
@@ -1052,17 +1078,13 @@ def copy(
1052
1078
levels = deepcopy (self .levels )
1053
1079
if codes is None :
1054
1080
codes = deepcopy (self .codes )
1055
- else :
1056
- if levels is None :
1057
- levels = self .levels
1058
- if codes is None :
1059
- codes = self .codes
1060
- return MultiIndex (
1081
+
1082
+ return self ._shallow_copy (
1061
1083
levels = levels ,
1062
1084
codes = codes ,
1063
1085
names = names ,
1086
+ dtype = dtype ,
1064
1087
sortorder = self .sortorder ,
1065
- verify_integrity = False ,
1066
1088
_set_identity = _set_identity ,
1067
1089
)
1068
1090
0 commit comments