Skip to content

Commit 407fab3

Browse files
stewegrjarry
authored andcommitted
schema: adds nested extensions access
This patch introduces access to nested extensions Signed-off-by: Stefan Gula <[email protected]>
1 parent 421d321 commit 407fab3

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

libyang/schema.py

+8
Original file line numberDiff line numberDiff line change
@@ -434,6 +434,10 @@ def parent_node(self) -> Optional[Union["PNode", "PIdentity"]]:
434434
return None
435435
return None
436436

437+
def extensions(self) -> Iterator["ExtensionParsed"]:
438+
for ext in ly_array_iter(self.cdata.exts):
439+
yield ExtensionParsed(self.context, ext, self.module_parent)
440+
437441

438442
# -------------------------------------------------------------------------------------
439443
class ExtensionCompiled(Extension):
@@ -462,6 +466,10 @@ def parent_node(self) -> Optional[Union["SNode", "Identity"]]:
462466
return None
463467
return None
464468

469+
def extensions(self) -> Iterator["ExtensionCompiled"]:
470+
for ext in ly_array_iter(self.cdata.exts):
471+
yield ExtensionCompiled(self.context, ext)
472+
465473

466474
# -------------------------------------------------------------------------------------
467475
class _EnumBit:

tests/test_schema.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from libyang import (
88
Context,
99
Extension,
10+
ExtensionCompiled,
1011
ExtensionParsed,
1112
Identity,
1213
IfFeature,
@@ -498,12 +499,14 @@ def test_rpc_extensions(self):
498499
ext = list(self.rpc.extensions())
499500
self.assertEqual(len(ext), 1)
500501
ext = self.rpc.get_extension("require-admin", prefix="omg-extensions")
501-
self.assertIsInstance(ext, Extension)
502+
self.assertIsInstance(ext, ExtensionCompiled)
502503
self.assertIsInstance(ext.parent_node(), SRpc)
504+
self.assertIsNone(next(ext.extensions(), None))
503505
parsed = self.rpc.parsed()
504506
ext = parsed.get_extension("require-admin", prefix="omg-extensions")
505507
self.assertIsInstance(ext, ExtensionParsed)
506508
self.assertIsInstance(ext.parent_node(), PAction)
509+
self.assertIsNone(next(ext.extensions(), None))
507510

508511
def test_rpc_params(self):
509512
leaf = next(self.rpc.children())

0 commit comments

Comments
 (0)