From 073e31cbdfa7a65dcf4369a855a569a6f83255e5 Mon Sep 17 00:00:00 2001 From: Fabiano Cruz Date: Sun, 5 Jul 2026 14:38:37 -0300 Subject: [PATCH] fix(python): mypy-strict guard on format_version coercion (unblock PyPI publish) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit int(fields.get(...)) rejects Any | None under strict mode; a missing format_version now coerces to 0, which the version >= 3 gate already treats as V2 (no V3 tail) — same behavior for every well-formed token, since decode_mandate_token rejects tokens without a numeric format_version before this code can run. Co-Authored-By: Claude Fable 5 --- packages/python/src/codespar/mandate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/python/src/codespar/mandate.py b/packages/python/src/codespar/mandate.py index 097623b..493b08e 100644 --- a/packages/python/src/codespar/mandate.py +++ b/packages/python/src/codespar/mandate.py @@ -182,7 +182,7 @@ def esc(member: str) -> str: return member.replace("\\", "\\\\").replace(",", "\\,") purposes = ",".join(esc(p) for p in sorted(fields.get("purposes") or [])) - version = int(fields.get("format_version")) + version = int(fields.get("format_version") or 0) parts = [ str(fields.get("format_version")), _s(fields.get("id")),