).format(name))
if validate:
callback, callback_params = self.master.impl_get_callback()
- if callback is not None and callback_params is not None: # pragma: optional cover
+ if callback is not None and callback_params != {}: # pragma: optional cover
for key, callbacks in callback_params.items():
for callbk in callbacks:
if isinstance(callbk, tuple):
force_properties,
validate_properties,
None) # not undefined
- return self.get_slave_value(values, opt, value, validate, validate_properties)
+ return self.get_slave_value(values, opt, value, validate,
+ validate_properties, force_permissive)
def setitem(self, values, opt, value, path):
if self.is_master(opt):
opt.impl_getname(), opt, setitem=True)
def get_length(self, values, opt, validate=True, slave_path=undefined,
- slave_value=undefined):
+ slave_value=undefined, force_permissive=False):
"""get master len with slave option"""
masterp = self.getmaster(opt).impl_getpath(values._getcontext())
if slave_value is undefined:
slave_path = undefined
- return len(self.getitem(values, self.getmaster(opt), masterp, validate, False,
- None, True, slave_path, slave_value))
+ return len(self.getitem(values, self.getmaster(opt), masterp, validate,
+ force_permissive, None, True, slave_path,
+ slave_value))
def validate_slave_length(self, masterlen, valuelen, name, opt, setitem=False):
if valuelen > masterlen or (valuelen < masterlen and setitem): # pragma: optional cover
name, self.getmaster(opt).impl_getname()))
def get_slave_value(self, values, opt, value, validate=True,
- validate_properties=True):
+ validate_properties=True, force_permissive=False):
"""
if master has length 0:
return []
"""
#if slave, had values until master's one
path = opt.impl_getpath(values._getcontext())
- masterlen = self.get_length(values, opt, validate, path, value)
+ masterlen = self.get_length(values, opt, validate, path, value,
+ force_permissive)
valuelen = len(value)
if validate:
self.validate_slave_length(masterlen, valuelen, opt.impl_getname(), opt)