error in external function should returns explicit error message

This commit is contained in:
Emmanuel Garette 2017-02-11 18:11:05 +01:00
parent 695de030ef
commit 80f6f4ba03
6 changed files with 329 additions and 260 deletions

View file

@ -53,6 +53,14 @@ def is_config(config, **kwargs):
return 'no'
def return_raise(*arg):
raise Exception('test')
def return_valueerror(*arg):
raise ValueError('test')
def make_description_duplicates():
gcoption = ChoiceOption('name', 'GC name', ('ref', 'framework'), 'ref')
## dummy 1
@ -973,3 +981,21 @@ def test_re_set_callback():
st2 = StrOption('st2', "", multi=True)
st2.impl_set_callback(return_value, {'': ((st1, False),)})
raises(ConfigError, "st2.impl_set_callback(return_value, {'': ((st1, False),)})")
def test_callback_raise():
opt1 = BoolOption('opt1', 'Option 1', callback=return_raise)
opt2 = BoolOption('opt2', 'Option 2', callback=return_valueerror)
od1 = OptionDescription('od1', '', [opt1])
od2 = OptionDescription('od2', '', [opt2])
maconfig = OptionDescription('rootconfig', '', [od1, od2])
cfg = Config(maconfig)
cfg.read_write()
try:
cfg.od1.opt1
except Exception, err:
assert '"Option 1"' in str(err)
try:
cfg.od2.opt2
except ValueError, err:
assert '"Option 2"' in str(err)

View file

@ -17,12 +17,12 @@ msg_err = _('attention, "{0}" could be an invalid {1} for "{2}", {3}')
def return_true(value, param=None):
if value == 'val' and param in [None, 'yes']:
return True
return ValueError('test error')
raise ValueError('test error')
def return_false(value, param=None):
if value == 'val' and param in [None, 'yes']:
return ValueError('test error')
raise ValueError('test error')
def return_val(value, param=None):
@ -31,7 +31,7 @@ def return_val(value, param=None):
def return_if_val(value):
if value != 'val':
return ValueError('test error')
raise ValueError('test error')
def is_context(value, context):
@ -95,6 +95,11 @@ def test_validator():
cfg = Config(root)
assert cfg.opt1 == 'val'
raises(ValueError, "cfg.opt2 = 'val'")
try:
cfg.opt2 = 'val'
except ValueError, err:
msg = _('"{0}" is an invalid {1} for "{2}", {3}').format('val', _('string'), 'opt2', 'test error')
assert str(err) == msg
def test_validator_params():

View file

@ -25,7 +25,7 @@ from .setting import undefined
def carry_out_calculation(option, context, callback, callback_params,
index=undefined, validate=True):
index=undefined, validate=True, is_validator=False):
"""a function that carries out a calculation for an option's value
:param option: the option
@ -38,6 +38,7 @@ def carry_out_calculation(option, context, callback, callback_params,
:type callback_params: dict
:param index: if an option is multi, only calculates the nth value
:type index: int
:param is_validator: to know if carry_out_calculation is used to validate a value
The callback_params is a dict. Key is used to build args (if key is '')
and kwargs (otherwise). Values are tuple of:
@ -216,7 +217,7 @@ def carry_out_calculation(option, context, callback, callback_params,
args.append(val)
else:
kwargs[key] = val
return calculate(callback, args, kwargs)
return calculate(option, callback, is_validator, args, kwargs)
else:
# no value is multi
# return a single value
@ -229,7 +230,7 @@ def carry_out_calculation(option, context, callback, callback_params,
args.append(couple[0])
else:
kwargs[key] = couple[0]
ret = calculate(callback, args, kwargs)
ret = calculate(option, callback, is_validator, args, kwargs)
if not option.impl_is_optiondescription() and callback_params != {} and isinstance(ret, list) and \
option.impl_is_master_slaves('slave'):
if not has_option and index not in [None, undefined]:
@ -243,7 +244,7 @@ def carry_out_calculation(option, context, callback, callback_params,
return ret
def calculate(callback, args, kwargs):
def calculate(option, callback, is_validator, args, kwargs):
"""wrapper that launches the 'callback'
:param callback: callback function
@ -254,4 +255,11 @@ def calculate(callback, args, kwargs):
try:
return callback(*args, **kwargs)
except ValueError as err:
return err
if is_validator:
return err
error = err
except Exception as err:
error = err
raise error.__class__(_('function "{0}" returns "{1}" for option "{2}"').format(callback.func_name,
option.impl_get_display_name(),
str(err)))

View file

@ -571,7 +571,8 @@ class Option(OnlyOption):
value = carry_out_calculation(current_opt, context=context,
callback=validator,
callback_params=validator_params_,
index=_index)
index=_index,
is_validator=True)
if isinstance(value, Exception):
return value

