From 5eaacfa70f9a64633de7ffb9f7af57a1f71a0c3c Mon Sep 17 00:00:00 2001
From: Theodore Chang <tlcfem@gmail.com>
Date: Fri, 16 Aug 2024 16:13:35 +0200
Subject: [PATCH] Check reference shape dimension
---
nomad/metainfo/metainfo.py | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/nomad/metainfo/metainfo.py b/nomad/metainfo/metainfo.py
index b659239c55..838ea25746 100644
--- a/nomad/metainfo/metainfo.py
+++ b/nomad/metainfo/metainfo.py
@@ -476,6 +476,19 @@ class Reference:
def _proxy_type(self):
return self._definition.type if self._definition else SectionReference()
+ def _check_shape(self, value):
+ dimension: int = 0
+ target = value
+ while isinstance(target, list):
+ dimension += 1
+ # assuming consistent data
+ target = target[0]
+
+ if dimension != len(self._definition.shape):
+ raise ValueError(f'Invalid shape for {value}.')
+
+ return value
+
def serialize_self(self, section):
if (context := section.m_root().m_context) is not None:
try:
@@ -540,7 +553,7 @@ class Reference:
return self._normalize_impl(section, _v)
- return _convert(value)
+ return self._check_shape(_convert(value))
def _serialize_impl(self, section, value):
return _append_id(
--
GitLab