Compare commits

..

No commits in common. "c54f7cb77569215e931c3bbcdd505b3273df02a6" and "7ecec888819d775964209335ebebe2830d895584" have entirely different histories.

7 changed files with 156 additions and 148 deletions

View file

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Tiramisu\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-29 23:01+0200\n"
"POT-Creation-Date: 2025-04-09 08:14+0200\n"
"PO-Revision-Date: \n"
"Last-Translator: Emmanuel Garette <egarette@cadoles.com>\n"
"Language-Team: Tiramisu's team <egarette@cadoles.com>\n"
@ -123,93 +123,89 @@ msgid "do not use unrestraint, nowarnings or forcepermissive together"
msgstr ""
"il ne faut pas utiliser unrestraint, nowarnings ou forcepermissive ensemble"
#: tiramisu/autolib.py:81
#: tiramisu/autolib.py:80
msgid "args in params must be a tuple"
msgstr "args dans params doit être un tuple"
#: tiramisu/autolib.py:84 tiramisu/autolib.py:89
#: tiramisu/autolib.py:83 tiramisu/autolib.py:88
msgid "arg in params must be a Param"
msgstr "arg dans params doit être un Param"
#: tiramisu/autolib.py:86
#: tiramisu/autolib.py:85
msgid "kwargs in params must be a dict"
msgstr "kwargs dans params doit être un dict"
#: tiramisu/autolib.py:114
#: tiramisu/autolib.py:113
msgid "paramoption needs an option not {}"
msgstr "paramoption doit être une option pas {0}"
#: tiramisu/autolib.py:120
#: tiramisu/autolib.py:119
msgid "param must have a boolean not a {} for notraisepropertyerror"
msgstr "param doit avoir un booléan pas un {} pour notraisepropertyerror"
#: tiramisu/autolib.py:123
#: tiramisu/autolib.py:122
msgid "param must have a boolean not a {} for raisepropertyerror"
msgstr "param doit avoir un booléan pas un {} pour raisepropertyerror"
#: tiramisu/autolib.py:152
#: tiramisu/autolib.py:151
msgid "identifiers in ParamDynOption must be a list, not {0}"
msgstr ""
"les identifiants d'un ParamDynOption doivent être une liste, donc pas {0}"
#: tiramisu/autolib.py:156
#: tiramisu/autolib.py:155
msgid "optional in ParamDynOption must be a boolean, not {0}"
msgstr ""
"le paramètre optional dans ParamDynOption doit être un booléen, pas {0}"
#: tiramisu/autolib.py:207
#: tiramisu/autolib.py:206
msgid "cannot add option in information after creating config"
msgstr ""
"ne peut ajouter une option dans une information après la création de la "
"configuration"
#: tiramisu/autolib.py:209
#: tiramisu/autolib.py:208
msgid "cannot redefine option in information"
msgstr "on ne peu pas redéfinir une option dans une information"
#: tiramisu/autolib.py:213
#: tiramisu/autolib.py:212
msgid "option in ParamInformation cannot be a symlinkoption"
msgstr "l'option dans ParamInformation ne peut pas être un symlinkoption"
#: tiramisu/autolib.py:216
#: tiramisu/autolib.py:215
msgid "option in ParamInformation cannot be a follower"
msgstr "l'option dans ParamInformation ne peut pas être suiveuse"
#: tiramisu/autolib.py:219
#: tiramisu/autolib.py:218
msgid "option in ParamInformation cannot be a dynamic option"
msgstr "l'option dans ParamInformation ne peut pas être une option dynamique"
#: tiramisu/autolib.py:280
#: tiramisu/autolib.py:279
msgid "first argument ({0}) must be a function"
msgstr "le premier argument ({0}) doit être une fonction"
#: tiramisu/autolib.py:284
#: tiramisu/autolib.py:283
msgid "help_function ({0}) must be a function"
msgstr "help_function ({0}) doit être une fonction"
#: tiramisu/autolib.py:455 tiramisu/autolib.py:503
#: tiramisu/autolib.py:452 tiramisu/autolib.py:514
msgid "unable to carry out a calculation for {}, {}"
msgstr "impossible d'effectuer le calcul pour {}, {}"
#: tiramisu/autolib.py:461 tiramisu/autolib.py:521
msgid "the option {0} is used in a calculation but is invalid ({1})"
msgstr "l'option {0} est utilisé dans un calcul mais est invalide ({1})"
#: tiramisu/autolib.py:467 tiramisu/autolib.py:515 tiramisu/autolib.py:554
#: tiramisu/autolib.py:477 tiramisu/autolib.py:535 tiramisu/autolib.py:584
msgid "unable to get value for calculating {0}, {1}"
msgstr "impossible de trouver la valeur pour calculer {0}, {1}"
#: tiramisu/autolib.py:499
msgid "unable to carry out a calculation for {0}, {1}"
msgstr "impossible d'effectuer le calcul pour {0}, {1}"
#: tiramisu/autolib.py:535
msgid "cannot find information for {0}, {1} is a dynamic option"
msgstr "ne peut trouver l'information pour {0}, {1} est une option dynamique"
#: tiramisu/autolib.py:564
#: tiramisu/autolib.py:601
msgid "option {0} is not a dynoptiondescription or in a dynoptiondescription"
msgstr ""
"l'option {0} n'est pas une dynoptiondescription ou n'est pas dans une "
"dynoptiondescription"
#: tiramisu/autolib.py:650
#: tiramisu/autolib.py:687
msgid ""
"cannot calculate arguments for \"{0}\", cannot find dynamic variable \"{1}\" "
"with identifier \"{2}\", list of valid identifiers: {3}"
@ -218,12 +214,7 @@ msgstr ""
"dynamique \"{1}\" avec l'identifiant \"{2}\", voici la liste des "
"identifiants valables : {3}"
#: tiramisu/autolib.py:754
msgid "the follower {0} must have index in carry_out_calculation!"
msgstr ""
"la variable suiveuse {0} doit avoir un index dans carry_out_calculation!"
#: tiramisu/autolib.py:826
#: tiramisu/autolib.py:866
msgid ""
"the \"{}\" function with positional arguments \"{}\" and keyword arguments "
"\"{}\" must not return a list (\"{}\") for the follower option {}"
@ -232,7 +223,7 @@ msgstr ""
"nommés \"{}\" ne doit pas retourner une liste (\"{}\") pour l'option "
"suiveuse {}"
#: tiramisu/autolib.py:841
#: tiramisu/autolib.py:881
msgid ""
"the \"{}\" function must not return a list (\"{}\") for the follower option "
"{}"
@ -240,17 +231,17 @@ msgstr ""
"la fonction \"{}\" ne doit pas retourner une liste (\"{}\") pour l'option "
"suiveuse {}"
#: tiramisu/autolib.py:882
#: tiramisu/autolib.py:922
msgid ""
"unexpected error \"{1}\" in function \"{2}\" with arguments \"{3}\" and "
"\"{4}\" for option {0}"
"unexpected error \"{0}\" in function \"{1}\" with arguments \"{3}\" and "
"\"{4}\" for option {2}"
msgstr ""
"erreur inattendue \"{1}\" dans la fonction \"{2}\" avec les arguments "
"\"{3}\" et \"{4}\" pour l'option {0}"
"erreur inattendue \"{0}\" dans la fonction \"{1}\" avec les arguments "
"\"{3}\" et \"{4}\" pour l'option {2}"
#: tiramisu/autolib.py:891
msgid "unexpected error \"{1}\" in function \"{2}\" for option {0}"
msgstr "erreur inattendue \"{1}\" dans la fonction \"{2}\" pour l'option {0}"
#: tiramisu/autolib.py:933
msgid "unexpected error \"{0}\" in function \"{1}\" for option {2}"
msgstr "erreur inattendue \"{0}\" dans la fonction \"{1}\" pour l'option {2}"
#: tiramisu/config.py:420
msgid ""
@ -402,21 +393,21 @@ msgid "invalid value"
msgstr "valeur invalide"
#: tiramisu/error.py:207
msgid "attention, \"{0}\" could be an invalid {1} for {2}"
msgstr "attention, \"{0}\" peut être un {1} invalide pour {2}"
msgid "attention, \"{0}\" could be an invalid {1} for \"{2}\""
msgstr "attention, \"{0}\" peut être un {1} invalide pour \"{2}\""
#: tiramisu/error.py:209
msgid "attention, \"{0}\" could be an invalid {1} for {2} at index \"{3}\""
msgid "attention, \"{0}\" could be an invalid {1} for \"{2}\" at index \"{3}\""
msgstr ""
"attention, \"{0}\" peut être un {1} invalide pour {2} à l'index \"{3}\""
"attention, \"{0}\" peut être un {1} invalide pour \"{2}\" à l'index \"{3}\""
#: tiramisu/error.py:228 tiramisu/error.py:239
msgid "\"{0}\" is an invalid {1} for {2}"
msgstr "\"{0}\" est une valeur invalide pour l'option {2} de type {1}"
msgid "\"{0}\" is an invalid {1} for \"{2}\""
msgstr "\"{0}\" est une valeur invalide pour l'option \"{2}\" de type {1}"
#: tiramisu/error.py:230
msgid "\"{0}\" is an invalid {1} for {2} at index \"{3}\""
msgstr "\"{0}\" est un {1} invalide pour {2} à l'index \"{3}\""
msgid "\"{0}\" is an invalid {1} for \"{2}\" at index \"{3}\""
msgstr "\"{0}\" est un {1} invalide pour \"{2}\" à l'index \"{3}\""
#: tiramisu/function.py:65
msgid "network \"{0}\" ({1}) does not match with this netmask"
@ -739,10 +730,10 @@ msgstr "une option leadership \"{0}\" ne devrait pas avoir de sous-groupe"
#: tiramisu/option/leadership.py:114
msgid ""
"only multi option are allowed in leadership {0} but option {1} is not a multi"
"only multi option allowed in leadership {0} but option {1} is not a multi"
msgstr ""
"seules des options multiples sont autorisées dans l'option leadership {0} "
"alors que l'option {1} n'est pas une option multiple"
"seules des options multiples sont autorisées dans l'option leadership "
"\"{0}\" alors que l'option \"{1}\" n'est pas une option multiple"
#: tiramisu/option/leadership.py:141
msgid "not allowed default value for follower option {0} in leadership {1}"
@ -1030,9 +1021,6 @@ msgstr ""
msgid "information's item not found \"{}\""
msgstr "l'information de l'objet ne sont pas trouvé \"{}\""
#~ msgid "unable to unable to get value for calculating {0}, {1}"
#~ msgstr "impossible de trouver la valeur pour calculer {0}, {1}"
#~ msgid ""
#~ "unknown option \"{0}\" in root optiondescription (it's a dynamic option)"
#~ msgstr ""

