personaze mode

This commit is contained in:
Emmanuel Garette 2021-02-22 19:28:51 +01:00
parent 38e54fe187
commit 2ca7b9a6fc
41 changed files with 204 additions and 82 deletions

View File

@ -73,3 +73,22 @@ Le répertoire de destination des fichiers générés est géré dans la clef "d
## La variable auto_freeze ## La variable auto_freeze
La propriété auto_freeze n'est appliqué que une variable spécifique passe à True. Par défaut le nom de la variable est "instancied_module", mais il est possible de changer le nom de cette variable via la clef "auto_freeze_variable". La propriété auto_freeze n'est appliqué que une variable spécifique passe à True. Par défaut le nom de la variable est "instancied_module", mais il est possible de changer le nom de cette variable via la clef "auto_freeze_variable".
## Les modes
Les modes sont personnalisables dans Rougail. Par défaut les modes sont "basic", "normal" et "expert".
Il est possible de changer cette liste via la clef "modes_level".
Si vous changer ces valeurs, penser à changer les modes par défaut des familles et des variables.
## Le mode par défaut pour une famille
Le mode par défaut d'une famille est "basic". Il est possible de changer le mode par défaut d'une famille via la clef "default_family_mode".
## Le mode par défaut pour une variable
Le mode par défaut d'une variable est "normal". Il est possible de changer le mode par défaut d'une variable via la clef "default_variable_mode".
## Le nom des fonctions internes
Il est possible d'ajouter des fonctions interne via la clef "internal_functions".

View File

@ -1,8 +1,10 @@
Mode Mode
==== ====
Il existe trois "mode" dans Rougail : Par défault, il existe trois "mode" dans Rougail :
- basic : variables indispensables à la mise en place d'un service - basic : variables indispensables à la mise en place d'un service
- normal : variables couramment modifié par l'utilisateur - normal : variables couramment modifié par l'utilisateur
- expert : variables a manipuler avec précausion et en toute connaissance de cause - expert : variables a manipuler avec précausion et en toute connaissance de cause
Il est possible de personnaliser les modes dans la [configuration de rougail](dev/config.md)

View File

@ -27,6 +27,5 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
from .convert import RougailConvert from .convert import RougailConvert
from .template.systemd import RougailSystemdTemplate from .template.systemd import RougailSystemdTemplate
from .config import RougailConfig from .config import RougailConfig
from .annotator import modes
__ALL__ = ('RougailConvert', 'RougailSystemdTemplate', 'RougailConfig', 'modes') __ALL__ = ('RougailConvert', 'RougailSystemdTemplate', 'RougailConfig')

View File

@ -31,11 +31,11 @@ from .check import CheckAnnotator
from .value import ValueAnnotator from .value import ValueAnnotator
from .condition import ConditionAnnotator from .condition import ConditionAnnotator
from .fill import FillAnnotator from .fill import FillAnnotator
from .family import FamilyAnnotator, modes from .family import FamilyAnnotator
from .property import PropertyAnnotator from .property import PropertyAnnotator
class SpaceAnnotator: # pylint: disable=R0903 class SpaceAnnotator: # pylint: disable=R0903
"""Transformations applied on a CreoleObjSpace instance """Transformations applied on a object instance
""" """
def __init__(self, objectspace, eosfunc_file): def __init__(self, objectspace, eosfunc_file):
self.objectspace = objectspace self.objectspace = objectspace
@ -54,4 +54,4 @@ class SpaceAnnotator: # pylint: disable=R0903
PropertyAnnotator(objectspace) PropertyAnnotator(objectspace)
__all__ = ('SpaceAnnotator', 'CONVERT_OPTION', 'modes') __all__ = ('SpaceAnnotator', 'CONVERT_OPTION')

View File

@ -50,6 +50,7 @@ class CheckAnnotator(TargetAnnotator, ParamAnnotator):
self.only_variable = True self.only_variable = True
self.functions = dir(load_modules(eosfunc_file)) self.functions = dir(load_modules(eosfunc_file))
self.functions.extend(INTERNAL_FUNCTIONS) self.functions.extend(INTERNAL_FUNCTIONS)
self.functions.extend(self.objectspace.rougailconfig['internal_functions'])
self.target_is_uniq = False self.target_is_uniq = False
self.convert_target(self.objectspace.space.constraints.check) self.convert_target(self.objectspace.space.constraints.check)
self.convert_param(self.objectspace.space.constraints.check) self.convert_param(self.objectspace.space.constraints.check)

View File

