Config: allow access/setting config options as with a dict
This commit is contained in:
parent
fd2911e810
commit
85d34b7b9a
1 changed files with 26 additions and 0 deletions
|
@ -655,6 +655,11 @@ class Config: # pylint: disable=too-many-instance-attributes
|
||||||
return getattr(self.options, option)
|
return getattr(self.options, option)
|
||||||
return default
|
return default
|
||||||
|
|
||||||
|
def __getitem__(self, key):
|
||||||
|
assert self.config_parser or self.options, 'Unconfigured options parser'
|
||||||
|
assert key in self.sections, f'Unknown section {key}'
|
||||||
|
return ConfigSectionAsDictWrapper(self.sections[key])
|
||||||
|
|
||||||
def set(self, section, option, value):
|
def set(self, section, option, value):
|
||||||
""" Set option value """
|
""" Set option value """
|
||||||
assert self.config_parser, 'Unconfigured options parser'
|
assert self.config_parser, 'Unconfigured options parser'
|
||||||
|
@ -1088,3 +1093,24 @@ class ConfigurableObject:
|
||||||
""" Configuration initialized hook """
|
""" Configuration initialized hook """
|
||||||
if loaded_config:
|
if loaded_config:
|
||||||
self.config = loaded_config # pylint: disable=attribute-defined-outside-init
|
self.config = loaded_config # pylint: disable=attribute-defined-outside-init
|
||||||
|
|
||||||
|
|
||||||
|
class ConfigSectionAsDictWrapper:
|
||||||
|
"""
|
||||||
|
Wrapper for ConfigSection that offer __getitems__ and __setitem__ methods
|
||||||
|
to allow access to section options as with a dictionary.
|
||||||
|
"""
|
||||||
|
|
||||||
|
__section = None
|
||||||
|
|
||||||
|
def __init__(self, section):
|
||||||
|
self.__section = section
|
||||||
|
|
||||||
|
def __getitem__(self, key):
|
||||||
|
return self.__section.get(key)
|
||||||
|
|
||||||
|
def __setitem__(self, key, value):
|
||||||
|
self.__section.set(key, value)
|
||||||
|
|
||||||
|
def __delitem__(self, key):
|
||||||
|
raise Exception('Deleting a configuration option is not supported')
|
||||||
|
|
Loading…
Reference in a new issue