View file

@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2025-04-29 23:01+0200\n"
"POT-Creation-Date: 2025-04-09 08:16+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -111,108 +111,100 @@ msgstr ""
msgid "do not use unrestraint, nowarnings or forcepermissive together"
msgstr ""
#: tiramisu/autolib.py:81
#: tiramisu/autolib.py:80
msgid "args in params must be a tuple"
msgstr ""
#: tiramisu/autolib.py:84 tiramisu/autolib.py:89
#: tiramisu/autolib.py:83 tiramisu/autolib.py:88
msgid "arg in params must be a Param"
msgstr ""
#: tiramisu/autolib.py:86
#: tiramisu/autolib.py:85
msgid "kwargs in params must be a dict"
msgstr ""
#: tiramisu/autolib.py:114
#: tiramisu/autolib.py:113
msgid "paramoption needs an option not {}"
msgstr ""
#: tiramisu/autolib.py:120
#: tiramisu/autolib.py:119
msgid "param must have a boolean not a {} for notraisepropertyerror"
msgstr ""
#: tiramisu/autolib.py:123
#: tiramisu/autolib.py:122
msgid "param must have a boolean not a {} for raisepropertyerror"
msgstr ""
#: tiramisu/autolib.py:152
#: tiramisu/autolib.py:151
msgid "identifiers in ParamDynOption must be a list, not {0}"
msgstr ""
#: tiramisu/autolib.py:156
#: tiramisu/autolib.py:155
msgid "optional in ParamDynOption must be a boolean, not {0}"
msgstr ""
#: tiramisu/autolib.py:207
#: tiramisu/autolib.py:206
msgid "cannot add option in information after creating config"
msgstr ""
#: tiramisu/autolib.py:209
#: tiramisu/autolib.py:208
msgid "cannot redefine option in information"
msgstr ""
#: tiramisu/autolib.py:213
#: tiramisu/autolib.py:212
msgid "option in ParamInformation cannot be a symlinkoption"
msgstr ""
#: tiramisu/autolib.py:216
#: tiramisu/autolib.py:215
msgid "option in ParamInformation cannot be a follower"
msgstr ""
#: tiramisu/autolib.py:219
#: tiramisu/autolib.py:218
msgid "option in ParamInformation cannot be a dynamic option"
msgstr ""
#: tiramisu/autolib.py:280
#: tiramisu/autolib.py:279
msgid "first argument ({0}) must be a function"
msgstr ""
#: tiramisu/autolib.py:284
#: tiramisu/autolib.py:283
msgid "help_function ({0}) must be a function"
msgstr ""
#: tiramisu/autolib.py:455 tiramisu/autolib.py:503
#: tiramisu/autolib.py:452 tiramisu/autolib.py:514
msgid "unable to carry out a calculation for {}, {}"
msgstr ""
#: tiramisu/autolib.py:461 tiramisu/autolib.py:521
msgid "the option {0} is used in a calculation but is invalid ({1})"
msgstr ""
#: tiramisu/autolib.py:467 tiramisu/autolib.py:515 tiramisu/autolib.py:554
#: tiramisu/autolib.py:477 tiramisu/autolib.py:535 tiramisu/autolib.py:584
msgid "unable to get value for calculating {0}, {1}"
msgstr ""
#: tiramisu/autolib.py:499
msgid "unable to carry out a calculation for {0}, {1}"
msgstr ""
#: tiramisu/autolib.py:535
msgid "cannot find information for {0}, {1} is a dynamic option"
msgstr ""
#: tiramisu/autolib.py:564
#: tiramisu/autolib.py:601
msgid "option {0} is not a dynoptiondescription or in a dynoptiondescription"
msgstr ""
#: tiramisu/autolib.py:650
#: tiramisu/autolib.py:687
msgid "cannot calculate arguments for \"{0}\", cannot find dynamic variable \"{1}\" with identifier \"{2}\", list of valid identifiers: {3}"
msgstr ""
#: tiramisu/autolib.py:754
msgid "the follower {0} must have index in carry_out_calculation!"
msgstr ""
#: tiramisu/autolib.py:826
#: tiramisu/autolib.py:866
msgid "the \"{}\" function with positional arguments \"{}\" and keyword arguments \"{}\" must not return a list (\"{}\") for the follower option {}"
msgstr ""
#: tiramisu/autolib.py:841
#: tiramisu/autolib.py:881
msgid "the \"{}\" function must not return a list (\"{}\") for the follower option {}"
msgstr ""
#: tiramisu/autolib.py:882
msgid "unexpected error \"{1}\" in function \"{2}\" with arguments \"{3}\" and \"{4}\" for option {0}"
#: tiramisu/autolib.py:922
msgid "unexpected error \"{0}\" in function \"{1}\" with arguments \"{3}\" and \"{4}\" for option {2}"
msgstr ""
#: tiramisu/autolib.py:891
msgid "unexpected error \"{1}\" in function \"{2}\" for option {0}"
#: tiramisu/autolib.py:933
msgid "unexpected error \"{0}\" in function \"{1}\" for option {2}"
msgstr ""
#: tiramisu/config.py:420
@ -348,19 +340,19 @@ msgid "invalid value"
msgstr ""
#: tiramisu/error.py:207
msgid "attention, \"{0}\" could be an invalid {1} for {2}"
msgid "attention, \"{0}\" could be an invalid {1} for \"{2}\""
msgstr ""
#: tiramisu/error.py:209
msgid "attention, \"{0}\" could be an invalid {1} for {2} at index \"{3}\""
msgid "attention, \"{0}\" could be an invalid {1} for \"{2}\" at index \"{3}\""
msgstr ""
#: tiramisu/error.py:228 tiramisu/error.py:239
msgid "\"{0}\" is an invalid {1} for {2}"
msgid "\"{0}\" is an invalid {1} for \"{2}\""
msgstr ""
#: tiramisu/error.py:230
msgid "\"{0}\" is an invalid {1} for {2} at index \"{3}\""
msgid "\"{0}\" is an invalid {1} for \"{2}\" at index \"{3}\""
msgstr ""
#: tiramisu/function.py:65
@ -641,7 +633,7 @@ msgid "leadership {0} shall not have a subgroup"
msgstr ""
#: tiramisu/option/leadership.py:114
msgid "only multi option are allowed in leadership {0} but option {1} is not a multi"
msgid "only multi option allowed in leadership {0} but option {1} is not a multi"
msgstr ""
#: tiramisu/option/leadership.py:141

