mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Standardise iteration over configration values
This commit is contained in:
parent
134d1341dd
commit
90ebd881fa
@ -254,20 +254,20 @@ class Config:
|
|||||||
|
|
||||||
def init_values(self) -> None:
|
def init_values(self) -> None:
|
||||||
config = self._raw_config
|
config = self._raw_config
|
||||||
for valname, value in self.overrides.items():
|
for name, value in self.overrides.items():
|
||||||
try:
|
try:
|
||||||
if '.' in valname:
|
if '.' in name:
|
||||||
realvalname, key = valname.split('.', 1)
|
real_name, key = name.split('.', 1)
|
||||||
config.setdefault(realvalname, {})[key] = value
|
config.setdefault(real_name, {})[key] = value
|
||||||
continue
|
continue
|
||||||
if valname not in self.values:
|
if name not in self.values:
|
||||||
logger.warning(__('unknown config value %r in override, ignoring'),
|
logger.warning(__('unknown config value %r in override, ignoring'),
|
||||||
valname)
|
name)
|
||||||
continue
|
continue
|
||||||
if isinstance(value, str):
|
if isinstance(value, str):
|
||||||
config[valname] = self.convert_overrides(valname, value)
|
config[name] = self.convert_overrides(name, value)
|
||||||
else:
|
else:
|
||||||
config[valname] = value
|
config[name] = value
|
||||||
except ValueError as exc:
|
except ValueError as exc:
|
||||||
logger.warning("%s", exc)
|
logger.warning("%s", exc)
|
||||||
for name in config:
|
for name in config:
|
||||||
@ -319,7 +319,7 @@ class Config:
|
|||||||
|
|
||||||
def filter(self, rebuild: str | Sequence[str]) -> Iterator[ConfigValue]:
|
def filter(self, rebuild: str | Sequence[str]) -> Iterator[ConfigValue]:
|
||||||
if isinstance(rebuild, str):
|
if isinstance(rebuild, str):
|
||||||
rebuild = [rebuild]
|
return (value for value in self if value.rebuild == rebuild)
|
||||||
return (value for value in self if value.rebuild in rebuild)
|
return (value for value in self if value.rebuild in rebuild)
|
||||||
|
|
||||||
def __getstate__(self) -> dict:
|
def __getstate__(self) -> dict:
|
||||||
@ -478,8 +478,8 @@ def check_confval_types(app: Sphinx | None, config: Config) -> None:
|
|||||||
"""Check all values for deviation from the default value's type, since
|
"""Check all values for deviation from the default value's type, since
|
||||||
that can result in TypeErrors all over the place NB.
|
that can result in TypeErrors all over the place NB.
|
||||||
"""
|
"""
|
||||||
for confval in config:
|
for name, (default, _rebuild, valid_types) in config.values.items():
|
||||||
default, rebuild, valid_types = config.values[confval.name]
|
value = getattr(config, name)
|
||||||
|
|
||||||
if callable(default):
|
if callable(default):
|
||||||
default = default(config) # evaluate default value
|
default = default(config) # evaluate default value
|
||||||
@ -490,19 +490,19 @@ def check_confval_types(app: Sphinx | None, config: Config) -> None:
|
|||||||
# any type of value is accepted
|
# any type of value is accepted
|
||||||
pass
|
pass
|
||||||
elif isinstance(valid_types, ENUM):
|
elif isinstance(valid_types, ENUM):
|
||||||
if not valid_types.match(confval.value):
|
if not valid_types.match(value):
|
||||||
msg = __("The config value `{name}` has to be a one of {candidates}, "
|
msg = __("The config value `{name}` has to be a one of {candidates}, "
|
||||||
"but `{current}` is given.")
|
"but `{current}` is given.")
|
||||||
logger.warning(msg.format(name=confval.name,
|
logger.warning(msg.format(name=name,
|
||||||
current=confval.value,
|
current=value,
|
||||||
candidates=valid_types.candidates), once=True)
|
candidates=valid_types.candidates), once=True)
|
||||||
else:
|
else:
|
||||||
if type(confval.value) is type(default):
|
if type(value) is type(default):
|
||||||
continue
|
continue
|
||||||
if type(confval.value) in valid_types:
|
if type(value) in valid_types:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
common_bases = (set(type(confval.value).__bases__ + (type(confval.value),)) &
|
common_bases = (set(type(value).__bases__ + (type(value),)) &
|
||||||
set(type(default).__bases__))
|
set(type(default).__bases__))
|
||||||
common_bases.discard(object)
|
common_bases.discard(object)
|
||||||
if common_bases:
|
if common_bases:
|
||||||
@ -517,14 +517,14 @@ def check_confval_types(app: Sphinx | None, config: Config) -> None:
|
|||||||
+ f", or {wrapped_valid_types[-1]}")
|
+ f", or {wrapped_valid_types[-1]}")
|
||||||
else:
|
else:
|
||||||
permitted = " or ".join(wrapped_valid_types)
|
permitted = " or ".join(wrapped_valid_types)
|
||||||
logger.warning(msg.format(name=confval.name,
|
logger.warning(msg.format(name=name,
|
||||||
current=type(confval.value),
|
current=type(value),
|
||||||
permitted=permitted), once=True)
|
permitted=permitted), once=True)
|
||||||
else:
|
else:
|
||||||
msg = __("The config value `{name}' has type `{current.__name__}', "
|
msg = __("The config value `{name}' has type `{current.__name__}', "
|
||||||
"defaults to `{default.__name__}'.")
|
"defaults to `{default.__name__}'.")
|
||||||
logger.warning(msg.format(name=confval.name,
|
logger.warning(msg.format(name=name,
|
||||||
current=type(confval.value),
|
current=type(value),
|
||||||
default=type(default)), once=True)
|
default=type(default)), once=True)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user