View file

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Tiramisu\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-01-19 21:26+0100\n"
"POT-Creation-Date: 2017-02-11 18:05+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: Emmanuel Garette <egarette@cadoles.com>\n"
"Language-Team: Tiramisu's team <egarette@cadoles.com>\n"
@ -14,18 +14,22 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Poedit-SourceCharset: UTF-8\n"
#: tiramisu/autolib.py:172
#: tiramisu/autolib.py:178
msgid ""
"unable to carry out a calculation, option {0} has properties: {1} for: {2}"
msgstr ""
"impossible d'effectuer le calcul, l'option {0} a les propriétés : {1} pour : "
"{2}"
#: tiramisu/autolib.py:237
#: tiramisu/autolib.py:242
msgid "callback cannot return a list for a slave option ({0})"
msgstr ""
"un calcul ne peut pas retourner une liste pour une option esclave ({0})"
#: tiramisu/autolib.py:263
msgid "function \"{0}\" returns \"{1}\" for option \"{2}\""
msgstr "la fonction \"{0}\" retourne \"{1}\" pour l'option \"{2}\""
#: tiramisu/config.py:64
msgid "descr must be an optiondescription, not {0}"
msgstr "descr doit être une optiondescription pas un {0}"
@ -35,7 +39,7 @@ msgid "unknown group_type: {0}"
msgstr "group_type inconnu: {0}"
#: tiramisu/config.py:187 tiramisu/setting.py:335 tiramisu/value.py:54
#: tiramisu/value.py:749
#: tiramisu/value.py:756
msgid "the context does not exist anymore"
msgstr "le context n'existe plus"
@ -98,20 +102,20 @@ msgstr "un nom doit être donné à la config avant de créer un groupconfig"
msgid "config name must be uniq in groupconfig for {0}"
msgstr "le nom de la config doit être unique dans un groupconfig pour {0}"
#: tiramisu/config.py:876
#: tiramisu/config.py:878
msgid "metaconfig's children should be config, not {0}"
msgstr "enfants d'une metaconfig doit être une config, pas {0}"
#: tiramisu/config.py:880
#: tiramisu/config.py:882
msgid "child has already a metaconfig's"
msgstr "enfant a déjà une metaconfig"
#: tiramisu/config.py:884
#: tiramisu/config.py:886
msgid "all config in metaconfig must have the same optiondescription"
msgstr ""
"toutes les configs d'une metaconfig doivent avoir la même optiondescription"
#: tiramisu/config.py:899
#: tiramisu/config.py:901
msgid ""
"force_default, force_default_if_same or force_dont_change_value cannot be "
"set with only_config"
@ -119,7 +123,7 @@ msgstr ""
"force_default, force_default_if_same ou force_dont_change_value ne peuvent "
"pas être spécifié avec only_config"
#: tiramisu/config.py:905
#: tiramisu/config.py:907
msgid "force_default and force_dont_change_value cannot be set together"
msgstr ""
"force_default et force_dont_change_value ne peuvent pas être mis ensemble"
@ -132,19 +136,23 @@ msgstr "et"
msgid "or"
msgstr "ou"
#: tiramisu/error.py:34
#: tiramisu/error.py:48
msgid " {} "
msgstr " {} "
#: tiramisu/error.py:58
#: tiramisu/error.py:81 tiramisu/setting.py:514
msgid "property"
msgstr "de la propriété"
#: tiramisu/error.py:60
#: tiramisu/error.py:83 tiramisu/setting.py:516
msgid "properties"
msgstr "des propriétés"
#: tiramisu/error.py:62 tiramisu/setting.py:520
#: tiramisu/error.py:86
msgid "cannot access to {0} \"{1}\" because \"{2}\" has {3} {4}"
msgstr "ne peut accéder à {0} \"{1}\" parce que \"{2}\" a {3} {4}"
#: tiramisu/error.py:92 tiramisu/setting.py:517
msgid "cannot access to {0} \"{1}\" because has {2} {3}"
msgstr "ne peut accéder à l'{0} \"{1}\" a cause {2} {3}"
@ -236,118 +244,118 @@ msgstr "invalide caractère"
msgid "invalid unicode or string"
msgstr "invalide unicode ou string"
#: tiramisu/option/baseoption.py:510 tiramisu/option/baseoption.py:609
#: tiramisu/option/baseoption.py:515 tiramisu/option/baseoption.py:613
msgid "attention, \"{0}\" could be an invalid {1} for \"{2}\", {3}"
msgstr ""
"attention, \"{0}\" peut être une option de type {1} invalide pour \"{2}\", "
"{3}"
#: tiramisu/option/baseoption.py:548 tiramisu/option/baseoption.py:661
#: tiramisu/option/baseoption.py:551 tiramisu/option/baseoption.py:665
msgid "invalid value \"{}\", this value is already in \"{}\""
msgstr "valeur invalide \"{}\", cette valeur est déjà dans \"{}\""
#: tiramisu/option/baseoption.py:590 tiramisu/option/baseoption.py:628
#: tiramisu/option/baseoption.py:594 tiramisu/option/baseoption.py:632
msgid "\"{0}\" is an invalid {1} for \"{2}\", {3}"
msgstr "\"{0}\" est une valeur invalide pour l'option \"{2}\" de type {1}, {3}"
#: tiramisu/option/baseoption.py:594 tiramisu/option/baseoption.py:632
#: tiramisu/option/baseoption.py:598 tiramisu/option/baseoption.py:636
msgid "\"{0}\" is an invalid {1} for \"{2}\""
msgstr "\"{0}\" est une valeur invalide pour l'option \"{2}\" de type {1}"
#: tiramisu/option/baseoption.py:606
#: tiramisu/option/baseoption.py:610
msgid "do_validation for {0}: error in value"
msgstr "do_validation for {0} : erreur dans un la valeur"
#: tiramisu/option/baseoption.py:648 tiramisu/option/baseoption.py:666
#: tiramisu/option/baseoption.py:652 tiramisu/option/baseoption.py:670
msgid "invalid value \"{0}\" for \"{1}\" which must be a list"
msgstr "valeur invalide \"{0}\" pour \"{1}\" qui doit être une liste"
#: tiramisu/option/baseoption.py:653
#: tiramisu/option/baseoption.py:657
msgid "invalid value \"{}\" for \"{}\" which must not be a list"
msgstr "valeur invalide \"{0}\" pour \"{1}\" qui ne doit pas être une liste"
#: tiramisu/option/baseoption.py:675
#: tiramisu/option/baseoption.py:679
msgid "invalid value \"{0}\" for \"{1}\" which must be a list of list"
msgstr "valeur invalide \"{0}\" pour \"{1}\" qui doit être une liste de liste"
#: tiramisu/option/baseoption.py:728 tiramisu/option/baseoption.py:732
#: tiramisu/option/baseoption.py:732 tiramisu/option/baseoption.py:736
msgid "cannot add consistency with submulti option"
msgstr "ne peut ajouter de test de consistence a une option submulti"
#: tiramisu/option/baseoption.py:734
#: tiramisu/option/baseoption.py:738
msgid "consistency must be set with an option"
msgstr "consistency doit être configuré avec une option"
#: tiramisu/option/baseoption.py:737 tiramisu/option/baseoption.py:744
#: tiramisu/option/baseoption.py:741 tiramisu/option/baseoption.py:748
msgid ""
"almost one option in consistency is in a dynoptiondescription but not all"
msgstr ""
"au moins une option dans le test de consistance est dans une "
"dynoptiondescription mais pas toutes"
#: tiramisu/option/baseoption.py:740
#: tiramisu/option/baseoption.py:744
msgid "option in consistency must be in same dynoptiondescription"
msgstr ""
"option dans une consistency doit être dans le même dynoptiondescription"
#: tiramisu/option/baseoption.py:747
#: tiramisu/option/baseoption.py:751
msgid "cannot add consistency with itself"
msgstr "ne peut ajouter une consistency avec lui même"
#: tiramisu/option/baseoption.py:749
#: tiramisu/option/baseoption.py:753
msgid "every options in consistency must be multi or none"
msgstr ""
"toutes les options d'une consistency doivent être multi ou ne pas l'être"
#: tiramisu/option/baseoption.py:766
#: tiramisu/option/baseoption.py:770
msgid "'{0}' ({1}) cannot add consistency, option is read-only"
msgstr ""
"'{0}' ({1}) ne peut ajouter de consistency, l'option est en lecture seul"
#: tiramisu/option/baseoption.py:773
#: tiramisu/option/baseoption.py:777
msgid "consistency {0} not available for this option"
msgstr "consistency {0} non valable pour cette option"
#: tiramisu/option/baseoption.py:777
#: tiramisu/option/baseoption.py:781
msgid "unknow parameter {0} in consistency"
msgstr "paramètre inconnu {0} dans un test de consistance"
#: tiramisu/option/baseoption.py:841
#: tiramisu/option/baseoption.py:845
msgid "_cons_not_equal: {} are not different"
msgstr "_cons_not_equal: {} sont différents"
#: tiramisu/option/baseoption.py:844
#: tiramisu/option/baseoption.py:848
msgid "should be different from the value of {}"
msgstr "devrait être différent de la valeur de {}"
#: tiramisu/option/baseoption.py:846
#: tiramisu/option/baseoption.py:850
msgid "must be different from the value of {}"
msgstr "doit être différent de la valeur de {}"
#: tiramisu/option/baseoption.py:849
#: tiramisu/option/baseoption.py:853
msgid "value for {} should be different"
msgstr "valeur pour {} devrait être différent"
#: tiramisu/option/baseoption.py:851
#: tiramisu/option/baseoption.py:855
msgid "value for {} must be different"
msgstr "valeur pour {} doit être différent"
#: tiramisu/option/baseoption.py:910
#: tiramisu/option/baseoption.py:914
msgid "default value not allowed if option: {0} is calculated"
msgstr "la valeur par défaut n'est pas possible si l'option {0} est calculée"
#: tiramisu/option/baseoption.py:930
#: tiramisu/option/baseoption.py:934
msgid "malformed requirements type for option: {0}, must be a dict"
msgstr ""
"type requirements malformé pour l'option : {0}, doit être un dictionnaire"
#: tiramisu/option/baseoption.py:936
#: tiramisu/option/baseoption.py:940
msgid "malformed requirements for option: {0} unknown keys {1}, must only {2}"
msgstr ""
"requirements mal formés pour l'option : {0} clefs inconnues {1}, doit "
"seulement avoir {2}"
#: tiramisu/option/baseoption.py:944
#: tiramisu/option/baseoption.py:948
msgid ""
"malformed requirements for option: {0} require must have option, expected "
"and action keys"
@ -355,33 +363,33 @@ msgstr ""
"requirements malformé pour l'option : {0} l'exigence doit avoir les clefs "
"option, expected et action"
#: tiramisu/option/baseoption.py:951
#: tiramisu/option/baseoption.py:955
msgid ""
"malformed requirements for option: {0} action cannot be force_store_value"
msgstr ""
"requirements mal formés pour l'option : {0} action ne peut pas être "
"force_store_value"
#: tiramisu/option/baseoption.py:956
#: tiramisu/option/baseoption.py:960
msgid "malformed requirements for option: {0} inverse must be boolean"
msgstr ""
"requirements mal formés pour l'option : {0} inverse doit être un booléen"
#: tiramisu/option/baseoption.py:960
#: tiramisu/option/baseoption.py:964
msgid "malformed requirements for option: {0} transitive must be boolean"
msgstr ""
"requirements mal formés pour l'option : {0} transitive doit être booléen"
#: tiramisu/option/baseoption.py:964
#: tiramisu/option/baseoption.py:968
msgid "malformed requirements for option: {0} same_action must be boolean"
msgstr ""
"requirements mal formés pour l'option : {0} same_action doit être un booléen"
#: tiramisu/option/baseoption.py:968
#: tiramisu/option/baseoption.py:972
msgid "malformed requirements must be an option in option {0}"
msgstr "requirements mal formés doit être une option dans l'option {0}"
#: tiramisu/option/baseoption.py:971
#: tiramisu/option/baseoption.py:975
msgid ""
"malformed requirements multi option must not set as requires of non multi "
"option {0}"
@ -389,245 +397,251 @@ msgstr ""
"requirements mal formés une option multiple ne doit pas être spécifié comme "
"pré-requis à l'option non multiple {0}"
#: tiramisu/option/baseoption.py:977
#: tiramisu/option/baseoption.py:981
msgid "malformed requirements expected value must be valid for option {0}: {1}"
msgstr ""
"valeur de \"expected\" malformé, doit être valide pour l'option {0} : {1}"
#: tiramisu/option/baseoption.py:1007
#: tiramisu/option/baseoption.py:1011
msgid "malformed symlinkoption must be an option for symlink {0}"
msgstr "symlinkoption mal formé, doit être une option pour symlink {0}"
#: tiramisu/option/masterslave.py:44
#: tiramisu/option/masterslave.py:45
msgid "master group with wrong master name for {0}"
msgstr "le groupe maître avec un nom de maître érroné pour {0}"
#: tiramisu/option/masterslave.py:49
msgid "not allowed default value for option {0} in group {1}"
msgstr "valeur de défaut non autorisée pour l'option {0} du groupe {1}"
#: tiramisu/option/masterslave.py:50
msgid "not allowed default value for option {0} in master/slave object {1}"
msgstr ""
"valeur par défaut non autorisée pour l'option {0} dans l'objet master/slave "
"{1}"
#: tiramisu/option/masterslave.py:60
#: tiramisu/option/masterslave.py:61
msgid "callback of master's option shall not refered a slave's ones"
msgstr ""
"callback d'une variable maitre ne devrait pas référencer des variables "
"esclaves"
#: tiramisu/option/masterslave.py:271
#: tiramisu/option/masterslave.py:274
msgid "invalid len for the slave: {0} which has {1} as master"
msgstr "longueur invalide pour une esclave : {0} qui a {1} comme maître"
#: tiramisu/option/option.py:40
#: tiramisu/option/option.py:41
msgid "choice"
msgstr "choix"
#: tiramisu/option/option.py:54
#: tiramisu/option/option.py:55
msgid "values is not a function, so values_params must be None"
msgstr "values n'est pas une fonction, donc values_params doit être None"
#: tiramisu/option/option.py:56
#: tiramisu/option/option.py:57
msgid "values must be a tuple or a function for {0}"
msgstr "values doit être un tuple ou une fonction pour {0}"
#: tiramisu/option/option.py:93
#: tiramisu/option/option.py:89
msgid "calculated values for {0} is not a list"
msgstr "valeurs calculées for {0} n'est pas une liste"
#: tiramisu/option/option.py:104
#: tiramisu/option/option.py:100
msgid "only {0} is allowed"
msgstr "seulement {0} est autorisé"
#: tiramisu/option/option.py:107
#: tiramisu/option/option.py:103
msgid "only {0} are allowed"
msgstr "seulement {0} sont autorisés"
#: tiramisu/option/option.py:114
#: tiramisu/option/option.py:110
msgid "boolean"
msgstr "booléen"
#: tiramisu/option/option.py:124
#: tiramisu/option/option.py:120
msgid "integer"
msgstr "nombre"
#: tiramisu/option/option.py:134
#: tiramisu/option/option.py:130
msgid "float"
msgstr "nombre flottant"
#: tiramisu/option/option.py:144
#: tiramisu/option/option.py:140
msgid "string"
msgstr "texte"
#: tiramisu/option/option.py:161
#: tiramisu/option/option.py:157
msgid "unicode string"
msgstr "texte unicode"
#: tiramisu/option/option.py:171
#: tiramisu/option/option.py:167
msgid "password"
msgstr "mot de passe"
#: tiramisu/option/option.py:182
#: tiramisu/option/option.py:178
msgid "IP"
msgstr "IP"
#: tiramisu/option/option.py:224
#: tiramisu/option/option.py:220
msgid "shouldn't in reserved class"
msgstr "ne devrait pas être dans une classe réservée"
#: tiramisu/option/option.py:226 tiramisu/option/option.py:361
#: tiramisu/option/option.py:222 tiramisu/option/option.py:357
msgid "mustn't be in reserved class"
msgstr "ne doit pas être dans une classe réservée"
#: tiramisu/option/option.py:230
#: tiramisu/option/option.py:226
msgid "should be in private class"
msgstr "devrait être dans une classe privée"
#: tiramisu/option/option.py:232
#: tiramisu/option/option.py:228
msgid "must be in private class"
msgstr "doit être dans une classe privée"
#: tiramisu/option/option.py:237 tiramisu/option/option.py:434
#: tiramisu/option/option.py:233 tiramisu/option/option.py:435
msgid "invalid len for vals"
msgstr "longueur invalide pour vals"
#: tiramisu/option/option.py:243
#: tiramisu/option/option.py:239
msgid "should be in network {0}/{1} ({2}/{3})"
msgstr "devrait être dans le réseau {0}/{1} ({2}/{3})"
#: tiramisu/option/option.py:245
#: tiramisu/option/option.py:241
msgid "must be in network {0}/{1} ({2}/{3})"
msgstr "doit être dans le réseau {0}/{1} ({2}/{3})"
#: tiramisu/option/option.py:264
#: tiramisu/option/option.py:260
msgid "port"
msgstr "port"
#: tiramisu/option/option.py:288
#: tiramisu/option/option.py:284
msgid "inconsistency in allowed range"
msgstr "inconsistence dans la plage autorisée"
#: tiramisu/option/option.py:293
#: tiramisu/option/option.py:289
msgid "max value is empty"
msgstr "la valeur maximum est vide"
#: tiramisu/option/option.py:319
#: tiramisu/option/option.py:315
msgid "range must have two values only"
msgstr "un rang doit avoir deux valeurs seulement"
#: tiramisu/option/option.py:321
#: tiramisu/option/option.py:317
msgid "first port in range must be smaller than the second one"
msgstr "le premier port d'un rang doit être plus petit que le second"
#: tiramisu/option/option.py:331
#: tiramisu/option/option.py:327
msgid "must be an integer between {0} and {1}"
msgstr "doit être une nombre entre {0} et {1}"
#: tiramisu/option/option.py:339
#: tiramisu/option/option.py:335
msgid "network address"
msgstr "adresse réseau"
#: tiramisu/option/option.py:359
#: tiramisu/option/option.py:355
msgid "shouldn't be in reserved class"
msgstr "ne devrait pas être dans une classe réservée"
#: tiramisu/option/option.py:368
#: tiramisu/option/option.py:364
msgid "netmask address"
msgstr "adresse netmask"
#: tiramisu/option/option.py:399
#: tiramisu/option/option.py:395
msgid "invalid len for opts"
msgstr "longueur invalide pour opts"
#: tiramisu/option/option.py:408
#: tiramisu/option/option.py:404
msgid "this is a network with netmask {0} ({1})"
msgstr "c'est une adresse réseau avec le masque {0} ({1})"
#: tiramisu/option/option.py:410
#: tiramisu/option/option.py:406
msgid "this is a broadcast with netmask {0} ({1})"
msgstr "c'est une adresse broadcast avec le masque {0} ({1})"
#: tiramisu/option/option.py:414
#: tiramisu/option/option.py:410
msgid "with netmask {0} ({1})"
msgstr "avec le masque {0} ({1})"
#: tiramisu/option/option.py:421
#: tiramisu/option/option.py:417
msgid "broadcast address"
msgstr "adresse broadcast"
#: tiramisu/option/option.py:439
#: tiramisu/option/option.py:440
msgid "with network {0}/{1} ({2}/{3})"
msgstr "avec le réseau {0}/{1} ({2}/{3})"
#: tiramisu/option/option.py:451
#: tiramisu/option/option.py:452
msgid "domain name"
msgstr "nom de domaine"
#: tiramisu/option/option.py:459
#: tiramisu/option/option.py:460
msgid "unknown type_ {0} for hostname"
msgstr "type_ inconnu {0} pour le nom d'hôte"
#: tiramisu/option/option.py:462
#: tiramisu/option/option.py:463
msgid "allow_ip must be a boolean"
msgstr "allow_ip doit être un booléen"
#: tiramisu/option/option.py:464
#: tiramisu/option/option.py:465
msgid "allow_without_dot must be a boolean"
msgstr "allow_without_dot doit être un booléen"
#: tiramisu/option/option.py:489
#: tiramisu/option/option.py:490
msgid "invalid length (min 1)"
msgstr "longueur invalide (min 1)"
#: tiramisu/option/option.py:491
#: tiramisu/option/option.py:492
msgid "invalid length (max {0})"
msgstr "longueur invalide (max {0})"
#: tiramisu/option/option.py:506
#: tiramisu/option/option.py:507
msgid "must not be an IP"
msgstr "ne doit pas être une IP"
#: tiramisu/option/option.py:513
#: tiramisu/option/option.py:514
msgid "must have dot"
msgstr "doit avec un point"
#: tiramisu/option/option.py:515
#: tiramisu/option/option.py:516
msgid "invalid length (max 255)"
msgstr "longueur invalide (max 255)"
#: tiramisu/option/option.py:526
#: tiramisu/option/option.py:527
msgid "some characters are uppercase"
msgstr "des caractères sont en majuscule"
#: tiramisu/option/option.py:529
#: tiramisu/option/option.py:530
msgid "some characters may cause problems"
msgstr "des caractères peuvent poser problèmes"
#: tiramisu/option/option.py:550
#: tiramisu/option/option.py:551
msgid "URL"
msgstr "URL"
#: tiramisu/option/option.py:558
#: tiramisu/option/option.py:559
msgid "must start with http:// or https://"
msgstr "doit démarré avec http:// ou https://"
#: tiramisu/option/option.py:576
#: tiramisu/option/option.py:577
msgid "port must be an between 0 and 65536"
msgstr "port doit être entre 0 et 65536"
#: tiramisu/option/option.py:587
#: tiramisu/option/option.py:588
msgid "must ends with a valid resource name"
msgstr "doit finir par un nom de ressource valide"
#: tiramisu/option/option.py:608
#: tiramisu/option/option.py:609
msgid "email address"
msgstr "adresse mail"
#: tiramisu/option/option.py:615
#: tiramisu/option/option.py:616
msgid "username"
msgstr "nom d'utilisateur"
#: tiramisu/option/option.py:621
#: tiramisu/option/option.py:622
msgid "file name"
msgstr "nom de fichier"
#: tiramisu/option/option.py:627
msgid "date"
msgstr "date"
#: tiramisu/option/optiondescription.py:73
msgid "duplicate option name: {0}"
msgstr "nom de l'option dupliqué : {0}"
@ -766,15 +780,15 @@ msgid "cannot change the value for option {0} this option is frozen"
msgstr ""
"ne peut modifier la valeur de l'option {0} cette option n'est pas modifiable"
#: tiramisu/setting.py:541
#: tiramisu/setting.py:539
msgid "permissive must be a tuple"
msgstr "permissive doit être un tuple"
#: tiramisu/setting.py:548 tiramisu/value.py:539
#: tiramisu/setting.py:546 tiramisu/value.py:546
msgid "invalid generic owner {0}"
msgstr "invalide owner générique {0}"
#: tiramisu/setting.py:649
#: tiramisu/setting.py:647
msgid ""
"malformed requirements imbrication detected for option: '{0}' with "
"requirement on: '{1}'"
@ -786,11 +800,11 @@ msgstr ""
msgid "option '{0}' has requirement's property error: {1} {2}"
msgstr "l'option '{0}' a une erreur de propriété pour le requirement : {1} {2}"
#: tiramisu/setting.py:695
#: tiramisu/setting.py:694
msgid "the value of \"{0}\" is \"{1}\""
msgstr "la valeur de \"{0}\" est \"{1}\""
#: tiramisu/setting.py:697
#: tiramisu/setting.py:696
msgid "the value of \"{0}\" is not \"{1}\""
msgstr "la valeur de \"{0}\" n'est pas \"{1}\""
@ -811,7 +825,7 @@ msgid "invalid default_multi value {0} for option {1}: {2}"
msgstr "la valeur default_multi est invalide {0} pour l'option {1} : {2}"
#: tiramisu/storage/dictionary/option.py:150
#: tiramisu/storage/dictionary/value.py:234
#: tiramisu/storage/dictionary/value.py:217
#: tiramisu/storage/sqlalchemy/option.py:666
msgid "information's item not found: {0}"
msgstr "item '{0}' dans les informations non trouvée"
@ -860,63 +874,66 @@ msgid "session already used"
msgstr "session déjà utilisée"
#: tiramisu/storage/dictionary/storage.py:50
#: tiramisu/storage/dictionary/value.py:252
#: tiramisu/storage/dictionary/value.py:235
msgid "a dictionary cannot be persistent"
msgstr "un espace de stockage dictionary ne peut être persistant"
#: tiramisu/storage/dictionary/value.py:243
#: tiramisu/storage/dictionary/value.py:226
msgid "information's item not found {0}"
msgstr "l'information de l'objet ne sont pas trouvé {0}"
#: tiramisu/value.py:388
#: tiramisu/value.py:395
msgid "you should only set value with config"
msgstr "vous devez seul affecter une valeur avec un config"
#: tiramisu/value.py:500
#: tiramisu/value.py:507
msgid "owner only avalaible for an option"
msgstr "owner seulement possible pour une option"
#: tiramisu/value.py:544
#: tiramisu/value.py:551
msgid "no value for {0} cannot change owner to {1}"
msgstr "pas de valeur pour {0} ne peut changer d'utilisateur pour {1}"
#: tiramisu/value.py:678
#: tiramisu/value.py:685
msgid "can force cache only if cache is actived in config"
msgstr ""
"peut force la mise en cache seulement si le cache est activé dans la config"
#: tiramisu/value.py:715
#: tiramisu/value.py:722
msgid "{0} is already a Multi "
msgstr "{0} est déjà une Multi"
#: tiramisu/value.py:795
#: tiramisu/value.py:802
msgid "cannot append a value on a multi option {0} which is a slave"
msgstr "ne peut ajouter une valeur sur l'option multi {0} qui est une esclave"
#: tiramisu/value.py:828
#: tiramisu/value.py:835
msgid "cannot sort multi option {0} if master or slave"
msgstr "ne peut trier une option multi {0} pour une maître ou une esclave"
#: tiramisu/value.py:832
#: tiramisu/value.py:839
msgid "cmp is not permitted in python v3 or greater"
msgstr "cmp n'est pas permis en python v3 ou supérieure"
#: tiramisu/value.py:841
#: tiramisu/value.py:848
msgid "cannot reverse multi option {0} if master or slave"
msgstr "ne peut inverser une option multi {0} pour une maître ou une esclave"
#: tiramisu/value.py:848
#: tiramisu/value.py:855
msgid "cannot insert multi option {0} if master or slave"
msgstr "ne peut insérer une option multi {0} pour une maître ou une esclave"
#: tiramisu/value.py:865
#: tiramisu/value.py:872
msgid "cannot extend multi option {0} if master or slave"
msgstr "ne peut étendre une option multi {0} pour une maître ou une esclave"
#: tiramisu/value.py:905
#: tiramisu/value.py:912
msgid "cannot pop a value on a multi option {0} which is a slave"
msgstr "ne peut supprimer une valeur dans l'option multi {0} qui est esclave"
#~ msgid "not allowed default value for option {0} in group {1}"
#~ msgstr "valeur de défaut non autorisée pour l'option {0} du groupe {1}"
#~ msgid "{0}_params must have an option not a {0} for first argument"
#~ msgstr "{0}_params doit avoir une option pas un {0} pour premier argument"

