fix(release): prepare aligned 0.1.45 composition and guarded candidate sequencing

This commit is contained in:
2026-09-08 01:52:08 +02:00
parent 1cec4ee1d8
commit 6a8f53b87d
17 changed files with 588 additions and 72 deletions
@@ -269,6 +269,7 @@ def _render_python_version(
except SyntaxError as exc:
raise VersionMetadataError(f"Python metadata is malformed: {path.name}") from exc
values: list[ast.Constant] = []
module_version_references = 0
for node in ast.walk(tree):
if not isinstance(node, ast.Call) or _call_name(node.func) != target_name:
continue
@@ -279,6 +280,28 @@ def _render_python_version(
and isinstance(keyword.value.value, str)
):
values.append(keyword.value)
elif (
keyword.arg == keyword_name
and isinstance(keyword.value, ast.Name)
and keyword.value.id == "MODULE_VERSION"
):
module_version_references += 1
if module_version_references:
if module_version_references != 1 or values:
raise VersionMetadataError(
f"Python metadata has multiple {target_name}.{keyword_name} values: {path.name}"
)
rendered, found = _render_python_assignment(
payload,
path=path,
assignment_name="MODULE_VERSION",
version=version,
)
if not found:
raise VersionMetadataError(
f"Python metadata has no literal MODULE_VERSION declaration: {path.name}"
)
return rendered, True
if not values:
return payload, False
if len(values) != 1: