fix: better error message

This commit is contained in:
egarette@silique.fr 2025-04-09 08:27:38 +02:00
parent 888ba21551
commit db82dd6d41
6 changed files with 53 additions and 51 deletions

View file

@ -2,7 +2,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Tiramisu\n" "Project-Id-Version: Tiramisu\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-03-19 09:51+0100\n" "POT-Creation-Date: 2025-04-09 08:14+0200\n"
"PO-Revision-Date: \n" "PO-Revision-Date: \n"
"Last-Translator: Emmanuel Garette <egarette@cadoles.com>\n" "Last-Translator: Emmanuel Garette <egarette@cadoles.com>\n"
"Language-Team: Tiramisu's team <egarette@cadoles.com>\n" "Language-Team: Tiramisu's team <egarette@cadoles.com>\n"
@ -90,7 +90,7 @@ msgstr ""
msgid "cannot find \"{0}\" in option \"{1}\" at index \"{2}\"" msgid "cannot find \"{0}\" in option \"{1}\" at index \"{2}\""
msgstr "ne peut trouver \"{0}\" dans l'option \"{1}\" à l'index \"{2}\"" msgstr "ne peut trouver \"{0}\" dans l'option \"{1}\" à l'index \"{2}\""
#: tiramisu/api.py:679 #: tiramisu/api.py:679 tiramisu/option/optiondescription.py:283
msgid "cannot find \"{0}\"" msgid "cannot find \"{0}\""
msgstr "ne peut trouver \"{0}\"" msgstr "ne peut trouver \"{0}\""
@ -619,7 +619,7 @@ msgstr "ne doit pas être une IP"
msgid "some characters are uppercase" msgid "some characters are uppercase"
msgstr "des caractères sont en majuscule" msgstr "des caractères sont en majuscule"
#: tiramisu/option/dynoptiondescription.py:131 #: tiramisu/option/dynoptiondescription.py:130
msgid "DynOptionDescription identifiers for option {0}, is not a list ({1})" msgid "DynOptionDescription identifiers for option {0}, is not a list ({1})"
msgstr "" msgstr ""
"les identifiants de la DynOptionDescription pour l'option {0}, n'est pas une " "les identifiants de la DynOptionDescription pour l'option {0}, n'est pas une "
@ -806,41 +806,34 @@ msgstr "lequel \"{}\" doit être une liste de liste"
msgid "duplicate option: {0}" msgid "duplicate option: {0}"
msgstr "option dupliquée : {0}" msgstr "option dupliquée : {0}"
#: tiramisu/option/optiondescription.py:244 #: tiramisu/option/optiondescription.py:249
msgid "" msgid "cannot access to \"{0}\" it's a dynamic option"
"unknown option \"{0}\" in root optiondescription (it's a dynamic option)" msgstr "ne peut accéder à \"{0}\" c'est une option dynamique"
msgstr ""
"option \"{0}\" inconnue dans l'optiondescription racine (c'est une option "
"dynamique)"
#: tiramisu/option/optiondescription.py:279 #: tiramisu/option/optiondescription.py:286
msgid "unknown option \"{0}\" in root optiondescription" msgid "cannot find \"{0}\" in \"{1}\""
msgstr "option \"{0}\" inconnue dans l'optiondescription racine" msgstr "ne peut pas trouver \"{0}\" dans \"{1}\""
#: tiramisu/option/optiondescription.py:282 #: tiramisu/option/optiondescription.py:342
msgid "unknown option \"{0}\" in optiondescription {1}"
msgstr "option \"{0}\" inconnue dans l'optiondescription {1}"
#: tiramisu/option/optiondescription.py:338
msgid "children in optiondescription \"{}\" must be a list" msgid "children in optiondescription \"{}\" must be a list"
msgstr "les enfants d'une optiondescription \"{}\" doivent être une liste" msgstr "les enfants d'une optiondescription \"{}\" doivent être une liste"
#: tiramisu/option/optiondescription.py:366 #: tiramisu/option/optiondescription.py:370
msgid "duplicate option name: \"{0}\"" msgid "duplicate option name: \"{0}\""
msgstr "nom de l'option dupliqué : \"{0}\"" msgstr "nom de l'option dupliqué : \"{0}\""
#: tiramisu/option/optiondescription.py:372 #: tiramisu/option/optiondescription.py:376
msgid "" msgid ""
"the option's name \"{0}\" start as the dynoptiondescription's name \"{1}\"" "the option's name \"{0}\" start as the dynoptiondescription's name \"{1}\""
msgstr "" msgstr ""
"le nom de l'option \"{0}\" commence comme le nom du dynoptiondescription " "le nom de l'option \"{0}\" commence comme le nom du dynoptiondescription "
"\"{1}\"" "\"{1}\""
#: tiramisu/option/optiondescription.py:415 #: tiramisu/option/optiondescription.py:419
msgid "cannot change group_type if already set (old {0}, new {1})" msgid "cannot change group_type if already set (old {0}, new {1})"
msgstr "ne peut changer group_type si déjà spécifié (ancien {0}, nouveau {1})" msgstr "ne peut changer group_type si déjà spécifié (ancien {0}, nouveau {1})"
#: tiramisu/option/optiondescription.py:420 #: tiramisu/option/optiondescription.py:424
msgid "group_type: {0} not allowed" msgid "group_type: {0} not allowed"
msgstr "group_type : {0} non autorisé" msgstr "group_type : {0} non autorisé"
@ -1028,8 +1021,17 @@ msgstr ""
msgid "information's item not found \"{}\"" msgid "information's item not found \"{}\""
msgstr "l'information de l'objet ne sont pas trouvé \"{}\"" msgstr "l'information de l'objet ne sont pas trouvé \"{}\""
#~ msgid "cannot find {0} \"{1}\"" #~ msgid ""
#~ msgstr "ne peut pas trouver {0} \"{1}\"" #~ "unknown option \"{0}\" in root optiondescription (it's a dynamic option)"
#~ msgstr ""
#~ "option \"{0}\" inconnue dans l'optiondescription racine (c'est une option "
#~ "dynamique)"
#~ msgid "unknown option \"{0}\" in root optiondescription"
#~ msgstr "option \"{0}\" inconnue dans l'optiondescription racine"
#~ msgid "unknown option \"{0}\" in optiondescription {1}"
#~ msgstr "option \"{0}\" inconnue dans l'optiondescription {1}"
#~ msgid "" #~ msgid ""
#~ "IP \"{ip[\"value\"]}\" ({ip[\"name\"]}) with this netmask is in fact a " #~ "IP \"{ip[\"value\"]}\" ({ip[\"name\"]}) with this netmask is in fact a "

