File tree Expand file tree Collapse file tree 4 files changed +26
-0
lines changed Expand file tree Collapse file tree 4 files changed +26
-0
lines changed Original file line number Diff line number Diff line change @@ -174,6 +174,8 @@ enum ly_stmt {
174174 LY_STMT_ARG_VALUE
175175};
176176
177+ #define LY_STMT_NODE_MASK ...
178+
177179#define LY_LOLOG ...
178180#define LY_LOSTORE ...
179181#define LY_LOSTORE_LAST ...
Original file line number Diff line number Diff line change 6767from .log import configure_logging
6868from .schema import (
6969 Extension ,
70+ ExtensionParsed ,
7071 Feature ,
7172 IfAndFeatures ,
7273 IfFeature ,
Original file line number Diff line number Diff line change @@ -411,6 +411,14 @@ def name(self) -> str:
411411 def module (self ) -> Module :
412412 return self ._module_from_parsed ()
413413
414+ def parent_node (self ) -> Optional ["PNode" ]:
415+ if not bool (self .cdata .parent_stmt & lib .LY_STMT_NODE_MASK ):
416+ return None
417+ try :
418+ return PNode .new (self .context , self .cdata .parent , self .module ())
419+ except LibyangError :
420+ return None
421+
414422
415423# -------------------------------------------------------------------------------------
416424class ExtensionCompiled (Extension ):
@@ -428,6 +436,14 @@ def module(self) -> Module:
428436 raise self .context .error ("cannot get module" )
429437 return Module (self .context , self .cdata_def .module )
430438
439+ def parent_node (self ) -> Optional ["SNode" ]:
440+ if not bool (self .cdata .parent_stmt & lib .LY_STMT_NODE_MASK ):
441+ return None
442+ try :
443+ return SNode .new (self .context , self .cdata .parent )
444+ except LibyangError :
445+ return None
446+
431447
432448# -------------------------------------------------------------------------------------
433449class _EnumBit :
Original file line number Diff line number Diff line change 77from libyang import (
88 Context ,
99 Extension ,
10+ ExtensionParsed ,
1011 IfFeature ,
1112 IfOrFeatures ,
1213 IOType ,
@@ -496,6 +497,11 @@ def test_rpc_extensions(self):
496497 self .assertEqual (len (ext ), 1 )
497498 ext = self .rpc .get_extension ("require-admin" , prefix = "omg-extensions" )
498499 self .assertIsInstance (ext , Extension )
500+ self .assertIsInstance (ext .parent_node (), SRpc )
501+ parsed = self .rpc .parsed ()
502+ ext = parsed .get_extension ("require-admin" , prefix = "omg-extensions" )
503+ self .assertIsInstance (ext , ExtensionParsed )
504+ self .assertIsInstance (ext .parent_node (), PAction )
499505
500506 def test_rpc_params (self ):
501507 leaf = next (self .rpc .children ())
@@ -609,6 +615,7 @@ def test_leaf_type_extensions(self):
609615 "type-desc" , prefix = "omg-extensions" , arg_value = "<protocol>"
610616 )
611617 self .assertIsInstance (ext , Extension )
618+ self .assertIsNone (ext .parent_node ())
612619
613620 def test_leaf_type_enum (self ):
614621 leaf = next (
You can’t perform that action at this time.
0 commit comments