Как документировать участников в определенных разделах с помощью Sphinx?

Я изо всех сил пытаюсь понять, как разместить документацию для конкретных членов моего класса Python в определенных разделах моей документации Sphinx, в идеале, при автоматическом документировании остальных в другом разделе.

У меня есть класс Python

class MyClass(object):

    def funky(self, arg):
        """Some docs."""
        ...

определенный в my/module.py, который работает, как и ожидалось, и я могу документировать без проблем, используя

***************************
MyModule - :mod:`my.module`
***************************

.. automodule:: my.module

.. autoclass:: MyClass
   :members:
   :undoc-members:
   :show-inheritance:

Но когда я пытаюсь получить больше контроля над организацией моей документации, я не могу заставить все работать. В частности, я хотел бы, чтобы некоторые участники были задокументированы в явных разделах (здесь показан только один, но их может быть несколько), а остальные автоматически задокументированы как группа.

Но когда я пытаюсь это сделать, например,

***************************
MyModule - :mod:`my.module`
***************************

To document
===========

Things that are not yet documented.

.. automodule:: my.module

.. autoclass:: MyClass
   :members:
   :undoc-members:
   :show-inheritance:
   :exclude-members: funky

Funky things
------------

Some funky things.

.. automethod:: funky

я получил

ВНИМАНИЕ: не знаете, какой модуль импортировать для автодокументирования u'funky' (попробуйте поместить в документ директиву "module" или "currentmodule" или указать явное имя модуля)

но без вариаций

.. currentmodule:: my.module
.. class:: MyClass

.. automethod:: funky

or

.. currentmodule:: my.module

   .. automethod:: funky

и т. д. доставь меня куда угодно.

Как мне автоматически задокументировать некоторых членов моего класса в определенных местах моей документации Sphinx?


person orome    schedule 30.11.2015    source источник
comment
.. automethod:: MyClass.funky или .. automethod:: my.module.MyClass.funky работает?   -  person mzjn    schedule 03.12.2015
comment
@mzjn: Бывший делает! Клянусь, я пробовал все эти вещи раньше. Не понимаю, почему они раньше не работали!   -  person orome    schedule 03.12.2015
comment
@mzjn: я вижу, что случилось. Я использовал automethod вместо autoattribute и перепутал autofunction с обоими. Также есть ли способ избежать указания имени класса каждый раз? module:: и class:: не помогают.   -  person orome    schedule 03.12.2015
comment
@mzjn: я приму вышеизложенное в качестве ответа.   -  person orome    schedule 03.12.2015


Ответы (1)


Это работает:

.. currentmodule:: my.module

.. automethod:: MyClass.funky

Вы можете пропустить .. currentmodule:: и сделать это так:

.. automethod:: my.module.MyClass.funky

Третий вариант:

.. currentmodule:: my.module

.. autoclass:: MyClass   

   .. automethod:: funky
person mzjn    schedule 09.12.2015