From 8d4b30395fc532297bd4bf8271576e8d31203906 Mon Sep 17 00:00:00 2001 From: Prajval Arora Date: Tue, 13 Oct 2026 16:27:10 -0700 Subject: [PATCH 1/2] fix: report valid color lookup values clearly --- src/machinevisiontoolbox/base/color.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/machinevisiontoolbox/base/color.py b/src/machinevisiontoolbox/base/color.py index 66964563..479a1779 100755 --- a/src/machinevisiontoolbox/base/color.py +++ b/src/machinevisiontoolbox/base/color.py @@ -963,20 +963,20 @@ def XYZ2RGBxform( if isinstance(white, str): try: white_xy = np.array(_whites[white.lower()]) - except: + except KeyError as exc: raise ValueError( - "unknown white value, must be one of" ", ".join(_whites.keys()) - ) + f"unknown white value, must be one of {', '.join(_whites)}" + ) from exc else: white_xy = smb.getvector(white, 2) if isinstance(primaries, str): try: primary_xy = _xy_primaries[primaries.lower()] - except: + except KeyError as exc: raise ValueError( - "unknown primary value, must be one of" ", ".join(_xy_primaries.keys()) - ) + f"unknown primary value, must be one of {', '.join(_xy_primaries)}" + ) from exc else: primary_xy = smb.getmatrix(primaries, (3, 2)) From 6a3c9dae5fd3288d7448a4ea7457c504634e21a2 Mon Sep 17 00:00:00 2001 From: Prajval Arora Date: Tue, 13 Oct 2026 16:27:33 -0700 Subject: [PATCH 2/2] test: cover invalid color lookup messages --- tests/test_color_lookup_errors.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 tests/test_color_lookup_errors.py diff --git a/tests/test_color_lookup_errors.py b/tests/test_color_lookup_errors.py new file mode 100644 index 00000000..6c179db3 --- /dev/null +++ b/tests/test_color_lookup_errors.py @@ -0,0 +1,24 @@ +import unittest + +from machinevisiontoolbox.base.color import XYZ2RGBxform + + +class TestColorLookupErrors(unittest.TestCase): + def test_unknown_white_lists_supported_values(self): + """Report supported white points once, separated by commas.""" + with self.assertRaises(ValueError) as raised: + XYZ2RGBxform(white="unknown") + self.assertEqual( + str(raised.exception), "unknown white value, must be one of d65, e" + ) + self.assertIsInstance(raised.exception.__cause__, KeyError) + + def test_unknown_primaries_lists_supported_values(self): + """Report supported primaries once, separated by commas.""" + with self.assertRaises(ValueError) as raised: + XYZ2RGBxform(primaries="unknown") + self.assertEqual( + str(raised.exception), + "unknown primary value, must be one of itu-709, cie, srgb", + ) + self.assertIsInstance(raised.exception.__cause__, KeyError)