From ccb4eff30b6e706c1b77bbb8f5db12a7378e77d1 Mon Sep 17 00:00:00 2001 From: gremond Date: Wed, 4 Sep 2024 17:30:38 +0200 Subject: [PATCH] Quick definition of an optional parameter variable (#24) Co-authored-by: gwen Co-authored-by: gwen Co-authored-by: Emmanuel Garette Reviewed-on: https://forge.cloud.silique.fr/stove/rougail/pulls/24 Co-authored-by: gremond Co-committed-by: gremond --- src/rougail/annotator/variable.py | 2 ++ src/rougail/object_model.py | 3 +++ .../tiramisu/base.py | 1 + .../tiramisu/multi.py | 1 + .../tiramisu/no_namespace.py | 1 + tests/dictionaries/00_6port/tiramisu/base.py | 1 + tests/dictionaries/00_6port/tiramisu/multi.py | 1 + tests/dictionaries/00_6port/tiramisu/no_namespace.py | 1 + .../80family_dynamic_optional/dictionaries/rougail/00-base.yml | 1 + 9 files changed, 12 insertions(+) diff --git a/src/rougail/annotator/variable.py b/src/rougail/annotator/variable.py index 90d5835cc..b753485fb 100644 --- a/src/rougail/annotator/variable.py +++ b/src/rougail/annotator/variable.py @@ -138,6 +138,8 @@ class Annotator(Walk): # pylint: disable=R0903 calculated_variable, suffix = self.objectspace.paths.get_with_dynamic( calculated_variable_path, variable.default.path_prefix, variable.path, variable.version, variable.namespace, variable.xmlfiles ) + if calculated_variable is None: + return variable.type = calculated_variable.type if variable.params is None and calculated_variable.params is not None: variable.params = calculated_variable.params diff --git a/src/rougail/object_model.py b/src/rougail/object_model.py index 333a028fe..da8536501 100644 --- a/src/rougail/object_model.py +++ b/src/rougail/object_model.py @@ -606,6 +606,9 @@ class SuffixCalculation(_SuffixCalculation): self, objectspace, ) -> dict: + suffix = {"type": "suffix"} + if self.suffix is not None: + suffix["suffix"] = self.suffix return { "function": "calc_value", "params": {None: [self.get_suffix()]}, diff --git a/tests/dictionaries/00_2default_calculated_variable_transitive/tiramisu/base.py b/tests/dictionaries/00_2default_calculated_variable_transitive/tiramisu/base.py index 50a814961..dd4fc4bb3 100644 --- a/tests/dictionaries/00_2default_calculated_variable_transitive/tiramisu/base.py +++ b/tests/dictionaries/00_2default_calculated_variable_transitive/tiramisu/base.py @@ -1,5 +1,6 @@ from tiramisu import * from tiramisu.setting import ALLOWED_LEADER_PROPERTIES +from re import compile as re_compile from rougail.tiramisu import func, dict_env, load_functions, ConvertDynOptionDescription load_functions('tests/dictionaries/../eosfunc/test.py') ALLOWED_LEADER_PROPERTIES.add("basic") diff --git a/tests/dictionaries/00_2default_calculated_variable_transitive/tiramisu/multi.py b/tests/dictionaries/00_2default_calculated_variable_transitive/tiramisu/multi.py index 87aa50795..ee3120c22 100644 --- a/tests/dictionaries/00_2default_calculated_variable_transitive/tiramisu/multi.py +++ b/tests/dictionaries/00_2default_calculated_variable_transitive/tiramisu/multi.py @@ -1,5 +1,6 @@ from tiramisu import * from tiramisu.setting import ALLOWED_LEADER_PROPERTIES +from re import compile as re_compile from rougail.tiramisu import func, dict_env, load_functions, ConvertDynOptionDescription load_functions('tests/dictionaries/../eosfunc/test.py') ALLOWED_LEADER_PROPERTIES.add("basic") diff --git a/tests/dictionaries/00_2default_calculated_variable_transitive/tiramisu/no_namespace.py b/tests/dictionaries/00_2default_calculated_variable_transitive/tiramisu/no_namespace.py index 1b3e95c94..71b0c5a77 100644 --- a/tests/dictionaries/00_2default_calculated_variable_transitive/tiramisu/no_namespace.py +++ b/tests/dictionaries/00_2default_calculated_variable_transitive/tiramisu/no_namespace.py @@ -1,5 +1,6 @@ from tiramisu import * from tiramisu.setting import ALLOWED_LEADER_PROPERTIES +from re import compile as re_compile from rougail.tiramisu import func, dict_env, load_functions, ConvertDynOptionDescription load_functions('tests/dictionaries/../eosfunc/test.py') ALLOWED_LEADER_PROPERTIES.add("basic") diff --git a/tests/dictionaries/00_6port/tiramisu/base.py b/tests/dictionaries/00_6port/tiramisu/base.py index 1a4b6592e..b262e9423 100644 --- a/tests/dictionaries/00_6port/tiramisu/base.py +++ b/tests/dictionaries/00_6port/tiramisu/base.py @@ -1,5 +1,6 @@ from tiramisu import * from tiramisu.setting import ALLOWED_LEADER_PROPERTIES +from re import compile as re_compile from rougail.tiramisu import func, dict_env, load_functions, ConvertDynOptionDescription load_functions('tests/dictionaries/../eosfunc/test.py') ALLOWED_LEADER_PROPERTIES.add("basic") diff --git a/tests/dictionaries/00_6port/tiramisu/multi.py b/tests/dictionaries/00_6port/tiramisu/multi.py index d3e1f6a91..91239f58b 100644 --- a/tests/dictionaries/00_6port/tiramisu/multi.py +++ b/tests/dictionaries/00_6port/tiramisu/multi.py @@ -1,5 +1,6 @@ from tiramisu import * from tiramisu.setting import ALLOWED_LEADER_PROPERTIES +from re import compile as re_compile from rougail.tiramisu import func, dict_env, load_functions, ConvertDynOptionDescription load_functions('tests/dictionaries/../eosfunc/test.py') ALLOWED_LEADER_PROPERTIES.add("basic") diff --git a/tests/dictionaries/00_6port/tiramisu/no_namespace.py b/tests/dictionaries/00_6port/tiramisu/no_namespace.py index 173cba6c4..e34b6b243 100644 --- a/tests/dictionaries/00_6port/tiramisu/no_namespace.py +++ b/tests/dictionaries/00_6port/tiramisu/no_namespace.py @@ -1,5 +1,6 @@ from tiramisu import * from tiramisu.setting import ALLOWED_LEADER_PROPERTIES +from re import compile as re_compile from rougail.tiramisu import func, dict_env, load_functions, ConvertDynOptionDescription load_functions('tests/dictionaries/../eosfunc/test.py') ALLOWED_LEADER_PROPERTIES.add("basic") diff --git a/tests/dictionaries/80family_dynamic_optional/dictionaries/rougail/00-base.yml b/tests/dictionaries/80family_dynamic_optional/dictionaries/rougail/00-base.yml index a91767b68..8501ee862 100644 --- a/tests/dictionaries/80family_dynamic_optional/dictionaries/rougail/00-base.yml +++ b/tests/dictionaries/80family_dynamic_optional/dictionaries/rougail/00-base.yml @@ -5,6 +5,7 @@ varname: - val1 dyn{{ suffix }}: dynamic: + type: variable variable: _.varname optional: true vardyn: