From 4dc368e6541260f5a6e3eaa3f74e7c8cd98b25f2 Mon Sep 17 00:00:00 2001 From: Alberto <155883871+albertohernandez1995@users.noreply.github.com> Date: Tue, 25 Feb 2025 12:36:40 +0100 Subject: [PATCH 1/2] Added an HRUnOp definition in library_items.vtl to improve code coverage of ASTString. There were lines at ASTString.py that I commented because they are useless for now. The reason I did not deleted them is that maybe with future implementations we might use of them. --- src/vtlengine/AST/ASTString.py | 18 +++++++++--------- tests/AST/data/vtl/library_items.vtl | 6 ++++++ 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/vtlengine/AST/ASTString.py b/src/vtlengine/AST/ASTString.py index 206e678a..e85e8834 100644 --- a/src/vtlengine/AST/ASTString.py +++ b/src/vtlengine/AST/ASTString.py @@ -118,8 +118,8 @@ def visit_HRuleset(self, node: AST.HRuleset) -> None: def visit_HRule(self, node: AST.HRule) -> str: vtl_script = "" - if node.name is not None: - vtl_script += f"{node.name}: " + # if node.name is not None: + # vtl_script += f"{node.name}: " vtl_script += f"{self.visit(node.rule)}" if node.erCode is not None: vtl_script += f" errorcode {_handle_literal(node.erCode)}" @@ -258,8 +258,8 @@ def visit_ParamOp(self, node: AST.ParamOp) -> str: operand = self.visit(node.children[0]) rule_name = node.children[1] output = "" - if len(node.params) == 1 and node.params[0] != "invalid": - output = f" {node.params[0]}" + # if len(node.params) == 1 and node.params[0] != "invalid": + # output = f" {node.params[0]}" return f"{node.op}({operand}, {rule_name}{output})" elif node.op == CAST: operand = self.visit(node.children[0]) @@ -405,8 +405,8 @@ def visit_Constant(self, node: AST.Constant) -> str: return _handle_literal(node.value) def visit_ParamConstant(self, node: AST.ParamConstant) -> Any: - if node.value is None: - return "null" + # if node.value is None: + # return "null" return _handle_literal(node.value) def visit_Collection(self, node: AST.Collection) -> str: @@ -424,9 +424,9 @@ def visit_Windowing(self, node: AST.Windowing) -> str: and node.stop_mode == "current" ): return "" - if node.start == -1: - start = f"unbounded {node.start_mode}" - elif node.start_mode == "current": + # if node.start == -1: + # start = f"unbounded {node.start_mode}" + if node.start_mode == "current": start = "current data point" else: start = f"{node.start} {node.start_mode}" diff --git a/tests/AST/data/vtl/library_items.vtl b/tests/AST/data/vtl/library_items.vtl index f00142e8..3be93cbf 100644 --- a/tests/AST/data/vtl/library_items.vtl +++ b/tests/AST/data/vtl/library_items.vtl @@ -2,6 +2,12 @@ define hierarchical ruleset accountingEntry (variable rule ACCOUNTING_ENTRY) is B = C - D errorcode "Balance(credit-debit)" errorlevel 4; N = A - L errorcode "Net(assets-liabilities)" errorlevel 4 end hierarchical ruleset; + +define hierarchical ruleset accountingEntry (variable rule ACCOUNTING_ENTRY) is + B = C - D errorcode "Balance(credit-debit)" errorlevel 4; + N = -C errorcode "Net(assets-liabilities)" errorlevel 4 +end hierarchical ruleset; + define datapoint ruleset signValidation (variable ACCOUNTING_ENTRY as AE, INT_ACC_ITEM as IAI, FUNCTIONAL_CAT as FC, INSTR_ASSET as IA, OBS_VALUE as O) is sign1c: when AE = "C" and IAI = "G" then O > 0; From f2f66b3c2534965a90461b029556eddd78fe0498 Mon Sep 17 00:00:00 2001 From: Alberto <155883871+albertohernandez1995@users.noreply.github.com> Date: Tue, 25 Feb 2025 16:29:52 +0100 Subject: [PATCH 2/2] Updated conditional mypy annotation. --- src/vtlengine/Operators/Conditional.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vtlengine/Operators/Conditional.py b/src/vtlengine/Operators/Conditional.py index e78e5c11..dee9fc0e 100644 --- a/src/vtlengine/Operators/Conditional.py +++ b/src/vtlengine/Operators/Conditional.py @@ -381,7 +381,7 @@ def evaluate( ] ) - result.data.loc[condition_mask_else, columns] = ( + result.data.loc[condition_mask_else, columns] = ( # type:ignore[index, unused-ignore] elseOp.value if isinstance(elseOp, Scalar) else elseOp.data.loc[condition_mask_else, columns]