From bb16fcc4d5a3f7fd5f9b83aa69b632a8dd1357f1 Mon Sep 17 00:00:00 2001 From: Brock Date: Mon, 2 Aug 2021 07:38:42 -0700 Subject: [PATCH 1/2] REF: date arg not reachable in DTI._maybe_cast_slice_bound --- pandas/core/indexes/datetimes.py | 2 +- pandas/tests/indexes/datetimes/test_indexing.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pandas/core/indexes/datetimes.py b/pandas/core/indexes/datetimes.py index 9712a5d95a234..b09854347ecd4 100644 --- a/pandas/core/indexes/datetimes.py +++ b/pandas/core/indexes/datetimes.py @@ -722,7 +722,7 @@ def _maybe_cast_slice_bound(self, label, side: str, kind=lib.no_default): if self._is_strictly_monotonic_decreasing and len(self) > 1: return upper if side == "left" else lower return lower if side == "left" else upper - elif isinstance(label, (self._data._recognized_scalars, date)): + elif isinstance(label, self._data._recognized_scalars): self._deprecate_mismatched_indexing(label) else: raise self._invalid_indexer("slice", label) diff --git a/pandas/tests/indexes/datetimes/test_indexing.py b/pandas/tests/indexes/datetimes/test_indexing.py index d705fa7f0ed2c..6eaf799ae2779 100644 --- a/pandas/tests/indexes/datetimes/test_indexing.py +++ b/pandas/tests/indexes/datetimes/test_indexing.py @@ -746,7 +746,7 @@ def test_get_slice_bounds_datetime_within( result = index.get_slice_bound(key, kind=kind, side=side) assert result == expected - @pytest.mark.parametrize("box", [date, datetime, Timestamp]) + @pytest.mark.parametrize("box", [datetime, Timestamp]) @pytest.mark.parametrize("kind", ["getitem", "loc", None]) @pytest.mark.parametrize("side", ["left", "right"]) @pytest.mark.parametrize("year, expected", [(1999, 0), (2020, 30)]) @@ -764,7 +764,7 @@ def test_get_slice_bounds_datetime_outside( result = index.get_slice_bound(key, kind=kind, side=side) assert result == expected - @pytest.mark.parametrize("box", [date, datetime, Timestamp]) + @pytest.mark.parametrize("box", [datetime, Timestamp]) @pytest.mark.parametrize("kind", ["getitem", "loc", None]) def test_slice_datetime_locs(self, box, kind, tz_aware_fixture): # GH 34077 From 26dee19f247755a0e539a9692a5475fae9a32d29 Mon Sep 17 00:00:00 2001 From: Brock Date: Mon, 2 Aug 2021 10:01:31 -0700 Subject: [PATCH 2/2] handle slice_locs --- pandas/core/indexes/datetimes.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pandas/core/indexes/datetimes.py b/pandas/core/indexes/datetimes.py index b09854347ecd4..8a181e856b27f 100644 --- a/pandas/core/indexes/datetimes.py +++ b/pandas/core/indexes/datetimes.py @@ -800,6 +800,13 @@ def check_str_or_none(point): else: return indexer + @doc(Index.get_slice_bound) + def get_slice_bound(self, label, side: str, kind=None) -> int: + # GH#42855 handle date here instead of _maybe_cast_slice_bound + if isinstance(label, date) and not isinstance(label, datetime): + label = Timestamp(label).to_pydatetime() + return super().get_slice_bound(label, side=side, kind=kind) + # -------------------------------------------------------------------- @property