From c8584cbd3d3faf731f9b9da8875cea7ce64f3187 Mon Sep 17 00:00:00 2001 From: Peter Chang Date: Mon, 6 Jul 2026 14:08:03 +0100 Subject: [PATCH] Reduce logging of validation errors from unpacking messages Only report errors when every model in union fails validation. Also fix typing glitch in simple demo script --- server/davidia/server/fastapi_utils.py | 9 +++++---- server/demos/simple.py | 8 +++++--- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/server/davidia/server/fastapi_utils.py b/server/davidia/server/fastapi_utils.py index 93a73cee..8ffde5f0 100644 --- a/server/davidia/server/fastapi_utils.py +++ b/server/davidia/server/fastapi_utils.py @@ -148,14 +148,15 @@ async def root_request(payload: MyModel) -> OtherModel: def _instantiate_obj(model_class, obj): if isinstance(model_class, UnionType): + excs = {} for m in get_args(model_class): try: return m.model_validate(obj) - except ValidationError: - logger.warning( - "Could not validate as %s: %s", m, obj, exc_info=True - ) + except ValidationError as e: + excs[m] = e logger.error("No valid models for", obj) + for m,e in excs.items(): + logger.error("%s: %s", m, e) return None if isinstance(obj, BaseModel): diff --git a/server/demos/simple.py b/server/demos/simple.py index 73394a0e..6853c381 100644 --- a/server/demos/simple.py +++ b/server/demos/simple.py @@ -1,3 +1,4 @@ +from davidia.models.selections import AnySelection from time import sleep import numpy as np @@ -179,8 +180,7 @@ def table_demo(p): def regions_demo(p): - region( - selections=[ + selections: list[AnySelection] = [ RectangularSelection( start=(3.5, 6.5), lengths=(3.2, 2.0), @@ -191,7 +191,9 @@ def regions_demo(p): LinearSelection( start=(6.9, 10.5), length=2.0, angle=1.1, colour="cyan", alpha=0.6 ), - ], + ] + region( + selections=selections, plot_id=f"plot_{p}", ) rs = region(plot_id=f"plot_{p}")