fix(ci): publish with an action that accepts Metadata-Version 2.5 - #26
Merged
Conversation
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 repo builds with unpinned hatchling via the semantic-release build_command, so it emits 2.5 and is exposed to exactly this failure. 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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
.github/workflows/publish.ymlpinnedpypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b(v1.14.0). That version bundles twine 6.1.0 and packaging 25.0, which rejectMetadata-Version: 2.5:This repo is exposed.
[build-system]requires unpinnedhatchling, andbuild_commandends inuv build— so the release job builds with current hatchling, which emitsMetadata-Version: 2.5.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 PyPIfailed — leaving PyPI stale while every other release artifact claimed the version had shipped.Fix
Move to
dc37677b2e1c63e2034f94d8a5b11f265b73ba33(v1.14.2, twine 7.0.0 + packaging 26.2).Same pin
openadapt-flowandopenadapt-capturealready use; applied toopenadapt-evalsin OpenAdaptAI/openadapt-evals#291 and toopenadapt-privacyin OpenAdaptAI/openadapt-privacy#14.An org-wide sweep of every
.github/workflows/*.ymlon every default branch foundopenadapt-typesandopenadapt-privacywere the last two repos still carrying the broken pin.Verification
Both SHAs were resolved against upstream rather than copied:
v1.14.0cef221092ed1bacb1cc03d23a2d87d1d172e277b(removed)v1.14.2dc37677b2e1c63e2034f94d8a5b11f265b73ba33(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
patch_tags = ["fix", "perf"], so squash-merging thisfix(ci):title cuts a patch release. That is intentional — it exercises the new publish pin end to end rather than leaving the fix unproven until the next feature release.🤖 Generated with Claude Code