From c55eb42c7a036cfadd7667784f2391ca96ec5d07 Mon Sep 17 00:00:00 2001 From: David Perl Date: Mon, 10 Feb 2025 12:14:35 +0100 Subject: [PATCH] feat: add ipython magic to print metadata for a scan --- bec_ipython_client/bec_ipython_client/bec_magics.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/bec_ipython_client/bec_ipython_client/bec_magics.py b/bec_ipython_client/bec_ipython_client/bec_magics.py index 2cb50f5a..6aeb7be6 100644 --- a/bec_ipython_client/bec_ipython_client/bec_magics.py +++ b/bec_ipython_client/bec_ipython_client/bec_magics.py @@ -2,8 +2,11 @@ from __future__ import annotations from typing import TYPE_CHECKING +import rich from IPython.core.magic import Magics, line_magic, magics_class +from bec_lib.metadata_schema import get_metadata_schema_for_scan + if TYPE_CHECKING: from bec_ipython_client import BECIPythonClient @@ -58,3 +61,12 @@ class BECMagics(Magics): def halt(self, line): "Request a scan halt, i.e. abort without cleanup." return self.client.queue.request_scan_halt() + + @line_magic + def schema(self, line): + "print the metadata schema for a given scan" + scans = self.shell.user_ns["scans"] + if not hasattr(scans, line): + print(f"Scan {line} does not exist.") + else: + rich.print_json(data=get_metadata_schema_for_scan(line).model_json_schema())