import os from .settings import Settings class SettingEntry: def __init__(self, name, env_name=None, default=None, namespace='DEFAULT', type=str): self.name = name self.environment = env_name self.default = default self.value = default self.namespace = namespace self.read_from_env = False self.type = type self.str_value = None self.read_config() if os.getenv(self.environment) is not None: self.read_from_env = True self.set(os.getenv(self.environment)) Settings.__list__.append(self) def __str__(self): return '{0} => {1}'.format(self.name, self.value) def __eq__(self, other): return self.name == other def read_config(self): if self.namespace in Settings.__config__ and self.name in Settings.__config__[self.namespace] and not self.read_from_env: self.set(Settings.__config__[self.namespace][self.name]) def push_config(self): Settings.__config__[self.namespace][self.name] = self.str_value def set(self, value): self.value = self.type(value) self.str_value = str(self.value) def get(self): return self.type(self.value)