Как автоматически добавлять типы параметров в документацию sphinx

В настоящее время я пытаюсь реализовать автоматическое создание документации с помощью Sphinx (используя расширения sphinx-apidoc и napoleon). Это работает достаточно хорошо, но было бы еще лучше, если бы подсказки типов (соглашение PEP484) автоматически добавлялись в список параметров.

Мне было интересно, возможно ли это.

Более конкретно: (из примера Наполеона)

def function_with_pep484_type_annotations(param1: int, param2: str) -> bool:
    """Example function with PEP 484 type annotations.

    Args:
        param1: The first parameter.
        param2: The second parameter.

    Returns:
        The return value. True for success, False otherwise.

    """

Это выглядит следующим образом:

введите описание изображения здесь

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

Пример с ручным добавлением типа:

def function_with_pep484_type_annotations(param1: int, param2: str) -> bool:
    """Example function with PEP 484 type annotations.

    Args:
        param1 (int): The first parameter.
        param2 (str): The second parameter.

    Returns:
        The return value. True for success, False otherwise.

    """

который отображается как:

введите описание изображения здесь


person Matthijs    schedule 28.03.2018    source источник
comment
Это сфинкс, о котором мы говорим. Если ответ не «Вы должны использовать этот обезьяний пластырь, я съем шляпу».   -  person Aran-Fey    schedule 28.03.2018
comment
Эта проблема кажется связанной: github.com/sphinx-doc/sphinx/issues/2738   -  person mzjn    schedule 28.03.2018
comment
Последний комментарий в этом вопросе именно то, что я имею в виду. А пока: кто-нибудь знает обходной путь?   -  person Matthijs    schedule 28.03.2018


Ответы (1)


Теперь вы можете использовать расширение sphinx-autodoc-typehints. Он автоматически добавит типы в строки документации sphinx, когда вы будете писать в предыдущем примере выше.

Для установки просто выполните:

$ pip install sphinx-autodoc-typehints

Добавьте 'sphinx_autodoc_typehints' в список extensions в conf.py после 'sphinx.ext.napoleon' и убедитесь, что вы также добавили napoleon_use_param = True в conf.py.

person Kyle Barron    schedule 12.07.2018