@ -72,13 +72,16 @@ class ConditionAnnotator(TargetAnnotator, ParamAnnotator, Walk):
only if auto_freeze_variable is True this variable is frozen only if auto_freeze_variable is True this variable is frozen
""" """
for variable in self.get_variables(): for variable in self.get_variables():
if not variable.auto_freeze: if not variable.auto_freeze and not variable.auto_save:
continue continue
if variable.namespace != self.objectspace.rougailconfig['variable_namespace']: if variable.namespace != self.objectspace.rougailconfig['variable_namespace']:
msg = _(f'auto_freeze is not allowed in extra "{variable.namespace}"') msg = _(f'auto_freeze is not allowed in extra "{variable.namespace}"')
raise DictConsistencyError(msg, 49, variable.xmlfiles) raise DictConsistencyError(msg, 49, variable.xmlfiles)
new_condition = self.objectspace.condition(variable.xmlfiles) new_condition = self.objectspace.condition(variable.xmlfiles)
if variable.auto_freeze:
new_condition.name = 'auto_frozen_if_not_in' new_condition.name = 'auto_frozen_if_not_in'
else:
new_condition.name = 'auto_saved_if_not_in'
new_condition.namespace = variable.namespace new_condition.namespace = variable.namespace
new_condition.source = self.objectspace.rougailconfig['auto_freeze_variable'] new_condition.source = self.objectspace.rougailconfig['auto_freeze_variable']
new_param = self.objectspace.param(variable.xmlfiles) new_param = self.objectspace.param(variable.xmlfiles)
@ -147,7 +150,9 @@ class ConditionAnnotator(TargetAnnotator, ParamAnnotator, Walk):
if condition_name.startswith('hidden_if_'): if condition_name.startswith('hidden_if_'):
return ['hidden', 'frozen', 'force_default_on_freeze'] return ['hidden', 'frozen', 'force_default_on_freeze']
if condition_name == 'auto_frozen_if_not_in': if condition_name == 'auto_frozen_if_not_in':
return ['auto_frozen'] return ['force_store_value', 'frozen']
if condition_name == 'auto_saved_if_not_in':
return ['force_store_value']
return [condition_name.split('_', 1)[0]] return [condition_name.split('_', 1)[0]]
def _get_family_variables_from_target(self, def _get_family_variables_from_target(self,

View File

@ -30,18 +30,12 @@ from ..utils import normalize_family
from .variable import Walk from .variable import Walk
#mode order is important
modes_level = ('basic', 'normal', 'expert')
class Mode: # pylint: disable=R0903 class Mode: # pylint: disable=R0903
"""Class to manage mode level """Class to manage mode level
""" """
def __init__(self, def __init__(self,
name: str,
level: int, level: int,
) -> None: ) -> None:
self.name = name
self.level = level self.level = level
def __gt__(self, def __gt__(self,
@ -50,9 +44,6 @@ class Mode: # pylint: disable=R0903
return other.level < self.level return other.level < self.level
modes = {name: Mode(name, idx) for idx, name in enumerate(modes_level)}
class FamilyAnnotator(Walk): class FamilyAnnotator(Walk):
"""Annotate family """Annotate family
""" """
@ -62,6 +53,7 @@ class FamilyAnnotator(Walk):
self.objectspace = objectspace self.objectspace = objectspace
if not hasattr(self.objectspace.space, 'variables'): if not hasattr(self.objectspace.space, 'variables'):
return return
self.modes = {name: Mode(idx) for idx, name in enumerate(self.objectspace.rougailconfig['modes_level'])}
self.remove_empty_families() self.remove_empty_families()
self.family_names() self.family_names()
self.change_modes() self.change_modes()
@ -104,13 +96,34 @@ class FamilyAnnotator(Walk):
def change_modes(self): def change_modes(self):
"""change the mode of variables """change the mode of variables
""" """
modes_level = self.objectspace.rougailconfig['modes_level']
default_variable_mode = self.objectspace.rougailconfig['default_variable_mode']
if default_variable_mode not in modes_level:
msg = _(f'default variable mode "{default_variable_mode}" is not a valid mode, '
f'valid modes are {modes_level}')
raise DictConsistencyError(msg, 72, None)
default_family_mode = self.objectspace.rougailconfig['default_family_mode']
if default_family_mode not in modes_level:
msg = _(f'default family mode "{default_family_mode}" is not a valid mode, '
f'valid modes are {modes_level}')
raise DictConsistencyError(msg, 73, None)
families = list(self.get_families()) families = list(self.get_families())
for family in families: for family in families:
self.valid_mode(family)
self._set_default_mode(family) self._set_default_mode(family)
families.reverse() families.reverse()
for family in families: for family in families:
self._change_family_mode(family) self._change_family_mode(family)
def valid_mode(self,
obj,
) -> None:
modes_level = self.objectspace.rougailconfig['modes_level']
if hasattr(obj, 'mode') and obj.mode not in modes_level:
msg = _(f'mode "{obj.mode}" for "{obj.name}" is not a valid mode, '
f'valid modes are {modes_level}')
raise DictConsistencyError(msg, 71, obj.xmlfiles)
def _set_default_mode(self, def _set_default_mode(self,
family: 'self.objectspace.family', family: 'self.objectspace.family',
) -> None: ) -> None:
@ -121,6 +134,7 @@ class FamilyAnnotator(Walk):
if not hasattr(family, 'variable'): if not hasattr(family, 'variable'):
return return
for variable in family.variable.values(): for variable in family.variable.values():
self.valid_mode(variable)
if isinstance(variable, self.objectspace.family): if isinstance(variable, self.objectspace.family):
if family_mode and not self._has_mode(variable): if family_mode and not self._has_mode(variable):
self._set_auto_mode(variable, family_mode) self._set_auto_mode(variable, family_mode)
@ -143,13 +157,13 @@ class FamilyAnnotator(Walk):
# if its mode is not defined by the user # if its mode is not defined by the user
if not self._has_mode(variable) and \ if not self._has_mode(variable) and \
(variable.auto_save is True or variable.auto_freeze is True): (variable.auto_save is True or variable.auto_freeze is True):
self._set_auto_mode(variable, modes_level[0]) variable.mode = self.objectspace.rougailconfig['modes_level'][0]
# mandatory variable without value is a basic variable # mandatory variable without value is a basic variable
elif not self._has_mode(variable) and \ elif not self._has_mode(variable) and \
variable.mandatory is True and \ variable.mandatory is True and \
not hasattr(variable, 'default') and \ not hasattr(variable, 'default') and \
not hasattr(variable, 'default_multi'): not hasattr(variable, 'default_multi'):
self._set_auto_mode(variable, modes_level[0]) variable.mode = self.objectspace.rougailconfig['modes_level'][0]
elif family_mode and not self._has_mode(variable): elif family_mode and not self._has_mode(variable):
self._set_auto_mode(variable, family_mode) self._set_auto_mode(variable, family_mode)
@ -164,6 +178,7 @@ class FamilyAnnotator(Walk):
) -> None: ) -> None:
leader_mode = None leader_mode = None
for follower in leadership.variable: for follower in leadership.variable:
self.valid_mode(follower)
if follower.auto_save is True: if follower.auto_save is True:
msg = _(f'leader/followers "{follower.name}" could not be auto_save') msg = _(f'leader/followers "{follower.name}" could not be auto_save')
raise DictConsistencyError(msg, 29, leadership.xmlfiles) raise DictConsistencyError(msg, 29, leadership.xmlfiles)
@ -171,14 +186,18 @@ class FamilyAnnotator(Walk):
msg = f'leader/followers "{follower.name}" could not be auto_freeze' msg = f'leader/followers "{follower.name}" could not be auto_freeze'
raise DictConsistencyError(_(msg), 30, leadership.xmlfiles) raise DictConsistencyError(_(msg), 30, leadership.xmlfiles)
if leader_mode is not None: if leader_mode is not None:
if modes[leader_mode] > modes[follower.mode]: if hasattr(follower, 'mode'):
follower_mode = follower.mode
else:
follower_mode = self.objectspace.rougailconfig['default_variable_mode']
if self.modes[leader_mode] > self.modes[follower_mode]:
if self._has_mode(follower) and not self._has_mode(leadership.variable[0]): if self._has_mode(follower) and not self._has_mode(leadership.variable[0]):
# if follower has mode but not the leader # if follower has mode but not the leader
self._set_auto_mode(leadership.variable[0], follower.mode) self._set_auto_mode(leadership.variable[0], follower_mode)
else: else:
# leader's mode is minimum level # leader's mode is minimum level
if self._has_mode(follower): if self._has_mode(follower):
msg = _(f'the follower "{follower.name}" is in "{follower.mode}" mode ' msg = _(f'the follower "{follower.name}" is in "{follower_mode}" mode '
f'but leader have the higher mode "{leader_mode}"') f'but leader have the higher mode "{leader_mode}"')
raise DictConsistencyError(msg, 63, follower.xmlfiles) raise DictConsistencyError(msg, 63, follower.xmlfiles)
self._set_auto_mode(follower, leader_mode) self._set_auto_mode(follower, leader_mode)
@ -186,8 +205,13 @@ class FamilyAnnotator(Walk):
family_mode, family_mode,
) )
if leader_mode is None: if leader_mode is None:
if hasattr(leadership.variable[0], 'mode'):
leader_mode = leadership.variable[0].mode leader_mode = leadership.variable[0].mode
self._set_auto_mode(leadership, leadership.variable[0].mode) else:
leader_mode = self.objectspace.rougailconfig['default_variable_mode']
if hasattr(leadership.variable[0], 'mode'):
leader_mode = leadership.variable[0].mode
self._set_auto_mode(leadership, leader_mode)
def _change_family_mode(self, def _change_family_mode(self,
family: 'self.objectspace.family', family: 'self.objectspace.family',
@ -195,8 +219,8 @@ class FamilyAnnotator(Walk):
if hasattr(family, 'mode'): if hasattr(family, 'mode'):
family_mode = family.mode family_mode = family.mode
else: else:
family_mode = modes_level[1] family_mode = self.objectspace.rougailconfig['default_family_mode']
min_variable_mode = modes_level[-1] min_variable_mode = self.objectspace.rougailconfig['modes_level'][-1]
# change variable mode, but not if variables are not in a family # change variable mode, but not if variables are not in a family
if hasattr(family, 'variable'): if hasattr(family, 'variable'):
for variable in family.variable.values(): for variable in family.variable.values():
@ -208,9 +232,12 @@ class FamilyAnnotator(Walk):
func(variable, func(variable,
family_mode, family_mode,
) )
if modes[min_variable_mode] > modes[variable.mode]: elif not hasattr(variable, 'mode'):
variable.mode = self.objectspace.rougailconfig['default_family_mode']
if self.modes[min_variable_mode] > self.modes[variable.mode]:
min_variable_mode = variable.mode min_variable_mode = variable.mode
if hasattr(family, 'mode') and family.mode != min_variable_mode: if isinstance(family, self.objectspace.family) and \
(not hasattr(family, 'mode') or family.mode != min_variable_mode):
# set the lower variable mode to family # set the lower variable mode to family
if self._has_mode(family): if self._has_mode(family):
msg = _(f'the family "{family.name}" is in "{family.mode}" mode but variables and ' msg = _(f'the family "{family.name}" is in "{family.mode}" mode but variables and '
@ -222,13 +249,19 @@ class FamilyAnnotator(Walk):
variable, variable,
family_mode: str, family_mode: str,
) -> None: ) -> None:
if hasattr(variable, 'mode'):
variable_mode = variable.mode
else:
variable_mode = self.objectspace.rougailconfig['default_variable_mode']
# none basic variable in high level family has to be in high level # none basic variable in high level family has to be in high level
if modes[variable.mode] < modes[family_mode]: if self.modes[variable_mode] < self.modes[family_mode]:
if self._has_mode(variable): if self._has_mode(variable):
msg = _(f'the variable "{variable.name}" is in "{variable.mode}" mode ' msg = _(f'the variable "{variable.name}" is in "{variable_mode}" mode '
f'but family has the higher family mode "{family_mode}"') f'but family has the higher family mode "{family_mode}"')
raise DictConsistencyError(msg, 61, variable.xmlfiles) raise DictConsistencyError(msg, 61, variable.xmlfiles)
self._set_auto_mode(variable, family_mode) self._set_auto_mode(variable, family_mode)
if not hasattr(variable, 'mode'):
variable.mode = variable_mode
def _change_variable_mode_leader(self, def _change_variable_mode_leader(self,
leadership, leadership,

View File

@ -29,11 +29,8 @@ from ..error import DictConsistencyError
from .variable import Walk from .variable import Walk
PROPERTIES = ('hidden', 'frozen', 'auto_freeze', 'auto_save', 'force_default_on_freeze', PROPERTIES = ('hidden', 'frozen', 'force_default_on_freeze',
'force_store_value', 'disabled', 'mandatory') 'force_store_value', 'disabled', 'mandatory')
CONVERT_PROPERTIES = {'auto_save': ['force_store_value'],
'auto_freeze': ['force_store_value', 'auto_freeze'],
}
class PropertyAnnotator(Walk): class PropertyAnnotator(Walk):
@ -54,6 +51,7 @@ class PropertyAnnotator(Walk):
""" """
# hidden variable is also frozen # hidden variable is also frozen
if isinstance(variable, self.objectspace.variable) and variable.hidden is True: if isinstance(variable, self.objectspace.variable) and variable.hidden is True:
if not variable.auto_freeze:
variable.frozen = True variable.frozen = True
if not variable.auto_save and \ if not variable.auto_save and \
not variable.auto_freeze and \ not variable.auto_freeze and \
@ -64,8 +62,8 @@ class PropertyAnnotator(Walk):
for prop in PROPERTIES: for prop in PROPERTIES:
if hasattr(variable, prop): if hasattr(variable, prop):
if getattr(variable, prop) is True: if getattr(variable, prop) is True:
for subprop in CONVERT_PROPERTIES.get(prop, [prop]): # for subprop in CONVERT_PROPERTIES.get(prop, [prop]):
variable.properties.append(subprop) variable.properties.append(prop)
setattr(variable, prop, None) setattr(variable, prop, None)
if hasattr(variable, 'mode') and variable.mode: if hasattr(variable, 'mode') and variable.mode:
variable.properties.append(variable.mode) variable.properties.append(variable.mode)

View File

@ -31,7 +31,7 @@ from ..i18n import _
from ..utils import normalize_family from ..utils import normalize_family
from ..error import DictConsistencyError from ..error import DictConsistencyError
from ..config import RougailConfig from ..config import RougailConfig
# a CreoleObjSpace's attribute has some annotations # a object's attribute has some annotations
# that shall not be present in the exported (flatened) XML # that shall not be present in the exported (flatened) XML
ERASED_ATTRIBUTES = ('redefine', 'exists', 'optional', 'remove_check', 'namespace', ERASED_ATTRIBUTES = ('redefine', 'exists', 'optional', 'remove_check', 'namespace',
'remove_condition', 'path', 'instance_mode', 'index', 'remove_condition', 'path', 'instance_mode', 'index',

View File

@ -43,4 +43,8 @@ RougailConfig = {'dictionaries_dir': [join(ROUGAILROOT, 'dictionaries')],
'variable_namespace': 'rougail', 'variable_namespace': 'rougail',
'auto_freeze_variable': 'instanciated_module', 'auto_freeze_variable': 'instanciated_module',
'default_engine': 'creole', 'default_engine': 'creole',
'internal_functions': [],
'modes_level': ['basic', 'normal', 'expert'],
'default_family_mode': 'basic',
'default_variable_mode': 'normal',
} }

View File

@ -27,12 +27,9 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Sample usage:: Sample usage::
>>> from rougail import Rougail >>> from rougail import RougailConvert
>>> rougail = Rougail() >>> rougail = RougailConvert()
>>> rougail.load_dictionaries(['/usr/share/rougail/dicos']) >>> tiramisu = rougail.save('tiramisu.py')
>>> rougail.load_extra_dictionaries('extra1', ['/usr/share/rougail/extra1'])
>>> rougail.space_visitor('/usr/share/rougail/funcs.py')
>>> tiramisu = rougail.save()
The Rougail The Rougail

View File

@ -80,7 +80,7 @@
<!ATTLIST family name CDATA #REQUIRED> <!ATTLIST family name CDATA #REQUIRED>
<!ATTLIST family description CDATA #IMPLIED> <!ATTLIST family description CDATA #IMPLIED>
<!ATTLIST family help CDATA #IMPLIED> <!ATTLIST family help CDATA #IMPLIED>
<!ATTLIST family mode (basic|normal|expert) "basic"> <!ATTLIST family mode CDATA #IMPLIED>
<!ATTLIST family hidden (True|False) "False"> <!ATTLIST family hidden (True|False) "False">
<!ATTLIST family dynamic CDATA #IMPLIED> <!ATTLIST family dynamic CDATA #IMPLIED>
@ -97,7 +97,7 @@
<!ATTLIST variable mandatory (True|False) "False"> <!ATTLIST variable mandatory (True|False) "False">
<!ATTLIST variable auto_freeze (True|False) "False"> <!ATTLIST variable auto_freeze (True|False) "False">
<!ATTLIST variable auto_save (True|False) "False"> <!ATTLIST variable auto_save (True|False) "False">
<!ATTLIST variable mode (basic|normal|expert) "normal"> <!ATTLIST variable mode CDATA #IMPLIED>
<!ATTLIST variable remove_check (True|False) "False"> <!ATTLIST variable remove_check (True|False) "False">
<!ATTLIST variable remove_condition (True|False) "False"> <!ATTLIST variable remove_condition (True|False) "False">
<!ATTLIST variable remove_fill (True|False) "False"> <!ATTLIST variable remove_fill (True|False) "False">

View File

@ -30,8 +30,7 @@ from .utils import normalize_family
class Path: class Path:
"""Helper class to handle the `path` attribute of a CreoleObjSpace """Helper class to handle the `path` attribute.
instance.
sample: path="creole.general.condition" sample: path="creole.general.condition"
""" """

View File

@ -55,7 +55,7 @@ class TiramisuReflector:
): ):
self.index = 0 self.index = 0
self.text = [] self.text = []
if isfile(funcs_path): if funcs_path and isfile(funcs_path):
self.text.extend(["from importlib.machinery import SourceFileLoader", self.text.extend(["from importlib.machinery import SourceFileLoader",
"from importlib.util import spec_from_loader, module_from_spec", "from importlib.util import spec_from_loader, module_from_spec",
f"loader = SourceFileLoader('func', '{funcs_path}')", f"loader = SourceFileLoader('func', '{funcs_path}')",

View File

@ -12,6 +12,6 @@ try:
except: except:
from tiramisu import * from tiramisu import *
option_3 = BoolOption(name="instanciated_module", doc="instanciated_module", default=False, properties=frozenset({"mandatory", "normal"})) option_3 = BoolOption(name="instanciated_module", doc="instanciated_module", default=False, properties=frozenset({"mandatory", "normal"}))
option_2 = StrOption(name="myvar", doc="myvar", default="no", properties=frozenset({"auto_freeze", "force_store_value", "mandatory", "normal", Calculation(func.calc_value, Params(ParamValue('auto_frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue(True), 'reverse_condition': ParamValue(True)}))})) option_2 = StrOption(name="myvar", doc="myvar", default="no", properties=frozenset({"basic", "mandatory", Calculation(func.calc_value, Params(ParamValue('force_store_value'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue(True), 'reverse_condition': ParamValue(True)})), Calculation(func.calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue(True), 'reverse_condition': ParamValue(True)}))}))
option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2, option_3]) option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2, option_3])
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1]) option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1])

View File

@ -12,6 +12,6 @@ try:
except: except:
from tiramisu import * from tiramisu import *
option_3 = BoolOption(name="instanciated_module", doc="instanciated_module", default=False, properties=frozenset({"mandatory", "normal"})) option_3 = BoolOption(name="instanciated_module", doc="instanciated_module", default=False, properties=frozenset({"mandatory", "normal"}))
option_2 = StrOption(name="my_var", doc="my_var", default="no", properties=frozenset({"auto_freeze", "expert", "force_store_value", "mandatory", Calculation(func.calc_value, Params(ParamValue('auto_frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue(True), 'reverse_condition': ParamValue(True)}))})) option_2 = StrOption(name="my_var", doc="my_var", default="no", properties=frozenset({"expert", "mandatory", Calculation(func.calc_value, Params(ParamValue('force_store_value'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue(True), 'reverse_condition': ParamValue(True)})), Calculation(func.calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue(True), 'reverse_condition': ParamValue(True)}))}))
option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2, option_3]) option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2, option_3])
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1]) option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1])

View File

@ -1,6 +1,7 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail version="0.9"> <rougail version="0.9">
<variables> <variables>
<variable name="instanciated_module" type="boolean"/>
<family name="général"> <family name="général">
<variable name="mode_conteneur_actif" type="string" description="No change" auto_save="True"> <variable name="mode_conteneur_actif" type="string" description="No change" auto_save="True">
<value>non</value> <value>non</value>

View File

@ -1,3 +1,4 @@
{ {
"rougail.instanciated_module": true,
"rougail.general.mode_conteneur_actif": "non" "rougail.general.mode_conteneur_actif": "non"
} }

View File

@ -11,7 +11,8 @@ try:
from tiramisu3 import * from tiramisu3 import *
except: except:
from tiramisu import * from tiramisu import *
option_3 = StrOption(name="mode_conteneur_actif", doc="No change", default="non", properties=frozenset({"basic", "force_store_value", "mandatory"})) option_2 = BoolOption(name="instanciated_module", doc="instanciated_module", default=True, properties=frozenset({"mandatory", "normal"}))
option_2 = OptionDescription(name="general", doc="général", children=[option_3], properties=frozenset({"basic"})) option_4 = StrOption(name="mode_conteneur_actif", doc="No change", default="non", properties=frozenset({"basic", "mandatory", Calculation(func.calc_value, Params(ParamValue('force_store_value'), kwargs={'condition': ParamOption(option_2, todict=True), 'expected': ParamValue(True), 'reverse_condition': ParamValue(True)}))}))
option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2]) option_3 = OptionDescription(name="general", doc="général", children=[option_4], properties=frozenset({"basic"}))
option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2, option_3])
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1]) option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1])

