Sphinx theme for PyTorch-Lightning Docs based on the Read the Docs Sphinx Theme.
This theme requires running both python commands and javascript (npm) commands.
conda activate my-pl-envFirst, install all the docs deps for lightning
cd /path/to/pytorch-lightning
# install the docs requirements
git submodule update --init --recursive
pip install -r requirements/docs.txtSetup the lightning_sphinx_theme
cd /path/to/lightning_sphinx_theme
# install project
python setup.py install
# install deps
pip install -r docs/requirements.txtIf you're on a mac with conda, and you get this error:
>> Pandoc wasn't found.
>> Please check that pandoc is installed:
>> https://pandoc.org/installing.html
>> Exited with code: 2.
then try the following command (from this answer)
pip uninstall pandoc
conda install pandocFirst, install the things in package.json
# run yarn install (uses `package.json`)
# you need node version 8.4.0
yarn installFor good measure, make sure your npm and ruby paths are in your .bashrc or .zshrc
# ruby
export PATH="/usr/local/opt/ruby/bin:$PATH"
# add npm
export PATH=/usr/local/share/npm/bin:$PATHMake sure grunt works (we use grunt to see changes in real-time... ie: hot-reload)
gruntInstall a few npm packages
# provides hot reload for dev
sudo npm install -g grunt-cli
# ?
sudo npm install -g sassCreate an .env.json file that connects this theme to the lightning docs.
cd path/to/lightning_sphinx_theme
touch .env.jsonNow copy paste the following into the .env.json
{
"DOCS_DIR": "path/to/pytorch_lightning/docs/source/"
}Run the docs this way
grunt --project=docs
When developing the docs, building docs can be VERY slow locally because of the notebook tutorials. To speed this up, enable this flag in before building docs:
# builds notebooks which is slow
export PL_FAST_DOCS_DEV=0
# fast notebook build which is fast
export PL_FAST_DOCS_DEV=1The lightning_sphinx_theme repo has a "demo" project (not lightning docs) that show you the styles very quickly.
First add the following entry to .env.json.
{
"DOCS_DIR": "path/to/pytorch_lightning/docs/source/",
"TUTORIALS_DIR": "path/to/tutorial/directory/docs"
}and now build the "demo" docs with this command
grunt --project=tutorialsThe resulting site is the lightning docs with the ability to change the styles.
When you are ready to submit a PR with your changes you can first test that your changes have been applied correctly against either the PyTorch Docs or Tutorials repo:
- Run the
grunt buildtask on your branch and commit the build to Github. - In your local docs or tutorials repo, remove any existing
pt_lightning_sphinx_themepackages in thesrcfolder (there should be apip-delete-this-directory.txtfile there) - In
requirements.txtreplace the existing git link with a link pointing to your commit or branch, e.g.-e git+git://github.com/{ your repo }/lightning_sphinx_theme.git@{ your commit hash }#egg=pt_lightning_sphinx_theme - Install the requirements
pip install -r requirements.txt - Remove the current build. In the docs this is
make clean, tutorials ismake clean-cache - Build the static site. In the docs this is
make html, tutorials ismake html-noplot - Open the site and look around. In the docs open
docs/build/html/index.html, in the tutorials open_build/html.index.html
If your changes have been applied successfully, remove the build commit from your branch and submit your PR.
Before the new changes are visible in the theme the maintainer will need to run the build process:
grunt buildOnce that is successful commit the change to Github.
To be able to modify and preview the theme locally against the PyTorch Lightning Docs and/or the PyTorch Lightning Tutorials first clone the repositories:
Then follow the instructions in each repository to make the docs.
Once the docs have been successfully generated you should be able to run the following to create an html build.
# in ./docs
make html# root directory
make htmlOnce these are successful, navigate to the conf.py file in each project. In the Docs these are at ./docs/source. The Tutorials one can be found in the root directory.
In conf.py change the html theme to pt_lightning_sphinx_theme and point the html theme path to this repo's local folder, which will end up looking something like:
html_theme = "pt_lightning_sphinx_theme"
html_theme_path = ["../../../lightning_sphinx_theme"]Next create a file .env.json in the root of the THEME repo with some keys/values referencing the local folders of the Docs and Tutorials repos:
{
"TUTORIALS_DIR": "../tutorials",
"DOCS_DIR": "../pytorch_lightning/docs/source"
}
You can then build the Docs or Tutorials by running
grunt --project=docsor
grunt --project=tutorialsThese will generate a live-reloaded local build for the respective projects available at localhost:1919.
Note that while live reloading works these two projects are hefty and will take a few seconds to build and reload, especially the Docs.
There are a couple of stylesheets and fonts inside the Docs and Tutorials repos themselves meant to override the existing theme. To ensure the most accurate styles we should comment out those files until the maintainers of those repos remove them:
# ./docs/source/conf.py
html_context = {
# 'css_files': [
# 'https://fonts.googleapis.com/css?family=Lato',
# '_static/css/pytorch_theme.css'
# ],
}# ./conf.py
app = ...
app.add_stylesheet("css/pytorch_theme.css")
app.add_stylesheet("https://fonts.googleapis.com/css?family=Lato")The top navigation and mobile menu expect an "active" state for one of the menu items. To ensure that either "Docs" or "Tutorials" is marked as active, set the following config value in the respective conf.py, where {project} is either "docs" or "tutorials".
html_theme_options = {
# ...
"pytorch_project": "project-name",
# ...
}