From c32432bb7215757f83b8c66d07c3efb1b7bd5a58 Mon Sep 17 00:00:00 2001 From: Christian Sandberg Date: Thu, 19 Sep 2024 14:12:28 +0200 Subject: [PATCH] More fixes for "type" inclusion --- onedm/sdf/data.py | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/onedm/sdf/data.py b/onedm/sdf/data.py index fd4fb40..b3422de 100644 --- a/onedm/sdf/data.py +++ b/onedm/sdf/data.py @@ -26,10 +26,6 @@ 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 @@ -71,6 +67,10 @@ class NumberData(DataQualities): const: float | None = None default: float | None = None + @field_serializer("type") + def always_include_type(self, type: str, _): + return type + def _get_base_schema(self) -> core_schema.FloatSchema | core_schema.DatetimeSchema: if self.sdf_type == "unix-time": return core_schema.datetime_schema( @@ -119,6 +119,10 @@ class IntegerData(DataQualities): const: int | None = None default: int | None = None + @field_serializer("type") + def always_include_type(self, type: str, _): + return type + def _get_base_schema(self) -> core_schema.IntSchema: return core_schema.int_schema( ge=self.minimum, @@ -137,6 +141,10 @@ class BooleanData(DataQualities): const: bool | None = None default: bool | None = None + @field_serializer("type") + def always_include_type(self, type: str, _): + return type + def _get_base_schema(self) -> core_schema.BoolSchema: return core_schema.bool_schema() @@ -156,6 +164,10 @@ class StringData(DataQualities): const: str | None = None default: str | None = None + @field_serializer("type") + def always_include_type(self, type: str, _): + return type + def _get_base_schema( self, ) -> core_schema.StringSchema | core_schema.BytesSchema | core_schema.LiteralSchema: @@ -194,6 +206,10 @@ class ArrayData(DataQualities): const: list | None = None default: list | None = None + @field_serializer("type") + def always_include_type(self, type: str, _): + return type + def _get_base_schema(self) -> core_schema.ListSchema | core_schema.SetSchema: if self.unique_items: return core_schema.set_schema( @@ -218,6 +234,10 @@ class ObjectData(DataQualities): const: dict[str, Any] | None = None default: dict[str, Any] | None = None + @field_serializer("type") + def always_include_type(self, type: str, _): + return type + def _get_base_schema(self) -> core_schema.TypedDictSchema: required = self.required or [] fields = {