Skip to content

Commit 3e98838

Browse files
authored
Merge pull request #25687 from timhoffm/text-warnings
More informative exception messages
2 parents e31d8ed + cd7b608 commit 3e98838

File tree

2 files changed

+14
-10
lines changed

2 files changed

+14
-10
lines changed

lib/matplotlib/tests/test_text.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -248,10 +248,10 @@ def test_annotation_contains():
248248

249249

250250
@pytest.mark.parametrize('err, xycoords, match', (
251-
(RuntimeError, print, "Unknown return type"),
252-
(RuntimeError, [0, 0], r"Unknown coordinate type: \[0, 0\]"),
253-
(ValueError, "foo", "'foo' is not a recognized coordinate"),
254-
(ValueError, "foo bar", "'foo bar' is not a recognized coordinate"),
251+
(RuntimeError, print, "Unexpected return type from callable"),
252+
(RuntimeError, [0, 0], r"Unexpected type for 'xycoords'"),
253+
(ValueError, "foo", "'foo' is not a valid coordinate"),
254+
(ValueError, "foo bar", "'foo bar' is not a valid coordinate"),
255255
(ValueError, "offset foo", "xycoords cannot be an offset coordinate"),
256256
(ValueError, "axes foo", "'foo' is not a recognized unit"),
257257
))

lib/matplotlib/text.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1411,7 +1411,7 @@ def __call__(self, renderer):
14111411
elif isinstance(self._artist, Transform):
14121412
x, y = self._artist.transform(self._ref_coord)
14131413
else:
1414-
raise RuntimeError("unknown type")
1414+
_api.check_isinstance((Artist, BboxBase, Transform), artist=self._artist)
14151415

14161416
sc = self._get_scale(renderer)
14171417
tr = Affine2D().scale(sc).translate(x, y)
@@ -1458,7 +1458,9 @@ def _get_xy_transform(self, renderer, s):
14581458
elif isinstance(tr, Transform):
14591459
return tr
14601460
else:
1461-
raise RuntimeError("Unknown return type")
1461+
raise RuntimeError(
1462+
f"Unexpected return type from callable: "
1463+
f"expected BboxBase or Transform, but got {type(tr).__name__}.")
14621464
elif isinstance(s, Artist):
14631465
bbox = s.get_window_extent(renderer)
14641466
return BboxTransformTo(bbox)
@@ -1467,7 +1469,9 @@ def _get_xy_transform(self, renderer, s):
14671469
elif isinstance(s, Transform):
14681470
return s
14691471
elif not isinstance(s, str):
1470-
raise RuntimeError(f"Unknown coordinate type: {s!r}")
1472+
raise RuntimeError(
1473+
f"Unexpected type for 'xycoords'. This must be one of str, (str, str), "
1474+
f"Artist, Transform, or callable, but got {type(s).__name__}.")
14711475

14721476
if s == 'data':
14731477
return self.axes.transData
@@ -1479,7 +1483,7 @@ def _get_xy_transform(self, renderer, s):
14791483

14801484
s_ = s.split()
14811485
if len(s_) != 2:
1482-
raise ValueError(f"{s!r} is not a recognized coordinate")
1486+
raise ValueError(f"{s!r} is not a valid coordinate")
14831487

14841488
bbox0, xy0 = None, None
14851489

@@ -1524,7 +1528,7 @@ def _get_xy_transform(self, renderer, s):
15241528
return tr.translate(ref_x, ref_y)
15251529

15261530
else:
1527-
raise ValueError(f"{s!r} is not a recognized coordinate")
1531+
raise ValueError(f"{s!r} is not a valid coordinate")
15281532

15291533
def _get_ref_xy(self, renderer):
15301534
"""
@@ -2010,7 +2014,7 @@ def get_window_extent(self, renderer=None):
20102014
if self._renderer is None:
20112015
self._renderer = self.figure._get_renderer()
20122016
if self._renderer is None:
2013-
raise RuntimeError('Cannot get window extent w/o renderer')
2017+
raise RuntimeError('Cannot get window extent without renderer')
20142018

20152019
self.update_positions(self._renderer)
20162020

0 commit comments

Comments
 (0)