We use readthedocs to build the online documentation, and have separate versions for the master
and develop
branches:
https://gpflow.readthedocs.io/en/master/ (for the latest official release e.g. on PyPI) and
https://gpflow.readthedocs.io/en/develop/ (for the latest cutting-edge code available from the develop branch on github).
To compile the GPflow documentation locally:
-
Change to this directory (e.g.
cd doc
if you are in the GPflow git repository's base directory) -
Install doc dependencies
pip install sphinx sphinx_rtd_theme numpydoc nbsphinx sphinx_autodoc_typehints ipython jupytext jupyter_client ipywidgets
-
Install pandoc
pip install pandoc
If pandoc does not install via pip, or step 5 does not work, go to pandoc.org/installing.html (the PyPI package depends on the external system-wide installation of pandoc executables)
-
Generate auto-generated files
- Notebooks (.ipynb): run
make -C source/notebooks -j 4
(here with 4 parallel threads) - API documentation (.rst): run
python source/generate_module_rst.py
- Notebooks (.ipynb): run
-
Compile the documentation
make html
-
Check documentation locally by opening (in a browser) build/html/index.html
Upon each merge to the develop
branch, this repository's CircleCI configuration runs the trigger-docs-generation
step
which triggers a CircleCI build on the GPflow/docs repository.
This clones the latest GPflow develop branch and compiles all notebooks from jupytext to .ipynb
(setting the DOCS
environment variable so that notebook optimisations are run to convergence)
and runs the generate_module_rst.py
script as above to generate the .rst files for API documentation.
(This script is run on CircleCI, instead of ReadTheDocs, as it requires gpflow and hence tensorflow
and tensorflow_probability
to be installed, but TensorFlow is too large to be installed inside the ReadTheDocs docker images.)
ReadTheDocs then pulls in these auto-generated files as well as all other files within this doc/ directory to actually build the documentation using Sphinx.