View file

@ -4,7 +4,7 @@ requires = ["flit_core >=3.8.0,<4"]
[project]
name = "tiramisu"
version = "5.2.0a6"
version = "5.2.0a5"
authors = [{name = "Emmanuel Garette", email = "gnunux@gnunux.info"}]
readme = "README.md"
description = "an options controller tool"

View file

@ -1 +1 @@
__version__ = "5.2.0a6"
__version__ = "5.2.0a5"

View file

@ -22,7 +22,7 @@ from typing import Any, Optional, Union, Callable, Dict, List
from itertools import chain
import weakref
from .error import PropertiesOptionError, ConfigError, LeadershipError, ValueWarning, CancelParam, display_list, errors
from .error import PropertiesOptionError, ConfigError, LeadershipError, ValueWarning, CancelParam, display_list
from .i18n import _
from .setting import undefined, ConfigBag
from .function import FUNCTION_WAITING_FOR_DICT, FUNCTION_WAITING_FOR_ERROR
@ -446,7 +446,14 @@ def manager_callback(
or param.raisepropertyerror
):
raise err from err
raise ConfigError(err)
display_name = subconfig.option.impl_get_display_name(
subconfig, with_quote=True
)
raise ConfigError(
_("unable to carry out a calculation for {}, {}").format(
display_name, err
)
) from err
except ValueError as err:
display_name = subconfig.option.impl_get_display_name(
subconfig, with_quote=True
@ -464,7 +471,14 @@ def manager_callback(
["configerror"],
config_bag.context.get_settings(),
)
errors.raise_carry_out_calculation_error(subconfig, _("unable to get value for calculating {0}, {1}"), err)
display_name = subconfig.option.impl_get_display_name(
subconfig, with_quote=True
)
raise ConfigError(
_("unable to get value for calculating {0}, {1}").format(
display_name, err
)
) from err
return value
def get_option_bag(
@ -496,7 +510,12 @@ def manager_callback(
# raise PropertiesOptionError (which is catched) because must not add value None in carry_out_calculation
if param.notraisepropertyerror or param.raisepropertyerror:
raise err from err
errors.raise_carry_out_calculation_error(subconfig, _("unable to carry out a calculation for {0}, {1}"), err, option=option)
display_name = option.impl_get_display_name(subconfig, with_quote=True)
raise ConfigError(
_("unable to carry out a calculation for {}, {}").format(
display_name, err
)
) from err
except ValueError as err:
display_name = option.impl_get_display_name(subconfig, with_quote=True)
raise ValueError(
@ -512,7 +531,12 @@ def manager_callback(
["configerror"],
config_bag.context.get_settings(),
)
errors.raise_carry_out_calculation_error(subconfig, _("unable to get value for calculating {0}, {1}"), err, option=option)
display_name = option.impl_get_display_name(subconfig, with_quote=True)
raise ConfigError(
_("unable to get value for calculating {0}, {1}").format(
display_name, err
)
) from err
return subsubconfig
if isinstance(param, ParamValue):
@ -529,10 +553,15 @@ def manager_callback(
true_path=subconfig.path,
)
if isinstance(isubconfig, list):
display_name = option.impl_get_display_name(
subconfig, with_quote=True
)
search_name = search_option.impl_get_display_name(
None, with_quote=True
)
errors.raise_carry_out_calculation_error(subconfig, _("cannot find information for {0}, {1} is a dynamic option"), None, option=option, extra_keys=[search_name])
raise ConfigError(
f"cannot find information for {display_name}, {search_name} is a dynamic option"
)
else:
isubconfig = get_option_bag(
config_bag,
@ -551,7 +580,12 @@ def manager_callback(
param.default_value,
)
except ValueError as err:
errors.raise_carry_out_calculation_error(subconfig, _("unable to get value for calculating {0}, {1}"), err, option=option)
display_name = option.impl_get_display_name(subconfig, with_quote=True)
raise ConfigError(
_("unable to get value for calculating {0}, {1}").format(
display_name, err
)
) from err
if isinstance(param, ParamIndex):
return index
@ -561,7 +595,14 @@ def manager_callback(
not option.impl_is_optiondescription()
or not option.impl_is_dynoptiondescription()
):
errors.raise_carry_out_calculation_error(subconfig, _("option {0} is not a dynoptiondescription or in a dynoptiondescription"), None, option=option)
display_name = subconfig.option.impl_get_display_name(
subconfig, with_quote=True
)
raise ConfigError(
_(
"option {0} is not a dynoptiondescription or in a dynoptiondescription"
).format(display_name)
)
if subconfig.identifiers is None:
# if uncalculated
return
@ -644,10 +685,8 @@ def manager_callback(
raise CancelParam(callbk_option.impl_getpath(), child_path)
identifiers = display_list(doption.get_identifiers(parent), add_quote=True)
doption_name = doption.impl_get_display_name(
None, with_quote=True
)
errors.raise_carry_out_calculation_error(subconfig, _('cannot calculate arguments for "{0}", cannot find dynamic variable "{1}" with identifier "{2}", list of valid identifiers: {3}'), err, extra_keys=[doption_name, identifier, identifiers])
msg = _('cannot calculate arguments for "{0}", cannot find dynamic variable "{1}" with identifier "{2}", list of valid identifiers: {3}').format(subconfig.path, doption.impl_getpath(), identifier, identifiers)
raise ConfigError(msg) from err
new_parents.append(
parent.get_child(
doption,
@ -751,7 +790,9 @@ def carry_out_calculation(
and option.impl_is_follower()
and index is None
):
errors.raise_carry_out_calculation_error(subconfig, _("the follower {0} must have index in carry_out_calculation!"), None, option=option)
raise ConfigError(
f"the follower {option.impl_get_display_name(subconfig, with_quote=True)} must have index in carry_out_calculation!"
)
def fake_items(iterator):
return ((None, i) for i in iterator)
@ -880,14 +921,19 @@ def calculate(
error = err
if args or kwargs:
msg = _(
'unexpected error "{1}" in function "{2}" with arguments "{3}" and "{4}" '
"for option {0}"
'unexpected error "{0}" in function "{1}" with arguments "{3}" and "{4}" '
"for option {2}"
).format(
str(error),
callback.__name__,
subconfig.option.impl_get_display_name(subconfig, with_quote=True),
args,
kwargs,
)
extra_keys = [callback.__name__,
args,
kwargs,
]
else:
msg = _('unexpected error "{1}" in function "{2}" for option {0}')
extra_keys = [callback.__name__]
errors.raise_carry_out_calculation_error(subconfig, msg, error, extra_keys=extra_keys)
msg = _('unexpected error "{0}" in function "{1}" for option {2}' "").format(
str(error),
callback.__name__,
subconfig.option.impl_get_display_name(subconfig, with_quote=True),
)
raise ConfigError(msg) from error

View file

@ -177,7 +177,7 @@ class _CommonError:
self.val = val
self.display_type = display_type
self.opt = weakref.ref(opt)
self.name = opt.impl_get_display_name(subconfig, with_quote=True)
self.name = opt.impl_get_display_name(subconfig)
self.err_msg = err_msg
self.index = index
super().__init__(self.err_msg)
@ -204,9 +204,9 @@ class ValueWarning(_CommonError, UserWarning):
def __init__(self, **kwargs):
if ValueWarning.tmpl is None:
if kwargs.get('index') is None:
ValueWarning.tmpl = _('attention, "{0}" could be an invalid {1} for {2}')
ValueWarning.tmpl = _('attention, "{0}" could be an invalid {1} for "{2}"')
else:
ValueWarning.tmpl = _('attention, "{0}" could be an invalid {1} for {2} at index "{3}"')
ValueWarning.tmpl = _('attention, "{0}" could be an invalid {1} for "{2}" at index "{3}"')
if list(kwargs) == ['msg']:
self.msg = kwargs['msg']
else:
@ -225,9 +225,9 @@ class ValueOptionError(_CommonError, ValueError):
def __init__(self, **kwargs):
if ValueOptionError.tmpl is None:
if kwargs.get('index') is None:
self.tmpl = _('"{0}" is an invalid {1} for {2}')
self.tmpl = _('"{0}" is an invalid {1} for "{2}"')
else:
self.tmpl = _('"{0}" is an invalid {1} for {2} at index "{3}"')
self.tmpl = _('"{0}" is an invalid {1} for "{2}" at index "{3}"')
super().__init__(**kwargs)
@ -236,7 +236,7 @@ class ValueErrorWarning(ValueWarning):
def __init__(self, *args, **kwargs):
if ValueErrorWarning.tmpl is None:
ValueErrorWarning.tmpl = _('"{0}" is an invalid {1} for {2}')
ValueErrorWarning.tmpl = _('"{0}" is an invalid {1} for "{2}"')
super().__init__(*args, **kwargs)
@ -254,21 +254,3 @@ class CancelParam(Exception):
def __bool__(self):
return False
class Errors:
@staticmethod
def raise_carry_out_calculation_error(subconfig, message, original_error, option=None, extra_keys=[]):
if option is None:
option = subconfig.option
display_name = option.impl_get_display_name(
subconfig, with_quote=True
)
if original_error:
raise ConfigError(
message.format(display_name, original_error, *extra_keys)
) from original_error
raise ConfigError(message.format(display_name, extra_keys))
errors = Errors()