diff --git a/setup.py b/setup.py index bb91012..d9fb606 100644 --- a/setup.py +++ b/setup.py @@ -46,9 +46,9 @@ license="MIT", long_description=long_description, url="http://github.com/loyada/typedpy", - download_url="https://github.com/loyada/typedpy/archive/v2.27.3.tar.gz", + download_url="https://github.com/loyada/typedpy/archive/v2.27.4.tar.gz", keywords=["testing", "type-safe", "strict", "schema", "validation"], - version="2.27.3", + version="2.27.4", ) # coverage run --source=typedpy/ setup.py test diff --git a/tests/test_fast_serialization_2.py b/tests/test_fast_serialization_2.py index ec07b08..c7aa289 100644 --- a/tests/test_fast_serialization_2.py +++ b/tests/test_fast_serialization_2.py @@ -646,8 +646,8 @@ class Foo(Structure, FastSerializable): def test_additional_serialization(no_defensive_copy_on_get): class Foo(Structure, FastSerializable): - first_name: String - last_name: String + first_name: str + last_name: str age_years: PositiveInt def _additional_serialization(self) -> dict: diff --git a/typedpy/serialization/fast_serialization.py b/typedpy/serialization/fast_serialization.py index 1f175a1..0280572 100644 --- a/typedpy/serialization/fast_serialization.py +++ b/typedpy/serialization/fast_serialization.py @@ -120,12 +120,15 @@ def serializer(self): if with_undefined else res ) - additional = self._additional_serialization() if has_additional_properties else {} - return ( + res = ( filtered_res if serialize_none else {k: v for (k, v) in filtered_res.items() if v is not None} - ) | additional + ) + if has_additional_properties: + res.update(self._additional_serialization()) + + return res cls.serialize = serializer