Skip to content

Release 1.0.0 #37

Description

@micheltlutz

Ship 1.0.0 to PyPI.

Today's release process is manual twine — twine is listed in requirements.txt and there is no release workflow at all. The last release was 0.1.0 in 2023.

Scope

.github/workflows/release.yml, triggered on tag v*.*.*, ported from Winged-Swift/.github/workflows/release.yml:

  1. Build sdist and wheel with python -m build.
  2. Run the full test suite and verify.sh against the built artifact, not the source tree.
  3. Extract the version's section from CHANGELOG.md — Swift does this with sed -n "/## \[$VERSION\]/,/## \[/p" — and use it as the release body.
  4. Publish the GitHub release with the artifacts attached.
  5. Upload to PyPI via trusted publishing (OIDC, pypa/gh-action-pypi-publish). No long-lived API token in repository secrets.

Pre-release checklist

  • CHANGELOG.md has a complete [1.0.0] section, assembled from the phases
  • MIGRATION.md and PORTING.md are current
  • The golden fixtures (Golden-file tests against the Swift fixtures #32) pass — parity is demonstrated, not asserted
  • README.md examples match installed behaviour, and every output block is real output
  • Version appears in exactly one place (pyproject.toml), with winged.__version__ read from distribution metadata (dsl: top-level winged exports and prelude #21)
  • A TestPyPI dry run installs cleanly into a fresh venv on 3.10 and 3.14
  • The PyPI project page renders the README without warnings (twine check)
  • Trusted publishing is configured on PyPI for this repository before the tag is pushed

Acceptance criteria

  • git tag v1.0.0 && git push --tags produces a GitHub release and a PyPI release with no manual step
  • pip install winged-python==1.0.0 in a clean venv, then the README's first example, renders correctly
  • The wheel contains winged/py.typed and mypy sees types for a consumer
  • No PyPI token exists in repository secrets

Depends on #32, #33, #34, #35, #36.

Activity

  1. added this to the 1.0.0 milestone on Sep 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    releasePackaging, publishing, release process

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions