diff --git a/panaetius/config.py b/panaetius/config.py index 5edc3c7..b5ec026 100644 --- a/panaetius/config.py +++ b/panaetius/config.py @@ -55,8 +55,25 @@ class Config: section, name = key.lower().split(".") return self.config[self.header_variable][section][name] - def _get_config_value_missing_key_value_is_none(self, default: Any): - pass + def _get_config_value_missing_key_value_is_none(self, default: Any) -> Any: + 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( self, env_key: str, key: str, default: Any, mask: bool, coerce: bool = False @@ -64,31 +81,16 @@ class Config: try: # look under top header if len(key.split(".")) == 1: - value = self._get_config_value_key_split_once(key, mask) - elif len(key.split(".")) == 2: - value = self._get_config_value_key_split_twice(key, mask) - return value + return self._get_config_value_key_split_once(key, mask) + if len(key.split(".")) == 2: + return self._get_config_value_key_split_twice(key, mask) except (KeyError, TypeError): value = os.environ.get(env_key.replace("-", "_")) if value is None: - 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 - ) + return self._get_config_value_missing_key_value_is_none(default) # if env var, coerce value if flag is set, else return a TOML string - return ( - toml.loads(f"value = {value}")["value"] - if coerce - else toml.loads(f'value = "{value}"')["value"] - ) + return self._get_config_value_missing_key_value_is_not_none(value, coerce) def _get_env_value( # noqa self, env_key: str, default: Any, coerce: bool = False