Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sphinx autosummary "toctree contains reference to nonexisting document" warnings

I am trying to automatically create api docs for a large python codebase using Sphinx.

I have tried using build_modules.py and sphinx-apidoc. With either one, I can get rst docs successfully created in my output directory for the packages and top-level modules.

However, when I build using

make html

it gives thousands of errors of this type:

<autosummary>:None: WARNING: toctree contains reference to nonexisting document 'rstDocs/src.Example1.class1.method1'

for every single class and method in the codebase. With some experimentation I think I have discovered that the autosummary/autoclass directives are creating toctrees that expect there to be rst files for every class and method.

Other than the warnings, the documentation seems to work well, but I would like to get rid of them and I think I may have misconfigured something.

I have also tried nipype/tools to much the same effect.

I modified apigen.py and build_modref_templates.py to create rst stubs for each of these "missing" documents, with autoclass/autofunction/automethods as appropriate. However, the build takes quite a long time (10 minutes) and eventually crashes due to memory errors on the last build step.

Here is an example module rst file that creates all the warnings:

src Package
===========

:mod:`src` Package
------------------

.. automodule:: src.__init__
    :members:
    :undoc-members:
    :show-inheritance:

:mod:`Example1` Module
------------------------------------

.. automodule:: src.Example1
    :members:
    :undoc-members:
    :show-inheritance:

:mod:`Example2` Module
------------------

.. automodule:: src.Example2
    :members:
    :undoc-members:
    :show-inheritance:

Thanks for any advice on how to make these warnings resolve! I would like to stay away from any solution that involves modifying the sphinx site-package files.

like image 563
user1287170 Avatar asked Aug 30 '12 22:08

user1287170


3 Answers

Sorry for such a late answer (if it can be considered that) but I found this link that discusses what may be happening to you:

https://github.com/phn/pytpm/issues/3#issuecomment-12133978

The idea that if you have some special Doc scraper in your documentation code that is building autosummary documentation after autosummary has already run may be something to look into if you are still having this issue. Although, I'm not sure how much help this will be.

The key from the link is to add: numpydoc_show_class_members = False to conf.py

like image 63
djhoese Avatar answered Nov 09 '22 05:11

djhoese


If you are using the numpydoc extension, you could consider removing it and using sphinx.ext.napoleon instead.

Since version 1.3, Numpy and Google style docstrings are in fact supported by this builtin extension.

Removing numpydoc and using sphinx.ext.napoleon in your conf.py will therefore probably solve your problem.


Sources

  • Napoleon - Marching toward legible docstrings
  • Sphinx Doc - Support for NumPy and Google style docstrings
like image 27
Kurt Bourbaki Avatar answered Nov 09 '22 06:11

Kurt Bourbaki


I just encountered this issue too and spend hours on this, The following worked for me:

Sphinx can be fussy, and sometimes about things you weren’t expecting. For example, you well encounter something like:

WARNING: toctree contains reference to nonexisting document u'all-about-me'
...
checking consistency...
<your repository>/my-first-docs/docs/all-about-me.rst::
WARNING: document isn't included in any toctree'

Quite likely, what has happened here is that you indented all-about-me in your .. toctree:: with four spaces, when Sphinx is expecting three.

Source: docs!

like image 13
0x78f1935 Avatar answered Nov 09 '22 06:11

0x78f1935