View file

@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2017-01-19 21:24+CET\n"
"POT-Creation-Date: 2017-02-11 18:04+CET\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"
@ -15,14 +15,18 @@ msgstr ""
"Generated-By: pygettext.py 1.5\n"
#: tiramisu/autolib.py:172
#: tiramisu/autolib.py:178
msgid "unable to carry out a calculation, option {0} has properties: {1} for: {2}"
msgstr ""
#: tiramisu/autolib.py:237
#: tiramisu/autolib.py:242
msgid "callback cannot return a list for a slave option ({0})"
msgstr ""
#: tiramisu/autolib.py:263
msgid "function \"{0}\" returns \"{1}\" for option \"{2}\""
msgstr ""
#: tiramisu/config.py:64
msgid "descr must be an optiondescription, not {0}"
msgstr ""
@ -32,7 +36,7 @@ msgid "unknown group_type: {0}"
msgstr ""
#: tiramisu/config.py:187 tiramisu/setting.py:335 tiramisu/value.py:54
#: tiramisu/value.py:749
#: tiramisu/value.py:756
msgid "the context does not exist anymore"
msgstr ""
@ -92,23 +96,23 @@ msgstr ""
msgid "config name must be uniq in groupconfig for {0}"
msgstr ""
#: tiramisu/config.py:876
#: tiramisu/config.py:878
msgid "metaconfig's children should be config, not {0}"
msgstr ""
#: tiramisu/config.py:880
#: tiramisu/config.py:882
msgid "child has already a metaconfig's"
msgstr ""
#: tiramisu/config.py:884
#: tiramisu/config.py:886
msgid "all config in metaconfig must have the same optiondescription"
msgstr ""
#: tiramisu/config.py:899
#: tiramisu/config.py:901
msgid "force_default, force_default_if_same or force_dont_change_value cannot be set with only_config"
msgstr ""
#: tiramisu/config.py:905
#: tiramisu/config.py:907
msgid "force_default and force_dont_change_value cannot be set together"
msgstr ""
@ -120,19 +124,23 @@ msgstr ""
msgid "or"
msgstr ""
#: tiramisu/error.py:34
#: tiramisu/error.py:48
msgid " {} "
msgstr ""
#: tiramisu/error.py:58
#: tiramisu/error.py:81 tiramisu/setting.py:514
msgid "property"
msgstr ""
#: tiramisu/error.py:60
#: tiramisu/error.py:83 tiramisu/setting.py:516
msgid "properties"
msgstr ""
#: tiramisu/error.py:62 tiramisu/setting.py:520
#: tiramisu/error.py:86
msgid "cannot access to {0} \"{1}\" because \"{2}\" has {3} {4}"
msgstr ""
#: tiramisu/error.py:92 tiramisu/setting.py:517
msgid "cannot access to {0} \"{1}\" because has {2} {3}"
msgstr ""
@ -216,370 +224,374 @@ msgstr ""
msgid "invalid unicode or string"
msgstr ""
#: tiramisu/option/baseoption.py:510 tiramisu/option/baseoption.py:609
#: tiramisu/option/baseoption.py:515 tiramisu/option/baseoption.py:613
msgid "attention, \"{0}\" could be an invalid {1} for \"{2}\", {3}"
msgstr ""
#: tiramisu/option/baseoption.py:548 tiramisu/option/baseoption.py:661
#: tiramisu/option/baseoption.py:551 tiramisu/option/baseoption.py:665
msgid "invalid value \"{}\", this value is already in \"{}\""
msgstr ""
#: tiramisu/option/baseoption.py:590 tiramisu/option/baseoption.py:628
#: tiramisu/option/baseoption.py:594 tiramisu/option/baseoption.py:632
msgid "\"{0}\" is an invalid {1} for \"{2}\", {3}"
msgstr ""
#: tiramisu/option/baseoption.py:594 tiramisu/option/baseoption.py:632
#: tiramisu/option/baseoption.py:598 tiramisu/option/baseoption.py:636
msgid "\"{0}\" is an invalid {1} for \"{2}\""
msgstr ""
#: tiramisu/option/baseoption.py:606
#: tiramisu/option/baseoption.py:610
msgid "do_validation for {0}: error in value"
msgstr ""
#: tiramisu/option/baseoption.py:648 tiramisu/option/baseoption.py:666
#: tiramisu/option/baseoption.py:652 tiramisu/option/baseoption.py:670
msgid "invalid value \"{0}\" for \"{1}\" which must be a list"
msgstr ""
#: tiramisu/option/baseoption.py:653
#: tiramisu/option/baseoption.py:657
msgid "invalid value \"{}\" for \"{}\" which must not be a list"
msgstr ""
#: tiramisu/option/baseoption.py:675
#: tiramisu/option/baseoption.py:679
msgid "invalid value \"{0}\" for \"{1}\" which must be a list of list"
msgstr ""
#: tiramisu/option/baseoption.py:728 tiramisu/option/baseoption.py:732
#: tiramisu/option/baseoption.py:732 tiramisu/option/baseoption.py:736
msgid "cannot add consistency with submulti option"
msgstr ""
#: tiramisu/option/baseoption.py:734
#: tiramisu/option/baseoption.py:738
msgid "consistency must be set with an option"
msgstr ""
#: tiramisu/option/baseoption.py:737 tiramisu/option/baseoption.py:744
#: tiramisu/option/baseoption.py:741 tiramisu/option/baseoption.py:748
msgid "almost one option in consistency is in a dynoptiondescription but not all"
msgstr ""
#: tiramisu/option/baseoption.py:740
#: tiramisu/option/baseoption.py:744
msgid "option in consistency must be in same dynoptiondescription"
msgstr ""
#: tiramisu/option/baseoption.py:747
#: tiramisu/option/baseoption.py:751
msgid "cannot add consistency with itself"
msgstr ""
#: tiramisu/option/baseoption.py:749
#: tiramisu/option/baseoption.py:753
msgid "every options in consistency must be multi or none"
msgstr ""
#: tiramisu/option/baseoption.py:766
#: tiramisu/option/baseoption.py:770
msgid "'{0}' ({1}) cannot add consistency, option is read-only"
msgstr ""
#: tiramisu/option/baseoption.py:773
#: tiramisu/option/baseoption.py:777
msgid "consistency {0} not available for this option"
msgstr ""
#: tiramisu/option/baseoption.py:777
#: tiramisu/option/baseoption.py:781
msgid "unknow parameter {0} in consistency"
msgstr ""
#: tiramisu/option/baseoption.py:841
#: tiramisu/option/baseoption.py:845
msgid "_cons_not_equal: {} are not different"
msgstr ""
#: tiramisu/option/baseoption.py:844
#: tiramisu/option/baseoption.py:848
msgid "should be different from the value of {}"
msgstr ""
#: tiramisu/option/baseoption.py:846
#: tiramisu/option/baseoption.py:850
msgid "must be different from the value of {}"
msgstr ""
#: tiramisu/option/baseoption.py:849
#: tiramisu/option/baseoption.py:853
msgid "value for {} should be different"
msgstr ""
#: tiramisu/option/baseoption.py:851
#: tiramisu/option/baseoption.py:855
msgid "value for {} must be different"
msgstr ""
#: tiramisu/option/baseoption.py:910
#: tiramisu/option/baseoption.py:914
msgid "default value not allowed if option: {0} is calculated"
msgstr ""
#: tiramisu/option/baseoption.py:930
#: tiramisu/option/baseoption.py:934
msgid "malformed requirements type for option: {0}, must be a dict"
msgstr ""
#: tiramisu/option/baseoption.py:936
#: tiramisu/option/baseoption.py:940
msgid "malformed requirements for option: {0} unknown keys {1}, must only {2}"
msgstr ""
#: tiramisu/option/baseoption.py:944
#: tiramisu/option/baseoption.py:948
msgid "malformed requirements for option: {0} require must have option, expected and action keys"
msgstr ""
#: tiramisu/option/baseoption.py:951
#: tiramisu/option/baseoption.py:955
msgid "malformed requirements for option: {0} action cannot be force_store_value"
msgstr ""
#: tiramisu/option/baseoption.py:956
#: tiramisu/option/baseoption.py:960
msgid "malformed requirements for option: {0} inverse must be boolean"
msgstr ""
#: tiramisu/option/baseoption.py:960
#: tiramisu/option/baseoption.py:964
msgid "malformed requirements for option: {0} transitive must be boolean"
msgstr ""
#: tiramisu/option/baseoption.py:964
#: tiramisu/option/baseoption.py:968
msgid "malformed requirements for option: {0} same_action must be boolean"
msgstr ""
#: tiramisu/option/baseoption.py:968
#: tiramisu/option/baseoption.py:972
msgid "malformed requirements must be an option in option {0}"
msgstr ""
#: tiramisu/option/baseoption.py:971
#: tiramisu/option/baseoption.py:975
msgid "malformed requirements multi option must not set as requires of non multi option {0}"
msgstr ""
#: tiramisu/option/baseoption.py:977
#: tiramisu/option/baseoption.py:981
msgid "malformed requirements expected value must be valid for option {0}: {1}"
msgstr ""
#: tiramisu/option/baseoption.py:1007
#: tiramisu/option/baseoption.py:1011
msgid "malformed symlinkoption must be an option for symlink {0}"
msgstr ""
#: tiramisu/option/masterslave.py:44
#: tiramisu/option/masterslave.py:45
msgid "master group with wrong master name for {0}"
msgstr ""
#: tiramisu/option/masterslave.py:49
msgid "not allowed default value for option {0} in group {1}"
#: tiramisu/option/masterslave.py:50
msgid "not allowed default value for option {0} in master/slave object {1}"
msgstr ""
#: tiramisu/option/masterslave.py:60
#: tiramisu/option/masterslave.py:61
msgid "callback of master's option shall not refered a slave's ones"
msgstr ""
#: tiramisu/option/masterslave.py:271
#: tiramisu/option/masterslave.py:274
msgid "invalid len for the slave: {0} which has {1} as master"
msgstr ""
#: tiramisu/option/option.py:40
#: tiramisu/option/option.py:41
msgid "choice"
msgstr ""
#: tiramisu/option/option.py:54
#: tiramisu/option/option.py:55
msgid "values is not a function, so values_params must be None"
msgstr ""
#: tiramisu/option/option.py:56
#: tiramisu/option/option.py:57
msgid "values must be a tuple or a function for {0}"
msgstr ""
#: tiramisu/option/option.py:93
#: tiramisu/option/option.py:89
msgid "calculated values for {0} is not a list"
msgstr ""
#: tiramisu/option/option.py:104
#: tiramisu/option/option.py:100
msgid "only {0} is allowed"
msgstr ""
#: tiramisu/option/option.py:107
#: tiramisu/option/option.py:103
msgid "only {0} are allowed"
msgstr ""
#: tiramisu/option/option.py:114
#: tiramisu/option/option.py:110
msgid "boolean"
msgstr ""
#: tiramisu/option/option.py:124
#: tiramisu/option/option.py:120
msgid "integer"
msgstr ""
#: tiramisu/option/option.py:134
#: tiramisu/option/option.py:130
msgid "float"
msgstr ""
#: tiramisu/option/option.py:144
#: tiramisu/option/option.py:140
msgid "string"
msgstr ""
#: tiramisu/option/option.py:161
#: tiramisu/option/option.py:157
msgid "unicode string"
msgstr ""
#: tiramisu/option/option.py:171
#: tiramisu/option/option.py:167
msgid "password"
msgstr ""
#: tiramisu/option/option.py:182
#: tiramisu/option/option.py:178
msgid "IP"
msgstr ""
#: tiramisu/option/option.py:224
#: tiramisu/option/option.py:220
msgid "shouldn't in reserved class"
msgstr ""
#: tiramisu/option/option.py:226 tiramisu/option/option.py:361
#: tiramisu/option/option.py:222 tiramisu/option/option.py:357
msgid "mustn't be in reserved class"
msgstr ""
#: tiramisu/option/option.py:230
#: tiramisu/option/option.py:226
msgid "should be in private class"
msgstr ""
#: tiramisu/option/option.py:232
#: tiramisu/option/option.py:228
msgid "must be in private class"
msgstr ""
#: tiramisu/option/option.py:237 tiramisu/option/option.py:434
#: tiramisu/option/option.py:233 tiramisu/option/option.py:435
msgid "invalid len for vals"
msgstr ""
#: tiramisu/option/option.py:243
#: tiramisu/option/option.py:239
msgid "should be in network {0}/{1} ({2}/{3})"
msgstr ""
#: tiramisu/option/option.py:245
#: tiramisu/option/option.py:241
msgid "must be in network {0}/{1} ({2}/{3})"
msgstr ""
#: tiramisu/option/option.py:264
#: tiramisu/option/option.py:260
msgid "port"
msgstr ""
#: tiramisu/option/option.py:288
#: tiramisu/option/option.py:284
msgid "inconsistency in allowed range"
msgstr ""
#: tiramisu/option/option.py:293
#: tiramisu/option/option.py:289
msgid "max value is empty"
msgstr ""
#: tiramisu/option/option.py:319
#: tiramisu/option/option.py:315
msgid "range must have two values only"
msgstr ""
#: tiramisu/option/option.py:321
#: tiramisu/option/option.py:317
msgid "first port in range must be smaller than the second one"
msgstr ""
#: tiramisu/option/option.py:331
#: tiramisu/option/option.py:327
msgid "must be an integer between {0} and {1}"
msgstr ""
#: tiramisu/option/option.py:339
#: tiramisu/option/option.py:335
msgid "network address"
msgstr ""
#: tiramisu/option/option.py:359
#: tiramisu/option/option.py:355
msgid "shouldn't be in reserved class"
msgstr ""
#: tiramisu/option/option.py:368
#: tiramisu/option/option.py:364
msgid "netmask address"
msgstr ""
#: tiramisu/option/option.py:399
#: tiramisu/option/option.py:395
msgid "invalid len for opts"
msgstr ""
#: tiramisu/option/option.py:408
#: tiramisu/option/option.py:404
msgid "this is a network with netmask {0} ({1})"
msgstr ""
#: tiramisu/option/option.py:410
#: tiramisu/option/option.py:406
msgid "this is a broadcast with netmask {0} ({1})"
msgstr ""
#: tiramisu/option/option.py:414
#: tiramisu/option/option.py:410
msgid "with netmask {0} ({1})"
msgstr ""
#: tiramisu/option/option.py:421
#: tiramisu/option/option.py:417
msgid "broadcast address"
msgstr ""
#: tiramisu/option/option.py:439
#: tiramisu/option/option.py:440
msgid "with network {0}/{1} ({2}/{3})"
msgstr ""
#: tiramisu/option/option.py:451
#: tiramisu/option/option.py:452
msgid "domain name"
msgstr ""
#: tiramisu/option/option.py:459
#: tiramisu/option/option.py:460
msgid "unknown type_ {0} for hostname"
msgstr ""
#: tiramisu/option/option.py:462
#: tiramisu/option/option.py:463
msgid "allow_ip must be a boolean"
msgstr ""
#: tiramisu/option/option.py:464
#: tiramisu/option/option.py:465
msgid "allow_without_dot must be a boolean"
msgstr ""
#: tiramisu/option/option.py:489
#: tiramisu/option/option.py:490
msgid "invalid length (min 1)"
msgstr ""
#: tiramisu/option/option.py:491
#: tiramisu/option/option.py:492
msgid "invalid length (max {0})"
msgstr ""
#: tiramisu/option/option.py:506
#: tiramisu/option/option.py:507
msgid "must not be an IP"
msgstr ""
#: tiramisu/option/option.py:513
#: tiramisu/option/option.py:514
msgid "must have dot"
msgstr ""
#: tiramisu/option/option.py:515
#: tiramisu/option/option.py:516
msgid "invalid length (max 255)"
msgstr ""
#: tiramisu/option/option.py:526
#: tiramisu/option/option.py:527
msgid "some characters are uppercase"
msgstr ""
#: tiramisu/option/option.py:529
#: tiramisu/option/option.py:530
msgid "some characters may cause problems"
msgstr ""
#: tiramisu/option/option.py:550
#: tiramisu/option/option.py:551
msgid "URL"
msgstr ""
#: tiramisu/option/option.py:558
#: tiramisu/option/option.py:559
msgid "must start with http:// or https://"
msgstr ""
#: tiramisu/option/option.py:576
#: tiramisu/option/option.py:577
msgid "port must be an between 0 and 65536"
msgstr ""
#: tiramisu/option/option.py:587
#: tiramisu/option/option.py:588
msgid "must ends with a valid resource name"
msgstr ""
#: tiramisu/option/option.py:608
#: tiramisu/option/option.py:609
msgid "email address"
msgstr ""
#: tiramisu/option/option.py:615
#: tiramisu/option/option.py:616
msgid "username"
msgstr ""
#: tiramisu/option/option.py:621
#: tiramisu/option/option.py:622
msgid "file name"
msgstr ""
#: tiramisu/option/option.py:627
msgid "date"
msgstr ""
#: tiramisu/option/optiondescription.py:73
msgid "duplicate option name: {0}"
msgstr ""
@ -701,15 +713,15 @@ msgstr ""
msgid "cannot change the value for option {0} this option is frozen"
msgstr ""
#: tiramisu/setting.py:541
#: tiramisu/setting.py:539
msgid "permissive must be a tuple"
msgstr ""
#: tiramisu/setting.py:548 tiramisu/value.py:539
#: tiramisu/setting.py:546 tiramisu/value.py:546
msgid "invalid generic owner {0}"
msgstr ""
#: tiramisu/setting.py:649
#: tiramisu/setting.py:647
msgid "malformed requirements imbrication detected for option: '{0}' with requirement on: '{1}'"
msgstr ""
@ -717,11 +729,11 @@ msgstr ""
msgid "option '{0}' has requirement's property error: {1} {2}"
msgstr ""
#: tiramisu/setting.py:695
#: tiramisu/setting.py:694
msgid "the value of \"{0}\" is \"{1}\""
msgstr ""
#: tiramisu/setting.py:697
#: tiramisu/setting.py:696
msgid "the value of \"{0}\" is not \"{1}\""
msgstr ""
@ -742,7 +754,7 @@ msgid "invalid default_multi value {0} for option {1}: {2}"
msgstr ""
#: tiramisu/storage/dictionary/option.py:150
#: tiramisu/storage/dictionary/value.py:234
#: tiramisu/storage/dictionary/value.py:217
#: tiramisu/storage/sqlalchemy/option.py:666
msgid "information's item not found: {0}"
msgstr ""
@ -789,59 +801,59 @@ msgid "session already used"
msgstr ""
#: tiramisu/storage/dictionary/storage.py:50
#: tiramisu/storage/dictionary/value.py:252
#: tiramisu/storage/dictionary/value.py:235
msgid "a dictionary cannot be persistent"
msgstr ""
#: tiramisu/storage/dictionary/value.py:243
#: tiramisu/storage/dictionary/value.py:226
msgid "information's item not found {0}"
msgstr ""
#: tiramisu/value.py:388
#: tiramisu/value.py:395
msgid "you should only set value with config"
msgstr ""
#: tiramisu/value.py:500
#: tiramisu/value.py:507
msgid "owner only avalaible for an option"
msgstr ""
#: tiramisu/value.py:544
#: tiramisu/value.py:551
msgid "no value for {0} cannot change owner to {1}"
msgstr ""
#: tiramisu/value.py:678
#: tiramisu/value.py:685
msgid "can force cache only if cache is actived in config"
msgstr ""
#: tiramisu/value.py:715
#: tiramisu/value.py:722
msgid "{0} is already a Multi "
msgstr ""
#: tiramisu/value.py:795
#: tiramisu/value.py:802
msgid "cannot append a value on a multi option {0} which is a slave"
msgstr ""
#: tiramisu/value.py:828
#: tiramisu/value.py:835
msgid "cannot sort multi option {0} if master or slave"
msgstr ""
#: tiramisu/value.py:832
#: tiramisu/value.py:839
msgid "cmp is not permitted in python v3 or greater"
msgstr ""
#: tiramisu/value.py:841
#: tiramisu/value.py:848
msgid "cannot reverse multi option {0} if master or slave"
msgstr ""
#: tiramisu/value.py:848
#: tiramisu/value.py:855
msgid "cannot insert multi option {0} if master or slave"
msgstr ""
#: tiramisu/value.py:865
#: tiramisu/value.py:872
msgid "cannot extend multi option {0} if master or slave"
msgstr ""
#: tiramisu/value.py:905
#: tiramisu/value.py:912
msgid "cannot pop a value on a multi option {0} which is a slave"
msgstr ""