From 9b2f169717938259eae614f06039a8640a1f24ad Mon Sep 17 00:00:00 2001 From: Bortlesboat <169967362+Bortlesboat@users.noreply.github.com> Date: Tue, 8 Sep 2026 13:30:53 -0400 Subject: [PATCH] fix: return ExactMatch mismatches for non-JSON primitives --- py/autoevals/test_values.py | 10 +++++++++- py/autoevals/value.py | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/py/autoevals/test_values.py b/py/autoevals/test_values.py index 25bd6f24..d47c821c 100644 --- a/py/autoevals/test_values.py +++ b/py/autoevals/test_values.py @@ -1,4 +1,4 @@ -from pytest import approx +from pytest import approx, mark from autoevals.list import ListContains from autoevals.number import NumericDiff @@ -105,3 +105,11 @@ def test_exact_match(): expected, expected_score, ) + + +@mark.parametrize("reference", [{"amount": 100}, [100]]) +@mark.parametrize("non_json", [None, True, 100, 1.5]) +def test_exact_match_json_and_non_json_values(reference, non_json): + evaluator = ExactMatch() + assert evaluator(output=non_json, expected=reference).score == 0 + assert evaluator(output=reference, expected=non_json).score == 0 diff --git a/py/autoevals/value.py b/py/autoevals/value.py index 72117876..69757248 100644 --- a/py/autoevals/value.py +++ b/py/autoevals/value.py @@ -84,7 +84,7 @@ def normalize_value(value: Any, maybe_object: bool) -> str: try: if maybe_object: return json.dumps(json.loads(value)) - except json.JSONDecodeError: + except (json.JSONDecodeError, TypeError): pass return str(value)