From 94b2855b4940674cb96097808094f06ba8392ce4 Mon Sep 17 00:00:00 2001 From: "J.J. Allaire" Date: Sat, 5 Oct 2024 07:03:32 +0100 Subject: [PATCH] improved error message for undecorated solvers --- CHANGELOG.md | 1 + src/inspect_ai/_util/registry.py | 10 +++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 125b868d1..3c6d633df 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ - Add optional `content` parameter to `ModelOutput.for_tool_call()`. - Display total samples in Inspect View - Prune `sample_reductions` when returning eval logs with `header_only=True`. +- Improved error message for undecorated solvers. - For simple matching scorers, only include explanation if it differs from answer. ## v0.3.39 (3 October 2024) diff --git a/src/inspect_ai/_util/registry.py b/src/inspect_ai/_util/registry.py index 90cf98ddb..f60c73f2d 100644 --- a/src/inspect_ai/_util/registry.py +++ b/src/inspect_ai/_util/registry.py @@ -233,11 +233,15 @@ def registry_info(o: object) -> RegistryInfo: Returns: RegistryInfo for object. """ - info = getattr(o, REGISTRY_INFO) - if info: + info = getattr(o, REGISTRY_INFO, None) + if info is not None: return cast(RegistryInfo, info) else: - raise ValueError("Object does not have registry info") + name = getattr(o, "__name__", "unknown") + decorator = " @solver " if name == "solve" else "" + raise ValueError( + f"Object '{name}' does not have registry info. Did you forget to add a{decorator}decorator somewhere?" + ) def registry_params(o: object) -> dict[str, Any]: