diff --git a/src/rougail/__init__.py b/src/rougail/__init__.py
index 5e35d2a2e..84d6d9e8b 100644
--- a/src/rougail/__init__.py
+++ b/src/rougail/__init__.py
@@ -1,5 +1,5 @@
-from .loader import load
+#from .loader import load
from .objspace import CreoleObjSpace
from .annotator import modes
-__ALL__ = ('load', 'CreoleObjSpace', 'modes')
+__ALL__ = ('CreoleObjSpace', 'modes')
diff --git a/src/rougail/annotator.py b/src/rougail/annotator.py
index ee5106fc6..c1dced68b 100644
--- a/src/rougail/annotator.py
+++ b/src/rougail/annotator.py
@@ -63,6 +63,11 @@ CONVERSION = {'number': int}
FREEZE_AUTOFREEZE_VARIABLE = 'module_instancie'
+PROPERTIES = ('hidden', 'frozen', 'auto_freeze', 'auto_save', 'force_default_on_freeze',
+ 'force_store_value', 'disabled', 'mandatory')
+CONVERT_PROPERTIES = {'auto_save': ['force_store_value'], 'auto_freeze': ['force_store_value', 'auto_freeze']}
+
+RENAME_ATTIBUTES = {'description': 'doc'}
class SpaceAnnotator:
"""Transformations applied on a CreoleObjSpace instance
@@ -80,222 +85,7 @@ class SpaceAnnotator:
FamilyAnnotator(objectspace,
self.force_not_mandatory,
)
-
-
-class ServiceAnnotator:
- """Manage service's object
- for example::
-
-
-
- 123
-
-
-
- """
- def __init__(self, objectspace):
- self.objectspace = objectspace
- self.convert_services()
-
- def gen_family(self,
- name,
- path,
- ):
- family = self.objectspace.family()
- family.name = name
- family.doc = name
- family.mode = None
- self.objectspace.paths.add_family('services',
- path,
- family,
- )
- return family
-
- def convert_services(self):
- if not hasattr(self.objectspace.space, 'services'):
- return
- if not hasattr(self.objectspace.space.services, 'service'):
- del self.objectspace.space.services
- return
- self.objectspace.space.services.hidden = True
- families = {}
- for idx, service_name in enumerate(self.objectspace.space.services.service.keys()):
- service = self.objectspace.space.services.service[service_name]
- new_service = self.objectspace.service()
- for elttype, values in vars(service).items():
- if elttype == 'name' or elttype in ERASED_ATTRIBUTES:
- setattr(new_service, elttype, values)
- continue
- eltname = elttype + 's'
- path = '.'.join(['services', eltname])
- family = self.gen_family(eltname,
- path,
- )
- if isinstance(values, dict):
- values = list(values.values())
- family.family = self.make_group_from_elts(service_name,
- elttype,
- values,
- f'services.{service_name}.{eltname}',
- )
- setattr(new_service, elttype, family)
- families[service_name] = new_service
- self.objectspace.space.services.service = families
-
- def make_group_from_elts(self,
- service_name,
- name,
- elts,
- path,
- ):
- """Splits each objects into a group (and `OptionDescription`, in tiramisu terms)
- and build elements and its attributes (the `Options` in tiramisu terms)
- """
- families = []
- new_elts = self._reorder_elts(name,
- elts,
- )
- for index, elt_info in enumerate(new_elts):
- elt = elt_info['elt']
- elt_name = elt_info['elt_name']
-
- # try to launch _update_xxxx() function
- update_elt = '_update_' + elt_name
- if hasattr(self, update_elt):
- getattr(self, update_elt)(elt,
- index,
- path,
- service_name,
- )
-
- if hasattr(elt, 'source'):
- c_name = elt.source
- else:
- c_name = elt.name
- subpath = '{}.{}'.format(path, c_name)
- family = self.gen_family(c_name, subpath)
- family.variable = []
- listname = '{}list'.format(name)
- activate_path = '.'.join([subpath, 'activate'])
- for key in dir(elt):
- if key.startswith('_') or key.endswith('_type') or key in ERASED_ATTRIBUTES:
- continue
- value = getattr(elt, key)
- if key == listname:
- self.objectspace.list_conditions.setdefault(listname,
- {}).setdefault(
- value,
- []).append(activate_path)
- continue
- family.variable.append(self._generate_element(elt_name,
- key,
- value,
- elt,
- f'{subpath}.{key}'
- ))
- # FIXME ne devrait pas etre True par défaut
- # devrait etre un calcule
- family.variable.append(self._generate_element(elt_name,
- 'activate',
- True,
- elt,
- activate_path,
- ))
- families.append(family)
- return families
-
- def _generate_element(self,
- elt_name,
- key,
- value,
- elt,
- path,
- ):
- variable = self.objectspace.variable()
- variable.name = key
- variable.mode = None
- if key == 'name':
- true_key = elt_name
- else:
- true_key = key
- dtd_key_type = true_key + '_type'
- if key == 'activate':
- type_ = 'boolean'
- elif hasattr(elt, dtd_key_type):
- type_ = KEY_TYPE[getattr(elt, dtd_key_type)]
- elif key in self.objectspace.booleans_attributs:
- type_ = 'boolean'
- else:
- type_ = 'string'
- variable.type = type_
- if type_ == 'symlink':
- variable.opt = self.objectspace.paths.get_variable_path(value,
- 'services',
- )
-# variable.opt = value
- variable.multi = None
- else:
- variable.doc = key
- val = self.objectspace.value()
- val.type = type_
- val.name = value
- variable.value = [val]
- self.objectspace.paths.add_variable('services',
- path,
- 'service',
- False,
- variable,
- )
- return variable
-
- def _reorder_elts(self,
- name,
- elts,
- ):
- """Reorders by index the elts
- """
- new_elts = {}
- # reorder elts by index
- for idx, elt in enumerate(elts):
- new_elts.setdefault(idx, []).append(elt)
- idxes = list(new_elts.keys())
- idxes.sort()
- result_elts = []
- for idx in idxes:
- for elt in new_elts[idx]:
- result_elts.append({'elt_name': name, 'elt': elt})
- return result_elts
-
- def _update_override(self,
- file_,
- index,
- service_path,
- service_name,
- ):
- file_.name = f'/systemd/system/{service_name}.service.d/rougail.conf'
- # retrieve default value from File object
- for attr in ['owner', 'group', 'mode']:
- setattr(file_, attr, getattr(self.objectspace.file, attr))
- if not hasattr(file_, 'source'):
- file_.source = f'{service_name}.service'
- self._update_file(file_,
- index,
- service_path,
- service_name,
- )
-
- def _update_file(self,
- file_,
- index,
- service_path,
- service_name,
- ):
- if not hasattr(file_, 'file_type') or file_.file_type == "UnicodeOption":
- if not hasattr(file_, 'source'):
- file_.source = basename(file_.name)
- elif not hasattr(file_, 'source'):
- raise DictConsistencyError(_('attribute source mandatory for file with variable name '
- 'for {}').format(file_.name))
+ PropertyAnnotator(objectspace)
class GroupAnnotator:
@@ -422,6 +212,225 @@ class GroupAnnotator:
)
+class ServiceAnnotator:
+ """Manage service's object
+ for example::
+
+
+
+ 123
+
+
+
+ """
+ def __init__(self, objectspace):
+ self.objectspace = objectspace
+ self.convert_services()
+
+ def convert_services(self):
+ if not hasattr(self.objectspace.space, 'services'):
+ return
+ if not hasattr(self.objectspace.space.services, 'service'):
+ del self.objectspace.space.services
+ return
+ self.objectspace.space.services.hidden = True
+ self.objectspace.space.services.name = 'services'
+ self.objectspace.space.services.doc = 'services'
+ families = {}
+ for idx, service_name in enumerate(self.objectspace.space.services.service.keys()):
+ service = self.objectspace.space.services.service[service_name]
+ new_service = self.objectspace.service()
+ for elttype, values in vars(service).items():
+ if elttype == 'name' or elttype in ERASED_ATTRIBUTES:
+ setattr(new_service, elttype, values)
+ continue
+ eltname = elttype + 's'
+ path = '.'.join(['services', eltname])
+ family = self.gen_family(eltname,
+ path,
+ )
+ if isinstance(values, dict):
+ values = list(values.values())
+ family.family = self.make_group_from_elts(service_name,
+ elttype,
+ values,
+ f'services.{service_name}.{eltname}',
+ )
+ setattr(new_service, elttype, family)
+ new_service.doc = new_service.name
+ families[service_name] = new_service
+ self.objectspace.space.services.service = families
+
+ def gen_family(self,
+ name,
+ path,
+ ):
+ family = self.objectspace.family()
+ family.name = normalize_family(name)
+ family.doc = name
+ family.mode = None
+ self.objectspace.paths.add_family('services',
+ path,
+ family,
+ )
+ return family
+
+ def make_group_from_elts(self,
+ service_name,
+ name,
+ elts,
+ path,
+ ):
+ """Splits each objects into a group (and `OptionDescription`, in tiramisu terms)
+ and build elements and its attributes (the `Options` in tiramisu terms)
+ """
+ families = []
+ new_elts = self._reorder_elts(name,
+ elts,
+ )
+ for index, elt_info in enumerate(new_elts):
+ elt = elt_info['elt']
+ elt_name = elt_info['elt_name']
+
+ # try to launch _update_xxxx() function
+ update_elt = '_update_' + elt_name
+ if hasattr(self, update_elt):
+ getattr(self, update_elt)(elt,
+ index,
+ path,
+ service_name,
+ )
+
+ if hasattr(elt, 'source'):
+ c_name = elt.source
+ else:
+ c_name = elt.name
+ subpath = '{}.{}'.format(path, c_name)
+ family = self.gen_family(c_name, subpath)
+ family.variable = []
+ listname = '{}list'.format(name)
+ activate_path = '.'.join([subpath, 'activate'])
+ for key in dir(elt):
+ if key.startswith('_') or key.endswith('_type') or key in ERASED_ATTRIBUTES:
+ continue
+ value = getattr(elt, key)
+ if key == listname:
+ self.objectspace.list_conditions.setdefault(listname,
+ {}).setdefault(
+ value,
+ []).append(activate_path)
+ continue
+ family.variable.append(self._generate_element(elt_name,
+ key,
+ value,
+ elt,
+ f'{subpath}.{key}'
+ ))
+ # FIXME ne devrait pas etre True par défaut
+ # devrait etre un calcule
+ family.variable.append(self._generate_element(elt_name,
+ 'activate',
+ True,
+ elt,
+ activate_path,
+ ))
+ families.append(family)
+ return families
+
+ def _generate_element(self,
+ elt_name,
+ key,
+ value,
+ elt,
+ path,
+ ):
+ variable = self.objectspace.variable()
+ variable.name = normalize_family(key)
+ variable.mode = None
+ if key == 'name':
+ true_key = elt_name
+ else:
+ true_key = key
+ dtd_key_type = true_key + '_type'
+ if key == 'activate':
+ type_ = 'boolean'
+ elif hasattr(elt, dtd_key_type):
+ type_ = KEY_TYPE[getattr(elt, dtd_key_type)]
+ elif key in self.objectspace.booleans_attributs:
+ type_ = 'boolean'
+ else:
+ type_ = 'string'
+ variable.type = type_
+ if type_ == 'symlink':
+ variable.opt = self.objectspace.paths.get_variable_path(value,
+ 'services',
+ )
+# variable.opt = value
+ variable.multi = None
+ else:
+ variable.doc = key
+ val = self.objectspace.value()
+ val.type = type_
+ val.name = value
+ variable.value = [val]
+ self.objectspace.paths.add_variable('services',
+ path,
+ 'service',
+ False,
+ variable,
+ )
+ return variable
+
+ def _reorder_elts(self,
+ name,
+ elts,
+ ):
+ """Reorders by index the elts
+ """
+ new_elts = {}
+ # reorder elts by index
+ for idx, elt in enumerate(elts):
+ new_elts.setdefault(idx, []).append(elt)
+ idxes = list(new_elts.keys())
+ idxes.sort()
+ result_elts = []
+ for idx in idxes:
+ for elt in new_elts[idx]:
+ result_elts.append({'elt_name': name, 'elt': elt})
+ return result_elts
+
+ def _update_override(self,
+ file_,
+ index,
+ service_path,
+ service_name,
+ ):
+ file_.name = f'/systemd/system/{service_name}.service.d/rougail.conf'
+ # retrieve default value from File object
+ for attr in ['owner', 'group', 'mode']:
+ setattr(file_, attr, getattr(self.objectspace.file, attr))
+ if not hasattr(file_, 'source'):
+ file_.source = f'{service_name}.service'
+ self._update_file(file_,
+ index,
+ service_path,
+ service_name,
+ )
+
+ def _update_file(self,
+ file_,
+ index,
+ service_path,
+ service_name,
+ ):
+ if not hasattr(file_, 'file_type') or file_.file_type == "UnicodeOption":
+ if not hasattr(file_, 'source'):
+ file_.source = basename(file_.name)
+ elif not hasattr(file_, 'source'):
+ raise DictConsistencyError(_('attribute source mandatory for file with variable name '
+ 'for {}').format(file_.name))
+
+
class VariableAnnotator:
def __init__(self,
objectspace,
@@ -433,7 +442,9 @@ class VariableAnnotator:
self.convert_separators()
def convert_variable(self):
- def _convert_variable(variable):
+ def _convert_variable(variable,
+ variable_type,
+ ):
if not hasattr(variable, 'type'):
variable.type = 'string'
if variable.type != 'symlink' and not hasattr(variable, 'description'):
@@ -442,6 +453,15 @@ class VariableAnnotator:
for value in variable.value:
if not hasattr(value, 'type'):
value.type = variable.type
+ value.name = CONVERSION.get(value.type, str)(value.name)
+ for key, value in RENAME_ATTIBUTES.items():
+ setattr(variable, value, getattr(variable, key))
+ setattr(variable, key, None)
+ if variable_type == 'follower':
+ if variable.multi is True:
+ variable.multi = 'submulti'
+ else:
+ variable.multi = True
def _convert_valid_enum(namespace,
variable,
@@ -468,20 +488,31 @@ class VariableAnnotator:
for families in self.objectspace.space.variables.values():
namespace = families.name
if hasattr(families, 'family'):
+ families.doc = families.name
for family in families.family.values():
+ family.doc = family.name
+ family.name = normalize_family(family.name)
if hasattr(family, 'variable'):
for variable in family.variable.values():
if isinstance(variable, self.objectspace.Leadership):
- for follower in variable.variable:
+ for idx, follower in enumerate(variable.variable):
+ if idx == 0:
+ variable_type = 'master'
+ else:
+ variable_type = 'follower'
path = '{}.{}.{}.{}'.format(namespace, normalize_family(family.name), variable.name, follower.name)
- _convert_variable(follower)
+ _convert_variable(follower,
+ variable_type,
+ )
_convert_valid_enum(namespace,
follower,
path,
)
else:
path = '{}.{}.{}'.format(namespace, normalize_family(family.name), variable.name)
- _convert_variable(variable)
+ _convert_variable(variable,
+ 'variable',
+ )
_convert_valid_enum(namespace,
variable,
path,
@@ -894,6 +925,8 @@ class ConstraintAnnotator:
choice.name = CONVERSION.get(type_, str)(value)
except:
raise DictConsistencyError(_(f'unable to change type of a valid_enum entry "{value}" is not a valid "{type_}" for "{variable.name}"'))
+ if choice.name == '':
+ choice.name = None
choices.append(choice.name)
choice.type = type_
variable.choice.append(choice)
@@ -1112,3 +1145,53 @@ class FamilyAnnotator:
variable.mode = modes_level[0]
path = '{}.{}'.format(family.path, variable.name)
self.annotate_variable(variable, family_mode, path)
+
+class PropertyAnnotator:
+ def __init__(self, objectspace):
+ self.objectspace = objectspace
+ self.convert_annotator()
+
+ def convert_property(self,
+ variable,
+ ):
+ properties = []
+ for prop in PROPERTIES:
+ if hasattr(variable, prop):
+ if getattr(variable, prop) == True:
+ for subprop in CONVERT_PROPERTIES.get(prop, [prop]):
+ properties.append(subprop)
+ setattr(variable, prop, None)
+ if hasattr(variable, 'mode') and variable.mode:
+ properties.append(variable.mode)
+ variable.mode = None
+ if properties:
+ variable.properties = frozenset(properties)
+
+ def convert_annotator(self): # pylint: disable=C0111
+ if hasattr(self.objectspace.space, 'services'):
+ self.convert_property(self.objectspace.space.services)
+ for services in self.objectspace.space.services.service.values():
+ self.convert_property(services)
+ for service in vars(services).values():
+ if isinstance(service, self.objectspace.family):
+ self.convert_property(service)
+ if hasattr(service, 'family'):
+ self.convert_property(service)
+ for family in service.family:
+ self.convert_property(family)
+ if hasattr(family, 'variable'):
+ for variable in family.variable:
+ self.convert_property(variable)
+ if hasattr(self.objectspace.space, 'variables'):
+ for variables in self.objectspace.space.variables.values():
+ if hasattr(variables, 'family'):
+ for family in variables.family.values():
+ self.convert_property(family)
+ if hasattr(family, 'variable'):
+ for variable in family.variable.values():
+ if isinstance(variable, self.objectspace.Leadership):
+ self.convert_property(variable)
+ for follower in variable.variable:
+ self.convert_property(follower)
+ else:
+ self.convert_property(variable)
diff --git a/src/rougail/loader.py b/src/rougail/loader.py
index 742c16ab5..b3eccb719 100644
--- a/src/rougail/loader.py
+++ b/src/rougail/loader.py
@@ -7,34 +7,12 @@ from lxml.etree import DTD
from .config import dtdfilename, variable_namespace
from .i18n import _
from .error import LoaderError
+from .annotator import ERASED_ATTRIBUTES
FUNC_TO_DICT = ['valid_not_equal']
FORCE_INFORMATIONS = ['help', 'test', 'separator']
-
-
-def convert_boolean(value):
- prop = {'True': True,
- 'False': False,
- 'None': None}
- if value not in prop:
- raise Exception('unknown value {} while trying to cast {} to boolean'.format(value, obj))
- return prop[value]
-
-
-def convert_tiramisu_value(value, type_):
- """
- convertit les variables dans le bon type si nécessaire
- """
- if value is None:
- return value
- func = CONVERT_OPTION[type_].get('func', None)
- if func is None:
- return value
- if isinstance(value, list):
- return [func(val) for val in value]
- else:
- return func(value)
+ATTRIBUTES_ORDER = ('name', 'doc', 'default', 'multi')
CONVERT_OPTION = {'number': dict(opttype="IntOption", func=int),
@@ -42,7 +20,7 @@ CONVERT_OPTION = {'number': dict(opttype="IntOption", func=int),
'string': dict(opttype="StrOption"),
'password': dict(opttype="PasswordOption"),
'mail': dict(opttype="EmailOption"),
- 'boolean': dict(opttype="BoolOption", initkwargs={'default': [True]}, func=convert_boolean),
+ 'boolean': dict(opttype="BoolOption", initkwargs={'default': [True]}),
'symlink': dict(opttype="SymLinkOption"),
'filename': dict(opttype="FilenameOption"),
'date': dict(opttype="DateOption"),
@@ -70,7 +48,7 @@ class PopulateTiramisuObjects:
xmlroot,
funcs_path,
):
- self.storage = ElementStorage(self.parse_dtd())
+ self.storage = ElementStorage()
self.storage.text = ["from tiramisu import *",
"from rougail.tiramisu import ConvertDynOptionDescription",
"import imp",
@@ -80,25 +58,6 @@ class PopulateTiramisuObjects:
# parse object
self.storage.get('.').get()
- def parse_dtd(self):
- """Loads the DTD
-
- :raises IOError: if the DTD is not found
-
- :param dtdfilename: the full filename of the DTD
- """
- if not isfile(dtdfilename):
- raise IOError(_("no such DTD file: {}").format(dtdfilename))
- booleans = []
- with open(dtdfilename, 'r') as dtdfd:
- dtd = DTD(dtdfd)
- for elt in dtd.iterelements():
- if elt.name == 'variable':
- for attr in elt.iterattributes():
- if set(attr.itervalues()) == set(['True', 'False']):
- booleans.append(attr.name)
- return booleans
-
def make_tiramisu_objects(self,
xmlroot,
):
@@ -110,8 +69,9 @@ class PopulateTiramisuObjects:
)
def get_root_family(self):
- family = Family(BaseElt({'name': 'baseoption',
- 'doc': 'baseoption'}),
+ family = Family(BaseElt('baseoption',
+ 'baseoption',
+ ),
self.storage,
False,
'.',
@@ -119,30 +79,49 @@ class PopulateTiramisuObjects:
return family
def reorder_family(self, xmlroot):
- xmlelts = []
- for xmlelt in xmlroot:
- # variable_namespace family has to be loaded before any other family
- # because `extra` family could use `variable_namespace` variables.
- if xmlelt.attrib['name'] == variable_namespace:
- xmlelts.insert(0, xmlelt)
- else:
- xmlelts.append(xmlelt)
- return xmlelts
+ # variable_namespace family has to be loaded before any other family
+ # because `extra` family could use `variable_namespace` variables.
+ if hasattr(xmlroot, 'variables'):
+ if variable_namespace in xmlroot.variables:
+ yield xmlroot.variables[variable_namespace]
+ for xmlelt, value in xmlroot.variables.items():
+ if xmlelt != variable_namespace:
+ yield value
+ if hasattr(xmlroot, 'services'):
+ yield xmlroot.services
+
+ def get_attributes(self, space): # pylint: disable=R0201
+ for attr in dir(space):
+ if not attr.startswith('_') and attr not in ERASED_ATTRIBUTES:
+ yield attr
+
+ def get_children(self,
+ space,
+ ):
+ for tag in self.get_attributes(space):
+ children = getattr(space, tag)
+ if children.__class__.__name__ == 'Family':
+ children = [children]
+ if isinstance(children, dict):
+ children = list(children.values())
+ if isinstance(children, list):
+ yield tag, children
def iter_family(self,
child,
family,
subpath,
):
- if child.tag in ['family', 'leader']:
- function = self.populate_family
- elif child.tag == 'variable':
+ tag = child.__class__.__name__
+ if tag == 'Variable':
function = self.populate_variable
- elif child.tag == 'property':
+ elif tag == 'Property':
# property already imported with family
return
else:
- raise Exception('unknown tag {}'.format(child.tag))
+ function = self.populate_family
+ #else:
+ # raise Exception('unknown tag {}'.format(child.tag))
function(family,
child,
subpath,
@@ -156,14 +135,15 @@ class PopulateTiramisuObjects:
path = self.build_path(subpath,
elt,
)
+ tag = elt.__class__.__name__
family = Family(elt,
self.storage,
- elt.tag == 'leader',
+ tag == 'Leadership',
path,
)
parent_family.add(family)
- if len(elt) != 0:
- for child in elt:
+ for tag, children in self.get_children(elt):
+ for child in children:
self.iter_family(child,
family,
path,
@@ -177,7 +157,7 @@ class PopulateTiramisuObjects:
is_follower = False
is_leader = False
if family.is_leader:
- if elt.attrib['name'] != family.elt.attrib['name']:
+ if elt.name != family.elt.name:
is_follower = True
else:
is_leader = True
@@ -195,16 +175,20 @@ class PopulateTiramisuObjects:
elt,
):
if subpath is None:
- return elt.attrib['name']
- return subpath + '.' + elt.attrib['name']
+ return elt.name
+ return subpath + '.' + elt.name
def get_text(self):
return '\n'.join(self.storage.get('.').get_text())
class BaseElt:
- def __init__(self, attrib):
- self.attrib = attrib
+ def __init__(self,
+ name,
+ doc,
+ ):
+ self.name = name
+ self.doc = doc
def __iter__(self):
return iter([])
@@ -212,12 +196,10 @@ class BaseElt:
class ElementStorage:
def __init__(self,
- booleans,
):
self.paths = {}
self.text = []
self.index = 0
- self.booleans = booleans
def add(self, path, elt):
self.paths[path] = (elt, self.index)
@@ -250,11 +232,11 @@ class Common:
self.storage.add(self.path, self)
def populate_properties(self, child):
- if child.get('type') == 'calculation':
- action = f"ParamValue('{child.text}')"
- option_name = self.storage.get(child.attrib['source']).get()
- kwargs = f"'condition': ParamOption({option_name}, todict=True), 'expected': ParamValue('{child.attrib.get('expected')}')"
- if child.attrib['inverse'] == 'True':
+ if child.type == 'calculation':
+ action = f"ParamValue('{child.name}')"
+ option_name = self.storage.get(child.source).get()
+ kwargs = f"'condition': ParamOption({option_name}, todict=True), 'expected': ParamValue('{child.expected}')"
+ if child.inverse:
kwargs += ", 'reverse_condition': ParamValue(True)"
prop = 'Calculation(calc_value, Params(' + action + ', kwargs={' + kwargs + '}))'
else:
@@ -262,14 +244,16 @@ class Common:
if self.attrib['properties']:
self.attrib['properties'] += ', '
self.attrib['properties'] += prop
- if not self.attrib['properties']:
- del self.attrib['properties']
def get_attrib(self, attrib):
ret_list = []
for key, value in self.attrib.items():
+ if value is None:
+ continue
if key == 'properties':
- value = 'frozenset([' + self.attrib[key] + '])'
+ if not self.attrib[key]:
+ continue
+ value = "frozenset({" + self.attrib[key] + "})"
elif key in ['default', 'multi', 'suffixes', 'validators']:
value = self.attrib[key]
elif isinstance(value, str) and key != 'opt' and not value.startswith('['):
@@ -286,6 +270,33 @@ class Common:
):
return self.storage.text
+ def get_attributes(self, space): # pylint: disable=R0201
+ attributes = dir(space)
+ for attr in ATTRIBUTES_ORDER:
+ if attr in attributes:
+ yield attr
+ for attr in dir(space):
+ if attr not in ATTRIBUTES_ORDER:
+ if not attr.startswith('_') and attr not in ERASED_ATTRIBUTES:
+ value = getattr(space, attr)
+ if not isinstance(value, (list, dict)) and not value.__class__.__name__ == 'Family':
+ yield attr
+
+ def get_children(self,
+ space,
+ ):
+ for attr in dir(space):
+ if not attr.startswith('_') and attr not in ERASED_ATTRIBUTES:
+ value = getattr(space, attr)
+ if isinstance(value, (list, dict)):
+ children = getattr(space, attr)
+ if children.__class__.__name__ == 'Family':
+ children = [children]
+ if isinstance(children, dict):
+ children = list(children.values())
+ if children and isinstance(children, list):
+ yield attr, children
+
class Variable(Common):
def __init__(self,
@@ -301,12 +312,12 @@ class Variable(Common):
path,
)
self.is_follower = is_follower
- convert_option = CONVERT_OPTION[elt.attrib['type']]
- del elt.attrib['type']
+ convert_option = CONVERT_OPTION[elt.type]
+ del elt.type
self.object_type = convert_option['opttype']
self.attrib.update(convert_option.get('initkwargs', {}))
if self.object_type != 'SymLinkOption':
- self.attrib['properties'] = ''
+ self.attrib['properties'] = []
self.attrib['validators'] = []
self.elt = elt
@@ -316,7 +327,6 @@ class Variable(Common):
if self.object_type == 'SymLinkOption':
self.attrib['opt'] = self.storage.get(self.attrib['opt']).get()
else:
- self.parse_multi()
self.parse_children()
attrib = self.get_attrib(self.attrib)
self.option_name = self.storage.get_name(self.path)
@@ -325,9 +335,8 @@ class Variable(Common):
return self.option_name
def populate_attrib(self):
- for key, value in self.elt.attrib.items():
- if key in self.storage.booleans:
- value = convert_boolean(value)
+ for key in self.get_attributes(self.elt):
+ value = getattr(self.elt, key)
if key in FORCE_INFORMATIONS:
self.informations[key] = value
else:
@@ -339,18 +348,24 @@ class Variable(Common):
if self.attrib['multi'] == 'submulti' and self.is_follower:
self.attrib['default_multi'] = []
choices = []
- for child in self.elt:
- if child.tag == 'property':
- self.populate_properties(child)
- elif child.tag == 'value':
- if child.attrib['type'] == 'calculation':
- self.attrib['default'] = self.calculation_value(child, [])
- else:
- self.populate_value(child)
- elif child.tag == 'check':
- self.attrib['validators'].append(self.calculation_value(child, ['ParamSelfOption()']))
- elif child.tag == 'choice':
- choices.append(convert_tiramisu_value(child.text, child.attrib['type']))
+ if 'properties' in self.attrib:
+ if self.attrib['properties']:
+ self.attrib['properties'] = "'" + "', '".join(sorted(list(self.attrib['properties']))) + "'"
+ else:
+ self.attrib['properties'] = ''
+ for tag, children in self.get_children(self.elt):
+ for child in children:
+ if tag == 'property':
+ self.populate_properties(child)
+ elif tag == 'value':
+ if child.type == 'calculation':
+ self.attrib['default'] = self.calculation_value(child, [])
+ else:
+ self.populate_value(child)
+ elif tag == 'check':
+ self.attrib['validators'].append(self.calculation_value(child, ['ParamSelfOption()']))
+ elif tag == 'choice':
+ choices.append(child.name)
if choices:
self.attrib['values'] = tuple(choices)
if self.attrib['default'] == []:
@@ -362,53 +377,47 @@ class Variable(Common):
else:
self.attrib['validators'] = '[' + ', '.join(self.attrib['validators']) + ']'
- def parse_multi(self):
- if self.is_follower:
- if self.attrib['multi'] is True:
- self.attrib['multi'] = 'submulti'
- else:
- self.attrib['multi'] = True
-
def calculation_value(self, child, args):
kwargs = []
- if 'name' in child.attrib:
+ if hasattr(child, 'name'):
# has parameters
- function = child.attrib['name']
- for param in child:
- value = self.populate_param(param)
- if 'name' not in param.attrib:
- args.append(str(value))
- else:
- kwargs.append(f"'{param.attrib['name']}': " + value)
+ function = child.name
+ if hasattr(child, 'param'):
+ for param in child.param:
+ value = self.populate_param(param)
+ if not hasattr(param, 'name'):
+ args.append(str(value))
+ else:
+ kwargs.append(f"'{param.name}': " + value)
else:
# function without any parameter
function = child.text.strip()
ret = f"Calculation(func.{function}, Params((" + ', '.join(args) + "), kwargs=" + "{" + ', '.join(kwargs) + "})"
- if 'warnings_only' in child.attrib:
- ret += f', warnings_only={child.attrib["warnings_only"]}'
+ if hasattr(child, 'warnings_only'):
+ ret += f', warnings_only={child.warnings_only}'
return ret + ')'
def populate_param(self,
param,
):
- if param.attrib['type'] == 'string':
+ if param.type == 'string':
return f'ParamValue("{param.text}")'
- elif param.attrib['type'] == 'number':
+ elif param.type == 'number':
return f'ParamValue({param.text})'
- elif param.attrib['type'] == 'variable':
+ elif param.type == 'variable':
value = {'option': param.text,
- 'notraisepropertyerror': convert_boolean(param.attrib['notraisepropertyerror']),
+ 'notraisepropertyerror': param.notraisepropertyerror,
'todict': param.text in FUNC_TO_DICT,
}
- if 'suffix' in param.attrib:
- value['suffix'] = param.attrib['suffix']
+ if hasattr(param, 'suffix'):
+ value['suffix'] = param.suffix
return self.build_param(value)
- raise LoaderError(_('unknown param type {}').format(param.attrib['type']))
+ raise LoaderError(_('unknown param type {}').format(param.type))
def populate_value(self,
child,
):
- value = convert_tiramisu_value(child.text, child.attrib['type'])
+ value = child.name
if self.attrib['multi'] == 'submulti':
self.attrib['default_multi'].append(value)
elif self.is_follower:
@@ -463,7 +472,8 @@ class Family(Common):
return self.option_name
def populate_attrib(self):
- for key, value in self.elt.attrib.items():
+ for key in self.get_attributes(self.elt):
+ value = getattr(self.elt, key)
if key == 'help':
self.informations[key] = value
elif key == 'dynamic':
@@ -473,12 +483,14 @@ class Family(Common):
self.attrib[key] = value
def parse_children(self):
- self.attrib['properties'] = ''
- for child in self.elt:
- if child.tag == 'property':
+ if 'properties' in self.attrib:
+ self.attrib['properties'] = "'" + "', '".join(sorted(list(self.attrib['properties']))) + "'"
+ if hasattr(self.elt, 'property'):
+ #self.attrib['properties'] = ''
+ for child in self.elt.property:
self.populate_properties(child)
- if not self.attrib['properties']:
- del self.attrib['properties']
+ if not self.attrib['properties']:
+ del self.attrib['properties']
def get_object_name(self):
if 'suffixes' in self.attrib:
@@ -486,11 +498,3 @@ class Family(Common):
elif not self.is_leader:
return 'OptionDescription'
return 'Leadership'
-
-
-def load(xmlroot: str,
- funcs_path: str):
- tiramisu_objects = PopulateTiramisuObjects(xmlroot,
- funcs_path,
- )
- return tiramisu_objects.get_text()
diff --git a/src/rougail/objspace.py b/src/rougail/objspace.py
index 955229eff..bdbc8df5b 100644
--- a/src/rougail/objspace.py
+++ b/src/rougail/objspace.py
@@ -29,6 +29,7 @@ from lxml.etree import Element, SubElement # pylint: disable=E0611
from .i18n import _
from .xmlreflector import XMLReflector
from .annotator import ERASED_ATTRIBUTES, SpaceAnnotator
+from .loader import PopulateTiramisuObjects
from .utils import normalize_family
from .error import OperationError, SpaceObjShallNotBeUpdated, DictConsistencyError
from .path import Path
@@ -41,8 +42,6 @@ FORCE_UNREDEFINABLES = ('value',)
# CreoleObjSpace's elements that shall be set to the UnRedefinable type
UNREDEFINABLE = ('multi', 'type')
-PROPERTIES = ('hidden', 'frozen', 'auto_freeze', 'auto_save', 'force_default_on_freeze',
- 'force_store_value', 'disabled', 'mandatory')
CONVERT_PROPERTIES = {'auto_save': ['force_store_value'], 'auto_freeze': ['force_store_value', 'auto_freeze']}
RENAME_ATTIBUTES = {'description': 'doc'}
@@ -520,81 +519,13 @@ class CreoleObjSpace:
variableobj.path = self.paths.get_family_path(family_name, namespace)
def space_visitor(self, eosfunc_file): # pylint: disable=C0111
+ self.funcs_path = eosfunc_file
SpaceAnnotator(self, eosfunc_file)
- def save(self, filename, force_no_save=False):
- """Save an XML output on disk
-
- :param filename: the full XML filename
- """
- xml = Element('rougail')
- self._xml_export(xml, self.space)
- if not force_no_save:
- self.xmlreflector.save_xmlfile(filename, xml)
- return xml
-
- def get_attributes(self, space): # pylint: disable=R0201
- for attr in dir(space):
- if not attr.startswith('_'):
- yield attr
-
- def _sub_xml_export(self, name, node, node_name, space, current_space):
- if isinstance(space, dict):
- space = list(space.values())
- if isinstance(space, list):
- for subspace in space:
- if name == 'value' and (not hasattr(subspace, 'name') or subspace.name is None):
- raise Exception('pfff')
- continue
- _name = CONVERT_EXPORT.get(subspace.__class__.__name__, 'family')
- child_node = SubElement(node, _name)
- self._xml_export(child_node, subspace, _name)
- elif isinstance(space, (self.Atom, (self.Redefinable, self.UnRedefinable))):
- _name = CONVERT_EXPORT.get(space.__class__.__name__, 'family')
- child_node = SubElement(node, _name)
- if _name != name:
- child_node.attrib['name'] = name
- if 'doc' not in child_node.attrib.keys():
- child_node.attrib['doc'] = name
- for subname in self.get_attributes(space):
- subspace = getattr(space, subname)
- self._sub_xml_export(subname, child_node, name, subspace, space)
- elif name not in ERASED_ATTRIBUTES:
- # # FIXME plutot dans annotator ...
- if node.tag in ['variable', 'family', 'leader']:
- if name in PROPERTIES:
- if space is True:
- for prop in CONVERT_PROPERTIES.get(name, [name]):
- SubElement(node, 'property').text = prop
- return
- if name == 'mode' and space:
- SubElement(node, 'property').text = space
- return
- # Not param for calculation ...
- if name == 'name' and node_name in FORCED_TEXT_ELTS_AS_NAME and not hasattr(current_space, 'param'):
- node.text = str(space)
- elif name == 'text' and node_name in self.forced_text_elts:
- node.text = space
- elif node.tag == 'family' and name == 'name':
- if 'doc' not in node.attrib.keys():
- node.attrib['doc'] = space
- node.attrib['name'] = normalize_family(space, check_name=False)
- else:
- if name in RENAME_ATTIBUTES:
- name = RENAME_ATTIBUTES[name]
- if space is not None:
- node.attrib[name] = str(space)
-
- def _xml_export(self,
- node,
- space,
- node_name=variable_namespace,
- ):
- for name in self.get_attributes(space):
- subspace = getattr(space, name)
- self._sub_xml_export(name,
- node,
- node_name,
- subspace,
- space,
- )
+ def save(self,
+ filename,
+ ):
+ tiramisu_objects = PopulateTiramisuObjects(self.space,
+ self.funcs_path,
+ )
+ return tiramisu_objects.get_text() + '\n'
diff --git a/tests/flattener_dicos/00empty/result/00-base.xml b/tests/flattener_dicos/00empty/result/00-base.xml
deleted file mode 100644
index 91a556bc9..000000000
--- a/tests/flattener_dicos/00empty/result/00-base.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
- hidden
-
-
-
diff --git a/tests/flattener_dicos/00empty/tiramisu/base.py b/tests/flattener_dicos/00empty/tiramisu/base.py
index f53499dc2..ad3c84123 100644
--- a/tests/flattener_dicos/00empty/tiramisu/base.py
+++ b/tests/flattener_dicos/00empty/tiramisu/base.py
@@ -2,6 +2,6 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_2 = OptionDescription(doc='tata', name='tata', children=[])
-option_1 = OptionDescription(name='services', doc='services', properties=frozenset(['hidden']), children=[option_2])
+option_2 = OptionDescription(name='tata', doc='tata', children=[])
+option_1 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/00load_autofreeze/result/00-base.xml b/tests/flattener_dicos/00load_autofreeze/result/00-base.xml
deleted file mode 100644
index 1e95a5277..000000000
--- a/tests/flattener_dicos/00load_autofreeze/result/00-base.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
- basic
-
- force_store_value
- auto_freeze
- oui
- non
- mandatory
- basic
- auto_frozen
- non
-
-
- oui
- non
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/00load_autofreeze/tiramisu/base.py b/tests/flattener_dicos/00load_autofreeze/tiramisu/base.py
index 5a120b55d..a083b32ed 100644
--- a/tests/flattener_dicos/00load_autofreeze/tiramisu/base.py
+++ b/tests/flattener_dicos/00load_autofreeze/tiramisu/base.py
@@ -2,8 +2,8 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='module_instancie', default='non', values=('oui', 'non'))
-option_3 = ChoiceOption(properties=frozenset(['force_store_value', 'auto_freeze', 'mandatory', 'basic', Calculation(calc_value, Params(ParamValue('auto_frozen'), kwargs={'condition': ParamOption(option_4, todict=True), 'expected': ParamValue('oui'), 'reverse_condition': ParamValue(True)}))]), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['basic']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='module_instancie', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_3 = ChoiceOption(properties=frozenset({'auto_freeze', 'basic', 'force_store_value', 'mandatory', Calculation(calc_value, Params(ParamValue('auto_frozen'), kwargs={'condition': ParamOption(option_4, todict=True), 'expected': ParamValue('oui'), 'reverse_condition': ParamValue(True)}))}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'basic'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/00load_autofreezeexpert/result/00-base.xml b/tests/flattener_dicos/00load_autofreezeexpert/result/00-base.xml
deleted file mode 100644
index 91f77baf3..000000000
--- a/tests/flattener_dicos/00load_autofreezeexpert/result/00-base.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
- normal
-
- force_store_value
- auto_freeze
- oui
- non
- mandatory
- expert
- auto_frozen
- non
-
-
- oui
- non
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/00load_autofreezeexpert/tiramisu/base.py b/tests/flattener_dicos/00load_autofreezeexpert/tiramisu/base.py
index 7a1ce4e74..9b3ac1304 100644
--- a/tests/flattener_dicos/00load_autofreezeexpert/tiramisu/base.py
+++ b/tests/flattener_dicos/00load_autofreezeexpert/tiramisu/base.py
@@ -2,8 +2,8 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='module_instancie', default='non', values=('oui', 'non'))
-option_3 = ChoiceOption(properties=frozenset(['force_store_value', 'auto_freeze', 'mandatory', 'expert', Calculation(calc_value, Params(ParamValue('auto_frozen'), kwargs={'condition': ParamOption(option_4, todict=True), 'expected': ParamValue('oui'), 'reverse_condition': ParamValue(True)}))]), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='module_instancie', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_3 = ChoiceOption(properties=frozenset({'auto_freeze', 'expert', 'force_store_value', 'mandatory', Calculation(calc_value, Params(ParamValue('auto_frozen'), kwargs={'condition': ParamOption(option_4, todict=True), 'expected': ParamValue('oui'), 'reverse_condition': ParamValue(True)}))}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/00load_autosave/result/00-base.xml b/tests/flattener_dicos/00load_autosave/result/00-base.xml
deleted file mode 100644
index 5c51a31c5..000000000
--- a/tests/flattener_dicos/00load_autosave/result/00-base.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
- basic
-
- force_store_value
- oui
- non
- mandatory
- basic
- non
-
-
-
-
diff --git a/tests/flattener_dicos/00load_autosave/tiramisu/base.py b/tests/flattener_dicos/00load_autosave/tiramisu/base.py
index 29dda7ba7..bd4a66875 100644
--- a/tests/flattener_dicos/00load_autosave/tiramisu/base.py
+++ b/tests/flattener_dicos/00load_autosave/tiramisu/base.py
@@ -2,7 +2,7 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_store_value', 'mandatory', 'basic']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['basic']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'basic', 'force_store_value', 'mandatory'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'basic'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/00load_autosaveexpert/result/00-base.xml b/tests/flattener_dicos/00load_autosaveexpert/result/00-base.xml
deleted file mode 100644
index bb0c51ce2..000000000
--- a/tests/flattener_dicos/00load_autosaveexpert/result/00-base.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
- expert
-
- force_store_value
- oui
- non
- mandatory
- expert
- non
-
-
-
-
diff --git a/tests/flattener_dicos/00load_autosaveexpert/tiramisu/base.py b/tests/flattener_dicos/00load_autosaveexpert/tiramisu/base.py
index 5a56eb59a..5645cd8ae 100644
--- a/tests/flattener_dicos/00load_autosaveexpert/tiramisu/base.py
+++ b/tests/flattener_dicos/00load_autosaveexpert/tiramisu/base.py
@@ -2,7 +2,7 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_store_value', 'mandatory', 'expert']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['expert']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'expert', 'force_store_value', 'mandatory'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'expert'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/00load_comment/result/00-base.xml b/tests/flattener_dicos/00load_comment/result/00-base.xml
deleted file mode 100644
index 3a7315b12..000000000
--- a/tests/flattener_dicos/00load_comment/result/00-base.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/00load_comment/tiramisu/base.py b/tests/flattener_dicos/00load_comment/tiramisu/base.py
index afdae7896..7cdb80205 100644
--- a/tests/flattener_dicos/00load_comment/tiramisu/base.py
+++ b/tests/flattener_dicos/00load_comment/tiramisu/base.py
@@ -2,7 +2,7 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/00load_notype/result/00-base.xml b/tests/flattener_dicos/00load_notype/result/00-base.xml
deleted file mode 100644
index d4b530cff..000000000
--- a/tests/flattener_dicos/00load_notype/result/00-base.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/00load_notype/tiramisu/base.py b/tests/flattener_dicos/00load_notype/tiramisu/base.py
index eb9bc1ac6..55cd40213 100644
--- a/tests/flattener_dicos/00load_notype/tiramisu/base.py
+++ b/tests/flattener_dicos/00load_notype/tiramisu/base.py
@@ -2,8 +2,8 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_4 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='without_type', multi=False, name='without_type', default='non')
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='without_type', doc='without_type', multi=False, default='non')
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/00load_save/result/00-base.xml b/tests/flattener_dicos/00load_save/result/00-base.xml
deleted file mode 100644
index 3a7315b12..000000000
--- a/tests/flattener_dicos/00load_save/result/00-base.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/00load_save/tiramisu/base.py b/tests/flattener_dicos/00load_save/tiramisu/base.py
index afdae7896..7cdb80205 100644
--- a/tests/flattener_dicos/00load_save/tiramisu/base.py
+++ b/tests/flattener_dicos/00load_save/tiramisu/base.py
@@ -2,7 +2,7 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/00load_subfolder/result/00-base.xml b/tests/flattener_dicos/00load_subfolder/result/00-base.xml
deleted file mode 100644
index 8b6bb1fa7..000000000
--- a/tests/flattener_dicos/00load_subfolder/result/00-base.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/00load_subfolder/tiramisu/base.py b/tests/flattener_dicos/00load_subfolder/tiramisu/base.py
index e651cc666..b18dd9332 100644
--- a/tests/flattener_dicos/00load_subfolder/tiramisu/base.py
+++ b/tests/flattener_dicos/00load_subfolder/tiramisu/base.py
@@ -2,8 +2,8 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif1', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif1', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/01auto_base/result/00-base.xml b/tests/flattener_dicos/01auto_base/result/00-base.xml
deleted file mode 100644
index 3860acddf..000000000
--- a/tests/flattener_dicos/01auto_base/result/00-base.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
-
- rougail.general.mode_conteneur_actif1
-
-
-
- oui
- non
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/01auto_base/tiramisu/base.py b/tests/flattener_dicos/01auto_base/tiramisu/base.py
index 74f73d7c6..4bde6b101 100644
--- a/tests/flattener_dicos/01auto_base/tiramisu/base.py
+++ b/tests/flattener_dicos/01auto_base/tiramisu/base.py
@@ -2,8 +2,8 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif1', default='non', values=('oui', 'non'))
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default=Calculation(func.calc_val, Params((ParamOption(option_4, notraisepropertyerror=False, todict=False)), kwargs={})), values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif1', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default=Calculation(func.calc_val, Params((ParamOption(option_4, notraisepropertyerror=False, todict=False)), kwargs={})), values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/01auto_withoutparam/result/00-base.xml b/tests/flattener_dicos/01auto_withoutparam/result/00-base.xml
deleted file mode 100644
index 99648c2d1..000000000
--- a/tests/flattener_dicos/01auto_withoutparam/result/00-base.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- calc_val
-
-
- oui
- non
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/01auto_withoutparam/tiramisu/base.py b/tests/flattener_dicos/01auto_withoutparam/tiramisu/base.py
index 198ab4e76..e544a13df 100644
--- a/tests/flattener_dicos/01auto_withoutparam/tiramisu/base.py
+++ b/tests/flattener_dicos/01auto_withoutparam/tiramisu/base.py
@@ -2,8 +2,8 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default=Calculation(func.calc_val, Params((), kwargs={})), values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif1', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default=Calculation(func.calc_val, Params((), kwargs={})), values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif1', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/01base_multi/result/00-base.xml b/tests/flattener_dicos/01base_multi/result/00-base.xml
deleted file mode 100644
index 1568579b4..000000000
--- a/tests/flattener_dicos/01base_multi/result/00-base.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/01base_multi/tiramisu/base.py b/tests/flattener_dicos/01base_multi/tiramisu/base.py
index b78603145..7d88cf18d 100644
--- a/tests/flattener_dicos/01base_multi/tiramisu/base.py
+++ b/tests/flattener_dicos/01base_multi/tiramisu/base.py
@@ -2,7 +2,7 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='Redefine description', multi=True, name='mode_conteneur_actif', default=['non'], default_multi='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='Redefine description', multi=True, default=['non'], default_multi='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/01fill_autofreeze/result/00-base.xml b/tests/flattener_dicos/01fill_autofreeze/result/00-base.xml
deleted file mode 100644
index ff5a64b9e..000000000
--- a/tests/flattener_dicos/01fill_autofreeze/result/00-base.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
- basic
-
- force_store_value
- auto_freeze
- oui
- non
- mandatory
- basic
- auto_frozen
-
- rougail.general.mode_conteneur_actif1
-
-
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/01fill_autofreeze/tiramisu/base.py b/tests/flattener_dicos/01fill_autofreeze/tiramisu/base.py
index cd4c11d7c..204501b5f 100644
--- a/tests/flattener_dicos/01fill_autofreeze/tiramisu/base.py
+++ b/tests/flattener_dicos/01fill_autofreeze/tiramisu/base.py
@@ -2,9 +2,9 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_5 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='module_instancie', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif1', default='non', values=('oui', 'non'))
-option_3 = ChoiceOption(properties=frozenset(['force_store_value', 'auto_freeze', 'mandatory', 'basic', Calculation(calc_value, Params(ParamValue('auto_frozen'), kwargs={'condition': ParamOption(option_5, todict=True), 'expected': ParamValue('oui'), 'reverse_condition': ParamValue(True)}))]), doc='No change', multi=False, name='mode_conteneur_actif', default=Calculation(func.calc_val, Params((ParamOption(option_4, notraisepropertyerror=False, todict=False)), kwargs={})), values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['basic']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_5 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='module_instancie', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif1', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_3 = ChoiceOption(properties=frozenset({'auto_freeze', 'basic', 'force_store_value', 'mandatory', Calculation(calc_value, Params(ParamValue('auto_frozen'), kwargs={'condition': ParamOption(option_5, todict=True), 'expected': ParamValue('oui'), 'reverse_condition': ParamValue(True)}))}), name='mode_conteneur_actif', doc='No change', multi=False, default=Calculation(func.calc_val, Params((ParamOption(option_4, notraisepropertyerror=False, todict=False)), kwargs={})), values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'basic'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/01fill_autosave/result/00-base.xml b/tests/flattener_dicos/01fill_autosave/result/00-base.xml
deleted file mode 100644
index 747552f5d..000000000
--- a/tests/flattener_dicos/01fill_autosave/result/00-base.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
- basic
-
- force_store_value
- oui
- non
- mandatory
- basic
-
- rougail.general.mode_conteneur_actif1
-
-
-
- oui
- non
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/01fill_autosave/tiramisu/base.py b/tests/flattener_dicos/01fill_autosave/tiramisu/base.py
index f2933b79e..7be599f80 100644
--- a/tests/flattener_dicos/01fill_autosave/tiramisu/base.py
+++ b/tests/flattener_dicos/01fill_autosave/tiramisu/base.py
@@ -2,8 +2,8 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif1', default='non', values=('oui', 'non'))
-option_3 = ChoiceOption(properties=frozenset(['force_store_value', 'mandatory', 'basic']), doc='No change', multi=False, name='mode_conteneur_actif', default=Calculation(func.calc_val, Params((ParamOption(option_4, notraisepropertyerror=False, todict=False)), kwargs={})), values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['basic']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif1', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_3 = ChoiceOption(properties=frozenset({'basic', 'force_store_value', 'mandatory'}), name='mode_conteneur_actif', doc='No change', multi=False, default=Calculation(func.calc_val, Params((ParamOption(option_4, notraisepropertyerror=False, todict=False)), kwargs={})), values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'basic'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/01fill_base/result/00-base.xml b/tests/flattener_dicos/01fill_base/result/00-base.xml
deleted file mode 100644
index 3860acddf..000000000
--- a/tests/flattener_dicos/01fill_base/result/00-base.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
-
- rougail.general.mode_conteneur_actif1
-
-
-
- oui
- non
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/01fill_base/tiramisu/base.py b/tests/flattener_dicos/01fill_base/tiramisu/base.py
index 74f73d7c6..4bde6b101 100644
--- a/tests/flattener_dicos/01fill_base/tiramisu/base.py
+++ b/tests/flattener_dicos/01fill_base/tiramisu/base.py
@@ -2,8 +2,8 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif1', default='non', values=('oui', 'non'))
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default=Calculation(func.calc_val, Params((ParamOption(option_4, notraisepropertyerror=False, todict=False)), kwargs={})), values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif1', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default=Calculation(func.calc_val, Params((ParamOption(option_4, notraisepropertyerror=False, todict=False)), kwargs={})), values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/01fill_baseaccent/result/00-base.xml b/tests/flattener_dicos/01fill_baseaccent/result/00-base.xml
deleted file mode 100644
index 7ca60059a..000000000
--- a/tests/flattener_dicos/01fill_baseaccent/result/00-base.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
-
- rougail.general.mode_conteneur_actif1
-
-
-
- oui
- non
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/01fill_baseaccent/tiramisu/base.py b/tests/flattener_dicos/01fill_baseaccent/tiramisu/base.py
index d1f580e3a..5268f551c 100644
--- a/tests/flattener_dicos/01fill_baseaccent/tiramisu/base.py
+++ b/tests/flattener_dicos/01fill_baseaccent/tiramisu/base.py
@@ -2,8 +2,8 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif1', default='non', values=('oui', 'non'))
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default=Calculation(func.calc_val, Params((ParamOption(option_4, notraisepropertyerror=False, todict=False)), kwargs={})), values=('oui', 'non'))
-option_2 = OptionDescription(doc='Général', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif1', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default=Calculation(func.calc_val, Params((ParamOption(option_4, notraisepropertyerror=False, todict=False)), kwargs={})), values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='Général', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/01fill_mandatory/result/00-base.xml b/tests/flattener_dicos/01fill_mandatory/result/00-base.xml
deleted file mode 100644
index 629b0d95a..000000000
--- a/tests/flattener_dicos/01fill_mandatory/result/00-base.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
- normal
-
- mandatory
- expert
-
- rougail.general.mode_conteneur_actif1
-
-
-
- oui
- non
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/01fill_mandatory/tiramisu/base.py b/tests/flattener_dicos/01fill_mandatory/tiramisu/base.py
index ace69e0ea..a0eb53044 100644
--- a/tests/flattener_dicos/01fill_mandatory/tiramisu/base.py
+++ b/tests/flattener_dicos/01fill_mandatory/tiramisu/base.py
@@ -2,8 +2,8 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif1', default='non', values=('oui', 'non'))
-option_3 = DomainnameOption(type='domainname', allow_ip=True, allow_without_dot=True, properties=frozenset(['mandatory', 'expert']), doc='No change', multi=False, name='mode_conteneur_actif', default=Calculation(func.calc_val, Params((ParamOption(option_4, notraisepropertyerror=False, todict=False)), kwargs={})))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif1', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_3 = DomainnameOption(type='domainname', allow_ip=True, allow_without_dot=True, properties=frozenset({'expert', 'mandatory'}), name='mode_conteneur_actif', doc='No change', multi=False, default=Calculation(func.calc_val, Params((ParamOption(option_4, notraisepropertyerror=False, todict=False)), kwargs={})))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/01fill_number/result/00-base.xml b/tests/flattener_dicos/01fill_number/result/00-base.xml
deleted file mode 100644
index d2453599e..000000000
--- a/tests/flattener_dicos/01fill_number/result/00-base.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
- normal
-
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
-
- 3
-
-
-
- oui
- non
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/01fill_number/tiramisu/base.py b/tests/flattener_dicos/01fill_number/tiramisu/base.py
index 3989b4063..5f8416524 100644
--- a/tests/flattener_dicos/01fill_number/tiramisu/base.py
+++ b/tests/flattener_dicos/01fill_number/tiramisu/base.py
@@ -2,8 +2,8 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = IntOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default=Calculation(func.calc_val, Params((ParamValue(3)), kwargs={})))
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif1', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = IntOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default=Calculation(func.calc_val, Params((ParamValue(3)), kwargs={})))
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif1', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/01fill_optional/result/00-base.xml b/tests/flattener_dicos/01fill_optional/result/00-base.xml
deleted file mode 100644
index 3860acddf..000000000
--- a/tests/flattener_dicos/01fill_optional/result/00-base.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
-
- rougail.general.mode_conteneur_actif1
-
-
-
- oui
- non
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/01fill_optional/tiramisu/base.py b/tests/flattener_dicos/01fill_optional/tiramisu/base.py
index 74f73d7c6..4bde6b101 100644
--- a/tests/flattener_dicos/01fill_optional/tiramisu/base.py
+++ b/tests/flattener_dicos/01fill_optional/tiramisu/base.py
@@ -2,8 +2,8 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif1', default='non', values=('oui', 'non'))
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default=Calculation(func.calc_val, Params((ParamOption(option_4, notraisepropertyerror=False, todict=False)), kwargs={})), values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif1', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default=Calculation(func.calc_val, Params((ParamOption(option_4, notraisepropertyerror=False, todict=False)), kwargs={})), values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/01separator_base/result/00-base.xml b/tests/flattener_dicos/01separator_base/result/00-base.xml
deleted file mode 100644
index 82679057c..000000000
--- a/tests/flattener_dicos/01separator_base/result/00-base.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/01separator_base/tiramisu/base.py b/tests/flattener_dicos/01separator_base/tiramisu/base.py
index 0639aa330..516f74b83 100644
--- a/tests/flattener_dicos/01separator_base/tiramisu/base.py
+++ b/tests/flattener_dicos/01separator_base/tiramisu/base.py
@@ -2,8 +2,8 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
option_3.impl_set_information("separator", "Établissement")
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/01separator_neverhidden/result/00-base.xml b/tests/flattener_dicos/01separator_neverhidden/result/00-base.xml
deleted file mode 100644
index 82679057c..000000000
--- a/tests/flattener_dicos/01separator_neverhidden/result/00-base.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/01separator_neverhidden/tiramisu/base.py b/tests/flattener_dicos/01separator_neverhidden/tiramisu/base.py
index 0639aa330..516f74b83 100644
--- a/tests/flattener_dicos/01separator_neverhidden/tiramisu/base.py
+++ b/tests/flattener_dicos/01separator_neverhidden/tiramisu/base.py
@@ -2,8 +2,8 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
option_3.impl_set_information("separator", "Établissement")
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10autosave_hidden/result/00-base.xml b/tests/flattener_dicos/10autosave_hidden/result/00-base.xml
deleted file mode 100644
index cb652a9c6..000000000
--- a/tests/flattener_dicos/10autosave_hidden/result/00-base.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
- basic
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
- force_store_value
- frozen
- hidden
- mandatory
- basic
-
- oui
-
-
-
-
-
diff --git a/tests/flattener_dicos/10autosave_hidden/tiramisu/base.py b/tests/flattener_dicos/10autosave_hidden/tiramisu/base.py
index f75a71e3d..cd5be2c60 100644
--- a/tests/flattener_dicos/10autosave_hidden/tiramisu/base.py
+++ b/tests/flattener_dicos/10autosave_hidden/tiramisu/base.py
@@ -2,8 +2,8 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_4 = StrOption(properties=frozenset(['force_store_value', 'frozen', 'hidden', 'mandatory', 'basic']), doc='autosave variable', multi=False, name='autosavevar', default=Calculation(func.calc_val, Params((ParamValue("oui")), kwargs={})))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['basic']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = StrOption(properties=frozenset({'basic', 'force_store_value', 'frozen', 'hidden', 'mandatory'}), name='autosavevar', doc='autosave variable', multi=False, default=Calculation(func.calc_val, Params((ParamValue("oui")), kwargs={})))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'basic'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10autosave_hidden_frozenifin/result/00-base.xml b/tests/flattener_dicos/10autosave_hidden_frozenifin/result/00-base.xml
deleted file mode 100644
index b4e5a9fdc..000000000
--- a/tests/flattener_dicos/10autosave_hidden_frozenifin/result/00-base.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
- basic
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
- force_store_value
- mandatory
- basic
- hidden
- frozen
- force_default_on_freeze
-
- oui
-
-
-
-
-
diff --git a/tests/flattener_dicos/10autosave_hidden_frozenifin/tiramisu/base.py b/tests/flattener_dicos/10autosave_hidden_frozenifin/tiramisu/base.py
index 17f86104e..12d974df4 100644
--- a/tests/flattener_dicos/10autosave_hidden_frozenifin/tiramisu/base.py
+++ b/tests/flattener_dicos/10autosave_hidden_frozenifin/tiramisu/base.py
@@ -2,8 +2,8 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_4 = StrOption(properties=frozenset(['force_store_value', 'mandatory', 'basic', Calculation(calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='autosave variable', multi=False, name='autosavevar', default=Calculation(func.calc_val, Params((ParamValue("oui")), kwargs={})))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['basic']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = StrOption(properties=frozenset({'basic', 'force_store_value', 'mandatory', Calculation(calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='autosavevar', doc='autosave variable', multi=False, default=Calculation(func.calc_val, Params((ParamValue("oui")), kwargs={})))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'basic'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10check_base/result/00-base.xml b/tests/flattener_dicos/10check_base/result/00-base.xml
deleted file mode 100644
index 097ff55a8..000000000
--- a/tests/flattener_dicos/10check_base/result/00-base.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
- normal
-
- mandatory
- normal
- b
-
-
-
- 0
- 100
-
- normal
-
-
-
-
diff --git a/tests/flattener_dicos/10check_base/tiramisu/base.py b/tests/flattener_dicos/10check_base/tiramisu/base.py
index 124a60f98..d31491c7e 100644
--- a/tests/flattener_dicos/10check_base/tiramisu/base.py
+++ b/tests/flattener_dicos/10check_base/tiramisu/base.py
@@ -2,8 +2,8 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='b')
-option_4 = IntOption(properties=frozenset(['normal']), validators=[Calculation(func.valid_entier, Params((ParamSelfOption()), kwargs={'mini': ParamValue("0"), 'maxi': ParamValue("100")}), warnings_only=False)], doc='No change', multi=False, name='int')
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='b')
+option_4 = IntOption(properties=frozenset({'normal'}), validators=[Calculation(func.valid_entier, Params((ParamSelfOption()), kwargs={'mini': ParamValue("0"), 'maxi': ParamValue("100")}), warnings_only=False)], name='int', doc='No change', multi=False)
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10check_option/result/00-base.xml b/tests/flattener_dicos/10check_option/result/00-base.xml
deleted file mode 100644
index 8a8ac4686..000000000
--- a/tests/flattener_dicos/10check_option/result/00-base.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
- normal
-
- mandatory
- normal
- b
-
-
- mandatory
- normal
- 100
-
-
-
- 0
- rougail.general.int2
-
- normal
-
-
-
-
diff --git a/tests/flattener_dicos/10check_option/tiramisu/base.py b/tests/flattener_dicos/10check_option/tiramisu/base.py
index d37d8dfef..34beec3bb 100644
--- a/tests/flattener_dicos/10check_option/tiramisu/base.py
+++ b/tests/flattener_dicos/10check_option/tiramisu/base.py
@@ -2,9 +2,9 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='b')
-option_4 = IntOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='int2', default=100)
-option_5 = IntOption(properties=frozenset(['normal']), validators=[Calculation(func.valid_entier, Params((ParamSelfOption()), kwargs={'mini': ParamValue("0"), 'maxi': ParamOption(option_4, notraisepropertyerror=False, todict=False)}), warnings_only=False)], doc='No change', multi=False, name='int')
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='b')
+option_4 = IntOption(properties=frozenset({'mandatory', 'normal'}), name='int2', doc='No change', multi=False, default=100)
+option_5 = IntOption(properties=frozenset({'normal'}), validators=[Calculation(func.valid_entier, Params((ParamSelfOption()), kwargs={'mini': ParamValue("0"), 'maxi': ParamOption(option_4, notraisepropertyerror=False, todict=False)}), warnings_only=False)], name='int', doc='No change', multi=False)
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10check_optional/result/00-base.xml b/tests/flattener_dicos/10check_optional/result/00-base.xml
deleted file mode 100644
index 2858ed5f0..000000000
--- a/tests/flattener_dicos/10check_optional/result/00-base.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
- normal
-
- mandatory
- normal
- b
-
-
-
- rougail.general.int2
-
- normal
-
-
- normal
-
-
-
-
diff --git a/tests/flattener_dicos/10check_optional/tiramisu/base.py b/tests/flattener_dicos/10check_optional/tiramisu/base.py
index ad32594b3..6e665a3ca 100644
--- a/tests/flattener_dicos/10check_optional/tiramisu/base.py
+++ b/tests/flattener_dicos/10check_optional/tiramisu/base.py
@@ -2,9 +2,9 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='b')
-option_5 = IntOption(properties=frozenset(['normal']), doc='No change', multi=False, name='int2')
-option_4 = IntOption(properties=frozenset(['normal']), validators=[Calculation(func.valid_not_equal, Params((ParamSelfOption(), ParamOption(option_5, notraisepropertyerror=False, todict=False)), kwargs={}), warnings_only=False)], doc='No change', multi=False, name='int')
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='b')
+option_5 = IntOption(properties=frozenset({'normal'}), name='int2', doc='No change', multi=False)
+option_4 = IntOption(properties=frozenset({'normal'}), validators=[Calculation(func.valid_not_equal, Params((ParamSelfOption(), ParamOption(option_5, notraisepropertyerror=False, todict=False)), kwargs={}), warnings_only=False)], name='int', doc='No change', multi=False)
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10check_valid_differ/result/00-base.xml b/tests/flattener_dicos/10check_valid_differ/result/00-base.xml
deleted file mode 100644
index 9245aa59c..000000000
--- a/tests/flattener_dicos/10check_valid_differ/result/00-base.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
- normal
-
-
- rougail.general.mode_conteneur_actif1
-
- oui
- non
- mandatory
- normal
- oui
-
-
- oui
- non
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/10check_valid_differ/tiramisu/base.py b/tests/flattener_dicos/10check_valid_differ/tiramisu/base.py
index 87a8c4429..2f3adf23e 100644
--- a/tests/flattener_dicos/10check_valid_differ/tiramisu/base.py
+++ b/tests/flattener_dicos/10check_valid_differ/tiramisu/base.py
@@ -2,8 +2,8 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif1', default='non', values=('oui', 'non'))
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), validators=[Calculation(func.valid_not_equal, Params((ParamSelfOption(), ParamOption(option_4, notraisepropertyerror=False, todict=False)), kwargs={}), warnings_only=False)], doc='No change', multi=False, name='mode_conteneur_actif', default='oui', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif1', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), validators=[Calculation(func.valid_not_equal, Params((ParamSelfOption(), ParamOption(option_4, notraisepropertyerror=False, todict=False)), kwargs={}), warnings_only=False)], name='mode_conteneur_actif', doc='No change', multi=False, default='oui', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10check_valid_differ_add/result/00-base.xml b/tests/flattener_dicos/10check_valid_differ_add/result/00-base.xml
deleted file mode 100644
index ae1163589..000000000
--- a/tests/flattener_dicos/10check_valid_differ_add/result/00-base.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- oui
-
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- mandatory
- normal
- non
-
-
-
- rougail.general.mode_conteneur_actif1
-
-
- rougail.general.mode_conteneur_actif2
-
- mandatory
- normal
- oui
-
-
-
-
diff --git a/tests/flattener_dicos/10check_valid_differ_add/tiramisu/base.py b/tests/flattener_dicos/10check_valid_differ_add/tiramisu/base.py
index bb3b5a1f7..140a8e5c7 100644
--- a/tests/flattener_dicos/10check_valid_differ_add/tiramisu/base.py
+++ b/tests/flattener_dicos/10check_valid_differ_add/tiramisu/base.py
@@ -2,10 +2,10 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='oui', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif1', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_6 = StrOption(properties=frozenset(['mandatory', 'normal']), validators=[Calculation(func.valid_not_equal, Params((ParamSelfOption(), ParamOption(option_4, notraisepropertyerror=False, todict=False)), kwargs={}), warnings_only=False), Calculation(func.valid_not_equal, Params((ParamSelfOption(), ParamOption(option_5, notraisepropertyerror=False, todict=False)), kwargs={}), warnings_only=False)], doc='No change', multi=False, name='mode_conteneur_actif3', default='oui')
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5, option_6])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='oui', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif1', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_6 = StrOption(properties=frozenset({'mandatory', 'normal'}), validators=[Calculation(func.valid_not_equal, Params((ParamSelfOption(), ParamOption(option_4, notraisepropertyerror=False, todict=False)), kwargs={}), warnings_only=False), Calculation(func.valid_not_equal, Params((ParamSelfOption(), ParamOption(option_5, notraisepropertyerror=False, todict=False)), kwargs={}), warnings_only=False)], name='mode_conteneur_actif3', doc='No change', multi=False, default='oui')
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5, option_6])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10check_valid_differ_removecheck/result/00-base.xml b/tests/flattener_dicos/10check_valid_differ_removecheck/result/00-base.xml
deleted file mode 100644
index ae1163589..000000000
--- a/tests/flattener_dicos/10check_valid_differ_removecheck/result/00-base.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- oui
-
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- mandatory
- normal
- non
-
-
-
- rougail.general.mode_conteneur_actif1
-
-
- rougail.general.mode_conteneur_actif2
-
- mandatory
- normal
- oui
-
-
-
-
diff --git a/tests/flattener_dicos/10check_valid_differ_removecheck/tiramisu/base.py b/tests/flattener_dicos/10check_valid_differ_removecheck/tiramisu/base.py
index bb3b5a1f7..140a8e5c7 100644
--- a/tests/flattener_dicos/10check_valid_differ_removecheck/tiramisu/base.py
+++ b/tests/flattener_dicos/10check_valid_differ_removecheck/tiramisu/base.py
@@ -2,10 +2,10 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='oui', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif1', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_6 = StrOption(properties=frozenset(['mandatory', 'normal']), validators=[Calculation(func.valid_not_equal, Params((ParamSelfOption(), ParamOption(option_4, notraisepropertyerror=False, todict=False)), kwargs={}), warnings_only=False), Calculation(func.valid_not_equal, Params((ParamSelfOption(), ParamOption(option_5, notraisepropertyerror=False, todict=False)), kwargs={}), warnings_only=False)], doc='No change', multi=False, name='mode_conteneur_actif3', default='oui')
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5, option_6])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='oui', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif1', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_6 = StrOption(properties=frozenset({'mandatory', 'normal'}), validators=[Calculation(func.valid_not_equal, Params((ParamSelfOption(), ParamOption(option_4, notraisepropertyerror=False, todict=False)), kwargs={}), warnings_only=False), Calculation(func.valid_not_equal, Params((ParamSelfOption(), ParamOption(option_5, notraisepropertyerror=False, todict=False)), kwargs={}), warnings_only=False)], name='mode_conteneur_actif3', doc='No change', multi=False, default='oui')
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5, option_6])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10check_valid_ipnetmask/result/00-base.xml b/tests/flattener_dicos/10check_valid_ipnetmask/result/00-base.xml
deleted file mode 100644
index 28e093f5d..000000000
--- a/tests/flattener_dicos/10check_valid_ipnetmask/result/00-base.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- basic
-
- oui
- non
- mandatory
- normal
- oui
-
-
- mandatory
- basic
-
-
-
- rougail.general.adresse_ip_eth0
-
- mandatory
- basic
-
-
-
-
diff --git a/tests/flattener_dicos/10check_valid_ipnetmask/tiramisu/base.py b/tests/flattener_dicos/10check_valid_ipnetmask/tiramisu/base.py
index 7ef00e929..d0f4a409a 100644
--- a/tests/flattener_dicos/10check_valid_ipnetmask/tiramisu/base.py
+++ b/tests/flattener_dicos/10check_valid_ipnetmask/tiramisu/base.py
@@ -2,9 +2,9 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='oui', values=('oui', 'non'))
-option_4 = IPOption(private_only=True, warnings_only=True, properties=frozenset(['mandatory', 'basic']), doc='Adresse IP de la carte', multi=False, name='adresse_ip_eth0')
-option_5 = NetmaskOption(properties=frozenset(['mandatory', 'basic']), validators=[Calculation(func.valid_ip_netmask, Params((ParamSelfOption(), ParamOption(option_4, notraisepropertyerror=False, todict=False)), kwargs={}), warnings_only=True)], doc='Masque de sous réseau de la carte', multi=False, name='adresse_netmask_eth0')
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['basic']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='oui', values=('oui', 'non'))
+option_4 = IPOption(private_only=True, warnings_only=True, properties=frozenset({'basic', 'mandatory'}), name='adresse_ip_eth0', doc='Adresse IP de la carte', multi=False)
+option_5 = NetmaskOption(properties=frozenset({'basic', 'mandatory'}), validators=[Calculation(func.valid_ip_netmask, Params((ParamSelfOption(), ParamOption(option_4, notraisepropertyerror=False, todict=False)), kwargs={}), warnings_only=True)], name='adresse_netmask_eth0', doc='Masque de sous réseau de la carte', multi=False)
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'basic'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10leadership_append/result/00-base.xml b/tests/flattener_dicos/10leadership_append/result/00-base.xml
deleted file mode 100644
index 3c7b30048..000000000
--- a/tests/flattener_dicos/10leadership_append/result/00-base.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
-
- normal
-
- normal
-
-
- mandatory
- normal
-
- valfill
-
-
-
- mandatory
- normal
-
- rougail.general1.leader.follower1
-
-
-
- normal
-
-
-
-
-
diff --git a/tests/flattener_dicos/10leadership_append/tiramisu/base.py b/tests/flattener_dicos/10leadership_append/tiramisu/base.py
index b50263a2e..871dce92e 100644
--- a/tests/flattener_dicos/10leadership_append/tiramisu/base.py
+++ b/tests/flattener_dicos/10leadership_append/tiramisu/base.py
@@ -2,13 +2,13 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_6 = StrOption(properties=frozenset([]), doc='leader', multi=True, name='leader')
-option_7 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='follower1', multi=True, name='follower1', default=Calculation(func.calc_val, Params((), kwargs={'valeur': ParamValue("valfill")})))
-option_8 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='follower2', multi=True, name='follower2', default=Calculation(func.calc_val, Params((ParamOption(option_7, notraisepropertyerror=False, todict=False)), kwargs={})))
-option_9 = StrOption(properties=frozenset(['normal']), doc='follower3', multi=True, name='follower3')
-option_5 = Leadership(doc='leader', name='leader', properties=frozenset(['normal']), children=[option_6, option_7, option_8, option_9])
-option_4 = OptionDescription(doc='general1', name='general1', properties=frozenset(['normal']), children=[option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_4])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_6 = StrOption(name='leader', doc='leader', multi=True)
+option_7 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='follower1', doc='follower1', multi=True, default=Calculation(func.calc_val, Params((), kwargs={'valeur': ParamValue("valfill")})))
+option_8 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='follower2', doc='follower2', multi=True, default=Calculation(func.calc_val, Params((ParamOption(option_7, notraisepropertyerror=False, todict=False)), kwargs={})))
+option_9 = StrOption(properties=frozenset({'normal'}), name='follower3', doc='follower3', multi=True)
+option_5 = Leadership(name='leader', doc='leader', properties=frozenset({'normal'}), children=[option_6, option_7, option_8, option_9])
+option_4 = OptionDescription(name='general1', doc='general1', properties=frozenset({'normal'}), children=[option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_4])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10leadership_auto/result/00-base.xml b/tests/flattener_dicos/10leadership_auto/result/00-base.xml
deleted file mode 100644
index 0b1ce1f0a..000000000
--- a/tests/flattener_dicos/10leadership_auto/result/00-base.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- normal
-
-
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
-
- valfill
-
-
-
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
-
- rougail.general.leader.follower1
-
-
-
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
-
- rougail.general.leader.leader
-
-
-
-
-
-
diff --git a/tests/flattener_dicos/10leadership_auto/tiramisu/base.py b/tests/flattener_dicos/10leadership_auto/tiramisu/base.py
index 4d8d86b62..287a62e44 100644
--- a/tests/flattener_dicos/10leadership_auto/tiramisu/base.py
+++ b/tests/flattener_dicos/10leadership_auto/tiramisu/base.py
@@ -2,12 +2,12 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_5 = StrOption(properties=frozenset([]), doc='leader', multi=True, name='leader')
-option_6 = StrOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='follower1', multi=True, name='follower1', default=Calculation(func.calc_val, Params((), kwargs={'valeur': ParamValue("valfill")})))
-option_7 = StrOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='follower2', multi=True, name='follower2', default=Calculation(func.calc_val, Params((ParamOption(option_6, notraisepropertyerror=False, todict=False)), kwargs={})))
-option_8 = StrOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='follower3', multi=True, name='follower3', default=Calculation(func.calc_val, Params((ParamOption(option_5, notraisepropertyerror=False, todict=False)), kwargs={})))
-option_4 = Leadership(doc='leader', name='leader', properties=frozenset(['normal']), children=[option_5, option_6, option_7, option_8])
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = StrOption(name='leader', doc='leader', multi=True)
+option_6 = StrOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='follower1', doc='follower1', multi=True, default=Calculation(func.calc_val, Params((), kwargs={'valeur': ParamValue("valfill")})))
+option_7 = StrOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='follower2', doc='follower2', multi=True, default=Calculation(func.calc_val, Params((ParamOption(option_6, notraisepropertyerror=False, todict=False)), kwargs={})))
+option_8 = StrOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='follower3', doc='follower3', multi=True, default=Calculation(func.calc_val, Params((ParamOption(option_5, notraisepropertyerror=False, todict=False)), kwargs={})))
+option_4 = Leadership(name='leader', doc='leader', properties=frozenset({'normal'}), children=[option_5, option_6, option_7, option_8])
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10leadership_autoleader/result/00-base.xml b/tests/flattener_dicos/10leadership_autoleader/result/00-base.xml
deleted file mode 100644
index 05f810743..000000000
--- a/tests/flattener_dicos/10leadership_autoleader/result/00-base.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- normal
-
-
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
-
- valfill
-
-
-
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
-
- rougail.general.leader.leader
-
-
-
-
-
-
diff --git a/tests/flattener_dicos/10leadership_autoleader/tiramisu/base.py b/tests/flattener_dicos/10leadership_autoleader/tiramisu/base.py
index 03bdfedbc..8c83821c4 100644
--- a/tests/flattener_dicos/10leadership_autoleader/tiramisu/base.py
+++ b/tests/flattener_dicos/10leadership_autoleader/tiramisu/base.py
@@ -2,11 +2,11 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_5 = StrOption(properties=frozenset([]), doc='leader', multi=True, name='leader')
-option_6 = StrOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='follower1', multi=True, name='follower1', default=Calculation(func.calc_val, Params((), kwargs={'valeur': ParamValue("valfill")})))
-option_7 = StrOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='follower2', multi=True, name='follower2', default=Calculation(func.calc_val, Params((ParamOption(option_5, notraisepropertyerror=False, todict=False)), kwargs={})))
-option_4 = Leadership(doc='leader', name='leader', properties=frozenset(['normal']), children=[option_5, option_6, option_7])
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = StrOption(name='leader', doc='leader', multi=True)
+option_6 = StrOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='follower1', doc='follower1', multi=True, default=Calculation(func.calc_val, Params((), kwargs={'valeur': ParamValue("valfill")})))
+option_7 = StrOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='follower2', doc='follower2', multi=True, default=Calculation(func.calc_val, Params((ParamOption(option_5, notraisepropertyerror=False, todict=False)), kwargs={})))
+option_4 = Leadership(name='leader', doc='leader', properties=frozenset({'normal'}), children=[option_5, option_6, option_7])
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10leadership_autoleader_expert/result/00-base.xml b/tests/flattener_dicos/10leadership_autoleader_expert/result/00-base.xml
deleted file mode 100644
index 0c1a0d951..000000000
--- a/tests/flattener_dicos/10leadership_autoleader_expert/result/00-base.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
- expert
-
- oui
- non
- mandatory
- expert
- non
-
-
-
- expert
-
- expert
-
- mandatory
-
- valfill
-
-
-
- expert
-
-
- expert
-
-
-
-
-
diff --git a/tests/flattener_dicos/10leadership_autoleader_expert/tiramisu/base.py b/tests/flattener_dicos/10leadership_autoleader_expert/tiramisu/base.py
index a49cb263b..92137f38e 100644
--- a/tests/flattener_dicos/10leadership_autoleader_expert/tiramisu/base.py
+++ b/tests/flattener_dicos/10leadership_autoleader_expert/tiramisu/base.py
@@ -2,12 +2,12 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'expert']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['expert']), children=[option_3])
-option_6 = StrOption(properties=frozenset(['mandatory']), doc='leader', multi=True, name='leader', default=Calculation(func.calc_list, Params((), kwargs={'valeur': ParamValue("valfill")})))
-option_7 = StrOption(properties=frozenset(['expert']), doc='follower1', multi=True, name='follower1')
-option_8 = StrOption(properties=frozenset(['expert']), doc='follower2', multi=True, name='follower2')
-option_5 = Leadership(doc='leader', name='leader', properties=frozenset(['expert']), children=[option_6, option_7, option_8])
-option_4 = OptionDescription(doc='leadermode', name='leadermode', properties=frozenset(['expert']), children=[option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_4])
+option_3 = ChoiceOption(properties=frozenset({'expert', 'mandatory'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'expert'}), children=[option_3])
+option_6 = StrOption(properties=frozenset({'mandatory'}), name='leader', doc='leader', multi=True, default=Calculation(func.calc_list, Params((), kwargs={'valeur': ParamValue("valfill")})))
+option_7 = StrOption(properties=frozenset({'expert'}), name='follower1', doc='follower1', multi=True)
+option_8 = StrOption(properties=frozenset({'expert'}), name='follower2', doc='follower2', multi=True)
+option_5 = Leadership(name='leader', doc='leader', properties=frozenset({'expert'}), children=[option_6, option_7, option_8])
+option_4 = OptionDescription(name='leadermode', doc='leadermode', properties=frozenset({'expert'}), children=[option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_4])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10leadership_autosaveexpert/result/00-base.xml b/tests/flattener_dicos/10leadership_autosaveexpert/result/00-base.xml
deleted file mode 100644
index 1ed7c5578..000000000
--- a/tests/flattener_dicos/10leadership_autosaveexpert/result/00-base.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- normal
-
-
- mandatory
- normal
-
- valfill
-
-
-
- mandatory
- expert
-
- rougail.general.leader.follower1
-
-
-
-
-
-
diff --git a/tests/flattener_dicos/10leadership_autosaveexpert/tiramisu/base.py b/tests/flattener_dicos/10leadership_autosaveexpert/tiramisu/base.py
index e7c6e9efb..9921b16e3 100644
--- a/tests/flattener_dicos/10leadership_autosaveexpert/tiramisu/base.py
+++ b/tests/flattener_dicos/10leadership_autosaveexpert/tiramisu/base.py
@@ -2,11 +2,11 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_5 = StrOption(properties=frozenset([]), doc='leader', multi=True, name='leader')
-option_6 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='follower1', multi=True, name='follower1', default=Calculation(func.calc_val, Params((), kwargs={'valeur': ParamValue("valfill")})))
-option_7 = StrOption(properties=frozenset(['mandatory', 'expert']), doc='follower2', multi=True, name='follower2', default=Calculation(func.calc_val, Params((ParamOption(option_6, notraisepropertyerror=False, todict=False)), kwargs={})))
-option_4 = Leadership(doc='leader', name='leader', properties=frozenset(['normal']), children=[option_5, option_6, option_7])
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = StrOption(name='leader', doc='leader', multi=True)
+option_6 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='follower1', doc='follower1', multi=True, default=Calculation(func.calc_val, Params((), kwargs={'valeur': ParamValue("valfill")})))
+option_7 = StrOption(properties=frozenset({'expert', 'mandatory'}), name='follower2', doc='follower2', multi=True, default=Calculation(func.calc_val, Params((ParamOption(option_6, notraisepropertyerror=False, todict=False)), kwargs={})))
+option_4 = Leadership(name='leader', doc='leader', properties=frozenset({'normal'}), children=[option_5, option_6, option_7])
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10leadership_familyaccent/result/00-base.xml b/tests/flattener_dicos/10leadership_familyaccent/result/00-base.xml
deleted file mode 100644
index a16cbd144..000000000
--- a/tests/flattener_dicos/10leadership_familyaccent/result/00-base.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- normal
-
-
- mandatory
- normal
-
- valfill
-
-
-
- mandatory
- normal
-
- rougail.general.leader.follower1
-
-
-
-
-
-
diff --git a/tests/flattener_dicos/10leadership_familyaccent/tiramisu/base.py b/tests/flattener_dicos/10leadership_familyaccent/tiramisu/base.py
index 93a030241..042a4e16c 100644
--- a/tests/flattener_dicos/10leadership_familyaccent/tiramisu/base.py
+++ b/tests/flattener_dicos/10leadership_familyaccent/tiramisu/base.py
@@ -2,11 +2,11 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_5 = StrOption(properties=frozenset([]), doc='leader', multi=True, name='leader')
-option_6 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='follower1', multi=True, name='follower1', default=Calculation(func.calc_val, Params((), kwargs={'valeur': ParamValue("valfill")})))
-option_7 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='follower2', multi=True, name='follower2', default=Calculation(func.calc_val, Params((ParamOption(option_6, notraisepropertyerror=False, todict=False)), kwargs={})))
-option_4 = Leadership(doc='leader', name='leader', properties=frozenset(['normal']), children=[option_5, option_6, option_7])
-option_2 = OptionDescription(doc='Général', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = StrOption(name='leader', doc='leader', multi=True)
+option_6 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='follower1', doc='follower1', multi=True, default=Calculation(func.calc_val, Params((), kwargs={'valeur': ParamValue("valfill")})))
+option_7 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='follower2', doc='follower2', multi=True, default=Calculation(func.calc_val, Params((ParamOption(option_6, notraisepropertyerror=False, todict=False)), kwargs={})))
+option_4 = Leadership(name='leader', doc='leader', properties=frozenset({'normal'}), children=[option_5, option_6, option_7])
+option_2 = OptionDescription(name='general', doc='Général', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10leadership_leader_hidden/result/00-base.xml b/tests/flattener_dicos/10leadership_leader_hidden/result/00-base.xml
deleted file mode 100644
index 70c9f0010..000000000
--- a/tests/flattener_dicos/10leadership_leader_hidden/result/00-base.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
- expert
-
- oui
- non
- mandatory
- expert
- non
-
-
-
- normal
-
- hidden
- normal
-
- force_default_on_freeze
- frozen
- mandatory
-
- valfill
-
-
-
- force_default_on_freeze
- frozen
- normal
-
-
- force_default_on_freeze
- frozen
- normal
-
-
-
-
-
diff --git a/tests/flattener_dicos/10leadership_leader_hidden/tiramisu/base.py b/tests/flattener_dicos/10leadership_leader_hidden/tiramisu/base.py
index 201e4825c..2ffcd10a1 100644
--- a/tests/flattener_dicos/10leadership_leader_hidden/tiramisu/base.py
+++ b/tests/flattener_dicos/10leadership_leader_hidden/tiramisu/base.py
@@ -2,12 +2,12 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'expert']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['expert']), children=[option_3])
-option_6 = StrOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'mandatory']), doc='leader', multi=True, name='leader', default=Calculation(func.calc_list, Params((), kwargs={'valeur': ParamValue("valfill")})))
-option_7 = StrOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'normal']), doc='follower1', multi=True, name='follower1')
-option_8 = StrOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'normal']), doc='follower2', multi=True, name='follower2')
-option_5 = Leadership(doc='leader', name='leader', properties=frozenset(['hidden', 'normal']), children=[option_6, option_7, option_8])
-option_4 = OptionDescription(doc='leadermode', name='leadermode', properties=frozenset(['normal']), children=[option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_4])
+option_3 = ChoiceOption(properties=frozenset({'expert', 'mandatory'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'expert'}), children=[option_3])
+option_6 = StrOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'mandatory'}), name='leader', doc='leader', multi=True, default=Calculation(func.calc_list, Params((), kwargs={'valeur': ParamValue("valfill")})))
+option_7 = StrOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'normal'}), name='follower1', doc='follower1', multi=True)
+option_8 = StrOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'normal'}), name='follower2', doc='follower2', multi=True)
+option_5 = Leadership(name='leader', doc='leader', properties=frozenset({'hidden', 'normal'}), children=[option_6, option_7, option_8])
+option_4 = OptionDescription(name='leadermode', doc='leadermode', properties=frozenset({'normal'}), children=[option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_4])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10leadership_leader_hidden_if_in/result/00-base.xml b/tests/flattener_dicos/10leadership_leader_hidden_if_in/result/00-base.xml
deleted file mode 100644
index 35ca78c54..000000000
--- a/tests/flattener_dicos/10leadership_leader_hidden_if_in/result/00-base.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
- expert
-
- oui
- non
- mandatory
- expert
- non
-
-
-
- normal
-
- normal
- hidden
-
- frozen
- force_default_on_freeze
-
-
- normal
- frozen
- force_default_on_freeze
-
-
- normal
- frozen
- force_default_on_freeze
-
-
-
-
-
diff --git a/tests/flattener_dicos/10leadership_leader_hidden_if_in/tiramisu/base.py b/tests/flattener_dicos/10leadership_leader_hidden_if_in/tiramisu/base.py
index b486cc75e..aad343856 100644
--- a/tests/flattener_dicos/10leadership_leader_hidden_if_in/tiramisu/base.py
+++ b/tests/flattener_dicos/10leadership_leader_hidden_if_in/tiramisu/base.py
@@ -2,12 +2,12 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'expert']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['expert']), children=[option_3])
-option_6 = StrOption(properties=frozenset([Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('non')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('non')}))]), doc='leader', multi=True, name='leader')
-option_7 = StrOption(properties=frozenset(['normal', Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('non')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('non')}))]), doc='follower1', multi=True, name='follower1')
-option_8 = StrOption(properties=frozenset(['normal', Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('non')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('non')}))]), doc='follower2', multi=True, name='follower2')
-option_5 = Leadership(doc='leader', name='leader', properties=frozenset(['normal', Calculation(calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('non')}))]), children=[option_6, option_7, option_8])
-option_4 = OptionDescription(doc='leadermode', name='leadermode', properties=frozenset(['normal']), children=[option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_4])
+option_3 = ChoiceOption(properties=frozenset({'expert', 'mandatory'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'expert'}), children=[option_3])
+option_6 = StrOption(properties=frozenset({Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('non')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('non')}))}), name='leader', doc='leader', multi=True)
+option_7 = StrOption(properties=frozenset({'normal', Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('non')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('non')}))}), name='follower1', doc='follower1', multi=True)
+option_8 = StrOption(properties=frozenset({'normal', Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('non')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('non')}))}), name='follower2', doc='follower2', multi=True)
+option_5 = Leadership(name='leader', doc='leader', properties=frozenset({'normal', Calculation(calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('non')}))}), children=[option_6, option_7, option_8])
+option_4 = OptionDescription(name='leadermode', doc='leadermode', properties=frozenset({'normal'}), children=[option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_4])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10leadership_leadermandatory/result/00-base.xml b/tests/flattener_dicos/10leadership_leadermandatory/result/00-base.xml
deleted file mode 100644
index cc3edbf24..000000000
--- a/tests/flattener_dicos/10leadership_leadermandatory/result/00-base.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
- basic
-
- oui
- non
- mandatory
- normal
- non
-
-
- basic
-
- mandatory
-
-
- mandatory
- normal
-
- valfill
-
-
-
- mandatory
- normal
-
- rougail.general.leader.follower1
-
-
-
-
-
-
diff --git a/tests/flattener_dicos/10leadership_leadermandatory/tiramisu/base.py b/tests/flattener_dicos/10leadership_leadermandatory/tiramisu/base.py
index 402b772f5..7a6a493ff 100644
--- a/tests/flattener_dicos/10leadership_leadermandatory/tiramisu/base.py
+++ b/tests/flattener_dicos/10leadership_leadermandatory/tiramisu/base.py
@@ -2,11 +2,11 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_5 = StrOption(properties=frozenset(['mandatory']), doc='leader', multi=True, name='leader')
-option_6 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='follower1', multi=True, name='follower1', default=Calculation(func.calc_val, Params((), kwargs={'valeur': ParamValue("valfill")})))
-option_7 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='follower2', multi=True, name='follower2', default=Calculation(func.calc_val, Params((ParamOption(option_6, notraisepropertyerror=False, todict=False)), kwargs={})))
-option_4 = Leadership(doc='leader', name='leader', properties=frozenset(['basic']), children=[option_5, option_6, option_7])
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['basic']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = StrOption(properties=frozenset({'mandatory'}), name='leader', doc='leader', multi=True)
+option_6 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='follower1', doc='follower1', multi=True, default=Calculation(func.calc_val, Params((), kwargs={'valeur': ParamValue("valfill")})))
+option_7 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='follower2', doc='follower2', multi=True, default=Calculation(func.calc_val, Params((ParamOption(option_6, notraisepropertyerror=False, todict=False)), kwargs={})))
+option_4 = Leadership(name='leader', doc='leader', properties=frozenset({'basic'}), children=[option_5, option_6, option_7])
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'basic'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10leadership_mandatory/result/00-base.xml b/tests/flattener_dicos/10leadership_mandatory/result/00-base.xml
deleted file mode 100644
index 7bdfd9376..000000000
--- a/tests/flattener_dicos/10leadership_mandatory/result/00-base.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- normal
-
-
- mandatory
- normal
-
- valfill
-
-
-
- mandatory
- normal
-
- rougail.general.leader.follower1
-
-
-
-
-
-
diff --git a/tests/flattener_dicos/10leadership_mandatory/tiramisu/base.py b/tests/flattener_dicos/10leadership_mandatory/tiramisu/base.py
index 3f9c1cb58..6784aa3d1 100644
--- a/tests/flattener_dicos/10leadership_mandatory/tiramisu/base.py
+++ b/tests/flattener_dicos/10leadership_mandatory/tiramisu/base.py
@@ -2,11 +2,11 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_5 = StrOption(properties=frozenset([]), doc='leader', multi=True, name='leader')
-option_6 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='follower1', multi=True, name='follower1', default=Calculation(func.calc_val, Params((), kwargs={'valeur': ParamValue("valfill")})))
-option_7 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='follower2', multi=True, name='follower2', default=Calculation(func.calc_val, Params((ParamOption(option_6, notraisepropertyerror=False, todict=False)), kwargs={})))
-option_4 = Leadership(doc='leader', name='leader', properties=frozenset(['normal']), children=[option_5, option_6, option_7])
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = StrOption(name='leader', doc='leader', multi=True)
+option_6 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='follower1', doc='follower1', multi=True, default=Calculation(func.calc_val, Params((), kwargs={'valeur': ParamValue("valfill")})))
+option_7 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='follower2', doc='follower2', multi=True, default=Calculation(func.calc_val, Params((ParamOption(option_6, notraisepropertyerror=False, todict=False)), kwargs={})))
+option_4 = Leadership(name='leader', doc='leader', properties=frozenset({'normal'}), children=[option_5, option_6, option_7])
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10leadership_mandatoryfollower/result/00-base.xml b/tests/flattener_dicos/10leadership_mandatoryfollower/result/00-base.xml
deleted file mode 100644
index 608276ef5..000000000
--- a/tests/flattener_dicos/10leadership_mandatoryfollower/result/00-base.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- oui
-
-
- normal
-
-
- mandatory
- normal
-
-
-
-
-
diff --git a/tests/flattener_dicos/10leadership_mandatoryfollower/tiramisu/base.py b/tests/flattener_dicos/10leadership_mandatoryfollower/tiramisu/base.py
index 2757d82c1..36f159e18 100644
--- a/tests/flattener_dicos/10leadership_mandatoryfollower/tiramisu/base.py
+++ b/tests/flattener_dicos/10leadership_mandatoryfollower/tiramisu/base.py
@@ -2,10 +2,10 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='oui', values=('oui', 'non'))
-option_5 = NetmaskOption(properties=frozenset([]), doc='Masque de l\'IP du réseau de l\'esclave', multi=True, name='nut_monitor_netmask')
-option_6 = NetworkOption(properties=frozenset(['mandatory', 'normal']), doc='Adresse IP du réseau de l\'esclave', multi=True, name='nut_monitor_host')
-option_4 = Leadership(doc='Masque de l\'IP du réseau de l\'esclave', name='nut_monitor_netmask', properties=frozenset(['normal']), children=[option_5, option_6])
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='oui', values=('oui', 'non'))
+option_5 = NetmaskOption(name='nut_monitor_netmask', doc='Masque de l\'IP du réseau de l\'esclave', multi=True)
+option_6 = NetworkOption(properties=frozenset({'mandatory', 'normal'}), name='nut_monitor_host', doc='Adresse IP du réseau de l\'esclave', multi=True)
+option_4 = Leadership(name='nut_monitor_netmask', doc='Masque de l\'IP du réseau de l\'esclave', properties=frozenset({'normal'}), children=[option_5, option_6])
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10leadership_multi/result/00-base.xml b/tests/flattener_dicos/10leadership_multi/result/00-base.xml
deleted file mode 100644
index 810cc2744..000000000
--- a/tests/flattener_dicos/10leadership_multi/result/00-base.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
-
- normal
-
- normal
-
-
- mandatory
- normal
-
- valfill
-
-
-
- mandatory
- normal
-
- rougail.general1.leader.follower1
-
-
-
-
- normal
-
-
- normal
-
-
- normal
-
-
-
-
-
diff --git a/tests/flattener_dicos/10leadership_multi/tiramisu/base.py b/tests/flattener_dicos/10leadership_multi/tiramisu/base.py
index f62fdd014..132a14b0f 100644
--- a/tests/flattener_dicos/10leadership_multi/tiramisu/base.py
+++ b/tests/flattener_dicos/10leadership_multi/tiramisu/base.py
@@ -2,16 +2,16 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_6 = StrOption(properties=frozenset([]), doc='leader', multi=True, name='leader')
-option_7 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='follower1', multi=True, name='follower1', default=Calculation(func.calc_val, Params((), kwargs={'valeur': ParamValue("valfill")})))
-option_8 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='follower2', multi=True, name='follower2', default=Calculation(func.calc_val, Params((ParamOption(option_7, notraisepropertyerror=False, todict=False)), kwargs={})))
-option_5 = Leadership(doc='leader', name='leader', properties=frozenset(['normal']), children=[option_6, option_7, option_8])
-option_10 = StrOption(properties=frozenset([]), doc='leader', multi=True, name='leader1')
-option_11 = StrOption(properties=frozenset(['normal']), doc='follower1', multi=True, name='follower11')
-option_12 = StrOption(properties=frozenset(['normal']), doc='follower2', multi=True, name='follower21')
-option_9 = Leadership(doc='leader', name='leader1', properties=frozenset(['normal']), children=[option_10, option_11, option_12])
-option_4 = OptionDescription(doc='general1', name='general1', properties=frozenset(['normal']), children=[option_5, option_9])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_4])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_6 = StrOption(name='leader', doc='leader', multi=True)
+option_7 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='follower1', doc='follower1', multi=True, default=Calculation(func.calc_val, Params((), kwargs={'valeur': ParamValue("valfill")})))
+option_8 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='follower2', doc='follower2', multi=True, default=Calculation(func.calc_val, Params((ParamOption(option_7, notraisepropertyerror=False, todict=False)), kwargs={})))
+option_5 = Leadership(name='leader', doc='leader', properties=frozenset({'normal'}), children=[option_6, option_7, option_8])
+option_10 = StrOption(name='leader1', doc='leader', multi=True)
+option_11 = StrOption(properties=frozenset({'normal'}), name='follower11', doc='follower1', multi=True)
+option_12 = StrOption(properties=frozenset({'normal'}), name='follower21', doc='follower2', multi=True)
+option_9 = Leadership(name='leader1', doc='leader', properties=frozenset({'normal'}), children=[option_10, option_11, option_12])
+option_4 = OptionDescription(name='general1', doc='general1', properties=frozenset({'normal'}), children=[option_5, option_9])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_4])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10load_disabled_if_in/result/00-base.xml b/tests/flattener_dicos/10load_disabled_if_in/result/00-base.xml
deleted file mode 100644
index 52cd615c3..000000000
--- a/tests/flattener_dicos/10load_disabled_if_in/result/00-base.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- disabled
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- disabled
- non
-
-
-
-
diff --git a/tests/flattener_dicos/10load_disabled_if_in/tiramisu/base.py b/tests/flattener_dicos/10load_disabled_if_in/tiramisu/base.py
index 458897bc0..fdb9d2fec 100644
--- a/tests/flattener_dicos/10load_disabled_if_in/tiramisu/base.py
+++ b/tests/flattener_dicos/10load_disabled_if_in/tiramisu/base.py
@@ -2,9 +2,9 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='condition', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10load_disabled_if_in_none/result/00-base.xml b/tests/flattener_dicos/10load_disabled_if_in_none/result/00-base.xml
deleted file mode 100644
index b255c0026..000000000
--- a/tests/flattener_dicos/10load_disabled_if_in_none/result/00-base.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
- normal
-
- mandatory
- normal
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- disabled
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- disabled
- non
-
-
-
-
diff --git a/tests/flattener_dicos/10load_disabled_if_in_none/tiramisu/base.py b/tests/flattener_dicos/10load_disabled_if_in_none/tiramisu/base.py
index af47e446f..7b7a3de46 100644
--- a/tests/flattener_dicos/10load_disabled_if_in_none/tiramisu/base.py
+++ b/tests/flattener_dicos/10load_disabled_if_in_none/tiramisu/base.py
@@ -2,9 +2,9 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='condition', default='non')
-option_4 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('None')}))]), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('None')}))]), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='non')
+option_4 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('None')}))}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('None')}))}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10load_disabled_if_inaccent_family/result/00-base.xml b/tests/flattener_dicos/10load_disabled_if_inaccent_family/result/00-base.xml
deleted file mode 100644
index 4d8eace30..000000000
--- a/tests/flattener_dicos/10load_disabled_if_inaccent_family/result/00-base.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- mandatory
- normal
- disabled
- non
-
-
- oui
- non
- mandatory
- normal
- disabled
- non
-
-
-
- normal
- disabled
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/10load_disabled_if_inaccent_family/tiramisu/base.py b/tests/flattener_dicos/10load_disabled_if_inaccent_family/tiramisu/base.py
index e3d19caaf..4d2654eb3 100644
--- a/tests/flattener_dicos/10load_disabled_if_inaccent_family/tiramisu/base.py
+++ b/tests/flattener_dicos/10load_disabled_if_inaccent_family/tiramisu/base.py
@@ -2,11 +2,11 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='condition', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='Général', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_7 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif3', default='non', values=('oui', 'non'))
-option_6 = OptionDescription(doc='Général2', name='general2', properties=frozenset(['normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), children=[option_7])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_6])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='Général', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_7 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif3', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_6 = OptionDescription(name='general2', doc='Général2', properties=frozenset({'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), children=[option_7])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_6])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10load_disabled_if_not_in_fallback/result/00-base.xml b/tests/flattener_dicos/10load_disabled_if_not_in_fallback/result/00-base.xml
deleted file mode 100644
index 40f3959a6..000000000
--- a/tests/flattener_dicos/10load_disabled_if_not_in_fallback/result/00-base.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- mandatory
- normal
- disabled
- non
-
-
- oui
- non
- mandatory
- normal
- disabled
- non
-
-
-
-
diff --git a/tests/flattener_dicos/10load_disabled_if_not_in_fallback/tiramisu/base.py b/tests/flattener_dicos/10load_disabled_if_not_in_fallback/tiramisu/base.py
index 1b5df72ec..1cb4f9926 100644
--- a/tests/flattener_dicos/10load_disabled_if_not_in_fallback/tiramisu/base.py
+++ b/tests/flattener_dicos/10load_disabled_if_not_in_fallback/tiramisu/base.py
@@ -2,9 +2,9 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='condition', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui'), 'reverse_condition': ParamValue(True)}))]), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui'), 'reverse_condition': ParamValue(True)}))]), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui'), 'reverse_condition': ParamValue(True)}))}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui'), 'reverse_condition': ParamValue(True)}))}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10load_disabled_if_not_in_fallback_force/result/00-base.xml b/tests/flattener_dicos/10load_disabled_if_not_in_fallback_force/result/00-base.xml
deleted file mode 100644
index 40f3959a6..000000000
--- a/tests/flattener_dicos/10load_disabled_if_not_in_fallback_force/result/00-base.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- mandatory
- normal
- disabled
- non
-
-
- oui
- non
- mandatory
- normal
- disabled
- non
-
-
-
-
diff --git a/tests/flattener_dicos/10load_disabled_if_not_in_fallback_force/tiramisu/base.py b/tests/flattener_dicos/10load_disabled_if_not_in_fallback_force/tiramisu/base.py
index 1b5df72ec..1cb4f9926 100644
--- a/tests/flattener_dicos/10load_disabled_if_not_in_fallback_force/tiramisu/base.py
+++ b/tests/flattener_dicos/10load_disabled_if_not_in_fallback_force/tiramisu/base.py
@@ -2,9 +2,9 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='condition', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui'), 'reverse_condition': ParamValue(True)}))]), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui'), 'reverse_condition': ParamValue(True)}))]), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui'), 'reverse_condition': ParamValue(True)}))}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui'), 'reverse_condition': ParamValue(True)}))}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10load_disabledifin_fallback/result/00-base.xml b/tests/flattener_dicos/10load_disabledifin_fallback/result/00-base.xml
deleted file mode 100644
index cedda2d4e..000000000
--- a/tests/flattener_dicos/10load_disabledifin_fallback/result/00-base.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- disabled
- mandatory
- normal
- non
-
-
- oui
- non
- mandatory
- normal
- disabled
- non
-
-
-
-
diff --git a/tests/flattener_dicos/10load_disabledifin_fallback/tiramisu/base.py b/tests/flattener_dicos/10load_disabledifin_fallback/tiramisu/base.py
index 1f5f2d03b..5f6bd6ad7 100644
--- a/tests/flattener_dicos/10load_disabledifin_fallback/tiramisu/base.py
+++ b/tests/flattener_dicos/10load_disabledifin_fallback/tiramisu/base.py
@@ -2,9 +2,9 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='condition', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['disabled', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'disabled', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10load_disabledifin_fallback_force/result/00-base.xml b/tests/flattener_dicos/10load_disabledifin_fallback_force/result/00-base.xml
deleted file mode 100644
index db109e188..000000000
--- a/tests/flattener_dicos/10load_disabledifin_fallback_force/result/00-base.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- mandatory
- normal
- disabled
- non
-
-
- oui
- non
- mandatory
- normal
- disabled
- non
-
-
-
-
diff --git a/tests/flattener_dicos/10load_disabledifin_fallback_force/tiramisu/base.py b/tests/flattener_dicos/10load_disabledifin_fallback_force/tiramisu/base.py
index 375b883d4..54bc2716d 100644
--- a/tests/flattener_dicos/10load_disabledifin_fallback_force/tiramisu/base.py
+++ b/tests/flattener_dicos/10load_disabledifin_fallback_force/tiramisu/base.py
@@ -2,9 +2,9 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='condition', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10load_disabledifin_whithouttype/result/00-base.xml b/tests/flattener_dicos/10load_disabledifin_whithouttype/result/00-base.xml
deleted file mode 100644
index db109e188..000000000
--- a/tests/flattener_dicos/10load_disabledifin_whithouttype/result/00-base.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- mandatory
- normal
- disabled
- non
-
-
- oui
- non
- mandatory
- normal
- disabled
- non
-
-
-
-
diff --git a/tests/flattener_dicos/10load_disabledifin_whithouttype/tiramisu/base.py b/tests/flattener_dicos/10load_disabledifin_whithouttype/tiramisu/base.py
index 375b883d4..54bc2716d 100644
--- a/tests/flattener_dicos/10load_disabledifin_whithouttype/tiramisu/base.py
+++ b/tests/flattener_dicos/10load_disabledifin_whithouttype/tiramisu/base.py
@@ -2,9 +2,9 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='condition', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10load_emptyvalue/result/00-base.xml b/tests/flattener_dicos/10load_emptyvalue/result/00-base.xml
deleted file mode 100644
index bba5398b8..000000000
--- a/tests/flattener_dicos/10load_emptyvalue/result/00-base.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
- normal
-
- normal
-
-
- normal
-
-
-
-
diff --git a/tests/flattener_dicos/10load_emptyvalue/tiramisu/base.py b/tests/flattener_dicos/10load_emptyvalue/tiramisu/base.py
index 34290d14c..5462f47e5 100644
--- a/tests/flattener_dicos/10load_emptyvalue/tiramisu/base.py
+++ b/tests/flattener_dicos/10load_emptyvalue/tiramisu/base.py
@@ -2,8 +2,8 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = StrOption(properties=frozenset(['normal']), doc='No change', multi=False, name='mode_conteneur_actif')
-option_4 = StrOption(properties=frozenset(['normal']), doc='No change', multi=False, name='mode_conteneur_actif2')
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = StrOption(properties=frozenset({'normal'}), name='mode_conteneur_actif', doc='No change', multi=False)
+option_4 = StrOption(properties=frozenset({'normal'}), name='mode_conteneur_actif2', doc='No change', multi=False)
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10load_frozenifin/result/00-base.xml b/tests/flattener_dicos/10load_frozenifin/result/00-base.xml
deleted file mode 100644
index efa8eb086..000000000
--- a/tests/flattener_dicos/10load_frozenifin/result/00-base.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- mandatory
- normal
- hidden
- frozen
- force_default_on_freeze
- non
-
-
- oui
- non
- mandatory
- normal
- hidden
- frozen
- force_default_on_freeze
- non
-
-
-
-
diff --git a/tests/flattener_dicos/10load_frozenifin/tiramisu/base.py b/tests/flattener_dicos/10load_frozenifin/tiramisu/base.py
index 2ce0a2f31..1713665bd 100644
--- a/tests/flattener_dicos/10load_frozenifin/tiramisu/base.py
+++ b/tests/flattener_dicos/10load_frozenifin/tiramisu/base.py
@@ -2,9 +2,9 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='condition', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10load_frozenifin_auto/result/00-base.xml b/tests/flattener_dicos/10load_frozenifin_auto/result/00-base.xml
deleted file mode 100644
index 96047bd0c..000000000
--- a/tests/flattener_dicos/10load_frozenifin_auto/result/00-base.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- mandatory
- normal
- hidden
- frozen
- force_default_on_freeze
-
- non
-
-
-
- oui
- non
- mandatory
- normal
- hidden
- frozen
- force_default_on_freeze
- non
-
-
-
-
diff --git a/tests/flattener_dicos/10load_frozenifin_auto/tiramisu/base.py b/tests/flattener_dicos/10load_frozenifin_auto/tiramisu/base.py
index cc1d8cfd8..2bef06471 100644
--- a/tests/flattener_dicos/10load_frozenifin_auto/tiramisu/base.py
+++ b/tests/flattener_dicos/10load_frozenifin_auto/tiramisu/base.py
@@ -2,9 +2,9 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='condition', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif', default=Calculation(func.calc_val, Params((ParamValue("non")), kwargs={})), values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif', doc='No change', multi=False, default=Calculation(func.calc_val, Params((ParamValue("non")), kwargs={})), values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10load_frozenifin_multiparam/result/00-base.xml b/tests/flattener_dicos/10load_frozenifin_multiparam/result/00-base.xml
deleted file mode 100644
index c30db6ccc..000000000
--- a/tests/flattener_dicos/10load_frozenifin_multiparam/result/00-base.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
- normal
-
- tous
- authentifié
- aucun
- mandatory
- normal
- tous
-
-
- oui
- non
- mandatory
- normal
- hidden
- frozen
- force_default_on_freeze
- hidden
- frozen
- force_default_on_freeze
- non
-
-
- oui
- non
- mandatory
- normal
- hidden
- frozen
- force_default_on_freeze
- hidden
- frozen
- force_default_on_freeze
- non
-
-
-
-
diff --git a/tests/flattener_dicos/10load_frozenifin_multiparam/tiramisu/base.py b/tests/flattener_dicos/10load_frozenifin_multiparam/tiramisu/base.py
index ea402cdaa..e65e20354 100644
--- a/tests/flattener_dicos/10load_frozenifin_multiparam/tiramisu/base.py
+++ b/tests/flattener_dicos/10load_frozenifin_multiparam/tiramisu/base.py
@@ -2,9 +2,9 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='condition', default='tous', values=('tous', 'authentifié', 'aucun'))
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('tous')})), Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('tous')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('tous')})), Calculation(calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('authentifié')})), Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('authentifié')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('authentifié')}))]), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('tous')})), Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('tous')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('tous')})), Calculation(calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('authentifié')})), Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('authentifié')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('authentifié')}))]), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='tous', values=('tous', 'authentifié', 'aucun'))
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('tous')})), Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('tous')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('tous')})), Calculation(calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('authentifié')})), Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('authentifié')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('authentifié')}))}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('tous')})), Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('tous')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('tous')})), Calculation(calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('authentifié')})), Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('authentifié')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('authentifié')}))}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10load_frozenifin_noexist/result/00-base.xml b/tests/flattener_dicos/10load_frozenifin_noexist/result/00-base.xml
deleted file mode 100644
index 4b1a1e2e2..000000000
--- a/tests/flattener_dicos/10load_frozenifin_noexist/result/00-base.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
- normal
-
- tous
- authentifié
- aucun
- mandatory
- normal
- tous
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/10load_frozenifin_noexist/tiramisu/base.py b/tests/flattener_dicos/10load_frozenifin_noexist/tiramisu/base.py
index 3569eaf5c..377968df5 100644
--- a/tests/flattener_dicos/10load_frozenifin_noexist/tiramisu/base.py
+++ b/tests/flattener_dicos/10load_frozenifin_noexist/tiramisu/base.py
@@ -2,9 +2,9 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='condition', default='tous', values=('tous', 'authentifié', 'aucun'))
-option_4 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='tous', values=('tous', 'authentifié', 'aucun'))
+option_4 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10load_hidden_if_family/result/00-base.xml b/tests/flattener_dicos/10load_hidden_if_family/result/00-base.xml
deleted file mode 100644
index e6e82f81f..000000000
--- a/tests/flattener_dicos/10load_hidden_if_family/result/00-base.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- mandatory
- normal
- hidden
- frozen
- force_default_on_freeze
- non
-
-
- oui
- non
- mandatory
- normal
- hidden
- frozen
- force_default_on_freeze
- non
-
-
-
- normal
- hidden
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- frozen
- force_default_on_freeze
- non
-
-
-
-
diff --git a/tests/flattener_dicos/10load_hidden_if_family/tiramisu/base.py b/tests/flattener_dicos/10load_hidden_if_family/tiramisu/base.py
index b4ed8f16b..e85126c1b 100644
--- a/tests/flattener_dicos/10load_hidden_if_family/tiramisu/base.py
+++ b/tests/flattener_dicos/10load_hidden_if_family/tiramisu/base.py
@@ -2,11 +2,11 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='condition', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='Général', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_7 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif3', default='non', values=('oui', 'non'))
-option_6 = OptionDescription(doc='Général2', name='general2', properties=frozenset(['normal', Calculation(calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), children=[option_7])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_6])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='Général', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_7 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('force_default_on_freeze'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif3', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_6 = OptionDescription(name='general2', doc='Général2', properties=frozenset({'normal', Calculation(calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), children=[option_7])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_6])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10load_leadership/result/00-base.xml b/tests/flattener_dicos/10load_leadership/result/00-base.xml
deleted file mode 100644
index 186bf70ab..000000000
--- a/tests/flattener_dicos/10load_leadership/result/00-base.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
-
- normal
-
- normal
-
-
- mandatory
- normal
-
- valfill
-
-
-
- mandatory
- normal
-
- rougail.general1.leader.follower1
-
-
-
-
-
-
diff --git a/tests/flattener_dicos/10load_leadership/tiramisu/base.py b/tests/flattener_dicos/10load_leadership/tiramisu/base.py
index f2785bd2a..5e1492a4c 100644
--- a/tests/flattener_dicos/10load_leadership/tiramisu/base.py
+++ b/tests/flattener_dicos/10load_leadership/tiramisu/base.py
@@ -2,12 +2,12 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_6 = StrOption(properties=frozenset([]), doc='leader', multi=True, name='leader')
-option_7 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='follower1', multi=True, name='follower1', default=Calculation(func.calc_val, Params((), kwargs={'valeur': ParamValue("valfill")})))
-option_8 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='follower2', multi=True, name='follower2', default=Calculation(func.calc_val, Params((ParamOption(option_7, notraisepropertyerror=False, todict=False)), kwargs={})))
-option_5 = Leadership(doc='leader', name='leader', properties=frozenset(['normal']), children=[option_6, option_7, option_8])
-option_4 = OptionDescription(doc='general1', name='general1', properties=frozenset(['normal']), children=[option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_4])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_6 = StrOption(name='leader', doc='leader', multi=True)
+option_7 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='follower1', doc='follower1', multi=True, default=Calculation(func.calc_val, Params((), kwargs={'valeur': ParamValue("valfill")})))
+option_8 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='follower2', doc='follower2', multi=True, default=Calculation(func.calc_val, Params((ParamOption(option_7, notraisepropertyerror=False, todict=False)), kwargs={})))
+option_5 = Leadership(name='leader', doc='leader', properties=frozenset({'normal'}), children=[option_6, option_7, option_8])
+option_4 = OptionDescription(name='general1', doc='general1', properties=frozenset({'normal'}), children=[option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_4])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10load_leadership_default_multi/result/00-base.xml b/tests/flattener_dicos/10load_leadership_default_multi/result/00-base.xml
deleted file mode 100644
index 967f6fb67..000000000
--- a/tests/flattener_dicos/10load_leadership_default_multi/result/00-base.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- normal
-
-
- mandatory
- normal
- value
-
-
- normal
-
-
-
-
-
diff --git a/tests/flattener_dicos/10load_leadership_default_multi/tiramisu/base.py b/tests/flattener_dicos/10load_leadership_default_multi/tiramisu/base.py
index 62bc880eb..a5e5256cf 100644
--- a/tests/flattener_dicos/10load_leadership_default_multi/tiramisu/base.py
+++ b/tests/flattener_dicos/10load_leadership_default_multi/tiramisu/base.py
@@ -2,11 +2,11 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='leader', multi=True, name='mode_conteneur_actif', default=['non'], default_multi='non', values=('oui', 'non'))
-option_5 = StrOption(properties=frozenset([]), doc='leader', multi=True, name='leader')
-option_6 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='follower1', multi=True, name='follower1', default_multi='value')
-option_7 = StrOption(properties=frozenset(['normal']), doc='follower2', multi=True, name='follower2')
-option_4 = Leadership(doc='leader', name='leader', properties=frozenset(['normal']), children=[option_5, option_6, option_7])
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='leader', multi=True, default=['non'], default_multi='non', values=('oui', 'non'))
+option_5 = StrOption(name='leader', doc='leader', multi=True)
+option_6 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='follower1', doc='follower1', multi=True, default_multi='value')
+option_7 = StrOption(properties=frozenset({'normal'}), name='follower2', doc='follower2', multi=True)
+option_4 = Leadership(name='leader', doc='leader', properties=frozenset({'normal'}), children=[option_5, option_6, option_7])
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10load_leadership_default_submulti/result/00-base.xml b/tests/flattener_dicos/10load_leadership_default_submulti/result/00-base.xml
deleted file mode 100644
index 2d5ef235e..000000000
--- a/tests/flattener_dicos/10load_leadership_default_submulti/result/00-base.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- normal
-
- mandatory
- leader
-
-
- mandatory
- normal
- value
-
-
- mandatory
- normal
- value1
- value2
-
-
-
-
-
diff --git a/tests/flattener_dicos/10load_leadership_default_submulti/tiramisu/base.py b/tests/flattener_dicos/10load_leadership_default_submulti/tiramisu/base.py
index a4cfae7e8..431bc97be 100644
--- a/tests/flattener_dicos/10load_leadership_default_submulti/tiramisu/base.py
+++ b/tests/flattener_dicos/10load_leadership_default_submulti/tiramisu/base.py
@@ -2,11 +2,11 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='leader', multi=True, name='mode_conteneur_actif', default=['non'], default_multi='non', values=('oui', 'non'))
-option_5 = StrOption(properties=frozenset(['mandatory']), doc='leader', multi=True, name='leader', default=['leader'])
-option_6 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='follower1', multi=submulti, name='follower1', default_multi=['value'])
-option_7 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='follower2', multi=submulti, name='follower2', default_multi=['value1', 'value2'])
-option_4 = Leadership(doc='leader', name='leader', properties=frozenset(['normal']), children=[option_5, option_6, option_7])
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='leader', multi=True, default=['non'], default_multi='non', values=('oui', 'non'))
+option_5 = StrOption(properties=frozenset({'mandatory'}), name='leader', doc='leader', multi=True, default=['leader'])
+option_6 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='follower1', doc='follower1', multi=submulti, default_multi=['value'])
+option_7 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='follower2', doc='follower2', multi=submulti, default_multi=['value1', 'value2'])
+option_4 = Leadership(name='leader', doc='leader', properties=frozenset({'normal'}), children=[option_5, option_6, option_7])
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10load_leadership_defaultmulti_leader/result/00-base.xml b/tests/flattener_dicos/10load_leadership_defaultmulti_leader/result/00-base.xml
deleted file mode 100644
index fa686607c..000000000
--- a/tests/flattener_dicos/10load_leadership_defaultmulti_leader/result/00-base.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- normal
-
- mandatory
- value
-
-
- normal
-
-
- normal
-
-
-
-
-
diff --git a/tests/flattener_dicos/10load_leadership_defaultmulti_leader/tiramisu/base.py b/tests/flattener_dicos/10load_leadership_defaultmulti_leader/tiramisu/base.py
index aeb5df56a..5b774de06 100644
--- a/tests/flattener_dicos/10load_leadership_defaultmulti_leader/tiramisu/base.py
+++ b/tests/flattener_dicos/10load_leadership_defaultmulti_leader/tiramisu/base.py
@@ -2,11 +2,11 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='leader', multi=True, name='mode_conteneur_actif', default=['non'], default_multi='non', values=('oui', 'non'))
-option_5 = StrOption(properties=frozenset(['mandatory']), doc='leader', multi=True, name='leader', default=['value'])
-option_6 = StrOption(properties=frozenset(['normal']), doc='follower1', multi=True, name='follower1')
-option_7 = StrOption(properties=frozenset(['normal']), doc='follower2', multi=True, name='follower2')
-option_4 = Leadership(doc='leader', name='leader', properties=frozenset(['normal']), children=[option_5, option_6, option_7])
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='leader', multi=True, default=['non'], default_multi='non', values=('oui', 'non'))
+option_5 = StrOption(properties=frozenset({'mandatory'}), name='leader', doc='leader', multi=True, default=['value'])
+option_6 = StrOption(properties=frozenset({'normal'}), name='follower1', doc='follower1', multi=True)
+option_7 = StrOption(properties=frozenset({'normal'}), name='follower2', doc='follower2', multi=True)
+option_4 = Leadership(name='leader', doc='leader', properties=frozenset({'normal'}), children=[option_5, option_6, option_7])
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10load_leadership_description/result/00-base.xml b/tests/flattener_dicos/10load_leadership_description/result/00-base.xml
deleted file mode 100644
index 9afe68aaf..000000000
--- a/tests/flattener_dicos/10load_leadership_description/result/00-base.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
-
- normal
-
- normal
-
-
- mandatory
- normal
-
- valfill
-
-
-
- mandatory
- normal
-
- rougail.general1.leader.follower1
-
-
-
-
-
-
diff --git a/tests/flattener_dicos/10load_leadership_description/tiramisu/base.py b/tests/flattener_dicos/10load_leadership_description/tiramisu/base.py
index 4223d9088..0504ad75a 100644
--- a/tests/flattener_dicos/10load_leadership_description/tiramisu/base.py
+++ b/tests/flattener_dicos/10load_leadership_description/tiramisu/base.py
@@ -2,12 +2,12 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_6 = StrOption(properties=frozenset([]), doc='leader', multi=True, name='leader')
-option_7 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='follower1', multi=True, name='follower1', default=Calculation(func.calc_val, Params((), kwargs={'valeur': ParamValue("valfill")})))
-option_8 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='follower2', multi=True, name='follower2', default=Calculation(func.calc_val, Params((ParamOption(option_7, notraisepropertyerror=False, todict=False)), kwargs={})))
-option_5 = Leadership(doc='other description', name='leader', properties=frozenset(['normal']), children=[option_6, option_7, option_8])
-option_4 = OptionDescription(doc='general1', name='general1', properties=frozenset(['normal']), children=[option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_4])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_6 = StrOption(name='leader', doc='leader', multi=True)
+option_7 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='follower1', doc='follower1', multi=True, default=Calculation(func.calc_val, Params((), kwargs={'valeur': ParamValue("valfill")})))
+option_8 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='follower2', doc='follower2', multi=True, default=Calculation(func.calc_val, Params((ParamOption(option_7, notraisepropertyerror=False, todict=False)), kwargs={})))
+option_5 = Leadership(name='leader', doc='other description', properties=frozenset({'normal'}), children=[option_6, option_7, option_8])
+option_4 = OptionDescription(name='general1', doc='general1', properties=frozenset({'normal'}), children=[option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_4])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10load_leadership_normalize_family/result/00-base.xml b/tests/flattener_dicos/10load_leadership_normalize_family/result/00-base.xml
deleted file mode 100644
index b4b77cd34..000000000
--- a/tests/flattener_dicos/10load_leadership_normalize_family/result/00-base.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
-
- basic
-
- basic
-
- mandatory
-
-
- normal
-
-
- normal
-
-
-
-
-
diff --git a/tests/flattener_dicos/10load_leadership_normalize_family/tiramisu/base.py b/tests/flattener_dicos/10load_leadership_normalize_family/tiramisu/base.py
index 25f0d1fc4..75026f13d 100644
--- a/tests/flattener_dicos/10load_leadership_normalize_family/tiramisu/base.py
+++ b/tests/flattener_dicos/10load_leadership_normalize_family/tiramisu/base.py
@@ -2,12 +2,12 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_6 = StrOption(properties=frozenset(['mandatory']), doc='leader', multi=True, name='leader')
-option_7 = StrOption(properties=frozenset(['normal']), doc='follower1', multi=True, name='follower1')
-option_8 = StrOption(properties=frozenset(['normal']), doc='follower2', multi=True, name='follower2')
-option_5 = Leadership(doc='leader', name='leader', properties=frozenset(['basic']), children=[option_6, option_7, option_8])
-option_4 = OptionDescription(doc='general-1', name='general_1', properties=frozenset(['basic']), children=[option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_4])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_6 = StrOption(properties=frozenset({'mandatory'}), name='leader', doc='leader', multi=True)
+option_7 = StrOption(properties=frozenset({'normal'}), name='follower1', doc='follower1', multi=True)
+option_8 = StrOption(properties=frozenset({'normal'}), name='follower2', doc='follower2', multi=True)
+option_5 = Leadership(name='leader', doc='leader', properties=frozenset({'basic'}), children=[option_6, option_7, option_8])
+option_4 = OptionDescription(name='general_1', doc='general-1', properties=frozenset({'basic'}), children=[option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_4])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10load_leadership_submulti/result/00-base.xml b/tests/flattener_dicos/10load_leadership_submulti/result/00-base.xml
deleted file mode 100644
index b8e45586d..000000000
--- a/tests/flattener_dicos/10load_leadership_submulti/result/00-base.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
-
- normal
-
- normal
-
-
- mandatory
- normal
-
- valfill
-
-
-
- mandatory
- normal
-
- rougail.general1.leader.follower1
-
-
-
-
-
-
diff --git a/tests/flattener_dicos/10load_leadership_submulti/tiramisu/base.py b/tests/flattener_dicos/10load_leadership_submulti/tiramisu/base.py
index c104f4227..e72e3459f 100644
--- a/tests/flattener_dicos/10load_leadership_submulti/tiramisu/base.py
+++ b/tests/flattener_dicos/10load_leadership_submulti/tiramisu/base.py
@@ -2,12 +2,12 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_6 = StrOption(properties=frozenset([]), doc='leader', multi=True, name='leader')
-option_7 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='follower1', multi=True, name='follower1', default=Calculation(func.calc_val, Params((), kwargs={'valeur': ParamValue("valfill")})))
-option_8 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='follower2', multi=submulti, name='follower2', default=Calculation(func.calc_val, Params((ParamOption(option_7, notraisepropertyerror=False, todict=False)), kwargs={})), default_multi=[])
-option_5 = Leadership(doc='leader', name='leader', properties=frozenset(['normal']), children=[option_6, option_7, option_8])
-option_4 = OptionDescription(doc='general1', name='general1', properties=frozenset(['normal']), children=[option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_4])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_6 = StrOption(name='leader', doc='leader', multi=True)
+option_7 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='follower1', doc='follower1', multi=True, default=Calculation(func.calc_val, Params((), kwargs={'valeur': ParamValue("valfill")})))
+option_8 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='follower2', doc='follower2', multi=submulti, default=Calculation(func.calc_val, Params((ParamOption(option_7, notraisepropertyerror=False, todict=False)), kwargs={})), default_multi=[])
+option_5 = Leadership(name='leader', doc='leader', properties=frozenset({'normal'}), children=[option_6, option_7, option_8])
+option_4 = OptionDescription(name='general1', doc='general1', properties=frozenset({'normal'}), children=[option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_4])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10load_mandatoryifin/result/00-base.xml b/tests/flattener_dicos/10load_mandatoryifin/result/00-base.xml
deleted file mode 100644
index 8be0dbb5b..000000000
--- a/tests/flattener_dicos/10load_mandatoryifin/result/00-base.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- mandatory
- normal
- mandatory
- non
-
-
- mandatory
- normal
- mandatory
- non
-
-
-
-
diff --git a/tests/flattener_dicos/10load_mandatoryifin/tiramisu/base.py b/tests/flattener_dicos/10load_mandatoryifin/tiramisu/base.py
index fe55db90d..88682c2da 100644
--- a/tests/flattener_dicos/10load_mandatoryifin/tiramisu/base.py
+++ b/tests/flattener_dicos/10load_mandatoryifin/tiramisu/base.py
@@ -2,9 +2,9 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='condition', default='non', values=('oui', 'non'))
-option_4 = StrOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('mandatory'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif', default='non')
-option_5 = StrOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('mandatory'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif2', default='non')
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = StrOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('mandatory'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif', doc='No change', multi=False, default='non')
+option_5 = StrOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('mandatory'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non')
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10load_multivalue/result/00-base.xml b/tests/flattener_dicos/10load_multivalue/result/00-base.xml
deleted file mode 100644
index 886fe3077..000000000
--- a/tests/flattener_dicos/10load_multivalue/result/00-base.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
- oui
-
-
-
-
diff --git a/tests/flattener_dicos/10load_multivalue/tiramisu/base.py b/tests/flattener_dicos/10load_multivalue/tiramisu/base.py
index e2cfe856a..7398ead7c 100644
--- a/tests/flattener_dicos/10load_multivalue/tiramisu/base.py
+++ b/tests/flattener_dicos/10load_multivalue/tiramisu/base.py
@@ -2,7 +2,7 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=True, name='mode_conteneur_actif', default=['non', 'oui'], default_multi='oui', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=True, default=['non', 'oui'], default_multi='oui', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10valid_enum_accent/result/00-base.xml b/tests/flattener_dicos/10valid_enum_accent/result/00-base.xml
deleted file mode 100644
index 67af100b0..000000000
--- a/tests/flattener_dicos/10valid_enum_accent/result/00-base.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
- expert
-
- oui
- non
- mandatory
- expert
- non
-
-
-
- expert
-
- a
- b
- c
- é
- mandatory
- expert
- c
-
-
-
-
diff --git a/tests/flattener_dicos/10valid_enum_accent/tiramisu/base.py b/tests/flattener_dicos/10valid_enum_accent/tiramisu/base.py
index b91f45232..43eae377c 100644
--- a/tests/flattener_dicos/10valid_enum_accent/tiramisu/base.py
+++ b/tests/flattener_dicos/10valid_enum_accent/tiramisu/base.py
@@ -2,10 +2,10 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'expert']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['expert']), children=[option_3])
-option_5 = ChoiceOption(properties=frozenset(['mandatory', 'expert']), doc='multi', multi=False, name='enumvar', default='c', values=('a', 'b', 'c', 'é'))
+option_3 = ChoiceOption(properties=frozenset({'expert', 'mandatory'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'expert'}), children=[option_3])
+option_5 = ChoiceOption(properties=frozenset({'expert', 'mandatory'}), name='enumvar', doc='multi', multi=False, default='c', values=('a', 'b', 'c', 'é'))
option_5.impl_set_information("help", "bla bla bla")
-option_4 = OptionDescription(doc='enumfam', name='enumfam', properties=frozenset(['expert']), children=[option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_4])
+option_4 = OptionDescription(name='enumfam', doc='enumfam', properties=frozenset({'expert'}), children=[option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_4])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10valid_enum_base/result/00-base.xml b/tests/flattener_dicos/10valid_enum_base/result/00-base.xml
deleted file mode 100644
index b1abab2de..000000000
--- a/tests/flattener_dicos/10valid_enum_base/result/00-base.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- expert
-
- oui
- non
- mandatory
- expert
- non
-
-
-
- expert
-
- a
- b
- c
- mandatory
- expert
- c
-
-
-
-
diff --git a/tests/flattener_dicos/10valid_enum_base/tiramisu/base.py b/tests/flattener_dicos/10valid_enum_base/tiramisu/base.py
index 23b941785..a8735e256 100644
--- a/tests/flattener_dicos/10valid_enum_base/tiramisu/base.py
+++ b/tests/flattener_dicos/10valid_enum_base/tiramisu/base.py
@@ -2,10 +2,10 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'expert']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['expert']), children=[option_3])
-option_5 = ChoiceOption(properties=frozenset(['mandatory', 'expert']), doc='multi', multi=False, name='enumvar', default='c', values=('a', 'b', 'c'))
+option_3 = ChoiceOption(properties=frozenset({'expert', 'mandatory'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'expert'}), children=[option_3])
+option_5 = ChoiceOption(properties=frozenset({'expert', 'mandatory'}), name='enumvar', doc='multi', multi=False, default='c', values=('a', 'b', 'c'))
option_5.impl_set_information("help", "bla bla bla")
-option_4 = OptionDescription(doc='enumfam', name='enumfam', properties=frozenset(['expert']), children=[option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_4])
+option_4 = OptionDescription(name='enumfam', doc='enumfam', properties=frozenset({'expert'}), children=[option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_4])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10valid_enum_base_redefine/result/00-base.xml b/tests/flattener_dicos/10valid_enum_base_redefine/result/00-base.xml
deleted file mode 100644
index af8bd2f35..000000000
--- a/tests/flattener_dicos/10valid_enum_base_redefine/result/00-base.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
- expert
-
- oui
- non
- mandatory
- expert
- non
-
-
-
- expert
-
- a
- b
- c
- mandatory
- expert
- c
-
-
- a
- c
- mandatory
- expert
- c
-
-
-
-
diff --git a/tests/flattener_dicos/10valid_enum_base_redefine/tiramisu/base.py b/tests/flattener_dicos/10valid_enum_base_redefine/tiramisu/base.py
index b490f5ae1..19b9696cc 100644
--- a/tests/flattener_dicos/10valid_enum_base_redefine/tiramisu/base.py
+++ b/tests/flattener_dicos/10valid_enum_base_redefine/tiramisu/base.py
@@ -2,11 +2,11 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'expert']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['expert']), children=[option_3])
-option_5 = ChoiceOption(properties=frozenset(['mandatory', 'expert']), doc='multi', multi=False, name='enumvar2', default='c', values=('a', 'b', 'c'))
-option_6 = ChoiceOption(properties=frozenset(['mandatory', 'expert']), doc='multi', multi=False, name='enumvar', default='c', values=('a', 'c'))
+option_3 = ChoiceOption(properties=frozenset({'expert', 'mandatory'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'expert'}), children=[option_3])
+option_5 = ChoiceOption(properties=frozenset({'expert', 'mandatory'}), name='enumvar2', doc='multi', multi=False, default='c', values=('a', 'b', 'c'))
+option_6 = ChoiceOption(properties=frozenset({'expert', 'mandatory'}), name='enumvar', doc='multi', multi=False, default='c', values=('a', 'c'))
option_6.impl_set_information("help", "bla bla bla")
-option_4 = OptionDescription(doc='enumfam', name='enumfam', properties=frozenset(['expert']), children=[option_5, option_6])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_4])
+option_4 = OptionDescription(name='enumfam', doc='enumfam', properties=frozenset({'expert'}), children=[option_5, option_6])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_4])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10valid_enum_eosfunc/result/00-base.xml b/tests/flattener_dicos/10valid_enum_eosfunc/result/00-base.xml
deleted file mode 100644
index bb0d62551..000000000
--- a/tests/flattener_dicos/10valid_enum_eosfunc/result/00-base.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/10valid_enum_eosfunc/tiramisu/base.py b/tests/flattener_dicos/10valid_enum_eosfunc/tiramisu/base.py
index 540734b74..5783a3aff 100644
--- a/tests/flattener_dicos/10valid_enum_eosfunc/tiramisu/base.py
+++ b/tests/flattener_dicos/10valid_enum_eosfunc/tiramisu/base.py
@@ -2,7 +2,7 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10valid_enum_leader/result/00-base.xml b/tests/flattener_dicos/10valid_enum_leader/result/00-base.xml
deleted file mode 100644
index ec398916c..000000000
--- a/tests/flattener_dicos/10valid_enum_leader/result/00-base.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- normal
-
-
- a
- b
- c
- mandatory
- normal
- a
-
-
- normal
-
-
-
-
-
diff --git a/tests/flattener_dicos/10valid_enum_leader/tiramisu/base.py b/tests/flattener_dicos/10valid_enum_leader/tiramisu/base.py
index a0069088c..2062127ee 100644
--- a/tests/flattener_dicos/10valid_enum_leader/tiramisu/base.py
+++ b/tests/flattener_dicos/10valid_enum_leader/tiramisu/base.py
@@ -2,11 +2,11 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_5 = StrOption(properties=frozenset([]), doc='leader', multi=True, name='leader')
-option_6 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='follower1', multi=True, name='follower1', default_multi='a', values=('a', 'b', 'c'))
-option_7 = StrOption(properties=frozenset(['normal']), doc='follower2', multi=True, name='follower2')
-option_4 = Leadership(doc='leader', name='leader', properties=frozenset(['normal']), children=[option_5, option_6, option_7])
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = StrOption(name='leader', doc='leader', multi=True)
+option_6 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='follower1', doc='follower1', multi=True, default_multi='a', values=('a', 'b', 'c'))
+option_7 = StrOption(properties=frozenset({'normal'}), name='follower2', doc='follower2', multi=True)
+option_4 = Leadership(name='leader', doc='leader', properties=frozenset({'normal'}), children=[option_5, option_6, option_7])
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10valid_enum_mandatory/result/00-base.xml b/tests/flattener_dicos/10valid_enum_mandatory/result/00-base.xml
deleted file mode 100644
index e17f94c30..000000000
--- a/tests/flattener_dicos/10valid_enum_mandatory/result/00-base.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- expert
-
- oui
- non
- mandatory
- expert
- non
-
-
-
- expert
-
- a
- b
- c
- mandatory
- expert
- a
-
-
-
-
diff --git a/tests/flattener_dicos/10valid_enum_mandatory/tiramisu/base.py b/tests/flattener_dicos/10valid_enum_mandatory/tiramisu/base.py
index 2e93b8f5c..b417de946 100644
--- a/tests/flattener_dicos/10valid_enum_mandatory/tiramisu/base.py
+++ b/tests/flattener_dicos/10valid_enum_mandatory/tiramisu/base.py
@@ -2,9 +2,9 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'expert']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['expert']), children=[option_3])
-option_5 = ChoiceOption(properties=frozenset(['mandatory', 'expert']), doc='multi', multi=False, name='enumvar', default='a', values=('a', 'b', 'c'))
-option_4 = OptionDescription(doc='enumfam', name='enumfam', properties=frozenset(['expert']), children=[option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_4])
+option_3 = ChoiceOption(properties=frozenset({'expert', 'mandatory'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'expert'}), children=[option_3])
+option_5 = ChoiceOption(properties=frozenset({'expert', 'mandatory'}), name='enumvar', doc='multi', multi=False, default='a', values=('a', 'b', 'c'))
+option_4 = OptionDescription(name='enumfam', doc='enumfam', properties=frozenset({'expert'}), children=[option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_4])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10valid_enum_multi/result/00-base.xml b/tests/flattener_dicos/10valid_enum_multi/result/00-base.xml
deleted file mode 100644
index 01f19feb2..000000000
--- a/tests/flattener_dicos/10valid_enum_multi/result/00-base.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- a
- b
- c
- mandatory
- normal
- a
-
-
-
-
diff --git a/tests/flattener_dicos/10valid_enum_multi/tiramisu/base.py b/tests/flattener_dicos/10valid_enum_multi/tiramisu/base.py
index f1b23d064..31350464c 100644
--- a/tests/flattener_dicos/10valid_enum_multi/tiramisu/base.py
+++ b/tests/flattener_dicos/10valid_enum_multi/tiramisu/base.py
@@ -2,8 +2,8 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='multi', multi=True, name='multi', default=['a'], default_multi='a', values=('a', 'b', 'c'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='multi', doc='multi', multi=True, default=['a'], default_multi='a', values=('a', 'b', 'c'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10valid_enum_none/result/00-base.xml b/tests/flattener_dicos/10valid_enum_none/result/00-base.xml
deleted file mode 100644
index 7f798eb1a..000000000
--- a/tests/flattener_dicos/10valid_enum_none/result/00-base.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- expert
-
- oui
- non
- mandatory
- expert
- non
-
-
-
- expert
-
- a
- b
-
- mandatory
- expert
- b
-
-
-
-
diff --git a/tests/flattener_dicos/10valid_enum_none/tiramisu/base.py b/tests/flattener_dicos/10valid_enum_none/tiramisu/base.py
index 637c347a5..9b1ed780e 100644
--- a/tests/flattener_dicos/10valid_enum_none/tiramisu/base.py
+++ b/tests/flattener_dicos/10valid_enum_none/tiramisu/base.py
@@ -2,10 +2,10 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'expert']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['expert']), children=[option_3])
-option_5 = ChoiceOption(properties=frozenset(['mandatory', 'expert']), doc='multi', multi=False, name='enumvar', default='b', values=('a', 'b', None))
+option_3 = ChoiceOption(properties=frozenset({'expert', 'mandatory'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'expert'}), children=[option_3])
+option_5 = ChoiceOption(properties=frozenset({'expert', 'mandatory'}), name='enumvar', doc='multi', multi=False, default='b', values=('a', 'b', None))
option_5.impl_set_information("help", "bla bla bla")
-option_4 = OptionDescription(doc='enumfam', name='enumfam', properties=frozenset(['expert']), children=[option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_4])
+option_4 = OptionDescription(name='enumfam', doc='enumfam', properties=frozenset({'expert'}), children=[option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_4])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10valid_enum_number/result/00-base.xml b/tests/flattener_dicos/10valid_enum_number/result/00-base.xml
deleted file mode 100644
index 37e772843..000000000
--- a/tests/flattener_dicos/10valid_enum_number/result/00-base.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- expert
-
- oui
- non
- mandatory
- expert
- non
-
-
-
- expert
-
- 1
- 2
- 3
- mandatory
- expert
- 1
-
-
-
-
diff --git a/tests/flattener_dicos/10valid_enum_number/tiramisu/base.py b/tests/flattener_dicos/10valid_enum_number/tiramisu/base.py
index 5285de74a..c6a42d204 100644
--- a/tests/flattener_dicos/10valid_enum_number/tiramisu/base.py
+++ b/tests/flattener_dicos/10valid_enum_number/tiramisu/base.py
@@ -2,10 +2,10 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'expert']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['expert']), children=[option_3])
-option_5 = ChoiceOption(properties=frozenset(['mandatory', 'expert']), doc='enumvar', multi=False, name='enumvar', default=1, values=(1, 2, 3))
+option_3 = ChoiceOption(properties=frozenset({'expert', 'mandatory'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'expert'}), children=[option_3])
+option_5 = ChoiceOption(properties=frozenset({'expert', 'mandatory'}), name='enumvar', doc='enumvar', multi=False, default=1, values=(1, 2, 3))
option_5.impl_set_information("help", "bla bla bla")
-option_4 = OptionDescription(doc='enumfam', name='enumfam', properties=frozenset(['expert']), children=[option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_4])
+option_4 = OptionDescription(name='enumfam', doc='enumfam', properties=frozenset({'expert'}), children=[option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_4])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10valid_enum_numberdefault/result/00-base.xml b/tests/flattener_dicos/10valid_enum_numberdefault/result/00-base.xml
deleted file mode 100644
index 0732e2e6a..000000000
--- a/tests/flattener_dicos/10valid_enum_numberdefault/result/00-base.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- expert
-
- oui
- non
- mandatory
- expert
- non
-
-
-
- expert
-
- 1
- 2
- 3
- mandatory
- expert
- 3
-
-
-
-
diff --git a/tests/flattener_dicos/10valid_enum_numberdefault/tiramisu/base.py b/tests/flattener_dicos/10valid_enum_numberdefault/tiramisu/base.py
index 92588dfa2..7c83c55fc 100644
--- a/tests/flattener_dicos/10valid_enum_numberdefault/tiramisu/base.py
+++ b/tests/flattener_dicos/10valid_enum_numberdefault/tiramisu/base.py
@@ -2,10 +2,10 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'expert']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['expert']), children=[option_3])
-option_5 = ChoiceOption(properties=frozenset(['mandatory', 'expert']), doc='enumvar', multi=False, name='enumvar', default=3, values=(1, 2, 3))
+option_3 = ChoiceOption(properties=frozenset({'expert', 'mandatory'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'expert'}), children=[option_3])
+option_5 = ChoiceOption(properties=frozenset({'expert', 'mandatory'}), name='enumvar', doc='enumvar', multi=False, default=3, values=(1, 2, 3))
option_5.impl_set_information("help", "bla bla bla")
-option_4 = OptionDescription(doc='enumfam', name='enumfam', properties=frozenset(['expert']), children=[option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_4])
+option_4 = OptionDescription(name='enumfam', doc='enumfam', properties=frozenset({'expert'}), children=[option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_4])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10valid_enum_python/result/00-base.xml b/tests/flattener_dicos/10valid_enum_python/result/00-base.xml
deleted file mode 100644
index 122138dd5..000000000
--- a/tests/flattener_dicos/10valid_enum_python/result/00-base.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
- expert
-
- oui
- non
- mandatory
- expert
- non
-
-
-
- expert
-
- test
- mandatory
- expert
- test
-
-
-
-
diff --git a/tests/flattener_dicos/10valid_enum_python/tiramisu/base.py b/tests/flattener_dicos/10valid_enum_python/tiramisu/base.py
index 1dfe8dd2f..d4ef10b55 100644
--- a/tests/flattener_dicos/10valid_enum_python/tiramisu/base.py
+++ b/tests/flattener_dicos/10valid_enum_python/tiramisu/base.py
@@ -2,10 +2,10 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'expert']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['expert']), children=[option_3])
-option_5 = ChoiceOption(properties=frozenset(['mandatory', 'expert']), doc='multi', multi=False, name='enumvar', default='test', values=('test',))
+option_3 = ChoiceOption(properties=frozenset({'expert', 'mandatory'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'expert'}), children=[option_3])
+option_5 = ChoiceOption(properties=frozenset({'expert', 'mandatory'}), name='enumvar', doc='multi', multi=False, default='test', values=('test',))
option_5.impl_set_information("help", "bla bla bla")
-option_4 = OptionDescription(doc='enumfam', name='enumfam', properties=frozenset(['expert']), children=[option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_4])
+option_4 = OptionDescription(name='enumfam', doc='enumfam', properties=frozenset({'expert'}), children=[option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_4])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/10valid_enum_value/result/00-base.xml b/tests/flattener_dicos/10valid_enum_value/result/00-base.xml
deleted file mode 100644
index d17c381c0..000000000
--- a/tests/flattener_dicos/10valid_enum_value/result/00-base.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
- normal
-
- a
- b
- c
- mandatory
- normal
- b
-
-
-
-
diff --git a/tests/flattener_dicos/10valid_enum_value/tiramisu/base.py b/tests/flattener_dicos/10valid_enum_value/tiramisu/base.py
index e564dece2..37db7b313 100644
--- a/tests/flattener_dicos/10valid_enum_value/tiramisu/base.py
+++ b/tests/flattener_dicos/10valid_enum_value/tiramisu/base.py
@@ -2,7 +2,7 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='b', values=('a', 'b', 'c'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='b', values=('a', 'b', 'c'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/11disabled_if_in_filelist/result/00-base.xml b/tests/flattener_dicos/11disabled_if_in_filelist/result/00-base.xml
deleted file mode 100644
index f0c160490..000000000
--- a/tests/flattener_dicos/11disabled_if_in_filelist/result/00-base.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
-
- hidden
-
-
-
-
- root
-
-
- 0644
-
-
- /etc/file
-
-
- root
-
-
- file
-
-
- True
-
-
- disabled
- True
-
-
-
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- mandatory
- normal
- disabled
- non
-
-
- normal
- disabled
-
-
-
-
diff --git a/tests/flattener_dicos/11disabled_if_in_filelist/tiramisu/base.py b/tests/flattener_dicos/11disabled_if_in_filelist/tiramisu/base.py
index c1c482a07..37fb14df0 100644
--- a/tests/flattener_dicos/11disabled_if_in_filelist/tiramisu/base.py
+++ b/tests/flattener_dicos/11disabled_if_in_filelist/tiramisu/base.py
@@ -2,20 +2,20 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='condition', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_5 = BoolOption(default=True, properties=frozenset(['normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif2')
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_10 = StrOption(properties=frozenset([]), doc='group', multi=False, name='group', default='root')
-option_11 = StrOption(properties=frozenset([]), doc='mode', multi=False, name='mode', default='0644')
-option_12 = StrOption(properties=frozenset([]), doc='name', multi=False, name='name', default='/etc/file')
-option_13 = StrOption(properties=frozenset([]), doc='owner', multi=False, name='owner', default='root')
-option_14 = StrOption(properties=frozenset([]), doc='source', multi=False, name='source', default='file')
-option_15 = BoolOption(default=True, properties=frozenset([]), doc='templating', multi=False, name='templating')
-option_16 = BoolOption(default=True, properties=frozenset([Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='activate', multi=False, name='activate')
-option_9 = OptionDescription(doc='file', name='file', children=[option_10, option_11, option_12, option_13, option_14, option_15, option_16])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = BoolOption(default=True, properties=frozenset({'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif2', doc='No change', multi=False)
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_10 = StrOption(name='group', doc='group', multi=False, default='root')
+option_11 = StrOption(name='mode', doc='mode', multi=False, default='0644')
+option_12 = StrOption(name='name', doc='name', multi=False, default='/etc/file')
+option_13 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_14 = StrOption(name='source', doc='source', multi=False, default='file')
+option_15 = BoolOption(default=True, name='templating', doc='templating', multi=False)
+option_16 = BoolOption(default=True, properties=frozenset({Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='activate', doc='activate', multi=False)
+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(doc='test', name='test', children=[option_8])
-option_6 = OptionDescription(name='services', doc='services', properties=frozenset(['hidden']), children=[option_7])
+option_7 = OptionDescription(name='test', doc='test', children=[option_8])
+option_6 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_7])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_6])
diff --git a/tests/flattener_dicos/11disabled_if_in_filelist_disabled/result/00-base.xml b/tests/flattener_dicos/11disabled_if_in_filelist_disabled/result/00-base.xml
deleted file mode 100644
index df74ad651..000000000
--- a/tests/flattener_dicos/11disabled_if_in_filelist_disabled/result/00-base.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-
-
-
- hidden
-
-
-
-
- root
-
-
- 0644
-
-
- /etc/file
-
-
- root
-
-
- file
-
-
- True
-
-
- disabled
- True
-
-
-
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- oui
-
-
- oui
- non
- mandatory
- normal
- disabled
- non
-
-
- oui
- non
- mandatory
- normal
- disabled
- non
-
-
-
-
diff --git a/tests/flattener_dicos/11disabled_if_in_filelist_disabled/tiramisu/base.py b/tests/flattener_dicos/11disabled_if_in_filelist_disabled/tiramisu/base.py
index 7c26fc1e7..a1d97a8a3 100644
--- a/tests/flattener_dicos/11disabled_if_in_filelist_disabled/tiramisu/base.py
+++ b/tests/flattener_dicos/11disabled_if_in_filelist_disabled/tiramisu/base.py
@@ -2,20 +2,20 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='condition', default='oui', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_10 = StrOption(properties=frozenset([]), doc='group', multi=False, name='group', default='root')
-option_11 = StrOption(properties=frozenset([]), doc='mode', multi=False, name='mode', default='0644')
-option_12 = StrOption(properties=frozenset([]), doc='name', multi=False, name='name', default='/etc/file')
-option_13 = StrOption(properties=frozenset([]), doc='owner', multi=False, name='owner', default='root')
-option_14 = StrOption(properties=frozenset([]), doc='source', multi=False, name='source', default='file')
-option_15 = BoolOption(default=True, properties=frozenset([]), doc='templating', multi=False, name='templating')
-option_16 = BoolOption(default=True, properties=frozenset([Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='activate', multi=False, name='activate')
-option_9 = OptionDescription(doc='file', name='file', children=[option_10, option_11, option_12, option_13, option_14, option_15, option_16])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='oui', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_10 = StrOption(name='group', doc='group', multi=False, default='root')
+option_11 = StrOption(name='mode', doc='mode', multi=False, default='0644')
+option_12 = StrOption(name='name', doc='name', multi=False, default='/etc/file')
+option_13 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_14 = StrOption(name='source', doc='source', multi=False, default='file')
+option_15 = BoolOption(default=True, name='templating', doc='templating', multi=False)
+option_16 = BoolOption(default=True, properties=frozenset({Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='activate', doc='activate', multi=False)
+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(doc='test', name='test', children=[option_8])
-option_6 = OptionDescription(name='services', doc='services', properties=frozenset(['hidden']), children=[option_7])
+option_7 = OptionDescription(name='test', doc='test', children=[option_8])
+option_6 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_7])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_6])
diff --git a/tests/flattener_dicos/11disabled_if_in_filelist_multi/result/00-base.xml b/tests/flattener_dicos/11disabled_if_in_filelist_multi/result/00-base.xml
deleted file mode 100644
index 98ca94069..000000000
--- a/tests/flattener_dicos/11disabled_if_in_filelist_multi/result/00-base.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-
-
-
- hidden
-
-
-
-
- root
-
-
- 0644
-
-
- /tmp/file1
-
-
- root
-
-
- file1
-
-
- True
-
-
- disabled
- True
-
-
-
-
- root
-
-
- 0644
-
-
- /tmp/file2
-
-
- root
-
-
- file2
-
-
- True
-
-
- disabled
- True
-
-
-
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- mandatory
- normal
- disabled
- non
-
-
- oui
- non
- mandatory
- normal
- disabled
- non
-
-
-
-
diff --git a/tests/flattener_dicos/11disabled_if_in_filelist_multi/tiramisu/base.py b/tests/flattener_dicos/11disabled_if_in_filelist_multi/tiramisu/base.py
index d85fe5585..cb37d2b9d 100644
--- a/tests/flattener_dicos/11disabled_if_in_filelist_multi/tiramisu/base.py
+++ b/tests/flattener_dicos/11disabled_if_in_filelist_multi/tiramisu/base.py
@@ -2,28 +2,28 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='condition', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_10 = StrOption(properties=frozenset([]), doc='group', multi=False, name='group', default='root')
-option_11 = StrOption(properties=frozenset([]), doc='mode', multi=False, name='mode', default='0644')
-option_12 = StrOption(properties=frozenset([]), doc='name', multi=False, name='name', default='/tmp/file1')
-option_13 = StrOption(properties=frozenset([]), doc='owner', multi=False, name='owner', default='root')
-option_14 = StrOption(properties=frozenset([]), doc='source', multi=False, name='source', default='file1')
-option_15 = BoolOption(default=True, properties=frozenset([]), doc='templating', multi=False, name='templating')
-option_16 = BoolOption(default=True, properties=frozenset([Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='activate', multi=False, name='activate')
-option_9 = OptionDescription(doc='file1', name='file1', children=[option_10, option_11, option_12, option_13, option_14, option_15, option_16])
-option_18 = StrOption(properties=frozenset([]), doc='group', multi=False, name='group', default='root')
-option_19 = StrOption(properties=frozenset([]), doc='mode', multi=False, name='mode', default='0644')
-option_20 = StrOption(properties=frozenset([]), doc='name', multi=False, name='name', default='/tmp/file2')
-option_21 = StrOption(properties=frozenset([]), doc='owner', multi=False, name='owner', default='root')
-option_22 = StrOption(properties=frozenset([]), doc='source', multi=False, name='source', default='file2')
-option_23 = BoolOption(default=True, properties=frozenset([]), doc='templating', multi=False, name='templating')
-option_24 = BoolOption(default=True, properties=frozenset([Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), doc='activate', multi=False, name='activate')
-option_17 = OptionDescription(doc='file2', name='file2', children=[option_18, option_19, option_20, option_21, option_22, option_23, option_24])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_10 = StrOption(name='group', doc='group', multi=False, default='root')
+option_11 = StrOption(name='mode', doc='mode', multi=False, default='0644')
+option_12 = StrOption(name='name', doc='name', multi=False, default='/tmp/file1')
+option_13 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_14 = StrOption(name='source', doc='source', multi=False, default='file1')
+option_15 = BoolOption(default=True, name='templating', doc='templating', multi=False)
+option_16 = BoolOption(default=True, properties=frozenset({Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='activate', doc='activate', multi=False)
+option_9 = OptionDescription(name='file1', doc='file1', children=[option_10, option_11, option_12, option_13, option_14, option_15, option_16])
+option_18 = StrOption(name='group', doc='group', multi=False, default='root')
+option_19 = StrOption(name='mode', doc='mode', multi=False, default='0644')
+option_20 = StrOption(name='name', doc='name', multi=False, default='/tmp/file2')
+option_21 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_22 = StrOption(name='source', doc='source', multi=False, default='file2')
+option_23 = BoolOption(default=True, name='templating', doc='templating', multi=False)
+option_24 = BoolOption(default=True, properties=frozenset({Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='activate', doc='activate', multi=False)
+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(doc='test', name='test', children=[option_8])
-option_6 = OptionDescription(name='services', doc='services', properties=frozenset(['hidden']), children=[option_7])
+option_7 = OptionDescription(name='test', doc='test', children=[option_8])
+option_6 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_7])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_6])
diff --git a/tests/flattener_dicos/11disabledifin_filelist_notexist/result/00-base.xml b/tests/flattener_dicos/11disabledifin_filelist_notexist/result/00-base.xml
deleted file mode 100644
index c2672b11f..000000000
--- a/tests/flattener_dicos/11disabledifin_filelist_notexist/result/00-base.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
- hidden
-
-
-
-
- root
-
-
- 0644
-
-
- /tmp/file
-
-
- root
-
-
- file
-
-
- True
-
-
- disabled
- True
-
-
-
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/11disabledifin_filelist_notexist/tiramisu/base.py b/tests/flattener_dicos/11disabledifin_filelist_notexist/tiramisu/base.py
index 1233c6fab..f98d59189 100644
--- a/tests/flattener_dicos/11disabledifin_filelist_notexist/tiramisu/base.py
+++ b/tests/flattener_dicos/11disabledifin_filelist_notexist/tiramisu/base.py
@@ -2,20 +2,20 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='condition', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_10 = StrOption(properties=frozenset([]), doc='group', multi=False, name='group', default='root')
-option_11 = StrOption(properties=frozenset([]), doc='mode', multi=False, name='mode', default='0644')
-option_12 = StrOption(properties=frozenset([]), doc='name', multi=False, name='name', default='/tmp/file')
-option_13 = StrOption(properties=frozenset([]), doc='owner', multi=False, name='owner', default='root')
-option_14 = StrOption(properties=frozenset([]), doc='source', multi=False, name='source', default='file')
-option_15 = BoolOption(default=True, properties=frozenset([]), doc='templating', multi=False, name='templating')
-option_16 = BoolOption(default=True, properties=frozenset(['disabled']), doc='activate', multi=False, name='activate')
-option_9 = OptionDescription(doc='file', name='file', children=[option_10, option_11, option_12, option_13, option_14, option_15, option_16])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_10 = StrOption(name='group', doc='group', multi=False, default='root')
+option_11 = StrOption(name='mode', doc='mode', multi=False, default='0644')
+option_12 = StrOption(name='name', doc='name', multi=False, default='/tmp/file')
+option_13 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_14 = StrOption(name='source', doc='source', multi=False, default='file')
+option_15 = BoolOption(default=True, name='templating', doc='templating', multi=False)
+option_16 = BoolOption(default=True, properties=frozenset({'disabled'}), name='activate', doc='activate', multi=False)
+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(doc='test', name='test', children=[option_8])
-option_6 = OptionDescription(name='services', doc='services', properties=frozenset(['hidden']), children=[option_7])
+option_7 = OptionDescription(name='test', doc='test', children=[option_8])
+option_6 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_7])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_6])
diff --git a/tests/flattener_dicos/11disabledifnotin_filelist_notexist/result/00-base.xml b/tests/flattener_dicos/11disabledifnotin_filelist_notexist/result/00-base.xml
deleted file mode 100644
index c2672b11f..000000000
--- a/tests/flattener_dicos/11disabledifnotin_filelist_notexist/result/00-base.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
- hidden
-
-
-
-
- root
-
-
- 0644
-
-
- /tmp/file
-
-
- root
-
-
- file
-
-
- True
-
-
- disabled
- True
-
-
-
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/11disabledifnotin_filelist_notexist/tiramisu/base.py b/tests/flattener_dicos/11disabledifnotin_filelist_notexist/tiramisu/base.py
index 1233c6fab..f98d59189 100644
--- a/tests/flattener_dicos/11disabledifnotin_filelist_notexist/tiramisu/base.py
+++ b/tests/flattener_dicos/11disabledifnotin_filelist_notexist/tiramisu/base.py
@@ -2,20 +2,20 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='condition', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_10 = StrOption(properties=frozenset([]), doc='group', multi=False, name='group', default='root')
-option_11 = StrOption(properties=frozenset([]), doc='mode', multi=False, name='mode', default='0644')
-option_12 = StrOption(properties=frozenset([]), doc='name', multi=False, name='name', default='/tmp/file')
-option_13 = StrOption(properties=frozenset([]), doc='owner', multi=False, name='owner', default='root')
-option_14 = StrOption(properties=frozenset([]), doc='source', multi=False, name='source', default='file')
-option_15 = BoolOption(default=True, properties=frozenset([]), doc='templating', multi=False, name='templating')
-option_16 = BoolOption(default=True, properties=frozenset(['disabled']), doc='activate', multi=False, name='activate')
-option_9 = OptionDescription(doc='file', name='file', children=[option_10, option_11, option_12, option_13, option_14, option_15, option_16])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_10 = StrOption(name='group', doc='group', multi=False, default='root')
+option_11 = StrOption(name='mode', doc='mode', multi=False, default='0644')
+option_12 = StrOption(name='name', doc='name', multi=False, default='/tmp/file')
+option_13 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_14 = StrOption(name='source', doc='source', multi=False, default='file')
+option_15 = BoolOption(default=True, name='templating', doc='templating', multi=False)
+option_16 = BoolOption(default=True, properties=frozenset({'disabled'}), name='activate', doc='activate', multi=False)
+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(doc='test', name='test', children=[option_8])
-option_6 = OptionDescription(name='services', doc='services', properties=frozenset(['hidden']), children=[option_7])
+option_7 = OptionDescription(name='test', doc='test', children=[option_8])
+option_6 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_7])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_6])
diff --git a/tests/flattener_dicos/11disabledifnotin_filelist_notexist_multi/result/00-base.xml b/tests/flattener_dicos/11disabledifnotin_filelist_notexist_multi/result/00-base.xml
deleted file mode 100644
index c2672b11f..000000000
--- a/tests/flattener_dicos/11disabledifnotin_filelist_notexist_multi/result/00-base.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
- hidden
-
-
-
-
- root
-
-
- 0644
-
-
- /tmp/file
-
-
- root
-
-
- file
-
-
- True
-
-
- disabled
- True
-
-
-
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/11disabledifnotin_filelist_notexist_multi/tiramisu/base.py b/tests/flattener_dicos/11disabledifnotin_filelist_notexist_multi/tiramisu/base.py
index 1233c6fab..f98d59189 100644
--- a/tests/flattener_dicos/11disabledifnotin_filelist_notexist_multi/tiramisu/base.py
+++ b/tests/flattener_dicos/11disabledifnotin_filelist_notexist_multi/tiramisu/base.py
@@ -2,20 +2,20 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='condition', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_10 = StrOption(properties=frozenset([]), doc='group', multi=False, name='group', default='root')
-option_11 = StrOption(properties=frozenset([]), doc='mode', multi=False, name='mode', default='0644')
-option_12 = StrOption(properties=frozenset([]), doc='name', multi=False, name='name', default='/tmp/file')
-option_13 = StrOption(properties=frozenset([]), doc='owner', multi=False, name='owner', default='root')
-option_14 = StrOption(properties=frozenset([]), doc='source', multi=False, name='source', default='file')
-option_15 = BoolOption(default=True, properties=frozenset([]), doc='templating', multi=False, name='templating')
-option_16 = BoolOption(default=True, properties=frozenset(['disabled']), doc='activate', multi=False, name='activate')
-option_9 = OptionDescription(doc='file', name='file', children=[option_10, option_11, option_12, option_13, option_14, option_15, option_16])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_10 = StrOption(name='group', doc='group', multi=False, default='root')
+option_11 = StrOption(name='mode', doc='mode', multi=False, default='0644')
+option_12 = StrOption(name='name', doc='name', multi=False, default='/tmp/file')
+option_13 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_14 = StrOption(name='source', doc='source', multi=False, default='file')
+option_15 = BoolOption(default=True, name='templating', doc='templating', multi=False)
+option_16 = BoolOption(default=True, properties=frozenset({'disabled'}), name='activate', doc='activate', multi=False)
+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(doc='test', name='test', children=[option_8])
-option_6 = OptionDescription(name='services', doc='services', properties=frozenset(['hidden']), children=[option_7])
+option_7 = OptionDescription(name='test', doc='test', children=[option_8])
+option_6 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_7])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_6])
diff --git a/tests/flattener_dicos/11disabledifnotin_filelist_notexist_validenum/result/00-base.xml b/tests/flattener_dicos/11disabledifnotin_filelist_notexist_validenum/result/00-base.xml
deleted file mode 100644
index 3ae01a7cf..000000000
--- a/tests/flattener_dicos/11disabledifnotin_filelist_notexist_validenum/result/00-base.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
- hidden
-
-
-
-
- root
-
-
- 0644
-
-
- /tmp/file
-
-
- root
-
-
- file
-
-
- True
-
-
- disabled
- True
-
-
-
-
-
-
-
- normal
-
- non
- statique
- mandatory
- normal
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/11disabledifnotin_filelist_notexist_validenum/tiramisu/base.py b/tests/flattener_dicos/11disabledifnotin_filelist_notexist_validenum/tiramisu/base.py
index b92a0330b..e8d76b4b7 100644
--- a/tests/flattener_dicos/11disabledifnotin_filelist_notexist_validenum/tiramisu/base.py
+++ b/tests/flattener_dicos/11disabledifnotin_filelist_notexist_validenum/tiramisu/base.py
@@ -2,20 +2,20 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='condition', default='non', values=('non', 'statique'))
-option_4 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_10 = StrOption(properties=frozenset([]), doc='group', multi=False, name='group', default='root')
-option_11 = StrOption(properties=frozenset([]), doc='mode', multi=False, name='mode', default='0644')
-option_12 = StrOption(properties=frozenset([]), doc='name', multi=False, name='name', default='/tmp/file')
-option_13 = StrOption(properties=frozenset([]), doc='owner', multi=False, name='owner', default='root')
-option_14 = StrOption(properties=frozenset([]), doc='source', multi=False, name='source', default='file')
-option_15 = BoolOption(default=True, properties=frozenset([]), doc='templating', multi=False, name='templating')
-option_16 = BoolOption(default=True, properties=frozenset([Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('statique'), 'reverse_condition': ParamValue(True)}))]), doc='activate', multi=False, name='activate')
-option_9 = OptionDescription(doc='file', name='file', children=[option_10, option_11, option_12, option_13, option_14, option_15, option_16])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='non', values=('non', 'statique'))
+option_4 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_10 = StrOption(name='group', doc='group', multi=False, default='root')
+option_11 = StrOption(name='mode', doc='mode', multi=False, default='0644')
+option_12 = StrOption(name='name', doc='name', multi=False, default='/tmp/file')
+option_13 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_14 = StrOption(name='source', doc='source', multi=False, default='file')
+option_15 = BoolOption(default=True, name='templating', doc='templating', multi=False)
+option_16 = BoolOption(default=True, properties=frozenset({Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('statique'), 'reverse_condition': ParamValue(True)}))}), name='activate', doc='activate', multi=False)
+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(doc='test', name='test', children=[option_8])
-option_6 = OptionDescription(name='services', doc='services', properties=frozenset(['hidden']), children=[option_7])
+option_7 = OptionDescription(name='test', doc='test', children=[option_8])
+option_6 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_7])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_6])
diff --git a/tests/flattener_dicos/11multi_disabled_if_in_filelist/result/00-base.xml b/tests/flattener_dicos/11multi_disabled_if_in_filelist/result/00-base.xml
deleted file mode 100644
index 11eeae56c..000000000
--- a/tests/flattener_dicos/11multi_disabled_if_in_filelist/result/00-base.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-
-
-
- hidden
-
-
-
-
- root
-
-
- 0644
-
-
- /tmp/file1
-
-
- root
-
-
- file1
-
-
- True
-
-
- disabled
- True
-
-
-
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
- oui
- non
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/11multi_disabled_if_in_filelist/tiramisu/base.py b/tests/flattener_dicos/11multi_disabled_if_in_filelist/tiramisu/base.py
index 5ba53578d..c047e5819 100644
--- a/tests/flattener_dicos/11multi_disabled_if_in_filelist/tiramisu/base.py
+++ b/tests/flattener_dicos/11multi_disabled_if_in_filelist/tiramisu/base.py
@@ -2,19 +2,19 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='condition', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_9 = StrOption(properties=frozenset([]), doc='group', multi=False, name='group', default='root')
-option_10 = StrOption(properties=frozenset([]), doc='mode', multi=False, name='mode', default='0644')
-option_11 = StrOption(properties=frozenset([]), doc='name', multi=False, name='name', default='/tmp/file1')
-option_12 = StrOption(properties=frozenset([]), doc='owner', multi=False, name='owner', default='root')
-option_13 = StrOption(properties=frozenset([]), doc='source', multi=False, name='source', default='file1')
-option_14 = BoolOption(default=True, properties=frozenset([]), doc='templating', multi=False, name='templating')
-option_15 = BoolOption(default=True, properties=frozenset(['disabled']), doc='activate', multi=False, name='activate')
-option_8 = OptionDescription(doc='file1', name='file1', children=[option_9, option_10, option_11, option_12, option_13, option_14, option_15])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_9 = StrOption(name='group', doc='group', multi=False, default='root')
+option_10 = StrOption(name='mode', doc='mode', multi=False, default='0644')
+option_11 = StrOption(name='name', doc='name', multi=False, default='/tmp/file1')
+option_12 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_13 = StrOption(name='source', doc='source', multi=False, default='file1')
+option_14 = BoolOption(default=True, name='templating', doc='templating', multi=False)
+option_15 = BoolOption(default=True, properties=frozenset({'disabled'}), name='activate', doc='activate', multi=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(doc='test', name='test', children=[option_7])
-option_5 = OptionDescription(name='services', doc='services', properties=frozenset(['hidden']), children=[option_6])
+option_6 = OptionDescription(name='test', doc='test', children=[option_7])
+option_5 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_6])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_5])
diff --git a/tests/flattener_dicos/20family_append/result/00-base.xml b/tests/flattener_dicos/20family_append/result/00-base.xml
deleted file mode 100644
index 1cf88360a..000000000
--- a/tests/flattener_dicos/20family_append/result/00-base.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/20family_append/tiramisu/base.py b/tests/flattener_dicos/20family_append/tiramisu/base.py
index 5d820e026..73aae3ad6 100644
--- a/tests/flattener_dicos/20family_append/tiramisu/base.py
+++ b/tests/flattener_dicos/20family_append/tiramisu/base.py
@@ -2,8 +2,8 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif1', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif1', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/20family_appendaccent/result/00-base.xml b/tests/flattener_dicos/20family_appendaccent/result/00-base.xml
deleted file mode 100644
index bce5f53f7..000000000
--- a/tests/flattener_dicos/20family_appendaccent/result/00-base.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- disabled
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/20family_appendaccent/tiramisu/base.py b/tests/flattener_dicos/20family_appendaccent/tiramisu/base.py
index 860882f39..ad7de9301 100644
--- a/tests/flattener_dicos/20family_appendaccent/tiramisu/base.py
+++ b/tests/flattener_dicos/20family_appendaccent/tiramisu/base.py
@@ -2,11 +2,11 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_7 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif3', default='non', values=('oui', 'non'))
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_7, todict=True), 'expected': ParamValue('non')}))]), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif1', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='Général', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_6 = OptionDescription(doc='Other', name='other', properties=frozenset(['normal']), children=[option_7])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_6])
+option_7 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif3', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_7, todict=True), 'expected': ParamValue('non')}))}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif1', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='Général', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_6 = OptionDescription(name='other', doc='Other', properties=frozenset({'normal'}), children=[option_7])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_6])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/20family_dynamic/result/00-base.xml b/tests/flattener_dicos/20family_dynamic/result/00-base.xml
deleted file mode 100644
index 8153bca8e..000000000
--- a/tests/flattener_dicos/20family_dynamic/result/00-base.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
- normal
-
- mandatory
- normal
- val1
- val2
-
-
-
- normal
-
- normal
-
-
-
-
diff --git a/tests/flattener_dicos/20family_dynamic/tiramisu/base.py b/tests/flattener_dicos/20family_dynamic/tiramisu/base.py
index 8d2275fb0..9c247faa0 100644
--- a/tests/flattener_dicos/20family_dynamic/tiramisu/base.py
+++ b/tests/flattener_dicos/20family_dynamic/tiramisu/base.py
@@ -2,9 +2,9 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=True, name='varname', default=['val1', 'val2'], default_multi='val2')
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_5 = StrOption(properties=frozenset(['normal']), doc='No change', multi=False, name='vardyn')
-option_4 = ConvertDynOptionDescription(suffixes=Calculation(func.calc_value, Params((ParamOption(option_3)))), doc='dyn', name='dyn', properties=frozenset(['normal']), children=[option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_4])
+option_3 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='varname', doc='No change', multi=True, default=['val1', 'val2'], default_multi='val2')
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_5 = StrOption(properties=frozenset({'normal'}), name='vardyn', doc='No change', multi=False)
+option_4 = ConvertDynOptionDescription(name='dyn', doc='dyn', suffixes=Calculation(func.calc_value, Params((ParamOption(option_3)))), properties=frozenset({'normal'}), children=[option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_4])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/20family_dynamic_calc/result/00-base.xml b/tests/flattener_dicos/20family_dynamic_calc/result/00-base.xml
deleted file mode 100644
index 4c6a714f5..000000000
--- a/tests/flattener_dicos/20family_dynamic_calc/result/00-base.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
- normal
-
- mandatory
- normal
- val1
- val2
-
-
-
- normal
-
- mandatory
- normal
- val
-
-
-
- normal
-
- mandatory
- normal
-
- rougail.dyn.vardyn
-
-
-
-
-
diff --git a/tests/flattener_dicos/20family_dynamic_calc/tiramisu/base.py b/tests/flattener_dicos/20family_dynamic_calc/tiramisu/base.py
index f0cf7135d..da389eaff 100644
--- a/tests/flattener_dicos/20family_dynamic_calc/tiramisu/base.py
+++ b/tests/flattener_dicos/20family_dynamic_calc/tiramisu/base.py
@@ -2,11 +2,11 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=True, name='varname', default=['val1', 'val2'], default_multi='val2')
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_5 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='vardyn', default='val')
-option_4 = ConvertDynOptionDescription(suffixes=Calculation(func.calc_value, Params((ParamOption(option_3)))), doc='dyn', name='dyn', properties=frozenset(['normal']), children=[option_5])
-option_7 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='newvar', default=Calculation(func.calc_val, Params((ParamDynOption(option_5, 'val1', option_4, notraisepropertyerror=False, todict=False)), kwargs={})))
-option_6 = OptionDescription(doc='new', name='new', properties=frozenset(['normal']), children=[option_7])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_4, option_6])
+option_3 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='varname', doc='No change', multi=True, default=['val1', 'val2'], default_multi='val2')
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_5 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='vardyn', doc='No change', multi=False, default='val')
+option_4 = ConvertDynOptionDescription(name='dyn', doc='dyn', suffixes=Calculation(func.calc_value, Params((ParamOption(option_3)))), properties=frozenset({'normal'}), children=[option_5])
+option_7 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='newvar', doc='No change', multi=False, default=Calculation(func.calc_val, Params((ParamDynOption(option_5, 'val1', option_4, notraisepropertyerror=False, todict=False)), kwargs={})))
+option_6 = OptionDescription(name='new', doc='new', properties=frozenset({'normal'}), children=[option_7])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_4, option_6])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/20family_dynamic_number/result/00-base.xml b/tests/flattener_dicos/20family_dynamic_number/result/00-base.xml
deleted file mode 100644
index 92660ce4f..000000000
--- a/tests/flattener_dicos/20family_dynamic_number/result/00-base.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
- normal
-
- mandatory
- normal
- 1
- 2
-
-
-
- normal
-
- mandatory
- normal
- val
-
-
-
- normal
-
- mandatory
- normal
-
- rougail.dyn.vardyn
-
-
-
-
-
diff --git a/tests/flattener_dicos/20family_dynamic_number/tiramisu/base.py b/tests/flattener_dicos/20family_dynamic_number/tiramisu/base.py
index 5682c7d68..05bb40801 100644
--- a/tests/flattener_dicos/20family_dynamic_number/tiramisu/base.py
+++ b/tests/flattener_dicos/20family_dynamic_number/tiramisu/base.py
@@ -2,11 +2,11 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = IntOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=True, name='varname', default=[1, 2], default_multi=2)
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_5 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='vardyn', default='val')
-option_4 = ConvertDynOptionDescription(suffixes=Calculation(func.calc_value, Params((ParamOption(option_3)))), doc='dyn', name='dyn', properties=frozenset(['normal']), children=[option_5])
-option_7 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='newvar', default=Calculation(func.calc_val, Params((ParamDynOption(option_5, '1', option_4, notraisepropertyerror=False, todict=False)), kwargs={})))
-option_6 = OptionDescription(doc='new', name='new', properties=frozenset(['normal']), children=[option_7])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_4, option_6])
+option_3 = IntOption(properties=frozenset({'mandatory', 'normal'}), name='varname', doc='No change', multi=True, default=[1, 2], default_multi=2)
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_5 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='vardyn', doc='No change', multi=False, default='val')
+option_4 = ConvertDynOptionDescription(name='dyn', doc='dyn', suffixes=Calculation(func.calc_value, Params((ParamOption(option_3)))), properties=frozenset({'normal'}), children=[option_5])
+option_7 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='newvar', doc='No change', multi=False, default=Calculation(func.calc_val, Params((ParamDynOption(option_5, '1', option_4, notraisepropertyerror=False, todict=False)), kwargs={})))
+option_6 = OptionDescription(name='new', doc='new', properties=frozenset({'normal'}), children=[option_7])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_4, option_6])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/20family_empty/result/00-base.xml b/tests/flattener_dicos/20family_empty/result/00-base.xml
deleted file mode 100644
index 385b948a3..000000000
--- a/tests/flattener_dicos/20family_empty/result/00-base.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
- basic
-
- oui
- non
- mandatory
- basic
- non
-
-
-
-
diff --git a/tests/flattener_dicos/20family_empty/tiramisu/base.py b/tests/flattener_dicos/20family_empty/tiramisu/base.py
index 18987792d..5564f2825 100644
--- a/tests/flattener_dicos/20family_empty/tiramisu/base.py
+++ b/tests/flattener_dicos/20family_empty/tiramisu/base.py
@@ -2,7 +2,7 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'basic']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['basic']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'basic', 'mandatory'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'basic'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/20family_hidden/result/00-base.xml b/tests/flattener_dicos/20family_hidden/result/00-base.xml
deleted file mode 100644
index 467b6b40f..000000000
--- a/tests/flattener_dicos/20family_hidden/result/00-base.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
- hidden
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/20family_hidden/tiramisu/base.py b/tests/flattener_dicos/20family_hidden/tiramisu/base.py
index 731af754f..0ad7e3eb1 100644
--- a/tests/flattener_dicos/20family_hidden/tiramisu/base.py
+++ b/tests/flattener_dicos/20family_hidden/tiramisu/base.py
@@ -2,7 +2,7 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['hidden', 'normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'hidden', 'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/20family_mode/result/00-base.xml b/tests/flattener_dicos/20family_mode/result/00-base.xml
deleted file mode 100644
index 385b948a3..000000000
--- a/tests/flattener_dicos/20family_mode/result/00-base.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
- basic
-
- oui
- non
- mandatory
- basic
- non
-
-
-
-
diff --git a/tests/flattener_dicos/20family_mode/tiramisu/base.py b/tests/flattener_dicos/20family_mode/tiramisu/base.py
index 18987792d..5564f2825 100644
--- a/tests/flattener_dicos/20family_mode/tiramisu/base.py
+++ b/tests/flattener_dicos/20family_mode/tiramisu/base.py
@@ -2,7 +2,7 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'basic']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['basic']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'basic', 'mandatory'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'basic'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/20family_modeleadership/result/00-base.xml b/tests/flattener_dicos/20family_modeleadership/result/00-base.xml
deleted file mode 100644
index c238ab0aa..000000000
--- a/tests/flattener_dicos/20family_modeleadership/result/00-base.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- normal
-
-
- normal
-
-
- normal
-
-
-
-
-
diff --git a/tests/flattener_dicos/20family_modeleadership/tiramisu/base.py b/tests/flattener_dicos/20family_modeleadership/tiramisu/base.py
index 140bdef12..750be9871 100644
--- a/tests/flattener_dicos/20family_modeleadership/tiramisu/base.py
+++ b/tests/flattener_dicos/20family_modeleadership/tiramisu/base.py
@@ -2,11 +2,11 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_5 = StrOption(properties=frozenset([]), doc='leader', multi=True, name='leader')
-option_6 = StrOption(properties=frozenset(['normal']), doc='follower1', multi=True, name='follower1')
-option_7 = StrOption(properties=frozenset(['normal']), doc='follower2', multi=True, name='follower2')
-option_4 = Leadership(doc='leader', name='leader', properties=frozenset(['normal']), children=[option_5, option_6, option_7])
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = StrOption(name='leader', doc='leader', multi=True)
+option_6 = StrOption(properties=frozenset({'normal'}), name='follower1', doc='follower1', multi=True)
+option_7 = StrOption(properties=frozenset({'normal'}), name='follower2', doc='follower2', multi=True)
+option_4 = Leadership(name='leader', doc='leader', properties=frozenset({'normal'}), children=[option_5, option_6, option_7])
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/20notemplating/result/00-base.xml b/tests/flattener_dicos/20notemplating/result/00-base.xml
deleted file mode 100644
index 54c30e328..000000000
--- a/tests/flattener_dicos/20notemplating/result/00-base.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
- hidden
-
-
-
-
- root
-
-
- 0644
-
-
- /etc/file
-
-
- root
-
-
- file
-
-
- False
-
-
- True
-
-
-
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/20notemplating/tiramisu/base.py b/tests/flattener_dicos/20notemplating/tiramisu/base.py
index 01a364686..b37ec7dd8 100644
--- a/tests/flattener_dicos/20notemplating/tiramisu/base.py
+++ b/tests/flattener_dicos/20notemplating/tiramisu/base.py
@@ -2,18 +2,18 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_8 = StrOption(properties=frozenset([]), doc='group', multi=False, name='group', default='root')
-option_9 = StrOption(properties=frozenset([]), doc='mode', multi=False, name='mode', default='0644')
-option_10 = StrOption(properties=frozenset([]), doc='name', multi=False, name='name', default='/etc/file')
-option_11 = StrOption(properties=frozenset([]), doc='owner', multi=False, name='owner', default='root')
-option_12 = StrOption(properties=frozenset([]), doc='source', multi=False, name='source', default='file')
-option_13 = BoolOption(default=False, properties=frozenset([]), doc='templating', multi=False, name='templating')
-option_14 = BoolOption(default=True, properties=frozenset([]), doc='activate', multi=False, name='activate')
-option_7 = OptionDescription(doc='file', name='file', children=[option_8, option_9, option_10, option_11, option_12, option_13, option_14])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_8 = StrOption(name='group', doc='group', multi=False, default='root')
+option_9 = StrOption(name='mode', doc='mode', multi=False, default='0644')
+option_10 = StrOption(name='name', doc='name', multi=False, default='/etc/file')
+option_11 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_12 = StrOption(name='source', doc='source', multi=False, default='file')
+option_13 = BoolOption(default=False, name='templating', doc='templating', multi=False)
+option_14 = BoolOption(default=True, name='activate', doc='activate', multi=False)
+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(doc='test', name='test', children=[option_6])
-option_4 = OptionDescription(name='services', doc='services', properties=frozenset(['hidden']), children=[option_5])
+option_5 = OptionDescription(name='test', doc='test', children=[option_6])
+option_4 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_5])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_4])
diff --git a/tests/flattener_dicos/20override/result/00-base.xml b/tests/flattener_dicos/20override/result/00-base.xml
deleted file mode 100644
index 2ca29eca5..000000000
--- a/tests/flattener_dicos/20override/result/00-base.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
- hidden
-
-
-
-
- root
-
-
- 0644
-
-
- /systemd/system/test.service.d/rougail.conf
-
-
- root
-
-
- test.service
-
-
- True
-
-
- True
-
-
-
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/20override/tiramisu/base.py b/tests/flattener_dicos/20override/tiramisu/base.py
index 9547e7b6d..c420cb307 100644
--- a/tests/flattener_dicos/20override/tiramisu/base.py
+++ b/tests/flattener_dicos/20override/tiramisu/base.py
@@ -2,18 +2,18 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_8 = StrOption(properties=frozenset([]), doc='group', multi=False, name='group', default='root')
-option_9 = StrOption(properties=frozenset([]), doc='mode', multi=False, name='mode', default='0644')
-option_10 = StrOption(properties=frozenset([]), doc='name', multi=False, name='name', default='/systemd/system/test.service.d/rougail.conf')
-option_11 = StrOption(properties=frozenset([]), doc='owner', multi=False, name='owner', default='root')
-option_12 = StrOption(properties=frozenset([]), doc='source', multi=False, name='source', default='test.service')
-option_13 = BoolOption(default=True, properties=frozenset([]), doc='templating', multi=False, name='templating')
-option_14 = BoolOption(default=True, properties=frozenset([]), doc='activate', multi=False, name='activate')
-option_7 = OptionDescription(doc='test.service', name='test_service', children=[option_8, option_9, option_10, option_11, option_12, option_13, option_14])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_8 = StrOption(name='group', doc='group', multi=False, default='root')
+option_9 = StrOption(name='mode', doc='mode', multi=False, default='0644')
+option_10 = StrOption(name='name', doc='name', multi=False, default='/systemd/system/test.service.d/rougail.conf')
+option_11 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_12 = StrOption(name='source', doc='source', multi=False, default='test.service')
+option_13 = BoolOption(default=True, name='templating', doc='templating', multi=False)
+option_14 = BoolOption(default=True, name='activate', doc='activate', multi=False)
+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(doc='test', name='test', children=[option_6])
-option_4 = OptionDescription(name='services', doc='services', properties=frozenset(['hidden']), children=[option_5])
+option_5 = OptionDescription(name='test', doc='test', children=[option_6])
+option_4 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_5])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_4])
diff --git a/tests/flattener_dicos/21family_change/result/00-base.xml b/tests/flattener_dicos/21family_change/result/00-base.xml
deleted file mode 100644
index ebc2a3617..000000000
--- a/tests/flattener_dicos/21family_change/result/00-base.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/21family_change/tiramisu/base.py b/tests/flattener_dicos/21family_change/tiramisu/base.py
index a74e84aff..656a3a6f7 100644
--- a/tests/flattener_dicos/21family_change/tiramisu/base.py
+++ b/tests/flattener_dicos/21family_change/tiramisu/base.py
@@ -2,9 +2,9 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_5 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif1', default='non', values=('oui', 'non'))
-option_4 = OptionDescription(doc='other', name='other', properties=frozenset(['normal']), children=[option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_4])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_5 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif1', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = OptionDescription(name='other', doc='other', properties=frozenset({'normal'}), children=[option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_4])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/21family_changeaccent/result/00-base.xml b/tests/flattener_dicos/21family_changeaccent/result/00-base.xml
deleted file mode 100644
index e1feb312f..000000000
--- a/tests/flattener_dicos/21family_changeaccent/result/00-base.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/21family_changeaccent/tiramisu/base.py b/tests/flattener_dicos/21family_changeaccent/tiramisu/base.py
index 3f1d43eed..06befc688 100644
--- a/tests/flattener_dicos/21family_changeaccent/tiramisu/base.py
+++ b/tests/flattener_dicos/21family_changeaccent/tiramisu/base.py
@@ -2,9 +2,9 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='Général', name='general', properties=frozenset(['normal']), children=[option_3])
-option_5 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif1', default='non', values=('oui', 'non'))
-option_4 = OptionDescription(doc='Otherwithé', name='otherwithe', properties=frozenset(['normal']), children=[option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_4])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='Général', properties=frozenset({'normal'}), children=[option_3])
+option_5 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif1', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = OptionDescription(name='otherwithe', doc='Otherwithé', properties=frozenset({'normal'}), children=[option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_4])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/21family_empty/result/00-base.xml b/tests/flattener_dicos/21family_empty/result/00-base.xml
deleted file mode 100644
index bb0d62551..000000000
--- a/tests/flattener_dicos/21family_empty/result/00-base.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/21family_empty/tiramisu/base.py b/tests/flattener_dicos/21family_empty/tiramisu/base.py
index 540734b74..5783a3aff 100644
--- a/tests/flattener_dicos/21family_empty/tiramisu/base.py
+++ b/tests/flattener_dicos/21family_empty/tiramisu/base.py
@@ -2,7 +2,7 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/30mandatory_withoutvalue/result/00-base.xml b/tests/flattener_dicos/30mandatory_withoutvalue/result/00-base.xml
deleted file mode 100644
index 26513c26d..000000000
--- a/tests/flattener_dicos/30mandatory_withoutvalue/result/00-base.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
- basic
-
- mandatory
- basic
-
-
-
-
diff --git a/tests/flattener_dicos/30mandatory_withoutvalue/tiramisu/base.py b/tests/flattener_dicos/30mandatory_withoutvalue/tiramisu/base.py
index d583db900..68122e25f 100644
--- a/tests/flattener_dicos/30mandatory_withoutvalue/tiramisu/base.py
+++ b/tests/flattener_dicos/30mandatory_withoutvalue/tiramisu/base.py
@@ -2,7 +2,7 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = StrOption(properties=frozenset(['mandatory', 'basic']), doc='No change', multi=False, name='mode_conteneur_actif')
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['basic']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = StrOption(properties=frozenset({'basic', 'mandatory'}), name='mode_conteneur_actif', doc='No change', multi=False)
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'basic'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/30mandatory_withoutvaluecalc/result/00-base.xml b/tests/flattener_dicos/30mandatory_withoutvaluecalc/result/00-base.xml
deleted file mode 100644
index a667155d4..000000000
--- a/tests/flattener_dicos/30mandatory_withoutvaluecalc/result/00-base.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
- normal
-
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
-
- value
-
-
-
-
-
diff --git a/tests/flattener_dicos/30mandatory_withoutvaluecalc/tiramisu/base.py b/tests/flattener_dicos/30mandatory_withoutvaluecalc/tiramisu/base.py
index 9b200ab2e..d0607494d 100644
--- a/tests/flattener_dicos/30mandatory_withoutvaluecalc/tiramisu/base.py
+++ b/tests/flattener_dicos/30mandatory_withoutvaluecalc/tiramisu/base.py
@@ -2,7 +2,7 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = StrOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default=Calculation(func.calc_val, Params((ParamValue("value")), kwargs={})))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = StrOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default=Calculation(func.calc_val, Params((ParamValue("value")), kwargs={})))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/30mandatory_withvalue/result/00-base.xml b/tests/flattener_dicos/30mandatory_withvalue/result/00-base.xml
deleted file mode 100644
index 3e8c374a0..000000000
--- a/tests/flattener_dicos/30mandatory_withvalue/result/00-base.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
- normal
-
- mandatory
- normal
- value
-
-
-
-
diff --git a/tests/flattener_dicos/30mandatory_withvalue/tiramisu/base.py b/tests/flattener_dicos/30mandatory_withvalue/tiramisu/base.py
index d4339c4cb..d4754797d 100644
--- a/tests/flattener_dicos/30mandatory_withvalue/tiramisu/base.py
+++ b/tests/flattener_dicos/30mandatory_withvalue/tiramisu/base.py
@@ -2,7 +2,7 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='value')
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='value')
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/30mandatory_withvaluecalc/result/00-base.xml b/tests/flattener_dicos/30mandatory_withvaluecalc/result/00-base.xml
deleted file mode 100644
index 37ec5aac8..000000000
--- a/tests/flattener_dicos/30mandatory_withvaluecalc/result/00-base.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
- normal
-
- mandatory
- normal
-
- value
-
-
-
-
-
diff --git a/tests/flattener_dicos/30mandatory_withvaluecalc/tiramisu/base.py b/tests/flattener_dicos/30mandatory_withvaluecalc/tiramisu/base.py
index 43108d1ef..c5a386fcc 100644
--- a/tests/flattener_dicos/30mandatory_withvaluecalc/tiramisu/base.py
+++ b/tests/flattener_dicos/30mandatory_withvaluecalc/tiramisu/base.py
@@ -2,7 +2,7 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default=Calculation(func.calc_val, Params((ParamValue("value")), kwargs={})))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default=Calculation(func.calc_val, Params((ParamValue("value")), kwargs={})))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/40condition_base/result/00-base.xml b/tests/flattener_dicos/40condition_base/result/00-base.xml
deleted file mode 100644
index 61e6bb41f..000000000
--- a/tests/flattener_dicos/40condition_base/result/00-base.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- mandatory
- normal
- disabled
- non
-
-
- oui
- non
- mandatory
- normal
- disabled
- non
-
-
-
-
diff --git a/tests/flattener_dicos/40condition_base/tiramisu/base.py b/tests/flattener_dicos/40condition_base/tiramisu/base.py
index fcb1bfd33..559c540b2 100644
--- a/tests/flattener_dicos/40condition_base/tiramisu/base.py
+++ b/tests/flattener_dicos/40condition_base/tiramisu/base.py
@@ -2,10 +2,10 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='condition', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_4, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif1', default='non', values=('oui', 'non'))
-option_6 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_4, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5, option_6])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_4, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif1', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_6 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_4, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5, option_6])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/40condition_fallback/result/00-base.xml b/tests/flattener_dicos/40condition_fallback/result/00-base.xml
deleted file mode 100644
index 25a2ff377..000000000
--- a/tests/flattener_dicos/40condition_fallback/result/00-base.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- disabled
- mandatory
- normal
- non
-
-
- oui
- non
- disabled
- mandatory
- normal
- non
-
-
-
- disabled
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/40condition_fallback/tiramisu/base.py b/tests/flattener_dicos/40condition_fallback/tiramisu/base.py
index a40b5a13a..31bcc5732 100644
--- a/tests/flattener_dicos/40condition_fallback/tiramisu/base.py
+++ b/tests/flattener_dicos/40condition_fallback/tiramisu/base.py
@@ -2,11 +2,11 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['disabled', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif1', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['disabled', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_7 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif3', default='non', values=('oui', 'non'))
-option_6 = OptionDescription(doc='disabled_family', name='disabled_family', properties=frozenset(['disabled', 'normal']), children=[option_7])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_6])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'disabled', 'mandatory', 'normal'}), name='mode_conteneur_actif1', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'disabled', 'mandatory', 'normal'}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_7 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif3', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_6 = OptionDescription(name='disabled_family', doc='disabled_family', properties=frozenset({'disabled', 'normal'}), children=[option_7])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_6])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/40condition_optional/result/00-base.xml b/tests/flattener_dicos/40condition_optional/result/00-base.xml
deleted file mode 100644
index 1cbf3a594..000000000
--- a/tests/flattener_dicos/40condition_optional/result/00-base.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- mandatory
- normal
- disabled
- non
-
-
-
-
diff --git a/tests/flattener_dicos/40condition_optional/tiramisu/base.py b/tests/flattener_dicos/40condition_optional/tiramisu/base.py
index e5464923c..6e3280b2a 100644
--- a/tests/flattener_dicos/40condition_optional/tiramisu/base.py
+++ b/tests/flattener_dicos/40condition_optional/tiramisu/base.py
@@ -2,9 +2,9 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='condition', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_4, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif1', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_4, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif1', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/40hidden_if_in_group_fallback/result/00-base.xml b/tests/flattener_dicos/40hidden_if_in_group_fallback/result/00-base.xml
deleted file mode 100644
index e475eddd7..000000000
--- a/tests/flattener_dicos/40hidden_if_in_group_fallback/result/00-base.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- hidden
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- mandatory
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- mandatory
- normal
- non
-
-
-
-
-
diff --git a/tests/flattener_dicos/40hidden_if_in_group_fallback/tiramisu/base.py b/tests/flattener_dicos/40hidden_if_in_group_fallback/tiramisu/base.py
index b22f2ee52..196f78e45 100644
--- a/tests/flattener_dicos/40hidden_if_in_group_fallback/tiramisu/base.py
+++ b/tests/flattener_dicos/40hidden_if_in_group_fallback/tiramisu/base.py
@@ -2,10 +2,10 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'mandatory']), doc='No change', multi=True, name='mode_conteneur_actif1', default=['non'], values=('oui', 'non'))
-option_6 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'mandatory', 'normal']), doc='No change', multi=True, name='mode_conteneur_actif2', default_multi='non', values=('oui', 'non'))
-option_4 = Leadership(doc='No change', name='mode_conteneur_actif1', properties=frozenset(['hidden', 'normal']), children=[option_5, option_6])
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'mandatory'}), name='mode_conteneur_actif1', doc='No change', multi=True, default=['non'], values=('oui', 'non'))
+option_6 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'mandatory', 'normal'}), name='mode_conteneur_actif2', doc='No change', multi=True, default_multi='non', values=('oui', 'non'))
+option_4 = Leadership(name='mode_conteneur_actif1', doc='No change', properties=frozenset({'hidden', 'normal'}), children=[option_5, option_6])
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/40ifin_leadership/result/00-base.xml b/tests/flattener_dicos/40ifin_leadership/result/00-base.xml
deleted file mode 100644
index 0a2cf9c88..000000000
--- a/tests/flattener_dicos/40ifin_leadership/result/00-base.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- mandatory
- normal
- oui
-
-
- normal
-
-
- normal
- disabled
-
-
- normal
-
-
-
-
-
diff --git a/tests/flattener_dicos/40ifin_leadership/tiramisu/base.py b/tests/flattener_dicos/40ifin_leadership/tiramisu/base.py
index 6bfe678ce..1c97b9f2a 100644
--- a/tests/flattener_dicos/40ifin_leadership/tiramisu/base.py
+++ b/tests/flattener_dicos/40ifin_leadership/tiramisu/base.py
@@ -2,12 +2,12 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='condition', multi=False, name='condition', default='oui', values=('oui', 'non'))
-option_6 = StrOption(properties=frozenset([]), doc='leader', multi=True, name='leader')
-option_7 = StrOption(properties=frozenset(['normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_4, todict=True), 'expected': ParamValue('oui')}))]), doc='follower1', multi=True, name='follower1')
-option_8 = StrOption(properties=frozenset(['normal']), doc='follower2', multi=True, name='follower2')
-option_5 = Leadership(doc='leader', name='leader', properties=frozenset(['normal']), children=[option_6, option_7, option_8])
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='condition', multi=False, default='oui', values=('oui', 'non'))
+option_6 = StrOption(name='leader', doc='leader', multi=True)
+option_7 = StrOption(properties=frozenset({'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_4, todict=True), 'expected': ParamValue('oui')}))}), name='follower1', doc='follower1', multi=True)
+option_8 = StrOption(properties=frozenset({'normal'}), name='follower2', doc='follower2', multi=True)
+option_5 = Leadership(name='leader', doc='leader', properties=frozenset({'normal'}), children=[option_6, option_7, option_8])
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/40ifin_leadershipauto/result/00-base.xml b/tests/flattener_dicos/40ifin_leadershipauto/result/00-base.xml
deleted file mode 100644
index 0855e2f2d..000000000
--- a/tests/flattener_dicos/40ifin_leadershipauto/result/00-base.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- mandatory
- normal
- oui
-
-
- normal
-
-
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- disabled
-
- valfill
-
-
-
- normal
-
-
-
-
-
diff --git a/tests/flattener_dicos/40ifin_leadershipauto/tiramisu/base.py b/tests/flattener_dicos/40ifin_leadershipauto/tiramisu/base.py
index b1264f6ec..64e522c49 100644
--- a/tests/flattener_dicos/40ifin_leadershipauto/tiramisu/base.py
+++ b/tests/flattener_dicos/40ifin_leadershipauto/tiramisu/base.py
@@ -2,12 +2,12 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='condition', multi=False, name='condition', default='oui', values=('oui', 'non'))
-option_6 = StrOption(properties=frozenset([]), doc='leader', multi=True, name='leader')
-option_7 = StrOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_4, todict=True), 'expected': ParamValue('oui')}))]), doc='follower1', multi=True, name='follower1', default=Calculation(func.calc_val, Params((), kwargs={'valeur': ParamValue("valfill")})))
-option_8 = StrOption(properties=frozenset(['normal']), doc='follower2', multi=True, name='follower2')
-option_5 = Leadership(doc='leader', name='leader', properties=frozenset(['normal']), children=[option_6, option_7, option_8])
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='condition', multi=False, default='oui', values=('oui', 'non'))
+option_6 = StrOption(name='leader', doc='leader', multi=True)
+option_7 = StrOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_4, todict=True), 'expected': ParamValue('oui')}))}), name='follower1', doc='follower1', multi=True, default=Calculation(func.calc_val, Params((), kwargs={'valeur': ParamValue("valfill")})))
+option_8 = StrOption(properties=frozenset({'normal'}), name='follower2', doc='follower2', multi=True)
+option_5 = Leadership(name='leader', doc='leader', properties=frozenset({'normal'}), children=[option_6, option_7, option_8])
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/40ifin_multi/result/00-base.xml b/tests/flattener_dicos/40ifin_multi/result/00-base.xml
deleted file mode 100644
index 936dc18bf..000000000
--- a/tests/flattener_dicos/40ifin_multi/result/00-base.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
- hidden
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
- oui
- non
- mandatory
- normal
- disabled
- disabled
- non
-
-
-
-
diff --git a/tests/flattener_dicos/40ifin_multi/tiramisu/base.py b/tests/flattener_dicos/40ifin_multi/tiramisu/base.py
index ec121ccbc..d185b4e9f 100644
--- a/tests/flattener_dicos/40ifin_multi/tiramisu/base.py
+++ b/tests/flattener_dicos/40ifin_multi/tiramisu/base.py
@@ -2,10 +2,10 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_5 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_6 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_5, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif3', default='non', values=('oui', 'non'))
-option_4 = OptionDescription(doc='general2', name='general2', properties=frozenset(['hidden', 'normal']), children=[option_5, option_6])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_4])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_5 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_6 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')})), Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_5, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif3', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = OptionDescription(name='general2', doc='general2', properties=frozenset({'hidden', 'normal'}), children=[option_5, option_6])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_4])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/40ifin_validenum/result/00-base.xml b/tests/flattener_dicos/40ifin_validenum/result/00-base.xml
deleted file mode 100644
index 2dc7093e0..000000000
--- a/tests/flattener_dicos/40ifin_validenum/result/00-base.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
-
- hidden
- normal
-
- oui
- non
- disabled
- mandatory
- normal
- non
-
-
- a
- b
- c
- mandatory
- normal
- a
-
-
-
-
diff --git a/tests/flattener_dicos/40ifin_validenum/tiramisu/base.py b/tests/flattener_dicos/40ifin_validenum/tiramisu/base.py
index a909e5d64..9d21fbed4 100644
--- a/tests/flattener_dicos/40ifin_validenum/tiramisu/base.py
+++ b/tests/flattener_dicos/40ifin_validenum/tiramisu/base.py
@@ -2,10 +2,10 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_5 = ChoiceOption(properties=frozenset(['disabled', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_6 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif3', default='a', values=('a', 'b', 'c'))
-option_4 = OptionDescription(doc='general2', name='general2', properties=frozenset(['hidden', 'normal']), children=[option_5, option_6])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_4])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_5 = ChoiceOption(properties=frozenset({'disabled', 'mandatory', 'normal'}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_6 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif3', doc='No change', multi=False, default='a', values=('a', 'b', 'c'))
+option_4 = OptionDescription(name='general2', doc='general2', properties=frozenset({'hidden', 'normal'}), children=[option_5, option_6])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_4])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/50exists_exists/result/00-base.xml b/tests/flattener_dicos/50exists_exists/result/00-base.xml
deleted file mode 100644
index 1dff008f1..000000000
--- a/tests/flattener_dicos/50exists_exists/result/00-base.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/50exists_exists/tiramisu/base.py b/tests/flattener_dicos/50exists_exists/tiramisu/base.py
index 96976d784..5e788bc0c 100644
--- a/tests/flattener_dicos/50exists_exists/tiramisu/base.py
+++ b/tests/flattener_dicos/50exists_exists/tiramisu/base.py
@@ -2,7 +2,7 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='Description', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='Description', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/50redefine_description/result/00-base.xml b/tests/flattener_dicos/50redefine_description/result/00-base.xml
deleted file mode 100644
index 71209a9ce..000000000
--- a/tests/flattener_dicos/50redefine_description/result/00-base.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/50redefine_description/tiramisu/base.py b/tests/flattener_dicos/50redefine_description/tiramisu/base.py
index 063b11618..b9cc21cb4 100644
--- a/tests/flattener_dicos/50redefine_description/tiramisu/base.py
+++ b/tests/flattener_dicos/50redefine_description/tiramisu/base.py
@@ -2,7 +2,7 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='Redefined', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='Redefined', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/51exists_nonexists/result/00-base.xml b/tests/flattener_dicos/51exists_nonexists/result/00-base.xml
deleted file mode 100644
index 87d313241..000000000
--- a/tests/flattener_dicos/51exists_nonexists/result/00-base.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
- oui
- non
- mandatory
- normal
- oui
-
-
-
-
diff --git a/tests/flattener_dicos/51exists_nonexists/tiramisu/base.py b/tests/flattener_dicos/51exists_nonexists/tiramisu/base.py
index 450918f04..eced71db7 100644
--- a/tests/flattener_dicos/51exists_nonexists/tiramisu/base.py
+++ b/tests/flattener_dicos/51exists_nonexists/tiramisu/base.py
@@ -2,9 +2,9 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='Description', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='Description', multi=False, name='mode_conteneur_actif1', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='New description', multi=False, name='mode_conteneur_actif2', default='oui', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='Description', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif1', doc='Description', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif2', doc='New description', multi=False, default='oui', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/51redefine_auto/result/00-base.xml b/tests/flattener_dicos/51redefine_auto/result/00-base.xml
deleted file mode 100644
index 3dcb40d51..000000000
--- a/tests/flattener_dicos/51redefine_auto/result/00-base.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
-
- non
-
-
-
-
-
diff --git a/tests/flattener_dicos/51redefine_auto/tiramisu/base.py b/tests/flattener_dicos/51redefine_auto/tiramisu/base.py
index 42b1cd767..0a988a6db 100644
--- a/tests/flattener_dicos/51redefine_auto/tiramisu/base.py
+++ b/tests/flattener_dicos/51redefine_auto/tiramisu/base.py
@@ -2,7 +2,7 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default=Calculation(func.concat, Params((), kwargs={'valeur': ParamValue("non")})), values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default=Calculation(func.concat, Params((), kwargs={'valeur': ParamValue("non")})), values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/51redefine_autofill/result/00-base.xml b/tests/flattener_dicos/51redefine_autofill/result/00-base.xml
deleted file mode 100644
index 35ab29699..000000000
--- a/tests/flattener_dicos/51redefine_autofill/result/00-base.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
-
- non
-
-
-
-
-
diff --git a/tests/flattener_dicos/51redefine_autofill/tiramisu/base.py b/tests/flattener_dicos/51redefine_autofill/tiramisu/base.py
index 3d2d6a4b9..097be8142 100644
--- a/tests/flattener_dicos/51redefine_autofill/tiramisu/base.py
+++ b/tests/flattener_dicos/51redefine_autofill/tiramisu/base.py
@@ -2,7 +2,7 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default=Calculation(func.concat, Params((), kwargs={'valeur': ParamValue("non")})), values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default=Calculation(func.concat, Params((), kwargs={'valeur': ParamValue("non")})), values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/51redefine_family/result/00-base.xml b/tests/flattener_dicos/51redefine_family/result/00-base.xml
deleted file mode 100644
index 159a896fb..000000000
--- a/tests/flattener_dicos/51redefine_family/result/00-base.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
- hidden
- normal
- disabled
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/51redefine_family/tiramisu/base.py b/tests/flattener_dicos/51redefine_family/tiramisu/base.py
index 88f6885bf..0b4bc4b83 100644
--- a/tests/flattener_dicos/51redefine_family/tiramisu/base.py
+++ b/tests/flattener_dicos/51redefine_family/tiramisu/base.py
@@ -2,9 +2,9 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_5 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_4 = OptionDescription(doc='general2', name='general2', properties=frozenset(['hidden', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))]), children=[option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2, option_4])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_5 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = OptionDescription(name='general2', doc='general2', properties=frozenset({'hidden', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), children=[option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2, option_4])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/51redefine_fill/result/00-base.xml b/tests/flattener_dicos/51redefine_fill/result/00-base.xml
deleted file mode 100644
index 3dcb40d51..000000000
--- a/tests/flattener_dicos/51redefine_fill/result/00-base.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
-
- non
-
-
-
-
-
diff --git a/tests/flattener_dicos/51redefine_fill/tiramisu/base.py b/tests/flattener_dicos/51redefine_fill/tiramisu/base.py
index 42b1cd767..0a988a6db 100644
--- a/tests/flattener_dicos/51redefine_fill/tiramisu/base.py
+++ b/tests/flattener_dicos/51redefine_fill/tiramisu/base.py
@@ -2,7 +2,7 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default=Calculation(func.concat, Params((), kwargs={'valeur': ParamValue("non")})), values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default=Calculation(func.concat, Params((), kwargs={'valeur': ParamValue("non")})), values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/51redefine_fillauto/result/00-base.xml b/tests/flattener_dicos/51redefine_fillauto/result/00-base.xml
deleted file mode 100644
index 3dcb40d51..000000000
--- a/tests/flattener_dicos/51redefine_fillauto/result/00-base.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
-
- non
-
-
-
-
-
diff --git a/tests/flattener_dicos/51redefine_fillauto/tiramisu/base.py b/tests/flattener_dicos/51redefine_fillauto/tiramisu/base.py
index 42b1cd767..0a988a6db 100644
--- a/tests/flattener_dicos/51redefine_fillauto/tiramisu/base.py
+++ b/tests/flattener_dicos/51redefine_fillauto/tiramisu/base.py
@@ -2,7 +2,7 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default=Calculation(func.concat, Params((), kwargs={'valeur': ParamValue("non")})), values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default=Calculation(func.concat, Params((), kwargs={'valeur': ParamValue("non")})), values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/51redefine_help/result/00-base.xml b/tests/flattener_dicos/51redefine_help/result/00-base.xml
deleted file mode 100644
index edd935ee2..000000000
--- a/tests/flattener_dicos/51redefine_help/result/00-base.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/51redefine_help/tiramisu/base.py b/tests/flattener_dicos/51redefine_help/tiramisu/base.py
index e3d41ecd4..47cee715d 100644
--- a/tests/flattener_dicos/51redefine_help/tiramisu/base.py
+++ b/tests/flattener_dicos/51redefine_help/tiramisu/base.py
@@ -2,9 +2,9 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='redefine help', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='redefine help', multi=False, default='non', values=('oui', 'non'))
option_3.impl_set_information("help", "redefine help ok")
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
option_2.impl_set_information("help", "redefine help family ok")
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/51redefine_hidden/result/00-base.xml b/tests/flattener_dicos/51redefine_hidden/result/00-base.xml
deleted file mode 100644
index acac56409..000000000
--- a/tests/flattener_dicos/51redefine_hidden/result/00-base.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/51redefine_hidden/tiramisu/base.py b/tests/flattener_dicos/51redefine_hidden/tiramisu/base.py
index ddcdfbcdb..eb6af18fe 100644
--- a/tests/flattener_dicos/51redefine_hidden/tiramisu/base.py
+++ b/tests/flattener_dicos/51redefine_hidden/tiramisu/base.py
@@ -2,7 +2,7 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='Redefine hidden', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='Redefine hidden', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/51redefine_remove_check/result/00-base.xml b/tests/flattener_dicos/51redefine_remove_check/result/00-base.xml
deleted file mode 100644
index ec88acad4..000000000
--- a/tests/flattener_dicos/51redefine_remove_check/result/00-base.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
- normal
-
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/51redefine_remove_check/tiramisu/base.py b/tests/flattener_dicos/51redefine_remove_check/tiramisu/base.py
index 1a758e483..994a4a439 100644
--- a/tests/flattener_dicos/51redefine_remove_check/tiramisu/base.py
+++ b/tests/flattener_dicos/51redefine_remove_check/tiramisu/base.py
@@ -2,7 +2,7 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = StrOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non')
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = StrOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non')
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/51redefine_remove_condition/result/00-base.xml b/tests/flattener_dicos/51redefine_remove_condition/result/00-base.xml
deleted file mode 100644
index af486b60c..000000000
--- a/tests/flattener_dicos/51redefine_remove_condition/result/00-base.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
- oui
- non
- mandatory
- normal
- disabled
- non
-
-
-
-
diff --git a/tests/flattener_dicos/51redefine_remove_condition/tiramisu/base.py b/tests/flattener_dicos/51redefine_remove_condition/tiramisu/base.py
index 2cdea98dd..900e18969 100644
--- a/tests/flattener_dicos/51redefine_remove_condition/tiramisu/base.py
+++ b/tests/flattener_dicos/51redefine_remove_condition/tiramisu/base.py
@@ -2,10 +2,10 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='condition', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif1', default='non', values=('oui', 'non'))
-option_6 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_4, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5, option_6])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif1', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_6 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_4, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5, option_6])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/51redefine_removecondition_alltarget/result/00-base.xml b/tests/flattener_dicos/51redefine_removecondition_alltarget/result/00-base.xml
deleted file mode 100644
index 70ccf29d2..000000000
--- a/tests/flattener_dicos/51redefine_removecondition_alltarget/result/00-base.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/51redefine_removecondition_alltarget/tiramisu/base.py b/tests/flattener_dicos/51redefine_removecondition_alltarget/tiramisu/base.py
index 76b864c7b..8fe884ed3 100644
--- a/tests/flattener_dicos/51redefine_removecondition_alltarget/tiramisu/base.py
+++ b/tests/flattener_dicos/51redefine_removecondition_alltarget/tiramisu/base.py
@@ -2,10 +2,10 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='condition', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif1', default='non', values=('oui', 'non'))
-option_6 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5, option_6])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif1', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_6 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5, option_6])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/51redefine_removecondition_nonautofreeze/result/00-base.xml b/tests/flattener_dicos/51redefine_removecondition_nonautofreeze/result/00-base.xml
deleted file mode 100644
index 091808d4f..000000000
--- a/tests/flattener_dicos/51redefine_removecondition_nonautofreeze/result/00-base.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-
-
-
-
- basic
-
- force_store_value
- auto_freeze
- oui
- non
- mandatory
- basic
- auto_frozen
- non
-
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
- oui
- non
- mandatory
- normal
- disabled
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/51redefine_removecondition_nonautofreeze/tiramisu/base.py b/tests/flattener_dicos/51redefine_removecondition_nonautofreeze/tiramisu/base.py
index b319b2c57..159df35d8 100644
--- a/tests/flattener_dicos/51redefine_removecondition_nonautofreeze/tiramisu/base.py
+++ b/tests/flattener_dicos/51redefine_removecondition_nonautofreeze/tiramisu/base.py
@@ -2,11 +2,11 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_7 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='module_instancie', default='non', values=('oui', 'non'))
-option_3 = ChoiceOption(properties=frozenset(['force_store_value', 'auto_freeze', 'mandatory', 'basic', Calculation(calc_value, Params(ParamValue('auto_frozen'), kwargs={'condition': ParamOption(option_7, todict=True), 'expected': ParamValue('oui'), 'reverse_condition': ParamValue(True)}))]), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='No change', multi=False, name='condition', default='non', values=('oui', 'non'))
-option_5 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif1', default='non', values=('oui', 'non'))
-option_6 = ChoiceOption(properties=frozenset(['mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_4, todict=True), 'expected': ParamValue('oui')}))]), doc='No change', multi=False, name='mode_conteneur_actif2', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['basic']), children=[option_3, option_4, option_5, option_6, option_7])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_7 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='module_instancie', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_3 = ChoiceOption(properties=frozenset({'auto_freeze', 'basic', 'force_store_value', 'mandatory', Calculation(calc_value, Params(ParamValue('auto_frozen'), kwargs={'condition': ParamOption(option_7, todict=True), 'expected': ParamValue('oui'), 'reverse_condition': ParamValue(True)}))}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif1', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_6 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_4, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'basic'}), children=[option_3, option_4, option_5, option_6, option_7])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/51redefine_validenum/result/00-base.xml b/tests/flattener_dicos/51redefine_validenum/result/00-base.xml
deleted file mode 100644
index fa27497c6..000000000
--- a/tests/flattener_dicos/51redefine_validenum/result/00-base.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
- normal
-
- a
- b
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- a
-
-
-
-
diff --git a/tests/flattener_dicos/51redefine_validenum/tiramisu/base.py b/tests/flattener_dicos/51redefine_validenum/tiramisu/base.py
index 4865cd1f9..a377f1743 100644
--- a/tests/flattener_dicos/51redefine_validenum/tiramisu/base.py
+++ b/tests/flattener_dicos/51redefine_validenum/tiramisu/base.py
@@ -2,7 +2,7 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='Redefine description', multi=False, name='mode_conteneur_actif', default='a', values=('a', 'b'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='Redefine description', multi=False, default='a', values=('a', 'b'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/51redefine_value/result/00-base.xml b/tests/flattener_dicos/51redefine_value/result/00-base.xml
deleted file mode 100644
index b592fa70a..000000000
--- a/tests/flattener_dicos/51redefine_value/result/00-base.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- oui
-
-
-
-
diff --git a/tests/flattener_dicos/51redefine_value/tiramisu/base.py b/tests/flattener_dicos/51redefine_value/tiramisu/base.py
index 2d49c670d..cb6026126 100644
--- a/tests/flattener_dicos/51redefine_value/tiramisu/base.py
+++ b/tests/flattener_dicos/51redefine_value/tiramisu/base.py
@@ -2,8 +2,8 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='Redefine value', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='Redefine value', multi=False, name='mode_conteneur_actif1', default='oui', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='Redefine value', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif1', doc='Redefine value', multi=False, default='oui', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/52exists_redefine/result/00-base.xml b/tests/flattener_dicos/52exists_redefine/result/00-base.xml
deleted file mode 100644
index bf0120be2..000000000
--- a/tests/flattener_dicos/52exists_redefine/result/00-base.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/52exists_redefine/tiramisu/base.py b/tests/flattener_dicos/52exists_redefine/tiramisu/base.py
index 841c2d999..1e6be002f 100644
--- a/tests/flattener_dicos/52exists_redefine/tiramisu/base.py
+++ b/tests/flattener_dicos/52exists_redefine/tiramisu/base.py
@@ -2,7 +2,7 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='New description', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='general', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='New description', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/60action_external/result/00-base.xml b/tests/flattener_dicos/60action_external/result/00-base.xml
deleted file mode 100644
index 191f3291f..000000000
--- a/tests/flattener_dicos/60action_external/result/00-base.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
-
- normal
-
- mandatory
- normal
- 0
-
-
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
-
- http://localhost/
-
-
-
-
-
diff --git a/tests/flattener_dicos/60action_external/tiramisu/base.py b/tests/flattener_dicos/60action_external/tiramisu/base.py
index 5b2eae6e8..bd799ffcc 100644
--- a/tests/flattener_dicos/60action_external/tiramisu/base.py
+++ b/tests/flattener_dicos/60action_external/tiramisu/base.py
@@ -2,11 +2,11 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_6 = IntOption(properties=frozenset(['mandatory', 'normal']), doc='délai en minutes avant lancement', multi=False, name='delay', default=0)
-option_7 = URLOption(allow_ip=True, allow_without_dot=True, properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='domain', multi=False, name='calc_url', default=Calculation(func.calc_val, Params((ParamValue("http://localhost/")), kwargs={})))
-option_5 = OptionDescription(doc='test', name='test', properties=frozenset(['normal']), children=[option_6, option_7])
-option_4 = OptionDescription(doc='extra', name='extra', children=[option_5])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_6 = IntOption(properties=frozenset({'mandatory', 'normal'}), name='delay', doc='délai en minutes avant lancement', multi=False, default=0)
+option_7 = URLOption(allow_ip=True, allow_without_dot=True, properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='calc_url', doc='domain', multi=False, default=Calculation(func.calc_val, Params((ParamValue("http://localhost/")), kwargs={})))
+option_5 = OptionDescription(name='test', doc='test', properties=frozenset({'normal'}), children=[option_6, option_7])
+option_4 = OptionDescription(name='extra', doc='extra', children=[option_5])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_4])
diff --git a/tests/flattener_dicos/60extra_externalspacecondition/result/00-base.xml b/tests/flattener_dicos/60extra_externalspacecondition/result/00-base.xml
deleted file mode 100644
index 4d298973d..000000000
--- a/tests/flattener_dicos/60extra_externalspacecondition/result/00-base.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-
-
-
-
- basic
-
- force_store_value
- auto_freeze
- oui
- non
- mandatory
- basic
- auto_frozen
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
-
- normal
-
- mandatory
- normal
- Exportation de la base de ejabberd
-
-
- none
- daily
- weekly
- monthly
- mandatory
- normal
- none
-
-
- pre
- post
- mandatory
- normal
- pre
-
-
-
-
-
- normal
- disabled
-
- mandatory
- normal
- test
-
-
-
-
diff --git a/tests/flattener_dicos/60extra_externalspacecondition/tiramisu/base.py b/tests/flattener_dicos/60extra_externalspacecondition/tiramisu/base.py
index 7631921d7..b74405316 100644
--- a/tests/flattener_dicos/60extra_externalspacecondition/tiramisu/base.py
+++ b/tests/flattener_dicos/60extra_externalspacecondition/tiramisu/base.py
@@ -2,17 +2,17 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_5 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='module_instancie', default='non', values=('oui', 'non'))
-option_3 = ChoiceOption(properties=frozenset(['force_store_value', 'auto_freeze', 'mandatory', 'basic', Calculation(calc_value, Params(ParamValue('auto_frozen'), kwargs={'condition': ParamOption(option_5, todict=True), 'expected': ParamValue('oui'), 'reverse_condition': ParamValue(True)}))]), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='activer_ejabberd', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['basic']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_8 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='description', multi=False, name='description', default='Exportation de la base de ejabberd')
-option_9 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='day', multi=False, name='day', default='none', values=('none', 'daily', 'weekly', 'monthly'))
-option_10 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='mode', multi=False, name='mode', default='pre', values=('pre', 'post'))
-option_7 = OptionDescription(doc='ejabberd', name='ejabberd', properties=frozenset(['normal']), children=[option_8, option_9, option_10])
-option_6 = OptionDescription(doc='extra', name='extra', children=[option_7])
-option_13 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='description', multi=False, name='description', default='test')
-option_12 = OptionDescription(doc='external', name='external', properties=frozenset(['normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_8, todict=True), 'expected': ParamValue('non')}))]), children=[option_13])
-option_11 = OptionDescription(doc='extra1', name='extra1', children=[option_12])
+option_5 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='module_instancie', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_3 = ChoiceOption(properties=frozenset({'auto_freeze', 'basic', 'force_store_value', 'mandatory', Calculation(calc_value, Params(ParamValue('auto_frozen'), kwargs={'condition': ParamOption(option_5, todict=True), 'expected': ParamValue('oui'), 'reverse_condition': ParamValue(True)}))}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='activer_ejabberd', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'basic'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_8 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='description', doc='description', multi=False, default='Exportation de la base de ejabberd')
+option_9 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='day', doc='day', multi=False, default='none', values=('none', 'daily', 'weekly', 'monthly'))
+option_10 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode', doc='mode', multi=False, default='pre', values=('pre', 'post'))
+option_7 = OptionDescription(name='ejabberd', doc='ejabberd', properties=frozenset({'normal'}), children=[option_8, option_9, option_10])
+option_6 = OptionDescription(name='extra', doc='extra', children=[option_7])
+option_13 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='description', doc='description', multi=False, default='test')
+option_12 = OptionDescription(name='external', doc='external', properties=frozenset({'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_8, todict=True), 'expected': ParamValue('non')}))}), children=[option_13])
+option_11 = OptionDescription(name='extra1', doc='extra1', children=[option_12])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_6, option_11])
diff --git a/tests/flattener_dicos/60extra_group/result/00-base.xml b/tests/flattener_dicos/60extra_group/result/00-base.xml
deleted file mode 100644
index 063d244ef..000000000
--- a/tests/flattener_dicos/60extra_group/result/00-base.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-
-
-
- hidden
-
-
-
-
- root
-
-
- 0644
-
-
- /etc/mailname
-
-
- root
-
-
- mailname
-
-
- True
-
-
- True
-
-
-
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
-
- normal
-
- normal
-
- mandatory
- test
-
-
- mandatory
- normal
- pre
-
-
-
-
-
diff --git a/tests/flattener_dicos/60extra_group/tiramisu/base.py b/tests/flattener_dicos/60extra_group/tiramisu/base.py
index 096d2a0a9..d409ba80f 100644
--- a/tests/flattener_dicos/60extra_group/tiramisu/base.py
+++ b/tests/flattener_dicos/60extra_group/tiramisu/base.py
@@ -2,24 +2,24 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='activer_ejabberd', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_9 = StrOption(properties=frozenset([]), doc='group', multi=False, name='group', default='root')
-option_10 = StrOption(properties=frozenset([]), doc='mode', multi=False, name='mode', default='0644')
-option_11 = StrOption(properties=frozenset([]), doc='name', multi=False, name='name', default='/etc/mailname')
-option_12 = StrOption(properties=frozenset([]), doc='owner', multi=False, name='owner', default='root')
-option_13 = StrOption(properties=frozenset([]), doc='source', multi=False, name='source', default='mailname')
-option_14 = BoolOption(default=True, properties=frozenset([]), doc='templating', multi=False, name='templating')
-option_15 = BoolOption(default=True, properties=frozenset([]), doc='activate', multi=False, name='activate')
-option_8 = OptionDescription(doc='mailname', name='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(doc='test', name='test', children=[option_7])
-option_5 = OptionDescription(name='services', doc='services', properties=frozenset(['hidden']), children=[option_6])
-option_19 = StrOption(properties=frozenset(['mandatory']), doc='description', multi=True, name='description', default=['test'])
-option_20 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='mode', multi=True, name='mode', default_multi='pre')
-option_18 = Leadership(doc='description', name='description', properties=frozenset(['normal']), children=[option_19, option_20])
-option_17 = OptionDescription(doc='ejabberd', name='ejabberd', properties=frozenset(['normal']), children=[option_18])
-option_16 = OptionDescription(doc='extra', name='extra', children=[option_17])
-option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_5, option_16])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='activer_ejabberd', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_8 = StrOption(properties=frozenset({'mandatory'}), name='description', doc='description', multi=True, default=['test'])
+option_9 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='mode', doc='mode', multi=True, default_multi='pre')
+option_7 = Leadership(name='description', doc='description', properties=frozenset({'normal'}), children=[option_8, option_9])
+option_6 = OptionDescription(name='ejabberd', doc='ejabberd', properties=frozenset({'normal'}), children=[option_7])
+option_5 = OptionDescription(name='extra', doc='extra', children=[option_6])
+option_14 = StrOption(name='group', doc='group', multi=False, default='root')
+option_15 = StrOption(name='mode', doc='mode', multi=False, default='0644')
+option_16 = StrOption(name='name', doc='name', multi=False, default='/etc/mailname')
+option_17 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_18 = StrOption(name='source', doc='source', multi=False, default='mailname')
+option_19 = BoolOption(default=True, name='templating', doc='templating', multi=False)
+option_20 = BoolOption(default=True, name='activate', doc='activate', multi=False)
+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_10 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_11])
+option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_5, option_10])
diff --git a/tests/flattener_dicos/60extra_help/result/00-base.xml b/tests/flattener_dicos/60extra_help/result/00-base.xml
deleted file mode 100644
index edb63e32b..000000000
--- a/tests/flattener_dicos/60extra_help/result/00-base.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-
- hidden
-
-
-
-
- root
-
-
- 0644
-
-
- /etc/mailname
-
-
- root
-
-
- mailname
-
-
- True
-
-
- True
-
-
-
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
-
- normal
-
- mandatory
- normal
- Exportation de la base de ejabberd
-
-
- none
- daily
- weekly
- monthly
- mandatory
- normal
-
- non
- rougail.general.activer_ejabberd
- none
- daily
-
-
-
- pre
- post
- mandatory
- normal
- pre
-
-
-
-
diff --git a/tests/flattener_dicos/60extra_help/tiramisu/base.py b/tests/flattener_dicos/60extra_help/tiramisu/base.py
index bc18cef5f..11da52079 100644
--- a/tests/flattener_dicos/60extra_help/tiramisu/base.py
+++ b/tests/flattener_dicos/60extra_help/tiramisu/base.py
@@ -2,25 +2,25 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='activer_ejabberd', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_9 = StrOption(properties=frozenset([]), doc='group', multi=False, name='group', default='root')
-option_10 = StrOption(properties=frozenset([]), doc='mode', multi=False, name='mode', default='0644')
-option_11 = StrOption(properties=frozenset([]), doc='name', multi=False, name='name', default='/etc/mailname')
-option_12 = StrOption(properties=frozenset([]), doc='owner', multi=False, name='owner', default='root')
-option_13 = StrOption(properties=frozenset([]), doc='source', multi=False, name='source', default='mailname')
-option_14 = BoolOption(default=True, properties=frozenset([]), doc='templating', multi=False, name='templating')
-option_15 = BoolOption(default=True, properties=frozenset([]), doc='activate', multi=False, name='activate')
-option_8 = OptionDescription(doc='mailname', name='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(doc='test', name='test', children=[option_7])
-option_5 = OptionDescription(name='services', doc='services', properties=frozenset(['hidden']), children=[option_6])
-option_18 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='description', multi=False, name='description', default='Exportation de la base de ejabberd')
-option_19 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='day', multi=False, name='day', default=Calculation(func.calc_multi_condition, Params((ParamValue("non")), kwargs={'condition_1': ParamOption(option_4, notraisepropertyerror=True, todict=False), 'match': ParamValue("none"), 'mismatch': ParamValue("daily")})), values=('none', 'daily', 'weekly', 'monthly'))
-option_19.impl_set_information("help", "Test help")
-option_20 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='mode', multi=False, name='mode', default='pre', values=('pre', 'post'))
-option_17 = OptionDescription(doc='ejabberd', name='ejabberd', properties=frozenset(['normal']), children=[option_18, option_19, option_20])
-option_16 = OptionDescription(doc='extra', name='extra', children=[option_17])
-option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_5, option_16])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='activer_ejabberd', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_7 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='description', doc='description', multi=False, default='Exportation de la base de ejabberd')
+option_8 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='day', doc='day', multi=False, default=Calculation(func.calc_multi_condition, Params((ParamValue("non")), kwargs={'condition_1': ParamOption(option_4, notraisepropertyerror=True, todict=False), 'match': ParamValue("none"), 'mismatch': ParamValue("daily")})), values=('none', 'daily', 'weekly', 'monthly'))
+option_8.impl_set_information("help", "Test help")
+option_9 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode', doc='mode', multi=False, default='pre', values=('pre', 'post'))
+option_6 = OptionDescription(name='ejabberd', doc='ejabberd', properties=frozenset({'normal'}), children=[option_7, option_8, option_9])
+option_5 = OptionDescription(name='extra', doc='extra', children=[option_6])
+option_14 = StrOption(name='group', doc='group', multi=False, default='root')
+option_15 = StrOption(name='mode', doc='mode', multi=False, default='0644')
+option_16 = StrOption(name='name', doc='name', multi=False, default='/etc/mailname')
+option_17 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_18 = StrOption(name='source', doc='source', multi=False, default='mailname')
+option_19 = BoolOption(default=True, name='templating', doc='templating', multi=False)
+option_20 = BoolOption(default=True, name='activate', doc='activate', multi=False)
+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_10 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_11])
+option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_5, option_10])
diff --git a/tests/flattener_dicos/60extra_load/result/00-base.xml b/tests/flattener_dicos/60extra_load/result/00-base.xml
deleted file mode 100644
index bcd752acc..000000000
--- a/tests/flattener_dicos/60extra_load/result/00-base.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
-
- normal
-
- mandatory
- normal
- Exportation de la base de ejabberd
-
-
- none
- daily
- weekly
- monthly
- mandatory
- normal
-
- non
- rougail.general.activer_ejabberd
- none
- daily
-
-
-
- pre
- post
- mandatory
- normal
- pre
-
-
-
-
diff --git a/tests/flattener_dicos/60extra_load/tiramisu/base.py b/tests/flattener_dicos/60extra_load/tiramisu/base.py
index c8db5a962..19dfd32bb 100644
--- a/tests/flattener_dicos/60extra_load/tiramisu/base.py
+++ b/tests/flattener_dicos/60extra_load/tiramisu/base.py
@@ -2,13 +2,13 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='activer_ejabberd', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_7 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='description', multi=False, name='description', default='Exportation de la base de ejabberd')
-option_8 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='day', multi=False, name='day', default=Calculation(func.calc_multi_condition, Params((ParamValue("non")), kwargs={'condition_1': ParamOption(option_4, notraisepropertyerror=True, todict=False), 'match': ParamValue("none"), 'mismatch': ParamValue("daily")})), values=('none', 'daily', 'weekly', 'monthly'))
-option_9 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='mode', multi=False, name='mode', default='pre', values=('pre', 'post'))
-option_6 = OptionDescription(doc='ejabberd', name='ejabberd', properties=frozenset(['normal']), children=[option_7, option_8, option_9])
-option_5 = OptionDescription(doc='extra', name='extra', children=[option_6])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='activer_ejabberd', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_7 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='description', doc='description', multi=False, default='Exportation de la base de ejabberd')
+option_8 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='day', doc='day', multi=False, default=Calculation(func.calc_multi_condition, Params((ParamValue("non")), kwargs={'condition_1': ParamOption(option_4, notraisepropertyerror=True, todict=False), 'match': ParamValue("none"), 'mismatch': ParamValue("daily")})), values=('none', 'daily', 'weekly', 'monthly'))
+option_9 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode', doc='mode', multi=False, default='pre', values=('pre', 'post'))
+option_6 = OptionDescription(name='ejabberd', doc='ejabberd', properties=frozenset({'normal'}), children=[option_7, option_8, option_9])
+option_5 = OptionDescription(name='extra', doc='extra', children=[option_6])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_5])
diff --git a/tests/flattener_dicos/60extra_mandatory/result/00-base.xml b/tests/flattener_dicos/60extra_mandatory/result/00-base.xml
deleted file mode 100644
index c40d8f385..000000000
--- a/tests/flattener_dicos/60extra_mandatory/result/00-base.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
-
- basic
-
- mandatory
- normal
- Exportation de la base de ejabberd
-
-
- none
- daily
- weekly
- monthly
- mandatory
- normal
-
- non
- rougail.general.activer_ejabberd
- none
- daily
-
-
-
- pre
- post
- mandatory
- normal
- pre
-
-
- mandatory
- basic
-
-
-
-
diff --git a/tests/flattener_dicos/60extra_mandatory/tiramisu/base.py b/tests/flattener_dicos/60extra_mandatory/tiramisu/base.py
index 38e30ff4e..d1edad0b4 100644
--- a/tests/flattener_dicos/60extra_mandatory/tiramisu/base.py
+++ b/tests/flattener_dicos/60extra_mandatory/tiramisu/base.py
@@ -2,14 +2,14 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='activer_ejabberd', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_7 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='description', multi=False, name='description', default='Exportation de la base de ejabberd')
-option_8 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='day', multi=False, name='day', default=Calculation(func.calc_multi_condition, Params((ParamValue("non")), kwargs={'condition_1': ParamOption(option_4, notraisepropertyerror=True, todict=False), 'match': ParamValue("none"), 'mismatch': ParamValue("daily")})), values=('none', 'daily', 'weekly', 'monthly'))
-option_9 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='mode', multi=False, name='mode', default='pre', values=('pre', 'post'))
-option_10 = StrOption(properties=frozenset(['mandatory', 'basic']), doc='var1', multi=False, name='var1')
-option_6 = OptionDescription(doc='ejabberd', name='ejabberd', properties=frozenset(['basic']), children=[option_7, option_8, option_9, option_10])
-option_5 = OptionDescription(doc='extra', name='extra', children=[option_6])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='activer_ejabberd', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_7 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='description', doc='description', multi=False, default='Exportation de la base de ejabberd')
+option_8 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='day', doc='day', multi=False, default=Calculation(func.calc_multi_condition, Params((ParamValue("non")), kwargs={'condition_1': ParamOption(option_4, notraisepropertyerror=True, todict=False), 'match': ParamValue("none"), 'mismatch': ParamValue("daily")})), values=('none', 'daily', 'weekly', 'monthly'))
+option_9 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode', doc='mode', multi=False, default='pre', values=('pre', 'post'))
+option_10 = StrOption(properties=frozenset({'basic', 'mandatory'}), name='var1', doc='var1', multi=False)
+option_6 = OptionDescription(name='ejabberd', doc='ejabberd', properties=frozenset({'basic'}), children=[option_7, option_8, option_9, option_10])
+option_5 = OptionDescription(name='extra', doc='extra', children=[option_6])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_5])
diff --git a/tests/flattener_dicos/60extra_redefine/result/00-base.xml b/tests/flattener_dicos/60extra_redefine/result/00-base.xml
deleted file mode 100644
index 937fc2575..000000000
--- a/tests/flattener_dicos/60extra_redefine/result/00-base.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
-
- normal
-
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- Exportation de la base de ejabberd
-
-
- none
- daily
- weekly
- monthly
- mandatory
- normal
-
- non
- rougail.general.activer_ejabberd
- none
- daily
-
-
-
- pre
- post
- mandatory
- normal
- pre
-
-
-
-
diff --git a/tests/flattener_dicos/60extra_redefine/tiramisu/base.py b/tests/flattener_dicos/60extra_redefine/tiramisu/base.py
index b08a07d3f..bce0858f7 100644
--- a/tests/flattener_dicos/60extra_redefine/tiramisu/base.py
+++ b/tests/flattener_dicos/60extra_redefine/tiramisu/base.py
@@ -2,13 +2,13 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='activer_ejabberd', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_7 = StrOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='description', multi=False, name='description', default='Exportation de la base de ejabberd')
-option_8 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='day', multi=False, name='day', default=Calculation(func.calc_multi_condition, Params((ParamValue("non")), kwargs={'condition_1': ParamOption(option_4, notraisepropertyerror=True, todict=False), 'match': ParamValue("none"), 'mismatch': ParamValue("daily")})), values=('none', 'daily', 'weekly', 'monthly'))
-option_9 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='mode', multi=False, name='mode', default='pre', values=('pre', 'post'))
-option_6 = OptionDescription(doc='ejabberd', name='ejabberd', properties=frozenset(['normal']), children=[option_7, option_8, option_9])
-option_5 = OptionDescription(doc='extra', name='extra', children=[option_6])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='activer_ejabberd', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_7 = StrOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='description', doc='description', multi=False, default='Exportation de la base de ejabberd')
+option_8 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='day', doc='day', multi=False, default=Calculation(func.calc_multi_condition, Params((ParamValue("non")), kwargs={'condition_1': ParamOption(option_4, notraisepropertyerror=True, todict=False), 'match': ParamValue("none"), 'mismatch': ParamValue("daily")})), values=('none', 'daily', 'weekly', 'monthly'))
+option_9 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode', doc='mode', multi=False, default='pre', values=('pre', 'post'))
+option_6 = OptionDescription(name='ejabberd', doc='ejabberd', properties=frozenset({'normal'}), children=[option_7, option_8, option_9])
+option_5 = OptionDescription(name='extra', doc='extra', children=[option_6])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_5])
diff --git a/tests/flattener_dicos/60extra_separators/result/00-base.xml b/tests/flattener_dicos/60extra_separators/result/00-base.xml
deleted file mode 100644
index 7a59f7239..000000000
--- a/tests/flattener_dicos/60extra_separators/result/00-base.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
-
- normal
-
- mandatory
- normal
- Exportation de la base de ejabberd
-
-
- none
- daily
- weekly
- monthly
- mandatory
- normal
-
- non
- rougail.general.activer_ejabberd
- none
- daily
-
-
-
- pre
- post
- mandatory
- normal
- pre
-
-
-
-
diff --git a/tests/flattener_dicos/60extra_separators/tiramisu/base.py b/tests/flattener_dicos/60extra_separators/tiramisu/base.py
index 337cb092a..8408bdc16 100644
--- a/tests/flattener_dicos/60extra_separators/tiramisu/base.py
+++ b/tests/flattener_dicos/60extra_separators/tiramisu/base.py
@@ -2,14 +2,14 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_4 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='activer_ejabberd', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_7 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='description', multi=False, name='description', default='Exportation de la base de ejabberd')
-option_8 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='day', multi=False, name='day', default=Calculation(func.calc_multi_condition, Params((ParamValue("non")), kwargs={'condition_1': ParamOption(option_4, notraisepropertyerror=True, todict=False), 'match': ParamValue("none"), 'mismatch': ParamValue("daily")})), values=('none', 'daily', 'weekly', 'monthly'))
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='activer_ejabberd', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_7 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='description', doc='description', multi=False, default='Exportation de la base de ejabberd')
+option_8 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='day', doc='day', multi=False, default=Calculation(func.calc_multi_condition, Params((ParamValue("non")), kwargs={'condition_1': ParamOption(option_4, notraisepropertyerror=True, todict=False), 'match': ParamValue("none"), 'mismatch': ParamValue("daily")})), values=('none', 'daily', 'weekly', 'monthly'))
option_8.impl_set_information("separator", "Séparateur")
-option_9 = ChoiceOption(properties=frozenset(['mandatory', 'normal']), doc='mode', multi=False, name='mode', default='pre', values=('pre', 'post'))
-option_6 = OptionDescription(doc='ejabberd', name='ejabberd', properties=frozenset(['normal']), children=[option_7, option_8, option_9])
-option_5 = OptionDescription(doc='extra', name='extra', children=[option_6])
+option_9 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode', doc='mode', multi=False, default='pre', values=('pre', 'post'))
+option_6 = OptionDescription(name='ejabberd', doc='ejabberd', properties=frozenset({'normal'}), children=[option_7, option_8, option_9])
+option_5 = OptionDescription(name='extra', doc='extra', children=[option_6])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_5])
diff --git a/tests/flattener_dicos/60familyaction/result/00-base.xml b/tests/flattener_dicos/60familyaction/result/00-base.xml
deleted file mode 100644
index 02f93e604..000000000
--- a/tests/flattener_dicos/60familyaction/result/00-base.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
-
- normal
-
- mandatory
- normal
- 0
-
-
-
-
diff --git a/tests/flattener_dicos/60familyaction/tiramisu/base.py b/tests/flattener_dicos/60familyaction/tiramisu/base.py
index 9122bae2e..e789442cc 100644
--- a/tests/flattener_dicos/60familyaction/tiramisu/base.py
+++ b/tests/flattener_dicos/60familyaction/tiramisu/base.py
@@ -2,10 +2,10 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_6 = IntOption(properties=frozenset(['mandatory', 'normal']), doc='délai en minutes avant lancement', multi=False, name='delay', default=0)
-option_5 = OptionDescription(doc='test', name='test', properties=frozenset(['normal']), children=[option_6])
-option_4 = OptionDescription(doc='extra', name='extra', children=[option_5])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_6 = IntOption(properties=frozenset({'mandatory', 'normal'}), name='delay', doc='délai en minutes avant lancement', multi=False, default=0)
+option_5 = OptionDescription(name='test', doc='test', properties=frozenset({'normal'}), children=[option_6])
+option_4 = OptionDescription(name='extra', doc='extra', children=[option_5])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_4])
diff --git a/tests/flattener_dicos/60familyaction_accent/result/00-base.xml b/tests/flattener_dicos/60familyaction_accent/result/00-base.xml
deleted file mode 100644
index 02f93e604..000000000
--- a/tests/flattener_dicos/60familyaction_accent/result/00-base.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
-
- normal
-
- mandatory
- normal
- 0
-
-
-
-
diff --git a/tests/flattener_dicos/60familyaction_accent/tiramisu/base.py b/tests/flattener_dicos/60familyaction_accent/tiramisu/base.py
index 9122bae2e..e789442cc 100644
--- a/tests/flattener_dicos/60familyaction_accent/tiramisu/base.py
+++ b/tests/flattener_dicos/60familyaction_accent/tiramisu/base.py
@@ -2,10 +2,10 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_6 = IntOption(properties=frozenset(['mandatory', 'normal']), doc='délai en minutes avant lancement', multi=False, name='delay', default=0)
-option_5 = OptionDescription(doc='test', name='test', properties=frozenset(['normal']), children=[option_6])
-option_4 = OptionDescription(doc='extra', name='extra', children=[option_5])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_6 = IntOption(properties=frozenset({'mandatory', 'normal'}), name='delay', doc='délai en minutes avant lancement', multi=False, default=0)
+option_5 = OptionDescription(name='test', doc='test', properties=frozenset({'normal'}), children=[option_6])
+option_4 = OptionDescription(name='extra', doc='extra', children=[option_5])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_4])
diff --git a/tests/flattener_dicos/60familyaction_mandatory/result/00-base.xml b/tests/flattener_dicos/60familyaction_mandatory/result/00-base.xml
deleted file mode 100644
index f9c1bcb34..000000000
--- a/tests/flattener_dicos/60familyaction_mandatory/result/00-base.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
-
- basic
-
- mandatory
- normal
- 0
-
-
- mandatory
- basic
-
-
-
-
diff --git a/tests/flattener_dicos/60familyaction_mandatory/tiramisu/base.py b/tests/flattener_dicos/60familyaction_mandatory/tiramisu/base.py
index 0de65c860..ba2f62547 100644
--- a/tests/flattener_dicos/60familyaction_mandatory/tiramisu/base.py
+++ b/tests/flattener_dicos/60familyaction_mandatory/tiramisu/base.py
@@ -2,11 +2,11 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_6 = IntOption(properties=frozenset(['mandatory', 'normal']), doc='délai en minutes avant lancement', multi=False, name='delay', default=0)
-option_7 = IntOption(properties=frozenset(['mandatory', 'basic']), doc='day avant lancement', multi=False, name='day')
-option_5 = OptionDescription(doc='test', name='test', properties=frozenset(['basic']), children=[option_6, option_7])
-option_4 = OptionDescription(doc='extra', name='extra', children=[option_5])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_6 = IntOption(properties=frozenset({'mandatory', 'normal'}), name='delay', doc='délai en minutes avant lancement', multi=False, default=0)
+option_7 = IntOption(properties=frozenset({'basic', 'mandatory'}), name='day', doc='day avant lancement', multi=False)
+option_5 = OptionDescription(name='test', doc='test', properties=frozenset({'basic'}), children=[option_6, option_7])
+option_4 = OptionDescription(name='extra', doc='extra', children=[option_5])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_4])
diff --git a/tests/flattener_dicos/70container_files/result/00-base.xml b/tests/flattener_dicos/70container_files/result/00-base.xml
deleted file mode 100644
index 3e6ccef9e..000000000
--- a/tests/flattener_dicos/70container_files/result/00-base.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
- hidden
-
-
-
-
- root
-
-
- 0644
-
-
- /etc/mailname
-
-
- root
-
-
- mailname
-
-
- True
-
-
- True
-
-
-
-
- root
-
-
- 0644
-
-
- /rougail.conf
-
-
- root
-
-
- rougail.conf
-
-
- True
-
-
- True
-
-
-
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- oui
-
-
-
-
diff --git a/tests/flattener_dicos/70container_files/tiramisu/base.py b/tests/flattener_dicos/70container_files/tiramisu/base.py
index fa71a54a1..a012e8ebc 100644
--- a/tests/flattener_dicos/70container_files/tiramisu/base.py
+++ b/tests/flattener_dicos/70container_files/tiramisu/base.py
@@ -2,26 +2,26 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='oui', values=('oui', 'non'))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_8 = StrOption(properties=frozenset([]), doc='group', multi=False, name='group', default='root')
-option_9 = StrOption(properties=frozenset([]), doc='mode', multi=False, name='mode', default='0644')
-option_10 = StrOption(properties=frozenset([]), doc='name', multi=False, name='name', default='/etc/mailname')
-option_11 = StrOption(properties=frozenset([]), doc='owner', multi=False, name='owner', default='root')
-option_12 = StrOption(properties=frozenset([]), doc='source', multi=False, name='source', default='mailname')
-option_13 = BoolOption(default=True, properties=frozenset([]), doc='templating', multi=False, name='templating')
-option_14 = BoolOption(default=True, properties=frozenset([]), doc='activate', multi=False, name='activate')
-option_7 = OptionDescription(doc='mailname', name='mailname', children=[option_8, option_9, option_10, option_11, option_12, option_13, option_14])
-option_16 = StrOption(properties=frozenset([]), doc='group', multi=False, name='group', default='root')
-option_17 = StrOption(properties=frozenset([]), doc='mode', multi=False, name='mode', default='0644')
-option_18 = StrOption(properties=frozenset([]), doc='name', multi=False, name='name', default='/rougail.conf')
-option_19 = StrOption(properties=frozenset([]), doc='owner', multi=False, name='owner', default='root')
-option_20 = StrOption(properties=frozenset([]), doc='source', multi=False, name='source', default='rougail.conf')
-option_21 = BoolOption(default=True, properties=frozenset([]), doc='templating', multi=False, name='templating')
-option_22 = BoolOption(default=True, properties=frozenset([]), doc='activate', multi=False, name='activate')
-option_15 = OptionDescription(doc='rougail.conf', name='rougail_conf', children=[option_16, option_17, option_18, option_19, option_20, option_21, option_22])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='oui', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_8 = StrOption(name='group', doc='group', multi=False, default='root')
+option_9 = StrOption(name='mode', doc='mode', multi=False, default='0644')
+option_10 = StrOption(name='name', doc='name', multi=False, default='/etc/mailname')
+option_11 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_12 = StrOption(name='source', doc='source', multi=False, default='mailname')
+option_13 = BoolOption(default=True, name='templating', doc='templating', multi=False)
+option_14 = BoolOption(default=True, name='activate', doc='activate', multi=False)
+option_7 = OptionDescription(name='mailname', doc='mailname', children=[option_8, option_9, option_10, option_11, option_12, option_13, option_14])
+option_16 = StrOption(name='group', doc='group', multi=False, default='root')
+option_17 = StrOption(name='mode', doc='mode', multi=False, default='0644')
+option_18 = StrOption(name='name', doc='name', multi=False, default='/rougail.conf')
+option_19 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_20 = StrOption(name='source', doc='source', multi=False, default='rougail.conf')
+option_21 = BoolOption(default=True, name='templating', doc='templating', multi=False)
+option_22 = BoolOption(default=True, name='activate', doc='activate', multi=False)
+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(doc='test', name='test', children=[option_6])
-option_4 = OptionDescription(name='services', doc='services', properties=frozenset(['hidden']), children=[option_5])
+option_5 = OptionDescription(name='test', doc='test', children=[option_6])
+option_4 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_5])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_4])
diff --git a/tests/flattener_dicos/70container_files_symlink_multi/result/00-base.xml b/tests/flattener_dicos/70container_files_symlink_multi/result/00-base.xml
deleted file mode 100644
index 986a8e480..000000000
--- a/tests/flattener_dicos/70container_files_symlink_multi/result/00-base.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-
-
-
- hidden
-
-
-
-
- root
-
-
- 0644
-
-
-
- root
-
-
- mailname
-
-
- True
-
-
- True
-
-
-
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- oui
-
-
- mandatory
- normal
- /etc/mailname
- /etc/mailname2
-
-
-
-
diff --git a/tests/flattener_dicos/70container_files_symlink_multi/tiramisu/base.py b/tests/flattener_dicos/70container_files_symlink_multi/tiramisu/base.py
index bfdf09100..8d3caddc6 100644
--- a/tests/flattener_dicos/70container_files_symlink_multi/tiramisu/base.py
+++ b/tests/flattener_dicos/70container_files_symlink_multi/tiramisu/base.py
@@ -2,19 +2,19 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='oui', values=('oui', 'non'))
-option_4 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='file_name', multi=True, name='file_name', default=['/etc/mailname', '/etc/mailname2'], default_multi='/etc/mailname2')
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_9 = StrOption(properties=frozenset([]), doc='group', multi=False, name='group', default='root')
-option_10 = StrOption(properties=frozenset([]), doc='mode', multi=False, name='mode', default='0644')
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='oui', values=('oui', 'non'))
+option_4 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='file_name', doc='file_name', multi=True, default=['/etc/mailname', '/etc/mailname2'], default_multi='/etc/mailname2')
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_9 = StrOption(name='group', doc='group', multi=False, default='root')
+option_10 = StrOption(name='mode', doc='mode', multi=False, default='0644')
option_11 = SymLinkOption(name='name', opt=option_4)
-option_12 = StrOption(properties=frozenset([]), doc='owner', multi=False, name='owner', default='root')
-option_13 = StrOption(properties=frozenset([]), doc='source', multi=False, name='source', default='mailname')
-option_14 = BoolOption(default=True, properties=frozenset([]), doc='templating', multi=False, name='templating')
-option_15 = BoolOption(default=True, properties=frozenset([]), doc='activate', multi=False, name='activate')
-option_8 = OptionDescription(doc='mailname', name='mailname', children=[option_9, option_10, option_11, option_12, option_13, option_14, option_15])
+option_12 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_13 = StrOption(name='source', doc='source', multi=False, default='mailname')
+option_14 = BoolOption(default=True, name='templating', doc='templating', multi=False)
+option_15 = BoolOption(default=True, name='activate', doc='activate', multi=False)
+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(doc='test', name='test', children=[option_7])
-option_5 = OptionDescription(name='services', doc='services', properties=frozenset(['hidden']), children=[option_6])
+option_6 = OptionDescription(name='test', doc='test', children=[option_7])
+option_5 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_6])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_5])
diff --git a/tests/flattener_dicos/70container_files_symlink_multi_variable/result/00-base.xml b/tests/flattener_dicos/70container_files_symlink_multi_variable/result/00-base.xml
deleted file mode 100644
index 1ed335541..000000000
--- a/tests/flattener_dicos/70container_files_symlink_multi_variable/result/00-base.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-
-
-
- hidden
-
-
-
-
- root
-
-
- 0644
-
-
-
- root
-
-
- mailname
-
-
- True
-
-
-
- True
-
-
-
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- oui
-
-
- mandatory
- normal
- /etc/mailname
- /etc/mailname2
-
-
- mandatory
- normal
- mailname
- mailname2
-
-
-
-
diff --git a/tests/flattener_dicos/70container_files_symlink_multi_variable/tiramisu/base.py b/tests/flattener_dicos/70container_files_symlink_multi_variable/tiramisu/base.py
index 44b7d300d..3fdeb247a 100644
--- a/tests/flattener_dicos/70container_files_symlink_multi_variable/tiramisu/base.py
+++ b/tests/flattener_dicos/70container_files_symlink_multi_variable/tiramisu/base.py
@@ -2,21 +2,21 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='oui', values=('oui', 'non'))
-option_4 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='file_name', multi=True, name='file_name', default=['/etc/mailname', '/etc/mailname2'], default_multi='/etc/mailname2')
-option_5 = StrOption(properties=frozenset(['mandatory', 'normal']), doc='var', multi=True, name='var', default=['mailname', 'mailname2'], default_multi='mailname2')
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['normal']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_10 = StrOption(properties=frozenset([]), doc='group', multi=False, name='group', default='root')
-option_11 = StrOption(properties=frozenset([]), doc='mode', multi=False, name='mode', default='0644')
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='oui', values=('oui', 'non'))
+option_4 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='file_name', doc='file_name', multi=True, default=['/etc/mailname', '/etc/mailname2'], default_multi='/etc/mailname2')
+option_5 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='var', doc='var', multi=True, default=['mailname', 'mailname2'], default_multi='mailname2')
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_10 = StrOption(name='group', doc='group', multi=False, default='root')
+option_11 = StrOption(name='mode', doc='mode', multi=False, default='0644')
option_12 = SymLinkOption(name='name', opt=option_4)
-option_13 = StrOption(properties=frozenset([]), doc='owner', multi=False, name='owner', default='root')
-option_14 = StrOption(properties=frozenset([]), doc='source', multi=False, name='source', default='mailname')
-option_15 = BoolOption(default=True, properties=frozenset([]), doc='templating', multi=False, name='templating')
+option_13 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_14 = StrOption(name='source', doc='source', multi=False, default='mailname')
+option_15 = BoolOption(default=True, name='templating', doc='templating', multi=False)
option_16 = SymLinkOption(name='variable', opt=option_5)
-option_17 = BoolOption(default=True, properties=frozenset([]), doc='activate', multi=False, name='activate')
-option_9 = OptionDescription(doc='mailname', name='mailname', children=[option_10, option_11, option_12, option_13, option_14, option_15, option_16, option_17])
+option_17 = BoolOption(default=True, name='activate', doc='activate', multi=False)
+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(doc='test', name='test', children=[option_8])
-option_6 = OptionDescription(name='services', doc='services', properties=frozenset(['hidden']), children=[option_7])
+option_7 = OptionDescription(name='test', doc='test', children=[option_8])
+option_6 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_7])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_6])
diff --git a/tests/flattener_dicos/70container_filesmulti/result/00-base.xml b/tests/flattener_dicos/70container_filesmulti/result/00-base.xml
deleted file mode 100644
index 2393fd26a..000000000
--- a/tests/flattener_dicos/70container_filesmulti/result/00-base.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
- hidden
-
-
-
-
- root
-
-
- 0644
-
-
- /etc/mailname
-
-
- root
-
-
- mailname
-
-
- True
-
-
- True
-
-
-
-
- root
-
-
- 0644
-
-
- /etc/mailname2
-
-
- root
-
-
- mailname2
-
-
- True
-
-
- True
-
-
-
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- oui
-
-
-
-
diff --git a/tests/flattener_dicos/70container_filesmulti/tiramisu/base.py b/tests/flattener_dicos/70container_filesmulti/tiramisu/base.py
index 0ec5b6d1a..d89d8a981 100644
--- a/tests/flattener_dicos/70container_filesmulti/tiramisu/base.py
+++ b/tests/flattener_dicos/70container_filesmulti/tiramisu/base.py
@@ -2,26 +2,26 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='oui', values=('oui', 'non'))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_8 = StrOption(properties=frozenset([]), doc='group', multi=False, name='group', default='root')
-option_9 = StrOption(properties=frozenset([]), doc='mode', multi=False, name='mode', default='0644')
-option_10 = StrOption(properties=frozenset([]), doc='name', multi=False, name='name', default='/etc/mailname')
-option_11 = StrOption(properties=frozenset([]), doc='owner', multi=False, name='owner', default='root')
-option_12 = StrOption(properties=frozenset([]), doc='source', multi=False, name='source', default='mailname')
-option_13 = BoolOption(default=True, properties=frozenset([]), doc='templating', multi=False, name='templating')
-option_14 = BoolOption(default=True, properties=frozenset([]), doc='activate', multi=False, name='activate')
-option_7 = OptionDescription(doc='mailname', name='mailname', children=[option_8, option_9, option_10, option_11, option_12, option_13, option_14])
-option_16 = StrOption(properties=frozenset([]), doc='group', multi=False, name='group', default='root')
-option_17 = StrOption(properties=frozenset([]), doc='mode', multi=False, name='mode', default='0644')
-option_18 = StrOption(properties=frozenset([]), doc='name', multi=False, name='name', default='/etc/mailname2')
-option_19 = StrOption(properties=frozenset([]), doc='owner', multi=False, name='owner', default='root')
-option_20 = StrOption(properties=frozenset([]), doc='source', multi=False, name='source', default='mailname2')
-option_21 = BoolOption(default=True, properties=frozenset([]), doc='templating', multi=False, name='templating')
-option_22 = BoolOption(default=True, properties=frozenset([]), doc='activate', multi=False, name='activate')
-option_15 = OptionDescription(doc='mailname2', name='mailname2', children=[option_16, option_17, option_18, option_19, option_20, option_21, option_22])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='oui', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_8 = StrOption(name='group', doc='group', multi=False, default='root')
+option_9 = StrOption(name='mode', doc='mode', multi=False, default='0644')
+option_10 = StrOption(name='name', doc='name', multi=False, default='/etc/mailname')
+option_11 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_12 = StrOption(name='source', doc='source', multi=False, default='mailname')
+option_13 = BoolOption(default=True, name='templating', doc='templating', multi=False)
+option_14 = BoolOption(default=True, name='activate', doc='activate', multi=False)
+option_7 = OptionDescription(name='mailname', doc='mailname', children=[option_8, option_9, option_10, option_11, option_12, option_13, option_14])
+option_16 = StrOption(name='group', doc='group', multi=False, default='root')
+option_17 = StrOption(name='mode', doc='mode', multi=False, default='0644')
+option_18 = StrOption(name='name', doc='name', multi=False, default='/etc/mailname2')
+option_19 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_20 = StrOption(name='source', doc='source', multi=False, default='mailname2')
+option_21 = BoolOption(default=True, name='templating', doc='templating', multi=False)
+option_22 = BoolOption(default=True, name='activate', doc='activate', multi=False)
+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(doc='test', name='test', children=[option_6])
-option_4 = OptionDescription(name='services', doc='services', properties=frozenset(['hidden']), children=[option_5])
+option_5 = OptionDescription(name='test', doc='test', children=[option_6])
+option_4 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_5])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_4])
diff --git a/tests/flattener_dicos/70container_filesredefine/result/00-base.xml b/tests/flattener_dicos/70container_filesredefine/result/00-base.xml
deleted file mode 100644
index 7e6af2c25..000000000
--- a/tests/flattener_dicos/70container_filesredefine/result/00-base.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
- hidden
-
-
-
-
- root
-
-
- 0644
-
-
- /etc/mailname
-
-
- root
-
-
- mailname.new
-
-
- True
-
-
- True
-
-
-
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- oui
-
-
-
-
diff --git a/tests/flattener_dicos/70container_filesredefine/tiramisu/base.py b/tests/flattener_dicos/70container_filesredefine/tiramisu/base.py
index 8029b4d39..7e4b48dd4 100644
--- a/tests/flattener_dicos/70container_filesredefine/tiramisu/base.py
+++ b/tests/flattener_dicos/70container_filesredefine/tiramisu/base.py
@@ -2,18 +2,18 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='oui', values=('oui', 'non'))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_8 = StrOption(properties=frozenset([]), doc='group', multi=False, name='group', default='root')
-option_9 = StrOption(properties=frozenset([]), doc='mode', multi=False, name='mode', default='0644')
-option_10 = StrOption(properties=frozenset([]), doc='name', multi=False, name='name', default='/etc/mailname')
-option_11 = StrOption(properties=frozenset([]), doc='owner', multi=False, name='owner', default='root')
-option_12 = StrOption(properties=frozenset([]), doc='source', multi=False, name='source', default='mailname.new')
-option_13 = BoolOption(default=True, properties=frozenset([]), doc='templating', multi=False, name='templating')
-option_14 = BoolOption(default=True, properties=frozenset([]), doc='activate', multi=False, name='activate')
-option_7 = OptionDescription(doc='mailname.new', name='mailname_new', children=[option_8, option_9, option_10, option_11, option_12, option_13, option_14])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='oui', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_8 = StrOption(name='group', doc='group', multi=False, default='root')
+option_9 = StrOption(name='mode', doc='mode', multi=False, default='0644')
+option_10 = StrOption(name='name', doc='name', multi=False, default='/etc/mailname')
+option_11 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_12 = StrOption(name='source', doc='source', multi=False, default='mailname.new')
+option_13 = BoolOption(default=True, name='templating', doc='templating', multi=False)
+option_14 = BoolOption(default=True, name='activate', doc='activate', multi=False)
+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(doc='test', name='test', children=[option_6])
-option_4 = OptionDescription(name='services', doc='services', properties=frozenset(['hidden']), children=[option_5])
+option_5 = OptionDescription(name='test', doc='test', children=[option_6])
+option_4 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_5])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_4])
diff --git a/tests/flattener_dicos/70container_new/result/00-base.xml b/tests/flattener_dicos/70container_new/result/00-base.xml
deleted file mode 100644
index 0c336ee61..000000000
--- a/tests/flattener_dicos/70container_new/result/00-base.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
- hidden
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- oui
-
-
-
-
diff --git a/tests/flattener_dicos/70container_new/tiramisu/base.py b/tests/flattener_dicos/70container_new/tiramisu/base.py
index 26efa8c60..6847a7279 100644
--- a/tests/flattener_dicos/70container_new/tiramisu/base.py
+++ b/tests/flattener_dicos/70container_new/tiramisu/base.py
@@ -2,9 +2,9 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='oui', values=('oui', 'non'))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_5 = OptionDescription(doc='test', name='test', children=[])
-option_4 = OptionDescription(name='services', doc='services', properties=frozenset(['hidden']), children=[option_5])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='oui', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_5 = OptionDescription(name='test', doc='test', children=[])
+option_4 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_5])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_4])
diff --git a/tests/flattener_dicos/70container_newnocont/result/00-base.xml b/tests/flattener_dicos/70container_newnocont/result/00-base.xml
deleted file mode 100644
index 40fb96e88..000000000
--- a/tests/flattener_dicos/70container_newnocont/result/00-base.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
- hidden
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
diff --git a/tests/flattener_dicos/70container_newnocont/tiramisu/base.py b/tests/flattener_dicos/70container_newnocont/tiramisu/base.py
index 94b830792..4cd101586 100644
--- a/tests/flattener_dicos/70container_newnocont/tiramisu/base.py
+++ b/tests/flattener_dicos/70container_newnocont/tiramisu/base.py
@@ -2,9 +2,9 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='non', values=('oui', 'non'))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_5 = OptionDescription(doc='test', name='test', children=[])
-option_4 = OptionDescription(name='services', doc='services', properties=frozenset(['hidden']), children=[option_5])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_5 = OptionDescription(name='test', doc='test', children=[])
+option_4 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_5])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_4])
diff --git a/tests/flattener_dicos/70container_newwithip/result/00-base.xml b/tests/flattener_dicos/70container_newwithip/result/00-base.xml
deleted file mode 100644
index 607486059..000000000
--- a/tests/flattener_dicos/70container_newwithip/result/00-base.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
- hidden
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- oui
-
-
- normal
-
-
-
-
diff --git a/tests/flattener_dicos/70container_newwithip/tiramisu/base.py b/tests/flattener_dicos/70container_newwithip/tiramisu/base.py
index 80512cc7d..2ff70949b 100644
--- a/tests/flattener_dicos/70container_newwithip/tiramisu/base.py
+++ b/tests/flattener_dicos/70container_newwithip/tiramisu/base.py
@@ -2,10 +2,10 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='oui', values=('oui', 'non'))
-option_4 = IPOption(allow_reserved=True, properties=frozenset(['normal']), doc='No change', multi=False, name='adresse_ip_test')
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['normal']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_6 = OptionDescription(doc='test', name='test', children=[])
-option_5 = OptionDescription(name='services', doc='services', properties=frozenset(['hidden']), children=[option_6])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='oui', values=('oui', 'non'))
+option_4 = IPOption(allow_reserved=True, properties=frozenset({'normal'}), name='adresse_ip_test', doc='No change', multi=False)
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_6 = OptionDescription(name='test', doc='test', children=[])
+option_5 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_6])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_5])
diff --git a/tests/flattener_dicos/70container_pathaccess/result/00-base.xml b/tests/flattener_dicos/70container_pathaccess/result/00-base.xml
deleted file mode 100644
index c28cae294..000000000
--- a/tests/flattener_dicos/70container_pathaccess/result/00-base.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
- hidden
-
-
-
-
- auto
-
-
-
-
- True
-
-
-
-
-
-
-
- basic
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- oui
-
-
- mandatory
- basic
-
-
- mandatory
- basic
-
-
-
-
diff --git a/tests/flattener_dicos/70container_pathaccess/tiramisu/base.py b/tests/flattener_dicos/70container_pathaccess/tiramisu/base.py
index 8c65112da..a40376fc5 100644
--- a/tests/flattener_dicos/70container_pathaccess/tiramisu/base.py
+++ b/tests/flattener_dicos/70container_pathaccess/tiramisu/base.py
@@ -2,17 +2,17 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='oui', values=('oui', 'non'))
-option_4 = NetmaskOption(properties=frozenset(['mandatory', 'basic']), doc='Masque de l\'IP du réseau de l\'esclave', multi=False, name='nut_monitor_netmask')
-option_5 = NetworkOption(properties=frozenset(['mandatory', 'basic']), doc='Adresse IP du réseau de l\'esclave', multi=False, name='nut_monitor_host')
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['basic']), children=[option_3, option_4, option_5])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_10 = StrOption(properties=frozenset([]), doc='interface', multi=False, name='interface', default='auto')
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='oui', values=('oui', 'non'))
+option_4 = NetmaskOption(properties=frozenset({'basic', 'mandatory'}), name='nut_monitor_netmask', doc='Masque de l\'IP du réseau de l\'esclave', multi=False)
+option_5 = NetworkOption(properties=frozenset({'basic', 'mandatory'}), name='nut_monitor_host', doc='Adresse IP du réseau de l\'esclave', multi=False)
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'basic'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_10 = StrOption(name='interface', doc='interface', multi=False, default='auto')
option_11 = SymLinkOption(name='name', opt=option_5)
option_12 = SymLinkOption(name='netmask', opt=option_4)
-option_13 = BoolOption(default=True, properties=frozenset([]), doc='activate', multi=False, name='activate')
-option_9 = OptionDescription(doc='nut_monitor_host', name='nut_monitor_host', children=[option_10, option_11, option_12, option_13])
+option_13 = BoolOption(default=True, name='activate', doc='activate', multi=False)
+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(doc='nut', name='nut', children=[option_8])
-option_6 = OptionDescription(name='services', doc='services', properties=frozenset(['hidden']), children=[option_7])
+option_7 = OptionDescription(name='nut', doc='nut', children=[option_8])
+option_6 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_7])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_6])
diff --git a/tests/flattener_dicos/70container_pathaccess_leadership/result/00-base.xml b/tests/flattener_dicos/70container_pathaccess_leadership/result/00-base.xml
deleted file mode 100644
index 8eb7d53b1..000000000
--- a/tests/flattener_dicos/70container_pathaccess_leadership/result/00-base.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
- hidden
-
-
-
-
- auto
-
-
-
-
- True
-
-
-
-
-
-
-
- basic
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- oui
-
-
- basic
-
- mandatory
-
-
- mandatory
- basic
-
-
-
-
-
diff --git a/tests/flattener_dicos/70container_pathaccess_leadership/tiramisu/base.py b/tests/flattener_dicos/70container_pathaccess_leadership/tiramisu/base.py
index 2a75d88a3..d8f2be591 100644
--- a/tests/flattener_dicos/70container_pathaccess_leadership/tiramisu/base.py
+++ b/tests/flattener_dicos/70container_pathaccess_leadership/tiramisu/base.py
@@ -2,18 +2,18 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='oui', values=('oui', 'non'))
-option_5 = NetmaskOption(properties=frozenset(['mandatory']), doc='Masque de l\'IP du réseau de l\'esclave', multi=True, name='nut_monitor_netmask')
-option_6 = NetworkOption(properties=frozenset(['mandatory', 'basic']), doc='Adresse IP du réseau de l\'esclave', multi=True, name='nut_monitor_host')
-option_4 = Leadership(doc='Masque de l\'IP du réseau de l\'esclave', name='nut_monitor_netmask', properties=frozenset(['basic']), children=[option_5, option_6])
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['basic']), children=[option_3, option_4])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_11 = StrOption(properties=frozenset([]), doc='interface', multi=False, name='interface', default='auto')
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='oui', values=('oui', 'non'))
+option_5 = NetmaskOption(properties=frozenset({'mandatory'}), name='nut_monitor_netmask', doc='Masque de l\'IP du réseau de l\'esclave', multi=True)
+option_6 = NetworkOption(properties=frozenset({'basic', 'mandatory'}), name='nut_monitor_host', doc='Adresse IP du réseau de l\'esclave', multi=True)
+option_4 = Leadership(name='nut_monitor_netmask', doc='Masque de l\'IP du réseau de l\'esclave', properties=frozenset({'basic'}), children=[option_5, option_6])
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'basic'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_11 = StrOption(name='interface', doc='interface', multi=False, default='auto')
option_12 = SymLinkOption(name='name', opt=option_6)
option_13 = SymLinkOption(name='netmask', opt=option_5)
-option_14 = BoolOption(default=True, properties=frozenset([]), doc='activate', multi=False, name='activate')
-option_10 = OptionDescription(doc='nut_monitor_host', name='nut_monitor_host', children=[option_11, option_12, option_13, option_14])
+option_14 = BoolOption(default=True, name='activate', doc='activate', multi=False)
+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(doc='ntp', name='ntp', children=[option_9])
-option_7 = OptionDescription(name='services', doc='services', properties=frozenset(['hidden']), children=[option_8])
+option_8 = OptionDescription(name='ntp', doc='ntp', children=[option_9])
+option_7 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_8])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_7])
diff --git a/tests/flattener_dicos/70container_save/result/00-base.xml b/tests/flattener_dicos/70container_save/result/00-base.xml
deleted file mode 100644
index 4110d3e11..000000000
--- a/tests/flattener_dicos/70container_save/result/00-base.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- oui
-
-
-
-
diff --git a/tests/flattener_dicos/70container_save/tiramisu/base.py b/tests/flattener_dicos/70container_save/tiramisu/base.py
index 89840741f..f3992cfa5 100644
--- a/tests/flattener_dicos/70container_save/tiramisu/base.py
+++ b/tests/flattener_dicos/70container_save/tiramisu/base.py
@@ -2,7 +2,7 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='oui', values=('oui', 'non'))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='oui', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/flattener_dicos/70container_serviceaccess/result/00-base.xml b/tests/flattener_dicos/70container_serviceaccess/result/00-base.xml
deleted file mode 100644
index 0bcf2d19e..000000000
--- a/tests/flattener_dicos/70container_serviceaccess/result/00-base.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
- hidden
-
-
-
-
- 123
-
-
- udp
-
-
- True
-
-
-
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- oui
-
-
-
-
diff --git a/tests/flattener_dicos/70container_serviceaccess/tiramisu/base.py b/tests/flattener_dicos/70container_serviceaccess/tiramisu/base.py
index 4dba8f53b..44dbc798a 100644
--- a/tests/flattener_dicos/70container_serviceaccess/tiramisu/base.py
+++ b/tests/flattener_dicos/70container_serviceaccess/tiramisu/base.py
@@ -2,14 +2,14 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='oui', values=('oui', 'non'))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_8 = PortOption(allow_private=True, properties=frozenset([]), doc='name', multi=False, name='name', default='123')
-option_9 = StrOption(properties=frozenset([]), doc='protocol', multi=False, name='protocol', default='udp')
-option_10 = BoolOption(default=True, properties=frozenset([]), doc='activate', multi=False, name='activate')
-option_7 = OptionDescription(doc='123', name='123', children=[option_8, option_9, option_10])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='oui', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_8 = PortOption(allow_private=True, name='name', doc='name', multi=False, default='123')
+option_9 = StrOption(name='protocol', doc='protocol', multi=False, default='udp')
+option_10 = BoolOption(default=True, name='activate', doc='activate', multi=False)
+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(doc='ntp', name='ntp', children=[option_6])
-option_4 = OptionDescription(name='services', doc='services', properties=frozenset(['hidden']), children=[option_5])
+option_5 = OptionDescription(name='ntp', doc='ntp', children=[option_6])
+option_4 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_5])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_4])
diff --git a/tests/flattener_dicos/70container_servicerestriction/result/00-base.xml b/tests/flattener_dicos/70container_servicerestriction/result/00-base.xml
deleted file mode 100644
index 28dd32540..000000000
--- a/tests/flattener_dicos/70container_servicerestriction/result/00-base.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
- hidden
-
-
-
-
- eth0
-
-
- 192.168.1.1
-
-
- 255.255.255.255
-
-
- True
-
-
-
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- oui
-
-
-
-
diff --git a/tests/flattener_dicos/70container_servicerestriction/tiramisu/base.py b/tests/flattener_dicos/70container_servicerestriction/tiramisu/base.py
index 82aef0a42..8a3c7c57e 100644
--- a/tests/flattener_dicos/70container_servicerestriction/tiramisu/base.py
+++ b/tests/flattener_dicos/70container_servicerestriction/tiramisu/base.py
@@ -2,15 +2,15 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='oui', values=('oui', 'non'))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_8 = StrOption(properties=frozenset([]), doc='interface', multi=False, name='interface', default='eth0')
-option_9 = NetworkOption(properties=frozenset([]), doc='name', multi=False, name='name', default='192.168.1.1')
-option_10 = NetmaskOption(properties=frozenset([]), doc='netmask', multi=False, name='netmask', default='255.255.255.255')
-option_11 = BoolOption(default=True, properties=frozenset([]), doc='activate', multi=False, name='activate')
-option_7 = OptionDescription(doc='192.168.1.1', name='192_168_1_1', children=[option_8, option_9, option_10, option_11])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='oui', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_8 = StrOption(name='interface', doc='interface', multi=False, default='eth0')
+option_9 = NetworkOption(name='name', doc='name', multi=False, default='192.168.1.1')
+option_10 = NetmaskOption(name='netmask', doc='netmask', multi=False, default='255.255.255.255')
+option_11 = BoolOption(default=True, name='activate', doc='activate', multi=False)
+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(doc='testsrv', name='testsrv', children=[option_6])
-option_4 = OptionDescription(name='services', doc='services', properties=frozenset(['hidden']), children=[option_5])
+option_5 = OptionDescription(name='testsrv', doc='testsrv', children=[option_6])
+option_4 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_5])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_4])
diff --git a/tests/flattener_dicos/70container_services/result/00-base.xml b/tests/flattener_dicos/70container_services/result/00-base.xml
deleted file mode 100644
index 5a5918e30..000000000
--- a/tests/flattener_dicos/70container_services/result/00-base.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
- hidden
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- oui
-
-
-
-
diff --git a/tests/flattener_dicos/70container_services/tiramisu/base.py b/tests/flattener_dicos/70container_services/tiramisu/base.py
index ea0725dc5..7fd56f372 100644
--- a/tests/flattener_dicos/70container_services/tiramisu/base.py
+++ b/tests/flattener_dicos/70container_services/tiramisu/base.py
@@ -2,9 +2,9 @@ from tiramisu import *
from rougail.tiramisu import ConvertDynOptionDescription
import imp
func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
-option_3 = ChoiceOption(properties=frozenset(['force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal']), doc='No change', multi=False, name='mode_conteneur_actif', default='oui', values=('oui', 'non'))
-option_2 = OptionDescription(doc='général', name='general', properties=frozenset(['normal']), children=[option_3])
-option_1 = OptionDescription(doc='rougail', name='rougail', children=[option_2])
-option_5 = OptionDescription(doc='testsrv', name='testsrv', children=[])
-option_4 = OptionDescription(name='services', doc='services', properties=frozenset(['hidden']), children=[option_5])
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='oui', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_5 = OptionDescription(name='testsrv', doc='testsrv', children=[])
+option_4 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_5])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_4])
diff --git a/tests/templates/11disabled_if_in_filelist/00-base.xml b/tests/templates/11disabled_if_in_filelist/00-base.xml
deleted file mode 100644
index 850de90a3..000000000
--- a/tests/templates/11disabled_if_in_filelist/00-base.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
-
- hidden
-
-
-
-
- root
-
-
- 0644
-
-
- /etc/file
-
-
- root
-
-
- file
-
-
- True
-
-
- disabled
- True
-
-
-
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
- oui
- non
- mandatory
- normal
- disabled
- non
-
-
- oui
- non
- mandatory
- normal
- disabled
- non
-
-
-
-
-
diff --git a/tests/templates/11disabled_if_in_filelist/__init__.py b/tests/templates/11disabled_if_in_filelist/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/tests/templates/11disabled_if_in_filelist/base.py b/tests/templates/11disabled_if_in_filelist/base.py
new file mode 100644
index 000000000..37fb14df0
--- /dev/null
+++ b/tests/templates/11disabled_if_in_filelist/base.py
@@ -0,0 +1,21 @@
+from tiramisu import *
+from rougail.tiramisu import ConvertDynOptionDescription
+import imp
+func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = BoolOption(default=True, properties=frozenset({'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif2', doc='No change', multi=False)
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_10 = StrOption(name='group', doc='group', multi=False, default='root')
+option_11 = StrOption(name='mode', doc='mode', multi=False, default='0644')
+option_12 = StrOption(name='name', doc='name', multi=False, default='/etc/file')
+option_13 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_14 = StrOption(name='source', doc='source', multi=False, default='file')
+option_15 = BoolOption(default=True, name='templating', doc='templating', multi=False)
+option_16 = BoolOption(default=True, properties=frozenset({Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='activate', doc='activate', multi=False)
+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_6 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_7])
+option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_6])
diff --git a/tests/templates/11disabled_if_in_filelist_disabled/00-base.xml b/tests/templates/11disabled_if_in_filelist_disabled/00-base.xml
deleted file mode 100644
index 095e83400..000000000
--- a/tests/templates/11disabled_if_in_filelist_disabled/00-base.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
-
- hidden
-
-
-
-
- root
-
-
- 0644
-
-
- /etc/file
-
-
- root
-
-
- file
-
-
- True
-
-
- disabled
- True
-
-
-
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- oui
-
-
- oui
- non
- mandatory
- normal
- disabled
- non
-
-
- oui
- non
- mandatory
- normal
- disabled
- non
-
-
-
-
-
diff --git a/tests/templates/11disabled_if_in_filelist_disabled/__init__.py b/tests/templates/11disabled_if_in_filelist_disabled/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/tests/templates/11disabled_if_in_filelist_disabled/base.py b/tests/templates/11disabled_if_in_filelist_disabled/base.py
new file mode 100644
index 000000000..a1d97a8a3
--- /dev/null
+++ b/tests/templates/11disabled_if_in_filelist_disabled/base.py
@@ -0,0 +1,21 @@
+from tiramisu import *
+from rougail.tiramisu import ConvertDynOptionDescription
+import imp
+func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='condition', doc='No change', multi=False, default='oui', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_5 = ChoiceOption(properties=frozenset({'mandatory', 'normal', Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_10 = StrOption(name='group', doc='group', multi=False, default='root')
+option_11 = StrOption(name='mode', doc='mode', multi=False, default='0644')
+option_12 = StrOption(name='name', doc='name', multi=False, default='/etc/file')
+option_13 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_14 = StrOption(name='source', doc='source', multi=False, default='file')
+option_15 = BoolOption(default=True, name='templating', doc='templating', multi=False)
+option_16 = BoolOption(default=True, properties=frozenset({Calculation(calc_value, Params(ParamValue('disabled'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue('oui')}))}), name='activate', doc='activate', multi=False)
+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_6 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_7])
+option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_6])
diff --git a/tests/templates/20notemplating/00-base.xml b/tests/templates/20notemplating/00-base.xml
deleted file mode 100644
index e0d7ddaeb..000000000
--- a/tests/templates/20notemplating/00-base.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
- hidden
-
-
-
-
- root
-
-
- 0644
-
-
- /etc/file
-
-
- root
-
-
- file
-
-
- False
-
-
- True
-
-
-
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
-
-
-
diff --git a/tests/templates/20notemplating/__init__.py b/tests/templates/20notemplating/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/tests/templates/20notemplating/base.py b/tests/templates/20notemplating/base.py
new file mode 100644
index 000000000..b37ec7dd8
--- /dev/null
+++ b/tests/templates/20notemplating/base.py
@@ -0,0 +1,19 @@
+from tiramisu import *
+from rougail.tiramisu import ConvertDynOptionDescription
+import imp
+func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_8 = StrOption(name='group', doc='group', multi=False, default='root')
+option_9 = StrOption(name='mode', doc='mode', multi=False, default='0644')
+option_10 = StrOption(name='name', doc='name', multi=False, default='/etc/file')
+option_11 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_12 = StrOption(name='source', doc='source', multi=False, default='file')
+option_13 = BoolOption(default=False, name='templating', doc='templating', multi=False)
+option_14 = BoolOption(default=True, name='activate', doc='activate', multi=False)
+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_4 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_5])
+option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_4])
diff --git a/tests/templates/20override/00-base.xml b/tests/templates/20override/00-base.xml
deleted file mode 100644
index 37d114f33..000000000
--- a/tests/templates/20override/00-base.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
- hidden
-
-
-
-
- root
-
-
- 0644
-
-
- /systemd/system/test.service.d/rougail.conf
-
-
- root
-
-
- test.service
-
-
- True
-
-
- True
-
-
-
-
-
-
-
- normal
-
- oui
- non
- mandatory
- normal
- non
-
-
-
-
-
diff --git a/tests/templates/20override/__init__.py b/tests/templates/20override/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/tests/templates/20override/base.py b/tests/templates/20override/base.py
new file mode 100644
index 000000000..c420cb307
--- /dev/null
+++ b/tests/templates/20override/base.py
@@ -0,0 +1,19 @@
+from tiramisu import *
+from rougail.tiramisu import ConvertDynOptionDescription
+import imp
+func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
+option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_8 = StrOption(name='group', doc='group', multi=False, default='root')
+option_9 = StrOption(name='mode', doc='mode', multi=False, default='0644')
+option_10 = StrOption(name='name', doc='name', multi=False, default='/systemd/system/test.service.d/rougail.conf')
+option_11 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_12 = StrOption(name='source', doc='source', multi=False, default='test.service')
+option_13 = BoolOption(default=True, name='templating', doc='templating', multi=False)
+option_14 = BoolOption(default=True, name='activate', doc='activate', multi=False)
+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_4 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_5])
+option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_4])
diff --git a/tests/templates/60extra_group/00-base.xml b/tests/templates/60extra_group/00-base.xml
deleted file mode 100644
index 3836ff9f7..000000000
--- a/tests/templates/60extra_group/00-base.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-
-
-
- hidden
-
-
-
-
- root
-
-
- 0644
-
-
- /etc/mailname
-
-
- root
-
-
- mailname
-
-
- True
-
-
- True
-
-
-
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- non
-
-
-
-
-
-
- normal
-
- normal
-
- mandatory
- test
-
-
- mandatory
- normal
- pre
-
-
-
-
-
diff --git a/tests/templates/60extra_group/__init__.py b/tests/templates/60extra_group/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/tests/templates/60extra_group/base.py b/tests/templates/60extra_group/base.py
new file mode 100644
index 000000000..d409ba80f
--- /dev/null
+++ b/tests/templates/60extra_group/base.py
@@ -0,0 +1,25 @@
+from tiramisu import *
+from rougail.tiramisu import ConvertDynOptionDescription
+import imp
+func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_4 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='activer_ejabberd', doc='No change', multi=False, default='non', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_8 = StrOption(properties=frozenset({'mandatory'}), name='description', doc='description', multi=True, default=['test'])
+option_9 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='mode', doc='mode', multi=True, default_multi='pre')
+option_7 = Leadership(name='description', doc='description', properties=frozenset({'normal'}), children=[option_8, option_9])
+option_6 = OptionDescription(name='ejabberd', doc='ejabberd', properties=frozenset({'normal'}), children=[option_7])
+option_5 = OptionDescription(name='extra', doc='extra', children=[option_6])
+option_14 = StrOption(name='group', doc='group', multi=False, default='root')
+option_15 = StrOption(name='mode', doc='mode', multi=False, default='0644')
+option_16 = StrOption(name='name', doc='name', multi=False, default='/etc/mailname')
+option_17 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_18 = StrOption(name='source', doc='source', multi=False, default='mailname')
+option_19 = BoolOption(default=True, name='templating', doc='templating', multi=False)
+option_20 = BoolOption(default=True, name='activate', doc='activate', multi=False)
+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_10 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_11])
+option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_5, option_10])
diff --git a/tests/templates/70container_files/00-base.xml b/tests/templates/70container_files/00-base.xml
deleted file mode 100644
index 0a228f654..000000000
--- a/tests/templates/70container_files/00-base.xml
+++ /dev/null
@@ -1,72 +0,0 @@
-
-
-
- hidden
-
-
-
-
- root
-
-
- 0644
-
-
- /etc/mailname
-
-
- root
-
-
- mailname
-
-
- True
-
-
- True
-
-
-
-
- root
-
-
- 0644
-
-
- /rougail.conf
-
-
- root
-
-
- rougail.conf
-
-
- True
-
-
- True
-
-
-
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- oui
-
-
-
-
-
diff --git a/tests/templates/70container_files/__init__.py b/tests/templates/70container_files/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/tests/templates/70container_files/base.py b/tests/templates/70container_files/base.py
new file mode 100644
index 000000000..a012e8ebc
--- /dev/null
+++ b/tests/templates/70container_files/base.py
@@ -0,0 +1,27 @@
+from tiramisu import *
+from rougail.tiramisu import ConvertDynOptionDescription
+import imp
+func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='oui', values=('oui', 'non'))
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_8 = StrOption(name='group', doc='group', multi=False, default='root')
+option_9 = StrOption(name='mode', doc='mode', multi=False, default='0644')
+option_10 = StrOption(name='name', doc='name', multi=False, default='/etc/mailname')
+option_11 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_12 = StrOption(name='source', doc='source', multi=False, default='mailname')
+option_13 = BoolOption(default=True, name='templating', doc='templating', multi=False)
+option_14 = BoolOption(default=True, name='activate', doc='activate', multi=False)
+option_7 = OptionDescription(name='mailname', doc='mailname', children=[option_8, option_9, option_10, option_11, option_12, option_13, option_14])
+option_16 = StrOption(name='group', doc='group', multi=False, default='root')
+option_17 = StrOption(name='mode', doc='mode', multi=False, default='0644')
+option_18 = StrOption(name='name', doc='name', multi=False, default='/rougail.conf')
+option_19 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_20 = StrOption(name='source', doc='source', multi=False, default='rougail.conf')
+option_21 = BoolOption(default=True, name='templating', doc='templating', multi=False)
+option_22 = BoolOption(default=True, name='activate', doc='activate', multi=False)
+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_4 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_5])
+option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_4])
diff --git a/tests/templates/70container_files_symlink_multi/00-base.xml b/tests/templates/70container_files_symlink_multi/00-base.xml
deleted file mode 100644
index c82d60371..000000000
--- a/tests/templates/70container_files_symlink_multi/00-base.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-
-
-
- hidden
-
-
-
-
- root
-
-
- 0644
-
-
-
- root
-
-
- mailname
-
-
- True
-
-
- True
-
-
-
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- oui
-
-
- mandatory
- normal
- /etc/mailname
- /etc/mailname2
-
-
-
-
-
diff --git a/tests/templates/70container_files_symlink_multi/__init__.py b/tests/templates/70container_files_symlink_multi/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/tests/templates/70container_files_symlink_multi/base.py b/tests/templates/70container_files_symlink_multi/base.py
new file mode 100644
index 000000000..8d3caddc6
--- /dev/null
+++ b/tests/templates/70container_files_symlink_multi/base.py
@@ -0,0 +1,20 @@
+from tiramisu import *
+from rougail.tiramisu import ConvertDynOptionDescription
+import imp
+func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='oui', values=('oui', 'non'))
+option_4 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='file_name', doc='file_name', multi=True, default=['/etc/mailname', '/etc/mailname2'], default_multi='/etc/mailname2')
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3, option_4])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_9 = StrOption(name='group', doc='group', multi=False, default='root')
+option_10 = StrOption(name='mode', doc='mode', multi=False, default='0644')
+option_11 = SymLinkOption(name='name', opt=option_4)
+option_12 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_13 = StrOption(name='source', doc='source', multi=False, default='mailname')
+option_14 = BoolOption(default=True, name='templating', doc='templating', multi=False)
+option_15 = BoolOption(default=True, name='activate', doc='activate', multi=False)
+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_5 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_6])
+option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_5])
diff --git a/tests/templates/70container_files_symlink_multi_variable/00-base.xml b/tests/templates/70container_files_symlink_multi_variable/00-base.xml
deleted file mode 100644
index b799fa274..000000000
--- a/tests/templates/70container_files_symlink_multi_variable/00-base.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
-
- hidden
-
-
-
-
- root
-
-
- 0644
-
-
-
- root
-
-
- mailname
-
-
- True
-
-
-
- True
-
-
-
-
-
-
-
- normal
-
- oui
- non
- force_default_on_freeze
- frozen
- hidden
- mandatory
- normal
- oui
-
-
- mandatory
- normal
- /etc/mailname
- /etc/mailname2
-
-
- mandatory
- normal
- mailname
- mailname2
-
-
-
-
-
diff --git a/tests/templates/70container_files_symlink_multi_variable/__init__.py b/tests/templates/70container_files_symlink_multi_variable/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/tests/templates/70container_files_symlink_multi_variable/base.py b/tests/templates/70container_files_symlink_multi_variable/base.py
new file mode 100644
index 000000000..3fdeb247a
--- /dev/null
+++ b/tests/templates/70container_files_symlink_multi_variable/base.py
@@ -0,0 +1,22 @@
+from tiramisu import *
+from rougail.tiramisu import ConvertDynOptionDescription
+import imp
+func = imp.load_source('func', 'tests/flattener_dicos/../eosfunc/test.py')
+option_3 = ChoiceOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', 'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='oui', values=('oui', 'non'))
+option_4 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='file_name', doc='file_name', multi=True, default=['/etc/mailname', '/etc/mailname2'], default_multi='/etc/mailname2')
+option_5 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='var', doc='var', multi=True, default=['mailname', 'mailname2'], default_multi='mailname2')
+option_2 = OptionDescription(name='general', doc='général', properties=frozenset({'normal'}), children=[option_3, option_4, option_5])
+option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
+option_10 = StrOption(name='group', doc='group', multi=False, default='root')
+option_11 = StrOption(name='mode', doc='mode', multi=False, default='0644')
+option_12 = SymLinkOption(name='name', opt=option_4)
+option_13 = StrOption(name='owner', doc='owner', multi=False, default='root')
+option_14 = StrOption(name='source', doc='source', multi=False, default='mailname')
+option_15 = BoolOption(default=True, name='templating', doc='templating', multi=False)
+option_16 = SymLinkOption(name='variable', opt=option_5)
+option_17 = BoolOption(default=True, name='activate', doc='activate', multi=False)
+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_6 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_7])
+option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_6])
diff --git a/tests/templates/__init__.py b/tests/templates/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/tests/test_1_flattener.py b/tests/test_1_flattener.py
index 48270abe0..7e4106529 100644
--- a/tests/test_1_flattener.py
+++ b/tests/test_1_flattener.py
@@ -20,7 +20,7 @@ test_raise = set()
for test in listdir(dico_dirs):
if isdir(join(dico_dirs, test)):
- if isdir(join(dico_dirs, test, 'result')):
+ if isdir(join(dico_dirs, test, 'tiramisu')):
test_ok.add(test)
elif test != '__pycache__':
test_raise.add(test)
@@ -82,14 +82,15 @@ def launch_flattener(test_dir, test_ok=False):
eolobj.create_or_populate_from_xml('extra1', [subfolder])
eosfunc = join(dico_dirs, '../eosfunc/test.py')
eolobj.space_visitor(eosfunc)
- eolobj.save(destfile)
- result_file = join(test_dir, 'result/00-base.xml')
- if isfile(result_file):
- if debug:
- eolobj.save(result_file)
- compare_xml(destfile, result_file)
- elif test_ok:
- raise Exception(f'no test found for {test_dir}')
+ tiramisu_objects = eolobj.save(destfile)
+ tiramisu_dir = join(test_dir, 'tiramisu')
+ tiramisu_file = join(tiramisu_dir, 'base.py')
+ if not isfile(tiramisu_file) or debug:
+ with open(tiramisu_file, 'w') as fh:
+ fh.write(tiramisu_objects)
+ with open(tiramisu_file, 'r') as fh:
+ tiramisu_objects_ori = fh.read()
+ assert tiramisu_objects == tiramisu_objects_ori
def fake_traduc(txt):
diff --git a/tests/test_3_makedict.py b/tests/test_2_makedict.py
similarity index 95%
rename from tests/test_3_makedict.py
rename to tests/test_2_makedict.py
index 2bb669996..272a112f6 100644
--- a/tests/test_3_makedict.py
+++ b/tests/test_2_makedict.py
@@ -5,7 +5,6 @@ from os import listdir, mkdir
from json import dump, load, dumps, loads
from tiramisu import Config
-from rougail import load as rougail_load
from rougail.xml_compare import xml_compare
from rougail.error import DictConsistencyError
from rougail.config import dtdfilename
@@ -18,7 +17,7 @@ test_ok = set()
for test in listdir(dico_dirs):
if isdir(join(dico_dirs, test)):
- if isdir(join(dico_dirs, test, 'result')):
+ if isdir(join(dico_dirs, test, 'tiramisu')):
test_ok.add(test)
excludes = set([])
diff --git a/tests/test_2_tiramisu.py b/tests/test_2_tiramisu.py
deleted file mode 100644
index e96dd58ad..000000000
--- a/tests/test_2_tiramisu.py
+++ /dev/null
@@ -1,80 +0,0 @@
-from lxml import etree
-from os.path import isfile, join, isdir
-from pytest import fixture, mark
-from os import listdir, mkdir
-from json import dump, load, dumps, loads
-
-from tiramisu import Config
-from rougail import load as rougail_load
-from rougail.xml_compare import xml_compare
-from rougail.error import DictConsistencyError
-
-
-dico_dirs = 'tests/flattener_dicos'
-
-
-test_ok = set()
-
-for test in listdir(dico_dirs):
- if isdir(join(dico_dirs, test)):
- if isdir(join(dico_dirs, test, 'result')):
- test_ok.add(test)
-
-excludes = set([])
-#excludes = set(['70container_services'])
-test_ok -= excludes
-#test_ok = ['10leadership_append']
-
-
-test_ok = list(test_ok)
-test_ok.sort()
-
-
-@fixture(scope="module", params=test_ok)
-def test_dir(request):
- return request.param
-
-
-async def launch_flattener(test_dir):
- debug = False
-# debug = True
- eosfunc = join(dico_dirs, '../eosfunc/test.py')
- cache_file = test_dir + '/result/00-base.xml'
- fileio = open(cache_file)
- xmlroot = etree.parse(fileio).getroot()
- tiramisu_objects = rougail_load(xmlroot,
- eosfunc,
- )
- tiramisu_objects += '\n'
- #print(tiramisu_objects)
- tiramisu_dir = join(test_dir, 'tiramisu')
- tiramisu_file = join(tiramisu_dir, 'base.py')
- #config = await Config(tiramisu_objects)
- #await config.property.read_only()
- #await config.property.pop('mandatory')
- #config_dict = await config.value.dict()
- if not isdir(tiramisu_dir):
- mkdir(tiramisu_dir)
- if not isfile(tiramisu_file) or debug:
- with open(tiramisu_file, 'w') as fh:
- fh.write(tiramisu_objects)
- with open(tiramisu_file, 'r') as fh:
- tiramisu_objects_ori = fh.read()
- assert tiramisu_objects == tiramisu_objects_ori
- #if config_dict:
- # if not isdir(tiramisu_dir):
- # mkdir(tiramisu_dir)
- # #with open(tiramisu_file, 'w') as fh:
- # # dump(config_dict, fh)
- # # fh.write('\n')
- #if not isfile(tiramisu_file):
- # if config_dict:
- # raise Exception('dict is not empty')
- #else:
- # assert load(fh) == loads(dumps(config_dict))
-
-
-@mark.asyncio
-async def test_dictionary(test_dir):
- test_dir = join(dico_dirs, test_dir)
- await launch_flattener(test_dir)
diff --git a/tests/test_4_template.py b/tests/test_3_template.py
similarity index 88%
rename from tests/test_4_template.py
rename to tests/test_3_template.py
index 86ed1015e..cafc8156a 100644
--- a/tests/test_4_template.py
+++ b/tests/test_3_template.py
@@ -5,12 +5,12 @@ from pytest import fixture, mark
from lxml.etree import parse
from tiramisu import Config
-from rougail import template, load
+from rougail import template
from rougail.config import dtdfilename
template_dirs = 'tests/templates'
-test_ok = listdir(template_dirs)
+test_ok = [f for f in listdir(template_dirs) if not f.startswith('_')]
#test_ok = ['60extra_group']
@@ -39,6 +39,14 @@ def find_files(dirname: str,
async def test_dictionary(test_dir):
test_dir = join(template_dirs, test_dir)
tmp_dir = join(test_dir, 'tmp')
+
+ modulepath = test_dir.replace('/', '.') + '.base'
+ mod = __import__(modulepath)
+ for token in modulepath.split(".")[1:]:
+ mod = getattr(mod, token)
+ config = await Config(mod.option_0)
+ await config.property.read_only()
+
funcs_file = join(template_dirs, '../eosfunc/test.py')
distrib_dir = join(test_dir, 'tmpl')
if isdir(tmp_dir):
@@ -48,13 +56,6 @@ async def test_dictionary(test_dir):
if isdir(dest_dir):
rmtree(dest_dir)
mkdir(dest_dir)
- with open(join(test_dir, '00-base.xml')) as fileio:
- xmlroot = parse(fileio).getroot()
- optiondescription = load(xmlroot,
- funcs_file)
-
- config = await Config(optiondescription)
- await config.property.read_only()
await template.generate(config,
funcs_file,
distrib_dir,