View File

@ -1,6 +1,7 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail version="0.9"> <rougail version="0.9">
<variables> <variables>
<variable name="instanciated_module" type="boolean"/>
<family name="général"> <family name="général">
<variable name="mode_conteneur_actif" type="string" description="No change" auto_save="True" mode="expert"> <variable name="mode_conteneur_actif" type="string" description="No change" auto_save="True" mode="expert">
<value>non</value> <value>non</value>

View File

@ -1,3 +1,4 @@
{ {
"rougail.instanciated_module": true,
"rougail.general.mode_conteneur_actif": "non" "rougail.general.mode_conteneur_actif": "non"
} }

View File

@ -11,7 +11,8 @@ try:
from tiramisu3 import * from tiramisu3 import *
except: except:
from tiramisu import * from tiramisu import *
option_3 = StrOption(name="mode_conteneur_actif", doc="No change", default="non", properties=frozenset({"expert", "force_store_value", "mandatory"})) option_2 = BoolOption(name="instanciated_module", doc="instanciated_module", default=True, properties=frozenset({"mandatory", "normal"}))
option_2 = OptionDescription(name="general", doc="général", children=[option_3], properties=frozenset({"expert"})) option_4 = StrOption(name="mode_conteneur_actif", doc="No change", default="non", properties=frozenset({"expert", "mandatory", Calculation(func.calc_value, Params(ParamValue('force_store_value'), kwargs={'condition': ParamOption(option_2, todict=True), 'expected': ParamValue(True), 'reverse_condition': ParamValue(True)}))}))
option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2]) option_3 = OptionDescription(name="general", doc="général", children=[option_4], properties=frozenset({"expert"}))
option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2, option_3])
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1]) option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1])

View File

@ -12,6 +12,6 @@ try:
except: except:
from tiramisu import * from tiramisu import *
option_2 = BoolOption(name="instanciated_module", doc="instanciated_module", default=False, properties=frozenset({"mandatory", "normal"})) option_2 = BoolOption(name="instanciated_module", doc="instanciated_module", default=False, properties=frozenset({"mandatory", "normal"}))
option_3 = StrOption(name="my_variable", doc="my_variable", default=Calculation(func.calc_val, Params((ParamValue("yes")))), properties=frozenset({"auto_freeze", "force_store_value", "frozen", "hidden", "normal", Calculation(func.calc_value, Params(ParamValue('auto_frozen'), kwargs={'condition': ParamOption(option_2, todict=True), 'expected': ParamValue(True), 'reverse_condition': ParamValue(True)}))})) option_3 = StrOption(name="my_variable", doc="my_variable", default=Calculation(func.calc_val, Params((ParamValue("yes")))), properties=frozenset({"basic", "hidden", Calculation(func.calc_value, Params(ParamValue('force_store_value'), kwargs={'condition': ParamOption(option_2, todict=True), 'expected': ParamValue(True), 'reverse_condition': ParamValue(True)})), Calculation(func.calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_2, todict=True), 'expected': ParamValue(True), 'reverse_condition': ParamValue(True)}))}))
option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2, option_3]) option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2, option_3])
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1]) option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1])

