remove try/except

This commit is contained in:
2016-01-06 22:37:11 +01:00
parent b521c459ee
commit 2842abdd46
3 changed files with 51 additions and 26 deletions

View File

@ -126,7 +126,8 @@ class MasterSlaves(object):
return self._getmaster(values, opt, path, validate,
force_permissive,
validate_properties, slave_path,
slave_value, self_properties, index)
slave_value, self_properties, index,
returns_raise)
else:
return self._getslave(values, opt, path, validate,
force_permissive, trusted_cached_properties,
@ -135,12 +136,15 @@ class MasterSlaves(object):
def _getmaster(self, values, opt, path, validate, force_permissive,
validate_properties, c_slave_path,
c_slave_value, self_properties, index):
c_slave_value, self_properties, index, returns_raise):
value = values._get_cached_value(opt, path=path, validate=validate,
force_permissive=force_permissive,
validate_properties=validate_properties,
self_properties=self_properties,
from_masterslave=True, index=index)
from_masterslave=True, index=index,
returns_raise=True)
if isinstance(value, Exception):
return value
if index is None and validate is True:
masterlen = len(value)
for slave in self.getslaves(opt):
@ -178,7 +182,9 @@ class MasterSlaves(object):
masterp = master.impl_getpath(context)
masterlen = self.get_length(values, opt, validate, undefined,
undefined, force_permissive,
master=master)
master=master, returns_raise=returns_raise)
if isinstance(masterlen, Exception):
return masterlen
master_is_meta = values._is_meta(master, masterp)
multi = values._get_multi(opt, path)
#if masterlen is [], test properties (has no value, don't get any value)
@ -214,20 +220,24 @@ class MasterSlaves(object):
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
if isinstance(value, Exception):
if isinstance(value, PropertiesOptionError):
err = value
multi.append_properties_error(value)
else:
return value
else:
multi.append(value, setitem=False, force=True, validate=validate)
one_has_value = True
if not one_has_value:
#raise last err
raise err
if returns_raise:
return err
else:
raise err
return multi
def validate(self, values, opt, value, path):
def validate(self, values, opt, value, path, returns_raise):
if self.is_master(opt):
masterlen = len(value)
#for regen slave path
@ -237,13 +247,16 @@ class MasterSlaves(object):
slavelen = values._p_.get_max_length(slave_path)
self.validate_slave_length(masterlen, slavelen, slave.impl_getname(), opt)
else:
self.validate_slave_length(self.get_length(values, opt,
slave_path=path), len(value),
val_len = self.get_length(values, opt, slave_path=path, returns_raise=returns_raise)
if isinstance(val_len, Exception):
return val_len
self.validate_slave_length(val_len,
len(value),
opt.impl_getname(), opt, setitem=True)
def get_length(self, values, opt, validate=True, slave_path=undefined,
slave_value=undefined, force_permissive=False, master=None,
masterp=None):
masterp=None, returns_raise=False):
"""get master len with slave option"""
if master is None:
master = self.getmaster(opt)
@ -251,9 +264,12 @@ class MasterSlaves(object):
masterp = master.impl_getpath(values._getcontext())
if slave_value is undefined:
slave_path = undefined
return len(self.getitem(values, master, masterp, validate,
force_permissive, None, True, slave_path,
slave_value))
value = self.getitem(values, master, masterp, validate,
force_permissive, None, True, slave_path,
slave_value, returns_raise=returns_raise)
if isinstance(value, Exception):
return value
return len(value)
def validate_slave_length(self, masterlen, valuelen, name, opt, setitem=False):
if valuelen > masterlen or (valuelen < masterlen and setitem): # pragma: optional cover