The Release workflow builds the source distribution and builds and tests
the Linux, macOS, and Windows wheel matrix. Unless it's a dry-run (see below),
it also merges and tags the release PR, creates a GitHub release, and uploads
the distributions to PyPI.
Two ways of building and testing release wheels without permanent publishing:
- Add the
release-dry-runlabel to a PR targetingmaster,ci, or a release branch. The label stays in effect for later commits to that PR. It also works for PRs from forks and is useful to test changes to the release workflow itself or to test build targets that are not tested by regular PR CI. - On GitHub, open Actions > Release > Run workflow, then select a
repository branch, including
master. Manual runs are always dry runs. GitHub shows the Run workflow button once this workflow is on the default branch.
You can then find the dist artifact under Artifacts on the workflow run
page. The wheels are built and tested by cibuildwheel.
Update
__version__inhttptools/_version.pyand prepare the release changelog..github/release_log.pycan help gather changes since the previous release tag:$ uv run --no-project --with requests \ .github/release_log.py <previously-released-version-tag>Open a PR to
masterwith the version change and release notes in its body. Without the dry-run label, theReleaseworkflow builds the distributions and tests the wheels. Check the build results, then have a Release Manager approve the pendingpypideployment using Review deployments on the workflow run.After deployment approval, the workflow merges the PR, signs a tag on the merge commit, creates the GitHub release, and uploads the distributions to PyPI. Check these outputs after it finishes, then edit the GitHub release notes as needed.
Open
masterfor development by updatinghttptools/_version.pyto the next development version with a.dev0suffix.