diff --git a/src/rougail/annotator.py b/src/rougail/annotator.py
index 1cfd34fe..cc730110 100644
--- a/src/rougail/annotator.py
+++ b/src/rougail/annotator.py
@@ -704,7 +704,9 @@ class ConstraintAnnotator:
for idx, check in enumerate(self.objectspace.space.constraints.check):
if check.name == 'valid_enum':
if check.target in self.valid_enums:
- raise DictConsistencyError(_(f'valid_enum already set for {check.target}'))
+ old_xmlfiles = self.objectspace.display_xmlfiles(self.valid_enums[check.target]['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?'))
if not hasattr(check, 'param'):
raise DictConsistencyError(_(f'param is mandatory for a valid_enum of variable {check.target}'))
variable = self.objectspace.paths.get_variable_obj(check.target)
@@ -715,7 +717,8 @@ class ConstraintAnnotator:
self._set_valid_enum(variable,
values,
variable.type,
- check.target
+ check.target,
+ check.xmlfiles,
)
remove_indexes.append(idx)
remove_indexes.sort(reverse=True)
@@ -957,7 +960,13 @@ class ConstraintAnnotator:
variable.property.append(prop)
del self.objectspace.space.constraints.condition
- def _set_valid_enum(self, variable, values, type_, target):
+ def _set_valid_enum(self,
+ variable,
+ values,
+ type_,
+ target: str,
+ xmlfiles: List[str],
+ ):
# value for choice's variable is mandatory
variable.mandatory = True
# build choice
@@ -970,6 +979,7 @@ class ConstraintAnnotator:
else:
self.valid_enums[target] = {'type': type_,
'values': values,
+ 'xmlfiles': xmlfiles,
}
choices = []
for value in values:
diff --git a/src/rougail/objspace.py b/src/rougail/objspace.py
index e485b3ad..f297b6f2 100644
--- a/src/rougail/objspace.py
+++ b/src/rougail/objspace.py
@@ -515,12 +515,6 @@ class CreoleObjSpace:
self.fill_removed.append(child.attrib['target'])
if not hasattr(variableobj, 'index'):
variableobj.index = self.index
- if child.tag == 'check' and child.attrib['target'] in self.redefine_variables and child.attrib['target'] not in self.check_removed:
- self.remove_check(child.attrib['target'])
- self.check_removed.append(child.attrib['target'])
- if child.tag == 'condition' and child.attrib['source'] in self.redefine_variables and child.attrib['source'] not in self.condition_removed:
- self.remove_condition(child.attrib['source'])
- self.condition_removed.append(child.attrib['source'])
variableobj.namespace = namespace
def fill_variableobj_path_attribute(self,
diff --git a/tests/dictionaries/10check_valid_differ_add/00-base.xml b/tests/dictionaries/10check_valid_differ_add/00-base.xml
index 70c315fd..fd47c9ca 100644
--- a/tests/dictionaries/10check_valid_differ_add/00-base.xml
+++ b/tests/dictionaries/10check_valid_differ_add/00-base.xml
@@ -25,9 +25,6 @@
mode_conteneur_actif1
-
- mode_conteneur_actif1
-
diff --git a/tests/dictionaries/10check_valid_differ_add/tiramisu/base.py b/tests/dictionaries/10check_valid_differ_add/tiramisu/base.py
index 889721ea..2aac2277 100644
--- a/tests/dictionaries/10check_valid_differ_add/tiramisu/base.py
+++ b/tests/dictionaries/10check_valid_differ_add/tiramisu/base.py
@@ -11,7 +11,7 @@ from rougail.tiramisu import ConvertDynOptionDescription
option_3 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif', doc='No change', multi=False, default='oui', values=('oui', 'non'))
option_4 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif1', doc='No change', multi=False, default='non', values=('oui', 'non'))
option_5 = ChoiceOption(properties=frozenset({'mandatory', 'normal'}), name='mode_conteneur_actif2', doc='No change', multi=False, default='non', values=('oui', 'non'))
-option_6 = StrOption(properties=frozenset({'mandatory', 'normal'}), validators=[Calculation(func.valid_not_equal, Params((ParamSelfOption(), ParamOption(option_4, notraisepropertyerror=False, todict=True)), kwargs={}), warnings_only=False), Calculation(func.valid_not_equal, Params((ParamSelfOption(), ParamOption(option_5, notraisepropertyerror=False, todict=True)), kwargs={}), warnings_only=False)], name='mode_conteneur_actif3', doc='No change', multi=False, default='oui')
+option_6 = StrOption(properties=frozenset({'mandatory', 'normal'}), validators=[Calculation(func.valid_not_equal, Params((ParamSelfOption(), ParamOption(option_4, notraisepropertyerror=False, todict=True)), kwargs={}), warnings_only=False), Calculation(func.valid_not_equal, Params((ParamSelfOption(), ParamOption(option_4, notraisepropertyerror=False, todict=True)), kwargs={}), warnings_only=False), Calculation(func.valid_not_equal, Params((ParamSelfOption(), ParamOption(option_5, notraisepropertyerror=False, todict=True)), kwargs={}), warnings_only=False)], name='mode_conteneur_actif3', doc='No change', multi=False, default='oui')
option_2 = OptionDescription(name='general', doc='general', properties=frozenset({'normal'}), children=[option_3, option_4, option_5, option_6])
option_1 = OptionDescription(name='rougail', doc='rougail', children=[option_2])
option_0 = OptionDescription(name='baseoption', doc='baseoption', children=[option_1])
diff --git a/tests/dictionaries/10check_valid_differ_removecheck/00-base.xml b/tests/dictionaries/10check_valid_differ_removecheck/00-base.xml
index 467a039d..fd47c9ca 100644
--- a/tests/dictionaries/10check_valid_differ_removecheck/00-base.xml
+++ b/tests/dictionaries/10check_valid_differ_removecheck/00-base.xml
@@ -25,9 +25,6 @@
mode_conteneur_actif1
-
- mode_conteneur_actif2
-
diff --git a/tests/dictionaries/10check_valid_differ_removecheck/01-base.xml b/tests/dictionaries/10check_valid_differ_removecheck/01-base.xml
index e8a453de..2f4e1a74 100644
--- a/tests/dictionaries/10check_valid_differ_removecheck/01-base.xml
+++ b/tests/dictionaries/10check_valid_differ_removecheck/01-base.xml
@@ -5,7 +5,7 @@
-
+
oui
diff --git a/tests/dictionaries/10valid_enum_base_redefine/01-base.xml b/tests/dictionaries/10valid_enum_base_redefine/01-base.xml
index 87b45ceb..44db7160 100644
--- a/tests/dictionaries/10valid_enum_base_redefine/01-base.xml
+++ b/tests/dictionaries/10valid_enum_base_redefine/01-base.xml
@@ -5,7 +5,7 @@
-
+
c
diff --git a/tests/dictionaries/40condition_base_add/01-base.xml b/tests/dictionaries/40condition_base_add/01-base.xml
index 81b77776..a87dc7e6 100644
--- a/tests/dictionaries/40condition_base_add/01-base.xml
+++ b/tests/dictionaries/40condition_base_add/01-base.xml
@@ -2,7 +2,7 @@
-
+