Re: [PATCH] doc: set up for autoapi / readthedocs compatibility

2020-07-15 Thread David Bremner
Floris Bruynooghe  writes:

>
> I didn't actually try out how much better autodoc does, I should
> probably try that too before commenting further.

Thanks to both of you for feedback. I've applied the first two to
master.

It seems tricky to have autodoc on readthedocs without having notmuch2
in pip.  That seems like a lot of work just to have readthedocs work
(although obviously some people would be happy with it for other
reasons).

If we can't make autoapi work well enough, perhaps we can supplement /
replace the rtd version with a pointer to a self hosted version.

We should do the self hosted version of the HTML output from sphinx in
either case. I'm not sure it will fit nicely into the ikiwiki based
wiki, but it should be possible to deploy it on notmuchmail.org outside
the wiki.

d
___
notmuch mailing list -- notmuch@notmuchmail.org
To unsubscribe send an email to notmuch-le...@notmuchmail.org


Re: [PATCH] doc: set up for autoapi / readthedocs compatibility

2020-07-14 Thread Floris Bruynooghe
On Sun 12 Jul 2020 at 09:02 -0300, David Bremner wrote:

> sphinx-autoapi seems nicer conceptually (it parses the docs rather
> than importing them),

TIL about sphinx-autoapi, agree it's nicer conceptually.

> but it also generates a ton of warnings, so
> leave the default as autodoc.
> ---
>
> You can see the results of this (for now) at 
> https://notmuch.readthedocs.io/en/rtdtest/
> We'd presumable want to integrate the whole tree somehow into notmuchmail.org

Saldy it seems to struggle with a fair bit of things.  E.g. it does
manage to create a Database.MODE attribute, but it doesn't figure out
that this is the Mode enum and thus doesn't document the fact you have
two options: MODE.READ_ONLY and MODE.READ_WRITE.  There are obviously a
bunch of other enums where this matters.

It could be that these things are solvable by using more autodoc-style
directives:
https://sphinx-autoapi.readthedocs.io/en/latest/reference/directives.html

But I wonder if the autodoc one will always be better because of the
dynamic nature.  E.g. mapping notmuch2._database.Mode to
notmuch2.Database.MODE on the actual Public API.

I didn't actually try out how much better autodoc does, I should
probably try that too before commenting further.
___
notmuch mailing list -- notmuch@notmuchmail.org
To unsubscribe send an email to notmuch-le...@notmuchmail.org


[PATCH] doc: set up for autoapi / readthedocs compatibility

2020-07-12 Thread David Bremner
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.
---

You can see the results of this (for now) at 
https://notmuch.readthedocs.io/en/rtdtest/
We'd presumable want to integrate the whole tree somehow into notmuchmail.org

 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 ..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 ..519ccd35
--- /dev/null
+++ b/doc/requirements.txt
@@ -0,0 +1,2 @@
+# for readthedocs, or other standalone builds of the docs.
+sphinx-autoapi
-- 
2.27.0
___
notmuch mailing list -- notmuch@notmuchmail.org
To unsubscribe send an email to notmuch-le...@notmuchmail.org