fix: coerce category codes to str to handle YAML-parsed integers

YAML parses bare numeric codes (e.g. `code: 01`) as int, causing
TypeError in CATEGORY_CODE_RE.match() which expects str/bytes.

https://claude.ai/code/session_01N1msEmfHK7UWa6mNS8LPGu
This commit is contained in:
Claude 2026-05-10 15:53:24 +00:00
parent 22f95cd633
commit d595f38dfd
No known key found for this signature in database

View file

@ -108,9 +108,10 @@ def read_config(site_path: Path) -> dict:
def get_category_info(cfg: dict) -> dict: def get_category_info(cfg: dict) -> dict:
use = str(cfg.get("categories-use", "no")).lower() in ("yes", "true") use = str(cfg.get("categories-use", "no")).lower() in ("yes", "true")
default_cat = cfg.get("default-category") or {} default_cat = cfg.get("default-category") or {}
default_code = default_cat.get("code") if isinstance(default_cat, dict) else None raw_default = default_cat.get("code") if isinstance(default_cat, dict) else None
default_code = str(raw_default) if raw_default is not None else None
cats = cfg.get("categories") or [] cats = cfg.get("categories") or []
codes = [c["code"] for c in cats if isinstance(c, dict) and "code" in c] codes = [str(c["code"]) for c in cats if isinstance(c, dict) and "code" in c]
return {"use": use, "default_code": default_code, "codes": codes} return {"use": use, "default_code": default_code, "codes": codes}