Merge branch 'master' into orm
Conflicts: tiramisu/setting.py
This commit is contained in:
commit
880b6366eb
6 changed files with 337 additions and 261 deletions
|
@ -9,7 +9,7 @@ from py.test import raises
|
|||
from tiramisu.config import Config
|
||||
from tiramisu.option import IntOption, FloatOption, StrOption, ChoiceOption, \
|
||||
BoolOption, UnicodeOption, OptionDescription
|
||||
from tiramisu.error import ConflictError
|
||||
from tiramisu.error import ConflictError, ConfigError
|
||||
|
||||
|
||||
def make_description():
|
||||
|
@ -277,4 +277,24 @@ def test_no_validation():
|
|||
setting.append('validator')
|
||||
raises(ValueError, 'c.test1')
|
||||
del(c.test1)
|
||||
assert c.test1 == None
|
||||
assert c.test1 is None
|
||||
|
||||
|
||||
def test_delete_config_with_subconfig():
|
||||
test = IntOption('test', '')
|
||||
multi = IntOption('multi', '', multi=True)
|
||||
od = OptionDescription('od', '', [test, multi])
|
||||
odroot = OptionDescription('odroot', '', [od])
|
||||
c = Config(odroot)
|
||||
sub = c.od
|
||||
val = c.cfgimpl_get_values()
|
||||
setting = c.cfgimpl_get_settings()
|
||||
val[test]
|
||||
val[multi]
|
||||
setting[test]
|
||||
sub.make_dict()
|
||||
del(c)
|
||||
raises(ConfigError, 'val[test]')
|
||||
raises(ConfigError, 'val[multi]')
|
||||
raises(ConfigError, 'setting[test]')
|
||||
raises(ConfigError, 'sub.make_dict()')
|
||||
|
|
|
@ -159,7 +159,15 @@ class SubConfig(object):
|
|||
__repr__ = __str__
|
||||
|
||||
def _cfgimpl_get_context(self):
|
||||
return self._impl_context()
|
||||
"""context could be None, we need to test it
|
||||
context is None only if all reference to `Config` object is deleted
|
||||
(for example we delete a `Config` and we manipulate a reference to
|
||||
old `SubConfig`, `Values`, `Multi` or `Settings`)
|
||||
"""
|
||||
context = self._impl_context()
|
||||
if context is None:
|
||||
raise ConfigError(_('the context does not exist anymore'))
|
||||
return context
|
||||
|
||||
def cfgimpl_get_description(self):
|
||||
if self._impl_descr is None:
|
||||
|
|
|
@ -24,7 +24,7 @@ from time import time
|
|||
from copy import copy
|
||||
import weakref
|
||||
from tiramisu.error import (RequirementError, PropertiesOptionError,
|
||||
ConstError)
|
||||
ConstError, ConfigError)
|
||||
from tiramisu.i18n import _
|
||||
|
||||
|
||||
|
@ -328,6 +328,17 @@ class Settings(object):
|
|||
self.context = weakref.ref(context)
|
||||
self._p_ = storage
|
||||
|
||||
def _getcontext(self):
|
||||
"""context could be None, we need to test it
|
||||
context is None only if all reference to `Config` object is deleted
|
||||
(for example we delete a `Config` and we manipulate a reference to
|
||||
old `SubConfig`, `Values`, `Multi` or `Settings`)
|
||||
"""
|
||||
context = self.context()
|
||||
if context is None:
|
||||
raise ConfigError(_('the context does not exist anymore'))
|
||||
return context
|
||||
|
||||
#____________________________________________________________
|
||||
# properties methods
|
||||
def __contains__(self, propname):
|
||||
|
@ -357,7 +368,7 @@ class Settings(object):
|
|||
if opt is not None and _path is None:
|
||||
_path = self._get_path_by_opt(opt)
|
||||
self._p_.reset_properties(_path)
|
||||
self.context().cfgimpl_reset_cache()
|
||||
self._getcontext().cfgimpl_reset_cache()
|
||||
|
||||
def _getproperties(self, opt=None, path=None, is_apply_req=True):
|
||||
if opt is None:
|
||||
|
@ -407,14 +418,12 @@ class Settings(object):
|
|||
else:
|
||||
#if opt._calc_properties is not None:
|
||||
# properties -= opt._calc_properties
|
||||
#FIXME a revoir ---------
|
||||
#if set(opt._properties) == properties:
|
||||
# self._p_.reset_properties(path)
|
||||
#else:
|
||||
# self._p_.setproperties(path, properties)
|
||||
self._p_.setproperties(path, properties)
|
||||
#FIXME fin revoir -----
|
||||
self.context().cfgimpl_reset_cache()
|
||||
self._getcontext().cfgimpl_reset_cache()
|
||||
|
||||
#____________________________________________________________
|
||||
def validate_properties(self, opt_or_descr, is_descr, is_write, path,
|
||||
|
@ -462,7 +471,7 @@ class Settings(object):
|
|||
properties -= frozenset(('mandatory', 'frozen'))
|
||||
else:
|
||||
if 'mandatory' in properties and \
|
||||
not self.context().cfgimpl_get_values()._isempty(
|
||||
not self._getcontext().cfgimpl_get_values()._isempty(
|
||||
opt_or_descr, value):
|
||||
properties.remove('mandatory')
|
||||
if is_write and 'everything_frozen' in self_properties:
|
||||
|
@ -585,6 +594,8 @@ class Settings(object):
|
|||
|
||||
# filters the callbacks
|
||||
calc_properties = set()
|
||||
<<<<<<< HEAD
|
||||
context = self._getcontext()
|
||||
for require in opt.impl_getrequires():
|
||||
expected = tuple(require.get_expected())
|
||||
inverse = require.inverse
|
||||
|
@ -596,7 +607,7 @@ class Settings(object):
|
|||
" '{0}' with requirement on: "
|
||||
"'{1}'").format(path, reqpath))
|
||||
try:
|
||||
value = self.context()._getattr(reqpath,
|
||||
value = context._getattr(reqpath,
|
||||
force_permissive=True)
|
||||
except PropertiesOptionError as err:
|
||||
if not require.transitive:
|
||||
|
@ -625,7 +636,7 @@ class Settings(object):
|
|||
:param opt: `Option`'s object
|
||||
:returns: path
|
||||
"""
|
||||
return self.context().cfgimpl_get_description().impl_get_path_by_opt(opt)
|
||||
return self._getcontext().cfgimpl_get_description().impl_get_path_by_opt(opt)
|
||||
|
||||
def get_modified_properties(self):
|
||||
return self._p_.get_modified_properties()
|
||||
|
|
|
@ -46,13 +46,24 @@ class Values(object):
|
|||
# the storage type is dictionary or sqlite3
|
||||
self._p_ = storage
|
||||
|
||||
def _getcontext(self):
|
||||
"""context could be None, we need to test it
|
||||
context is None only if all reference to `Config` object is deleted
|
||||
(for example we delete a `Config` and we manipulate a reference to
|
||||
old `SubConfig`, `Values`, `Multi` or `Settings`)
|
||||
"""
|
||||
context = self.context()
|
||||
if context is None:
|
||||
raise ConfigError(_('the context does not exist anymore'))
|
||||
return context
|
||||
|
||||
def _getdefault(self, opt):
|
||||
"""
|
||||
actually retrieves the default value
|
||||
|
||||
:param opt: the `option.Option()` object
|
||||
"""
|
||||
meta = self.context().cfgimpl_get_meta()
|
||||
meta = self._getcontext().cfgimpl_get_meta()
|
||||
if meta is not None:
|
||||
value = meta.cfgimpl_get_values()[opt]
|
||||
else:
|
||||
|
@ -105,11 +116,11 @@ class Values(object):
|
|||
if path is None:
|
||||
path = self._get_opt_path(opt)
|
||||
if self._p_.hasvalue(path):
|
||||
setting = self.context().cfgimpl_get_settings()
|
||||
context = self._getcontext()
|
||||
setting = context.cfgimpl_get_settings()
|
||||
opt.impl_validate(opt.impl_getdefault(),
|
||||
self.context(),
|
||||
'validator' in setting)
|
||||
self.context().cfgimpl_reset_cache()
|
||||
context, 'validator' in setting)
|
||||
context.cfgimpl_reset_cache()
|
||||
if (opt.impl_is_multi() and
|
||||
opt.impl_get_multitype() == multitypes.master):
|
||||
for slave in opt.impl_get_master_slaves():
|
||||
|
@ -137,7 +148,7 @@ class Values(object):
|
|||
callback, callback_params = opt.impl_get_callback()
|
||||
if callback_params is None:
|
||||
callback_params = {}
|
||||
return carry_out_calculation(opt, config=self.context(),
|
||||
return carry_out_calculation(opt, config=self._getcontext(),
|
||||
callback=callback,
|
||||
callback_params=callback_params,
|
||||
index=index, max_len=max_len)
|
||||
|
@ -151,7 +162,7 @@ class Values(object):
|
|||
if path is None:
|
||||
path = self._get_opt_path(opt)
|
||||
ntime = None
|
||||
setting = self.context().cfgimpl_get_settings()
|
||||
setting = self._getcontext().cfgimpl_get_settings()
|
||||
if 'cache' in setting and self._p_.hascache(path):
|
||||
if 'expire' in setting:
|
||||
ntime = int(time())
|
||||
|
@ -176,7 +187,8 @@ class Values(object):
|
|||
def _getitem(self, opt, path, validate, force_permissive, force_properties,
|
||||
validate_properties):
|
||||
# options with callbacks
|
||||
setting = self.context().cfgimpl_get_settings()
|
||||
context = self._getcontext()
|
||||
setting = context.cfgimpl_get_settings()
|
||||
is_frozen = 'frozen' in setting[opt]
|
||||
# For calculating properties, we need value (ie for mandatory value).
|
||||
# If value is calculating with a PropertiesOptionError's option
|
||||
|
@ -196,7 +208,7 @@ class Values(object):
|
|||
if (opt.impl_is_multi() and
|
||||
opt.impl_get_multitype() == multitypes.slave):
|
||||
masterp = self._get_opt_path(opt.impl_get_master_slaves())
|
||||
mastervalue = getattr(self.context(), masterp)
|
||||
mastervalue = getattr(context, masterp)
|
||||
lenmaster = len(mastervalue)
|
||||
if lenmaster == 0:
|
||||
value = []
|
||||
|
@ -230,7 +242,7 @@ class Values(object):
|
|||
else:
|
||||
value = self._getvalue(opt, path, validate)
|
||||
if config_error is None and validate:
|
||||
opt.impl_validate(value, self.context(), 'validator' in setting)
|
||||
opt.impl_validate(value, context, 'validator' in setting)
|
||||
if config_error is None and self._is_default_owner(path) and \
|
||||
'force_store_value' in setting[opt]:
|
||||
self.setitem(opt, value, path, is_write=False)
|
||||
|
@ -251,8 +263,9 @@ class Values(object):
|
|||
# is_write is, for example, used with "force_store_value"
|
||||
# user didn't change value, so not write
|
||||
# valid opt
|
||||
opt.impl_validate(value, self.context(),
|
||||
'validator' in self.context().cfgimpl_get_settings())
|
||||
context = self._getcontext()
|
||||
opt.impl_validate(value, context,
|
||||
'validator' in context.cfgimpl_get_settings())
|
||||
if opt.impl_is_multi() and not isinstance(value, Multi):
|
||||
value = Multi(value, self.context, opt, path, setitem=True)
|
||||
self._setvalue(opt, path, value, force_permissive=force_permissive,
|
||||
|
@ -261,14 +274,15 @@ class Values(object):
|
|||
def _setvalue(self, opt, path, value, force_permissive=False,
|
||||
force_properties=None,
|
||||
is_write=True, validate_properties=True):
|
||||
self.context().cfgimpl_reset_cache()
|
||||
context = self._getcontext()
|
||||
context.cfgimpl_reset_cache()
|
||||
if validate_properties:
|
||||
setting = self.context().cfgimpl_get_settings()
|
||||
setting = context.cfgimpl_get_settings()
|
||||
setting.validate_properties(opt, False, is_write,
|
||||
value=value, path=path,
|
||||
force_permissive=force_permissive,
|
||||
force_properties=force_properties)
|
||||
owner = self.context().cfgimpl_get_settings().getowner()
|
||||
owner = context.cfgimpl_get_settings().getowner()
|
||||
self._p_.setvalue(path, value, owner)
|
||||
|
||||
def getowner(self, opt):
|
||||
|
@ -285,7 +299,7 @@ class Values(object):
|
|||
|
||||
def _getowner(self, path):
|
||||
owner = self._p_.getowner(path, owners.default)
|
||||
meta = self.context().cfgimpl_get_meta()
|
||||
meta = self._getcontext().cfgimpl_get_meta()
|
||||
if owner is owners.default and meta is not None:
|
||||
owner = meta.cfgimpl_get_values()._getowner(path)
|
||||
return owner
|
||||
|
@ -337,7 +351,7 @@ class Values(object):
|
|||
:param opt: the `option.Option` object
|
||||
:returns: a string with points like "gc.dummy.my_option"
|
||||
"""
|
||||
return self.context().cfgimpl_get_description().impl_get_path_by_opt(opt)
|
||||
return self._getcontext().cfgimpl_get_description().impl_get_path_by_opt(opt)
|
||||
|
||||
# information
|
||||
def set_information(self, key, value):
|
||||
|
@ -402,12 +416,24 @@ class Multi(list):
|
|||
self._valid_master(value)
|
||||
super(Multi, self).__init__(value)
|
||||
|
||||
def _getcontext(self):
|
||||
"""context could be None, we need to test it
|
||||
context is None only if all reference to `Config` object is deleted
|
||||
(for example we delete a `Config` and we manipulate a reference to
|
||||
old `SubConfig`, `Values`, `Multi` or `Settings`)
|
||||
"""
|
||||
context = self.context()
|
||||
if context is None:
|
||||
raise ConfigError(_('the context does not exist anymore'))
|
||||
return context
|
||||
|
||||
def _valid_slave(self, value, setitem):
|
||||
#if slave, had values until master's one
|
||||
values = self.context().cfgimpl_get_values()
|
||||
masterp = self.context().cfgimpl_get_description().impl_get_path_by_opt(
|
||||
context = self._getcontext()
|
||||
values = context.cfgimpl_get_values()
|
||||
masterp = context.cfgimpl_get_description().impl_get_path_by_opt(
|
||||
self.opt.impl_get_master_slaves())
|
||||
mastervalue = getattr(self.context(), masterp)
|
||||
mastervalue = getattr(context, masterp)
|
||||
masterlen = len(mastervalue)
|
||||
valuelen = len(value)
|
||||
is_default_owner = not values._is_default_owner(self.path) or setitem
|
||||
|
@ -431,7 +457,7 @@ class Multi(list):
|
|||
|
||||
def _valid_master(self, value):
|
||||
masterlen = len(value)
|
||||
values = self.context().cfgimpl_get_values()
|
||||
values = self._getcontext().cfgimpl_get_values()
|
||||
for slave in self.opt._master_slaves:
|
||||
path = values._get_opt_path(slave)
|
||||
if not values._is_default_owner(path):
|
||||
|
@ -458,18 +484,19 @@ class Multi(list):
|
|||
self._validate(value, index)
|
||||
#assume not checking mandatory property
|
||||
super(Multi, self).__setitem__(index, value)
|
||||
self.context().cfgimpl_get_values()._setvalue(self.opt, self.path, self)
|
||||
self._getcontext().cfgimpl_get_values()._setvalue(self.opt, self.path, self)
|
||||
|
||||
def append(self, value=undefined, force=False):
|
||||
"""the list value can be updated (appened)
|
||||
only if the option is a master
|
||||
"""
|
||||
context = self._getcontext()
|
||||
if not force:
|
||||
if self.opt.impl_get_multitype() == multitypes.slave:
|
||||
raise SlaveError(_("cannot append a value on a multi option {0}"
|
||||
" which is a slave").format(self.opt.impl_getname()))
|
||||
elif self.opt.impl_get_multitype() == multitypes.master:
|
||||
values = self.context().cfgimpl_get_values()
|
||||
values = context.cfgimpl_get_values()
|
||||
if value is undefined and self.opt.impl_has_callback():
|
||||
value = values._getcallback_value(self.opt)
|
||||
#Force None il return a list
|
||||
|
@ -480,9 +507,9 @@ class Multi(list):
|
|||
value = self.opt.impl_getdefault_multi()
|
||||
self._validate(value, index)
|
||||
super(Multi, self).append(value)
|
||||
self.context().cfgimpl_get_values()._setvalue(self.opt, self.path,
|
||||
self,
|
||||
validate_properties=not force)
|
||||
context.cfgimpl_get_values()._setvalue(self.opt, self.path,
|
||||
self,
|
||||
validate_properties=not force)
|
||||
if not force and self.opt.impl_get_multitype() == multitypes.master:
|
||||
for slave in self.opt.impl_get_master_slaves():
|
||||
path = values._get_opt_path(slave)
|
||||
|
@ -513,7 +540,7 @@ class Multi(list):
|
|||
super(Multi, self).sort(key=key, reverse=reverse)
|
||||
else:
|
||||
super(Multi, self).sort(cmp=cmp, key=key, reverse=reverse)
|
||||
self.context().cfgimpl_get_values()._setvalue(self.opt, self.path, self)
|
||||
self._getcontext().cfgimpl_get_values()._setvalue(self.opt, self.path, self)
|
||||
|
||||
def reverse(self):
|
||||
if self.opt.impl_get_multitype() in [multitypes.slave,
|
||||
|
@ -521,7 +548,7 @@ class Multi(list):
|
|||
raise SlaveError(_("cannot reverse multi option {0} if master or "
|
||||
"slave").format(self.opt.impl_getname()))
|
||||
super(Multi, self).reverse()
|
||||
self.context().cfgimpl_get_values()._setvalue(self.opt, self.path, self)
|
||||
self._getcontext().cfgimpl_get_values()._setvalue(self.opt, self.path, self)
|
||||
|
||||
def insert(self, index, obj):
|
||||
if self.opt.impl_get_multitype() in [multitypes.slave,
|
||||
|
@ -529,7 +556,7 @@ class Multi(list):
|
|||
raise SlaveError(_("cannot insert multi option {0} if master or "
|
||||
"slave").format(self.opt.impl_getname()))
|
||||
super(Multi, self).insert(index, obj)
|
||||
self.context().cfgimpl_get_values()._setvalue(self.opt, self.path, self)
|
||||
self._getcontext().cfgimpl_get_values()._setvalue(self.opt, self.path, self)
|
||||
|
||||
def extend(self, iterable):
|
||||
if self.opt.impl_get_multitype() in [multitypes.slave,
|
||||
|
@ -537,12 +564,12 @@ class Multi(list):
|
|||
raise SlaveError(_("cannot extend multi option {0} if master or "
|
||||
"slave").format(self.opt.impl_getname()))
|
||||
super(Multi, self).extend(iterable)
|
||||
self.context().cfgimpl_get_values()._setvalue(self.opt, self.path, self)
|
||||
self._getcontext().cfgimpl_get_values()._setvalue(self.opt, self.path, self)
|
||||
|
||||
def _validate(self, value, force_index):
|
||||
if value is not None:
|
||||
try:
|
||||
self.opt.impl_validate(value, context=self.context(),
|
||||
self.opt.impl_validate(value, context=self._getcontext(),
|
||||
force_index=force_index)
|
||||
except ValueError as err:
|
||||
raise ValueError(_("invalid value {0} "
|
||||
|
@ -560,13 +587,14 @@ class Multi(list):
|
|||
:type force: boolean
|
||||
:returns: item at index
|
||||
"""
|
||||
context = self._getcontext()
|
||||
if not force:
|
||||
if self.opt.impl_get_multitype() == multitypes.slave:
|
||||
raise SlaveError(_("cannot pop a value on a multi option {0}"
|
||||
" which is a slave").format(self.opt.impl_getname()))
|
||||
elif self.opt.impl_get_multitype() == multitypes.master:
|
||||
for slave in self.opt.impl_get_master_slaves():
|
||||
values = self.context().cfgimpl_get_values()
|
||||
values = context.cfgimpl_get_values()
|
||||
if not values.is_default_owner(slave):
|
||||
#get multi without valid properties
|
||||
values.getitem(slave,
|
||||
|
@ -574,5 +602,5 @@ class Multi(list):
|
|||
).pop(index, force=True)
|
||||
#set value without valid properties
|
||||
ret = super(Multi, self).pop(index)
|
||||
self.context().cfgimpl_get_values()._setvalue(self.opt, self.path, self, validate_properties=not force)
|
||||
context.cfgimpl_get_values()._setvalue(self.opt, self.path, self, validate_properties=not force)
|
||||
return ret
|
||||
|
|
|
@ -1,31 +1,26 @@
|
|||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Project-Id-Version: Tiramisu\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-09-30 22:49+CEST\n"
|
||||
"POT-Creation-Date: 2014-01-25 11:30+CET\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: Emmanuel Garette <egarette@cadoles.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language-Team: Tiramisu's team <egarette@cadoles.com>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.5.4\n"
|
||||
"Language: fr\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
|
||||
#: tiramisu/autolib.py:145
|
||||
#: tiramisu/autolib.py:159
|
||||
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:154
|
||||
msgid ""
|
||||
"unable to carry out a calculation, option value with multi types must have "
|
||||
"same length for: {0}"
|
||||
msgstr ""
|
||||
"impossible d'effectuer le calcul, la valeur d'une option avec le type multi "
|
||||
"doit avoir la même longueur pour : {0}"
|
||||
|
||||
#: tiramisu/config.py:52
|
||||
msgid "descr must be an optiondescription, not {0}"
|
||||
msgstr "descr doit être une optiondescription pas un {0}"
|
||||
|
@ -34,72 +29,77 @@ msgstr "descr doit être une optiondescription pas un {0}"
|
|||
msgid "unknown group_type: {0}"
|
||||
msgstr "group_type inconnu: {0}"
|
||||
|
||||
#: tiramisu/config.py:163
|
||||
#: tiramisu/config.py:166 tiramisu/setting.py:339 tiramisu/value.py:57
|
||||
#: tiramisu/value.py:427
|
||||
msgid "the context does not exist anymore"
|
||||
msgstr "le context n'existe plus"
|
||||
|
||||
#: tiramisu/config.py:171
|
||||
msgid ""
|
||||
"no option description found for this config (may be metaconfig without meta)"
|
||||
msgstr ""
|
||||
"pas d'option description trouvé pour cette config (peut être une metaconfig "
|
||||
"sans meta)"
|
||||
|
||||
#: tiramisu/config.py:189
|
||||
#: tiramisu/config.py:197
|
||||
msgid "can't assign to an OptionDescription"
|
||||
msgstr "ne peut pas attribuer une valeur à une OptionDescription"
|
||||
|
||||
#: tiramisu/config.py:320
|
||||
#: tiramisu/config.py:330
|
||||
msgid "unknown type_ type {0}for _find"
|
||||
msgstr "type_ type {0} pour _find inconnu"
|
||||
|
||||
#: tiramisu/config.py:359
|
||||
#: tiramisu/config.py:369
|
||||
msgid "no option found in config with these criteria"
|
||||
msgstr "aucune option trouvée dans la config avec ces critères"
|
||||
|
||||
#: tiramisu/config.py:409
|
||||
#: tiramisu/config.py:419
|
||||
msgid "make_dict can't filtering with value without option"
|
||||
msgstr "make_dict ne peut filtrer sur une valeur mais sans option"
|
||||
|
||||
#: tiramisu/config.py:430
|
||||
#: tiramisu/config.py:440
|
||||
msgid "unexpected path {0}, should start with {1}"
|
||||
msgstr "chemin imprévu {0}, devrait commencer par {1}"
|
||||
|
||||
#: tiramisu/config.py:490
|
||||
#: tiramisu/config.py:500
|
||||
msgid "opt in getowner must be an option not {0}"
|
||||
msgstr "opt dans getowner doit être une option pas {0}"
|
||||
|
||||
#: tiramisu/option.py:69
|
||||
#: tiramisu/option.py:67
|
||||
msgid "invalid name: {0} for option"
|
||||
msgstr "nom invalide : {0} pour l'option"
|
||||
|
||||
#: tiramisu/option.py:78
|
||||
#: tiramisu/option.py:76
|
||||
msgid "invalid properties type {0} for {1}, must be a tuple"
|
||||
msgstr "type des properties invalide {0} pour {1}, doit être un tuple"
|
||||
|
||||
#: tiramisu/option.py:116
|
||||
#: tiramisu/option.py:114
|
||||
msgid "'{0}' ({1}) object attribute '{2}' is read-only"
|
||||
msgstr "l'attribut {2} de l'objet '{0}' ({1}) est en lecture seule"
|
||||
|
||||
#: tiramisu/option.py:143 tiramisu/value.py:362
|
||||
#: tiramisu/option.py:141 tiramisu/value.py:376
|
||||
msgid "information's item not found: {0}"
|
||||
msgstr "aucune config spécifié alors que c'est nécessaire"
|
||||
|
||||
#: tiramisu/option.py:205
|
||||
#: tiramisu/option.py:203
|
||||
msgid "cannot serialize Option, only in OptionDescription"
|
||||
msgstr "ne peut serialiser une Option, seulement via une OptionDescription"
|
||||
|
||||
#: tiramisu/option.py:308
|
||||
#: tiramisu/option.py:306
|
||||
msgid "a default_multi is set whereas multi is False in option: {0}"
|
||||
msgstr ""
|
||||
"une default_multi est renseignée alors que multi est False dans l'option : "
|
||||
"{0}"
|
||||
|
||||
#: tiramisu/option.py:314
|
||||
#: tiramisu/option.py:312
|
||||
msgid "invalid default_multi value {0} for option {1}: {2}"
|
||||
msgstr "la valeur default_multi est invalide {0} pour l'option {1} : {2}"
|
||||
|
||||
#: tiramisu/option.py:319
|
||||
#: tiramisu/option.py:317
|
||||
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.py:322
|
||||
#: tiramisu/option.py:320
|
||||
msgid ""
|
||||
"params defined for a callback function but no callback defined yet for "
|
||||
"option {0}"
|
||||
|
@ -107,72 +107,72 @@ msgstr ""
|
|||
"params définis pour une fonction callback mais par de callback encore "
|
||||
"définis pour l'option {0}"
|
||||
|
||||
#: tiramisu/option.py:361
|
||||
#: tiramisu/option.py:359
|
||||
msgid "option not in all_cons_opts"
|
||||
msgstr "option non présentante dans all_cons_opts"
|
||||
|
||||
#: tiramisu/option.py:427 tiramisu/option.py:437
|
||||
#: tiramisu/option.py:425 tiramisu/option.py:435
|
||||
msgid "invalid value for option {0}: {1}"
|
||||
msgstr "valeur invalide pour l'option {0} : {1}"
|
||||
|
||||
#: tiramisu/option.py:454
|
||||
msgid ""invalid value {0} for option {1} which must be a list"
|
||||
#: tiramisu/option.py:452
|
||||
msgid "invalid value {0} for option {1} which must be a list"
|
||||
msgstr "valeur invalide pour l'option {0} : {1} laquelle doit être une liste"
|
||||
|
||||
#: tiramisu/option.py:514
|
||||
#: tiramisu/option.py:508
|
||||
msgid "consistency should be set with an option"
|
||||
msgstr "consistency doit être configuré avec une option"
|
||||
|
||||
#: tiramisu/option.py:516
|
||||
#: tiramisu/option.py:510
|
||||
msgid "cannot add consistency with itself"
|
||||
msgstr "ne peut ajouter une consistency avec lui même"
|
||||
|
||||
#: tiramisu/option.py:518
|
||||
#: tiramisu/option.py:512
|
||||
msgid "every options in consistency should be multi or none"
|
||||
msgstr ""
|
||||
"toutes les options d'une consistency devrait être multi ou ne pas l'être"
|
||||
|
||||
#: tiramisu/option.py:538
|
||||
#: tiramisu/option.py:532
|
||||
msgid "same value for {0} and {1}"
|
||||
msgstr "même valeur pour {0} et {1}"
|
||||
|
||||
#: tiramisu/option.py:647
|
||||
#: tiramisu/option.py:641
|
||||
msgid "values must be a tuple for {0}"
|
||||
msgstr "values doit être un tuple pour {0}"
|
||||
|
||||
#: tiramisu/option.py:650
|
||||
#: tiramisu/option.py:644
|
||||
msgid "open_values must be a boolean for {0}"
|
||||
msgstr "open_values doit être un booléen pour {0}"
|
||||
|
||||
#: tiramisu/option.py:672
|
||||
#: tiramisu/option.py:666
|
||||
msgid "value {0} is not permitted, only {1} is allowed"
|
||||
msgstr "valeur {0} n'est pas permis, seules {1} sont autorisées"
|
||||
|
||||
#: tiramisu/option.py:684
|
||||
#: tiramisu/option.py:678
|
||||
msgid "invalid boolean"
|
||||
msgstr "booléen invalide"
|
||||
|
||||
#: tiramisu/option.py:694
|
||||
#: tiramisu/option.py:688
|
||||
msgid "invalid integer"
|
||||
msgstr "nombre invalide"
|
||||
|
||||
#: tiramisu/option.py:704
|
||||
#: tiramisu/option.py:698
|
||||
msgid "invalid float"
|
||||
msgstr "invalide nombre flottan"
|
||||
|
||||
#: tiramisu/option.py:714
|
||||
#: tiramisu/option.py:708
|
||||
msgid "invalid string"
|
||||
msgstr "invalide caractère"
|
||||
|
||||
#: tiramisu/option.py:731
|
||||
#: tiramisu/option.py:725
|
||||
msgid "invalid unicode"
|
||||
msgstr "invalide unicode"
|
||||
|
||||
#: tiramisu/option.py:743
|
||||
#: tiramisu/option.py:737
|
||||
msgid "malformed symlinkoption must be an option for symlink {0}"
|
||||
msgstr "symlinkoption mal formé, doit être une option pour symlink {0}"
|
||||
|
||||
#: tiramisu/option.py:792
|
||||
#: tiramisu/option.py:787 tiramisu/option.py:792
|
||||
msgid "invalid IP"
|
||||
msgstr "adresse IP invalide"
|
||||
|
||||
|
@ -209,12 +209,12 @@ msgid "invalid len for opts"
|
|||
msgstr "longueur invalide pour opts"
|
||||
|
||||
#: tiramisu/option.py:927
|
||||
msgid "invalid network {0} ({1}) with netmask {2} ({3}), this network is an IP"
|
||||
msgstr "réseau invalide {0} ({1}) avec masque {2} ({3}), ce réseau est une IP"
|
||||
msgid "invalid network {0} ({1}) with netmask {2}, this network is an IP"
|
||||
msgstr "réseau invalide {0} ({1}) avec masque {2}, ce réseau est une IP"
|
||||
|
||||
#: tiramisu/option.py:932
|
||||
msgid "invalid IP {0} ({1}) with netmask {2} ({3}), this IP is a network"
|
||||
msgstr "IP invalide {0} ({1}) avec masque {2} ({3}), cette IP est un réseau"
|
||||
msgid "invalid IP {0} ({1}) with netmask {2}, this IP is a network"
|
||||
msgstr "IP invalide {0} ({1}) avec masque {2}, cette IP est un réseau"
|
||||
|
||||
#: tiramisu/option.py:937
|
||||
msgid "invalid IP {0} ({1}) with netmask {2}"
|
||||
|
@ -250,107 +250,108 @@ msgstr "allow_ip doit être un booléen"
|
|||
msgid "allow_without_dot must be a boolean"
|
||||
msgstr "allow_without_dot doit être un booléen"
|
||||
|
||||
#: tiramisu/option.py:1024
|
||||
#: tiramisu/option.py:1028
|
||||
msgid "invalid domainname, must have dot"
|
||||
msgstr "nom de domaine invalide, doit avoir un point"
|
||||
|
||||
#: tiramisu/option.py:1026
|
||||
#: tiramisu/option.py:1030
|
||||
msgid "invalid domainname's length (max 255)"
|
||||
msgstr "longueur du nom de domaine invalide (maximum {1})"
|
||||
|
||||
#: tiramisu/option.py:1028
|
||||
#: tiramisu/option.py:1032
|
||||
msgid "invalid domainname's length (min 2)"
|
||||
msgstr "longueur du nom de domaine invalide (minimum 2)"
|
||||
|
||||
#: tiramisu/option.py:1030
|
||||
#: tiramisu/option.py:1034
|
||||
msgid "invalid domainname"
|
||||
msgstr "nom de domaine invalide"
|
||||
|
||||
#: tiramisu/option.py:1049
|
||||
#: tiramisu/option.py:1047
|
||||
msgid "invalid email address, should contains one @"
|
||||
msgstr "adresse email invalide, devrait contenir un @"
|
||||
|
||||
#: tiramisu/option.py:1052
|
||||
#: tiramisu/option.py:1050
|
||||
msgid "invalid username in email address"
|
||||
msgstr "nom d'utilisateur invalide dans une adresse email"
|
||||
|
||||
#: tiramisu/option.py:1071
|
||||
#: tiramisu/option.py:1063
|
||||
msgid "invalid url, should start with http:// or https://"
|
||||
msgstr "URL invalide, devrait démarré avec http:// ou https://"
|
||||
|
||||
#: tiramisu/option.py:1090
|
||||
#: tiramisu/option.py:1082
|
||||
msgid "invalid url, port must be an between 0 and 65536"
|
||||
msgstr "URL invalide, port doit être entre 0 et 65536"
|
||||
|
||||
#: tiramisu/option.py:1096
|
||||
#, fuzzy
|
||||
#: tiramisu/option.py:1088
|
||||
msgid "invalid url, should ends with filename"
|
||||
msgstr "URL invalide, devrait finir avec un nom de fichier"
|
||||
|
||||
#: tiramisu/option.py:1107
|
||||
#: tiramisu/option.py:1099
|
||||
msgid "invalid filename"
|
||||
msgstr "nom de fichier invalide"
|
||||
|
||||
#: tiramisu/option.py:1134
|
||||
#: tiramisu/option.py:1126
|
||||
msgid "duplicate option name: {0}"
|
||||
msgstr "nom de l'option dupliqué : {0}"
|
||||
|
||||
#: tiramisu/option.py:1152
|
||||
#: tiramisu/option.py:1144
|
||||
msgid "unknown Option {0} in OptionDescription {1}"
|
||||
msgstr "Option {0} inconnue pour l'OptionDescription {1}"
|
||||
|
||||
#: tiramisu/option.py:1203
|
||||
#: tiramisu/option.py:1195
|
||||
msgid "duplicate option: {0}"
|
||||
msgstr "option dupliquée : {0}"
|
||||
|
||||
#: tiramisu/option.py:1233
|
||||
#: tiramisu/option.py:1225
|
||||
msgid "consistency with option {0} which is not in Config"
|
||||
msgstr "consistency avec l'option {0} qui n'est pas dans une Config"
|
||||
|
||||
#: tiramisu/option.py:1241
|
||||
#: tiramisu/option.py:1233
|
||||
msgid "no option for path {0}"
|
||||
msgstr "pas d'option pour le chemin {0}"
|
||||
|
||||
#: tiramisu/option.py:1247
|
||||
#: tiramisu/option.py:1239
|
||||
msgid "no option {0} found"
|
||||
msgstr "pas d'option {0} trouvée"
|
||||
|
||||
#: tiramisu/option.py:1257
|
||||
#: tiramisu/option.py:1249
|
||||
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})"
|
||||
|
||||
#: tiramisu/option.py:1270
|
||||
#: tiramisu/option.py:1261
|
||||
msgid "master group {0} shall not have a subgroup"
|
||||
msgstr "groupe maître {0} ne doit pas avoir de sous-groupe"
|
||||
|
||||
#: tiramisu/option.py:1273
|
||||
#: tiramisu/option.py:1264
|
||||
msgid "master group {0} shall not have a symlinkoption"
|
||||
msgstr "groupe maître {0} ne doit pas avoir de symlinkoption"
|
||||
|
||||
#: tiramisu/option.py:1276
|
||||
#: tiramisu/option.py:1267
|
||||
msgid "not allowed option {0} in group {1}: this option is not a multi"
|
||||
msgstr ""
|
||||
"option non autorisée {0} dans le groupe {1} : cette option n'est pas une "
|
||||
"multi"
|
||||
|
||||
#: tiramisu/option.py:1287
|
||||
#: tiramisu/option.py:1277
|
||||
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.py:1296
|
||||
msgid "no child has same nom has master group for: {0}"
|
||||
msgstr "pas d'enfant avec le nom du groupe maître pour {0} "
|
||||
#: tiramisu/option.py:1285
|
||||
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.py:1299
|
||||
#: tiramisu/option.py:1293
|
||||
msgid "group_type: {0} not allowed"
|
||||
msgstr "group_type : {0} non autorisé"
|
||||
|
||||
#: tiramisu/option.py:1391
|
||||
#: tiramisu/option.py:1385
|
||||
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.py:1408
|
||||
#: tiramisu/option.py:1402
|
||||
msgid ""
|
||||
"malformed requirements for option: {0} require must have option, expected "
|
||||
"and action keys"
|
||||
|
@ -358,66 +359,66 @@ msgstr ""
|
|||
"requirements malformé pour l'option : {0} l'exigence doit avoir les clefs "
|
||||
"option, expected et action"
|
||||
|
||||
#: tiramisu/option.py:1413
|
||||
#: tiramisu/option.py:1407
|
||||
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.py:1417
|
||||
#: tiramisu/option.py:1411
|
||||
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.py:1421
|
||||
#: tiramisu/option.py:1415
|
||||
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.py:1425
|
||||
#: tiramisu/option.py:1419
|
||||
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.py:1428
|
||||
#: tiramisu/option.py:1422
|
||||
msgid "malformed requirements option {0} should not be a multi"
|
||||
msgstr "requirements mal formés l'option {0} ne doit pas être une multi"
|
||||
|
||||
#: tiramisu/option.py:1434
|
||||
#: tiramisu/option.py:1428
|
||||
msgid ""
|
||||
"malformed requirements second argument must be valid for option {0}: {1}"
|
||||
msgstr ""
|
||||
"requirements mal formés deuxième argument doit être valide pour l'option "
|
||||
"{0} : {1}"
|
||||
|
||||
#: tiramisu/option.py:1439
|
||||
#: tiramisu/option.py:1433
|
||||
msgid "inconsistency in action types for option: {0} action: {1}"
|
||||
msgstr "incohérence dans les types action pour l'option : {0} action {1}"
|
||||
|
||||
#: tiramisu/option.py:1464
|
||||
#: tiramisu/option.py:1458
|
||||
msgid "{0} should be a function"
|
||||
msgstr "{0} doit être une fonction"
|
||||
|
||||
#: tiramisu/option.py:1467
|
||||
#: tiramisu/option.py:1461
|
||||
msgid "{0}_params should be a dict"
|
||||
msgstr "{0}_params devrait être un dict"
|
||||
|
||||
#: tiramisu/option.py:1470
|
||||
#: tiramisu/option.py:1464
|
||||
msgid "{0}_params with key {1} should not have length different to 1"
|
||||
msgstr ""
|
||||
"{0}_params avec la clef {1} devrait ne pas avoir une longueur différent de 1"
|
||||
|
||||
#: tiramisu/option.py:1474
|
||||
#: tiramisu/option.py:1468
|
||||
msgid "{0}_params should be tuple for key \"{1}\""
|
||||
msgstr "{0}_params devrait être un tuple pour la clef \"{1}\""
|
||||
|
||||
#: tiramisu/option.py:1480
|
||||
#: tiramisu/option.py:1474
|
||||
msgid "validator not support tuple"
|
||||
msgstr "validator n'accepte pas de tuple"
|
||||
|
||||
#: tiramisu/option.py:1483
|
||||
#: tiramisu/option.py:1477
|
||||
msgid "{0}_params should have an option not a {0} for first argument"
|
||||
msgstr "{0}_params devrait avoir une option pas un {0} pour premier argument"
|
||||
|
||||
#: tiramisu/option.py:1487
|
||||
#: tiramisu/option.py:1481
|
||||
msgid "{0}_params should have a boolean not a {0} for second argument"
|
||||
msgstr "{0}_params devrait avoir un boolean pas un {0} pour second argument"
|
||||
|
||||
|
@ -429,39 +430,39 @@ msgstr "ne peut redéfinir ({0})"
|
|||
msgid "can't unbind {0}"
|
||||
msgstr "ne peut supprimer ({0})"
|
||||
|
||||
#: tiramisu/setting.py:259
|
||||
#: tiramisu/setting.py:272
|
||||
msgid "cannot append {0} property for option {1}: this property is calculated"
|
||||
msgstr ""
|
||||
"ne peut ajouter la propriété {0} dans l'option {1}: cette propriété est "
|
||||
"calculée"
|
||||
|
||||
#: tiramisu/setting.py:322
|
||||
#: tiramisu/setting.py:363
|
||||
msgid "opt and all_properties must not be set together in reset"
|
||||
msgstr "opt et all_properties ne doit pas être renseigné ensemble dans reset"
|
||||
|
||||
#: tiramisu/setting.py:337
|
||||
#: tiramisu/setting.py:378
|
||||
msgid "if opt is not None, path should not be None in _getproperties"
|
||||
msgstr ""
|
||||
"si opt n'est pas None, path devrait ne pas être à None dans _getproperties"
|
||||
|
||||
#: tiramisu/setting.py:440
|
||||
#: tiramisu/setting.py:483
|
||||
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:446
|
||||
#: tiramisu/setting.py:489
|
||||
msgid "trying to access to an option named: {0} with properties {1}"
|
||||
msgstr "tentative d'accès à une option nommée : {0} avec les propriétés {1}"
|
||||
|
||||
#: tiramisu/setting.py:464
|
||||
#: tiramisu/setting.py:507
|
||||
msgid "permissive must be a tuple"
|
||||
msgstr "permissive doit être un tuple"
|
||||
|
||||
#: tiramisu/setting.py:471 tiramisu/value.py:301
|
||||
#: tiramisu/setting.py:514 tiramisu/value.py:315
|
||||
msgid "invalid generic owner {0}"
|
||||
msgstr "invalide owner générique {0}"
|
||||
|
||||
#: tiramisu/setting.py:558
|
||||
#: tiramisu/setting.py:602
|
||||
msgid ""
|
||||
"malformed requirements imbrication detected for option: '{0}' with "
|
||||
"requirement on: '{1}'"
|
||||
|
@ -469,7 +470,7 @@ msgstr ""
|
|||
"imbrication de requirements mal formés detectée pour l'option : '{0}' avec "
|
||||
"requirement sur : '{1}'"
|
||||
|
||||
#: tiramisu/setting.py:570
|
||||
#: tiramisu/setting.py:613
|
||||
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}"
|
||||
|
||||
|
@ -494,52 +495,62 @@ msgstr "session déjà utilisée"
|
|||
msgid "a dictionary cannot be persistent"
|
||||
msgstr "un espace de stockage dictionary ne peut être persistant"
|
||||
|
||||
#: tiramisu/value.py:308
|
||||
#: tiramisu/value.py:322
|
||||
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:416
|
||||
#: tiramisu/value.py:442
|
||||
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/value.py:440
|
||||
#: tiramisu/value.py:466
|
||||
msgid "invalid len for the master: {0} which has {1} as slave with greater len"
|
||||
msgstr ""
|
||||
"longueur invalide pour un maître : {0} qui a {1} une esclave avec une plus "
|
||||
"grande longueur"
|
||||
|
||||
#: tiramisu/value.py:470
|
||||
#: tiramisu/value.py:496
|
||||
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:507
|
||||
#: tiramisu/value.py:535
|
||||
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:511
|
||||
#: tiramisu/value.py:539
|
||||
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:520
|
||||
#: tiramisu/value.py:548
|
||||
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:528
|
||||
#: tiramisu/value.py:556
|
||||
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:536
|
||||
#: tiramisu/value.py:564
|
||||
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:547
|
||||
#: tiramisu/value.py:575
|
||||
msgid "invalid value {0} for option {1}: {2}"
|
||||
msgstr "valeur invalide {0} pour l'option {1} : {2}"
|
||||
|
||||
#: tiramisu/value.py:564
|
||||
#: tiramisu/value.py:593
|
||||
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 ""
|
||||
#~ "unable to carry out a calculation, option value with multi types must "
|
||||
#~ "have same length for: {0}"
|
||||
#~ msgstr ""
|
||||
#~ "impossible d'effectuer le calcul, la valeur d'une option avec le type "
|
||||
#~ "multi doit avoir la même longueur pour : {0}"
|
||||
|
||||
#~ msgid "no child has same nom has master group for: {0}"
|
||||
#~ msgstr "pas d'enfant avec le nom du groupe maître pour {0} "
|
||||
|
||||
#~ msgid "value must be a boolean"
|
||||
#~ msgstr "valeur doit être un booléen"
|
||||
|
||||
|
@ -555,9 +566,6 @@ msgstr "ne peut supprimer une valeur dans l'option multi {0} qui est esclave"
|
|||
#~ msgid "value must be an unicode"
|
||||
#~ msgstr "valeur doit être une valeur unicode"
|
||||
|
||||
#~ msgid "invalid value {0} for option {1} which must be a list"
|
||||
#~ msgstr "valeur invalide {0} pour l'option {1} qui doit être une liste"
|
||||
|
||||
#~ msgid "invalid value {0} for option {1} must be different as {2} option"
|
||||
#~ msgstr ""
|
||||
#~ "valeur invalide {0} pour l'option {1} doit être différente de l'option {2}"
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: 2013-09-30 22:49+CEST\n"
|
||||
"POT-Creation-Date: 2014-01-25 11:30+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,10 @@ msgstr ""
|
|||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
|
||||
#: tiramisu/autolib.py:145
|
||||
#: tiramisu/autolib.py:159
|
||||
msgid "unable to carry out a calculation, option {0} has properties: {1} for: {2}"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/autolib.py:154
|
||||
msgid "unable to carry out a calculation, option value with multi types must have same length for: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/config.py:52
|
||||
msgid "descr must be an optiondescription, not {0}"
|
||||
msgstr ""
|
||||
|
@ -31,135 +27,140 @@ msgstr ""
|
|||
msgid "unknown group_type: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/config.py:163
|
||||
#: tiramisu/config.py:166 tiramisu/setting.py:339 tiramisu/value.py:57
|
||||
#: tiramisu/value.py:427
|
||||
msgid "the context does not exist anymore"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/config.py:171
|
||||
msgid "no option description found for this config (may be metaconfig without meta)"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/config.py:189
|
||||
#: tiramisu/config.py:197
|
||||
msgid "can't assign to an OptionDescription"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/config.py:320
|
||||
#: tiramisu/config.py:330
|
||||
msgid "unknown type_ type {0}for _find"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/config.py:359
|
||||
#: tiramisu/config.py:369
|
||||
msgid "no option found in config with these criteria"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/config.py:409
|
||||
#: tiramisu/config.py:419
|
||||
msgid "make_dict can't filtering with value without option"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/config.py:430
|
||||
#: tiramisu/config.py:440
|
||||
msgid "unexpected path {0}, should start with {1}"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/config.py:490
|
||||
#: tiramisu/config.py:500
|
||||
msgid "opt in getowner must be an option not {0}"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:69
|
||||
#: tiramisu/option.py:67
|
||||
msgid "invalid name: {0} for option"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:78
|
||||
#: tiramisu/option.py:76
|
||||
msgid "invalid properties type {0} for {1}, must be a tuple"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:116
|
||||
#: tiramisu/option.py:114
|
||||
msgid "'{0}' ({1}) object attribute '{2}' is read-only"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:143 tiramisu/value.py:362
|
||||
#: tiramisu/option.py:141 tiramisu/value.py:376
|
||||
msgid "information's item not found: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:205
|
||||
#: tiramisu/option.py:203
|
||||
msgid "cannot serialize Option, only in OptionDescription"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:308
|
||||
#: tiramisu/option.py:306
|
||||
msgid "a default_multi is set whereas multi is False in option: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:314
|
||||
#: tiramisu/option.py:312
|
||||
msgid "invalid default_multi value {0} for option {1}: {2}"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:319
|
||||
#: tiramisu/option.py:317
|
||||
msgid "default value not allowed if option: {0} is calculated"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:322
|
||||
#: tiramisu/option.py:320
|
||||
msgid "params defined for a callback function but no callback defined yet for option {0}"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:361
|
||||
#: tiramisu/option.py:359
|
||||
msgid "option not in all_cons_opts"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:427 tiramisu/option.py:437
|
||||
#: tiramisu/option.py:425 tiramisu/option.py:435
|
||||
msgid "invalid value for option {0}: {1}"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:454
|
||||
msgid "which must be a list"
|
||||
#: tiramisu/option.py:452
|
||||
msgid "invalid value {0} for option {1} which must be a list"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:514
|
||||
#: tiramisu/option.py:508
|
||||
msgid "consistency should be set with an option"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:516
|
||||
#: tiramisu/option.py:510
|
||||
msgid "cannot add consistency with itself"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:518
|
||||
#: tiramisu/option.py:512
|
||||
msgid "every options in consistency should be multi or none"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:538
|
||||
#: tiramisu/option.py:532
|
||||
msgid "same value for {0} and {1}"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:647
|
||||
#: tiramisu/option.py:641
|
||||
msgid "values must be a tuple for {0}"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:650
|
||||
#: tiramisu/option.py:644
|
||||
msgid "open_values must be a boolean for {0}"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:672
|
||||
#: tiramisu/option.py:666
|
||||
msgid "value {0} is not permitted, only {1} is allowed"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:684
|
||||
#: tiramisu/option.py:678
|
||||
msgid "invalid boolean"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:694
|
||||
#: tiramisu/option.py:688
|
||||
msgid "invalid integer"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:704
|
||||
#: tiramisu/option.py:698
|
||||
msgid "invalid float"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:714
|
||||
#: tiramisu/option.py:708
|
||||
msgid "invalid string"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:731
|
||||
#: tiramisu/option.py:725
|
||||
msgid "invalid unicode"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:743
|
||||
#: tiramisu/option.py:737
|
||||
msgid "malformed symlinkoption must be an option for symlink {0}"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:792
|
||||
#: tiramisu/option.py:787 tiramisu/option.py:792
|
||||
msgid "invalid IP"
|
||||
msgstr ""
|
||||
|
||||
|
@ -196,11 +197,11 @@ msgid "invalid len for opts"
|
|||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:927
|
||||
msgid "invalid network {0} ({1}) with netmask {2} ({3}), this network is an IP"
|
||||
msgid "invalid network {0} ({1}) with netmask {2}, this network is an IP"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:932
|
||||
msgid "invalid IP {0} ({1}) with netmask {2} ({3}), this IP is a network"
|
||||
msgid "invalid IP {0} ({1}) with netmask {2}, this IP is a network"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:937
|
||||
|
@ -235,159 +236,159 @@ msgstr ""
|
|||
msgid "allow_without_dot must be a boolean"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1024
|
||||
#: tiramisu/option.py:1028
|
||||
msgid "invalid domainname, must have dot"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1026
|
||||
#: tiramisu/option.py:1030
|
||||
msgid "invalid domainname's length (max 255)"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1028
|
||||
#: tiramisu/option.py:1032
|
||||
msgid "invalid domainname's length (min 2)"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1030
|
||||
#: tiramisu/option.py:1034
|
||||
msgid "invalid domainname"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1049
|
||||
#: tiramisu/option.py:1047
|
||||
msgid "invalid email address, should contains one @"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1052
|
||||
#: tiramisu/option.py:1050
|
||||
msgid "invalid username in email address"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1071
|
||||
#: tiramisu/option.py:1063
|
||||
msgid "invalid url, should start with http:// or https://"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1090
|
||||
#: tiramisu/option.py:1082
|
||||
msgid "invalid url, port must be an between 0 and 65536"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1096
|
||||
#: tiramisu/option.py:1088
|
||||
msgid "invalid url, should ends with filename"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1107
|
||||
#: tiramisu/option.py:1099
|
||||
msgid "invalid filename"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1134
|
||||
#: tiramisu/option.py:1126
|
||||
msgid "duplicate option name: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1152
|
||||
#: tiramisu/option.py:1144
|
||||
msgid "unknown Option {0} in OptionDescription {1}"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1203
|
||||
#: tiramisu/option.py:1195
|
||||
msgid "duplicate option: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1233
|
||||
#: tiramisu/option.py:1225
|
||||
msgid "consistency with option {0} which is not in Config"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1241
|
||||
#: tiramisu/option.py:1233
|
||||
msgid "no option for path {0}"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1247
|
||||
#: tiramisu/option.py:1239
|
||||
msgid "no option {0} found"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1257
|
||||
#: tiramisu/option.py:1249
|
||||
msgid "cannot change group_type if already set (old {0}, new {1})"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1270
|
||||
#: tiramisu/option.py:1261
|
||||
msgid "master group {0} shall not have a subgroup"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1273
|
||||
#: tiramisu/option.py:1264
|
||||
msgid "master group {0} shall not have a symlinkoption"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1276
|
||||
#: tiramisu/option.py:1267
|
||||
msgid "not allowed option {0} in group {1}: this option is not a multi"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1287
|
||||
#: tiramisu/option.py:1277
|
||||
msgid "master group with wrong master name for {0}"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1296
|
||||
msgid "no child has same nom has master group for: {0}"
|
||||
#: tiramisu/option.py:1285
|
||||
msgid "callback of master's option shall not refered a slave's ones"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1299
|
||||
#: tiramisu/option.py:1293
|
||||
msgid "group_type: {0} not allowed"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1391
|
||||
#: tiramisu/option.py:1385
|
||||
msgid "malformed requirements type for option: {0}, must be a dict"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1408
|
||||
#: tiramisu/option.py:1402
|
||||
msgid "malformed requirements for option: {0} require must have option, expected and action keys"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1413
|
||||
#: tiramisu/option.py:1407
|
||||
msgid "malformed requirements for option: {0} inverse must be boolean"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1417
|
||||
#: tiramisu/option.py:1411
|
||||
msgid "malformed requirements for option: {0} transitive must be boolean"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1421
|
||||
#: tiramisu/option.py:1415
|
||||
msgid "malformed requirements for option: {0} same_action must be boolean"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1425
|
||||
#: tiramisu/option.py:1419
|
||||
msgid "malformed requirements must be an option in option {0}"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1428
|
||||
#: tiramisu/option.py:1422
|
||||
msgid "malformed requirements option {0} should not be a multi"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1434
|
||||
#: tiramisu/option.py:1428
|
||||
msgid "malformed requirements second argument must be valid for option {0}: {1}"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1439
|
||||
#: tiramisu/option.py:1433
|
||||
msgid "inconsistency in action types for option: {0} action: {1}"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1464
|
||||
#: tiramisu/option.py:1458
|
||||
msgid "{0} should be a function"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1467
|
||||
#: tiramisu/option.py:1461
|
||||
msgid "{0}_params should be a dict"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1470
|
||||
#: tiramisu/option.py:1464
|
||||
msgid "{0}_params with key {1} should not have length different to 1"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1474
|
||||
#: tiramisu/option.py:1468
|
||||
msgid "{0}_params should be tuple for key \"{1}\""
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1480
|
||||
#: tiramisu/option.py:1474
|
||||
msgid "validator not support tuple"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1483
|
||||
#: tiramisu/option.py:1477
|
||||
msgid "{0}_params should have an option not a {0} for first argument"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/option.py:1487
|
||||
#: tiramisu/option.py:1481
|
||||
msgid "{0}_params should have a boolean not a {0} for second argument"
|
||||
msgstr ""
|
||||
|
||||
|
@ -399,39 +400,39 @@ msgstr ""
|
|||
msgid "can't unbind {0}"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/setting.py:259
|
||||
#: tiramisu/setting.py:272
|
||||
msgid "cannot append {0} property for option {1}: this property is calculated"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/setting.py:322
|
||||
#: tiramisu/setting.py:363
|
||||
msgid "opt and all_properties must not be set together in reset"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/setting.py:337
|
||||
#: tiramisu/setting.py:378
|
||||
msgid "if opt is not None, path should not be None in _getproperties"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/setting.py:440
|
||||
#: tiramisu/setting.py:483
|
||||
msgid "cannot change the value for option {0} this option is frozen"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/setting.py:446
|
||||
#: tiramisu/setting.py:489
|
||||
msgid "trying to access to an option named: {0} with properties {1}"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/setting.py:464
|
||||
#: tiramisu/setting.py:507
|
||||
msgid "permissive must be a tuple"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/setting.py:471 tiramisu/value.py:301
|
||||
#: tiramisu/setting.py:514 tiramisu/value.py:315
|
||||
msgid "invalid generic owner {0}"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/setting.py:558
|
||||
#: tiramisu/setting.py:602
|
||||
msgid "malformed requirements imbrication detected for option: '{0}' with requirement on: '{1}'"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/setting.py:570
|
||||
#: tiramisu/setting.py:613
|
||||
msgid "option '{0}' has requirement's property error: {1} {2}"
|
||||
msgstr ""
|
||||
|
||||
|
@ -455,47 +456,47 @@ msgstr ""
|
|||
msgid "a dictionary cannot be persistent"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/value.py:308
|
||||
#: tiramisu/value.py:322
|
||||
msgid "no value for {0} cannot change owner to {1}"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/value.py:416
|
||||
#: tiramisu/value.py:442
|
||||
msgid "invalid len for the slave: {0} which has {1} as master"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/value.py:440
|
||||
#: tiramisu/value.py:466
|
||||
msgid "invalid len for the master: {0} which has {1} as slave with greater len"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/value.py:470
|
||||
#: tiramisu/value.py:496
|
||||
msgid "cannot append a value on a multi option {0} which is a slave"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/value.py:507
|
||||
#: tiramisu/value.py:535
|
||||
msgid "cannot sort multi option {0} if master or slave"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/value.py:511
|
||||
#: tiramisu/value.py:539
|
||||
msgid "cmp is not permitted in python v3 or greater"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/value.py:520
|
||||
#: tiramisu/value.py:548
|
||||
msgid "cannot reverse multi option {0} if master or slave"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/value.py:528
|
||||
#: tiramisu/value.py:556
|
||||
msgid "cannot insert multi option {0} if master or slave"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/value.py:536
|
||||
#: tiramisu/value.py:564
|
||||
msgid "cannot extend multi option {0} if master or slave"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/value.py:547
|
||||
#: tiramisu/value.py:575
|
||||
msgid "invalid value {0} for option {1}: {2}"
|
||||
msgstr ""
|
||||
|
||||
#: tiramisu/value.py:564
|
||||
#: tiramisu/value.py:593
|
||||
msgid "cannot pop a value on a multi option {0} which is a slave"
|
||||
msgstr ""
|
||||
|
||||
|
|
Loading…
Reference in a new issue