From 4498dc13d44e213aa70dbe615a4770fbf039ce6d Mon Sep 17 00:00:00 2001 From: Seyon Sivarajah Date: Wed, 25 Jun 2025 13:41:48 +0100 Subject: [PATCH] feat: use `core.` prefix for metadata keys --- guppylang/engine.py | 12 ++++++++++-- tests/test_version_metadata.py | 19 ++++++++++++++++--- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/guppylang/engine.py b/guppylang/engine.py index 639b9c5e4..53bfa176a 100644 --- a/guppylang/engine.py +++ b/guppylang/engine.py @@ -1,4 +1,5 @@ from collections import defaultdict +from enum import Enum from types import FrameType import hugr.build.function as hf @@ -58,6 +59,13 @@ BUILTIN_DEFS = {defn.name: defn for defn in BUILTIN_DEFS_LIST} +class CoreMetadataKeys(Enum): + """Core HUGR metadata keys used by Guppy.""" + + USED_EXTENSIONS = "core.used_extensions" + GENERATOR = "core.generator" + + class DefinitionStore: """Storage class holding references to all Guppy definitions created in the current interpreter session. @@ -242,14 +250,14 @@ def compile(self, id: DefId) -> ModulePointer: hugr.std.int.INT_TYPES_EXTENSION, hugr.std.logic.EXTENSION, ] - graph.hugr.module_root.metadata["__used_extensions"] = [ + graph.hugr.module_root.metadata[CoreMetadataKeys.USED_EXTENSIONS.value] = [ { "name": ext.name, "version": str(ext.version), } for ext in all_used_extensions ] - graph.hugr.module_root.metadata["__generator"] = { + graph.hugr.module_root.metadata[CoreMetadataKeys.GENERATOR.value] = { "name": "guppylang", "version": guppylang.__version__, } diff --git a/tests/test_version_metadata.py b/tests/test_version_metadata.py index 2afabb970..5a4d7bc69 100644 --- a/tests/test_version_metadata.py +++ b/tests/test_version_metadata.py @@ -1,4 +1,8 @@ -from guppylang import guppy, __version__ +from sympy import use + +from guppylang import __version__, guppy +from guppylang.engine import CoreMetadataKeys + def test_metadata(): @guppy @@ -6,5 +10,14 @@ def foo() -> None: pass hugr = foo.compile().module - assert hugr.module_root.metadata["__generator"]["name"] == "guppylang" - assert hugr.module_root.metadata["__generator"]["version"] == __version__ + meta = hugr.module_root.metadata + gen_key = CoreMetadataKeys.GENERATOR.value + assert meta[gen_key]["name"] == "guppylang" + assert meta[gen_key]["version"] == __version__ + + used_key = CoreMetadataKeys.USED_EXTENSIONS.value + used = meta[used_key] + assert len(used) > 0 + assert all("name" in ext and "version" in ext for ext in used) + assert all(isinstance(ext["name"], str) for ext in used) + assert all(isinstance(ext["version"], str) for ext in used)