@@ -164,7 +164,7 @@ def _slice(self, obj, axis: int, kind=None):
164
164
165
165
def _get_setitem_indexer (self , key ):
166
166
if self .axis is not None :
167
- return self ._convert_tuple (key , is_setter = True )
167
+ return self ._convert_tuple (key )
168
168
169
169
ax = self .obj ._get_axis (0 )
170
170
@@ -176,7 +176,7 @@ def _get_setitem_indexer(self, key):
176
176
177
177
if isinstance (key , tuple ):
178
178
try :
179
- return self ._convert_tuple (key , is_setter = True )
179
+ return self ._convert_tuple (key )
180
180
except IndexingError :
181
181
pass
182
182
@@ -185,7 +185,7 @@ def _get_setitem_indexer(self, key):
185
185
186
186
axis = self .axis or 0
187
187
try :
188
- return self ._convert_to_indexer (key , axis = axis , is_setter = True )
188
+ return self ._convert_to_indexer (key , axis = axis )
189
189
except TypeError as e :
190
190
191
191
# invalid indexer type vs 'other' indexing errors
@@ -241,22 +241,20 @@ def _is_nested_tuple_indexer(self, tup: Tuple):
241
241
return any (is_nested_tuple (tup , ax ) for ax in self .obj .axes )
242
242
return False
243
243
244
- def _convert_tuple (self , key , is_setter : bool = False ):
244
+ def _convert_tuple (self , key ):
245
245
keyidx = []
246
246
if self .axis is not None :
247
247
axis = self .obj ._get_axis_number (self .axis )
248
248
for i in range (self .ndim ):
249
249
if i == axis :
250
- keyidx .append (
251
- self ._convert_to_indexer (key , axis = axis , is_setter = is_setter )
252
- )
250
+ keyidx .append (self ._convert_to_indexer (key , axis = axis ))
253
251
else :
254
252
keyidx .append (slice (None ))
255
253
else :
256
254
for i , k in enumerate (key ):
257
255
if i >= self .ndim :
258
256
raise IndexingError ("Too many indexers" )
259
- idx = self ._convert_to_indexer (k , axis = i , is_setter = is_setter )
257
+ idx = self ._convert_to_indexer (k , axis = i )
260
258
keyidx .append (idx )
261
259
return tuple (keyidx )
262
260
@@ -1184,9 +1182,7 @@ def _validate_read_indexer(
1184
1182
if not (ax .is_categorical () or ax .is_interval ()):
1185
1183
warnings .warn (_missing_key_warning , FutureWarning , stacklevel = 6 )
1186
1184
1187
- def _convert_to_indexer (
1188
- self , obj , axis : int , is_setter : bool = False , raise_missing : bool = False
1189
- ):
1185
+ def _convert_to_indexer (self , obj , axis : int , raise_missing : bool = False ):
1190
1186
"""
1191
1187
Convert indexing key into something we can use to do actual fancy
1192
1188
indexing on an ndarray
@@ -1210,10 +1206,8 @@ def _convert_to_indexer(
1210
1206
try :
1211
1207
obj = self ._convert_scalar_indexer (obj , axis )
1212
1208
except TypeError :
1213
-
1214
1209
# but we will allow setting
1215
- if is_setter :
1216
- pass
1210
+ pass
1217
1211
1218
1212
# see if we are positional in nature
1219
1213
is_int_index = labels .is_integer ()
@@ -1224,7 +1218,7 @@ def _convert_to_indexer(
1224
1218
return labels .get_loc (obj )
1225
1219
except LookupError :
1226
1220
if isinstance (obj , tuple ) and isinstance (labels , MultiIndex ):
1227
- if is_setter and len (obj ) == labels .nlevels :
1221
+ if len (obj ) == labels .nlevels :
1228
1222
return {"key" : obj }
1229
1223
raise
1230
1224
except TypeError :
@@ -1238,17 +1232,14 @@ def _convert_to_indexer(
1238
1232
1239
1233
# if we are setting and its not a valid location
1240
1234
# its an insert which fails by definition
1241
- if is_setter :
1242
1235
1236
+ if self .name == "loc" :
1243
1237
# always valid
1244
- if self .name == "loc" :
1245
- return {"key" : obj }
1238
+ return {"key" : obj }
1246
1239
1240
+ if obj >= self .obj .shape [axis ] and not isinstance (labels , MultiIndex ):
1247
1241
# a positional
1248
- if obj >= self .obj .shape [axis ] and not isinstance (labels , MultiIndex ):
1249
- raise ValueError (
1250
- "cannot set by positional indexing with enlargement"
1251
- )
1242
+ raise ValueError ("cannot set by positional indexing with enlargement" )
1252
1243
1253
1244
return obj
1254
1245
@@ -1263,14 +1254,13 @@ def _convert_to_indexer(
1263
1254
return inds
1264
1255
else :
1265
1256
# When setting, missing keys are not allowed, even with .loc:
1266
- kwargs = {"raise_missing" : True if is_setter else raise_missing }
1267
- return self ._get_listlike_indexer (obj , axis , ** kwargs )[1 ]
1257
+ return self ._get_listlike_indexer (obj , axis , raise_missing = True )[1 ]
1268
1258
else :
1269
1259
try :
1270
1260
return labels .get_loc (obj )
1271
1261
except LookupError :
1272
1262
# allow a not found key only if we are a setter
1273
- if not is_list_like_indexer (obj ) and is_setter :
1263
+ if not is_list_like_indexer (obj ):
1274
1264
return {"key" : obj }
1275
1265
raise
1276
1266
@@ -2127,9 +2117,7 @@ def _getitem_axis(self, key, axis: int):
2127
2117
return self ._get_loc (key , axis = axis )
2128
2118
2129
2119
# raise_missing is included for compat with the parent class signature
2130
- def _convert_to_indexer (
2131
- self , obj , axis : int , is_setter : bool = False , raise_missing : bool = False
2132
- ):
2120
+ def _convert_to_indexer (self , obj , axis : int , raise_missing : bool = False ):
2133
2121
""" much simpler as we only have to deal with our valid types """
2134
2122
2135
2123
# make need to convert a float key
0 commit comments