diff --git a/tests/test_option_setting.py b/tests/test_option_setting.py index fef7d1c..9cc3323 100644 --- a/tests/test_option_setting.py +++ b/tests/test_option_setting.py @@ -76,14 +76,13 @@ def test_mod_read_only_write(): 'mandatory', 'empty'} # - config.property.setdefault({'cache'}) - config.property.setdefault(type='read_only', when='append', properties={'disabled'}) - config.property.setdefault(type='read_only', when='remove', properties={'hidden'}) - config.property.setdefault(type='read_write', when='append', properties={'disabled', - 'hidden'}) - config.property.setdefault(type='read_write', when='remove', properties=set([])) - raises(ValueError, "config.property.setdefault(type='unknown', when='append', properties={'disabled'})") - raises(ValueError, "config.property.setdefault(type='read_only', when='unknown', properties={'disabled'})") + config.property.setdefault(frozenset(['cache'])) + config.property.setdefault(type='read_only', when='append', properties=frozenset(['disabled'])) + config.property.setdefault(type='read_only', when='remove', properties=frozenset(['hidden'])) + config.property.setdefault(type='read_write', when='append', properties=frozenset(['disabled', 'hidden'])) + config.property.setdefault(type='read_write', when='remove', properties=frozenset([])) + raises(ValueError, "config.property.setdefault(type='unknown', when='append', properties=frozenset(['disabled']))") + raises(ValueError, "config.property.setdefault(type='read_only', when='unknown', properties=frozenset(['disabled']))") raises(TypeError, "config.property.setdefault(type='read_only', when='append', properties=['disabled'])") assert config.property.getdefault() == {'cache'} diff --git a/tiramisu/api.py b/tiramisu/api.py index 16ed2ed..fa9b030 100644 --- a/tiramisu/api.py +++ b/tiramisu/api.py @@ -1047,8 +1047,8 @@ class TiramisuContextProperty(TiramisuContext): properties: Set[str], type: Optional[str]=None, when: Optional[str]=None) -> None: - if not isinstance(properties, set): - raise TypeError(_('properties must be a set')) + if not isinstance(properties, frozenset): + raise TypeError(_('properties must be a frozenset')) setting = self._config_bag.context.cfgimpl_get_settings() if type is None and when is None: setting.default_properties = properties diff --git a/tiramisu/config.py b/tiramisu/config.py index d399376..c9bdd30 100644 --- a/tiramisu/config.py +++ b/tiramisu/config.py @@ -688,6 +688,11 @@ class _CommonConfig(SubConfig): duplicated_config.cfgimpl_get_settings()._p_.importation(properties) duplicated_config.cfgimpl_get_settings()._pp_.importation(self.cfgimpl_get_settings( )._pp_.exportation()) + duplicated_config.cfgimpl_get_settings().ro_append = self.cfgimpl_get_settings().ro_append + duplicated_config.cfgimpl_get_settings().rw_append = self.cfgimpl_get_settings().rw_append + duplicated_config.cfgimpl_get_settings().ro_remove = self.cfgimpl_get_settings().ro_remove + duplicated_config.cfgimpl_get_settings().rw_remove = self.cfgimpl_get_settings().rw_remove + duplicated_config.cfgimpl_get_settings().default_properties = self.cfgimpl_get_settings().default_properties duplicated_config.cfgimpl_reset_cache(None, None) if child is not None: duplicated_config._impl_children.append(child) @@ -1269,6 +1274,11 @@ class KernelMetaConfig(KernelMixConfig): if new: config.cfgimpl_get_settings().set_context_properties(self.cfgimpl_get_settings().get_context_properties(), config) config.cfgimpl_get_settings().set_context_permissives(self.cfgimpl_get_settings().get_context_permissives()) + config.cfgimpl_get_settings().ro_append = self.cfgimpl_get_settings().ro_append + config.cfgimpl_get_settings().rw_append = self.cfgimpl_get_settings().rw_append + config.cfgimpl_get_settings().ro_remove = self.cfgimpl_get_settings().ro_remove + config.cfgimpl_get_settings().rw_remove = self.cfgimpl_get_settings().rw_remove + config.cfgimpl_get_settings().default_properties = self.cfgimpl_get_settings().default_properties config._impl_meta = weakref.ref(self) self._impl_children.append(config)