#python-sphinx #python-3.5
#python-sphinx #python-3.5
Вопрос:
Я автоматически создаю HTML-документацию модуля Python 3 из его документации reStructuredText его функций с помощью Sphinx (make HTML). Сгенерированная HTML-документация пока выглядит нормально, но типы параметров сигнатур функций, которые указаны в исходном коде как подсказки типа PEP484, отображаются некорректно.
Например, это пример вывода из сгенерированного Sphinx HTML-документа одной из моих функций:
static parse_from_file(filename: str) → list
Parses stuff from a text file.
Parameters: filename – the filepath of a textfile to be parsed
Returns: list of parsed elements
Я бы ожидал, что это будет выглядеть так:
static parse_from_file(filename)
Parses stuff from a text file.
Parameters: filename (str) – the filepath of a textfile to be parsed
Returns: list of parsed elements
Return type: list
Вот как на самом деле выглядит код Python:
def parse_from_file(filename: str) -> list:
"""Parses stuff from a text file.
:param filename: the filepath of a textfile to be parsed
:returns: list of parsed elements
"""
return []
Как я могу заставить Sphinx правильно отображать подсказки типа Python 3?
Комментарии:
1. Помещение типов в строку документации не является вариантом?
:param str filename: ...
и:rtype: list
для возвращаемого типа…2. Это сделало бы его избыточным, и люди в нашем проекте не будут думать об изменении типов два раза. Кроме того, похоже, что Sphinx поддерживает подсказки типа PEP484: github.com/sphinx-doc/sphinx/issues/1968
Ответ №1:
Я решил это самостоятельно, используя расширение sphinx-autodoc-typehints.
Комментарии:
1. Возможно, стоит отметить, что это расширение в настоящее время не работает для классов без
__init__()
в Python 3.6 — см. Мой билет .
Ответ №2:
Существует autodoc_typehints
переменная. Начиная с версии 3.0, вы можете установить для 'description'
него значение, которое показывает typehints как содержимое функции или метода и удаляет их из подписи.
Так что просто добавьте эту строку в свой conf.py
:
autodoc_typehints = "description"