View File

@ -13,6 +13,6 @@ except:
from tiramisu import * from tiramisu import *
option_3 = StrOption(name="my_var2", doc="my_var2", default="no", properties=frozenset({"mandatory", "normal"})) option_3 = StrOption(name="my_var2", doc="my_var2", default="no", properties=frozenset({"mandatory", "normal"}))
option_4 = BoolOption(name="instanciated_module", doc="instanciated_module", default=False, properties=frozenset({"mandatory", "normal"})) option_4 = BoolOption(name="instanciated_module", doc="instanciated_module", default=False, properties=frozenset({"mandatory", "normal"}))
option_2 = StrOption(name="my_var1", doc="my_var1", default=Calculation(func.calc_val, Params((ParamOption(option_3)))), properties=frozenset({"auto_freeze", "force_store_value", "normal", Calculation(func.calc_value, Params(ParamValue('auto_frozen'), kwargs={'condition': ParamOption(option_4, todict=True), 'expected': ParamValue(True), 'reverse_condition': ParamValue(True)}))})) option_2 = StrOption(name="my_var1", doc="my_var1", default=Calculation(func.calc_val, Params((ParamOption(option_3)))), properties=frozenset({"basic", Calculation(func.calc_value, Params(ParamValue('force_store_value'), kwargs={'condition': ParamOption(option_4, todict=True), 'expected': ParamValue(True), 'reverse_condition': ParamValue(True)})), Calculation(func.calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_4, todict=True), 'expected': ParamValue(True), 'reverse_condition': ParamValue(True)}))}))
option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2, option_3, option_4]) option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2, option_3, option_4])
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1]) option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1])

