diff --git a/libyang/schema.py b/libyang/schema.py index 992db0e..2e3a115 100644 --- a/libyang/schema.py +++ b/libyang/schema.py @@ -434,6 +434,10 @@ def parent_node(self) -> Optional[Union["PNode", "PIdentity"]]: return None return None + def extensions(self) -> Iterator["ExtensionParsed"]: + for ext in ly_array_iter(self.cdata.exts): + yield ExtensionParsed(self.context, ext, self.module_parent) + # ------------------------------------------------------------------------------------- class ExtensionCompiled(Extension): @@ -462,6 +466,10 @@ def parent_node(self) -> Optional[Union["SNode", "Identity"]]: return None return None + def extensions(self) -> Iterator["ExtensionCompiled"]: + for ext in ly_array_iter(self.cdata.exts): + yield ExtensionCompiled(self.context, ext) + # ------------------------------------------------------------------------------------- class _EnumBit: diff --git a/tests/test_schema.py b/tests/test_schema.py index 923f5f0..a310aad 100644 --- a/tests/test_schema.py +++ b/tests/test_schema.py @@ -7,6 +7,7 @@ from libyang import ( Context, Extension, + ExtensionCompiled, ExtensionParsed, Identity, IfFeature, @@ -498,12 +499,14 @@ def test_rpc_extensions(self): ext = list(self.rpc.extensions()) self.assertEqual(len(ext), 1) ext = self.rpc.get_extension("require-admin", prefix="omg-extensions") - self.assertIsInstance(ext, Extension) + self.assertIsInstance(ext, ExtensionCompiled) self.assertIsInstance(ext.parent_node(), SRpc) + self.assertIsNone(next(ext.extensions(), None)) parsed = self.rpc.parsed() ext = parsed.get_extension("require-admin", prefix="omg-extensions") self.assertIsInstance(ext, ExtensionParsed) self.assertIsInstance(ext.parent_node(), PAction) + self.assertIsNone(next(ext.extensions(), None)) def test_rpc_params(self): leaf = next(self.rpc.children())