From f86cbb1bcd995714ed9e274b962c1ae381c032cd Mon Sep 17 00:00:00 2001 From: Emmanuel Garette Date: Sat, 17 Nov 2018 22:12:21 +0100 Subject: [PATCH] if impl_is_readonly is not False => duplicated option ! --- tiramisu/config.py | 2 ++ tiramisu/option/masterslaves.py | 2 +- tiramisu/option/optiondescription.py | 9 +++------ 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/tiramisu/config.py b/tiramisu/config.py index 5670f93..af8980a 100644 --- a/tiramisu/config.py +++ b/tiramisu/config.py @@ -483,6 +483,8 @@ class SubConfig(object): fullpath, pathsvalues): if withoption is not None: + # Find all option with criteria + # retrieve OptionDescription and make_dict on it mypath = self.cfgimpl_get_path() for path in context.find(bytype=None, byname=withoption, diff --git a/tiramisu/option/masterslaves.py b/tiramisu/option/masterslaves.py index d9d449b..2ba04cb 100644 --- a/tiramisu/option/masterslaves.py +++ b/tiramisu/option/masterslaves.py @@ -71,7 +71,7 @@ class MasterSlaves(OptionDescription): '').format(self.impl_get_display_name(), child.impl_get_display_name())) if idx != 0 and child.impl_getdefault() != []: - raise ValueError(_('not allowed default value for option "{0}" ' + raise ValueError(_('not allowed default value for slave option "{0}" ' 'in masterslaves "{1}"' '').format(child.impl_get_display_name(), self.impl_get_display_name())) diff --git a/tiramisu/option/optiondescription.py b/tiramisu/option/optiondescription.py index 1c0aed5..f3bb81c 100644 --- a/tiramisu/option/optiondescription.py +++ b/tiramisu/option/optiondescription.py @@ -150,14 +150,11 @@ class CacheOptionDescription(BaseOption): raise ValueError(_('malformed requirements option "{0}" ' 'must not be a multi for "{1}"').format( require_opt.impl_getname(), option.impl_getname())) + if option.impl_is_readonly(): + raise ConflictError(_('duplicate option: {0}').format(option)) option._path = subpath option._set_readonly() if init: - if __debug__ and len(cache_option) != len(set(cache_option)): - for idx in range(1, len(cache_option) + 1): - opt = cache_option.pop(0) - if opt in cache_option: - raise ConflictError(_('duplicate option: {0}').format(opt)) if _consistencies != {}: self._cache_consistencies = {} for weak_opt, cons in _consistencies.items(): @@ -168,7 +165,7 @@ class CacheOptionDescription(BaseOption): opt.impl_getname())) self._cache_consistencies[opt] = tuple(cons) self._cache_force_store_values = force_store_values - self._path = subpath + self._path = self._name self._set_readonly() def impl_build_force_store_values(self,