Skip to content

Commit 8ef4b1e

Browse files
committed
schema: adds extensions and get_extension for Enum class
This patch allows to get extensions on Enum type Signed-off-by: Stefan Gula <steweg@gmail.com>
1 parent 3072af0 commit 8ef4b1e

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
@@ -491,6 +491,23 @@ def name(self) -> str:
491491
def description(self) -> str:
492492
return c2str(self.cdata.dsc)
493493

494+
def extensions(self) -> Iterator[ExtensionCompiled]:
495+
for ext in ly_array_iter(self.cdata.exts):
496+
yield ExtensionCompiled(self.context, ext)
497+
498+
def get_extension(
499+
self, name: str, prefix: Optional[str] = None, arg_value: Optional[str] = None
500+
) -> Optional[ExtensionCompiled]:
501+
for ext in self.extensions():
502+
if ext.name() != name:
503+
continue
504+
if prefix is not None and ext.module().name() != prefix:
505+
continue
506+
if arg_value is not None and ext.argument() != arg_value:
507+
continue
508+
return ext
509+
return None
510+
494511
def deprecated(self) -> bool:
495512
return bool(self.cdata.flags & lib.LYS_STATUS_DEPRC)
496513

tests/test_schema.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -633,6 +633,9 @@ def test_leaf_type_enum(self):
633633
self.assertEqual(t.base(), Type.ENUM)
634634
enums = [e.name() for e in t.enums()]
635635
self.assertEqual(enums, ["http", "https", "ftp", "sftp"])
636+
enum = next(t.enums())
637+
self.assertIsNone(next(enum.extensions(), None))
638+
self.assertIsNone(enum.get_extension("test", prefix="test"))
636639

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

0 commit comments

Comments
 (0)