docs/conf.py: Active sphinx_selective_exclude extensions.

For modindex_exclude extension, per-port module excludes are also added.
With these changes, it's possible to generate docs for a particular port
devoid of any superfluous and unrelated content, including in indexes and
full-text search - with small caveat: when generating PDF docs after HTML,
or vice-versa cached internal doctree representation (build/*/doctrees/)
must be removed first.
This commit is contained in:
Paul Sokolovsky 2016-06-12 01:18:13 +03:00
parent f6d01b8b67
commit 91031b60dc

View File

@ -19,7 +19,7 @@ import os
# If extensions (or modules to document with autodoc) are in another directory, # If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the # add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here. # documentation root, use os.path.abspath to make it absolute, like shown here.
#sys.path.insert(0, os.path.abspath('.')) sys.path.insert(0, os.path.abspath('.'))
# Work out the port to generate the docs for # Work out the port to generate the docs for
from collections import OrderedDict from collections import OrderedDict
@ -71,6 +71,9 @@ extensions = [
'sphinx.ext.intersphinx', 'sphinx.ext.intersphinx',
'sphinx.ext.todo', 'sphinx.ext.todo',
'sphinx.ext.coverage', 'sphinx.ext.coverage',
'sphinx_selective_exclude.modindex_exclude',
'sphinx_selective_exclude.eager_only',
'sphinx_selective_exclude.search_auto_exclude',
] ]
# Add any paths that contain templates here, relative to this directory. # Add any paths that contain templates here, relative to this directory.
@ -316,6 +319,20 @@ intersphinx_mapping = {'http://docs.python.org/': None}
# Append the other ports' specific folders/files to the exclude pattern # Append the other ports' specific folders/files to the exclude pattern
exclude_patterns.extend([port + '*' for port in ports if port != micropy_port]) exclude_patterns.extend([port + '*' for port in ports if port != micropy_port])
# Exclude pyb module if the port is the WiPy
if micropy_port == 'wipy': modules_port_specific = {
exclude_patterns.append('library/pyb*') 'pyboard': ['pyb'],
'wipy': ['wipy'],
'esp8266': ['esp'],
}
modindex_exclude = []
for p, l in modules_port_specific.items():
if p != micropy_port:
modindex_exclude += l
# Exclude extra modules per port
modindex_exclude += {
'esp8266': ['cmath', 'select'],
}.get(micropy_port, [])