Compare commits
6 Commits
d395f4a17b
...
71b9b70755
Author | SHA1 | Date |
---|---|---|
Emmanuel Garette | 71b9b70755 | |
Emmanuel Garette | 2d0ccc6896 | |
Emmanuel Garette | 0ef5429577 | |
Emmanuel Garette | 6a771913e0 | |
Emmanuel Garette | 942b3f718c | |
Emmanuel Garette | f9885a023c |
|
@ -126,7 +126,8 @@ class ConstrainteAnnotator:
|
||||||
xmlfiles = self.objectspace.display_xmlfiles(check.xmlfiles)
|
xmlfiles = self.objectspace.display_xmlfiles(check.xmlfiles)
|
||||||
raise DictConsistencyError(_(f'valid_enum define in {xmlfiles} but already set in {old_xmlfiles} for "{check.target}", did you forget remove_check?'), 3)
|
raise DictConsistencyError(_(f'valid_enum define in {xmlfiles} but already set in {old_xmlfiles} for "{check.target}", did you forget remove_check?'), 3)
|
||||||
if not hasattr(check, 'param'):
|
if not hasattr(check, 'param'):
|
||||||
raise DictConsistencyError(_(f'param is mandatory for a valid_enum of variable {check.target}'), 4)
|
xmlfiles = self.objectspace.display_xmlfiles(check.xmlfiles)
|
||||||
|
raise DictConsistencyError(_(f'param is mandatory for a valid_enum of variable "{check.target}" in {xmlfiles}'), 4)
|
||||||
variable = self.objectspace.paths.get_variable_obj(check.target)
|
variable = self.objectspace.paths.get_variable_obj(check.target)
|
||||||
values = self.load_params_in_valid_enum(check.param,
|
values = self.load_params_in_valid_enum(check.param,
|
||||||
variable.name,
|
variable.name,
|
||||||
|
@ -153,18 +154,22 @@ class ConstrainteAnnotator:
|
||||||
for param in params:
|
for param in params:
|
||||||
if param.type == 'variable':
|
if param.type == 'variable':
|
||||||
if has_variable is not None:
|
if has_variable is not None:
|
||||||
raise DictConsistencyError(_(f'only one "variable" parameter is allowed for valid_enum of variable {variable_name}'), 5)
|
xmlfiles = self.objectspace.display_xmlfiles(param.xmlfiles)
|
||||||
|
raise DictConsistencyError(_(f'only one "variable" parameter is allowed for valid_enum of variable "{variable_name}" in {xmlfiles}'), 5)
|
||||||
has_variable = True
|
has_variable = True
|
||||||
variable = self.objectspace.paths.get_variable_obj(param.text)
|
variable = self.objectspace.paths.get_variable_obj(param.text)
|
||||||
if not variable.multi:
|
if not variable.multi:
|
||||||
raise DictConsistencyError(_(f'only multi "variable" parameter is allowed for valid_enum of variable {variable_name}'), 6)
|
xmlfiles = self.objectspace.display_xmlfiles(param.xmlfiles)
|
||||||
|
raise DictConsistencyError(_(f'only multi "variable" parameter is allowed for valid_enum of variable "{variable_name}" in {xmlfiles}'), 6)
|
||||||
values = param.text
|
values = param.text
|
||||||
else:
|
else:
|
||||||
if has_variable:
|
if has_variable:
|
||||||
raise DictConsistencyError(_(f'only one "variable" parameter is allowed for valid_enum of variable {variable_name}'), 7)
|
xmlfiles = self.objectspace.display_xmlfiles(param.xmlfiles)
|
||||||
|
raise DictConsistencyError(_(f'only one parameter is allowed for valid_enum of variable "{variable_name}" in {xmlfiles}'), 7)
|
||||||
if not hasattr(param, 'text'):
|
if not hasattr(param, 'text'):
|
||||||
if param.type == 'number':
|
if param.type == 'number':
|
||||||
raise DictConsistencyError(_(f'value is mandatory for valid_enum of variable {variable_name}'), 8)
|
xmlfiles = self.objectspace.display_xmlfiles(param.xmlfiles)
|
||||||
|
raise DictConsistencyError(_(f'param type is number, so value is mandatory for valid_enum of variable "{variable_name}" in {xmlfiles}'), 8)
|
||||||
values.append(None)
|
values.append(None)
|
||||||
else:
|
else:
|
||||||
values.append(param.text)
|
values.append(param.text)
|
||||||
|
@ -396,7 +401,7 @@ class ConstrainteAnnotator:
|
||||||
# build choice
|
# build choice
|
||||||
variable.choice = []
|
variable.choice = []
|
||||||
if isinstance(values, str):
|
if isinstance(values, str):
|
||||||
choice = self.objectspace.choice()
|
choice = self.objectspace.choice(variable.xmlfiles)
|
||||||
choice.type = 'calculation'
|
choice.type = 'calculation'
|
||||||
choice.name = values
|
choice.name = values
|
||||||
variable.choice.append(choice)
|
variable.choice.append(choice)
|
||||||
|
@ -504,7 +509,8 @@ class ConstrainteAnnotator:
|
||||||
targets.append(fill.target)
|
targets.append(fill.target)
|
||||||
#
|
#
|
||||||
if fill.name not in self.functions:
|
if fill.name not in self.functions:
|
||||||
raise DictConsistencyError(_('cannot find fill function {}').format(fill.name), 25)
|
xmlfiles = self.objectspace.display_xmlfiles(fill.xmlfiles)
|
||||||
|
raise DictConsistencyError(_(f'cannot find fill function {fill.name} in {xmlfiles}'), 25)
|
||||||
|
|
||||||
namespace = fill.namespace
|
namespace = fill.namespace
|
||||||
# let's replace the target by the path
|
# let's replace the target by the path
|
||||||
|
@ -513,7 +519,8 @@ class ConstrainteAnnotator:
|
||||||
with_suffix=True,
|
with_suffix=True,
|
||||||
)
|
)
|
||||||
if suffix is not None:
|
if suffix is not None:
|
||||||
raise DictConsistencyError(_(f'Cannot add fill function to "{fill.target}" only with the suffix "{suffix}"'), 26)
|
xmlfiles = self.objectspace.display_xmlfiles(fill.xmlfiles)
|
||||||
|
raise DictConsistencyError(_(f'Cannot add fill function to "{fill.target}" only with the suffix "{suffix}" in {xmlfiles}'), 26)
|
||||||
variable = self.objectspace.paths.get_variable_obj(fill.target)
|
variable = self.objectspace.paths.get_variable_obj(fill.target)
|
||||||
value = self.objectspace.value(variable.xmlfiles)
|
value = self.objectspace.value(variable.xmlfiles)
|
||||||
value.type = 'calculation'
|
value.type = 'calculation'
|
||||||
|
@ -522,9 +529,15 @@ class ConstrainteAnnotator:
|
||||||
param_to_delete = []
|
param_to_delete = []
|
||||||
for fill_idx, param in enumerate(fill.param):
|
for fill_idx, param in enumerate(fill.param):
|
||||||
if param.type not in ['suffix', 'string'] and not hasattr(param, 'text'):
|
if param.type not in ['suffix', 'string'] and not hasattr(param, 'text'):
|
||||||
raise DictConsistencyError(_(f"All '{param.type}' variables must have a value in order to calculate {fill.target}"), 27)
|
xmlfiles = self.objectspace.display_xmlfiles(fill.xmlfiles)
|
||||||
if param.type == 'suffix' and hasattr(param, 'text'):
|
raise DictConsistencyError(_(f"All '{param.type}' variables must have a value in order to calculate {fill.target} in {xmlfiles}"), 27)
|
||||||
raise DictConsistencyError(_(f"All '{param.type}' variables must not have a value in order to calculate {fill.target}"), 28)
|
if param.type == 'suffix':
|
||||||
|
if hasattr(param, 'text'):
|
||||||
|
xmlfiles = self.objectspace.display_xmlfiles(fill.xmlfiles)
|
||||||
|
raise DictConsistencyError(_(f"All '{param.type}' variables must not have a value in order to calculate {fill.target} in {xmlfiles}"), 28)
|
||||||
|
if not self.objectspace.paths.variable_is_dynamic(fill.target):
|
||||||
|
xmlfiles = self.objectspace.display_xmlfiles(fill.xmlfiles)
|
||||||
|
raise DictConsistencyError(_(f'Cannot set suffix target to the none dynamic variable "{fill.target}" in {xmlfiles}'), 53)
|
||||||
if param.type == 'string':
|
if param.type == 'string':
|
||||||
if not hasattr(param, 'text'):
|
if not hasattr(param, 'text'):
|
||||||
param.text = None
|
param.text = None
|
||||||
|
|
|
@ -174,6 +174,11 @@ class Path:
|
||||||
return True
|
return True
|
||||||
return name in self.variables
|
return name in self.variables
|
||||||
|
|
||||||
|
def variable_is_dynamic(self,
|
||||||
|
name: str,
|
||||||
|
) -> bool:
|
||||||
|
return self._get_variable(name)['is_dynamic']
|
||||||
|
|
||||||
def _get_variable(self,
|
def _get_variable(self,
|
||||||
name: str,
|
name: str,
|
||||||
with_suffix: bool=False,
|
with_suffix: bool=False,
|
||||||
|
|
|
@ -44,9 +44,7 @@ class TiramisuReflector:
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_root_family(self):
|
def get_root_family(self):
|
||||||
family = Family(BaseElt('baseoption',
|
family = Family(BaseElt(),
|
||||||
'baseoption',
|
|
||||||
),
|
|
||||||
self.storage,
|
self.storage,
|
||||||
False,
|
False,
|
||||||
'.',
|
'.',
|
||||||
|
@ -158,15 +156,9 @@ class TiramisuReflector:
|
||||||
|
|
||||||
|
|
||||||
class BaseElt:
|
class BaseElt:
|
||||||
def __init__(self,
|
def __init__(self) -> None:
|
||||||
name,
|
self.name = 'baseoption'
|
||||||
doc,
|
self.doc = 'baseoption'
|
||||||
):
|
|
||||||
self.name = name
|
|
||||||
self.doc = doc
|
|
||||||
|
|
||||||
def __iter__(self):
|
|
||||||
return iter([])
|
|
||||||
|
|
||||||
|
|
||||||
class ElementStorage:
|
class ElementStorage:
|
||||||
|
@ -181,13 +173,9 @@ class ElementStorage:
|
||||||
self.index += 1
|
self.index += 1
|
||||||
|
|
||||||
def get(self, path):
|
def get(self, path):
|
||||||
if path not in self.paths or self.paths[path][0] is None:
|
|
||||||
raise LoaderError(_('there is no element for path {}').format(path))
|
|
||||||
return self.paths[path][0]
|
return self.paths[path][0]
|
||||||
|
|
||||||
def get_name(self, path):
|
def get_name(self, path):
|
||||||
if path not in self.paths:
|
|
||||||
raise LoaderError(_('there is no element for index {}').format(path))
|
|
||||||
return f'option_{self.paths[path][1]}'
|
return f'option_{self.paths[path][1]}'
|
||||||
|
|
||||||
|
|
||||||
|
@ -207,15 +195,13 @@ class Common:
|
||||||
self.storage.add(self.path, self)
|
self.storage.add(self.path, self)
|
||||||
|
|
||||||
def populate_properties(self, child):
|
def populate_properties(self, child):
|
||||||
if child.type == 'calculation':
|
assert child.type == 'calculation'
|
||||||
action = f"ParamValue('{child.name}')"
|
action = f"ParamValue('{child.name}')"
|
||||||
option_name = self.storage.get(child.source).get()
|
option_name = self.storage.get(child.source).get()
|
||||||
kwargs = f"'condition': ParamOption({option_name}, todict=True), 'expected': ParamValue('{child.expected}')"
|
kwargs = f"'condition': ParamOption({option_name}, todict=True), 'expected': ParamValue('{child.expected}')"
|
||||||
if child.inverse:
|
if child.inverse:
|
||||||
kwargs += ", 'reverse_condition': ParamValue(True)"
|
kwargs += ", 'reverse_condition': ParamValue(True)"
|
||||||
prop = 'Calculation(calc_value, Params(' + action + ', kwargs={' + kwargs + '}))'
|
prop = 'Calculation(calc_value, Params(' + action + ', kwargs={' + kwargs + '}))'
|
||||||
else:
|
|
||||||
prop = "'" + child.text + "'"
|
|
||||||
if self.attrib['properties']:
|
if self.attrib['properties']:
|
||||||
self.attrib['properties'] += ', '
|
self.attrib['properties'] += ', '
|
||||||
self.attrib['properties'] += prop
|
self.attrib['properties'] += prop
|
||||||
|
@ -263,15 +249,8 @@ class Common:
|
||||||
):
|
):
|
||||||
for attr in dir(space):
|
for attr in dir(space):
|
||||||
if not attr.startswith('_') and attr not in ERASED_ATTRIBUTES:
|
if not attr.startswith('_') and attr not in ERASED_ATTRIBUTES:
|
||||||
value = getattr(space, attr)
|
if isinstance(getattr(space, attr), list):
|
||||||
if isinstance(value, (list, dict)):
|
yield attr, getattr(space, attr)
|
||||||
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):
|
class Variable(Common):
|
||||||
|
@ -314,7 +293,7 @@ class Variable(Common):
|
||||||
for key in self.get_attributes(self.elt):
|
for key in self.get_attributes(self.elt):
|
||||||
value = getattr(self.elt, key)
|
value = getattr(self.elt, key)
|
||||||
if key in FORCE_INFORMATIONS:
|
if key in FORCE_INFORMATIONS:
|
||||||
if key == 'test':
|
if key == 'test': # pragma: no cover
|
||||||
value = value.split(',')
|
value = value.split(',')
|
||||||
if self.object_type == 'IntOption':
|
if self.object_type == 'IntOption':
|
||||||
value = [int(v) for v in value]
|
value = [int(v) for v in value]
|
||||||
|
@ -368,7 +347,6 @@ class Variable(Common):
|
||||||
|
|
||||||
def calculation_value(self, child, args):
|
def calculation_value(self, child, args):
|
||||||
kwargs = []
|
kwargs = []
|
||||||
if hasattr(child, 'name'):
|
|
||||||
# has parameters
|
# has parameters
|
||||||
function = child.name
|
function = child.name
|
||||||
if hasattr(child, 'param'):
|
if hasattr(child, 'param'):
|
||||||
|
@ -378,9 +356,6 @@ class Variable(Common):
|
||||||
args.append(str(value))
|
args.append(str(value))
|
||||||
else:
|
else:
|
||||||
kwargs.append(f"'{param.name}': " + value)
|
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) + "})"
|
ret = f"Calculation(func.{function}, Params((" + ', '.join(args) + "), kwargs=" + "{" + ', '.join(kwargs) + "})"
|
||||||
if hasattr(child, 'warnings_only'):
|
if hasattr(child, 'warnings_only'):
|
||||||
ret += f', warnings_only={child.warnings_only}'
|
ret += f', warnings_only={child.warnings_only}'
|
||||||
|
@ -406,7 +381,7 @@ class Variable(Common):
|
||||||
return f'ParamInformation("{param.text}", None)'
|
return f'ParamInformation("{param.text}", None)'
|
||||||
elif param.type == 'suffix':
|
elif param.type == 'suffix':
|
||||||
return f'ParamSuffix()'
|
return f'ParamSuffix()'
|
||||||
raise LoaderError(_('unknown param type {}').format(param.type))
|
raise LoaderError(_('unknown param type {}').format(param.type)) # pragma: no cover
|
||||||
|
|
||||||
def populate_value(self,
|
def populate_value(self,
|
||||||
child,
|
child,
|
||||||
|
@ -480,11 +455,8 @@ class Family(Common):
|
||||||
if 'properties' in self.attrib:
|
if 'properties' in self.attrib:
|
||||||
self.attrib['properties'] = "'" + "', '".join(sorted(list(self.attrib['properties']))) + "'"
|
self.attrib['properties'] = "'" + "', '".join(sorted(list(self.attrib['properties']))) + "'"
|
||||||
if hasattr(self.elt, 'property'):
|
if hasattr(self.elt, 'property'):
|
||||||
#self.attrib['properties'] = ''
|
|
||||||
for child in self.elt.property:
|
for child in self.elt.property:
|
||||||
self.populate_properties(child)
|
self.populate_properties(child)
|
||||||
if not self.attrib['properties']:
|
|
||||||
del self.attrib['properties']
|
|
||||||
|
|
||||||
def get_object_name(self):
|
def get_object_name(self):
|
||||||
if 'suffixes' in self.attrib:
|
if 'suffixes' in self.attrib:
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<rougail>
|
||||||
|
<variables>
|
||||||
|
<family name="general">
|
||||||
|
<variable name="mode_conteneur_actif" type="string" description="No change"/>
|
||||||
|
</family>
|
||||||
|
</variables>
|
||||||
|
|
||||||
|
<constraints>
|
||||||
|
<fill name="calc_val" target="mode_conteneur_actif">
|
||||||
|
<param type="information">test_information</param>
|
||||||
|
</fill>
|
||||||
|
</constraints>
|
||||||
|
</rougail>
|
||||||
|
<!-- vim: ts=4 sw=4 expandtab
|
||||||
|
-->
|
|
@ -0,0 +1 @@
|
||||||
|
{"rougail.general.mode_conteneur_actif": "value"}
|
|
@ -8,4 +8,7 @@ try:
|
||||||
except:
|
except:
|
||||||
from tiramisu import *
|
from tiramisu import *
|
||||||
from rougail.tiramisu import ConvertDynOptionDescription
|
from rougail.tiramisu import ConvertDynOptionDescription
|
||||||
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[])
|
option_3 = StrOption(properties=frozenset({'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default=Calculation(func.calc_val, Params((ParamInformation("test_information", None)), 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])
|
|
@ -1,11 +0,0 @@
|
||||||
from importlib.machinery import SourceFileLoader
|
|
||||||
func = SourceFileLoader('func', 'tests/dictionaries/../eosfunc/test.py').load_module()
|
|
||||||
for key, value in dict(locals()).items():
|
|
||||||
if key != ['SourceFileLoader', 'func']:
|
|
||||||
setattr(func, key, value)
|
|
||||||
try:
|
|
||||||
from tiramisu3 import *
|
|
||||||
except:
|
|
||||||
from tiramisu import *
|
|
||||||
from rougail.tiramisu import ConvertDynOptionDescription
|
|
||||||
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[])
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<rougail>
|
||||||
|
|
||||||
|
<services>
|
||||||
|
<service name="test">
|
||||||
|
<file name="/tmp/file" filelist="afilllist"/>
|
||||||
|
</service>
|
||||||
|
</services>
|
||||||
|
|
||||||
|
<variables>
|
||||||
|
<family name="general">
|
||||||
|
<variable name="condition" type="string" description="No change">
|
||||||
|
<value>non</value>
|
||||||
|
</variable>
|
||||||
|
<variable name="mode_conteneur_actif" type="oui/non" description="No change" hidden="True">
|
||||||
|
<value>non</value>
|
||||||
|
</variable>
|
||||||
|
<variable name="mode_conteneur_actif2" type="oui/non" description="No change" hidden="True">
|
||||||
|
<value>non</value>
|
||||||
|
</variable>
|
||||||
|
</family>
|
||||||
|
</variables>
|
||||||
|
|
||||||
|
<constraints>
|
||||||
|
<check name="valid_enum" target="condition">
|
||||||
|
<param>non</param>
|
||||||
|
<param>statique</param>
|
||||||
|
</check>
|
||||||
|
<condition name="disabled_if_not_in" source="condition">
|
||||||
|
<param>statique</param>
|
||||||
|
<target type="filelist">afilllist</target>
|
||||||
|
</condition>
|
||||||
|
</constraints>
|
||||||
|
</rougail>
|
|
@ -0,0 +1 @@
|
||||||
|
{"rougail.general.condition": "non", "rougail.general.mode_conteneur_actif": "non", "rougail.general.mode_conteneur_actif2": "non", "services.test.files.file.group": "root", "services.test.files.file.mode": "0644", "services.test.files.file.name": "/tmp/file", "services.test.files.file.owner": "root", "services.test.files.file.source": "file", "services.test.files.file.templating": true}
|
|
@ -8,4 +8,21 @@ try:
|
||||||
except:
|
except:
|
||||||
from tiramisu import *
|
from tiramisu import *
|
||||||
from rougail.tiramisu import ConvertDynOptionDescription
|
from rougail.tiramisu import ConvertDynOptionDescription
|
||||||
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[])
|
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(name='templating', doc='templating', multi=False, default=True)
|
||||||
|
option_16 = BoolOption(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, default=True)
|
||||||
|
option_9 = OptionDescription(name='file', doc='file', children=[option_10, option_11, option_12, option_13, option_14, option_15, option_16])
|
||||||
|
option_8 = OptionDescription(name='files', doc='files', children=[option_9])
|
||||||
|
option_7 = OptionDescription(name='test', doc='test', children=[option_8])
|
||||||
|
option_7.impl_set_information("manage", True)
|
||||||
|
option_6 = OptionDescription(name='services', doc='services', properties=frozenset({'hidden'}), children=[option_7])
|
||||||
|
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1, option_6])
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<rougail>
|
||||||
|
<variables>
|
||||||
|
<family name="general">
|
||||||
|
<variable name="mode_conteneur_actif" type="string" description="No change">
|
||||||
|
<value>a</value>
|
||||||
|
</variable>
|
||||||
|
<variable name="var" type="string" description="New variable" multi="True">
|
||||||
|
<value>a</value>
|
||||||
|
<value>b</value>
|
||||||
|
<value>c</value>
|
||||||
|
</variable>
|
||||||
|
</family>
|
||||||
|
</variables>
|
||||||
|
<constraints>
|
||||||
|
<check name="valid_enum" target="mode_conteneur_actif">
|
||||||
|
<param type="variable">var</param>
|
||||||
|
</check>
|
||||||
|
</constraints>
|
||||||
|
</rougail>
|
||||||
|
<!-- vim: ts=4 sw=4 expandtab
|
||||||
|
-->
|
|
@ -0,0 +1 @@
|
||||||
|
{"rougail.general.mode_conteneur_actif": "a", "rougail.general.var": ["a", "b", "c"]}
|
|
@ -0,0 +1,15 @@
|
||||||
|
from importlib.machinery import SourceFileLoader
|
||||||
|
func = SourceFileLoader('func', 'tests/dictionaries/../eosfunc/test.py').load_module()
|
||||||
|
for key, value in dict(locals()).items():
|
||||||
|
if key != ['SourceFileLoader', 'func']:
|
||||||
|
setattr(func, key, value)
|
||||||
|
try:
|
||||||
|
from tiramisu3 import *
|
||||||
|
except:
|
||||||
|
from tiramisu import *
|
||||||
|
from rougail.tiramisu import ConvertDynOptionDescription
|
||||||
|
option_4 = StrOption(properties=frozenset({'mandatory', 'normal'}), name='var', doc='New variable', multi=True, default=['a', 'b', 'c'], default_multi='c')
|
||||||
|
option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='a', values=Calculation(func.calc_value, Params((ParamOption(option_4)))))
|
||||||
|
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])
|
|
@ -0,0 +1,25 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<rougail>
|
||||||
|
<variables>
|
||||||
|
<family name='general'>
|
||||||
|
<variable name='varname' type='string' description="No change" multi="True">
|
||||||
|
<value>val1</value>
|
||||||
|
<value>val2</value>
|
||||||
|
</variable>
|
||||||
|
</family>
|
||||||
|
<family name='dyn' dynamic="varname">
|
||||||
|
<variable name='vardyn' type='string' description="No change">
|
||||||
|
<value>val</value>
|
||||||
|
</variable>
|
||||||
|
</family>
|
||||||
|
<family name='new'>
|
||||||
|
<variable name='newvar' type='string' description="No change"/>
|
||||||
|
</family>
|
||||||
|
</variables>
|
||||||
|
<constraints>
|
||||||
|
<fill name="calc_val" target="newvar">
|
||||||
|
<param type="variable">vardynval1</param>
|
||||||
|
</fill>
|
||||||
|
</constraints>
|
||||||
|
</rougail>
|
|
@ -0,0 +1 @@
|
||||||
|
{"rougail.general.varname": ["val1", "val2"], "rougail.dynval1.vardynval1": "val", "rougail.dynval2.vardynval2": "val", "rougail.new.newvar": "val"}
|
|
@ -8,4 +8,11 @@ try:
|
||||||
except:
|
except:
|
||||||
from tiramisu import *
|
from tiramisu import *
|
||||||
from rougail.tiramisu import ConvertDynOptionDescription
|
from rougail.tiramisu import ConvertDynOptionDescription
|
||||||
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[])
|
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({'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])
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<rougail>
|
||||||
|
<variables>
|
||||||
|
<family name='general'>
|
||||||
|
<variable name='varname' type='string' description="No change" multi="True">
|
||||||
|
<value>val1</value>
|
||||||
|
<value>val2</value>
|
||||||
|
</variable>
|
||||||
|
</family>
|
||||||
|
<family name='dyn' dynamic="varname">
|
||||||
|
<variable name='vardyn' type='string' description="No change">
|
||||||
|
<value>val</value>
|
||||||
|
</variable>
|
||||||
|
</family>
|
||||||
|
<family name='new'>
|
||||||
|
<variable name='newvar' type='string' description="No change"/>
|
||||||
|
</family>
|
||||||
|
</variables>
|
||||||
|
<constraints>
|
||||||
|
<fill name="calc_val" target="vardyn">
|
||||||
|
<param type="suffix"/>
|
||||||
|
</fill>
|
||||||
|
</constraints>
|
||||||
|
</rougail>
|
|
@ -0,0 +1 @@
|
||||||
|
{"rougail.general.varname": ["val1", "val2"], "rougail.dynval1.vardynval1": "val1", "rougail.dynval2.vardynval2": "val2", "rougail.new.newvar": null}
|
|
@ -0,0 +1,18 @@
|
||||||
|
from importlib.machinery import SourceFileLoader
|
||||||
|
func = SourceFileLoader('func', 'tests/dictionaries/../eosfunc/test.py').load_module()
|
||||||
|
for key, value in dict(locals()).items():
|
||||||
|
if key != ['SourceFileLoader', 'func']:
|
||||||
|
setattr(func, key, value)
|
||||||
|
try:
|
||||||
|
from tiramisu3 import *
|
||||||
|
except:
|
||||||
|
from tiramisu import *
|
||||||
|
from rougail.tiramisu import ConvertDynOptionDescription
|
||||||
|
option_3 = 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, default=Calculation(func.calc_val, Params((ParamSuffix()), kwargs={})))
|
||||||
|
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({'normal'}), name='newvar', doc='No change', multi=False)
|
||||||
|
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])
|
|
@ -0,0 +1,15 @@
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<rougail>
|
||||||
|
<variables>
|
||||||
|
<family name="general">
|
||||||
|
<variable name="mode_conteneur_actif" type="string" description="No change" hidden="True"/>
|
||||||
|
</family>
|
||||||
|
</variables>
|
||||||
|
<constraints>
|
||||||
|
<fill name="calc_val" target="mode_conteneur_actif">
|
||||||
|
<param>value</param>
|
||||||
|
</fill>
|
||||||
|
</constraints>
|
||||||
|
</rougail>
|
||||||
|
<!-- vim: ts=4 sw=4 expandtab
|
||||||
|
-->
|
|
@ -0,0 +1 @@
|
||||||
|
{"rougail.general.mode_conteneur_actif": "value"}
|
|
@ -8,4 +8,7 @@ try:
|
||||||
except:
|
except:
|
||||||
from tiramisu import *
|
from tiramisu import *
|
||||||
from rougail.tiramisu import ConvertDynOptionDescription
|
from rougail.tiramisu import ConvertDynOptionDescription
|
||||||
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[])
|
option_3 = StrOption(properties=frozenset({'force_default_on_freeze', 'frozen', 'hidden', '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])
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<rougail>
|
||||||
|
<variables>
|
||||||
|
<family name="general">
|
||||||
|
<variable name="mode_conteneur_actif" type="string" description="No change"/>
|
||||||
|
</family>
|
||||||
|
</variables>
|
||||||
|
<constraints>
|
||||||
|
<fill name="calc_val" target="mode_conteneur_actif">
|
||||||
|
<param>value</param>
|
||||||
|
</fill>
|
||||||
|
</constraints>
|
||||||
|
</rougail>
|
|
@ -1 +1 @@
|
||||||
{}
|
{"rougail.general.mode_conteneur_actif": "value"}
|
||||||
|
|
|
@ -8,4 +8,7 @@ try:
|
||||||
except:
|
except:
|
||||||
from tiramisu import *
|
from tiramisu import *
|
||||||
from rougail.tiramisu import ConvertDynOptionDescription
|
from rougail.tiramisu import ConvertDynOptionDescription
|
||||||
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[])
|
option_3 = StrOption(properties=frozenset({'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])
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<rougail>
|
||||||
|
<variables>
|
||||||
|
<family name="general">
|
||||||
|
<variable name="mode_conteneur_actif" type="oui/non" description="No change">
|
||||||
|
<value>non</value>
|
||||||
|
</variable>
|
||||||
|
</family>
|
||||||
|
<family name="general2" hidden="True">
|
||||||
|
<variable name="mode_conteneur_actif2" type="oui/non" description="No change">
|
||||||
|
<value>non</value>
|
||||||
|
</variable>
|
||||||
|
<variable name="mode_conteneur_actif3" type="string" description="No change"/>
|
||||||
|
</family>
|
||||||
|
</variables>
|
||||||
|
<constraints>
|
||||||
|
<check name="valid_enum" target="mode_conteneur_actif3">
|
||||||
|
<param>a</param>
|
||||||
|
<param>b</param>
|
||||||
|
<param>c</param>
|
||||||
|
</check>
|
||||||
|
<condition name="disabled_if_in" source="mode_conteneur_actif3">
|
||||||
|
<param>d</param>
|
||||||
|
<target type="variable">mode_conteneur_actif</target>
|
||||||
|
</condition>
|
||||||
|
<condition name="disabled_if_not_in" source="mode_conteneur_actif3">
|
||||||
|
<param>d</param>
|
||||||
|
<target type="variable">mode_conteneur_actif2</target>
|
||||||
|
</condition>
|
||||||
|
</constraints>
|
||||||
|
</rougail>
|
||||||
|
<!-- vim: ts=4 sw=4 expandtab
|
||||||
|
-->
|
|
@ -0,0 +1 @@
|
||||||
|
{"rougail.general.mode_conteneur_actif": "non", "rougail.general2.mode_conteneur_actif3": "a"}
|
|
@ -8,4 +8,10 @@ try:
|
||||||
except:
|
except:
|
||||||
from tiramisu import *
|
from tiramisu import *
|
||||||
from rougail.tiramisu import ConvertDynOptionDescription
|
from rougail.tiramisu import ConvertDynOptionDescription
|
||||||
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[])
|
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])
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<rougail>
|
||||||
|
<variables>
|
||||||
|
<family name="general">
|
||||||
|
<variable name="mode_conteneur_actif" type="string" description="Redefine description" hidden="True"/>
|
||||||
|
</family>
|
||||||
|
</variables>
|
||||||
|
<constraints>
|
||||||
|
<check name="valid_enum" target="mode_conteneur_actif">
|
||||||
|
<param>a</param>
|
||||||
|
<param>b</param>
|
||||||
|
<param>c</param>
|
||||||
|
</check>
|
||||||
|
</constraints>
|
||||||
|
</rougail>
|
||||||
|
<!-- vim: ts=4 sw=4 expandtab
|
||||||
|
-->
|
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<rougail>
|
||||||
|
<variables>
|
||||||
|
<family name="general">
|
||||||
|
<variable name="mode_conteneur_actif" redefine="True" remove_check="True"/>
|
||||||
|
</family>
|
||||||
|
</variables>
|
||||||
|
<constraints>
|
||||||
|
<check name="valid_enum" target="mode_conteneur_actif">
|
||||||
|
<param>a</param>
|
||||||
|
<param>b</param>
|
||||||
|
</check>
|
||||||
|
</constraints>
|
||||||
|
</rougail>
|
||||||
|
<!-- vim: ts=4 sw=4 expandtab
|
||||||
|
-->
|
|
@ -0,0 +1 @@
|
||||||
|
{"rougail.general.mode_conteneur_actif": "a"}
|
|
@ -8,4 +8,7 @@ try:
|
||||||
except:
|
except:
|
||||||
from tiramisu import *
|
from tiramisu import *
|
||||||
from rougail.tiramisu import ConvertDynOptionDescription
|
from rougail.tiramisu import ConvertDynOptionDescription
|
||||||
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[])
|
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])
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<rougail>
|
||||||
|
<variables>
|
||||||
|
<family name='general'>
|
||||||
|
<variable name='varname' type='string' description="No change" multi="True">
|
||||||
|
<value>val1</value>
|
||||||
|
<value>val2</value>
|
||||||
|
</variable>
|
||||||
|
</family>
|
||||||
|
<family name='dyn' dynamic="varname">
|
||||||
|
<variable name='vardyn' type='string' description="No change">
|
||||||
|
<value>val</value>
|
||||||
|
</variable>
|
||||||
|
</family>
|
||||||
|
<family name='new'>
|
||||||
|
<variable name='newvar' type='string' description="No change"/>
|
||||||
|
</family>
|
||||||
|
</variables>
|
||||||
|
<constraints>
|
||||||
|
<fill name="calc_val" target="newvar">
|
||||||
|
<param type="suffix"/>
|
||||||
|
</fill>
|
||||||
|
</constraints>
|
||||||
|
</rougail>
|
|
@ -0,0 +1,33 @@
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<rougail>
|
||||||
|
<variables>
|
||||||
|
<family name="general" mode="expert">
|
||||||
|
<variable name="mode_conteneur_actif" type="oui/non" description="No change">
|
||||||
|
<value>non</value>
|
||||||
|
</variable>
|
||||||
|
</family>
|
||||||
|
<family name="enumfam" mode="expert">
|
||||||
|
<variable name="enumvar2" type="string" description="multi">
|
||||||
|
<value>c</value>
|
||||||
|
</variable>
|
||||||
|
<variable name="enumvar" type="string" description="multi" help="bla bla bla">
|
||||||
|
<value>c</value>
|
||||||
|
</variable>
|
||||||
|
</family>
|
||||||
|
</variables>
|
||||||
|
|
||||||
|
<constraints>
|
||||||
|
<check name="valid_enum" target="enumvar">
|
||||||
|
<param>a</param>
|
||||||
|
<param>b</param>
|
||||||
|
<param>c</param>
|
||||||
|
</check>
|
||||||
|
<check name="valid_enum" target="enumvar2">
|
||||||
|
<param>a</param>
|
||||||
|
<param>b</param>
|
||||||
|
<param>c</param>
|
||||||
|
</check>
|
||||||
|
</constraints>
|
||||||
|
</rougail>
|
||||||
|
<!-- vim: ts=4 sw=4 expandtab
|
||||||
|
-->
|
|
@ -0,0 +1,19 @@
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<rougail>
|
||||||
|
<variables>
|
||||||
|
<family name="enumfam" mode="expert">
|
||||||
|
<variable name="enumvar" redefine="True">
|
||||||
|
<value>c</value>
|
||||||
|
</variable>
|
||||||
|
</family>
|
||||||
|
</variables>
|
||||||
|
|
||||||
|
<constraints>
|
||||||
|
<check name="valid_enum" target="enumvar">
|
||||||
|
<param>a</param>
|
||||||
|
<param>c</param>
|
||||||
|
</check>
|
||||||
|
</constraints>
|
||||||
|
</rougail>
|
||||||
|
<!-- vim: ts=4 sw=4 expandtab
|
||||||
|
-->
|
|
@ -0,0 +1,23 @@
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<rougail>
|
||||||
|
<variables>
|
||||||
|
<family name="general">
|
||||||
|
<variable name="mode_conteneur_actif" type="string" description="No change">
|
||||||
|
<value>a</value>
|
||||||
|
</variable>
|
||||||
|
<variable name="var" type="string" description="New variable" multi="True">
|
||||||
|
<value>a</value>
|
||||||
|
<value>b</value>
|
||||||
|
<value>c</value>
|
||||||
|
</variable>
|
||||||
|
</family>
|
||||||
|
</variables>
|
||||||
|
<constraints>
|
||||||
|
<check name="valid_enum" target="mode_conteneur_actif">
|
||||||
|
<param type="variable">var</param>
|
||||||
|
<param>d</param>
|
||||||
|
</check>
|
||||||
|
</constraints>
|
||||||
|
</rougail>
|
||||||
|
<!-- vim: ts=4 sw=4 expandtab
|
||||||
|
-->
|
|
@ -0,0 +1,28 @@
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<rougail>
|
||||||
|
<variables>
|
||||||
|
<family name="general">
|
||||||
|
<variable name="mode_conteneur_actif" type="string" description="No change">
|
||||||
|
<value>a</value>
|
||||||
|
</variable>
|
||||||
|
<variable name="var" type="string" description="New variable" multi="True">
|
||||||
|
<value>a</value>
|
||||||
|
<value>b</value>
|
||||||
|
<value>c</value>
|
||||||
|
</variable>
|
||||||
|
<variable name="var2" type="string" description="New variable" multi="True">
|
||||||
|
<value>a</value>
|
||||||
|
<value>b</value>
|
||||||
|
<value>c</value>
|
||||||
|
</variable>
|
||||||
|
</family>
|
||||||
|
</variables>
|
||||||
|
<constraints>
|
||||||
|
<check name="valid_enum" target="mode_conteneur_actif">
|
||||||
|
<param type="variable">var</param>
|
||||||
|
<param type="variable">var2</param>
|
||||||
|
</check>
|
||||||
|
</constraints>
|
||||||
|
</rougail>
|
||||||
|
<!-- vim: ts=4 sw=4 expandtab
|
||||||
|
-->
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<rougail>
|
||||||
|
<variables>
|
||||||
|
<family name="general" mode="expert">
|
||||||
|
<variable name="mode_conteneur_actif" type="oui/non" description="No change">
|
||||||
|
<value>non</value>
|
||||||
|
</variable>
|
||||||
|
</family>
|
||||||
|
<family name="enumfam" mode="expert">
|
||||||
|
<variable name="enumvar" type="string" description="multi" help="bla bla bla">
|
||||||
|
<value>c</value>
|
||||||
|
</variable>
|
||||||
|
</family>
|
||||||
|
<separators/>
|
||||||
|
</variables>
|
||||||
|
|
||||||
|
<constraints>
|
||||||
|
<check name="valid_enum" target="enumvar"/>
|
||||||
|
</constraints>
|
||||||
|
</rougail>
|
||||||
|
<!-- vim: ts=4 sw=4 expandtab
|
||||||
|
-->
|
|
@ -0,0 +1,20 @@
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<rougail>
|
||||||
|
<variables>
|
||||||
|
<family name="general">
|
||||||
|
<variable name="mode_conteneur_actif" type="string" description="No change">
|
||||||
|
<value>a</value>
|
||||||
|
</variable>
|
||||||
|
<variable name="var" type="string" description="New variable">
|
||||||
|
<value>a</value>
|
||||||
|
</variable>
|
||||||
|
</family>
|
||||||
|
</variables>
|
||||||
|
<constraints>
|
||||||
|
<check name="valid_enum" target="mode_conteneur_actif">
|
||||||
|
<param type="variable">var</param>
|
||||||
|
</check>
|
||||||
|
</constraints>
|
||||||
|
</rougail>
|
||||||
|
<!-- vim: ts=4 sw=4 expandtab
|
||||||
|
-->
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<rougail>
|
||||||
|
<variables>
|
||||||
|
<family name="general" mode="expert">
|
||||||
|
<variable name="mode_conteneur_actif" type="oui/non" description="No change">
|
||||||
|
<value>non</value>
|
||||||
|
</variable>
|
||||||
|
</family>
|
||||||
|
<family name="enumfam" mode="expert">
|
||||||
|
<variable name="enumvar" type="number" description="enumvar" help="bla bla bla"/>
|
||||||
|
</family>
|
||||||
|
</variables>
|
||||||
|
|
||||||
|
<constraints>
|
||||||
|
<check name="valid_enum" target="enumvar">
|
||||||
|
<param type="number"/>
|
||||||
|
</check>
|
||||||
|
</constraints>
|
||||||
|
|
||||||
|
</rougail>
|
||||||
|
<!-- vim: ts=4 sw=4 expandtab
|
||||||
|
-->
|
|
@ -5,7 +5,7 @@ from pytest import fixture, raises
|
||||||
from os import listdir
|
from os import listdir
|
||||||
from json import load
|
from json import load
|
||||||
|
|
||||||
from rougail import Rougail, annotator
|
from rougail import Rougail
|
||||||
from rougail.error import DictConsistencyError
|
from rougail.error import DictConsistencyError
|
||||||
from rougail.config import Config
|
from rougail.config import Config
|
||||||
|
|
||||||
|
@ -28,9 +28,10 @@ excludes = set([])
|
||||||
#excludes = set(['01base_file_utfchar'])
|
#excludes = set(['01base_file_utfchar'])
|
||||||
test_ok -= excludes
|
test_ok -= excludes
|
||||||
test_raise -= excludes
|
test_raise -= excludes
|
||||||
#test_ok = ['40condition_base_add']
|
#test_ok = ['10valid_enum_eosfunc']
|
||||||
#test_ok = []
|
#test_ok = []
|
||||||
#test_raise = ['80redefine_double_error']
|
#test_raise = ['80redefine_double_error']
|
||||||
|
#test_raise = []
|
||||||
|
|
||||||
ORI_DIR = getcwd()
|
ORI_DIR = getcwd()
|
||||||
|
|
||||||
|
@ -70,6 +71,8 @@ def launch_flattener(test_dir, test_ok=False):
|
||||||
Config['patch_dir'] = join(test_dir, 'patches')
|
Config['patch_dir'] = join(test_dir, 'patches')
|
||||||
eolobj.space_visitor(eosfunc)
|
eolobj.space_visitor(eosfunc)
|
||||||
tiramisu_objects = eolobj.save()
|
tiramisu_objects = eolobj.save()
|
||||||
|
if 'children=[]' in tiramisu_objects.split('\n')[-2]:
|
||||||
|
raise Exception('empty tiramisu object?')
|
||||||
tiramisu_dir = join(test_dir, 'tiramisu')
|
tiramisu_dir = join(test_dir, 'tiramisu')
|
||||||
if isdir(tiramisu_dir):
|
if isdir(tiramisu_dir):
|
||||||
tiramisu_file = join(tiramisu_dir, 'base.py')
|
tiramisu_file = join(tiramisu_dir, 'base.py')
|
||||||
|
|
|
@ -43,6 +43,7 @@ async def launch_flattener(test_dir):
|
||||||
for token in modulepath.split(".")[1:]:
|
for token in modulepath.split(".")[1:]:
|
||||||
mod = getattr(mod, token)
|
mod = getattr(mod, token)
|
||||||
config = await Config(mod.option_0)
|
config = await Config(mod.option_0)
|
||||||
|
await config.information.set('test_information', 'value')
|
||||||
await config.property.read_only()
|
await config.property.read_only()
|
||||||
await config.property.pop('mandatory')
|
await config.property.pop('mandatory')
|
||||||
await config.information.set('info', 'value')
|
await config.information.set('info', 'value')
|
||||||
|
@ -50,7 +51,7 @@ async def launch_flattener(test_dir):
|
||||||
if config_dict:
|
if config_dict:
|
||||||
if not isdir(makedict_dir):
|
if not isdir(makedict_dir):
|
||||||
mkdir(makedict_dir)
|
mkdir(makedict_dir)
|
||||||
if debug:
|
if not isfile(makedict_file) or debug:
|
||||||
with open(makedict_file, 'w') as fh:
|
with open(makedict_file, 'w') as fh:
|
||||||
dump(config_dict, fh)
|
dump(config_dict, fh)
|
||||||
fh.write('\n')
|
fh.write('\n')
|
||||||
|
|
Loading…
Reference in New Issue