From d324719cf5f0d006dfa51ae452e9685484c802b3 Mon Sep 17 00:00:00 2001
From: Markus Scheidgen <markus.scheidgen@gmail.com>
Date: Wed, 26 Mar 2025 11:55:14 +0000
Subject: [PATCH] Fix ForwardRef related pydantic error in annotation models.

Changelog: changed
---
 nomad/datamodel/metainfo/annotations.py | 9 ++++++++-
 nomad/metainfo/annotation.py            | 5 ++++-
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/nomad/datamodel/metainfo/annotations.py b/nomad/datamodel/metainfo/annotations.py
index ed177b2541..5042458aa2 100644
--- a/nomad/datamodel/metainfo/annotations.py
+++ b/nomad/datamodel/metainfo/annotations.py
@@ -23,7 +23,14 @@ from typing import Any
 from pydantic import ConfigDict, Field, field_validator, model_validator
 from pydantic.main import BaseModel
 
-from nomad.metainfo import AnnotationModel, Datetime, MEnum, Quantity, Reference
+from nomad.metainfo import (
+    AnnotationModel,
+    Datetime,
+    Definition,  # noqa: F401
+    MEnum,
+    Quantity,
+    Reference,
+)
 from nomad.utils import strip
 
 from ...metainfo.data_type import Datatype
diff --git a/nomad/metainfo/annotation.py b/nomad/metainfo/annotation.py
index 6ee540abe9..7b504aa86d 100644
--- a/nomad/metainfo/annotation.py
+++ b/nomad/metainfo/annotation.py
@@ -54,6 +54,9 @@ class SectionAnnotation(DefinitionAnnotation):
         return {}
 
 
+Definition = ForwardRef('Definition')
+
+
 class AnnotationModel(Annotation, BaseModel):
     """
     Base class for defining annotation models. Annotations used with simple dict-based
@@ -61,7 +64,7 @@ class AnnotationModel(Annotation, BaseModel):
     model.
     """
 
-    m_definition: ForwardRef('Definition') = Field(  # type: ignore
+    m_definition: Definition = Field(  # type: ignore
         None,
         description='The definition that this annotation is annotating.',
         exclude=True,
-- 
GitLab