如何用sphinx生成函数签名?

时间:2016-01-17 01:24:46

标签: python documentation python-sphinx

包结构和文件设置如下:

$ tree .
.
├── doc
│   ├── Makefile
│   ├── README.md
│   ├── _build
│   ├── _static
│   ├── conf.py
│   ├── foo.rst
│   ├── index.rst
│   └── make.bat
└── foo
    ├── __init__.py
    └── spam.py


$ cat foo/__init__.py
r'''
The Foo module
==============

.. autosummary::
   :toctree: generated

   spam
'''


$ cat foo/spam.py
r'''
The Spam Module
===============
'''

def prepare(a):
    '''Prepare function.

    Parameters
    ----------
    a : int
    '''
    print(a)


$ cat doc/index.rst
Welcome to foo's documentation!
=====================================

API Reference
-------------

.. toctree::
   :maxdepth: 1

   foo


Indices and tables
==================

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`


$ cat doc/foo.rst
.. automodule:: foo

make html生成sphinx文档后,列出了函数prepare,但没有记录此函数的签名:

$ cat generated/foo.spam.rst
foo.spam
========
.. automodule:: foo.spam

   .. rubric:: Functions

   .. autosummary::

      prepare

我的问题是如何生成那么,在这种情况下如何自动生成函数签名?

2 个答案:

答案 0 :(得分:0)

.. automodule:: foo.spam

我认为这是你的问题(如果你还没有解决的话)

不正确的方式

.. automodule:: spam

答案 1 :(得分:0)

我看到的第一个问题:

您可能会将python代码与Sphinx文档(由.rst文件渲染)混淆了。

例如,如果您要记录foo模块,则不会从init中的代码生成该模块:

$ cat foo/__init__.py
r'''
The Foo module
==============

.. autosummary::
   :toctree: generated

   spam
'''

但是,您需要打开一个名为foo.rst的文件,然后可以在其中放置用于Sphinx的代码以读取:

$ cat doc/foo.rst
The Foo module
==============

.. autosummary::
   :toctree: generated

   spam

要注意的第二件事:

index.rst文件的主目录(toctree)中,您只能链接到其他.rst文件

以上一节中的foo.rst文件为例,您可以在此处链接到该文件:

$ cat doc/index.rst
Welcome to foo's documentation!
=====================================

API Reference
-------------

.. toctree::
   :maxdepth: 1

   foo

更多注释:

您可以查看我制作的this example documentation。每个页面都包含.rst源代码,因此您可以遵循其源代码。

祝你好运!