diff --git a/qcodes/dataset/descriptions/dependencies.py b/qcodes/dataset/descriptions/dependencies.py index 05837cc6980..682bcbd1581 100644 --- a/qcodes/dataset/descriptions/dependencies.py +++ b/qcodes/dataset/descriptions/dependencies.py @@ -467,24 +467,36 @@ def _from_dict(cls, ser: InterDependencies_Dict) -> 'InterDependencies_': representation of such an object """ params = ser['parameters'] - deps = {} - for key, value in ser['dependencies'].items(): - deps_key = ParamSpecBase._from_dict(params[key]) - deps_vals = tuple(ParamSpecBase._from_dict(params[val]) for - val in value) - deps.update({deps_key: deps_vals}) + deps = cls._extract_deps_from_dict(ser) + + inffs = cls._extract_inffs_from_dict(ser) + stdls = tuple(ParamSpecBase._from_dict(params[ps_id]) for + ps_id in ser['standalones']) + + return cls(dependencies=deps, inferences=inffs, standalones=stdls) + + @classmethod + def _extract_inffs_from_dict(cls, ser: InterDependencies_Dict) -> ParamSpecTree: + params = ser['parameters'] inffs = {} for key, value in ser['inferences'].items(): inffs_key = ParamSpecBase._from_dict(params[key]) inffs_vals = tuple(ParamSpecBase._from_dict(params[val]) for val in value) inffs.update({inffs_key: inffs_vals}) + return inffs - stdls = tuple(ParamSpecBase._from_dict(params[ps_id]) for - ps_id in ser['standalones']) - - return cls(dependencies=deps, inferences=inffs, standalones=stdls) + @classmethod + def _extract_deps_from_dict(cls, ser: InterDependencies_Dict) -> ParamSpecTree: + params = ser['parameters'] + deps = {} + for key, value in ser['dependencies'].items(): + deps_key = ParamSpecBase._from_dict(params[key]) + deps_vals = tuple(ParamSpecBase._from_dict(params[val]) for + val in value) + deps.update({deps_key: deps_vals}) + return deps def __repr__(self) -> str: rep = (f"InterDependencies_(dependencies={self.dependencies}, " diff --git a/qcodes/dataset/descriptions/versioning/rundescribertypes.py b/qcodes/dataset/descriptions/versioning/rundescribertypes.py index 861ce3f8c30..26d8d09da8e 100644 --- a/qcodes/dataset/descriptions/versioning/rundescribertypes.py +++ b/qcodes/dataset/descriptions/versioning/rundescribertypes.py @@ -17,7 +17,7 @@ from typing import Dict, Any, List, Tuple, Union from typing_extensions import TypedDict -from ..param_spec import ParamSpecDict +from ..param_spec import ParamSpecDict, ParamSpecBaseDict class InterDependenciesDict(TypedDict): @@ -25,10 +25,10 @@ class InterDependenciesDict(TypedDict): class InterDependencies_Dict(TypedDict): - parameters: Dict[str, Any] - dependencies: Dict[str, Any] - inferences: Dict[str, Any] - standalones: List[Any] + parameters: Dict[str, ParamSpecBaseDict] + dependencies: Dict[str, List[str]] + inferences: Dict[str, List[str]] + standalones: List[str] class RunDescriberV0Dict(TypedDict):