Refactor `Config.__init__()`

This commit is contained in:
Adam Turner 2023-12-29 16:07:37 +00:00
parent 512570bfe6
commit 134d1341dd

View File

@ -82,10 +82,12 @@ class Config:
``app.config.language`` or ``env.config.language``. ``app.config.language`` or ``env.config.language``.
""" """
# the values are: (default, what needs to be rebuilt if changed) # The values are:
# 1. Default
# 2. What needs to be rebuilt if changed
# 3. Valid types
# If you add a value here, don't forget to include it in the # If you add a value here, remember to include it in the docs!
# quickstart.py file template as well as in the docs!
config_values: dict[str, tuple] = { config_values: dict[str, tuple] = {
# general options # general options
@ -158,18 +160,19 @@ class Config:
def __init__(self, config: dict[str, Any] | None = None, def __init__(self, config: dict[str, Any] | None = None,
overrides: dict[str, Any] | None = None) -> None: overrides: dict[str, Any] | None = None) -> None:
config = config or {} raw_config: dict[str, Any] = config or {}
self.overrides = dict(overrides) if overrides is not None else {} self.overrides = dict(overrides) if overrides is not None else {}
self.values = Config.config_values.copy() self.values = Config.config_values.copy()
self._raw_config = config self._raw_config = raw_config
self.setup: Callable | None = config.get('setup', None) self.setup: Callable | None = raw_config.get('setup')
if 'extensions' in self.overrides: if 'extensions' in self.overrides:
if isinstance(self.overrides['extensions'], str): extensions = self.overrides.pop('extensions')
config['extensions'] = self.overrides.pop('extensions').split(',') if isinstance(extensions, str):
raw_config['extensions'] = extensions.split(',')
else: else:
config['extensions'] = self.overrides.pop('extensions') raw_config['extensions'] = extensions
self.extensions: list[str] = config.get('extensions', []) self.extensions: list[str] = raw_config.get('extensions', [])
@classmethod @classmethod
def read(cls, confdir: str | os.PathLike[str], overrides: dict | None = None, def read(cls, confdir: str | os.PathLike[str], overrides: dict | None = None,