diff --git a/onedm/sdf/data.py b/onedm/sdf/data.py index c3ac55f..fd4fb40 100644 --- a/onedm/sdf/data.py +++ b/onedm/sdf/data.py @@ -10,7 +10,7 @@ import datetime from typing import Annotated, Any, Literal, Union -from pydantic import Field, NonNegativeInt +from pydantic import Field, NonNegativeInt, field_serializer from pydantic_core import SchemaValidator, core_schema from .common import CommonQualities @@ -26,6 +26,10 @@ class DataQualities(CommonQualities, ABC): default: Any | None = None choices: dict[str, Data] | None = Field(None, alias="sdfChoice") + @field_serializer("type") + def always_include_type(self, type: str, _): + return type + def _get_base_schema(self) -> core_schema.CoreSchema: """Implemented by sub-classes.""" raise NotImplementedError diff --git a/tests/sdf/test_datatypes.py b/tests/sdf/test_datatypes.py index 5f5e353..08276b9 100644 --- a/tests/sdf/test_datatypes.py +++ b/tests/sdf/test_datatypes.py @@ -55,3 +55,8 @@ def test_object_data(test_model: sdf.SDF): def test_unknown_data(test_model: sdf.SDF): assert isinstance(test_model.data["Unknown"], sdf.AnyData) + + +def test_serialization_exluding_defaults(): + integer = sdf.IntegerData() + assert "type" in integer.model_dump(exclude_defaults=True)