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 {
174
174
LY_STMT_ARG_VALUE
175
175
};
176
176
177
+ #define LY_STMT_NODE_MASK ...
178
+
177
179
#define LY_LOLOG ...
178
180
#define LY_LOSTORE ...
179
181
#define LY_LOSTORE_LAST ...
Original file line number Diff line number Diff line change 67
67
from .log import configure_logging
68
68
from .schema import (
69
69
Extension ,
70
+ ExtensionParsed ,
70
71
Feature ,
71
72
IfAndFeatures ,
72
73
IfFeature ,
Original file line number Diff line number Diff line change @@ -411,6 +411,14 @@ def name(self) -> str:
411
411
def module (self ) -> Module :
412
412
return self ._module_from_parsed ()
413
413
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
+
414
422
415
423
# -------------------------------------------------------------------------------------
416
424
class ExtensionCompiled (Extension ):
@@ -428,6 +436,14 @@ def module(self) -> Module:
428
436
raise self .context .error ("cannot get module" )
429
437
return Module (self .context , self .cdata_def .module )
430
438
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
+
431
447
432
448
# -------------------------------------------------------------------------------------
433
449
class _EnumBit :
Original file line number Diff line number Diff line change 7
7
from libyang import (
8
8
Context ,
9
9
Extension ,
10
+ ExtensionParsed ,
10
11
IfFeature ,
11
12
IfOrFeatures ,
12
13
IOType ,
@@ -496,6 +497,11 @@ def test_rpc_extensions(self):
496
497
self .assertEqual (len (ext ), 1 )
497
498
ext = self .rpc .get_extension ("require-admin" , prefix = "omg-extensions" )
498
499
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 )
499
505
500
506
def test_rpc_params (self ):
501
507
leaf = next (self .rpc .children ())
@@ -609,6 +615,7 @@ def test_leaf_type_extensions(self):
609
615
"type-desc" , prefix = "omg-extensions" , arg_value = "<protocol>"
610
616
)
611
617
self .assertIsInstance (ext , Extension )
618
+ self .assertIsNone (ext .parent_node ())
612
619
613
620
def test_leaf_type_enum (self ):
614
621
leaf = next (
You can’t perform that action at this time.
0 commit comments