From 4027aebf9606741440c3fe8bf6d50c8bdd52ed94 Mon Sep 17 00:00:00 2001 From: Emmanuel Garette Date: Thu, 8 Aug 2024 11:41:03 +0200 Subject: [PATCH] corrections --- src/rougail/object_model.py | 24 ++++--- src/rougail/tiramisureflector.py | 7 -- .../dictionaries/rougail/00-base.yml | 1 + .../__init__.py | 0 .../dictionaries/rougail/00-base.yml | 14 ---- .../tiramisu/base.py | 24 ------- .../tiramisu/multi.py | 51 ------------- .../tiramisu/no_namespace.py | 16 ----- .../__init__.py | 0 .../dictionaries/rougail/00-base.yml | 14 ---- .../tiramisu/base.py | 34 --------- .../tiramisu/multi.py | 71 ------------------- .../tiramisu/no_namespace.py | 27 ------- 13 files changed, 14 insertions(+), 269 deletions(-) delete mode 100644 tests/dictionaries/90_optional_parameter_in_variable_default/__init__.py delete mode 100644 tests/dictionaries/90_optional_parameter_in_variable_default/dictionaries/rougail/00-base.yml delete mode 100644 tests/dictionaries/90_optional_parameter_in_variable_default/tiramisu/base.py delete mode 100644 tests/dictionaries/90_optional_parameter_in_variable_default/tiramisu/multi.py delete mode 100644 tests/dictionaries/90_optional_parameter_in_variable_default/tiramisu/no_namespace.py delete mode 100644 tests/dictionaries/90_optional_parameter_in_variable_exists/__init__.py delete mode 100644 tests/dictionaries/90_optional_parameter_in_variable_exists/dictionaries/rougail/00-base.yml delete mode 100644 tests/dictionaries/90_optional_parameter_in_variable_exists/tiramisu/base.py delete mode 100644 tests/dictionaries/90_optional_parameter_in_variable_exists/tiramisu/multi.py delete mode 100644 tests/dictionaries/90_optional_parameter_in_variable_exists/tiramisu/no_namespace.py diff --git a/src/rougail/object_model.py b/src/rougail/object_model.py index 7dbadfba6..da8536501 100644 --- a/src/rougail/object_model.py +++ b/src/rougail/object_model.py @@ -428,12 +428,8 @@ class _VariableCalculation(Calculation): needs_multi: Optional[bool] = None, ): if not variable: - if self.optional: - msg = f'the dependent variable was not found "{self.optional}" for variable "{self.path}"' - raise VariableCalculationDependencyError(msg, 90, self.xmlfiles) - if not isinstance(variable, objectspace.variable): - # FIXME remove the pfff - raise Exception("pfff it's a family") + msg = f'Variable not found "{self.variable}" for attribut "{self.attribute_name}" for variable "{self.path}"' + raise DictConsistencyError(msg, 88, self.xmlfiles) param = { "type": "variable", "variable": variable, @@ -490,11 +486,17 @@ class VariableCalculation(_VariableCalculation): self, objectspace, ) -> dict: - params = self.get_params(objectspace) - if self.attribute_name == "choices": - if hasattr(self, "optional") and self.optional is True: - msg = "'choices' variable shall not have an 'optional' atttibute" - raise DictConsistencyError(msg, 33, self.xmlfiles) + if self.attribute_name != "default" and self.optional is True: + msg = f'"{self.attribute_name}" variable shall not have an "optional" attribute for variable "{self.variable}"' + raise DictConsistencyError(msg, 33, self.xmlfiles) + variable, suffix = self.get_variable(objectspace) + if not variable and self.optional: + msg = f'the dependent variable was not found "{self.optional}" for attribute "{self.attribute_name}" in variable "{self.path}"' + raise VariableCalculationDependencyError(msg, 90, self.xmlfiles) + params = self.get_params(objectspace, + variable, + suffix, + ) return { "function": "calc_value", "params": params, diff --git a/src/rougail/tiramisureflector.py b/src/rougail/tiramisureflector.py index 47298c4b8..dfc985709 100644 --- a/src/rougail/tiramisureflector.py +++ b/src/rougail/tiramisureflector.py @@ -478,13 +478,6 @@ class Variable(Common): keys["default"] = self.populate_calculation(self.elt.default) except VariableCalculationDependencyError: pass - # for attribute in ["frozen", "hidden", "mandatory", "disabled"]: - # if hasattr(self.elt, attribute): # FIXME FIXME and attribute == "optional": - # raise DictConsistencyError( - # f"Sub-attributes not allowed in a '{attribute}' attribute", - # 100, - # self.elt.xmlfiles, - # ) if self.elt.path in self.objectspace.default_multi: try: keys["default_multi"] = self.populate_calculation( 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: diff --git a/tests/dictionaries/90_optional_parameter_in_variable_default/__init__.py b/tests/dictionaries/90_optional_parameter_in_variable_default/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/tests/dictionaries/90_optional_parameter_in_variable_default/dictionaries/rougail/00-base.yml b/tests/dictionaries/90_optional_parameter_in_variable_default/dictionaries/rougail/00-base.yml deleted file mode 100644 index 4a017adc3..000000000 --- a/tests/dictionaries/90_optional_parameter_in_variable_default/dictionaries/rougail/00-base.yml +++ /dev/null @@ -1,14 +0,0 @@ ---- -version: 1.1 -#my_variable: -# multi: true -# default: -# - val1 -# - val2 -my_calculated_variable: - multi: true - default: - type: variable - variable: rougail.my_variable - optional: true - diff --git a/tests/dictionaries/90_optional_parameter_in_variable_default/tiramisu/base.py b/tests/dictionaries/90_optional_parameter_in_variable_default/tiramisu/base.py deleted file mode 100644 index 704faff60..000000000 --- a/tests/dictionaries/90_optional_parameter_in_variable_default/tiramisu/base.py +++ /dev/null @@ -1,24 +0,0 @@ -from tiramisu import * -from tiramisu.setting import ALLOWED_LEADER_PROPERTIES -from rougail.tiramisu import func, dict_env, load_functions, ConvertDynOptionDescription - -load_functions("tests/dictionaries/../eosfunc/test.py") -ALLOWED_LEADER_PROPERTIES.add("basic") -ALLOWED_LEADER_PROPERTIES.add("standard") -ALLOWED_LEADER_PROPERTIES.add("advanced") -option_2 = StrOption( - name="my_calculated_variable", - doc="my_calculated_variable", - multi=True, - properties=frozenset({"mandatory", "notempty", "standard"}), - informations={"type": "string"}, -) -optiondescription_1 = OptionDescription( - name="rougail", - doc="Rougail", - children=[option_2], - properties=frozenset({"standard"}), -) -option_0 = OptionDescription( - name="baseoption", doc="baseoption", children=[optiondescription_1] -) diff --git a/tests/dictionaries/90_optional_parameter_in_variable_default/tiramisu/multi.py b/tests/dictionaries/90_optional_parameter_in_variable_default/tiramisu/multi.py deleted file mode 100644 index 6bee1bb59..000000000 --- a/tests/dictionaries/90_optional_parameter_in_variable_default/tiramisu/multi.py +++ /dev/null @@ -1,51 +0,0 @@ -from tiramisu import * -from tiramisu.setting import ALLOWED_LEADER_PROPERTIES -from rougail.tiramisu import func, dict_env, load_functions, ConvertDynOptionDescription - -load_functions("tests/dictionaries/../eosfunc/test.py") -ALLOWED_LEADER_PROPERTIES.add("basic") -ALLOWED_LEADER_PROPERTIES.add("standard") -ALLOWED_LEADER_PROPERTIES.add("advanced") -option_3 = StrOption( - name="my_calculated_variable", - doc="my_calculated_variable", - multi=True, - properties=frozenset({"mandatory", "notempty", "standard"}), - informations={"type": "string"}, -) -optiondescription_2 = OptionDescription( - name="rougail", - doc="Rougail", - children=[option_3], - properties=frozenset({"standard"}), -) -optiondescription_1 = OptionDescription( - name="1", - doc="1", - children=[optiondescription_2], - properties=frozenset({"standard"}), -) -option_6 = StrOption( - name="my_calculated_variable", - doc="my_calculated_variable", - multi=True, - properties=frozenset({"mandatory", "notempty", "standard"}), - informations={"type": "string"}, -) -optiondescription_5 = OptionDescription( - name="rougail", - doc="Rougail", - children=[option_6], - properties=frozenset({"standard"}), -) -optiondescription_4 = OptionDescription( - name="2", - doc="2", - children=[optiondescription_5], - properties=frozenset({"standard"}), -) -option_0 = OptionDescription( - name="baseoption", - doc="baseoption", - children=[optiondescription_1, optiondescription_4], -) diff --git a/tests/dictionaries/90_optional_parameter_in_variable_default/tiramisu/no_namespace.py b/tests/dictionaries/90_optional_parameter_in_variable_default/tiramisu/no_namespace.py deleted file mode 100644 index 900cb0f70..000000000 --- a/tests/dictionaries/90_optional_parameter_in_variable_default/tiramisu/no_namespace.py +++ /dev/null @@ -1,16 +0,0 @@ -from tiramisu import * -from tiramisu.setting import ALLOWED_LEADER_PROPERTIES -from rougail.tiramisu import func, dict_env, load_functions, ConvertDynOptionDescription - -load_functions("tests/dictionaries/../eosfunc/test.py") -ALLOWED_LEADER_PROPERTIES.add("basic") -ALLOWED_LEADER_PROPERTIES.add("standard") -ALLOWED_LEADER_PROPERTIES.add("advanced") -option_1 = StrOption( - name="my_calculated_variable", - doc="my_calculated_variable", - multi=True, - properties=frozenset({"mandatory", "notempty", "standard"}), - informations={"type": "string"}, -) -option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1]) diff --git a/tests/dictionaries/90_optional_parameter_in_variable_exists/__init__.py b/tests/dictionaries/90_optional_parameter_in_variable_exists/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/tests/dictionaries/90_optional_parameter_in_variable_exists/dictionaries/rougail/00-base.yml b/tests/dictionaries/90_optional_parameter_in_variable_exists/dictionaries/rougail/00-base.yml deleted file mode 100644 index 61cf089c9..000000000 --- a/tests/dictionaries/90_optional_parameter_in_variable_exists/dictionaries/rougail/00-base.yml +++ /dev/null @@ -1,14 +0,0 @@ ---- -version: 1.1 -my_variable: - multi: true - default: - - val1 - - val2 -my_calculated_variable: - multi: true - default: - type: variable - variable: rougail.my_variable - optional: true - diff --git a/tests/dictionaries/90_optional_parameter_in_variable_exists/tiramisu/base.py b/tests/dictionaries/90_optional_parameter_in_variable_exists/tiramisu/base.py deleted file mode 100644 index 324e229ad..000000000 --- a/tests/dictionaries/90_optional_parameter_in_variable_exists/tiramisu/base.py +++ /dev/null @@ -1,34 +0,0 @@ -from tiramisu import * -from tiramisu.setting import ALLOWED_LEADER_PROPERTIES -from rougail.tiramisu import func, dict_env, load_functions, ConvertDynOptionDescription - -load_functions("tests/dictionaries/../eosfunc/test.py") -ALLOWED_LEADER_PROPERTIES.add("basic") -ALLOWED_LEADER_PROPERTIES.add("standard") -ALLOWED_LEADER_PROPERTIES.add("advanced") -option_2 = StrOption( - name="my_variable", - doc="my_variable", - multi=True, - default=["val1", "val2"], - default_multi="val1", - properties=frozenset({"mandatory", "notempty", "standard"}), - informations={"type": "string"}, -) -option_3 = StrOption( - name="my_calculated_variable", - doc="my_calculated_variable", - multi=True, - default=Calculation(func["calc_value"], Params((ParamOption(option_2)))), - properties=frozenset({"mandatory", "notempty", "standard"}), - informations={"type": "string"}, -) -optiondescription_1 = OptionDescription( - name="rougail", - doc="Rougail", - children=[option_2, option_3], - properties=frozenset({"standard"}), -) -option_0 = OptionDescription( - name="baseoption", doc="baseoption", children=[optiondescription_1] -) diff --git a/tests/dictionaries/90_optional_parameter_in_variable_exists/tiramisu/multi.py b/tests/dictionaries/90_optional_parameter_in_variable_exists/tiramisu/multi.py deleted file mode 100644 index 5eb82f46e..000000000 --- a/tests/dictionaries/90_optional_parameter_in_variable_exists/tiramisu/multi.py +++ /dev/null @@ -1,71 +0,0 @@ -from tiramisu import * -from tiramisu.setting import ALLOWED_LEADER_PROPERTIES -from rougail.tiramisu import func, dict_env, load_functions, ConvertDynOptionDescription - -load_functions("tests/dictionaries/../eosfunc/test.py") -ALLOWED_LEADER_PROPERTIES.add("basic") -ALLOWED_LEADER_PROPERTIES.add("standard") -ALLOWED_LEADER_PROPERTIES.add("advanced") -option_3 = StrOption( - name="my_variable", - doc="my_variable", - multi=True, - default=["val1", "val2"], - default_multi="val1", - properties=frozenset({"mandatory", "notempty", "standard"}), - informations={"type": "string"}, -) -option_4 = StrOption( - name="my_calculated_variable", - doc="my_calculated_variable", - multi=True, - default=Calculation(func["calc_value"], Params((ParamOption(option_3)))), - properties=frozenset({"mandatory", "notempty", "standard"}), - informations={"type": "string"}, -) -optiondescription_2 = OptionDescription( - name="rougail", - doc="Rougail", - children=[option_3, option_4], - properties=frozenset({"standard"}), -) -optiondescription_1 = OptionDescription( - name="1", - doc="1", - children=[optiondescription_2], - properties=frozenset({"standard"}), -) -option_7 = StrOption( - name="my_variable", - doc="my_variable", - multi=True, - default=["val1", "val2"], - default_multi="val1", - properties=frozenset({"mandatory", "notempty", "standard"}), - informations={"type": "string"}, -) -option_8 = StrOption( - name="my_calculated_variable", - doc="my_calculated_variable", - multi=True, - default=Calculation(func["calc_value"], Params((ParamOption(option_7)))), - properties=frozenset({"mandatory", "notempty", "standard"}), - informations={"type": "string"}, -) -optiondescription_6 = OptionDescription( - name="rougail", - doc="Rougail", - children=[option_7, option_8], - properties=frozenset({"standard"}), -) -optiondescription_5 = OptionDescription( - name="2", - doc="2", - children=[optiondescription_6], - properties=frozenset({"standard"}), -) -option_0 = OptionDescription( - name="baseoption", - doc="baseoption", - children=[optiondescription_1, optiondescription_5], -) diff --git a/tests/dictionaries/90_optional_parameter_in_variable_exists/tiramisu/no_namespace.py b/tests/dictionaries/90_optional_parameter_in_variable_exists/tiramisu/no_namespace.py deleted file mode 100644 index 37ec3f4fc..000000000 --- a/tests/dictionaries/90_optional_parameter_in_variable_exists/tiramisu/no_namespace.py +++ /dev/null @@ -1,27 +0,0 @@ -from tiramisu import * -from tiramisu.setting import ALLOWED_LEADER_PROPERTIES -from rougail.tiramisu import func, dict_env, load_functions, ConvertDynOptionDescription - -load_functions("tests/dictionaries/../eosfunc/test.py") -ALLOWED_LEADER_PROPERTIES.add("basic") -ALLOWED_LEADER_PROPERTIES.add("standard") -ALLOWED_LEADER_PROPERTIES.add("advanced") -option_1 = StrOption( - name="my_variable", - doc="my_variable", - multi=True, - default=["val1", "val2"], - default_multi="val1", - properties=frozenset({"mandatory", "notempty", "standard"}), - informations={"type": "string"}, -) -option_2 = StrOption( - name="my_calculated_variable", - doc="my_calculated_variable", - multi=True, - properties=frozenset({"mandatory", "notempty", "standard"}), - informations={"type": "string"}, -) -option_0 = OptionDescription( - name="baseoption", doc="baseoption", children=[option_1, option_2] -)