diff --git a/src/rougail/tiramisu.py b/src/rougail/tiramisu.py index 6d986a749..4b680479d 100644 --- a/src/rougail/tiramisu.py +++ b/src/rougail/tiramisu.py @@ -408,8 +408,8 @@ class ConvertDynOptionDescription(DynOptionDescription): """Identifier could be an integer, we should convert it in str Identifier could also contain invalid character, so we should "normalize" it """ - - def convert_identifier_to_path(self, identifier): + @staticmethod + def convert_identifier_to_path(identifier): if identifier is None: return identifier if not isinstance(identifier, str): diff --git a/tests/dictionaries/60_0family_dynamic_source_hidden/makedict/after.json b/tests/dictionaries/60_0family_dynamic_source_hidden/makedict/after.json new file mode 100644 index 000000000..e72db9d1d --- /dev/null +++ b/tests/dictionaries/60_0family_dynamic_source_hidden/makedict/after.json @@ -0,0 +1,17 @@ +{ + "rougail.var": { + "owner": "default", + "value": [ + "val1", + "val2" + ] + }, + "rougail.dynval1.var": { + "owner": "default", + "value": null + }, + "rougail.dynval2.var": { + "owner": "default", + "value": null + } +} diff --git a/tests/dictionaries/60_0family_dynamic_source_hidden/makedict/base.json b/tests/dictionaries/60_0family_dynamic_source_hidden/makedict/base.json new file mode 100644 index 000000000..475b83369 --- /dev/null +++ b/tests/dictionaries/60_0family_dynamic_source_hidden/makedict/base.json @@ -0,0 +1,8 @@ +{ + "rougail.var": [ + "val1", + "val2" + ], + "rougail.dynval1.var": null, + "rougail.dynval2.var": null +} diff --git a/tests/dictionaries/60_0family_dynamic_source_hidden/makedict/before.json b/tests/dictionaries/60_0family_dynamic_source_hidden/makedict/before.json new file mode 100644 index 000000000..e72db9d1d --- /dev/null +++ b/tests/dictionaries/60_0family_dynamic_source_hidden/makedict/before.json @@ -0,0 +1,17 @@ +{ + "rougail.var": { + "owner": "default", + "value": [ + "val1", + "val2" + ] + }, + "rougail.dynval1.var": { + "owner": "default", + "value": null + }, + "rougail.dynval2.var": { + "owner": "default", + "value": null + } +} diff --git a/tests/dictionaries/60_0family_dynamic_source_hidden/makedict/mandatory.json b/tests/dictionaries/60_0family_dynamic_source_hidden/makedict/mandatory.json new file mode 100644 index 000000000..ab51d9ec5 --- /dev/null +++ b/tests/dictionaries/60_0family_dynamic_source_hidden/makedict/mandatory.json @@ -0,0 +1 @@ +["rougail.dynval1.var", "rougail.dynval2.var"] \ No newline at end of file diff --git a/tests/dictionaries/60_0family_dynamic_source_hidden/makedict/read_write.json b/tests/dictionaries/60_0family_dynamic_source_hidden/makedict/read_write.json new file mode 100644 index 000000000..db2d079cd --- /dev/null +++ b/tests/dictionaries/60_0family_dynamic_source_hidden/makedict/read_write.json @@ -0,0 +1,4 @@ +{ + "rougail.dynval1.var": null, + "rougail.dynval2.var": null +} diff --git a/tests/dictionaries/60_0family_dynamic_source_hidden/tiramisu/base.py b/tests/dictionaries/60_0family_dynamic_source_hidden/tiramisu/base.py new file mode 100644 index 000000000..8316b50c1 --- /dev/null +++ b/tests/dictionaries/60_0family_dynamic_source_hidden/tiramisu/base.py @@ -0,0 +1,17 @@ +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('../rougail-tests/funcs/test.py') +try: + groups.namespace +except: + groups.addgroup('namespace') +ALLOWED_LEADER_PROPERTIES.add("basic") +ALLOWED_LEADER_PROPERTIES.add("standard") +ALLOWED_LEADER_PROPERTIES.add("advanced") +option_2 = StrOption(name="var", doc="A suffix variable", multi=True, default=["val1", "val2"], default_multi="val1", properties=frozenset({"force_default_on_freeze", "frozen", "hidden", "mandatory", "standard"}), informations={'ymlfiles': ['../rougail-tests/structures/60_0family_dynamic_source_hidden/rougail/00-base.yml'], 'type': 'string'}) +option_4 = StrOption(name="var", doc="A dynamic variable", properties=frozenset({"basic", "mandatory"}), informations={'ymlfiles': ['../rougail-tests/structures/60_0family_dynamic_source_hidden/rougail/00-base.yml'], 'type': 'string'}) +optiondescription_3 = ConvertDynOptionDescription(name="dyn{{ identifier }}", doc="A dynamic family", identifiers=Calculation(func['calc_value'], Params((ParamOption(option_2)))), children=[option_4], properties=frozenset({"basic"}), informations={'dynamic_variable': 'rougail.var', 'ymlfiles': ['../rougail-tests/structures/60_0family_dynamic_source_hidden/rougail/00-base.yml']}) +optiondescription_1 = OptionDescription(name="rougail", doc="Rougail", group_type=groups.namespace, children=[option_2, optiondescription_3], properties=frozenset({"basic"}), informations={'ymlfiles': ['']}) +option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[optiondescription_1]) diff --git a/tests/dictionaries/60_0family_dynamic_source_hidden/tiramisu/no_namespace.py b/tests/dictionaries/60_0family_dynamic_source_hidden/tiramisu/no_namespace.py new file mode 100644 index 000000000..8b37a7ed5 --- /dev/null +++ b/tests/dictionaries/60_0family_dynamic_source_hidden/tiramisu/no_namespace.py @@ -0,0 +1,12 @@ +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('../rougail-tests/funcs/test.py') +ALLOWED_LEADER_PROPERTIES.add("basic") +ALLOWED_LEADER_PROPERTIES.add("standard") +ALLOWED_LEADER_PROPERTIES.add("advanced") +option_1 = StrOption(name="var", doc="A suffix variable", multi=True, default=["val1", "val2"], default_multi="val1", properties=frozenset({"force_default_on_freeze", "frozen", "hidden", "mandatory", "standard"}), informations={'ymlfiles': ['../rougail-tests/structures/60_0family_dynamic_source_hidden/rougail/00-base.yml'], 'type': 'string'}) +option_3 = StrOption(name="var", doc="A dynamic variable", properties=frozenset({"basic", "mandatory"}), informations={'ymlfiles': ['../rougail-tests/structures/60_0family_dynamic_source_hidden/rougail/00-base.yml'], 'type': 'string'}) +optiondescription_2 = ConvertDynOptionDescription(name="dyn{{ identifier }}", doc="A dynamic family", identifiers=Calculation(func['calc_value'], Params((ParamOption(option_1)))), children=[option_3], properties=frozenset({"basic"}), informations={'dynamic_variable': 'var', 'ymlfiles': ['../rougail-tests/structures/60_0family_dynamic_source_hidden/rougail/00-base.yml']}) +option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, optiondescription_2]) diff --git a/tests/test_1_flattener.py b/tests/test_1_flattener.py index c82fe571b..beea1cea0 100644 --- a/tests/test_1_flattener.py +++ b/tests/test_1_flattener.py @@ -47,7 +47,7 @@ excludes = set([ ]) test_ok -= excludes test_raise -= excludes -#test_ok = ['04_5disabled_calculation_boolean'] +#test_ok = ['60_0family_dynamic_source_hidden'] #test_ok = [] # test_raise = ['80unknown_default_variable_inside_dynamic_family'] #test_raise = []