View file

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2025-03-19 09:54+0100\n" "POT-Creation-Date: 2025-04-09 08:16+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -79,7 +79,7 @@ msgstr ""
msgid "cannot find \"{0}\" in option \"{1}\" at index \"{2}\"" msgid "cannot find \"{0}\" in option \"{1}\" at index \"{2}\""
msgstr "" msgstr ""
#: tiramisu/api.py:679 #: tiramisu/api.py:679 tiramisu/option/optiondescription.py:283
msgid "cannot find \"{0}\"" msgid "cannot find \"{0}\""
msgstr "" msgstr ""
@ -532,7 +532,7 @@ msgstr ""
msgid "some characters are uppercase" msgid "some characters are uppercase"
msgstr "" msgstr ""
#: tiramisu/option/dynoptiondescription.py:131 #: tiramisu/option/dynoptiondescription.py:130
msgid "DynOptionDescription identifiers for option {0}, is not a list ({1})" msgid "DynOptionDescription identifiers for option {0}, is not a list ({1})"
msgstr "" msgstr ""
@ -700,35 +700,31 @@ msgstr ""
msgid "duplicate option: {0}" msgid "duplicate option: {0}"
msgstr "" msgstr ""
#: tiramisu/option/optiondescription.py:244 #: tiramisu/option/optiondescription.py:249
msgid "unknown option \"{0}\" in root optiondescription (it's a dynamic option)" msgid "cannot access to \"{0}\" it's a dynamic option"
msgstr "" msgstr ""
#: tiramisu/option/optiondescription.py:279 #: tiramisu/option/optiondescription.py:286
msgid "unknown option \"{0}\" in root optiondescription" msgid "cannot find \"{0}\" in \"{1}\""
msgstr "" msgstr ""
#: tiramisu/option/optiondescription.py:282 #: tiramisu/option/optiondescription.py:342
msgid "unknown option \"{0}\" in optiondescription {1}"
msgstr ""
#: tiramisu/option/optiondescription.py:338
msgid "children in optiondescription \"{}\" must be a list" msgid "children in optiondescription \"{}\" must be a list"
msgstr "" msgstr ""
#: tiramisu/option/optiondescription.py:366 #: tiramisu/option/optiondescription.py:370
msgid "duplicate option name: \"{0}\"" msgid "duplicate option name: \"{0}\""
msgstr "" msgstr ""
#: tiramisu/option/optiondescription.py:372 #: tiramisu/option/optiondescription.py:376
msgid "the option's name \"{0}\" start as the dynoptiondescription's name \"{1}\"" msgid "the option's name \"{0}\" start as the dynoptiondescription's name \"{1}\""
msgstr "" msgstr ""
#: tiramisu/option/optiondescription.py:415 #: tiramisu/option/optiondescription.py:419
msgid "cannot change group_type if already set (old {0}, new {1})" msgid "cannot change group_type if already set (old {0}, new {1})"
msgstr "" msgstr ""
#: tiramisu/option/optiondescription.py:420 #: tiramisu/option/optiondescription.py:424
msgid "group_type: {0} not allowed" msgid "group_type: {0} not allowed"
msgstr "" msgstr ""

