diff --git a/src/rougail/annotator/condition.py b/src/rougail/annotator/condition.py
index 9391f97e4..31567c890 100644
--- a/src/rougail/annotator/condition.py
+++ b/src/rougail/annotator/condition.py
@@ -33,11 +33,12 @@ from ..config import Config
from .target import TargetAnnotator
from .param import ParamAnnotator
+from .variable import Walk
FREEZE_AUTOFREEZE_VARIABLE = 'module_instancie'
-class ConditionAnnotator(TargetAnnotator, ParamAnnotator):
+class ConditionAnnotator(TargetAnnotator, ParamAnnotator, Walk):
"""Annotate condition
"""
def __init__(self,
@@ -66,16 +67,8 @@ class ConditionAnnotator(TargetAnnotator, ParamAnnotator):
"""convert auto_freeze
only if FREEZE_AUTOFREEZE_VARIABLE == 'oui' this variable is frozen
"""
- for variables in self.objectspace.space.variables.values():
- for family in variables.family.values():
- if not hasattr(family, 'variable'):
- continue
- for variable in family.variable.values():
- if isinstance(variable, self.objectspace.leadership):
- for follower in variable.variable:
- self._convert_auto_freeze(follower)
- else:
- self._convert_auto_freeze(variable)
+ for variable in self.get_variables():
+ self._convert_auto_freeze(variable)
def _convert_auto_freeze(self,
variable: 'self.objectspace.variable',
diff --git a/src/rougail/annotator/family.py b/src/rougail/annotator/family.py
index f4c298572..953a396db 100644
--- a/src/rougail/annotator/family.py
+++ b/src/rougail/annotator/family.py
@@ -27,6 +27,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
from ..i18n import _
from ..error import DictConsistencyError
from ..utils import normalize_family
+from .variable import Walk
#mode order is important
@@ -52,7 +53,7 @@ class Mode: # pylint: disable=R0903
modes = {name: Mode(name, idx) for idx, name in enumerate(modes_level)}
-class FamilyAnnotator:
+class FamilyAnnotator(Walk):
"""Annotate family
"""
def __init__(self,
@@ -67,50 +68,86 @@ class FamilyAnnotator:
self.dynamic_families()
self.convert_help()
+ def _has_variable(self,
+ family: 'self.objectspace.family',
+ ) -> bool:
+ if hasattr(family, 'variable'):
+ for variable in family.variable.values():
+ if isinstance(variable, self.objectspace.family):
+ if self._has_variable(variable):
+ return True
+ else:
+ return True
+ else:
+ return False
+ return False
+
def remove_empty_families(self) -> None:
"""Remove all families without any variable
"""
for families in self.objectspace.space.variables.values():
removed_families = []
- for family_name, family in families.family.items():
- if not hasattr(family, 'variable') or len(family.variable) == 0:
+ for family_name, family in families.variable.items():
+ if isinstance(family, self.objectspace.family) and not self._has_variable(family):
removed_families.append(family_name)
for family_name in removed_families:
- del families.family[family_name]
+ del families.variable[family_name]
def family_names(self) -> None:
"""Set doc, path, ... to family
"""
- for families in self.objectspace.space.variables.values():
- families.doc = families.name
- families.path = families.name
- for family in families.family.values():
- if not hasattr(family, 'description'):
- family.description = family.name
- family.doc = family.description
- del family.description
- family.name = normalize_family(family.name)
+ for family in self.get_families():
+ if not hasattr(family, 'description'):
+ family.description = family.name
+ if not hasattr(family, 'path'):
+ family.path = family.name
+ family.doc = family.description
+ del family.description
+ family.name = normalize_family(family.name)
def change_modes(self):
"""change the mode of variables
"""
- for families in self.objectspace.space.variables.values():
- for family in families.family.values():
- family_mode = family.mode
- # default is high level
- new_family_mode = modes_level[-1]
- for variable in family.variable.values():
- if not isinstance(variable, self.objectspace.leadership):
- func = self._change_variabe_mode
- else:
- func = self._change_variable_mode_leader
- func(variable,
- family_mode,
- )
- if modes[new_family_mode] > modes[variable.mode]:
- new_family_mode = variable.mode
- # set the lower variable mode to family
- family.mode = new_family_mode
+ # default is high level
+ new_family_mode = modes_level[-1]
+ for family in self.objectspace.space.variables.values():
+ self.change_family_mode(family,
+ new_family_mode,
+ first=True,
+ )
+
+ def change_family_mode(self,
+ family: 'self.objectspace.family',
+ new_family_mode: str,
+ first: bool=False,
+ ) -> str:
+ if hasattr(family, 'mode'):
+ family_mode = family.mode
+ else:
+ family_mode = new_family_mode
+ if hasattr(family, 'variable'):
+ # change variable mode, but not if variables are not in a family
+ for variable in family.variable.values():
+ if isinstance(variable, self.objectspace.family):
+ new_family_mode = self.change_family_mode(variable,
+ new_family_mode,
+ )
+ continue
+ if first:
+ continue
+ if isinstance(variable, self.objectspace.leadership):
+ func = self._change_variable_mode_leader
+ else:
+ func = self._change_variabe_mode
+ func(variable,
+ family_mode,
+ )
+ if modes[new_family_mode] > modes[variable.mode]:
+ new_family_mode = variable.mode
+ if not first:
+ # set the lower variable mode to family
+ family.mode = new_family_mode
+ return new_family_mode
def _change_variabe_mode(self,
variable,
@@ -160,25 +197,27 @@ class FamilyAnnotator:
def dynamic_families(self):
"""link dynamic families to object
"""
- for families in self.objectspace.space.variables.values():
- for family in families.family.values():
- if 'dynamic' not in vars(family):
- continue
- family.suffixes = self.objectspace.paths.get_variable(family.dynamic)
- del family.dynamic
- if not family.suffixes.multi:
- msg = _(f'dynamic family "{family.name}" must be linked '
- f'to multi variable')
- raise DictConsistencyError(msg, 16, family.xmlfiles)
+ for family in self.get_families():
+ if 'dynamic' not in vars(family):
+ continue
+ family.suffixes = self.objectspace.paths.get_variable(family.dynamic)
+ del family.dynamic
+ if not family.suffixes.multi:
+ msg = _(f'dynamic family "{family.name}" must be linked '
+ f'to multi variable')
+ raise DictConsistencyError(msg, 16, family.xmlfiles)
+ for variable in family.variable.values():
+ if isinstance(variable, self.objectspace.family):
+ msg = _(f'dynamic family "{family.name}" cannot contains another family')
+ raise DictConsistencyError(msg, 2, family.xmlfiles)
def convert_help(self):
"""Convert variable help
"""
- for families in self.objectspace.space.variables.values():
- for family in families.family.values():
- if not hasattr(family, 'help'):
- continue
- if not hasattr(family, 'information'):
- family.information = self.objectspace.information(family.xmlfiles)
- family.information.help = family.help
- del family.help
+ for family in self.get_families():
+ if not hasattr(family, 'help'):
+ continue
+ if not hasattr(family, 'information'):
+ family.information = self.objectspace.information(family.xmlfiles)
+ family.information.help = family.help
+ del family.help
diff --git a/src/rougail/annotator/property.py b/src/rougail/annotator/property.py
index 5e2d21156..8c6ede7f4 100644
--- a/src/rougail/annotator/property.py
+++ b/src/rougail/annotator/property.py
@@ -26,6 +26,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
"""
from ..i18n import _
from ..error import DictConsistencyError
+from .variable import Walk
PROPERTIES = ('hidden', 'frozen', 'auto_freeze', 'auto_save', 'force_default_on_freeze',
@@ -35,7 +36,7 @@ CONVERT_PROPERTIES = {'auto_save': ['force_store_value'],
}
-class PropertyAnnotator:
+class PropertyAnnotator(Walk):
"""Annotate properties
"""
def __init__(self, objectspace):
@@ -43,7 +44,8 @@ class PropertyAnnotator:
if hasattr(self.objectspace.space, 'services'):
self.convert_services()
if hasattr(self.objectspace.space, 'variables'):
- self.convert_variables()
+ self.convert_family()
+ self.convert_variable()
def convert_property(self,
variable,
@@ -92,15 +94,15 @@ class PropertyAnnotator:
for variable in family.variable:
self.convert_property(variable)
- def convert_variables(self) -> None:
+ def convert_family(self) -> None:
"""convert variables
"""
- for variables in self.objectspace.space.variables.values():
- for family in variables.family.values():
- self.convert_property(family)
- for variable in family.variable.values():
- self.convert_property(variable)
- if not isinstance(variable, self.objectspace.leadership):
- continue
- for follower in variable.variable:
- self.convert_property(follower)
+ for family in self.get_families():
+ self.convert_property(family)
+
+ def convert_variable(self) -> None:
+ for variable in self.get_variables(with_leadership=True):
+ if isinstance(variable, self.objectspace.leadership):
+ for follower in variable.variable:
+ self.convert_property(follower)
+ self.convert_property(variable)
diff --git a/src/rougail/annotator/service.py b/src/rougail/annotator/service.py
index 00fb310a0..ae76c78de 100644
--- a/src/rougail/annotator/service.py
+++ b/src/rougail/annotator/service.py
@@ -35,7 +35,7 @@ from ..error import DictConsistencyError
ERASED_ATTRIBUTES = ('redefine', 'exists', 'fallback', 'optional', 'remove_check', 'namespace',
'remove_condition', 'path', 'instance_mode', 'index',
'level', 'remove_fill', 'xmlfiles', 'type', 'reflector_name',
- 'reflector_object', 'manage')
+ 'reflector_object',)
KEY_TYPE = {'variable': 'symlink',
@@ -76,8 +76,6 @@ class ServiceAnnotator:
self.objectspace.space.services.path = 'services'
for service_name, service in self.objectspace.space.services.service.items():
service.information = self.objectspace.information(service.xmlfiles)
- service.information.manage = service.manage
- service.manage = None
for elttype, values in dict(vars(service)).items():
if not isinstance(values, (dict, list)) or elttype in ERASED_ATTRIBUTES:
continue
diff --git a/src/rougail/annotator/value.py b/src/rougail/annotator/value.py
index 257f9b72f..7b6148eb0 100644
--- a/src/rougail/annotator/value.py
+++ b/src/rougail/annotator/value.py
@@ -24,8 +24,9 @@ You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
"""
+from .variable import Walk
-class ValueAnnotator: # pylint: disable=R0903
+class ValueAnnotator(Walk): # pylint: disable=R0903
"""Annotate value
"""
def __init__(self,
@@ -39,20 +40,16 @@ class ValueAnnotator: # pylint: disable=R0903
def convert_value(self) -> None:
"""convert value
"""
- for families in self.objectspace.space.variables.values():
- for family in families.family.values():
- if not hasattr(family, 'variable'):
- continue
- for variable in family.variable.values():
- if isinstance(variable, self.objectspace.leadership):
- variable_type = 'leader'
- for follower in variable.variable:
- self._convert_value(follower,
- variable_type,
- )
- variable_type = 'follower'
- else:
- self._convert_value(variable)
+ for variable in self.get_variables(with_leadership=True):
+ if isinstance(variable, self.objectspace.leadership):
+ variable_type = 'leader'
+ for follower in variable.variable:
+ self._convert_value(follower,
+ variable_type,
+ )
+ variable_type = 'follower'
+ else:
+ self._convert_value(variable)
def _convert_value(self,
variable,
diff --git a/src/rougail/annotator/variable.py b/src/rougail/annotator/variable.py
index 505b8e45d..246c00e16 100644
--- a/src/rougail/annotator/variable.py
+++ b/src/rougail/annotator/variable.py
@@ -63,7 +63,52 @@ FORCE_CHOICE = {'schedule': ['none', 'daily', 'weekly', 'monthly'],
}
-class VariableAnnotator: # pylint: disable=R0903
+class Walk:
+ """Walk to objectspace to find variable or family
+ """
+ def get_variables(self,
+ with_leadership: bool=False,
+ ):
+ """Iter all variables from the objectspace
+ """
+ for family in self.objectspace.space.variables.values():
+ yield from self._get_variables(family, with_leadership)
+
+ def _get_variables(self,
+ family: 'self.objectspace.family',
+ with_leadership: bool
+ ):
+ if hasattr(family, 'variable'):
+ for variable in family.variable.values():
+ if isinstance(variable, self.objectspace.family):
+ yield from self._get_variables(variable, with_leadership)
+ continue
+ if not with_leadership and isinstance(variable, self.objectspace.leadership):
+ for follower in variable.variable:
+ yield follower
+ continue
+ yield variable
+# if hasattr(family, 'family'):
+# for fam in family.family.values():
+# yield from self._get_variables(fam, with_leadership)
+
+ def get_families(self):
+ """Iter all families from the objectspace
+ """
+ for family in self.objectspace.space.variables.values():
+ yield from self._get_families(family)
+
+ def _get_families(self,
+ family: 'self.objectspace.family',
+ ):
+ yield family
+ if hasattr(family, 'variable'):
+ for fam in family.variable.values():
+ if isinstance(fam, self.objectspace.family):
+ yield from self._get_families(fam)
+
+
+class VariableAnnotator(Walk): # pylint: disable=R0903
"""Annotate variable
"""
def __init__(self,
@@ -79,28 +124,21 @@ class VariableAnnotator: # pylint: disable=R0903
def convert_variable(self):
"""convert variable
"""
- for families in self.objectspace.space.variables.values():
- for family in families.family.values():
- if not hasattr(family, 'variable'):
- continue
- for variable in family.variable.values():
- if isinstance(variable, self.objectspace.leadership):
- # first variable is a leader, others are follower
- variable_type = 'leader'
- for follower in variable.variable:
- self._convert_variable(families.name,
- follower,
- variable_type,
- )
- variable_type = 'follower'
- else:
- self._convert_variable(families.name,
- variable,
- 'variable',
- )
+ for variable in self.get_variables(with_leadership=True):
+ if isinstance(variable, self.objectspace.leadership):
+ # first variable is a leader, others are follower
+ variable_type = 'leader'
+ for follower in variable.variable:
+ self._convert_variable(follower,
+ variable_type,
+ )
+ variable_type = 'follower'
+ else:
+ self._convert_variable(variable,
+ 'variable',
+ )
def _convert_variable(self,
- namespace: str,
variable,
variable_type: str,
) -> None:
@@ -127,12 +165,9 @@ class VariableAnnotator: # pylint: disable=R0903
variable.multi = 'submulti'
else:
variable.multi = True
- self._convert_valid_enum(namespace,
- variable,
- )
+ self._convert_valid_enum(variable)
def _convert_valid_enum(self,
- namespace,
variable,
):
"""some types are, in fact, choices
@@ -142,7 +177,7 @@ class VariableAnnotator: # pylint: disable=R0903
if not hasattr(self.objectspace.space, 'constraints'):
xmlfiles = variable.xmlfiles
self.objectspace.space.constraints = self.objectspace.constraints(xmlfiles)
- self.objectspace.space.constraints.namespace = namespace
+ self.objectspace.space.constraints.namespace = variable.namespace
if not hasattr(self.objectspace.space.constraints, 'check'):
self.objectspace.space.constraints.check = []
check = self.objectspace.check(variable.xmlfiles)
@@ -150,7 +185,7 @@ class VariableAnnotator: # pylint: disable=R0903
target = self.objectspace.target(variable.xmlfiles)
target.name = variable.path
check.target = [target]
- check.namespace = namespace
+ check.namespace = variable.namespace
check.param = []
for value in FORCE_CHOICE[variable.type]:
param = self.objectspace.param(variable.xmlfiles)
@@ -162,16 +197,8 @@ class VariableAnnotator: # pylint: disable=R0903
def convert_test(self):
"""Convert variable tests value
"""
- for families in self.objectspace.space.variables.values():
- for family in families.family.values():
- if not hasattr(family, 'variable'):
- continue
- for variable in family.variable.values():
- if isinstance(variable, self.objectspace.leadership):
- for follower in variable.variable:
- self._convert_test(follower)
- else:
- self._convert_test(variable)
+ for variable in self.get_variables():
+ self._convert_test(variable)
def _convert_test(self,
variable,
@@ -194,16 +221,8 @@ class VariableAnnotator: # pylint: disable=R0903
def convert_help(self):
"""Convert variable help
"""
- for families in self.objectspace.space.variables.values():
- for family in families.family.values():
- if not hasattr(family, 'variable'):
- continue
- for variable in family.variable.values():
- if isinstance(variable, self.objectspace.leadership):
- for follower in variable.variable:
- self._convert_help(follower)
- else:
- self._convert_help(variable)
+ for variable in self.get_variables():
+ self._convert_help(variable)
@staticmethod
def _convert_help(variable) -> None:
diff --git a/src/rougail/data/rougail.dtd b/src/rougail/data/rougail.dtd
index 42f84961a..730d34642 100644
--- a/src/rougail/data/rougail.dtd
+++ b/src/rougail/data/rougail.dtd
@@ -37,7 +37,7 @@
-
+
@@ -45,17 +45,16 @@
-
+
-
-
+
-
+
@@ -63,7 +62,7 @@
-
+
@@ -71,17 +70,17 @@
-
+
-
+
-
+
-
+
@@ -110,7 +109,7 @@
-
+
@@ -127,7 +126,7 @@
-
+
diff --git a/src/rougail/objspace.py b/src/rougail/objspace.py
index d915c8749..253382b8c 100644
--- a/src/rougail/objspace.py
+++ b/src/rougail/objspace.py
@@ -43,7 +43,9 @@ UNREDEFINABLE = ('multi', 'type')
# RougailObjSpace's elements that did not created automaticly
FORCE_ELEMENTS = ('choice', 'property_', 'leadership', 'information')
# XML text are convert has name
-FORCED_TEXT_ELTS_AS_NAME = ('choice', 'property', 'value', 'target')
+FORCED_TEXT_ELTS_AS_NAME = ('choice', 'property', 'value',)
+
+FORCE_TAG = {'family': 'variable'}
# _____________________________________________________________________________
@@ -236,7 +238,8 @@ class RougailObjSpace:
"""
retrieves or creates Rougail Object Subspace objects
"""
- obj = getattr(self, child.tag)
+ tag = FORCE_TAG.get(child.tag, child.tag)
+ obj = getattr(self, tag)
name = self._get_name(child, namespace)
if Redefinable in obj.__mro__:
return self.create_or_update_redefinable_object(xmlfile,
@@ -314,8 +317,9 @@ class RougailObjSpace:
# cannot redefine an inexistant object
msg = _(f'Redefined object: "{name}" does not exist yet')
raise DictConsistencyError(msg, 46, xmlfile)
- if child.tag not in vars(space):
- setattr(space, child.tag, {})
+ tag = FORCE_TAG.get(child.tag, child.tag)
+ if tag not in vars(space):
+ setattr(space, tag, {})
return getattr(self, child.tag)(xmlfile, name)
def get_existed_obj(self,
@@ -328,7 +332,7 @@ class RougailObjSpace:
"""
if child.tag in ['variable', 'family']:
name = normalize_family(name)
- if isinstance(space, self.family): # pylint: disable=E1101
+ if child.tag == 'variable': # pylint: disable=E1101
if namespace != Config['variable_namespace']:
name = space.path + '.' + name
if not self.paths.path_is_defined(name):
@@ -340,7 +344,8 @@ class RougailObjSpace:
raise DictConsistencyError(msg, 47, space.xmlfiles)
return self.paths.get_variable(name)
# it's not a family
- children = getattr(space, child.tag, {})
+ tag = FORCE_TAG.get(child.tag, child.tag)
+ children = getattr(space, tag, {})
if name in children:
return children[name]
return None
@@ -458,7 +463,10 @@ class RougailObjSpace:
"""Fill self.paths attributes
"""
if isinstance(variableobj, self.variable): # pylint: disable=E1101
- family_name = normalize_family(document.attrib['name'])
+ if 'name' in document.attrib:
+ family_name = normalize_family(document.attrib['name'])
+ else:
+ family_name = namespace
self.paths.add_variable(namespace,
normalize_family(variableobj.name),
namespace + '.' + family_name,
@@ -485,9 +493,10 @@ class RougailObjSpace:
variableobj.namespace = namespace
if isinstance(variableobj, Redefinable):
name = variableobj.name
+ tag = FORCE_TAG.get(child.tag, child.tag)
if child.tag in ['family', 'variable']:
name = normalize_family(name)
- getattr(space, child.tag)[name] = variableobj
+ getattr(space, tag)[name] = variableobj
elif isinstance(variableobj, UnRedefinable):
getattr(space, child.tag).append(variableobj)
else:
diff --git a/src/rougail/xmlreflector.py b/src/rougail/xmlreflector.py
index 698c7627b..be06e9e74 100644
--- a/src/rougail/xmlreflector.py
+++ b/src/rougail/xmlreflector.py
@@ -62,11 +62,11 @@ class XMLReflector:
try:
document = parse(xmlfile)
except XMLSyntaxError as err:
- raise DictConsistencyError(_(f'not an XML file: {err}'), 52, xmlfile) from err
+ raise DictConsistencyError(_(f'not a XML file: {err}'), 52, [xmlfile]) from err
if not self.dtd.validate(document):
dtd_error = self.dtd.error_log.filter_from_errors()[0]
msg = _(f'not a valid XML file: {dtd_error}')
- raise DictConsistencyError(msg, 43, xmlfile)
+ raise DictConsistencyError(msg, 43, [xmlfile])
return document.getroot()
@staticmethod
diff --git a/tests/dictionaries/00empty/tiramisu/base.py b/tests/dictionaries/00empty/tiramisu/base.py
index 2f801c400..f0778708e 100644
--- a/tests/dictionaries/00empty/tiramisu/base.py
+++ b/tests/dictionaries/00empty/tiramisu/base.py
@@ -13,6 +13,5 @@ except:
from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
option_2 = OptionDescription(name="tata", doc="tata", children=[])
-option_2.impl_set_information('manage', True)
option_1 = OptionDescription(name="services", doc="services", children=[option_2], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1])
diff --git a/tests/dictionaries/01base_file_include/tiramisu/base.py b/tests/dictionaries/01base_file_include/tiramisu/base.py
index 0df8f15de..311679a60 100644
--- a/tests/dictionaries/01base_file_include/tiramisu/base.py
+++ b/tests/dictionaries/01base_file_include/tiramisu/base.py
@@ -25,6 +25,5 @@ option_14 = BoolOption(name="activate", doc="activate", default=True)
option_7 = OptionDescription(name="file", doc="file", children=[option_8, option_9, option_10, option_11, option_12, option_13, option_14])
option_6 = OptionDescription(name="files", doc="files", children=[option_7])
option_5 = OptionDescription(name="test", doc="test", children=[option_6])
-option_5.impl_set_information('manage', True)
option_4 = OptionDescription(name="services", doc="services", children=[option_5], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_4])
diff --git a/tests/dictionaries/01base_file_patch/tiramisu/base.py b/tests/dictionaries/01base_file_patch/tiramisu/base.py
index 0df8f15de..311679a60 100644
--- a/tests/dictionaries/01base_file_patch/tiramisu/base.py
+++ b/tests/dictionaries/01base_file_patch/tiramisu/base.py
@@ -25,6 +25,5 @@ option_14 = BoolOption(name="activate", doc="activate", default=True)
option_7 = OptionDescription(name="file", doc="file", children=[option_8, option_9, option_10, option_11, option_12, option_13, option_14])
option_6 = OptionDescription(name="files", doc="files", children=[option_7])
option_5 = OptionDescription(name="test", doc="test", children=[option_6])
-option_5.impl_set_information('manage', True)
option_4 = OptionDescription(name="services", doc="services", children=[option_5], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_4])
diff --git a/tests/dictionaries/01base_file_utfchar/tiramisu/base.py b/tests/dictionaries/01base_file_utfchar/tiramisu/base.py
index 07bcfaf3d..39cdeedb1 100644
--- a/tests/dictionaries/01base_file_utfchar/tiramisu/base.py
+++ b/tests/dictionaries/01base_file_utfchar/tiramisu/base.py
@@ -25,6 +25,5 @@ option_14 = BoolOption(name="activate", doc="activate", default=True)
option_7 = OptionDescription(name="systemd_makefs@dev_disk_by\\x2dpartlabel", doc="systemd-makefs@dev-disk-by\\x2dpartlabel", children=[option_8, option_9, option_10, option_11, option_12, option_13, option_14])
option_6 = OptionDescription(name="files", doc="files", children=[option_7])
option_5 = OptionDescription(name="test", doc="test", children=[option_6])
-option_5.impl_set_information('manage', True)
option_4 = OptionDescription(name="services", doc="services", children=[option_5], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_4])
diff --git a/tests/dictionaries/10load_disabled_if_in_multi_param/tiramisu/base.py b/tests/dictionaries/10load_disabled_if_in_multi_param/tiramisu/base.py
index 337d191fb..a9b12a7d7 100644
--- a/tests/dictionaries/10load_disabled_if_in_multi_param/tiramisu/base.py
+++ b/tests/dictionaries/10load_disabled_if_in_multi_param/tiramisu/base.py
@@ -27,6 +27,5 @@ option_16 = BoolOption(name="activate", doc="activate", default=Calculation(func
option_9 = OptionDescription(name="file1", doc="file1", children=[option_10, option_11, option_12, option_13, option_14, option_15, option_16])
option_8 = OptionDescription(name="files", doc="files", children=[option_9])
option_7 = OptionDescription(name="test", doc="test", children=[option_8])
-option_7.impl_set_information('manage', True)
option_6 = OptionDescription(name="services", doc="services", children=[option_7], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_6])
diff --git a/tests/dictionaries/10load_disabled_if_in_multi_param2/tiramisu/base.py b/tests/dictionaries/10load_disabled_if_in_multi_param2/tiramisu/base.py
index 96c59b826..5c50c31dc 100644
--- a/tests/dictionaries/10load_disabled_if_in_multi_param2/tiramisu/base.py
+++ b/tests/dictionaries/10load_disabled_if_in_multi_param2/tiramisu/base.py
@@ -27,6 +27,5 @@ option_16 = BoolOption(name="activate", doc="activate", default=Calculation(func
option_9 = OptionDescription(name="file1", doc="file1", children=[option_10, option_11, option_12, option_13, option_14, option_15, option_16])
option_8 = OptionDescription(name="files", doc="files", children=[option_9])
option_7 = OptionDescription(name="test", doc="test", children=[option_8])
-option_7.impl_set_information('manage', True)
option_6 = OptionDescription(name="services", doc="services", children=[option_7], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_6])
diff --git a/tests/dictionaries/10load_disabled_if_in_multi_param3/tiramisu/base.py b/tests/dictionaries/10load_disabled_if_in_multi_param3/tiramisu/base.py
index c169005c3..e1ddbaed8 100644
--- a/tests/dictionaries/10load_disabled_if_in_multi_param3/tiramisu/base.py
+++ b/tests/dictionaries/10load_disabled_if_in_multi_param3/tiramisu/base.py
@@ -27,6 +27,5 @@ option_16 = BoolOption(name="activate", doc="activate", default=Calculation(func
option_9 = OptionDescription(name="file1", doc="file1", children=[option_10, option_11, option_12, option_13, option_14, option_15, option_16])
option_8 = OptionDescription(name="files", doc="files", children=[option_9])
option_7 = OptionDescription(name="test", doc="test", children=[option_8])
-option_7.impl_set_information('manage', True)
option_6 = OptionDescription(name="services", doc="services", children=[option_7], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_6])
diff --git a/tests/dictionaries/10load_disabled_if_in_multi_param4/tiramisu/base.py b/tests/dictionaries/10load_disabled_if_in_multi_param4/tiramisu/base.py
index 01e8aac3f..5e6ced41c 100644
--- a/tests/dictionaries/10load_disabled_if_in_multi_param4/tiramisu/base.py
+++ b/tests/dictionaries/10load_disabled_if_in_multi_param4/tiramisu/base.py
@@ -27,6 +27,5 @@ option_16 = BoolOption(name="activate", doc="activate", default=Calculation(func
option_9 = OptionDescription(name="file1", doc="file1", children=[option_10, option_11, option_12, option_13, option_14, option_15, option_16])
option_8 = OptionDescription(name="files", doc="files", children=[option_9])
option_7 = OptionDescription(name="test", doc="test", children=[option_8])
-option_7.impl_set_information('manage', True)
option_6 = OptionDescription(name="services", doc="services", children=[option_7], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_6])
diff --git a/tests/dictionaries/10load_disabled_if_in_multi_param5/tiramisu/base.py b/tests/dictionaries/10load_disabled_if_in_multi_param5/tiramisu/base.py
index 674df5399..d62efc9f0 100644
--- a/tests/dictionaries/10load_disabled_if_in_multi_param5/tiramisu/base.py
+++ b/tests/dictionaries/10load_disabled_if_in_multi_param5/tiramisu/base.py
@@ -27,6 +27,5 @@ option_16 = BoolOption(name="activate", doc="activate", default=Calculation(func
option_9 = OptionDescription(name="file1", doc="file1", children=[option_10, option_11, option_12, option_13, option_14, option_15, option_16])
option_8 = OptionDescription(name="files", doc="files", children=[option_9])
option_7 = OptionDescription(name="test", doc="test", children=[option_8])
-option_7.impl_set_information('manage', True)
option_6 = OptionDescription(name="services", doc="services", children=[option_7], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_6])
diff --git a/tests/dictionaries/10load_disabled_if_in_multi_param6/tiramisu/base.py b/tests/dictionaries/10load_disabled_if_in_multi_param6/tiramisu/base.py
index e992c2440..825becf92 100644
--- a/tests/dictionaries/10load_disabled_if_in_multi_param6/tiramisu/base.py
+++ b/tests/dictionaries/10load_disabled_if_in_multi_param6/tiramisu/base.py
@@ -27,6 +27,5 @@ option_16 = BoolOption(name="activate", doc="activate", default=Calculation(func
option_9 = OptionDescription(name="file1", doc="file1", children=[option_10, option_11, option_12, option_13, option_14, option_15, option_16])
option_8 = OptionDescription(name="files", doc="files", children=[option_9])
option_7 = OptionDescription(name="test", doc="test", children=[option_8])
-option_7.impl_set_information('manage', True)
option_6 = OptionDescription(name="services", doc="services", children=[option_7], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_6])
diff --git a/tests/dictionaries/10load_disabled_if_in_multi_param_disabled/tiramisu/base.py b/tests/dictionaries/10load_disabled_if_in_multi_param_disabled/tiramisu/base.py
index b099cb850..fc1335fc3 100644
--- a/tests/dictionaries/10load_disabled_if_in_multi_param_disabled/tiramisu/base.py
+++ b/tests/dictionaries/10load_disabled_if_in_multi_param_disabled/tiramisu/base.py
@@ -27,6 +27,5 @@ option_16 = BoolOption(name="activate", doc="activate", default=Calculation(func
option_9 = OptionDescription(name="file1", doc="file1", children=[option_10, option_11, option_12, option_13, option_14, option_15, option_16])
option_8 = OptionDescription(name="files", doc="files", children=[option_9])
option_7 = OptionDescription(name="test", doc="test", children=[option_8])
-option_7.impl_set_information('manage', True)
option_6 = OptionDescription(name="services", doc="services", children=[option_7], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_6])
diff --git a/tests/dictionaries/10load_disabled_if_not_in_fallback/tiramisu/base.py b/tests/dictionaries/10load_disabled_if_not_in_fallback/tiramisu/base.py
index 547a9583e..43ff6b21f 100644
--- a/tests/dictionaries/10load_disabled_if_not_in_fallback/tiramisu/base.py
+++ b/tests/dictionaries/10load_disabled_if_not_in_fallback/tiramisu/base.py
@@ -26,6 +26,5 @@ option_15 = BoolOption(name="activate", doc="activate", default=True)
option_8 = OptionDescription(name="file1", doc="file1", children=[option_9, option_10, option_11, option_12, option_13, option_14, option_15])
option_7 = OptionDescription(name="files", doc="files", children=[option_8])
option_6 = OptionDescription(name="test", doc="test", children=[option_7])
-option_6.impl_set_information('manage', True)
option_5 = OptionDescription(name="services", doc="services", children=[option_6], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_5])
diff --git a/tests/dictionaries/11disabled_if_in_filelist/tiramisu/base.py b/tests/dictionaries/11disabled_if_in_filelist/tiramisu/base.py
index 486a9947e..19be003bd 100644
--- a/tests/dictionaries/11disabled_if_in_filelist/tiramisu/base.py
+++ b/tests/dictionaries/11disabled_if_in_filelist/tiramisu/base.py
@@ -27,6 +27,5 @@ option_16 = BoolOption(name="activate", doc="activate", default=Calculation(func
option_9 = OptionDescription(name="file", doc="file", children=[option_10, option_11, option_12, option_13, option_14, option_15, option_16])
option_8 = OptionDescription(name="files", doc="files", children=[option_9])
option_7 = OptionDescription(name="test", doc="test", children=[option_8])
-option_7.impl_set_information('manage', True)
option_6 = OptionDescription(name="services", doc="services", children=[option_7], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_6])
diff --git a/tests/dictionaries/11disabled_if_in_filelist_boolean/00-base.xml b/tests/dictionaries/11disabled_if_in_filelist_boolean/00-base.xml
new file mode 100644
index 000000000..2e7aca5fe
--- /dev/null
+++ b/tests/dictionaries/11disabled_if_in_filelist_boolean/00-base.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+ afilllist
+
+
+
+
diff --git a/tests/dictionaries/70services_unmanage/__init__.py b/tests/dictionaries/11disabled_if_in_filelist_boolean/__init__.py
similarity index 100%
rename from tests/dictionaries/70services_unmanage/__init__.py
rename to tests/dictionaries/11disabled_if_in_filelist_boolean/__init__.py
diff --git a/tests/dictionaries/11disabled_if_in_filelist_boolean/makedict/base.json b/tests/dictionaries/11disabled_if_in_filelist_boolean/makedict/base.json
new file mode 100644
index 000000000..2d49c86e8
--- /dev/null
+++ b/tests/dictionaries/11disabled_if_in_filelist_boolean/makedict/base.json
@@ -0,0 +1 @@
+{"rougail.general.condition": true, "services.test.files.file1.group": "root", "services.test.files.file1.mode": "0644", "services.test.files.file1.name": "/tmp/file1", "services.test.files.file1.owner": "root", "services.test.files.file1.source": "file1", "services.test.files.file1.templating": true, "services.test.files.file1.activate": true}
diff --git a/tests/dictionaries/11disabled_if_in_filelist_boolean/tiramisu/base.py b/tests/dictionaries/11disabled_if_in_filelist_boolean/tiramisu/base.py
new file mode 100644
index 000000000..d2ec032e4
--- /dev/null
+++ b/tests/dictionaries/11disabled_if_in_filelist_boolean/tiramisu/base.py
@@ -0,0 +1,29 @@
+from importlib.machinery import SourceFileLoader
+from importlib.util import spec_from_loader, module_from_spec
+loader = SourceFileLoader('func', 'tests/dictionaries/../eosfunc/test.py')
+spec = spec_from_loader(loader.name, loader)
+func = module_from_spec(spec)
+loader.exec_module(func)
+for key, value in dict(locals()).items():
+ if key != ['SourceFileLoader', 'func']:
+ setattr(func, key, value)
+try:
+ from tiramisu3 import *
+except:
+ from tiramisu import *
+from rougail.tiramisu import ConvertDynOptionDescription
+option_3 = BoolOption(name="condition", doc="condition", default=True, properties=frozenset({"mandatory", "normal"}))
+option_2 = OptionDescription(name="general", doc="general", children=[option_3], properties=frozenset({"normal"}))
+option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2])
+option_8 = StrOption(name="group", doc="group", default="root")
+option_9 = StrOption(name="mode", doc="mode", default="0644")
+option_10 = StrOption(name="name", doc="name", default="/tmp/file1")
+option_11 = StrOption(name="owner", doc="owner", default="root")
+option_12 = StrOption(name="source", doc="source", default="file1")
+option_13 = BoolOption(name="templating", doc="templating", default=True)
+option_14 = BoolOption(name="activate", doc="activate", default=Calculation(func.calc_value, Params((ParamValue(False)), kwargs={'default': ParamValue(True), 'condition_0': ParamOption(option_3), 'expected_0': ParamValue(True)})))
+option_7 = OptionDescription(name="file1", doc="file1", children=[option_8, option_9, option_10, option_11, option_12, option_13, option_14])
+option_6 = OptionDescription(name="files", doc="files", children=[option_7])
+option_5 = OptionDescription(name="test", doc="test", children=[option_6])
+option_4 = OptionDescription(name="services", doc="services", children=[option_5], properties=frozenset({"hidden"}))
+option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_4])
diff --git a/tests/dictionaries/11disabled_if_in_filelist_disabled/tiramisu/base.py b/tests/dictionaries/11disabled_if_in_filelist_disabled/tiramisu/base.py
index cde57edfd..3aa56651e 100644
--- a/tests/dictionaries/11disabled_if_in_filelist_disabled/tiramisu/base.py
+++ b/tests/dictionaries/11disabled_if_in_filelist_disabled/tiramisu/base.py
@@ -27,6 +27,5 @@ option_16 = BoolOption(name="activate", doc="activate", default=Calculation(func
option_9 = OptionDescription(name="file", doc="file", children=[option_10, option_11, option_12, option_13, option_14, option_15, option_16])
option_8 = OptionDescription(name="files", doc="files", children=[option_9])
option_7 = OptionDescription(name="test", doc="test", children=[option_8])
-option_7.impl_set_information('manage', True)
option_6 = OptionDescription(name="services", doc="services", children=[option_7], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_6])
diff --git a/tests/dictionaries/11disabled_if_in_filelist_multi/tiramisu/base.py b/tests/dictionaries/11disabled_if_in_filelist_multi/tiramisu/base.py
index 08882174c..e4aa43a49 100644
--- a/tests/dictionaries/11disabled_if_in_filelist_multi/tiramisu/base.py
+++ b/tests/dictionaries/11disabled_if_in_filelist_multi/tiramisu/base.py
@@ -35,6 +35,5 @@ option_24 = BoolOption(name="activate", doc="activate", default=Calculation(func
option_17 = OptionDescription(name="file2", doc="file2", children=[option_18, option_19, option_20, option_21, option_22, option_23, option_24])
option_8 = OptionDescription(name="files", doc="files", children=[option_9, option_17])
option_7 = OptionDescription(name="test", doc="test", children=[option_8])
-option_7.impl_set_information('manage', True)
option_6 = OptionDescription(name="services", doc="services", children=[option_7], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_6])
diff --git a/tests/dictionaries/11disabledifin_filelist_notexist/tiramisu/base.py b/tests/dictionaries/11disabledifin_filelist_notexist/tiramisu/base.py
index 0dfdbff71..667e64658 100644
--- a/tests/dictionaries/11disabledifin_filelist_notexist/tiramisu/base.py
+++ b/tests/dictionaries/11disabledifin_filelist_notexist/tiramisu/base.py
@@ -27,6 +27,5 @@ option_16 = BoolOption(name="activate", doc="activate", default=Calculation(func
option_9 = OptionDescription(name="file", doc="file", children=[option_10, option_11, option_12, option_13, option_14, option_15, option_16])
option_8 = OptionDescription(name="files", doc="files", children=[option_9])
option_7 = OptionDescription(name="test", doc="test", children=[option_8])
-option_7.impl_set_information('manage', True)
option_6 = OptionDescription(name="services", doc="services", children=[option_7], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_6])
diff --git a/tests/dictionaries/11disabledifnotin_filelist_notexist/tiramisu/base.py b/tests/dictionaries/11disabledifnotin_filelist_notexist/tiramisu/base.py
index 0dfdbff71..667e64658 100644
--- a/tests/dictionaries/11disabledifnotin_filelist_notexist/tiramisu/base.py
+++ b/tests/dictionaries/11disabledifnotin_filelist_notexist/tiramisu/base.py
@@ -27,6 +27,5 @@ option_16 = BoolOption(name="activate", doc="activate", default=Calculation(func
option_9 = OptionDescription(name="file", doc="file", children=[option_10, option_11, option_12, option_13, option_14, option_15, option_16])
option_8 = OptionDescription(name="files", doc="files", children=[option_9])
option_7 = OptionDescription(name="test", doc="test", children=[option_8])
-option_7.impl_set_information('manage', True)
option_6 = OptionDescription(name="services", doc="services", children=[option_7], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_6])
diff --git a/tests/dictionaries/11disabledifnotin_filelist_notexist_multi/tiramisu/base.py b/tests/dictionaries/11disabledifnotin_filelist_notexist_multi/tiramisu/base.py
index 8a25d6d41..01495acec 100644
--- a/tests/dictionaries/11disabledifnotin_filelist_notexist_multi/tiramisu/base.py
+++ b/tests/dictionaries/11disabledifnotin_filelist_notexist_multi/tiramisu/base.py
@@ -27,6 +27,5 @@ option_16 = BoolOption(name="activate", doc="activate", default=Calculation(func
option_9 = OptionDescription(name="file", doc="file", children=[option_10, option_11, option_12, option_13, option_14, option_15, option_16])
option_8 = OptionDescription(name="files", doc="files", children=[option_9])
option_7 = OptionDescription(name="test", doc="test", children=[option_8])
-option_7.impl_set_information('manage', True)
option_6 = OptionDescription(name="services", doc="services", children=[option_7], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_6])
diff --git a/tests/dictionaries/11disabledifnotin_filelist_notexist_validenum/tiramisu/base.py b/tests/dictionaries/11disabledifnotin_filelist_notexist_validenum/tiramisu/base.py
index 4e5b69589..cfebd5898 100644
--- a/tests/dictionaries/11disabledifnotin_filelist_notexist_validenum/tiramisu/base.py
+++ b/tests/dictionaries/11disabledifnotin_filelist_notexist_validenum/tiramisu/base.py
@@ -27,6 +27,5 @@ option_16 = BoolOption(name="activate", doc="activate", default=Calculation(func
option_9 = OptionDescription(name="file", doc="file", children=[option_10, option_11, option_12, option_13, option_14, option_15, option_16])
option_8 = OptionDescription(name="files", doc="files", children=[option_9])
option_7 = OptionDescription(name="test", doc="test", children=[option_8])
-option_7.impl_set_information('manage', True)
option_6 = OptionDescription(name="services", doc="services", children=[option_7], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_6])
diff --git a/tests/dictionaries/11multi_disabled_if_in_filelist/tiramisu/base.py b/tests/dictionaries/11multi_disabled_if_in_filelist/tiramisu/base.py
index 5f0c6bcc1..db8148e96 100644
--- a/tests/dictionaries/11multi_disabled_if_in_filelist/tiramisu/base.py
+++ b/tests/dictionaries/11multi_disabled_if_in_filelist/tiramisu/base.py
@@ -26,6 +26,5 @@ option_15 = BoolOption(name="activate", doc="activate", default=False)
option_8 = OptionDescription(name="file1", doc="file1", children=[option_9, option_10, option_11, option_12, option_13, option_14, option_15])
option_7 = OptionDescription(name="files", doc="files", children=[option_8])
option_6 = OptionDescription(name="test", doc="test", children=[option_7])
-option_6.impl_set_information('manage', True)
option_5 = OptionDescription(name="services", doc="services", children=[option_6], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_5])
diff --git a/tests/dictionaries/20notemplating/tiramisu/base.py b/tests/dictionaries/20notemplating/tiramisu/base.py
index dc6869864..ca14130a0 100644
--- a/tests/dictionaries/20notemplating/tiramisu/base.py
+++ b/tests/dictionaries/20notemplating/tiramisu/base.py
@@ -25,6 +25,5 @@ option_14 = BoolOption(name="activate", doc="activate", default=True)
option_7 = OptionDescription(name="file", doc="file", children=[option_8, option_9, option_10, option_11, option_12, option_13, option_14])
option_6 = OptionDescription(name="files", doc="files", children=[option_7])
option_5 = OptionDescription(name="test", doc="test", children=[option_6])
-option_5.impl_set_information('manage', True)
option_4 = OptionDescription(name="services", doc="services", children=[option_5], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_4])
diff --git a/tests/dictionaries/20override/tiramisu/base.py b/tests/dictionaries/20override/tiramisu/base.py
index 8cdb67b59..d8b52f160 100644
--- a/tests/dictionaries/20override/tiramisu/base.py
+++ b/tests/dictionaries/20override/tiramisu/base.py
@@ -25,6 +25,5 @@ option_14 = BoolOption(name="activate", doc="activate", default=True)
option_7 = OptionDescription(name="test_service", doc="test.service", children=[option_8, option_9, option_10, option_11, option_12, option_13, option_14])
option_6 = OptionDescription(name="overrides", doc="overrides", children=[option_7])
option_5 = OptionDescription(name="test", doc="test", children=[option_6])
-option_5.impl_set_information('manage', True)
option_4 = OptionDescription(name="services", doc="services", children=[option_5], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_4])
diff --git a/tests/dictionaries/40ifin_leadershipauto/tiramisu/base.py b/tests/dictionaries/40ifin_leadershipauto/tiramisu/base.py
index c6ea2ee41..272306ac3 100644
--- a/tests/dictionaries/40ifin_leadershipauto/tiramisu/base.py
+++ b/tests/dictionaries/40ifin_leadershipauto/tiramisu/base.py
@@ -30,6 +30,5 @@ option_19 = BoolOption(name="activate", doc="activate", default=True)
option_12 = OptionDescription(name="mailname", doc="mailname", children=[option_13, option_14, option_15, option_16, option_17, option_18, option_19])
option_11 = OptionDescription(name="files", doc="files", children=[option_12])
option_10 = OptionDescription(name="test", doc="test", children=[option_11])
-option_10.impl_set_information('manage', True)
option_9 = OptionDescription(name="services", doc="services", children=[option_10], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_9])
diff --git a/tests/dictionaries/40ifin_leadershipauto_follower/tiramisu/base.py b/tests/dictionaries/40ifin_leadershipauto_follower/tiramisu/base.py
index d63bfaa45..19c6bc0b7 100644
--- a/tests/dictionaries/40ifin_leadershipauto_follower/tiramisu/base.py
+++ b/tests/dictionaries/40ifin_leadershipauto_follower/tiramisu/base.py
@@ -30,6 +30,5 @@ option_19 = BoolOption(name="activate", doc="activate", default=True)
option_12 = OptionDescription(name="mailname", doc="mailname", children=[option_13, option_14, option_15, option_16, option_17, option_18, option_19])
option_11 = OptionDescription(name="files", doc="files", children=[option_12])
option_10 = OptionDescription(name="test", doc="test", children=[option_11])
-option_10.impl_set_information('manage', True)
option_9 = OptionDescription(name="services", doc="services", children=[option_10], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_9])
diff --git a/tests/dictionaries/45multi_family/00-base.xml b/tests/dictionaries/45multi_family/00-base.xml
new file mode 100644
index 000000000..9870c76ee
--- /dev/null
+++ b/tests/dictionaries/45multi_family/00-base.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/dictionaries/45multi_family/__init__.py b/tests/dictionaries/45multi_family/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/tests/dictionaries/45multi_family/makedict/base.json b/tests/dictionaries/45multi_family/makedict/base.json
new file mode 100644
index 000000000..536366a76
--- /dev/null
+++ b/tests/dictionaries/45multi_family/makedict/base.json
@@ -0,0 +1 @@
+{"rougail.base.subfamily.variable": null}
diff --git a/tests/dictionaries/70services_unmanage/tiramisu/base.py b/tests/dictionaries/45multi_family/tiramisu/base.py
similarity index 54%
rename from tests/dictionaries/70services_unmanage/tiramisu/base.py
rename to tests/dictionaries/45multi_family/tiramisu/base.py
index a733bf709..9d00f696c 100644
--- a/tests/dictionaries/70services_unmanage/tiramisu/base.py
+++ b/tests/dictionaries/45multi_family/tiramisu/base.py
@@ -12,10 +12,8 @@ try:
except:
from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
-option_3 = StrOption(name="mode_conteneur_actif", doc="No change", default="oui", properties=frozenset({"force_default_on_freeze", "frozen", "hidden", "mandatory", "normal"}))
-option_2 = OptionDescription(name="general", doc="général", children=[option_3], properties=frozenset({"normal"}))
+option_4 = StrOption(name="variable", doc="variable", properties=frozenset({"normal"}))
+option_3 = OptionDescription(name="subfamily", doc="subfamily", children=[option_4], properties=frozenset({"normal"}))
+option_2 = OptionDescription(name="base", doc="base", children=[option_3], properties=frozenset({"normal"}))
option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2])
-option_5 = OptionDescription(name="testsrv", doc="testsrv", children=[])
-option_5.impl_set_information('manage', False)
-option_4 = OptionDescription(name="services", doc="services", children=[option_5], properties=frozenset({"hidden"}))
-option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_4])
+option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1])
diff --git a/tests/dictionaries/45multi_family_order/00-base.xml b/tests/dictionaries/45multi_family_order/00-base.xml
new file mode 100644
index 000000000..7360ee0b5
--- /dev/null
+++ b/tests/dictionaries/45multi_family_order/00-base.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/dictionaries/45multi_family_order/__init__.py b/tests/dictionaries/45multi_family_order/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/tests/dictionaries/45multi_family_order/makedict/base.json b/tests/dictionaries/45multi_family_order/makedict/base.json
new file mode 100644
index 000000000..69da8f2d9
--- /dev/null
+++ b/tests/dictionaries/45multi_family_order/makedict/base.json
@@ -0,0 +1 @@
+{"rougail.variable1": null, "rougail.base.variable2": null, "rougail.base.subfamily.variable3": null, "rougail.base.variable4": null}
diff --git a/tests/dictionaries/45multi_family_order/tiramisu/base.py b/tests/dictionaries/45multi_family_order/tiramisu/base.py
new file mode 100644
index 000000000..ee00f16d9
--- /dev/null
+++ b/tests/dictionaries/45multi_family_order/tiramisu/base.py
@@ -0,0 +1,22 @@
+from importlib.machinery import SourceFileLoader
+from importlib.util import spec_from_loader, module_from_spec
+loader = SourceFileLoader('func', 'tests/dictionaries/../eosfunc/test.py')
+spec = spec_from_loader(loader.name, loader)
+func = module_from_spec(spec)
+loader.exec_module(func)
+for key, value in dict(locals()).items():
+ if key != ['SourceFileLoader', 'func']:
+ setattr(func, key, value)
+try:
+ from tiramisu3 import *
+except:
+ from tiramisu import *
+from rougail.tiramisu import ConvertDynOptionDescription
+option_2 = StrOption(name="variable1", doc="variable1", properties=frozenset({"normal"}))
+option_4 = StrOption(name="variable2", doc="variable2", properties=frozenset({"normal"}))
+option_6 = StrOption(name="variable3", doc="variable3", properties=frozenset({"normal"}))
+option_5 = OptionDescription(name="subfamily", doc="subfamily", children=[option_6], properties=frozenset({"normal"}))
+option_7 = StrOption(name="variable4", doc="variable4", properties=frozenset({"normal"}))
+option_3 = OptionDescription(name="base", doc="base", children=[option_4, option_5, option_7], properties=frozenset({"normal"}))
+option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2, option_3])
+option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1])
diff --git a/tests/dictionaries/45without_family/00-base.xml b/tests/dictionaries/45without_family/00-base.xml
new file mode 100644
index 000000000..d4970166c
--- /dev/null
+++ b/tests/dictionaries/45without_family/00-base.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
diff --git a/tests/dictionaries/45without_family/__init__.py b/tests/dictionaries/45without_family/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/tests/dictionaries/45without_family/makedict/base.json b/tests/dictionaries/45without_family/makedict/base.json
new file mode 100644
index 000000000..1aa60ad07
--- /dev/null
+++ b/tests/dictionaries/45without_family/makedict/base.json
@@ -0,0 +1 @@
+{"rougail.variable": null}
diff --git a/tests/dictionaries/45without_family/tiramisu/base.py b/tests/dictionaries/45without_family/tiramisu/base.py
new file mode 100644
index 000000000..8adb1991c
--- /dev/null
+++ b/tests/dictionaries/45without_family/tiramisu/base.py
@@ -0,0 +1,17 @@
+from importlib.machinery import SourceFileLoader
+from importlib.util import spec_from_loader, module_from_spec
+loader = SourceFileLoader('func', 'tests/dictionaries/../eosfunc/test.py')
+spec = spec_from_loader(loader.name, loader)
+func = module_from_spec(spec)
+loader.exec_module(func)
+for key, value in dict(locals()).items():
+ if key != ['SourceFileLoader', 'func']:
+ setattr(func, key, value)
+try:
+ from tiramisu3 import *
+except:
+ from tiramisu import *
+from rougail.tiramisu import ConvertDynOptionDescription
+option_2 = StrOption(name="variable", doc="variable", properties=frozenset({"normal"}))
+option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2])
+option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1])
diff --git a/tests/dictionaries/60extra_group/tiramisu/base.py b/tests/dictionaries/60extra_group/tiramisu/base.py
index 532355e59..c13aad45e 100644
--- a/tests/dictionaries/60extra_group/tiramisu/base.py
+++ b/tests/dictionaries/60extra_group/tiramisu/base.py
@@ -31,6 +31,5 @@ option_20 = BoolOption(name="activate", doc="activate", default=True)
option_13 = OptionDescription(name="mailname", doc="mailname", children=[option_14, option_15, option_16, option_17, option_18, option_19, option_20])
option_12 = OptionDescription(name="files", doc="files", children=[option_13])
option_11 = OptionDescription(name="test", doc="test", children=[option_12])
-option_11.impl_set_information('manage', True)
option_10 = OptionDescription(name="services", doc="services", children=[option_11], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_5, option_10])
diff --git a/tests/dictionaries/60extra_help/tiramisu/base.py b/tests/dictionaries/60extra_help/tiramisu/base.py
index fe32ba0e5..21ba425b5 100644
--- a/tests/dictionaries/60extra_help/tiramisu/base.py
+++ b/tests/dictionaries/60extra_help/tiramisu/base.py
@@ -32,6 +32,5 @@ option_20 = BoolOption(name="activate", doc="activate", default=True)
option_13 = OptionDescription(name="mailname", doc="mailname", children=[option_14, option_15, option_16, option_17, option_18, option_19, option_20])
option_12 = OptionDescription(name="files", doc="files", children=[option_13])
option_11 = OptionDescription(name="test", doc="test", children=[option_12])
-option_11.impl_set_information('manage', True)
option_10 = OptionDescription(name="services", doc="services", children=[option_11], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_5, option_10])
diff --git a/tests/dictionaries/70container_files/tiramisu/base.py b/tests/dictionaries/70container_files/tiramisu/base.py
index 194dfcfb4..69a25f6b5 100644
--- a/tests/dictionaries/70container_files/tiramisu/base.py
+++ b/tests/dictionaries/70container_files/tiramisu/base.py
@@ -33,6 +33,5 @@ option_22 = BoolOption(name="activate", doc="activate", default=True)
option_15 = OptionDescription(name="rougail_conf", doc="rougail.conf", children=[option_16, option_17, option_18, option_19, option_20, option_21, option_22])
option_6 = OptionDescription(name="files", doc="files", children=[option_7, option_15])
option_5 = OptionDescription(name="test", doc="test", children=[option_6])
-option_5.impl_set_information('manage', True)
option_4 = OptionDescription(name="services", doc="services", children=[option_5], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_4])
diff --git a/tests/dictionaries/70container_files_symlink_multi/tiramisu/base.py b/tests/dictionaries/70container_files_symlink_multi/tiramisu/base.py
index c4c7f9d63..0be03ee97 100644
--- a/tests/dictionaries/70container_files_symlink_multi/tiramisu/base.py
+++ b/tests/dictionaries/70container_files_symlink_multi/tiramisu/base.py
@@ -26,6 +26,5 @@ option_15 = BoolOption(name="activate", doc="activate", default=True)
option_8 = OptionDescription(name="mailname", doc="mailname", children=[option_9, option_10, option_11, option_12, option_13, option_14, option_15])
option_7 = OptionDescription(name="files", doc="files", children=[option_8])
option_6 = OptionDescription(name="test", doc="test", children=[option_7])
-option_6.impl_set_information('manage', True)
option_5 = OptionDescription(name="services", doc="services", children=[option_6], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_5])
diff --git a/tests/dictionaries/70container_files_symlink_multi_variable/tiramisu/base.py b/tests/dictionaries/70container_files_symlink_multi_variable/tiramisu/base.py
index 00063e630..41ab17cbc 100644
--- a/tests/dictionaries/70container_files_symlink_multi_variable/tiramisu/base.py
+++ b/tests/dictionaries/70container_files_symlink_multi_variable/tiramisu/base.py
@@ -28,6 +28,5 @@ option_17 = BoolOption(name="activate", doc="activate", default=True)
option_9 = OptionDescription(name="mailname", doc="mailname", children=[option_10, option_11, option_12, option_13, option_14, option_15, option_16, option_17])
option_8 = OptionDescription(name="files", doc="files", children=[option_9])
option_7 = OptionDescription(name="test", doc="test", children=[option_8])
-option_7.impl_set_information('manage', True)
option_6 = OptionDescription(name="services", doc="services", children=[option_7], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_6])
diff --git a/tests/dictionaries/70container_files_symlink_variable/tiramisu/base.py b/tests/dictionaries/70container_files_symlink_variable/tiramisu/base.py
index ad5cbdaa6..dac9f496f 100644
--- a/tests/dictionaries/70container_files_symlink_variable/tiramisu/base.py
+++ b/tests/dictionaries/70container_files_symlink_variable/tiramisu/base.py
@@ -28,6 +28,5 @@ option_17 = BoolOption(name="activate", doc="activate", default=True)
option_9 = OptionDescription(name="mailname", doc="mailname", children=[option_10, option_11, option_12, option_13, option_14, option_15, option_16, option_17])
option_8 = OptionDescription(name="files", doc="files", children=[option_9])
option_7 = OptionDescription(name="test", doc="test", children=[option_8])
-option_7.impl_set_information('manage', True)
option_6 = OptionDescription(name="services", doc="services", children=[option_7], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_6])
diff --git a/tests/dictionaries/70container_files_twice/tiramisu/base.py b/tests/dictionaries/70container_files_twice/tiramisu/base.py
index f572c3744..d2a166527 100644
--- a/tests/dictionaries/70container_files_twice/tiramisu/base.py
+++ b/tests/dictionaries/70container_files_twice/tiramisu/base.py
@@ -41,6 +41,5 @@ option_30 = BoolOption(name="activate", doc="activate", default=True)
option_23 = OptionDescription(name="rougail_conf", doc="rougail.conf", children=[option_24, option_25, option_26, option_27, option_28, option_29, option_30])
option_6 = OptionDescription(name="files", doc="files", children=[option_7, option_15, option_23])
option_5 = OptionDescription(name="test", doc="test", children=[option_6])
-option_5.impl_set_information('manage', True)
option_4 = OptionDescription(name="services", doc="services", children=[option_5], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_4])
diff --git a/tests/dictionaries/70container_filesmulti/tiramisu/base.py b/tests/dictionaries/70container_filesmulti/tiramisu/base.py
index 3148b1bf2..19597612d 100644
--- a/tests/dictionaries/70container_filesmulti/tiramisu/base.py
+++ b/tests/dictionaries/70container_filesmulti/tiramisu/base.py
@@ -33,6 +33,5 @@ option_22 = BoolOption(name="activate", doc="activate", default=True)
option_15 = OptionDescription(name="mailname2", doc="mailname2", children=[option_16, option_17, option_18, option_19, option_20, option_21, option_22])
option_6 = OptionDescription(name="files", doc="files", children=[option_7, option_15])
option_5 = OptionDescription(name="test", doc="test", children=[option_6])
-option_5.impl_set_information('manage', True)
option_4 = OptionDescription(name="services", doc="services", children=[option_5], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_4])
diff --git a/tests/dictionaries/70container_filesredefine/tiramisu/base.py b/tests/dictionaries/70container_filesredefine/tiramisu/base.py
index aa82cf4f3..154f6af45 100644
--- a/tests/dictionaries/70container_filesredefine/tiramisu/base.py
+++ b/tests/dictionaries/70container_filesredefine/tiramisu/base.py
@@ -25,6 +25,5 @@ option_14 = BoolOption(name="activate", doc="activate", default=True)
option_7 = OptionDescription(name="mailname_new", doc="mailname.new", children=[option_8, option_9, option_10, option_11, option_12, option_13, option_14])
option_6 = OptionDescription(name="files", doc="files", children=[option_7])
option_5 = OptionDescription(name="test", doc="test", children=[option_6])
-option_5.impl_set_information('manage', True)
option_4 = OptionDescription(name="services", doc="services", children=[option_5], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_4])
diff --git a/tests/dictionaries/70container_new/tiramisu/base.py b/tests/dictionaries/70container_new/tiramisu/base.py
index 1d63ac77c..f899d6b96 100644
--- a/tests/dictionaries/70container_new/tiramisu/base.py
+++ b/tests/dictionaries/70container_new/tiramisu/base.py
@@ -16,6 +16,5 @@ option_3 = StrOption(name="mode_conteneur_actif", doc="No change", default="oui"
option_2 = OptionDescription(name="general", doc="général", children=[option_3], properties=frozenset({"normal"}))
option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2])
option_5 = OptionDescription(name="test", doc="test", children=[])
-option_5.impl_set_information('manage', True)
option_4 = OptionDescription(name="services", doc="services", children=[option_5], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_4])
diff --git a/tests/dictionaries/70container_newnocont/tiramisu/base.py b/tests/dictionaries/70container_newnocont/tiramisu/base.py
index f8a4fcf24..38e645698 100644
--- a/tests/dictionaries/70container_newnocont/tiramisu/base.py
+++ b/tests/dictionaries/70container_newnocont/tiramisu/base.py
@@ -16,6 +16,5 @@ option_3 = StrOption(name="mode_conteneur_actif", doc="No change", default="non"
option_2 = OptionDescription(name="general", doc="général", children=[option_3], properties=frozenset({"normal"}))
option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2])
option_5 = OptionDescription(name="test", doc="test", children=[])
-option_5.impl_set_information('manage', True)
option_4 = OptionDescription(name="services", doc="services", children=[option_5], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_4])
diff --git a/tests/dictionaries/70container_newwithip/tiramisu/base.py b/tests/dictionaries/70container_newwithip/tiramisu/base.py
index 505b95d36..6f2463953 100644
--- a/tests/dictionaries/70container_newwithip/tiramisu/base.py
+++ b/tests/dictionaries/70container_newwithip/tiramisu/base.py
@@ -17,6 +17,5 @@ option_4 = IPOption(name="adresse_ip_test", doc="No change", allow_reserved=True
option_2 = OptionDescription(name="general", doc="général", children=[option_3, option_4], properties=frozenset({"normal"}))
option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2])
option_6 = OptionDescription(name="test", doc="test", children=[])
-option_6.impl_set_information('manage', True)
option_5 = OptionDescription(name="services", doc="services", children=[option_6], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_5])
diff --git a/tests/dictionaries/70container_pathaccess/tiramisu/base.py b/tests/dictionaries/70container_pathaccess/tiramisu/base.py
index 72c4263f7..25c12451e 100644
--- a/tests/dictionaries/70container_pathaccess/tiramisu/base.py
+++ b/tests/dictionaries/70container_pathaccess/tiramisu/base.py
@@ -24,6 +24,5 @@ option_13 = BoolOption(name="activate", doc="activate", default=True)
option_9 = OptionDescription(name="nut_monitor_host", doc="nut_monitor_host", children=[option_10, option_11, option_12, option_13])
option_8 = OptionDescription(name="ips", doc="ips", children=[option_9])
option_7 = OptionDescription(name="nut", doc="nut", children=[option_8])
-option_7.impl_set_information('manage', True)
option_6 = OptionDescription(name="services", doc="services", children=[option_7], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_6])
diff --git a/tests/dictionaries/70container_pathaccess_leadership/tiramisu/base.py b/tests/dictionaries/70container_pathaccess_leadership/tiramisu/base.py
index b3f13f233..1eb86e332 100644
--- a/tests/dictionaries/70container_pathaccess_leadership/tiramisu/base.py
+++ b/tests/dictionaries/70container_pathaccess_leadership/tiramisu/base.py
@@ -25,6 +25,5 @@ option_14 = BoolOption(name="activate", doc="activate", default=True)
option_10 = OptionDescription(name="nut_monitor_host", doc="nut_monitor_host", children=[option_11, option_12, option_13, option_14])
option_9 = OptionDescription(name="ips", doc="ips", children=[option_10])
option_8 = OptionDescription(name="ntp", doc="ntp", children=[option_9])
-option_8.impl_set_information('manage', True)
option_7 = OptionDescription(name="services", doc="services", children=[option_8], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_7])
diff --git a/tests/dictionaries/70container_serviceaccess/tiramisu/base.py b/tests/dictionaries/70container_serviceaccess/tiramisu/base.py
index 88962eaef..a45834179 100644
--- a/tests/dictionaries/70container_serviceaccess/tiramisu/base.py
+++ b/tests/dictionaries/70container_serviceaccess/tiramisu/base.py
@@ -21,6 +21,5 @@ option_10 = BoolOption(name="activate", doc="activate", default=True)
option_7 = OptionDescription(name="123", doc="123", children=[option_8, option_9, option_10])
option_6 = OptionDescription(name="ports", doc="ports", children=[option_7])
option_5 = OptionDescription(name="ntp", doc="ntp", children=[option_6])
-option_5.impl_set_information('manage', True)
option_4 = OptionDescription(name="services", doc="services", children=[option_5], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_4])
diff --git a/tests/dictionaries/70container_servicerestriction/tiramisu/base.py b/tests/dictionaries/70container_servicerestriction/tiramisu/base.py
index 7b307a0eb..015197f33 100644
--- a/tests/dictionaries/70container_servicerestriction/tiramisu/base.py
+++ b/tests/dictionaries/70container_servicerestriction/tiramisu/base.py
@@ -22,6 +22,5 @@ option_11 = BoolOption(name="activate", doc="activate", default=True)
option_7 = OptionDescription(name="192_168_1_1", doc="192.168.1.1", children=[option_8, option_9, option_10, option_11])
option_6 = OptionDescription(name="ips", doc="ips", children=[option_7])
option_5 = OptionDescription(name="testsrv", doc="testsrv", children=[option_6])
-option_5.impl_set_information('manage', True)
option_4 = OptionDescription(name="services", doc="services", children=[option_5], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_4])
diff --git a/tests/dictionaries/70container_services/tiramisu/base.py b/tests/dictionaries/70container_services/tiramisu/base.py
index c36ee703a..20fd844f4 100644
--- a/tests/dictionaries/70container_services/tiramisu/base.py
+++ b/tests/dictionaries/70container_services/tiramisu/base.py
@@ -16,6 +16,5 @@ option_3 = StrOption(name="mode_conteneur_actif", doc="No change", default="oui"
option_2 = OptionDescription(name="general", doc="général", children=[option_3], properties=frozenset({"normal"}))
option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2])
option_5 = OptionDescription(name="testsrv", doc="testsrv", children=[])
-option_5.impl_set_information('manage', True)
option_4 = OptionDescription(name="services", doc="services", children=[option_5], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_4])
diff --git a/tests/dictionaries/70services_unmanage/00-base.xml b/tests/dictionaries/70services_unmanage/00-base.xml
deleted file mode 100644
index 15b0f9142..000000000
--- a/tests/dictionaries/70services_unmanage/00-base.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
- oui
-
-
-
-
-
diff --git a/tests/dictionaries/70services_unmanage/makedict/base.json b/tests/dictionaries/70services_unmanage/makedict/base.json
deleted file mode 100644
index eb10bec40..000000000
--- a/tests/dictionaries/70services_unmanage/makedict/base.json
+++ /dev/null
@@ -1 +0,0 @@
-{"rougail.general.mode_conteneur_actif": "oui"}
diff --git a/tests/dictionaries/80family_dynamic_with_family/00-base.xml b/tests/dictionaries/80family_dynamic_with_family/00-base.xml
new file mode 100644
index 000000000..a74126d89
--- /dev/null
+++ b/tests/dictionaries/80family_dynamic_with_family/00-base.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+ val1
+ val2
+
+
+
+
+
+
+
+
diff --git a/tests/dictionaries/80family_dynamic_with_family/__init__.py b/tests/dictionaries/80family_dynamic_with_family/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/tests/dictionaries/80family_dynamic_with_family/errno_2 b/tests/dictionaries/80family_dynamic_with_family/errno_2
new file mode 100644
index 000000000..e69de29bb