diff --git a/src/rune/runtime/base_data_class.py b/src/rune/runtime/base_data_class.py index 4ef9e9f..cbf3d3a 100644 --- a/src/rune/runtime/base_data_class.py +++ b/src/rune/runtime/base_data_class.py @@ -138,8 +138,8 @@ def rune_serialize( raise_exc=raise_validation_errors) root_meta = self.__dict__.setdefault(ROOT_CONTAINER, {}) - root_meta['@type'] = self.__class__.__module__ - root_meta['@model'] = self.__class__.__module__.split( + root_meta['@type'] = self._FQRTN + root_meta['@model'] = self._FQRTN.split( '.', maxsplit=1)[0] root_meta['@version'] = self.get_model_version() diff --git a/src/rune/runtime/metadata.py b/src/rune/runtime/metadata.py index dd1b611..38eab15 100644 --- a/src/rune/runtime/metadata.py +++ b/src/rune/runtime/metadata.py @@ -350,7 +350,8 @@ def serialise(cls, obj) -> dict: res = obj.serialise_meta() res |= obj.model_dump(exclude_unset=True, exclude_defaults=True) if cls != obj.__class__: - res = {'@type': obj.__class__.__module__} | res + # pylint: disable=protected-access + res = {'@type': obj._FQRTN} | res return res @classmethod diff --git a/test/serializer-round-trip/test_extension.py b/test/serializer-round-trip/test_extension.py index b95a285..aa86846 100644 --- a/test/serializer-round-trip/test_extension.py +++ b/test/serializer-round-trip/test_extension.py @@ -95,11 +95,11 @@ def test_temp(): { "nodeRef" : { "typeA" : { - "fieldA" : "foo", - "@key" : "someKey1x" + "fieldA" : "foo", + "@key" : "someKey1x" }, "aReference" : { - "@ref" : "someKey1x" + "@ref" : "someKey1x" } } }