Skip to content

Commit cd7b608

Browse files
committed
Improved exception messages
1 parent b86ebba commit cd7b608

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
@@ -1410,7 +1410,7 @@ def __call__(self, renderer):
14101410
elif isinstance(self._artist, Transform):
14111411
x, y = self._artist.transform(self._ref_coord)
14121412
else:
1413-
raise RuntimeError("unknown type")
1413+
_api.check_isinstance((Artist, BboxBase, Transform), artist=self._artist)
14141414

14151415
sc = self._get_scale(renderer)
14161416
tr = Affine2D().scale(sc).translate(x, y)
@@ -1457,7 +1457,9 @@ def _get_xy_transform(self, renderer, s):
14571457
elif isinstance(tr, Transform):
14581458
return tr
14591459
else:
1460-
raise RuntimeError("Unknown return type")
1460+
raise RuntimeError(
1461+
f"Unexpected return type from callable: "
1462+
f"expected BboxBase or Transform, but got {type(tr).__name__}.")
14611463
elif isinstance(s, Artist):
14621464
bbox = s.get_window_extent(renderer)
14631465
return BboxTransformTo(bbox)
@@ -1466,7 +1468,9 @@ def _get_xy_transform(self, renderer, s):
14661468
elif isinstance(s, Transform):
14671469
return s
14681470
elif not isinstance(s, str):
1469-
raise RuntimeError(f"Unknown coordinate type: {s!r}")
1471+
raise RuntimeError(
1472+
f"Unexpected type for 'xycoords'. This must be one of str, (str, str), "
1473+
f"Artist, Transform, or callable, but got {type(s).__name__}.")
14701474

14711475
if s == 'data':
14721476
return self.axes.transData
@@ -1478,7 +1482,7 @@ def _get_xy_transform(self, renderer, s):
14781482

14791483
s_ = s.split()
14801484
if len(s_) != 2:
1481-
raise ValueError(f"{s!r} is not a recognized coordinate")
1485+
raise ValueError(f"{s!r} is not a valid coordinate")
14821486

14831487
bbox0, xy0 = None, None
14841488

@@ -1523,7 +1527,7 @@ def _get_xy_transform(self, renderer, s):
15231527
return tr.translate(ref_x, ref_y)
15241528

15251529
else:
1526-
raise ValueError(f"{s!r} is not a recognized coordinate")
1530+
raise ValueError(f"{s!r} is not a valid coordinate")
15271531

15281532
def _get_ref_xy(self, renderer):
15291533
"""
@@ -2009,7 +2013,7 @@ def get_window_extent(self, renderer=None):
20092013
if self._renderer is None:
20102014
self._renderer = self.figure._get_renderer()
20112015
if self._renderer is None:
2012-
raise RuntimeError('Cannot get window extent w/o renderer')
2016+
raise RuntimeError('Cannot get window extent without renderer')
20132017

20142018
self.update_positions(self._renderer)
20152019

0 commit comments

Comments
 (0)