Skip to content

Prepare the 0.3.0 release - #39

Open
davidliwei wants to merge 2 commits into
mainfrom
release/0.3.0
Open

Prepare the 0.3.0 release#39
davidliwei wants to merge 2 commits into
mainfrom
release/0.3.0

Conversation

@davidliwei

Copy link
Copy Markdown
Owner

Ten commits have landed since v0.2.0 (Jul 10), all user-facing, and none of them reachable except by installing from git — which is what we have been telling users to do in #15.

  • mageck2/version.py0.3.0 (single source; pyproject.toml reads it)
  • [Unreleased][0.3.0] - 2026-08-31, with a short note at the top of the section naming the two behavior changes

Two breaking changes, which is why this needs a version

Both previously ran to completion and produced output that did not reflect the option given. Neither should reach users as an unannounced change in a git checkout.

Also: stop the sdist carrying a compiled helper

data_files names rra/bin/RRA and gsea/bin/mageckGSEA, which setuptools pulls into the sdist. Building one locally from a tree where the tests had been run therefore shipped that platform's binaries — I hit this while rehearsing, and the tarball contained macOS builds.

The published 0.2.0 is unaffected: the release workflow builds from a fresh checkout where those paths hold only .gitkeep, and I confirmed the PyPI tarball has no binaries. make also relinks regardless, since the object files are not shipped. So this is a local-build hazard rather than a shipped bug — but excluding them makes python -m build locally reproduce what CI produces, which is what you want before tagging.

Release path rehearsed end to end

Not just the unit tests — the actual verify job's steps:

python -m build --sdist        -> mageck2-0.3.0.tar.gz
  no compiled binaries in the tarball, 11 C++ sources present
twine check                    -> PASSED
pip install <tarball>          -> exit 0, compiles RRA and mageckGSEA
mageck2 --version              -> 0.3.0
pytest <extracted>/tests       -> 49 passed

The extracted tree has no compiled helpers, so tests/conftest.py correctly falls back and the suite exercises the installed binaries — which is what a release gate should check.

Not done here

No tag and no GitHub Release. Publishing to PyPI is irreversible — a version number cannot be reused — so that step is yours to trigger once this merges.

Ten commits since 0.2.0, all user-facing, and none of them reachable
except by installing from git. Two change command-line behavior --
--pairguide auto is gone, and mle now refuses the disabled Bayes options
rather than ignoring them -- so they need a version number rather than
arriving silently in a checkout. Noted at the top of the section.

Also stop the sdist carrying a compiled helper. data_files names
rra/bin/RRA and gsea/bin/mageckGSEA, which setuptools pulls into the
sdist, so building one from a tree where the tests had been run shipped
that platform's binaries. The published 0.2.0 is unaffected -- the
release workflow builds from a never-compiled checkout -- and make
relinks regardless, since the object files are not shipped. Excluding
them makes a local `python -m build` reproduce what CI produces.

Rehearsed the release path end to end: sdist builds clean with no
binaries and the C++ sources intact, twine check passes, installing
strictly from the tarball into a fresh venv compiles the helpers,
mageck2 --version reports 0.3.0, and the 49 shipped tests pass against
the installed package.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Aug 31, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-01T01:38:34.239226Z 097afba Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 56c9a78957

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread CHANGELOG.md

## [Unreleased]

## [0.3.0] - 2026-08-31

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Add the 0.3.0 changelog comparison links

The new reference-style [0.3.0] heading has no corresponding link definition, and the existing [Unreleased] definition at the bottom still compares v0.2.0...HEAD. After the v0.3.0 tag is published, the release heading will not link to its changes and the Unreleased link will continue including the entire 0.3.0 release; add a v0.2.0...v0.3.0 definition and advance Unreleased to v0.3.0...HEAD.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Confirmed and fixed in 097afba — a genuine oversight, and both halves of it mattered.

[Unreleased]: .../compare/v0.3.0...HEAD      (was v0.2.0...HEAD)
[0.3.0]:      .../compare/v0.2.0...v0.3.0    (new)

Without the second line the heading would have rendered as literal [0.3.0] while every other version links to its diff; without the first, Unreleased would have kept reporting the entire 0.3.0 release as unreleased after the tag was cut — and that one would have quietly persisted into 0.4.0.

Verified every heading now resolves and no definition is orphaned:

Unreleased OK   0.3.0 OK   0.2.0 OK   0.1.0 OK   orphan definitions: none

Worth noting this is a class of defect the test suite cannot see at all — the release rehearsal I ran covers the sdist, the install, and the shipped tests, but nothing checks that CHANGELOG references resolve. Good catch.

The new heading is a reference-style link with no definition, so it
would render as literal text while every other version links to its
diff. Unreleased also still spanned v0.2.0...HEAD, which would have kept
reporting the whole 0.3.0 release as unreleased after the tag.

Reported by Codex review on #39.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@davidliwei

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Swish!

Reviewed commit: 097afbacd2

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant