modification of reset's arity
This commit is contained in:
parent
e0bf9faf5c
commit
b353c6ba60
1 changed files with 8 additions and 24 deletions
|
@ -216,27 +216,10 @@ class Option(HiddenBaseType, DisabledBaseType):
|
||||||
"config *must* be only the **parent** config (not the toplevel config)"
|
"config *must* be only the **parent** config (not the toplevel config)"
|
||||||
return config._cfgimpl_value_owners[self._name]
|
return config._cfgimpl_value_owners[self._name]
|
||||||
|
|
||||||
def reset(self, config, idx=None):
|
def reset(self, config):
|
||||||
"""resets the default value and owner
|
"""resets the default value and owner
|
||||||
:param idx: if not None, resets only the element at index idx
|
|
||||||
"""
|
"""
|
||||||
if self.is_multi():
|
config.setoption(self._name, self.getdefault(), 'default')
|
||||||
if idx is not None:
|
|
||||||
defval = self.getdefault()
|
|
||||||
value = getattr(config, self._name)
|
|
||||||
# if the default is ['a', 'b', 'c']
|
|
||||||
if len(defval) > idx:
|
|
||||||
# and idx = 2 -> there is a value in the default
|
|
||||||
value.setoption(defval[idx], idx, who='default')
|
|
||||||
else:
|
|
||||||
# and idx = 4 -> there is actually no such value in the default
|
|
||||||
value.setoption(self.default_multi, idx, who='default')
|
|
||||||
else:
|
|
||||||
value = Multi(self.getdefault(), config, self)
|
|
||||||
config.setoption(self._name, value, 'default')
|
|
||||||
else:
|
|
||||||
value = self.getdefault()
|
|
||||||
config.setoption(self._name, value, 'default')
|
|
||||||
|
|
||||||
def is_default_owner(self, config):
|
def is_default_owner(self, config):
|
||||||
"""
|
"""
|
||||||
|
@ -298,17 +281,18 @@ class Option(HiddenBaseType, DisabledBaseType):
|
||||||
class ChoiceOption(Option):
|
class ChoiceOption(Option):
|
||||||
opt_type = 'string'
|
opt_type = 'string'
|
||||||
|
|
||||||
def __init__(self, name, doc, values, default=None,
|
def __init__(self, name, doc, values, default=None, default_multi=None,
|
||||||
requires=None, callback=None, callback_params=None,
|
requires=None, mandatory=False, multi=False, callback=None,
|
||||||
multi=False, mandatory=False, open_values=False):
|
callback_params=None, open_values=False):
|
||||||
self.values = values
|
self.values = values
|
||||||
if open_values not in [True, False]:
|
if open_values not in [True, False]:
|
||||||
raise ConfigError('Open_values must be a boolean for '
|
raise ConfigError('Open_values must be a boolean for '
|
||||||
'{0}'.format(name))
|
'{0}'.format(name))
|
||||||
self.open_values = open_values
|
self.open_values = open_values
|
||||||
super(ChoiceOption, self).__init__(name, doc, default=default,
|
super(ChoiceOption, self).__init__(name, doc, default=default,
|
||||||
callback=callback, callback_params=callback_params,
|
default_multi=default_multi, callback=callback,
|
||||||
requires=requires, multi=multi, mandatory=mandatory)
|
callback_params=callback_params, requires=requires,
|
||||||
|
multi=multi, mandatory=mandatory)
|
||||||
|
|
||||||
def _validate(self, value):
|
def _validate(self, value):
|
||||||
if not self.open_values:
|
if not self.open_values:
|
||||||
|
|
Loading…
Reference in a new issue