diff --git a/pandas/core/indexes/base.py b/pandas/core/indexes/base.py index 3713eb6da60ac..f336eec8c4cce 100644 --- a/pandas/core/indexes/base.py +++ b/pandas/core/indexes/base.py @@ -4994,7 +4994,7 @@ def isin(self, values, level=None): self._validate_index_level(level) return algos.isin(self, values) - def _get_string_slice(self, key: str_t, use_lhs: bool = True, use_rhs: bool = True): + def _get_string_slice(self, key: str_t): # this is for partial string indexing, # overridden in DatetimeIndex, TimedeltaIndex and PeriodIndex raise NotImplementedError diff --git a/pandas/core/indexes/datetimelike.py b/pandas/core/indexes/datetimelike.py index 017dc6527944a..d6d8cb267e06b 100644 --- a/pandas/core/indexes/datetimelike.py +++ b/pandas/core/indexes/datetimelike.py @@ -398,16 +398,12 @@ def _partial_date_slice( self, reso: Resolution, parsed: datetime, - use_lhs: bool = True, - use_rhs: bool = True, ): """ Parameters ---------- reso : Resolution parsed : datetime - use_lhs : bool, default True - use_rhs : bool, default True Returns ------- @@ -422,8 +418,7 @@ def _partial_date_slice( if self.is_monotonic: if len(self) and ( - (use_lhs and t1 < self[0] and t2 < self[0]) - or (use_rhs and t1 > self[-1] and t2 > self[-1]) + (t1 < self[0] and t2 < self[0]) or (t1 > self[-1] and t2 > self[-1]) ): # we are out of range raise KeyError @@ -432,13 +427,13 @@ def _partial_date_slice( # a monotonic (sorted) series can be sliced # Use asi8.searchsorted to avoid re-validating Periods/Timestamps - left = i8vals.searchsorted(unbox(t1), side="left") if use_lhs else None - right = i8vals.searchsorted(unbox(t2), side="right") if use_rhs else None + left = i8vals.searchsorted(unbox(t1), side="left") + right = i8vals.searchsorted(unbox(t2), side="right") return slice(left, right) else: - lhs_mask = (i8vals >= unbox(t1)) if use_lhs else True - rhs_mask = (i8vals <= unbox(t2)) if use_rhs else True + lhs_mask = i8vals >= unbox(t1) + rhs_mask = i8vals <= unbox(t2) # try to find the dates return (lhs_mask & rhs_mask).nonzero()[0] diff --git a/pandas/core/indexes/datetimes.py b/pandas/core/indexes/datetimes.py index 479e2023a00cb..11417e0b3317e 100644 --- a/pandas/core/indexes/datetimes.py +++ b/pandas/core/indexes/datetimes.py @@ -729,11 +729,11 @@ def _maybe_cast_slice_bound(self, label, side: str, kind): self._deprecate_mismatched_indexing(label) return self._maybe_cast_for_get_loc(label) - def _get_string_slice(self, key: str, use_lhs: bool = True, use_rhs: bool = True): + def _get_string_slice(self, key: str): freq = getattr(self, "freqstr", getattr(self, "inferred_freq", None)) parsed, reso = parsing.parse_time_string(key, freq) reso = Resolution.from_attrname(reso) - loc = self._partial_date_slice(reso, parsed, use_lhs=use_lhs, use_rhs=use_rhs) + loc = self._partial_date_slice(reso, parsed) return loc def slice_indexer(self, start=None, end=None, step=None, kind=None): diff --git a/pandas/core/indexes/period.py b/pandas/core/indexes/period.py index ce2839ab9a8e1..4f92bb7bd7a87 100644 --- a/pandas/core/indexes/period.py +++ b/pandas/core/indexes/period.py @@ -622,12 +622,11 @@ def _validate_partial_date_slice(self, reso: Resolution): # why is that check not needed? raise ValueError - def _get_string_slice(self, key: str, use_lhs: bool = True, use_rhs: bool = True): - # TODO: Check for non-True use_lhs/use_rhs + def _get_string_slice(self, key: str): parsed, reso = parse_time_string(key, self.freq) reso = Resolution.from_attrname(reso) try: - return self._partial_date_slice(reso, parsed, use_lhs, use_rhs) + return self._partial_date_slice(reso, parsed) except KeyError as err: raise KeyError(key) from err