From a606db01f1fd2f7d8d55507d60447ae769cf6292 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Luis=20Cano=20Rodr=C3=ADguez?= Date: Thu, 12 Aug 2021 17:15:19 +0200 Subject: [PATCH] Add section on autosummary --- doc/_static/tutorial/lumache-autosummary.png | Bin 0 -> 26500 bytes doc/tutorial/automatic-doc-generation.rst | 78 +++++++++++++++++++ doc/usage/extensions/autosummary.rst | 1 + 3 files changed, 79 insertions(+) create mode 100644 doc/_static/tutorial/lumache-autosummary.png diff --git a/doc/_static/tutorial/lumache-autosummary.png b/doc/_static/tutorial/lumache-autosummary.png new file mode 100644 index 0000000000000000000000000000000000000000..ed54ea3802d7afc2ff90e78399a9808f1197e309 GIT binary patch literal 26500 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 XTvn`veDn_RC5@JbJ_z~L_TB#hT(3ud literal 0 HcmV?d00001 diff --git a/doc/tutorial/automatic-doc-generation.rst b/doc/tutorial/automatic-doc-generation.rst index 445a40278..d4c02698d 100644 --- a/doc/tutorial/automatic-doc-generation.rst +++ b/doc/tutorial/automatic-doc-generation.rst @@ -86,3 +86,81 @@ as follows: .. autoexception:: lumache.InvalidKindError And again, after running ``make html``, the output will be the same as before. + +Generating comprehensive API references +--------------------------------------- + +While using ``sphinx.ext.autodoc`` makes keeping the code and the documentation +in sync much easier, it still requires you to write an ``auto*`` directive +for every object you want to document. Sphinx provides yet another level of +automation: the :doc:`autosummary ` extension. + +The :rst:dir:`autosummary` directive generates documents that contain all the +necessary ``autodoc`` directives. To use it, first enable the autosummary +extension: + +.. code-block:: python + :caption: docs/source/conf.py + :emphasize-lines: 5 + + extensions = [ + 'sphinx.ext.duration', + 'sphinx.ext.doctest', + 'sphinx.ext.autodoc', + 'sphinx.ext.autosummary', + ] + +Next, create a new ``api.rst`` file with these contents: + +.. code-block:: rst + :caption: docs/source/api.rst + + API + === + + .. autosummary:: + :toctree: generated + + lumache + +Remember to include the new document in the root toctree: + +.. code-block:: rst + :caption: docs/source/index.rst + :emphasize-lines: 7 + + Contents + -------- + + .. toctree:: + + usage + api + +Finally, after you build the HTML documentation running ``make html``, it will +contain two new pages: + +- ``api.html``, corresponding to ``docs/source/api.rst`` and containing a table + with the objects you included in the ``autosummary`` directive (in this case, + only one). +- ``generated/lumache.html``, corresponding to a newly created reST file + ``generated/lumache.rst`` and containing a summary of members of the module, + in this case one function and one exception. + +.. figure:: /_static/tutorial/lumache-autosummary.png + :width: 80% + :align: center + :alt: Summary page created by autosummary + + Summary page created by autosummary + +Each of the links in the summary page will take you to the places where you +originally used the correspoding ``autodoc`` directive, in this case in the +``usage.rst`` document. + +.. note:: + + The generated files are based on `Jinja2 + templates `_ that + :ref:`can be customized `, + but that is out of scope for this tutorial. diff --git a/doc/usage/extensions/autosummary.rst b/doc/usage/extensions/autosummary.rst index 4794861b3..9533ed109 100644 --- a/doc/usage/extensions/autosummary.rst +++ b/doc/usage/extensions/autosummary.rst @@ -210,6 +210,7 @@ also use these config values: .. versionadded:: 3.2 +.. _autosummary-customizing-templates: Customizing templates ---------------------