Skip to content

Commit 1b8b444

Browse files
committed
Show list of names in error message of PandasMultiIndex.sel, update test
1 parent 3a28941 commit 1b8b444

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

xarray/core/indexes.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1196,12 +1196,12 @@ def sel(self, labels, method=None, tolerance=None) -> IndexSelResult:
11961196
coord_name, label = next(iter(labels.items()))
11971197

11981198
if is_dict_like(label):
1199-
invalid_levels = [
1199+
invalid_levels = tuple(
12001200
name for name in label if name not in self.index.names
1201-
]
1201+
)
12021202
if invalid_levels:
12031203
raise ValueError(
1204-
f"invalid multi-index level names {invalid_levels}"
1204+
f"multi-index level names {invalid_levels} not found in indexes {tuple(self.index.names)}"
12051205
)
12061206
return self.sel(label)
12071207

xarray/tests/test_indexes.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -482,7 +482,10 @@ def test_sel(self) -> None:
482482
index.sel({"x": 0})
483483
with pytest.raises(ValueError, match=r"cannot provide labels for both.*"):
484484
index.sel({"one": 0, "x": "a"})
485-
with pytest.raises(ValueError, match=r"invalid multi-index level names"):
485+
with pytest.raises(
486+
ValueError,
487+
match=r"multi-index level names \('three',\) not found in indexes",
488+
):
486489
index.sel({"x": {"three": 0}})
487490
with pytest.raises(IndexError):
488491
index.sel({"x": (slice(None), 1, "no_level")})

0 commit comments

Comments
 (0)