From 5ed953fb899efd97478d8e75b07f6edd20a4cc96 Mon Sep 17 00:00:00 2001 From: Theodore Chang <theodore.chang@physik.hu-berlin.de> Date: Wed, 16 Oct 2024 18:46:30 +0000 Subject: [PATCH] Ensure deserialization order --- nomad/metainfo/metainfo.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/nomad/metainfo/metainfo.py b/nomad/metainfo/metainfo.py index a05f08eb9a..2fb09344fb 100644 --- a/nomad/metainfo/metainfo.py +++ b/nomad/metainfo/metainfo.py @@ -2147,11 +2147,18 @@ class MSection(metaclass=MObjectMeta): treat_none_as_nan = kwargs.get('treat_none_as_nan', False) # need to deserialize the definitions first as they are needed for the rest - if 'definitions' in data: - self.m_set('definitions', data['definitions'], context=m_context) + # need to deserialize the metadata first as they are needed for the rest + processed = [] + for item in ('definitions', 'metadata'): + if item in data: + try: + self.m_set(item, data[item], context=m_context) + processed.append(item) + except (ValueError, MetainfoError): + pass for name, value in data.items(): - if name == 'definitions' or name.startswith('m_'): + if name in processed or name.startswith('m_'): continue try: -- GitLab