remove all try/except

This commit is contained in:
2016-01-03 21:18:52 +01:00
parent e8764f6173
commit b521c459ee
9 changed files with 236 additions and 180 deletions

View File

@ -387,40 +387,43 @@ class Option(OnlyOption):
descr = context.cfgimpl_get_description()
all_cons_vals = []
try:
for opt in all_cons_opts:
#get value
if (isinstance(opt, DynSymLinkOption) and option._dyn == opt._dyn) or \
option == opt:
opt_value = value
else:
#if context, calculate value, otherwise get default value
if context is not undefined:
if isinstance(opt, DynSymLinkOption):
path = opt.impl_getpath(context)
else:
path = descr.impl_get_path_by_opt(opt)
opt_value = context.getattr(path, validate=False,
force_permissive=True)
else:
opt_value = opt.impl_getdefault()
#append value
if not self.impl_is_multi() or (isinstance(opt, DynSymLinkOption)
and option._dyn == opt._dyn) or \
option == opt:
all_cons_vals.append(opt_value)
elif self.impl_is_submulti():
print option._name, opt_value
all_cons_vals.append(opt_value[index][submulti_index])
else:
all_cons_vals.append(opt_value[index])
except PropertiesOptionError as err:
log.debug('propertyerror in _launch_consistency: {0}'.format(err))
if transitive:
raise err
for opt in all_cons_opts:
#get value
if (isinstance(opt, DynSymLinkOption) and option._dyn == opt._dyn) or \
option == opt:
opt_value = value
else:
return
#if context, calculate value, otherwise get default value
if context is not undefined:
if isinstance(opt, DynSymLinkOption):
path = opt.impl_getpath(context)
else:
path = descr.impl_get_path_by_opt(opt)
opt_value = context.getattr(path, validate=False,
force_permissive=True,
returns_raise=True)
if isinstance(opt_value, Exception):
if isinstance(opt_value, PropertiesOptionError):
log.debug('propertyerror in _launch_consistency: {0}'.format(opt_value))
if transitive:
raise opt_value
else:
return
else:
raise opt_value
else:
opt_value = opt.impl_getdefault()
#append value
if not self.impl_is_multi() or (isinstance(opt, DynSymLinkOption)
and option._dyn == opt._dyn) or \
option == opt:
all_cons_vals.append(opt_value)
#consistency with submulti is now forbidden
#elif self.impl_is_submulti():
# all_cons_vals.append(opt_value[index][submulti_index])
else:
all_cons_vals.append(opt_value[index])
return getattr(self, func)(all_cons_opts, all_cons_vals, warnings_only)
def impl_validate(self, value, context=undefined, validate=True,

View File

@ -120,7 +120,8 @@ class MasterSlaves(object):
def getitem(self, values, opt, path, validate, force_permissive,
trusted_cached_properties, validate_properties, slave_path=undefined,
slave_value=undefined, setting_properties=undefined,
self_properties=undefined, index=None):
self_properties=undefined, index=None,
returns_raise=False):
if self.is_master(opt):
return self._getmaster(values, opt, path, validate,
force_permissive,
@ -130,7 +131,7 @@ class MasterSlaves(object):
return self._getslave(values, opt, path, validate,
force_permissive, trusted_cached_properties,
validate_properties, setting_properties,
self_properties, index)
self_properties, index, returns_raise)
def _getmaster(self, values, opt, path, validate, force_permissive,
validate_properties, c_slave_path,
@ -150,7 +151,7 @@ class MasterSlaves(object):
def _getslave(self, values, opt, path, validate, force_permissive,
trusted_cached_properties, validate_properties, setting_properties,
self_properties, index):
self_properties, index, returns_raise):
"""
if master has length 0:
return []
@ -190,7 +191,10 @@ class MasterSlaves(object):
force_permissive=force_permissive,
setting_properties=setting_properties)
if props:
raise props
if returns_raise:
return props
else:
raise props
else:
one_has_value = False
if index is None:
@ -198,22 +202,26 @@ class MasterSlaves(object):
else:
indexes = [index]
for idx in indexes:
try:
value = values._get_cached_value(opt, path, validate,
force_permissive,
trusted_cached_properties,
validate_properties,
with_meta=master_is_meta,
index=idx,
# not self_properties,
# depends to index
#self_properties=self_properties,
masterlen=masterlen,
from_masterslave=True)
value = values._get_cached_value(opt, path, validate,
force_permissive,
trusted_cached_properties,
validate_properties,
with_meta=master_is_meta,
index=idx,
# not self_properties,
# depends to index
#self_properties=self_properties,
masterlen=masterlen,
from_masterslave=True,
returns_raise=True)
if isinstance(value, PropertiesOptionError):
err = value
multi.append_properties_error(value)
elif isinstance(value, Exception):
raise value
else:
multi.append(value, setitem=False, force=True, validate=validate)
one_has_value = True
except PropertiesOptionError, err:
multi.append_properties_error(err)
if not one_has_value:
#raise last err
raise err

View File

@ -232,6 +232,7 @@ class PortOption(Option):
see: http://en.wikipedia.org/wiki/Port_numbers
"""
__slots__ = tuple()
port_re = re.compile(r"^[0-9]*$")
def __init__(self, name, doc, default=None, default_multi=None,
requires=None, multi=False, callback=None,
@ -262,6 +263,7 @@ class PortOption(Option):
if extra['_max_value'] is None:
raise ValueError(_('max value is empty')) # pragma: optional cover
super(PortOption, self).__init__(name, doc, default=default,
default_multi=default_multi,
callback=callback,
@ -292,10 +294,9 @@ class PortOption(Option):
value = [value]
for val in value:
try:
val = int(val)
except ValueError: # pragma: optional cover
if not self.port_re.search(val):
return ValueError(_('invalid port'))
val = int(val)
if not self._get_extra('_min_value') <= val <= self._get_extra('_max_value'): # pragma: optional cover
return ValueError(_('invalid port, must be an integer between {0} '
'and {1}').format(self._get_extra('_min_value'),