From 68c2bb56d5589b1ac896aac1e542d17a0512598a Mon Sep 17 00:00:00 2001 From: Brian Bjarke Jensen Date: Sun, 17 Mar 2024 10:47:50 +0100 Subject: [PATCH] added definition of final model data --- core/dto/model_data.py | 44 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 core/dto/model_data.py diff --git a/core/dto/model_data.py b/core/dto/model_data.py new file mode 100644 index 0000000..a2baa75 --- /dev/null +++ b/core/dto/model_data.py @@ -0,0 +1,44 @@ +from __future__ import annotations + +from pydantic import BaseModel + +from .angle import AngleData +from .contact import ContactData +from .distance import DistanceData +from .framing import FramingData +from .information_value import InformationValueData +from .modality_color import ModalityColorData +from .modality_depth import ModalityDepthData +from .modality_lighting import ModalityLightingData +from .point_of_view import PointOfViewData +from .salience import SalienceData +from .visual_syntax import VisualSyntaxData + + +class ModelData(BaseModel): + visual_syntax: VisualSyntaxData + contact: ContactData + angle: AngleData + point_of_view: PointOfViewData + distance: DistanceData + modality_lighting: ModalityLightingData + modality_color: ModalityColorData + modality_depth: ModalityDepthData + information_value: InformationValueData + framing: FramingData + salience: SalienceData + + @classmethod + def list_fields(cls) -> list[str]: + """List options that are stored as attributes.""" + return list(cls.model_fields.keys()) + + @classmethod + def from_random(cls) -> ModelData: + """Instantiate with random numbers.""" + kwargs = { + field: field_info.annotation.from_random() # type: ignore + for field, field_info + in cls.model_fields.items() + } + return cls(**kwargs)