feat: add ipython magic to print metadata for a scan

This commit is contained in:
perl_d 2025-02-10 12:14:35 +01:00
parent 7efdbbf6d4
commit c55eb42c7a

View File

@ -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())