mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
The autodoc_mock_imports option requires to explicitly declare *every* external module and sub-module that are imported by the documented code. This is not practical as the list can become very large and must be maintained as the code changes. Also, the mocking is minimal which causes errors when compiling the docs. For example, if you declare: autodoc_mock_imports = ['django.template'] And try to document a module: .. automodule:: my.lib.util Which contains this code: from django.template import Library register = Library() The following error occurs: File ".../my/lib/util.py" line 2 register = Library() TypeError: 'object' object is not callable Other similar errors can occur such as "TypeError: 'object' object has no len". To address these limitations, only require to declare the top-level module that should be mocked: autodoc_mock_imports = ['django'] Will mock "django" but also any sub-module: "django.template", "django.contrib", etc. Also, make the mocked modules yield more complete dummy objects to avoid these TypeError problems. Behind the scenes, it uses the python import hooks mechanism specified in PEP 302. Signed-off-by: Robin Jarry <robin@jarry.cc> |
||
---|---|---|
.. | ||
autodoc.rst | ||
autosectionlabel.rst | ||
autosummary.rst | ||
builtins.rst | ||
coverage.rst | ||
doctest.rst | ||
example_google.py | ||
example_google.rst | ||
example_numpy.py | ||
example_numpy.rst | ||
extlinks.rst | ||
githubpages.rst | ||
graphviz.rst | ||
ifconfig.rst | ||
inheritance.rst | ||
intersphinx.rst | ||
linkcode.rst | ||
math.rst | ||
napoleon.rst | ||
thirdparty.rst | ||
todo.rst | ||
viewcode.rst |