cannot set properties if those properties are in requirement
This commit is contained in:
@ -292,6 +292,12 @@ class Option(BaseOption):
|
||||
' must be a tuple').format(
|
||||
type(properties),
|
||||
self._name))
|
||||
if self._calc_properties is not None and properties is not tuple():
|
||||
set_forbidden_properties = set(properties) & self._calc_properties
|
||||
if set_forbidden_properties != frozenset():
|
||||
raise ValueError('conflict: properties already set in '
|
||||
'requirement {0}'.format(
|
||||
list(set_forbidden_properties)))
|
||||
self._properties = properties # 'hidden', 'disabled'...
|
||||
|
||||
def _launch_consistency(self, func, opt, vals, context, index, opt_):
|
||||
@ -804,7 +810,8 @@ class OptionDescription(BaseOption):
|
||||
__slots__ = ('_name', '_requires', '_cache_paths', '_group_type',
|
||||
'_state_group_type', '_properties', '_children',
|
||||
'_consistencies', '_calc_properties', '__weakref__',
|
||||
'_readonly', '_impl_informations')
|
||||
'_readonly', '_impl_informations', '_state_requires',
|
||||
'_state_consistencies')
|
||||
_opt_type = 'optiondescription'
|
||||
|
||||
def __init__(self, name, doc, children, requires=None, properties=None):
|
||||
@ -838,6 +845,12 @@ class OptionDescription(BaseOption):
|
||||
raise TypeError(_('invalid properties type {0} for {1},'
|
||||
' must be a tuple').format(type(properties),
|
||||
self._name))
|
||||
if self._calc_properties is not None and properties is not tuple():
|
||||
set_forbidden_properties = set(properties) & self._calc_properties
|
||||
if set_forbidden_properties != frozenset():
|
||||
raise ValueError('conflict: properties already set in '
|
||||
'requirement {0}'.format(
|
||||
list(set_forbidden_properties)))
|
||||
self._properties = properties # 'hidden', 'disabled'...
|
||||
# the group_type is useful for filtering OptionDescriptions in a config
|
||||
self._group_type = groups.default
|
||||
|
Reference in New Issue
Block a user