Есть ли поле docstring sphinx reST Python docstring для уроков?

Я пытаюсь использовать docstrings типа reST, т.е.

def foo(bar):
    """a method that takes a bar

    :param bar: a Bar instance
    :type bar: Bar

Есть ли стандартный способ документировать yields? Я посмотрел на http://sphinx-doc.org/domains.html#info-field-lists, a-la this question [Использование javadoc для документации Python], но не повезло. Я представляю что-то вроде:

    :yields: transformed bars
    :yield type: Baz

Спасибо!

Ответы

Ответ 1

итератора []

Аннотации Python 3 предлагают стандартизованный синтаксис Iterator[] для этого, как описано в: https://docs.python.org/3/library/typing.html#typing.Generator

Перед Python 3 я рекомендую использовать этот синтаксис, чтобы упростить его перенос позже:

from typing import List
def f():
    """
    :rtype: Iterator[:class:`SomeClass`]
    """
    yield SomeClass()

И после Python 3 используйте https://pypi.python.org/pypi/sphinx-autodoc-annotation с синтаксисом:

from typing import Iterator
def f() -> Iterator[SomeClass]:
    yield SomeClass()

Ответ 2

Google python style guide говорит:

Fine. Используйте "Доходность", а не "Возвраты:" в строке документа для функции генератора.

Пример из здесь:

def example_generator(n):
    """Generators have a ``Yields`` section instead of a ``Returns`` section.

    Args:
      n (int): The upper limit of the range to generate, from 0 to `n` - 1

    Yields:
      int: The next number in the range of 0 to `n` - 1

    Examples:
      Examples should be written in doctest format, and should illustrate how
      to use the function.

      >>> print [i for i in example_generator(4)]
      [0, 1, 2, 3]

    """
    for i in range(n):
        yield i

Обратите внимание, что это не официальный стиль руководства по кодированию питона.

Если вы собираетесь использовать Yields, вам нужно использовать расширение sphinxcontrib-napoleon, добавив его в список extensions в conf.py:

extensions = ['...', ..., 'sphinxcontrib.napoleon']

sphinxcontrib-napoleon распознать Yields ключевое слово среди других на этапе предварительной обработки docstring:

Наполеон - это расширение Сфинкса, которое позволяет Sphinx анализировать как NumPy и docstrings в стиле Google - стиль, рекомендованный Академией Хан.

Napoleon - это предварительный процессор, который анализирует NumPy и стиль Google docstrings и преобразует их в reStructuredText до Sphinx попытки разобрать их. Это происходит на промежуточном этапе, пока Sphinx обрабатывает документацию, поэтому он не модифицирует ни одну из docstrings в ваших файлах исходного кода.


Лично я думаю, что использование Returns: довольно хорошо, так как generator - это в основном частный случай function.

Ответ 3

Я рассмотрел другой ответ, и он, на мой взгляд, не отвечает на вопрос.

Способ документирования генератора, хотя и не самый лучший, заключается в использовании :return, как и в остальных документах. Используйте описание, чтобы заметить, что это генератор.

Уступки из документов стиля Google/Numpy конвертируют доходность в возвращаемые предложения.

https://bitbucket.org/RobRuana/sphinx-contrib/src/a06ae33f1c70322c271a97133169d96a5ce1a6c2/napoleon/sphinxcontrib/napoleon/docstring.py?at=default&fileviewer=file-view-default#docstring.py-678:680