From d595f38dfd189577b0e76721e48ab1e5ab4db777 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 10 May 2026 15:53:24 +0000 Subject: [PATCH] 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 --- mdcms.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mdcms.py b/mdcms.py index 0a72de2..62ee3a6 100644 --- a/mdcms.py +++ b/mdcms.py @@ -108,9 +108,10 @@ def read_config(site_path: Path) -> dict: def get_category_info(cfg: dict) -> dict: use = str(cfg.get("categories-use", "no")).lower() in ("yes", "true") 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 [] - 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}