DOC: Correct the release process guide - #2511
Open
varunj-msft wants to merge 1 commit into
Open
Conversation
The guide told releasers to set the version in `pyrit/__init__.py`, but that file has held no `__version__` literal since the lazy export change; the value now lives in `pyrit/_version.py`. Following the guide verbatim publishes a wheel whose runtime version still reports the development suffix while the packaging metadata reports the release version. Step 4 now lists every file that carries the version, warns about dependency versions that resemble it, and shows how to confirm no development suffix survives. The version choice section still described the pre-1.0 scheme. It now states that a release takes the next minor version and that the patch version is reserved for fixes to an existing release. The guide asked for passing integration, end-to-end and partner tests on the version being released without saying how to get them. Those pipelines all declare `trigger: none` and schedule only `main`, so cutting a release branch produces no run at all, and an absent result reads like a passing one. The validation step now says to queue each one manually against the release branch. Internal deployment steps are collected into their own section. That section records that a production deployment restarts the application and clears its in-memory state, so onboarded targets are lost and an unannounced run can interrupt work in progress, and asks the releaser to settle who queues the deployment rather than assuming it falls to either side. It names the pipeline definition, separates the reason for each precondition, and closes on a recorded deployed commit, because the image is built from a commit rather than from the published package and so cannot be checked against the tag. The step that verifies the built wheel could not fail. It unset `PYTHONPATH` but was still run from inside the checkout, and `python -c` puts the current directory on `sys.path`, so it imported the working tree and reported the working tree's version. It now runs from outside the repository. Other corrections: remove stale `dist/` artifacts before building, verify the installed version without the repository shadowing it, upload to PyPI by filename rather than by wildcard, search for the skipped notebook lists rather than relying on a filename pattern or a remembered count, use `origin` when fetching before a cherry-pick, stop moving the tag once the version is published, and stop suggesting a wildcard upload from the packaging script.
Behnam (behnam-o)
approved these changes
Aug 28, 2026
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.
Description
Follow-up to #2510, which should merge first: the step 5 instruction to confirm GitHub Actions checks on the release branch is only true once those triggers are fixed.
The guide told releasers to set the version in
pyrit/__init__.py, but that file has held no__version__literal since the lazy export change; the value now lives inpyrit/_version.py. Following the guide verbatim publishes a wheel whose runtime version still reports the development suffix while the packaging metadata reports the release version. Step 4 now lists every file that carries the version, warns about dependency versions that resemble it, and shows how to confirm no development suffix survives.The rest of the corrections come from walking the process end to end:
trigger: noneand schedule onlymain, so cutting a release branch produces no run at all, and an absent result reads like a passing one. The validation step now says to queue each one manually against the release branch.PYTHONPATHbut still ran from inside the checkout, andpython -cputs the current directory onsys.path, so it imported the working tree and reported the working tree's version rather than the wheel's. It now runs from outside the repository.Smaller fixes: remove stale
dist/artifacts before building, upload to PyPI by explicit filename rather than by wildcard, search for the skipped notebook lists rather than relying on a remembered count, useoriginwhen fetching before a cherry-pick, and stop moving the tag once the version is published.Tests and Documentation
Documentation only, plus the printed next-step text in
build_scripts/prepare_package.pyand a comment correction in.github/docs-versions.yml.python -m build_scripts.validate_docspasses andpytest tests/unit/build_scripts/passes 266 tests.No notebooks are affected, so JupyText was not run.