From 8c7f7f321d887e7cb8b999b65e21ba1aae0be90a Mon Sep 17 00:00:00 2001 From: thefechner <76476432+thefechner@users.noreply.github.com> Date: Sun, 5 Apr 2026 21:58:47 +0200 Subject: [PATCH] fix: catch AttributeError in validate_data to allow Union fallthrough for non-DataFrame inputs (#993) * fix: catch AttributeError in validate_data for non-DataFrame Union types PUT /v1/prediction/import/{provider_id} crashed with AttributeError when Union validator tried PydanticDateTimeDataFrame validation on scalar float/int values. Instead of falling through to DateTimeData or dict, the exception propagated as 500. Fixes #992. * fix: correct indentation of ValueError in validate_data --------- Co-authored-by: Normann --- src/akkudoktoreos/core/pydantic.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/akkudoktoreos/core/pydantic.py b/src/akkudoktoreos/core/pydantic.py index 6ab672e..18a6a07 100644 --- a/src/akkudoktoreos/core/pydantic.py +++ b/src/akkudoktoreos/core/pydantic.py @@ -1023,7 +1023,12 @@ class PydanticDateTimeDataFrame(PydanticBaseModel): return v # Validate consistent columns - columns = set(next(iter(v.values())).keys()) + try: + columns = set(next(iter(v.values())).keys()) + except AttributeError: + raise ValueError( + "Data values must be dicts (DataFrame format), not scalars. Use DateTimeData or DateTimeSeries format instead." + ) if not all(set(row.keys()) == columns for row in v.values()): raise ValueError("All rows must have the same columns")