Skip to content

fix(ci): publish with an action that accepts Metadata-Version 2.5 - #14

Merged
abrichr merged 1 commit into
mainfrom
fix/pypi-publish-metadata-2-5
Aug 19, 2026
Merged

fix(ci): publish with an action that accepts Metadata-Version 2.5#14
abrichr merged 1 commit into
mainfrom
fix/pypi-publish-metadata-2-5

Conversation

@abrichr

@abrichr abrichr commented Aug 19, 2026

Copy link
Copy Markdown
Member

Problem

.github/workflows/release.yml pinned pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b (v1.14.0). That version bundles twine 6.1.0 and packaging 25.0, which reject Metadata-Version: 2.5 — the version current hatchling emits:

InvalidDistribution: Invalid distribution metadata: '2.5' is not a valid metadata version

This is not hypothetical. The same pin broke the openadapt-evals 0.91.0 release: the tag, the version-bump commit and the GitHub release all landed, then Publish to PyPI failed — leaving PyPI stale while every other release artifact claimed the version had shipped.

openadapt-privacy carries the identical pin and would fail the same way on its next release.

Fix

Move to dc37677b2e1c63e2034f94d8a5b11f265b73ba33 (v1.14.2, twine 7.0.0 + packaging 26.2).

This is the same pin openadapt-flow and openadapt-capture already use, and the one applied to openadapt-evals in OpenAdaptAI/openadapt-evals#291.

Verification

Both SHAs were resolved against upstream rather than copied:

tag commit
v1.14.0 cef221092ed1bacb1cc03d23a2d87d1d172e277b (removed)
v1.14.2 dc37677b2e1c63e2034f94d8a5b11f265b73ba33 (added)

The workflow still parses as valid YAML, and the pin remains a full 40-character commit SHA with the human-readable version in a trailing comment.

Note on merging

[tool.semantic_release.commit_parser_options] lists fix under patch_tags, so squash-merging this fix(ci): title cuts a 1.0.3 patch release. That is intentional — it exercises the new publish pin end to end and confirms PyPI is reachable, rather than leaving the fix unproven until the next feature release.

🤖 Generated with Claude Code

pypa/gh-action-pypi-publish v1.14.0 bundles twine 6.1.0 and packaging
25.0, which reject Metadata-Version 2.5 -- the version current hatchling
emits. The publish step fails with:

  InvalidDistribution: Invalid distribution metadata:
  '2.5' is not a valid metadata version

This is not hypothetical: the same pin broke the openadapt-evals 0.91.0
release. The tag, the version-bump commit and the GitHub release all
landed, then "Publish to PyPI" failed, leaving PyPI stale while every
other release artifact said the version had shipped.

Move to v1.14.2 (twine 7.0.0 + packaging 26.2), the pin openadapt-flow
and openadapt-capture already use and the one applied to openadapt-evals
in OpenAdaptAI/openadapt-evals#291.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@abrichr
abrichr merged commit 5cdda70 into main Aug 19, 2026
4 checks passed
@abrichr
abrichr deleted the fix/pypi-publish-metadata-2-5 branch August 19, 2026 22:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant