Skip to content

1.1.0 re-cut: Read the Docs build, README tour, American spelling - #288

Merged
jeremymanning merged 8 commits into
masterfrom
release/1.1.0-recut
Oct 10, 2026
Merged

jeremymanning merged 8 commits into
masterfrom
release/1.1.0-recut

Conversation

@jeremymanning

@jeremymanning jeremymanning commented Oct 10, 2026 •

Copy link
Copy Markdown
Member

Follow-up to #286 for the 1.1.0 re-cut. master fast-forwards to this branch's head once CI is green here.

What changed

  • Read the Docs build. Read the Docs builds of 1.1 timed out: executing the 51 gallery examples takes about 25 minutes and the build limit is 15. The release pipeline now publishes the gallery it builds to a docs-gallery-v<version> branch (scripts/publish_prebuilt_gallery.py) and records that commit's id in docs/prebuilt_gallery.json. The Read the Docs build fetches exactly that commit before Sphinx runs (docs/fetch_prebuilt_gallery.py), and sphinx-gallery skips every example whose source is unchanged. The fetch accepts only a full commit id recorded for the current version that the gallery branch still points at, so overwriting the branch cannot change what a build reads. A new release gate checks the record, and scripts/rehearse_prebuilt_gallery.sh rehearses the whole hand-off against a local remote.
  • Gallery warnings. A warning an example raises is shown on its gallery page with the example's repository path instead of the build machine's absolute path.
  • README. The 1.0 and 1.1 "What's new" sections are one short section that links the changelog, and a new "A quick tour" section shows five animated examples with links to their tutorials.
  • Spelling. User-facing text uses American English: changelog, README, docs pages, docstrings, messages, example scripts and tutorial text. Identifiers and quoted literals are unchanged. Two tutorials were re-executed because a figure title or printed line changed.
  • CI. The release-gate job installs nbformat and nbclient, which four tests in its gate file import (f746289, already on master).

Verification at cf76a931

Check Result
Read the Docs build of this PR Succeeded in 6 minutes: fetched the recorded gallery, "51 of 51 examples are current", 0 examples executed, 0 warnings
Hosted CI All 16 jobs green on the release code (run 38024207315); release-gate runs on master
Release gates, run locally with the release flag 25 passed; 24 passed and 1 skipped in the release-gate job's own environment
Full local suite 6778 passed and 1 failed at the first commit: a docs test expected the heading "Fitted model behaviour", and its expected text now matches the renamed heading. Later commits were checked with the changed test files and by hosted CI
Python 3.10 The changed test files pass under 3.10 locally; an earlier commit failed there on a tomllib import, now removed
ruff clean

🤖 Generated with Claude Code

jeremymanning and others added 8 commits October 9, 2026 21:50
…an spelling

Read the Docs
- Its builds of 1.1 ended with "Build terminated due to time out": executing
  the 51 gallery examples takes about 25 minutes and the limit is 15.
  scripts/publish_prebuilt_gallery.py publishes the gallery the release
  pipeline builds to the docs-gallery-v<version> branch (one orphan commit,
  replaced on republish), and docs/fetch_prebuilt_gallery.py, run from
  .readthedocs.yaml pre_build, puts it in docs/auto_examples. sphinx-gallery
  then skips every example whose source md5 is unchanged. Measured in a
  fresh clone with the Read the Docs recipe: 38 s, 0 warnings, output
  identical to the cold build apart from the two download zips and the
  execution-times page.
- New release gate: the published manifest must name the release commit and
  the md5 of every example in the checkout.
- A warning an example raises is printed on its gallery page with the
  example's repository path (examples/plot_impute.py:43), not the build
  machine's absolute path. The publisher refuses a gallery that names the
  checkout path.

README
- "What's new in 1.1" and "What's new in 1.0" become one short section that
  points at the changelog.
- "A quick tour": the five launch clips as GIFs (images/tour_*.gif, 15-20
  fps), each with a short description and a link to its tutorial.

Spelling
- American English in user-facing text: changelog, README, checklist,
  release notes, docs pages, docstrings, comments, messages, example
  scripts and tutorial text. Identifiers, quoted literals, vendored code
  and quoted source text are unchanged. docs/tutorials/io.ipynb and
  pipelines.ipynb were re-executed because a figure title or a printed line
  changed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A symlink in the published gallery, or a page that includes a path outside
auto_examples, would make the Read the Docs build copy a file from the build
machine into the published site. The fetch step now rejects such a tree and
lets sphinx execute the examples; the publisher applies the same check.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…it id

Fetching the gallery by branch name let whoever overwrites that branch decide
what a docs build reads, and scanning the fetched pages for file-reading
directives could not be made complete. The publisher now writes the gallery
commit's id to docs/prebuilt_gallery.json, and the fetch step fetches exactly
that commit and accepts only a full commit id recorded for the current
version. A commit id is a hash of the content, so a build uses the tree its
own checkout recorded or none. The page scanner is removed; the regular-files
check stays. The release gate checks the record, the branch head, that only
the record changed since the gallery was built, and the example md5s.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The host serves commits other than the gallery branch's (another branch, a
fork's pull request), so a record could have named one of those. The fetch
step now also requires the recorded commit to be what docs-gallery-v<version>
points at, and the gallery's manifest to name the record's version and source
commit. The module docstring states what is not checked: the pages
themselves, since whoever can change the record can change docs/conf.py.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d-off

- test_project_version imported tomllib, which Python 3.10 does not have; it
  now compares against hypertools.__version__. The changed test files were
  run under Python 3.10.
- scripts/rehearse_prebuilt_gallery.sh runs the publish, record, commit,
  fetch and Read the Docs recipe build against a local bare remote, then
  overwrites the branch and confirms the fetch refuses it. The checklist runs
  it before anything is published.
- docs requirements: sphinx-gallery >= 0.22.1, the version Read the Docs
  installs, so the published gallery is built by the version that reads it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Built from 553c392; fetched by commit id in the Read the Docs build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The record commit landed after midnight, and the changelog gate requires the
heading to be no earlier than the release commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Built from 3916376; fetched by commit id in the Read the Docs build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@jeremymanning
jeremymanning merged commit cf76a93 into master Oct 10, 2026
18 checks passed
@jeremymanning
jeremymanning deleted the release/1.1.0-recut branch October 10, 2026 19:11
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