From 65344ee1a0c0bfd16640c04a9da13730a6bc2c34 Mon Sep 17 00:00:00 2001 From: Giles Knap Date: Fri, 24 May 2024 16:11:09 +0000 Subject: [PATCH] report failing file on pydantic deserialise error --- src/ibek/entity_factory.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/ibek/entity_factory.py b/src/ibek/entity_factory.py index 06239d2bb..16c4a47f3 100644 --- a/src/ibek/entity_factory.py +++ b/src/ibek/entity_factory.py @@ -10,7 +10,7 @@ from pydantic import create_model, field_validator from pydantic.fields import FieldInfo -from pydantic_core import PydanticUndefined +from pydantic_core import PydanticUndefined, ValidationError from ruamel.yaml.main import YAML from .args import EnumArg, IdArg, ObjectArg @@ -41,12 +41,16 @@ def make_entity_models(self, definition_yaml: List[Path]) -> List[Type[Entity]]: for definition in definition_yaml: support_dict = YAML(typ="safe").load(definition) - Support.model_validate(support_dict) + try: + Support.model_validate(support_dict) - # deserialize the support module definition file - support = Support(**support_dict) - # make Entity classes described in the support module definition file - self._make_entity_models(support) + # deserialize the support module definition file + support = Support(**support_dict) + # make Entity classes described in the support module definition file + self._make_entity_models(support) + except ValidationError: + print(f"PYDANTIC VALIDATION ERROR IN {definition}") + raise return list(self._entity_models.values())