@@ -53,6 +53,21 @@ def report(
5353 """
5454
5555
56+ class RuleExit (Exception ):
57+ """The `RuleExit` is an exception that can be raised to
58+ immediately cancel dataset node validation with the current rule.
59+
60+ Raise it from any of your `RuleOp` method implementations if further
61+ node traversal doesn't make sense. Typical usage:
62+
63+ ```python
64+ if something_is_not_ok:
65+ ctx.report("Something is not ok.")
66+ raise RuleExit
67+ ```
68+ """
69+
70+
5671class RuleOp (ABC ):
5772 """Define the specific rule verification operation."""
5873
@@ -62,6 +77,8 @@ def dataset(self, context: RuleContext, node: DatasetNode) -> None:
6277 Args:
6378 context: The current rule context.
6479 node: The dataset node.
80+ Raises:
81+ RuleExit: to exit rule logic and further node traversal
6582 """
6683
6784 def data_array (self , context : RuleContext , node : DataArrayNode ) -> None :
@@ -70,6 +87,8 @@ def data_array(self, context: RuleContext, node: DataArrayNode) -> None:
7087 Args:
7188 context: The current rule context.
7289 node: The data array (variable) node.
90+ Raises:
91+ RuleExit: to exit rule logic and further node traversal
7392 """
7493
7594 def attrs (self , context : RuleContext , node : AttrsNode ) -> None :
@@ -78,6 +97,8 @@ def attrs(self, context: RuleContext, node: AttrsNode) -> None:
7897 Args:
7998 context: The current rule context.
8099 node: The attributes node.
100+ Raises:
101+ RuleExit: to exit rule logic and further node traversal
81102 """
82103
83104 def attr (self , context : RuleContext , node : AttrNode ) -> None :
@@ -86,6 +107,8 @@ def attr(self, context: RuleContext, node: AttrNode) -> None:
86107 Args:
87108 context: The current rule context.
88109 node: The attribute node.
110+ Raises:
111+ RuleExit: to exit rule logic and further node traversal
89112 """
90113
91114
0 commit comments