Port RAPIDS docs from Jekyll to NVIDIA Sphinx theme#807
Conversation
Signed-off-by: Bradley Dice <bdice@bradleydice.com>
Signed-off-by: Bradley Dice <bdice@bradleydice.com>
Signed-off-by: Bradley Dice <bdice@bradleydice.com>
✅ Deploy Preview for docs-rapids-ai ready!Built without sensitive environment variables
To edit notification comments on pull requests, go to your Netlify project configuration. |
Signed-off-by: Bradley Dice <bdice@bradleydice.com>
Signed-off-by: Bradley Dice <bdice@bradleydice.com>
Signed-off-by: Bradley Dice <bdice@bradleydice.com>
Restore development support and minimize migration diff
Signed-off-by: Bradley Dice <bdice@bradleydice.com>
|
/ok to test 0531a34 |
Signed-off-by: Bradley Dice <bdice@bradleydice.com>
Signed-off-by: Bradley Dice <bdice@bradleydice.com>
|
/ok to test ad33396 |
Signed-off-by: Bradley Dice <bdice@bradleydice.com>
|
/ok to test 61cb205 |
Signed-off-by: Bradley Dice <bdice@bradleydice.com>
Signed-off-by: Bradley Dice <bdice@bradleydice.com>
|
/ok to test 32fa1c9 |
Signed-off-by: Bradley Dice <bdice@bradleydice.com>
Keep portal content at repository root
Signed-off-by: Bradley Dice <bdice@bradleydice.com>
|
/ok to test 6166ae2 |
Signed-off-by: Bradley Dice <bdice@bradleydice.com>
|
/ok to test c1e649e |
Signed-off-by: Bradley Dice <bdice@bradleydice.com>
Signed-off-by: Bradley Dice <bdice@bradleydice.com>
Signed-off-by: Bradley Dice <bdice@bradleydice.com>
Refine install selector spacing
Split RAPIDS docs extension into modules
Restore notice status labels
https://github.com/rapidsai/cuxfilter is now archived and the 26.06 release is done. The RSN about archiving `cuxfilter` can be marked complete. Authors: - James Lamb (https://github.com/jameslamb) Approvers: - Bradley Dice (https://github.com/bdice) URL: rapidsai#808 (cherry picked from commit ff3968c) Signed-off-by: Bradley Dice <bdice@bradleydice.com>
Contributes to rapidsai/build-planning#291 * moves `cuxfilter` to the "inactive projects' section of the API docs * removes references encouraging its use Authors: - James Lamb (https://github.com/jameslamb) Approvers: - Bradley Dice (https://github.com/bdice) URL: rapidsai#809 (cherry picked from commit 922b693) Signed-off-by: Bradley Dice <bdice@bradleydice.com>
## Summary - Removes TensorFlow from the install selector's **Additional Packages** options and deletes obsolete compatibility notes. - Allows PyTorch to be selected with CUDA 13. I validated that current official PyTorch wheels and conda-forge packages support CUDA 13. Authors: - Bradley Dice (https://github.com/bdice) Approvers: - James Lamb (https://github.com/jameslamb) URL: rapidsai#811 (cherry picked from commit 792777e) Signed-off-by: Bradley Dice <bdice@bradleydice.com>
Sync changes from the Jekyll site
Signed-off-by: Bradley Dice <bdice@bradleydice.com>
|
Thanks for putting this migration together. I checked out the branch and ran the local validation successfully:
I found two link regressions that the current validator does not catch:
One CI follow-up: the current head ( |
Signed-off-by: Mike McCarty <mmccarty@nvidia.com>
jameslamb
left a comment
There was a problem hiding this comment.
This PR is way too large to review thoroughly and I know it was mostly AI-generated, so I'm treating the PR as a request like "trust me". I do trust you and that you've done some local testing, so I'm clicking "Approve" so you have what you minimally need to merge this. I support the overall intent (switching from a Jekyll site to a Sphinx one to make using the NVIDIA Sphinx theme easier).
More notes below.
Reviewing the intent
If I understand it, the reason for this goes like this:
- we want to (have to?) move to the NVIDIA theme
- that is published as a Sphinx theme via a Python package, so it's convenient (required?) to switch from a Jekyll site to one built with Sphinx
If I'm right about that, then totally supportive of making the switch in general. It'd help maintainability too... there are many more folks in RAPIDS who are knowledgeable about Python / Sphinx than there are who can help with Ruby / Jekyll.
Reviewing the code
I did a review pass and noted some things that I think should be addressed before merging, but based on clicking around the preview it does look like the site content and look and feel are working. API docs still do not work in the preview (#680) so we'll have to merge this and do a real deployment to be sure the changes to the post-processing are working, but your local testing makes me confident that this is at least close.
IMO this diff didn't have to be this large.
Any of these would have been quick approvals, could have been merged independently, and would have shrunk the diff here:
- deleting unused files like
_draftsand_includes/gpu-labels-table* - moving
_notices/*tonotices/ - adding
pyproject.tomlwithruffrules and reformatting existing files based on those rules - updates to copyright dates on otherwise-unchanged files
- minor formatting changes like removing the unnecessary
**in section headers ininstall/index.md
But we're here now and I've reviewed them, so fine to just leave them all in.
| name = "rapids-docs" | ||
| version = "0.1.0" | ||
| description = "NVIDIA RAPIDS documentation portal" | ||
| requires-python = ">=3.12" |
There was a problem hiding this comment.
| requires-python = ">=3.12" | |
| requires-python = ">=3.14" |
Since .python-version points to 3.14 and other files like the uv.lock match that, let's just make this >=3.14. This is an application, not a library, it only needs to support a single Python version at a time and we might as well make it a new one.
| "pre-commit>=4.2.0", | ||
| "pytest>=8.4.0", | ||
| "ruff>=0.12.0", | ||
| ] |
There was a problem hiding this comment.
| ] |
As far as I can tell, this dev group has no purpose. I don't see it used anywhere. Let's remove it and the need to ever think about updating it.
|
|
||
| [tool.ruff] | ||
| line-length = 100 | ||
| target-version = "py312" |
There was a problem hiding this comment.
| target-version = "py312" | |
| target-version = "py314" |
| - Portal content, data, includes, and assets retain their established paths at | ||
| the repository root. |
There was a problem hiding this comment.
| - Portal content, data, includes, and assets retain their established paths at | |
| the repository root. |
This is the type of thing an LLM likes to write at the end of making a change for you but has no place in these docs. If I just git clone'd this repo to work on it, what does it even mean to me that these directories "retain their established paths"?
Remove this, and please do a pass of review yourself for similar LLM artifacts, if you haven't already.
| - Portal content, data, includes, and assets retain their established paths at | ||
| the repository root. | ||
| - `sphinx/` contains the Sphinx configuration, templates, and theme overrides. | ||
| - `extensions/` contains the portal's data-rendering and publication extension. |
There was a problem hiding this comment.
| - `extensions/` contains the portal's data-rendering and publication extension. | |
| - `extensions/` contain custom code extending Sphinx in this-project-specific ways |
This statement as written doesn't really make sense to me (e.g. what is the "publication" extension? We're using the third-party Netlify service to publish.) and anyway is likely to become outdated as code in extensions/ changes. Recommending a more future-proof description here.
|
|
||
| def customize_manifest_file(filepath: str) -> None: | ||
| """Customizes one HTML file from the generated manifest.""" | ||
| if Path(filepath).parts[-2:] == ("api", "index.html"): |
There was a problem hiding this comment.
| if Path(filepath).parts[-2:] == ("api", "index.html"): | |
| # the top-level file for the entire API docs page is known not to be one-library-specific, | |
| # can skip processing it | |
| if Path(filepath).parts[-2:] == ("api", "index.html"): |
Is this comment accurate? If so can you please add it?
This addition looked pretty strange to me and it took me a bit to figure out why it was added.
|
|
||
| CURRENT_DIR=$(dirname $(realpath $0)) | ||
|
|
||
| pip install -r "${CURRENT_DIR}/customization/requirements.txt" |
There was a problem hiding this comment.
If we're not going to need this requirements.txt file any more then this PR should delete it, please.
| # SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. | ||
| # SPDX-License-Identifier: Apache-2.0 | ||
|
|
||
| """One-time content migration from the pinned RAPIDS Jekyll snapshot.""" |
There was a problem hiding this comment.
Does this really need to live in the repo? It looks to me like maybe it was an artifact of the development process you used to create this branch.
| project = "NVIDIA RAPIDS Documentation" | ||
| html_title = project | ||
| author = "NVIDIA" | ||
| copyright = f"{datetime.date.today().year}, NVIDIA" |
There was a problem hiding this comment.
| copyright = f"{datetime.date.today().year}, NVIDIA" | |
| copyright = f"2019-{datetime.date.today().year}, NVIDIA" |
This is the copyright date for the entire docs site, not just the conf.py file, isn't it? Some of the files date back to 2019, so I think we should have a a range beginning in 2019 here.
| _site/ | ||
| _sass/ | ||
| .sass-cache/ | ||
| -P/ | ||
| .vscode | ||
| lib_map.json | ||
| .DS_Store | ||
| files-to-customize.txt | ||
| .jekyll-cache | ||
| .jekyll-metadata | ||
| .netlify |
There was a problem hiding this comment.
Why are all of these entries being deleted?
I strongly suspect you didn't do this part manually, because I doubt we now suddenly do want to check into source control things like .DS_Store files created by someone opening the project on a Mac.
Can you please do a manual pass review pass over these?

Summary
uvenvironment and add Netlify previews for copied pull request branchesValidation
pre-commit run --all-filespytest(3 tests passed)dirhtmlbuild with warnings treated as errors (129 sources)The S3-backed full-site assembly and Netlify preview run in the upstream deploy workflow after the copy-PR bot creates the
pull-request/<number>branch.