Skip to content

chore: release 0.1.0rc1 - #708

Merged
FBumann merged 3 commits into
mainfrom
claude/release-0.1.0
Sep 25, 2026
Merged

FBumann merged 3 commits into
mainfrom
claude/release-0.1.0

Conversation

@FBumann

@FBumann FBumann commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

Prompt: 11: Yes, 0.1.0 But this should be a follow up. Oreoare it stacked!

Later: "Put a step by step todo list into 708. With checkboxes. With everything for the first pypi release". Then, after the question "Should we start with 0.0.1 as a test for the pipeline?": "Make it 0.1.0rc1, And fill in the date?"

Note

The following content was generated by AI.

This is the release PR for 0.1.0rc1, a release candidate that tests the pipeline on the first PyPI upload. pip skips it unless someone asks for it. "Upcoming version" becomes ## 0.1.0rc1 (2026-09-25). AGENTS.md's compatibility rule now covers every version before 1.0.

The first PyPI release, step by step

1. One-time setup, before this PR merges

Read the Docs

  • Add a new project on readthedocs.org: import energy-models/mathspec and name it mathspec. A slug cannot be renamed, so this is the only way to get mathspec.readthedocs.io.
  • Copy the settings you changed on math-spec to it: the default branch, "Build pull requests for this project", and the default version.
  • Check that https://mathspec.readthedocs.io serves the docs. The README, the PyPI page and site_url point there.
  • On the old math-spec project, go to Admin → Redirects and add an Exact redirect from /$rest to https://mathspec.readthedocs.io/, with Force redirect ticked.
  • On the old project, turn off PR builds, or remove its GitHub webhook, so a push is not built twice. Keep the project, because the redirect lives in it.

PyPI

  • On pypi.org, go to Account → Publishing → "Add a new pending publisher" → GitHub, and fill in:
    • PyPI project name: mathspec
    • Owner: energy-models
    • Repository name: mathspec
    • Workflow name: release.yml
    • Environment name: pypi

GitHub, under energy-models/mathspec Settings

  • Environments → New environment pypi. Under "Deployment branches and tags", choose "Selected branches and tags" and add main, so no other branch can publish. Add the people who may approve a release as required reviewers.
  • Rules → the main ruleset: require the checks CI, Conventional commit subject and Changelog line.
  • Issues → Labels: create no changelog.

Clean-up that the release does not need

2. This PR

  • Set the date in ## 0.1.0rc1 (2026-09-25) to the day you merge, if that is not the 25th.
  • Edit the notes under the heading. The text becomes the GitHub release notes, as written.
  • Check that CI is green. Its step "Check the changelog headings" prints releases 0.1.0rc1 on merge.
  • Review, then squash-merge.

3. After the merge

  • Actions → Release, the run for the merge commit:
    • Tag the version the changelog names created the tag v0.1.0rc1 and the GitHub release 0.1.0rc1, marked as a pre-release.
    • build passed.
    • Publish to PyPI waits for approval: "Review deployments" → pypi → Approve.
  • https://pypi.org/project/mathspec/0.1.0rc1/ exists. The README renders, and the Documentation, Repository, Issues and Changelog links work.
  • Smoke test in a fresh environment:
    python -m venv /tmp/ms && /tmp/ms/bin/pip install mathspec==0.1.0rc1
    /tmp/ms/bin/python -c "import mathspec; print(mathspec.__version__)"   # 0.1.0rc1
    /tmp/ms/bin/pip install mathspec   # finds no stable version until 0.1.0 exists
  • If a job failed, fix the cause, then use "Re-run failed jobs" on that run. If 0.1.0rc1 reached PyPI broken, release 0.1.0rc2.

4. Then 0.1.0

  • Open the next release PR, titled chore: release 0.1.0. It renames the next ## Upcoming version to ## 0.1.0 (date), with notes that say this is the first release on PyPI. Merge it and approve the upload as above.
  • Smoke test pip install mathspec without a version. It should install 0.1.0.

5. Follow-ups

What this PR changes, what merging does, gates

The changes:

Why a release candidate: it goes through the same tag, GitHub release, build, approval and trusted-publishing upload as 0.1.0, and adds only --prerelease to the GitHub release. pip skips it unless asked for, so a broken first upload reaches no user. The version sorts after 0.0.0a127 and before 0.1.0.

What merging does: release.yml finds 0.1.0rc1 with no tag. It creates v0.1.0rc1 and a GitHub pre-release, builds through build.yml, checks that the files are mathspec-0.1.0rc1, and waits for approval on pypi before the upload.

Gates:

  • python -m tools.changelog check: "releases 0.1.0rc1 on merge".
  • pixi run lint and pixi run test (1682 passed) pass.

The type is chore, which owes no changelog line. The branch keeps its name, claude/release-0.1.0.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Q8Y8AoPsJCyMsURHvgzm7h

@read-the-docs-community

Copy link
Copy Markdown

Documentation build overview

📚 mathspec | 🛠️ Build #34755191 | 📁 Comparing 78b888e against latest (f9c51b3)

  🔍 Preview build  

3 files changed
± changelog/index.html
± contributing/index.html
± howto/installation/index.html

@FBumann
FBumann added this pull request to stack #709 September 25, 2026 09:12
Base automatically changed from claude/pypi-page to main September 25, 2026 09:22
The changelog heads the release notes with 0.1.0, the first release on
PyPI. AGENTS.md's compatibility rule covers every version before 1.0
rather than the alpha stream, and a breaking release raises the minor.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q8Y8AoPsJCyMsURHvgzm7h
@FBumann
FBumann force-pushed the claude/release-0.1.0 branch from 78b888e to cefa8fb Compare September 25, 2026 09:22
@read-the-docs-community

read-the-docs-community Bot commented Sep 25, 2026 •

Copy link
Copy Markdown

Documentation build overview

📚 mathspec | 🛠️ Build #34756358 | 📁 Comparing 27d1c3d against latest (aeddd00)

  🔍 Preview build  

3 files changed
+ about/versions/index.html
± changelog/index.html
± reference/language/file/index.html

…the pipeline

pip skips a release candidate unless it is asked for, so a failure in the
first run of release.yml reaches no user. 0.1.0 follows in its own
release PR.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q8Y8AoPsJCyMsURHvgzm7h
@FBumann FBumann changed the title chore: release 0.1.0 chore: release 0.1.0rc1 Sep 25, 2026
@FBumann
FBumann removed this pull request from stack #709 September 25, 2026 10:27
#711's changelog line moves into the 0.1.0rc1 notes, which release it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q8Y8AoPsJCyMsURHvgzm7h
@FBumann
FBumann merged commit d74262c into main Sep 25, 2026
5 checks passed
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.

2 participants