Add hybrid mkpages and Sphinx docs build for Pages - #98
Conversation
Benchmark ComparisonNo benchmark exceeded the +3.00% and +0.005s regression thresholds. pyseq benchmark comparisonBaseline:
|
There was a problem hiding this comment.
Pull request overview
Migrates the project’s documentation publishing pipeline to generate a mkpages static site and merge in Sphinx-built API reference output for GitHub Pages, replacing the previous Jekyll-oriented custom site builder.
Changes:
- Replaces the old docs staging/build script with a new
mkpagesstaging script and updates the Pages workflow to buildmkpagesoutput + Sphinx API docs and publishobjects.inv. - Adds a minimal Sphinx project for API docs (including custom CSS) and wires the output into the published site under
/api/. - Updates docs navigation and links to point at the generated API reference, and adds a
docsoptional dependency group for Sphinx.
Reviewed changes
Copilot reviewed 13 out of 14 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
.github/workflows/publish-docs.yml |
Builds docs for all branches, stages mkpages site, builds Sphinx API docs, merges outputs, uploads artifacts, deploys Pages from main/master only. |
.gitignore |
Ignores mkpages build output directory. |
docs/README.md |
Adds a link to the generated Sphinx API reference. |
docs/examples.md |
Adds a link to the generated Sphinx API reference. |
docs/index.md |
Adjusts home page links to include API reference and updates docs overview link. |
docs/mkpages.yml |
New mkpages navigation configuration including API link. |
lib/pyseq/seq.py |
Minor docstring formatting tweaks. |
pyproject.toml |
Restructures optional dependency declarations and adds docs extras for Sphinx. |
scripts/build_pages_site.py |
Removes the old Jekyll-focused site builder script. |
scripts/stage_mkpages_site.py |
New script to stage repository docs/assets into mkpages-friendly layout and embed benchmark artifacts. |
sphinx/api/index.rst |
New API reference page using automodule. |
sphinx/conf.py |
New minimal Sphinx configuration for API docs/inventory generation. |
sphinx/index.rst |
New Sphinx root index and toctree. |
sphinx/_static/custom.css |
Adds custom Sphinx styling for the API reference pages. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
This pull request overhauls the documentation publishing workflow to use the
mkpagesstatic site generator and Sphinx for API docs, replacing the previous custom Jekyll-focused scripts. It also updates the documentation navigation and packaging to better support the new build system and clarify how to access the generated API reference.The most important changes are:
Documentation Build System Migration:
.github/workflows/publish-docs.ymlnow builds documentation for all branches, usesmkpagesfor static site generation, and integrates Sphinx-generated API docs into the published site. The workflow also uploads downloadable site artifacts for all branches and only deploys to GitHub Pages frommainormaster. [1] [2]scripts/build_pages_site.pyis removed and replaced byscripts/stage_mkpages_site.py, which stages markdown docs and assets in a structure expected bymkpagesand handles benchmark artifacts. [1] [2]Docs Content and Navigation Updates:
docs/mkpages.ymlnavigation file to define sidebar and top-level navigation for themkpagessite, including direct links to the API reference.docs/README.md,docs/examples.md,docs/index.md) to link to the new Sphinx-generated API reference at/api/and adjusts navigation links for the new site structure. [1] [2] [3]docs/index.mdfor improved site appearance.Packaging Improvements:
pyproject.tomlto add adocsoptional dependency group for Sphinx, and restructures the optional dependencies section for clarity and maintainability.Minor Docstring Cleanups:
lib/pyseq/seq.pyfor consistency. [1] [2]