add permissive in the requirements
This commit is contained in:
parent
1dea71c17f
commit
e0490c2bed
|
@ -121,7 +121,7 @@ class Config(object):
|
||||||
|
|
||||||
def _validate(self, name, opt_or_descr, permissive=False):
|
def _validate(self, name, opt_or_descr, permissive=False):
|
||||||
"validation for the setattr and the getattr"
|
"validation for the setattr and the getattr"
|
||||||
apply_requires(opt_or_descr, self)
|
apply_requires(opt_or_descr, self, permissive=permissive)
|
||||||
if not isinstance(opt_or_descr, Option) and \
|
if not isinstance(opt_or_descr, Option) and \
|
||||||
not isinstance(opt_or_descr, OptionDescription):
|
not isinstance(opt_or_descr, OptionDescription):
|
||||||
raise TypeError('Unexpected object: {0}'.format(repr(opt_or_descr)))
|
raise TypeError('Unexpected object: {0}'.format(repr(opt_or_descr)))
|
||||||
|
|
|
@ -520,7 +520,7 @@ def build_actions(requires):
|
||||||
trigger_actions.setdefault(action, []).append(require)
|
trigger_actions.setdefault(action, []).append(require)
|
||||||
return trigger_actions
|
return trigger_actions
|
||||||
|
|
||||||
def apply_requires(opt, config):
|
def apply_requires(opt, config, permissive=False):
|
||||||
"carries out the jit (just in time requirements between options"
|
"carries out the jit (just in time requirements between options"
|
||||||
if hasattr(opt, '_requires') and opt._requires is not None:
|
if hasattr(opt, '_requires') and opt._requires is not None:
|
||||||
rootconfig = config._cfgimpl_get_toplevel()
|
rootconfig = config._cfgimpl_get_toplevel()
|
||||||
|
@ -540,8 +540,14 @@ def apply_requires(opt, config):
|
||||||
try:
|
try:
|
||||||
value = homeconfig._getattr(shortname, permissive=True)
|
value = homeconfig._getattr(shortname, permissive=True)
|
||||||
except PropertiesOptionError, err:
|
except PropertiesOptionError, err:
|
||||||
raise NotFoundError("required option has property error: "
|
permissives = err.proptype
|
||||||
"{0} {1}".format(name, err.proptype))
|
if permissive:
|
||||||
|
for perm in settings.permissive:
|
||||||
|
if perm in properties:
|
||||||
|
properties.remove(perm)
|
||||||
|
if properties != []:
|
||||||
|
raise NotFoundError("option '{0}' has requirement's property error: "
|
||||||
|
"{1} {2}".format(opt._name, name, properties))
|
||||||
except Exception, err:
|
except Exception, err:
|
||||||
raise NotFoundError("required option not found: "
|
raise NotFoundError("required option not found: "
|
||||||
"{0}".format(name))
|
"{0}".format(name))
|
||||||
|
|
Loading…
Reference in New Issue