Look for protected settings that are in the required tuple.
This commit is contained in:
parent
c588181045
commit
887c45119b
@ -6,7 +6,6 @@ import getpass
|
|||||||
|
|
||||||
|
|
||||||
class SettingsBase:
|
class SettingsBase:
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Support class for providing a nice and flexible settings interface
|
Support class for providing a nice and flexible settings interface
|
||||||
|
|
||||||
@ -48,19 +47,24 @@ class SettingsBase:
|
|||||||
|
|
||||||
def merge_with_parents_settings():
|
def merge_with_parents_settings():
|
||||||
settings = tuple()
|
settings = tuple()
|
||||||
|
|
||||||
# getmro returns base classes according to Method Resolution Order
|
# getmro returns base classes according to Method Resolution Order
|
||||||
for cls in inspect.getmro(self.__class__):
|
for cls in inspect.getmro(self.__class__):
|
||||||
if hasattr(cls, "settings"):
|
if hasattr(cls, "settings"):
|
||||||
settings = settings + cls.settings
|
settings = settings + cls.settings
|
||||||
return settings
|
return settings
|
||||||
|
|
||||||
|
self.__name__ = "{}.{}".format(
|
||||||
|
self.__module__, self.__class__.__name__)
|
||||||
|
|
||||||
settings = merge_with_parents_settings()
|
settings = merge_with_parents_settings()
|
||||||
settings = self.flatten_settings(settings)
|
settings = self.flatten_settings(settings)
|
||||||
|
|
||||||
sm = KeyConstraintDict(settings, self.required)
|
sm = KeyConstraintDict(settings, self.required)
|
||||||
settings_source = get_argument_dict(args, kwargs)
|
settings_source = get_argument_dict(args, kwargs)
|
||||||
|
|
||||||
|
protected = self.get_protected_settings()
|
||||||
|
settings_source.update(protected)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
sm.update(settings_source)
|
sm.update(settings_source)
|
||||||
except KeyError as exc:
|
except KeyError as exc:
|
||||||
@ -72,20 +76,21 @@ class SettingsBase:
|
|||||||
raise ConfigMissingError(
|
raise ConfigMissingError(
|
||||||
type(self).__name__, missing=exc.keys) from exc
|
type(self).__name__, missing=exc.keys) from exc
|
||||||
|
|
||||||
self.__name__ = "{}.{}".format(
|
|
||||||
self.__module__, self.__class__.__name__)
|
|
||||||
|
|
||||||
self.logger = logging.getLogger(self.__name__)
|
self.logger = logging.getLogger(self.__name__)
|
||||||
self.logger.setLevel(self.log_level)
|
self.logger.setLevel(self.log_level)
|
||||||
self.set_protected_settings()
|
|
||||||
self.init()
|
self.init()
|
||||||
|
|
||||||
def set_protected_settings(self):
|
def get_protected_settings(self):
|
||||||
|
found_settings = dict()
|
||||||
for setting_name in self.__PROTECTED_SETTINGS:
|
for setting_name in self.__PROTECTED_SETTINGS:
|
||||||
if hasattr(self, setting_name) and not getattr(self, setting_name):
|
setting = None
|
||||||
|
if hasattr(self, 'required') and setting_name in getattr(self, 'required'):
|
||||||
setting = self.get_protected_setting("%s.%s" % (self.__name__, setting_name))
|
setting = self.get_protected_setting("%s.%s" % (self.__name__, setting_name))
|
||||||
if setting:
|
elif hasattr(self, setting_name) and not getattr(self, setting_name):
|
||||||
setattr(self, setting_name, setting)
|
setting = self.get_protected_setting("%s.%s" % (self.__name__, setting_name))
|
||||||
|
if setting:
|
||||||
|
found_settings.update({setting_name: setting})
|
||||||
|
return found_settings
|
||||||
|
|
||||||
def get_protected_setting(self, setting_name):
|
def get_protected_setting(self, setting_name):
|
||||||
# If a custom keyring backend has been defined, use it.
|
# If a custom keyring backend has been defined, use it.
|
||||||
|
Loading…
Reference in New Issue
Block a user