From 83e24ec36f7c7a1796216d34f4ecfaee7d9eb97c Mon Sep 17 00:00:00 2001 From: James Crake-Merani Date: Fri, 9 Oct 2026 10:40:01 +0100 Subject: [PATCH 1/4] Static method to initialise empty metadata. --- sasdata/metadata.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/sasdata/metadata.py b/sasdata/metadata.py index 1ad46b93..7a7084c7 100644 --- a/sasdata/metadata.py +++ b/sasdata/metadata.py @@ -622,6 +622,19 @@ def from_json(obj): raw=MetaNode.from_json(obj["raw"]), ) + @staticmethod + def initialise_empty(): + return Metadata( + title=None, + run=[], + definition=None, + process=[], + sample=None, + instrument=None, + magnetic=None, + raw=None + ) + def serialise_json(self): serialized = { "instrument": None, From b33f75755799b708cbc5bc8c4b9aedac5117c39a Mon Sep 17 00:00:00 2001 From: James Crake-Merani Date: Fri, 9 Oct 2026 10:43:13 +0100 Subject: [PATCH 2/4] Don't require Metadata on instantiation. SasData, and SasMeasurement no longer require metadata to be provided for instantiation. If none is provided, they will just init empty metadata. --- sasdata/data.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/sasdata/data.py b/sasdata/data.py index a9cd9648..b6f17df0 100644 --- a/sasdata/data.py +++ b/sasdata/data.py @@ -23,14 +23,17 @@ def __init__( abscissae: Abscissa, mask: Quantity, dependents: list["SasData"], - metadata: Metadata, + metadata: Metadata | None = None, ): self.name = name self._ordinate = ordinate self._abscissae = abscissae self._mask = mask self.dependents = dependents - self.metadata = metadata + if self.metadata: + self.metadata = metadata + else: + self.metadata = Metadata.initialise_empty() @property def ordinate(self) -> Quantity: @@ -72,7 +75,7 @@ def __init__( name: str, data_contents: dict[str, Quantity], dataset_type: DatasetType, - metadata: Metadata, + metadata: Metadata | None = None, verbose: bool = False, ): self.name = name @@ -82,7 +85,11 @@ def __init__( self._data_contents = data_contents self._verbose = verbose - self.metadata = metadata + if self.metadata: + self.metadata = metadata + else: + self.metadata = Metadata.initialise_empty() + # TODO: Could this be optional? self.dataset_type: DatasetType = dataset_type From 2fd982d95092a409b4f6dc5bafbd992ae2d28fa0 Mon Sep 17 00:00:00 2001 From: James Crake-Merani Date: Fri, 9 Oct 2026 10:46:32 +0100 Subject: [PATCH 3/4] Don't check self.metadata before its been set. Tests were failing because of this. --- sasdata/data.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sasdata/data.py b/sasdata/data.py index b6f17df0..380e471d 100644 --- a/sasdata/data.py +++ b/sasdata/data.py @@ -30,7 +30,7 @@ def __init__( self._abscissae = abscissae self._mask = mask self.dependents = dependents - if self.metadata: + if metadata: self.metadata = metadata else: self.metadata = Metadata.initialise_empty() @@ -85,7 +85,7 @@ def __init__( self._data_contents = data_contents self._verbose = verbose - if self.metadata: + if metadata: self.metadata = metadata else: self.metadata = Metadata.initialise_empty() From e49b7438e43340dd09e72adeec7a55a67fd83a6e Mon Sep 17 00:00:00 2001 From: "pre-commit-ci-lite[bot]" <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Date: Fri, 9 Oct 2026 09:49:36 +0000 Subject: [PATCH 4/4] [pre-commit.ci lite] apply automatic fixes for ruff linting errors --- sasdata/data.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sasdata/data.py b/sasdata/data.py index 380e471d..cb96b33d 100644 --- a/sasdata/data.py +++ b/sasdata/data.py @@ -89,7 +89,7 @@ def __init__( self.metadata = metadata else: self.metadata = Metadata.initialise_empty() - + # TODO: Could this be optional? self.dataset_type: DatasetType = dataset_type