View File

@ -1,6 +1,7 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail version="0.9"> <rougail version="0.9">
<variables> <variables>
<variable name="instanciated_module" type="boolean"/>
<family name="general"> <family name="general">
<variable name="mode_conteneur_actif" type="string" description="No change" auto_save="True"> <variable name="mode_conteneur_actif" type="string" description="No change" auto_save="True">
<value>non</value> <value>non</value>

View File

@ -1,4 +1,5 @@
{ {
"rougail.instanciated_module": true,
"rougail.general.mode_conteneur_actif": "non", "rougail.general.mode_conteneur_actif": "non",
"rougail.general.mode_conteneur_actif1": "non" "rougail.general.mode_conteneur_actif1": "non"
} }

View File

@ -11,8 +11,9 @@ try:
from tiramisu3 import * from tiramisu3 import *
except: except:
from tiramisu import * from tiramisu import *
option_4 = StrOption(name="mode_conteneur_actif1", doc="No change", default="non", properties=frozenset({"mandatory", "normal"})) option_2 = BoolOption(name="instanciated_module", doc="instanciated_module", default=True, properties=frozenset({"mandatory", "normal"}))
option_3 = StrOption(name="mode_conteneur_actif", doc="No change", default=Calculation(func.calc_val, Params((ParamOption(option_4)))), properties=frozenset({"basic", "force_store_value"})) option_5 = StrOption(name="mode_conteneur_actif1", doc="No change", default="non", properties=frozenset({"mandatory", "normal"}))
option_2 = OptionDescription(name="general", doc="general", children=[option_3, option_4], properties=frozenset({"basic"})) option_4 = StrOption(name="mode_conteneur_actif", doc="No change", default=Calculation(func.calc_val, Params((ParamOption(option_5)))), properties=frozenset({"basic", Calculation(func.calc_value, Params(ParamValue('force_store_value'), kwargs={'condition': ParamOption(option_2, todict=True), 'expected': ParamValue(True), 'reverse_condition': ParamValue(True)}))}))
option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2]) option_3 = OptionDescription(name="general", doc="general", children=[option_4, option_5], properties=frozenset({"basic"}))
option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2, option_3])
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1]) option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1])

View File

@ -12,6 +12,6 @@ try:
except: except:
from tiramisu import * from tiramisu import *
option_2 = BoolOption(name="instanciated_module", doc="instanciated_module", default=False, properties=frozenset({"mandatory", "normal"})) option_2 = BoolOption(name="instanciated_module", doc="instanciated_module", default=False, properties=frozenset({"mandatory", "normal"}))
option_3 = StrOption(name="my_var", doc="my_var", default=Calculation(func.calc_val, Params((ParamValue("yes")))), properties=frozenset({"auto_freeze", "force_store_value", "normal", Calculation(func.calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_2, todict=True), 'expected': ParamValue(True)})), Calculation(func.calc_value, Params(ParamValue('auto_frozen'), kwargs={'condition': ParamOption(option_2, todict=True), 'expected': ParamValue(True), 'reverse_condition': ParamValue(True)}))})) option_3 = StrOption(name="my_var", doc="my_var", default=Calculation(func.calc_val, Params((ParamValue("yes")))), properties=frozenset({"basic", Calculation(func.calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_2, todict=True), 'expected': ParamValue(True)})), Calculation(func.calc_value, Params(ParamValue('force_store_value'), kwargs={'condition': ParamOption(option_2, todict=True), 'expected': ParamValue(True), 'reverse_condition': ParamValue(True)})), Calculation(func.calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_2, todict=True), 'expected': ParamValue(True), 'reverse_condition': ParamValue(True)}))}))
option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2, option_3]) option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2, option_3])
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1]) option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1])

View File

@ -1,6 +1,7 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail version="0.9"> <rougail version="0.9">
<variables> <variables>
<variable name="instanciated_module" type="boolean"/>
<family name="général"> <family name="général">
<variable name="mode_conteneur_actif" type="string" description="No change" hidden="True"> <variable name="mode_conteneur_actif" type="string" description="No change" hidden="True">
<value>non</value> <value>non</value>

