adding latest working config complete

This commit is contained in:
2021-10-16 06:05:58 +01:00
parent 4b51a040ce
commit 957ce56a4c

View File

@@ -55,8 +55,25 @@ class Config:
section, name = key.lower().split(".") section, name = key.lower().split(".")
return self.config[self.header_variable][section][name] return self.config[self.header_variable][section][name]
def _get_config_value_missing_key_value_is_none(self, default: Any): def _get_config_value_missing_key_value_is_none(self, default: Any) -> Any:
pass if isinstance(default, str):
# if default is a string, wrap TOML value in quotes
return toml.loads(f'value = "{default}"')["value"]
# if default is not a string, leave TOML value as is
# if default is a bool, convert to lower case for TOML syntax
default = str(default).lower() if isinstance(default, bool) else default
return (
toml.loads(f"value = {default}")["value"] if default is not None else None
)
def _get_config_value_missing_key_value_is_not_none(
self, value: str, coerce: bool
) -> Any:
return (
toml.loads(f"value = {value}")["value"]
if coerce
else toml.loads(f'value = "{value}"')["value"]
)
def _get_config_value( def _get_config_value(
self, env_key: str, key: str, default: Any, mask: bool, coerce: bool = False self, env_key: str, key: str, default: Any, mask: bool, coerce: bool = False
@@ -64,31 +81,16 @@ class Config:
try: try:
# look under top header # look under top header
if len(key.split(".")) == 1: if len(key.split(".")) == 1:
value = self._get_config_value_key_split_once(key, mask) return self._get_config_value_key_split_once(key, mask)
elif len(key.split(".")) == 2: if len(key.split(".")) == 2:
value = self._get_config_value_key_split_twice(key, mask) return self._get_config_value_key_split_twice(key, mask)
return value
except (KeyError, TypeError): except (KeyError, TypeError):
value = os.environ.get(env_key.replace("-", "_")) value = os.environ.get(env_key.replace("-", "_"))
if value is None: if value is None:
if isinstance(default, str): return self._get_config_value_missing_key_value_is_none(default)
# if default is a string, wrap TOML value in quotes
return toml.loads(f'value = "{default}"')["value"]
# if default is not a string, leave TOML value as is
# if default is a bool, convert to lower case for TOML syntax
default = str(default).lower() if isinstance(default, bool) else default
return (
toml.loads(f"value = {default}")["value"]
if default is not None
else None
)
# if env var, coerce value if flag is set, else return a TOML string # if env var, coerce value if flag is set, else return a TOML string
return ( return self._get_config_value_missing_key_value_is_not_none(value, coerce)
toml.loads(f"value = {value}")["value"]
if coerce
else toml.loads(f'value = "{value}"')["value"]
)
def _get_env_value( # noqa def _get_env_value( # noqa
self, env_key: str, default: Any, coerce: bool = False self, env_key: str, default: Any, coerce: bool = False