docs: switch from Sphinx to MkDocs (Material), keep ReadTheDocs support - #118
Merged
Conversation
Mirrors the sibling repos (rhapsody, radical.asyncflow): mkdocs.yml at the repo root with the shared Material theme config, an auto-generated per-module API reference (gen-files + literate-nav + section-index + mkdocstrings), and an RTD build via the native `mkdocs:` config key installing the `docs` extra. - convert all .rst pages to Markdown under docs/ (flattened from docs/source) - module_radical.orbit.rst: prose becomes architecture.md; the automodule dump is replaced by the generated api/ tree - plugin_api / runtime_embedding: autodoc directives -> mkdocstrings blocks - tutorial literalinclude -> pymdownx.snippets section markers in plugin_math.py / test_plugin_math.py - remove all Sphinx remnants: conf.py, docs/Makefile, _themes/armstrong, _static css, toctree/genindex pages - docs/requirements.txt: mkdocs toolchain (same floors as rhapsody), with an explicit mkdocs<2.0 guard against the announced incompatible 2.0; setup.py's docs extra keeps mirroring it unchanged - fix docstring defects surfaced by griffe (return annotations on the queue_info listing methods, psij Raises format, param types) `mkdocs build --strict` is clean; 1028 unit tests pass. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QMEpfLjjPUzWaQWJeqt5xh
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.
Switches the documentation stack from Sphinx to MkDocs, mirroring the sibling repos (rhapsody, radical.asyncflow) so the three stay in sync on theme, config, and API-reference tooling.
What changed
markdown_extensionsset)..rstpages converted to Markdown underdocs/(flattened fromdocs/source/); the two existing.mdpages moved over.module_radical.orbit.rst→ prose kept asarchitecture.md; its automodule dump is replaced by the generatedapi/tree.plugin_api/runtime_embeddingautodoc directives → mkdocstrings:::blocks (same curated member selections).literalinclude :pyobject:→pymdownx.snippetssection markers inplugin_math.py/test_plugin_math.py, so the tutorial keeps rendering live source.docs/gen_ref_pages.py(gen-files + literate-nav + section-index + mkdocstrings), same pattern and options as rhapsody, flat underapi/, private_*modules skipped..readthedocs.yamlnow uses the nativemkdocs:build key and installspip install .[docs];setup.py'sdocsextra keeps mirroringdocs/requirements.txtunchanged, sopip install .[docs]/[dev]stay in sync.conf.py(2012 vintage),docs/Makefile, thearmstrongtheme,_staticCSS, toctree/genindex pages; repo-wide sweep found one stale reference (plugin_math.pydocstring), fixed.Raises:format, missing param types, one indentation fix. These make the rendered API pages parse correctly.Heads-up: MkDocs ecosystem upheaval (why the
<2.0pin)MkDocs 1.x is unmaintained and its PyPI ownership changed hands in March 2026; an incompatible "MkDocs 2.0" has been announced, and a former maintainer launched the drop-in fork ProperDocs (which the gen-files/literate-nav/section-index plugins now pull in as a dependency — expect it in the RTD build env). This PR deliberately stays on
mkdocs>=1.5.0,<2.0— the pin prevents a hostile/incompatible 2.0 from ever breaking the RTD build. Whether to migrate to ProperDocs later is an ecosystem-level call best made together with rhapsody/asyncflow (which have the same exposure and currently no upper bound — worth syncing the<2.0guard back to them). Context: Material's analysis, ProperDocs announcement, The Slow Collapse of MkDocs.Verification
mkdocs build --strict— clean, zero warnings (was 116 on the first pass; duplicate-anchor and docstring issues all resolved).PYTHONPATH=src pytest tests/unittests/ -q— 1028 passed, 3 environment skips (quickjs / radical.pilot, pre-existing).flake8clean on all touched files.Post-merge
.readthedocs.yamldrives the builder); the first RTD build after merge confirms the switch.docs/slides/untouched.🤖 Generated with Claude Code