View File

@ -1,4 +1,5 @@
{ {
"rougail.instanciated_module": true,
"rougail.general.mode_conteneur_actif": "non", "rougail.general.mode_conteneur_actif": "non",
"rougail.general.autosavevar": "oui" "rougail.general.autosavevar": "oui"
} }

View File

@ -11,8 +11,9 @@ try:
from tiramisu3 import * from tiramisu3 import *
except: except:
from tiramisu import * from tiramisu import *
option_3 = StrOption(name="mode_conteneur_actif", doc="No change", default="non", properties=frozenset({"force_default_on_freeze", "frozen", "hidden", "mandatory", "normal"})) option_2 = BoolOption(name="instanciated_module", doc="instanciated_module", default=True, properties=frozenset({"mandatory", "normal"}))
option_4 = StrOption(name="autosavevar", doc="autosave variable", default=Calculation(func.calc_val, Params((ParamValue("oui")))), properties=frozenset({"basic", "force_store_value", Calculation(func.calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_3, todict=True), 'expected': ParamValue("oui")}))})) option_4 = StrOption(name="mode_conteneur_actif", doc="No change", default="non", properties=frozenset({"force_default_on_freeze", "frozen", "hidden", "mandatory", "normal"}))
option_2 = OptionDescription(name="general", doc="général", children=[option_3, option_4], properties=frozenset({"basic"})) option_5 = StrOption(name="autosavevar", doc="autosave variable", default=Calculation(func.calc_val, Params((ParamValue("oui")))), properties=frozenset({"basic", Calculation(func.calc_value, Params(ParamValue('hidden'), kwargs={'condition': ParamOption(option_4, todict=True), 'expected': ParamValue("oui")})), Calculation(func.calc_value, Params(ParamValue('force_store_value'), kwargs={'condition': ParamOption(option_2, todict=True), 'expected': ParamValue(True), 'reverse_condition': ParamValue(True)}))}))
option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2]) option_3 = OptionDescription(name="general", doc="général", children=[option_4, option_5], properties=frozenset({"basic"}))
option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2, option_3])
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1]) option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1])

View File

@ -1,6 +1,7 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail version="0.9"> <rougail version="0.9">
<variables> <variables>
<variable name="instanciated_module" type="boolean"/>
<family name="général"> <family name="général">
<variable name="mode_conteneur_actif" type="string" description="No change" hidden="True"> <variable name="mode_conteneur_actif" type="string" description="No change" hidden="True">
<value>non</value> <value>non</value>

View File

@ -1,4 +1,5 @@
{ {
"rougail.instanciated_module": true,
"rougail.general.mode_conteneur_actif": "non", "rougail.general.mode_conteneur_actif": "non",
"rougail.general.autosavevar": "oui" "rougail.general.autosavevar": "oui"
} }

View File

@ -11,8 +11,9 @@ try:
from tiramisu3 import * from tiramisu3 import *
except: except:
from tiramisu import * from tiramisu import *
option_3 = StrOption(name="mode_conteneur_actif", doc="No change", default="non", properties=frozenset({"force_default_on_freeze", "frozen", "hidden", "mandatory", "normal"})) option_2 = BoolOption(name="instanciated_module", doc="instanciated_module", default=True, properties=frozenset({"mandatory", "normal"}))
option_4 = StrOption(name="autosavevar", doc="autosave variable", default=Calculation(func.calc_val, Params((ParamValue("oui")))), properties=frozenset({"basic", "force_store_value", "frozen", "hidden"})) option_4 = StrOption(name="mode_conteneur_actif", doc="No change", default="non", properties=frozenset({"force_default_on_freeze", "frozen", "hidden", "mandatory", "normal"}))
option_2 = OptionDescription(name="general", doc="général", children=[option_3, option_4], properties=frozenset({"basic"})) option_5 = StrOption(name="autosavevar", doc="autosave variable", default=Calculation(func.calc_val, Params((ParamValue("oui")))), properties=frozenset({"basic", "frozen", "hidden", Calculation(func.calc_value, Params(ParamValue('force_store_value'), kwargs={'condition': ParamOption(option_2, todict=True), 'expected': ParamValue(True), 'reverse_condition': ParamValue(True)}))}))
option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2]) option_3 = OptionDescription(name="general", doc="général", children=[option_4, option_5], properties=frozenset({"basic"}))
option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2, option_3])
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1]) option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1])

View File

@ -12,7 +12,7 @@ try:
except: except:
from tiramisu import * from tiramisu import *
option_6 = BoolOption(name="instanciated_module", doc="instanciated_module", default=False, properties=frozenset({"force_default_on_freeze", "frozen", "hidden", "mandatory", "normal"})) option_6 = BoolOption(name="instanciated_module", doc="instanciated_module", default=False, properties=frozenset({"force_default_on_freeze", "frozen", "hidden", "mandatory", "normal"}))
option_2 = StrOption(name="my_var", doc="my_var", default="no", properties=frozenset({"auto_freeze", "force_store_value", "mandatory", "normal", Calculation(func.calc_value, Params(ParamValue('auto_frozen'), kwargs={'condition': ParamOption(option_6, todict=True), 'expected': ParamValue(True), 'reverse_condition': ParamValue(True)}))})) option_2 = StrOption(name="my_var", doc="my_var", default="no", properties=frozenset({"basic", "mandatory", Calculation(func.calc_value, Params(ParamValue('force_store_value'), kwargs={'condition': ParamOption(option_6, todict=True), 'expected': ParamValue(True), 'reverse_condition': ParamValue(True)})), Calculation(func.calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_6, todict=True), 'expected': ParamValue(True), 'reverse_condition': ParamValue(True)}))}))
option_3 = StrOption(name="condition", doc="condition", default="no", properties=frozenset({"mandatory", "normal"})) option_3 = StrOption(name="condition", doc="condition", default="no", properties=frozenset({"mandatory", "normal"}))
option_4 = StrOption(name="my_var1", doc="my_var1", default="no", properties=frozenset({"force_default_on_freeze", "frozen", "hidden", "mandatory", "normal"})) option_4 = StrOption(name="my_var1", doc="my_var1", default="no", properties=frozenset({"force_default_on_freeze", "frozen", "hidden", "mandatory", "normal"}))
option_5 = StrOption(name="my_var2", doc="my_var2", default="no", properties=frozenset({"mandatory", "normal"})) option_5 = StrOption(name="my_var2", doc="my_var2", default="no", properties=frozenset({"mandatory", "normal"}))

