some optimisation

This commit is contained in:
2015-12-18 22:44:46 +01:00
parent 4d4d789c8a
commit a97c3c682a
4 changed files with 60 additions and 70 deletions

View File

@ -61,43 +61,45 @@ class StorageBase(object):
def __init__(self, name, multi, warnings_only, doc, extra, calc_properties,
requires, properties, allow_empty_list, opt=undefined):
self._name = name
_setattr = object.__setattr__
_setattr(self, '_name', name)
if doc is not undefined:
self._informations = {'doc': doc}
_setattr(self, '_informations', {'doc': doc})
if multi != 1:
self._multi = multi
_setattr(self, '_multi', multi)
if extra is not None:
self._extra = extra
_setattr(self, '_extra', extra)
if warnings_only is True:
self._warnings_only = warnings_only
_setattr(self, '_warnings_only', warnings_only)
if calc_properties is not undefined:
self._calc_properties = calc_properties
_setattr(self, '_calc_properties', calc_properties)
if requires is not undefined:
self._requires = requires
_setattr(self, '_requires', requires)
if properties is not undefined:
self._properties = properties
_setattr(self, '_properties', properties)
if opt is not undefined:
self._opt = opt
_setattr(self, '_opt', opt)
if allow_empty_list is not undefined:
self._allow_empty_list = allow_empty_list
_setattr(self, '_allow_empty_list', allow_empty_list)
def _set_default_values(self, default, default_multi):
if ((self.impl_is_multi() and default != tuple()) or
(not self.impl_is_multi() and default is not None)):
if self.impl_is_multi():
def _set_default_values(self, default, default_multi, is_multi):
_setattr = object.__setattr__
if (is_multi and default != []) or \
(not is_multi and default is not None):
if is_multi:
default = tuple(default)
self._default = default
_setattr(self, '_default', default)
if self.impl_is_multi() and default_multi is not None:
if is_multi and default_multi is not None:
try:
self._validate(default_multi)
except ValueError as err: # pragma: optional cover
raise ValueError(_("invalid default_multi value {0} "
"for option {1}: {2}").format(
str(default_multi),
self.impl_getname(), err))
self._default_multi = default_multi
self.impl_getname(), str(err)))
_setattr(self, '_default_multi', default_multi)
# information
def impl_set_information(self, key, value):
@ -302,8 +304,8 @@ class StorageBase(object):
try:
_multi = self._multi
except AttributeError:
_multi = 1
return _multi == 0 or _multi == 2
return False
return _multi != 1
def impl_is_submulti(self):
try:
@ -333,13 +335,14 @@ class StorageBase(object):
def impl_getdefault(self):
"accessing the default value"
is_multi = self.impl_is_multi()
try:
ret = self._default
if self.impl_is_multi():
if is_multi:
return list(ret)
return ret
except AttributeError:
if self.impl_is_multi():
if is_multi:
return []
return None