diff --git a/src/rougail/annotator/value.py b/src/rougail/annotator/value.py index 3a9cc4428..6a03612c3 100644 --- a/src/rougail/annotator/value.py +++ b/src/rougail/annotator/value.py @@ -55,6 +55,8 @@ class Annotator(Walk): # pylint: disable=R0903 for variable in self.get_variables(): if variable.type == "symlink": continue + if variable.version != '1.0' and variable.type == 'port': + self._convert_port(variable) self._convert_value(variable) def _convert_value( @@ -98,6 +100,14 @@ class Annotator(Walk): # pylint: disable=R0903 self.objectspace.default_multi[variable.path] = variable.default variable.default = None + def _convert_port(self, variable) -> None: + if variable.multi is False and isinstance(variable.default, int): + variable.default = str(variable.default) + elif variable.multi is True and variable.default: + for idx, value in enumerate(variable.default): + if isinstance(value, int): + variable.default[idx] = str(value) + def valid_choices(self) -> None: """A variable with type "Choice" that is not mandatory must has "nil" value""" for variable in self.get_variables(): diff --git a/tests/dictionaries/00_6port/__init__.py b/tests/dictionaries/00_6port/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/dictionaries/00_6port/dictionaries/rougail/00-base.yml b/tests/dictionaries/00_6port/dictionaries/rougail/00-base.yml new file mode 100644 index 000000000..da85b9809 --- /dev/null +++ b/tests/dictionaries/00_6port/dictionaries/rougail/00-base.yml @@ -0,0 +1,13 @@ +--- +version: '1.1' +variable1: + description: a port variable + type: port +variable2: + description: a port variable with default value + type: port + default: '8080' +variable3: + description: a port variable with integer default value + type: port + default: 8080 diff --git a/tests/dictionaries/00_6port/makedict/after.json b/tests/dictionaries/00_6port/makedict/after.json new file mode 100644 index 000000000..0a37d48b7 --- /dev/null +++ b/tests/dictionaries/00_6port/makedict/after.json @@ -0,0 +1,14 @@ +{ + "rougail.variable1": { + "owner": "default", + "value": null + }, + "rougail.variable2": { + "owner": "default", + "value": "8080" + }, + "rougail.variable3": { + "owner": "default", + "value": "8080" + } +} diff --git a/tests/dictionaries/00_6port/makedict/base.json b/tests/dictionaries/00_6port/makedict/base.json new file mode 100644 index 000000000..81884cf85 --- /dev/null +++ b/tests/dictionaries/00_6port/makedict/base.json @@ -0,0 +1,5 @@ +{ + "rougail.variable1": null, + "rougail.variable2": "8080", + "rougail.variable3": "8080" +} diff --git a/tests/dictionaries/00_6port/makedict/before.json b/tests/dictionaries/00_6port/makedict/before.json new file mode 100644 index 000000000..0a37d48b7 --- /dev/null +++ b/tests/dictionaries/00_6port/makedict/before.json @@ -0,0 +1,14 @@ +{ + "rougail.variable1": { + "owner": "default", + "value": null + }, + "rougail.variable2": { + "owner": "default", + "value": "8080" + }, + "rougail.variable3": { + "owner": "default", + "value": "8080" + } +} diff --git a/tests/dictionaries/00_6port/makedict/mandatory.json b/tests/dictionaries/00_6port/makedict/mandatory.json new file mode 100644 index 000000000..c1b1e76bf --- /dev/null +++ b/tests/dictionaries/00_6port/makedict/mandatory.json @@ -0,0 +1 @@ +["rougail.variable1"] \ No newline at end of file diff --git a/tests/dictionaries/00_6port/tiramisu/base.py b/tests/dictionaries/00_6port/tiramisu/base.py new file mode 100644 index 000000000..1a4b6592e --- /dev/null +++ b/tests/dictionaries/00_6port/tiramisu/base.py @@ -0,0 +1,12 @@ +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 = PortOption(name="variable1", doc="a port variable", allow_private=True, properties=frozenset({"basic", "mandatory"}), informations={'type': 'port'}) +option_3 = PortOption(name="variable2", doc="a port variable with default value", default="8080", allow_private=True, properties=frozenset({"mandatory", "standard"}), informations={'type': 'port'}) +option_4 = PortOption(name="variable3", doc="a port variable with integer default value", default="8080", allow_private=True, properties=frozenset({"mandatory", "standard"}), informations={'type': 'port'}) +optiondescription_1 = OptionDescription(name="rougail", doc="Rougail", children=[option_2, option_3, option_4], properties=frozenset({"basic"})) +option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[optiondescription_1]) diff --git a/tests/dictionaries/00_6port/tiramisu/multi.py b/tests/dictionaries/00_6port/tiramisu/multi.py new file mode 100644 index 000000000..d3e1f6a91 --- /dev/null +++ b/tests/dictionaries/00_6port/tiramisu/multi.py @@ -0,0 +1,18 @@ +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 = PortOption(name="variable1", doc="a port variable", allow_private=True, properties=frozenset({"basic", "mandatory"}), informations={'type': 'port'}) +option_4 = PortOption(name="variable2", doc="a port variable with default value", default="8080", allow_private=True, properties=frozenset({"mandatory", "standard"}), informations={'type': 'port'}) +option_5 = PortOption(name="variable3", doc="a port variable with integer default value", default="8080", allow_private=True, properties=frozenset({"mandatory", "standard"}), informations={'type': 'port'}) +optiondescription_2 = OptionDescription(name="rougail", doc="Rougail", children=[option_3, option_4, option_5], properties=frozenset({"basic"})) +optiondescription_1 = OptionDescription(name="1", doc="1", children=[optiondescription_2], properties=frozenset({"basic"})) +option_8 = PortOption(name="variable1", doc="a port variable", allow_private=True, properties=frozenset({"basic", "mandatory"}), informations={'type': 'port'}) +option_9 = PortOption(name="variable2", doc="a port variable with default value", default="8080", allow_private=True, properties=frozenset({"mandatory", "standard"}), informations={'type': 'port'}) +option_10 = PortOption(name="variable3", doc="a port variable with integer default value", default="8080", allow_private=True, properties=frozenset({"mandatory", "standard"}), informations={'type': 'port'}) +optiondescription_7 = OptionDescription(name="rougail", doc="Rougail", children=[option_8, option_9, option_10], properties=frozenset({"basic"})) +optiondescription_6 = OptionDescription(name="2", doc="2", children=[optiondescription_7], properties=frozenset({"basic"})) +option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[optiondescription_1, optiondescription_6]) diff --git a/tests/dictionaries/00_6port/tiramisu/no_namespace.py b/tests/dictionaries/00_6port/tiramisu/no_namespace.py new file mode 100644 index 000000000..173cba6c4 --- /dev/null +++ b/tests/dictionaries/00_6port/tiramisu/no_namespace.py @@ -0,0 +1,11 @@ +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 = PortOption(name="variable1", doc="a port variable", allow_private=True, properties=frozenset({"basic", "mandatory"}), informations={'type': 'port'}) +option_2 = PortOption(name="variable2", doc="a port variable with default value", default="8080", allow_private=True, properties=frozenset({"mandatory", "standard"}), informations={'type': 'port'}) +option_3 = PortOption(name="variable3", doc="a port variable with integer default value", default="8080", allow_private=True, properties=frozenset({"mandatory", "standard"}), informations={'type': 'port'}) +option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_2, option_3])