From ec5e65eaf097d7b6cf265ba636b2929079caa47f Mon Sep 17 00:00:00 2001 From: David Bremner Date: Sat, 11 Jul 2020 19:46:21 -0300 Subject: [PATCH] doc: set up for autoapi / readthedocs compatibility sphinx-autoapi seems nicer conceptually (it parses the docs rather than importing them), but it also generates a ton of warnings, so leave the default as autodoc. --- doc/conf.py | 42 ++++++++++--------- doc/index.rst | 3 +- doc/python-autoapi.rst | 5 +++ ...python-bindings.rst => python-autodoc.rst} | 0 doc/requirements.txt | 2 + 5 files changed, 31 insertions(+), 21 deletions(-) create mode 100644 doc/python-autoapi.rst rename doc/{python-bindings.rst => python-autodoc.rst} (100%) create mode 100644 doc/requirements.txt diff --git a/doc/conf.py b/doc/conf.py index 94e266af..c34c03ac 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -4,7 +4,28 @@ import sys import os -extensions = [ 'sphinx.ext.autodoc' ] +location = os.path.dirname(__file__) +bindings_path = os.path.join(location, '..', 'bindings', 'python-cffi','notmuch2') +exclude_patterns = ['_build'] + +# read generated config +for pathdir in ['.', '..']: + conf_file = os.path.join(location,pathdir,'sphinx.config') + if os.path.exists(conf_file): + with open(conf_file,'r') as infile: + exec(''.join(infile.readlines())) + +if tags.has("AUTOAPI") or os.environ.get('READTHEDOCS') == 'True': + extensions = [ 'autoapi.extension' ] + autoapi_dirs = [ bindings_path ] + autoapi_add_toctree_entry = False + exclude_patterns.append('python-autodoc.rst') +elif tags.has('WITH_PYTHON'): + extensions = [ 'sphinx.ext.autodoc' ] + sys.path.insert(0, bindings_path) + exclude_patterns.append('python-autoapi.rst') +else: + exclude_patterns.append('python-autodoc.rst', 'python-autoapi.rst') # The suffix of source filenames. source_suffix = '.rst' @@ -16,31 +37,15 @@ master_doc = 'index' project = u'notmuch' copyright = u'2009-2020, Carl Worth and many others' -location = os.path.dirname(__file__) - for pathdir in ['.', '..']: version_file = os.path.join(location,pathdir,'version') if os.path.exists(version_file): with open(version_file,'r') as infile: version=infile.read().replace('\n','') -# for autodoc -sys.path.insert(0, os.path.join(location, '..', 'bindings', 'python-cffi', 'notmuch2')) - -# read generated config -for pathdir in ['.', '..']: - conf_file = os.path.join(location,pathdir,'sphinx.config') - if os.path.exists(conf_file): - with open(conf_file,'r') as infile: - exec(''.join(infile.readlines())) - # The full version, including alpha/beta/rc tags. release = version -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -exclude_patterns = ['_build'] - if tags.has('WITH_EMACS'): # Hacky reimplementation of include to workaround limitations of # sphinx-doc @@ -55,9 +60,6 @@ else: # the docstring include files exclude_patterns.append('notmuch-emacs.rst') -if not tags.has('WITH_PYTHON'): - exclude_patterns.append('python-bindings.rst') - # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' diff --git a/doc/index.rst b/doc/index.rst index a3bf3480..3493d7b4 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -26,7 +26,8 @@ Contents: man7/notmuch-search-terms man1/notmuch-show man1/notmuch-tag - python-bindings + python-autodoc + python-autoapi Indices and tables ================== diff --git a/doc/python-autoapi.rst b/doc/python-autoapi.rst new file mode 100644 index 00000000..fb968874 --- /dev/null +++ b/doc/python-autoapi.rst @@ -0,0 +1,5 @@ +Python Bindings +=============== + +.. autoapimodule:: notmuch2 + :members: diff --git a/doc/python-bindings.rst b/doc/python-autodoc.rst similarity index 100% rename from doc/python-bindings.rst rename to doc/python-autodoc.rst diff --git a/doc/requirements.txt b/doc/requirements.txt new file mode 100644 index 00000000..519ccd35 --- /dev/null +++ b/doc/requirements.txt @@ -0,0 +1,2 @@ +# for readthedocs, or other standalone builds of the docs. +sphinx-autoapi -- 2.43.0