Make package publishable to PyPI - #13
Merged
Merged
Conversation
Metadata (PEP 639 licence, urls, classifiers, keywords), a Trusted Publishing release workflow triggered by GitHub Releases with a TestPyPI dispatch rehearsal, a CI twine-check guard, and ci.yml SHA-pin reconciliation. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Clarify that the GitHub Release is the trigger and changelog; pin twine as a Renovate-managed dev dependency rather than an ephemeral uvx tool. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Task-by-task plan for packaging metadata, the Trusted-Publishing release workflow, the CI twine-check guard, ci.yml SHA pins, and docs, with resolved action SHAs and the manual setup + rollout steps. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Address code-quality review: re-run twine check in the release build job before publishing, make the TestPyPI rehearsal repeatable with skip-existing, and list the build/twine-check steps in CONTRIBUTING's CI-replication block. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3 tasks
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.
Summary
Prepares
mt5-pnl-exporterfor its first PyPI release (1.0.0). Nosrc/or runtime changes — packaging and release mechanics only.pyproject.toml): PEP 639 licence (license = "MIT"+license-files),[project.urls], troveclassifiers,keywords, andtwine>=6.1as a dev dep..github/workflows/release.yml): Trusted Publishing (OIDC, no stored token). A published GitHub Release → PyPI; manualworkflow_dispatch→ TestPyPI. One sharedbuildjob;twine check --strictruns before upload; TestPyPI usesskip-existingso the rehearsal is repeatable..github/workflows/ci.yml):uv build+twine check --stricton every push/PR; all actions reconciled from tag pins to commit SHAs (Renovate-managed), resolving the doc-vs-reality drift.CONTRIBUTING.mdgains a "Releasing" section and drops an inaccurate "bundled schema file" claim;CLAUDE.mdnotes the release workflow.Design:
docs/superpowers/specs/2026-06-12-pypi-publish-design.md· Plan:docs/superpowers/plans/2026-06-12-pypi-publish.mdTest Plan
ruff,mypy --strict,pytest(86 passed, 100% coverage) all pass locallyuv build+uv run twine check --strict dist/*PASSED on both artifactsAfter merge (manual, human-driven)
tanem, repomt5-pnl-exporter, workflowrelease.yml, envpypi/testpypi); create thepypiandtestpypiGitHub Environments.release.ymlviaworkflow_dispatch→ TestPyPI rehearsal; confirm OIDC + rendered page.v1.0.0, draft a GitHub Release, publish → PyPI.🤖 Generated with Claude Code