View File

@ -12,7 +12,7 @@ try:
except: except:
from tiramisu import * from tiramisu import *
option_5 = BoolOption(name="instanciated_module", doc="instanciated_module", default=False, properties=frozenset({"force_default_on_freeze", "frozen", "hidden", "mandatory", "normal"})) option_5 = BoolOption(name="instanciated_module", doc="instanciated_module", default=False, properties=frozenset({"force_default_on_freeze", "frozen", "hidden", "mandatory", "normal"}))
option_3 = StrOption(name="my_var", doc="my_var", default="no", properties=frozenset({"auto_freeze", "basic", "force_store_value", "mandatory", Calculation(func.calc_value, Params(ParamValue('auto_frozen'), kwargs={'condition': ParamOption(option_5, todict=True), 'expected': ParamValue(True), 'reverse_condition': ParamValue(True)}))})) option_3 = StrOption(name="my_var", doc="my_var", default="no", properties=frozenset({"basic", "mandatory", Calculation(func.calc_value, Params(ParamValue('force_store_value'), kwargs={'condition': ParamOption(option_5, todict=True), 'expected': ParamValue(True), 'reverse_condition': ParamValue(True)})), Calculation(func.calc_value, Params(ParamValue('frozen'), kwargs={'condition': ParamOption(option_5, todict=True), 'expected': ParamValue(True), 'reverse_condition': ParamValue(True)}))}))
option_4 = StrOption(name="my_var1", doc="my_var1", default="no", properties=frozenset({"force_default_on_freeze", "frozen", "hidden", "mandatory", "normal"})) option_4 = StrOption(name="my_var1", doc="my_var1", default="no", properties=frozenset({"force_default_on_freeze", "frozen", "hidden", "mandatory", "normal"}))
option_2 = OptionDescription(name="general", doc="général", children=[option_3, option_4, option_5], properties=frozenset({"basic"})) option_2 = OptionDescription(name="general", doc="général", children=[option_3, option_4, option_5], properties=frozenset({"basic"}))
option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2]) option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2])

View File

@ -1,6 +1,7 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail version="0.9"> <rougail version="0.9">
<variables> <variables>
<variable name="instanciated_module" type="boolean"/>
<family name="general"> <family name="general">
<variable name="mode_conteneur_actif" type="string" description="No change"> <variable name="mode_conteneur_actif" type="string" description="No change">
<value>non</value> <value>non</value>

View File

@ -1,8 +1,9 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<rougail version="0.9"> <rougail version="0.9">
<variables> <variables>
<variable name="instanciated_module" type="boolean"/>
<family name="général" mode="normal"> <family name="général" mode="normal">
<variable name="mode_conteneur_actif" type="string" description="No change" auto_save="True" mode="expert"> <variable name="mode_conteneur_actif" type="string" description="No change" mode="expert">
<value>non</value> <value>non</value>
</variable> </variable>
</family> </family>

View File

@ -0,0 +1,11 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail version="0.9">
<variables>
<family name="general" mode="level1">
<variable name="my_variable" mode="level2"/>
<variable name="my_variable1" mode="level1"/>
</family>
</variables>
</rougail>
<!-- vim: ts=4 sw=4 expandtab
-->

View File

@ -106,9 +106,3 @@ def test_error_dictionary(test_dir_error):
print(f'expected errno: {errno}, errno: {err.value.errno}') print(f'expected errno: {errno}, errno: {err.value.errno}')
launch_flattener(test_dir) launch_flattener(test_dir)
assert getcwd() == ORI_DIR assert getcwd() == ORI_DIR
def test_no_dtd():
RougailConfig['dtdfilename'] = 'notexists.dtd'
with raises(IOError):
eolobj = RougailConvert()

43
tests/test_others.py Normal file
View File

@ -0,0 +1,43 @@
from pytest import raises
from rougail import RougailConvert, RougailConfig
from rougail.error import DictConsistencyError
def test_no_dtd():
cfg = RougailConfig.copy()
cfg['dtdfilename'] = 'notexists.dtd'
with raises(IOError):
eolobj = RougailConvert(cfg)
def test_mode_invalid_default():
RougailConfig['dictionaries_dir'] = ['tests/personalize_mode/dictionary']
RougailConfig['modes_level'] = ('level1', 'level2')
with raises(DictConsistencyError):
eolobj = RougailConvert()
def test_mode_invalid_default_family():
RougailConfig['dictionaries_dir'] = ['tests/personalize_mode/dictionary']
RougailConfig['modes_level'] = ('level1', 'level2')
RougailConfig['default_variable_mode'] = 'level1'
with raises(DictConsistencyError):
eolobj = RougailConvert()
def test_personalize_mode():
RougailConfig['dictionaries_dir'] = ['tests/personalize_mode/dictionary']
RougailConfig['modes_level'] = ('level1', 'level2')
RougailConfig['default_variable_mode'] = 'level1'
RougailConfig['default_family_mode'] = 'level1'
eolobj = RougailConvert()
eolobj.save(None)
def test_personalize_mode_unknown():
RougailConfig['dictionaries_dir'] = ['tests/personalize_mode/dictionary']
RougailConfig['modes_level'] = ('level1',)
RougailConfig['default_variable_mode'] = 'level1'
RougailConfig['default_family_mode'] = 'level1'
with raises(DictConsistencyError):
eolobj = RougailConvert()