Skip to content

Commit 2ff17b4

Browse files
stewegrjarry
authored andcommitted
schema: adds extensions and get_extension for Enum class
This patch allows to get extensions on Enum type Signed-off-by: Stefan Gula <[email protected]>
1 parent b78cdce commit 2ff17b4

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

libyang/schema.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -525,6 +525,23 @@ def name(self) -> str:
525525
def description(self) -> str:
526526
return c2str(self.cdata.dsc)
527527

528+
def extensions(self) -> Iterator[ExtensionCompiled]:
529+
for ext in ly_array_iter(self.cdata.exts):
530+
yield ExtensionCompiled(self.context, ext)
531+
532+
def get_extension(
533+
self, name: str, prefix: Optional[str] = None, arg_value: Optional[str] = None
534+
) -> Optional[ExtensionCompiled]:
535+
for ext in self.extensions():
536+
if ext.name() != name:
537+
continue
538+
if prefix is not None and ext.module().name() != prefix:
539+
continue
540+
if arg_value is not None and ext.argument() != arg_value:
541+
continue
542+
return ext
543+
return None
544+
528545
def deprecated(self) -> bool:
529546
return bool(self.cdata.flags & lib.LYS_STATUS_DEPRC)
530547

tests/test_schema.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -645,6 +645,9 @@ def test_leaf_type_enum(self):
645645
self.assertEqual(t.base(), Type.ENUM)
646646
enums = [e.name() for e in t.enums()]
647647
self.assertEqual(enums, ["http", "https", "ftp", "sftp"])
648+
enum = next(t.enums())
649+
self.assertIsNone(next(enum.extensions(), None))
650+
self.assertIsNone(enum.get_extension("test", prefix="test"))
648651

649652
def test_leaf_type_bits(self):
650653
leaf = next(self.ctx.find_path("/yolo-system:chmod/yolo-system:perms"))

0 commit comments

Comments
 (0)