[Doc] Add navbar machinery #3
Merged
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.
Why are these changes needed?
This PR adds the machinery needed to build the top navigation bar.
The
.htmlfiles are templates, and they are specified in the appropriate place inconf.pyfor the theme to pick them up.The links in the top navigation bar can be specified in
navbar.yml, which has a simple syntax that can be easily modified in the future. Here's how this works:conf.py, the contents ofnavbar.ymlare parsed and added as a dict to the build context when theconfig-initedevent is emitted.render_header_nav_linksfunction is inserted into the build context before the html is rendered, when thehtml-page-contextevent is emitted.render_header_nav_links, which actually generates the HTML for the links in the nav bar for each page. This uses the contents ofnavbar.ymlthat were inserted into the build context previously to dynamically generate links to various docs pages.Note that this doesn't need any scripts to run to render the top navigation bar like Ray currently does. The HTML needed is generated during the build step, and makes use of Sphinx's templating system to make this work. The benefits of this approach:
top-navigation.jsscript, avoiding a rendering update on page load. This script will be removed in a different PR.Related issue number
Partially addresses ray-project#37944.
Depends on #2.
PR 2/x targeting ray-project#41115.
Checks
git commit -s) in this PR.scripts/format.shto lint the changes in this PR.method in Tune, I've added it in
doc/source/tune/api/under thecorresponding
.rstfile.