From 65245c74c06aea08b854dd9ea3755bdf81196136 Mon Sep 17 00:00:00 2001 From: Brock Date: Tue, 15 Aug 2023 09:48:59 -0700 Subject: [PATCH] REF: remove special-casing for IntervalDtype in Index._raise_if_missing --- pandas/core/indexes/base.py | 12 ------------ pandas/tests/indexing/interval/test_interval.py | 6 +++++- pandas/tests/indexing/interval/test_interval_new.py | 5 ++++- 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/pandas/core/indexes/base.py b/pandas/core/indexes/base.py index 288fd35892fd0..3d916acde971e 100644 --- a/pandas/core/indexes/base.py +++ b/pandas/core/indexes/base.py @@ -6159,19 +6159,7 @@ def _raise_if_missing(self, key, indexer, axis_name: str_t) -> None: nmissing = missing_mask.sum() if nmissing: - # TODO: remove special-case; this is just to keep exception - # message tests from raising while debugging - use_interval_msg = isinstance(self.dtype, IntervalDtype) or ( - isinstance(self.dtype, CategoricalDtype) - # "Index" has no attribute "categories" [attr-defined] - and isinstance( - self.categories.dtype, IntervalDtype # type: ignore[attr-defined] - ) - ) - if nmissing == len(indexer): - if use_interval_msg: - key = list(key) raise KeyError(f"None of [{key}] are in the [{axis_name}]") not_found = list(ensure_index(key)[missing_mask.nonzero()[0]].unique()) diff --git a/pandas/tests/indexing/interval/test_interval.py b/pandas/tests/indexing/interval/test_interval.py index 717cb7de42021..3a77d516d6a91 100644 --- a/pandas/tests/indexing/interval/test_interval.py +++ b/pandas/tests/indexing/interval/test_interval.py @@ -106,7 +106,11 @@ def test_loc_getitem_frame(self): expected = df.take([4, 5, 4, 5]) tm.assert_frame_equal(result, expected) - with pytest.raises(KeyError, match=r"None of \[\[10\]\] are"): + msg = ( + r"None of \[Index\(\[10\], dtype='object', name='B'\)\] " + r"are in the \[index\]" + ) + with pytest.raises(KeyError, match=msg): df.loc[[10]] # partial missing diff --git a/pandas/tests/indexing/interval/test_interval_new.py b/pandas/tests/indexing/interval/test_interval_new.py index 62f44a363f5f0..1aa62326e9071 100644 --- a/pandas/tests/indexing/interval/test_interval_new.py +++ b/pandas/tests/indexing/interval/test_interval_new.py @@ -149,7 +149,10 @@ def test_loc_with_overlap(self, indexer_sl): with pytest.raises(KeyError, match=re.escape("Interval(3, 5, closed='right')")): indexer_sl(ser)[Interval(3, 5)] - msg = r"None of \[\[Interval\(3, 5, closed='right'\)\]\]" + msg = ( + r"None of \[IntervalIndex\(\[\(3, 5\]\], " + r"dtype='interval\[int64, right\]'\)\] are in the \[index\]" + ) with pytest.raises(KeyError, match=msg): indexer_sl(ser)[[Interval(3, 5)]]