From 9c5e495fd483416d6c7997034a3ea38da5254c8a Mon Sep 17 00:00:00 2001 From: Asish Kumar Date: Mon, 13 Apr 2026 15:59:36 +0530 Subject: [PATCH] feat(dataset): expose ``ParamSpecBase`` from ``qcodes.dataset`` ``ParamSpecBase`` is the canonical base class used for building ``InterDependencies_`` graphs on the public API surface, but until now it was only importable from :mod:`qcodes.parameters`, while :mod:`qcodes.dataset` only re-exported the legacy :class:`~qcodes.dataset.descriptions.param_spec.ParamSpec` class. Users who followed the documented dataset-centric entry points had to reach into ``qcodes.parameters`` to construct dependency graphs. Re-export ``ParamSpecBase`` from ``qcodes.dataset`` and add it to ``__all__`` so the public namespace matches the actual recommended usage. Adds a regression test that pins both the re-export and its presence in ``__all__``. Closes #7369 Signed-off-by: Asish Kumar --- docs/changes/newsfragments/7369.improved | 3 +++ src/qcodes/dataset/__init__.py | 3 +++ tests/dataset/test_dependencies.py | 8 ++++++++ 3 files changed, 14 insertions(+) create mode 100644 docs/changes/newsfragments/7369.improved diff --git a/docs/changes/newsfragments/7369.improved b/docs/changes/newsfragments/7369.improved new file mode 100644 index 000000000000..44dde0a4d750 --- /dev/null +++ b/docs/changes/newsfragments/7369.improved @@ -0,0 +1,3 @@ +``ParamSpecBase`` is now re-exported from :mod:`qcodes.dataset` so that users +defining custom ``InterDependencies_`` graphs via the public ``qcodes.dataset`` +namespace do not need to reach into :mod:`qcodes.parameters` to obtain it. diff --git a/src/qcodes/dataset/__init__.py b/src/qcodes/dataset/__init__.py index 88e5b43d7f24..072e3bd5a2ca 100644 --- a/src/qcodes/dataset/__init__.py +++ b/src/qcodes/dataset/__init__.py @@ -17,6 +17,8 @@ export_datasets_and_create_metadata_db, extract_runs_into_db, ) +from qcodes.parameters import ParamSpecBase + from .descriptions.dependencies import InterDependencies_, ParamSpecTree from .descriptions.param_spec import ParamSpec from .descriptions.rundescriber import RunDescriber @@ -77,6 +79,7 @@ "LogSweep", "Measurement", "ParamSpec", + "ParamSpecBase", "ParamSpecTree", "RunDescriber", "SQLiteSettings", diff --git a/tests/dataset/test_dependencies.py b/tests/dataset/test_dependencies.py index c4deebc32239..1b0ad3fbb18c 100644 --- a/tests/dataset/test_dependencies.py +++ b/tests/dataset/test_dependencies.py @@ -17,6 +17,14 @@ from tests.common import error_caused_by +def test_param_spec_base_reexported_from_qcodes_dataset() -> None: + """``ParamSpecBase`` is part of the public :mod:`qcodes.dataset` API.""" + import qcodes.dataset as qdataset + + assert qdataset.ParamSpecBase is ParamSpecBase + assert "ParamSpecBase" in qdataset.__all__ + + def test_wrong_input_raises() -> None: for pspecs in ( ["p1", "p2", "p3"],