From 8ef4b1e2a459b8085aa2f84461122eff5d90075a Mon Sep 17 00:00:00 2001 From: Stefan Gula Date: Thu, 16 Oct 2025 04:11:23 +0200 Subject: [PATCH] schema: adds extensions and get_extension for Enum class This patch allows to get extensions on Enum type Signed-off-by: Stefan Gula --- libyang/schema.py | 17 +++++++++++++++++ tests/test_schema.py | 3 +++ 2 files changed, 20 insertions(+) diff --git a/libyang/schema.py b/libyang/schema.py index 3f3bd4d..8693855 100644 --- a/libyang/schema.py +++ b/libyang/schema.py @@ -491,6 +491,23 @@ def name(self) -> str: def description(self) -> str: return c2str(self.cdata.dsc) + def extensions(self) -> Iterator[ExtensionCompiled]: + for ext in ly_array_iter(self.cdata.exts): + yield ExtensionCompiled(self.context, ext) + + def get_extension( + self, name: str, prefix: Optional[str] = None, arg_value: Optional[str] = None + ) -> Optional[ExtensionCompiled]: + for ext in self.extensions(): + if ext.name() != name: + continue + if prefix is not None and ext.module().name() != prefix: + continue + if arg_value is not None and ext.argument() != arg_value: + continue + return ext + return None + def deprecated(self) -> bool: return bool(self.cdata.flags & lib.LYS_STATUS_DEPRC) diff --git a/tests/test_schema.py b/tests/test_schema.py index a310aad..a9ad3c8 100644 --- a/tests/test_schema.py +++ b/tests/test_schema.py @@ -633,6 +633,9 @@ def test_leaf_type_enum(self): self.assertEqual(t.base(), Type.ENUM) enums = [e.name() for e in t.enums()] self.assertEqual(enums, ["http", "https", "ftp", "sftp"]) + enum = next(t.enums()) + self.assertIsNone(next(enum.extensions(), None)) + self.assertIsNone(enum.get_extension("test", prefix="test")) def test_leaf_type_bits(self): leaf = next(self.ctx.find_path("/yolo-system:chmod/yolo-system:perms"))