in core/maxframe/dataframe/indexing/loc.py [0:0]
def _use_iloc(self, indexes):
# for RangeIndex from 0, use iloc instead of loc
index_value = self._obj.index_value.value
if len(indexes) == 2:
if not isinstance(indexes[1], slice):
return False, None
elif indexes[1] != slice(None):
return False, None
if not isinstance(index_value, IndexValue.RangeIndex):
return False, None
if index_value.slice.start != 0 and index_value.slice.start is not None:
return False, None
if not isinstance(indexes[0], (Integral, slice)):
return False, None
if isinstance(indexes[0], Integral):
if indexes[0] < 0:
return False, None
else:
index0 = indexes[0]
for v in (index0.start, index0.stop, index0.step):
if v is None:
continue
if not isinstance(v, Integral):
return False, None
if v < 0:
return False, None
if index0.stop is not None:
# adjust slice right bound
return (
True,
[slice(index0.start, index0.stop + 1, index0.step)] + indexes[1:],
)
return True, None