Option.force_default() -> opt value returns the default value
This commit is contained in:
@ -245,8 +245,8 @@ class Config(object):
|
||||
else:
|
||||
_result = result
|
||||
return _result
|
||||
# mandatory options
|
||||
if not isinstance(opt_or_descr, OptionDescription):
|
||||
# mandatory options
|
||||
homeconfig = self._cfgimpl_get_toplevel()
|
||||
mandatory = homeconfig._cfgimpl_mandatory
|
||||
if opt_or_descr.is_mandatory() and mandatory:
|
||||
@ -254,6 +254,10 @@ class Config(object):
|
||||
and opt_or_descr.getdefault() == None:
|
||||
raise MandatoryError("option: {0} is mandatory "
|
||||
"and shall have a value".format(name))
|
||||
# frozen and force default
|
||||
if opt_or_descr.is_forced_on_freeze():
|
||||
return opt_or_descr.getdefault()
|
||||
|
||||
return self._cfgimpl_values[name]
|
||||
|
||||
def __dir__(self):
|
||||
|
@ -83,6 +83,7 @@ class Multi(list):
|
||||
class Option(HiddenBaseType, DisabledBaseType):
|
||||
#reminder: an Option object is **not** a container for the value
|
||||
_frozen = False
|
||||
_force_default_on_freeze = False
|
||||
def __init__(self, name, doc, default=None, default_multi=None,
|
||||
requires=None, mandatory=False, multi=False, callback=None,
|
||||
callback_params=None):
|
||||
@ -141,6 +142,15 @@ class Option(HiddenBaseType, DisabledBaseType):
|
||||
def getdefault(self):
|
||||
return self.default
|
||||
|
||||
def force_default(self):
|
||||
self._force_default_on_freeze = True
|
||||
|
||||
def is_forced_on_freeze(self):
|
||||
if self._frozen and self._force_default_on_freeze:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def getdoc(self):
|
||||
return self.doc
|
||||
|
||||
@ -372,7 +382,8 @@ class ArbitraryOption(Option):
|
||||
return self.default
|
||||
|
||||
class OptionDescription(HiddenBaseType, DisabledBaseType):
|
||||
|
||||
group_type = 'default'
|
||||
|
||||
def __init__(self, name, doc, children, requires=None):
|
||||
self._name = name
|
||||
self.doc = doc
|
||||
@ -380,8 +391,7 @@ class OptionDescription(HiddenBaseType, DisabledBaseType):
|
||||
self._requires = requires
|
||||
self._build()
|
||||
self.properties = [] # 'hidden', 'disabled'...
|
||||
self.group_type = 'default'
|
||||
|
||||
|
||||
def getdoc(self):
|
||||
return self.doc
|
||||
|
||||
|
Reference in New Issue
Block a user