From df9eb0abe9308afc7cdd13a746c7bf7eeae3d655 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Mazzucotelli?= Date: Fri, 12 Dec 2025 17:31:26 +0100 Subject: [PATCH] zensical:fix - Stop setting default values for keys under extra #178 Signed-off-by: pawamoy # Please enter the commit message for your changes. Lines starting # with '#' will be kept; you may remove them yourself if you want to. # An empty message aborts the commit. # # Date: Fri Dec 12 17:31:26 2025 +0100 # # On branch fix/stop-setting-extra-defaults # Your branch and 'origin/fix/stop-setting-extra-defaults' have diverged, # and have 1 and 1 different commits each, respectively. # # Changes to be committed: # modified: python/zensical/config.py # --- python/zensical/config.py | 70 +++------------------------------------ 1 file changed, 5 insertions(+), 65 deletions(-) diff --git a/python/zensical/config.py b/python/zensical/config.py index 884a729..82d355e 100644 --- a/python/zensical/config.py +++ b/python/zensical/config.py @@ -292,73 +292,13 @@ def _apply_defaults(config: dict, path: str) -> dict: set_default(toggle, "name", None, str) # Set defaults for extra settings + if "extra" in config and not isinstance(config["extra"], dict): + raise ConfigurationError("The 'extra' setting must be a mapping/dictionary.") extra = set_default(config, "extra", {}, dict) - set_default(extra, "homepage", None, str) - set_default(extra, "scope", None, str) - set_default(extra, "annotate", {}, dict) - set_default(extra, "tags", {}, dict) - set_default(extra, "generator", True, bool) + + if "polyfills" in extra and not isinstance(extra["polyfills"], list): + raise ConfigurationError("The 'extra.polyfills' setting must be a list.") set_default(extra, "polyfills", [], list) - set_default(extra, "analytics", None, dict) - - # Set defaults for extra analytics settings - analytics = extra.get("analytics") - if analytics: - set_default(analytics, "provider", None, str) - set_default(analytics, "property", None, str) - set_default(analytics, "feedback", None, dict) - - # Set defaults for extra analytics feedback settings - feedback = analytics.get("feedback") - if feedback: - set_default(feedback, "title", None, str) - set_default(feedback, "ratings", [], list) - - # Set defaults for each rating entry - ratings = feedback.setdefault("ratings", []) - for entry in ratings: - set_default(entry, "icon", None, str) - set_default(entry, "name", None, str) - set_default(entry, "data", None, str) - set_default(entry, "note", None, str) - - # Set defaults for extra consent settings - consent = extra.setdefault("consent", None) - if consent: - set_default(consent, "title", None, str) - set_default(consent, "description", None, str) - set_default(consent, "actions", [], list) - - # Set defaults for extra consent cookie settings - cookies = consent.setdefault("cookies", {}) - for key, value in cookies.items(): - if isinstance(value, str): - cookies[key] = {"name": value, "checked": False} - - # Set defaults for each cookie entry - set_default(cookies[key], "name", None, str) - set_default(cookies[key], "checked", False, bool) - - # Set defaults for extra social settings - social = extra.setdefault("social", []) - for entry in social: - set_default(entry, "icon", None, str) - set_default(entry, "name", None, str) - set_default(entry, "link", None, str) - - # Set defaults for extra alternate settings - alternate = extra.setdefault("alternate", []) - for entry in alternate: - set_default(entry, "name", None, str) - set_default(entry, "link", None, str) - set_default(entry, "lang", None, str) - - # Set defaults for extra version settings - version = extra.setdefault("version", None) - if version: - set_default(version, "provider", None, str) - set_default(version, "default", None, str) - set_default(version, "alias", False, bool) # Ensure all non-existent values are all empty strings (for now) config["extra"] = _convert_extra(extra)