View file

@ -380,12 +380,12 @@ def test_prefix_error():
try: try:
cfg.option('test1').value.set('yes') cfg.option('test1').value.set('yes')
except Exception as err: except Exception as err:
assert str(err) == _('"{0}" is an invalid {1} for "{2}"').format('yes', _('integer'), 'test1') assert str(err) == _('"{0}" is an invalid {1} for "{2}", which is not an integer').format('yes', _('integer'), 'test1')
try: try:
cfg.option('test1').value.set('yes') cfg.option('test1').value.set('yes')
except Exception as err: except Exception as err:
err.prefix = '' err.prefix = ''
assert str(err) == _('invalid value') assert str(err) == _('which is not an integer')
# assert not list_sessions() # assert not list_sessions()

View file

@ -124,7 +124,6 @@ class DynOptionDescription(OptionDescription):
)[0] )[0]
if values is None: if values is None:
values = [] values = []
values_ = []
if __debug__: if __debug__:
if not isinstance(values, list): if not isinstance(values, list):
raise ValueError( raise ValueError(
@ -134,6 +133,7 @@ class DynOptionDescription(OptionDescription):
self.impl_get_display_name(subconfig, with_quote=True), values self.impl_get_display_name(subconfig, with_quote=True), values
) )
) )
values_ = []
for val in values: for val in values:
cval = self.convert_identifier_to_path(val) cval = self.convert_identifier_to_path(val)
if not isinstance(cval, str) or re.match(NAME_REGEXP, cval) is None: if not isinstance(cval, str) or re.match(NAME_REGEXP, cval) is None:

View file

@ -232,18 +232,21 @@ class OptionDescriptionWalk(CacheOptionDescription):
def get_child_not_dynamic( def get_child_not_dynamic(
self, self,
name, name: str,
allow_dynoption, allow_dynoption: bool,
parent: "SubConfig",
): ):
if name in self._children[0]: # pylint: disable=no-member if name in self._children[0]: # pylint: disable=no-member
option = self._children[1][ option = self._children[1][
self._children[0].index(name) self._children[0].index(name)
] # pylint: disable=no-member ] # pylint: disable=no-member
if option.impl_is_dynoptiondescription() and not allow_dynoption: if option.impl_is_dynoptiondescription() and not allow_dynoption:
if parent.path:
path = parent.path + '.' + name
else:
path = name
raise AttributeError( raise AttributeError(
_( _('cannot access to "{0}" it\'s a dynamic option').format(path)
'unknown option "{0}" in root optiondescription (it\'s a dynamic option)'
).format(name)
) )
return option return option
@ -261,6 +264,7 @@ class OptionDescriptionWalk(CacheOptionDescription):
option = self.get_child_not_dynamic( option = self.get_child_not_dynamic(
name, name,
allow_dynoption, allow_dynoption,
parent,
) )
if option: if option:
return option return option
@ -274,13 +278,13 @@ class OptionDescriptionWalk(CacheOptionDescription):
if not with_identifier: if not with_identifier:
return child return child
return identifier, child return identifier, child
if self.impl_get_group_type() == groups.root: # pylint: disable=no-member if parent.path is None:
raise AttributeError( raise AttributeError(
_('unknown option "{0}" in root optiondescription').format(name) _('cannot find "{0}"').format(name)
) )
raise AttributeError( raise AttributeError(
_('unknown option "{0}" in optiondescription {1}').format( _('cannot find "{0}" in "{1}"').format(
name, self.impl_get_display_name(parent, with_quote=True) name, parent.path
) )
) )