2016-10-16 6 views
5

Я создаю документацию HTML модуля Python 3 автоматически из своих докстронтов reStructuredText своих функций с помощью Sphinx (make HTML). Сгенерированная документация HTML выглядит до сих пор хорошо, но типы параметров сигнатур функций, которые указаны в исходном коде как PEP484 type hints, отображаются неправильно.Python 3: Sphinx неправильно отображает подсказки типов

E.g. это пример вывода из 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

Ввод типов в docstring не является вариантом? ': param str имя_файла: ...' и ': rtype: list' для возвращаемого типа ... – Bakuriu

+0

Это сделало бы его излишним, и люди в нашем проекте не будут думать об изменении типов два раза. Кроме того, похоже, что Sphinx поддерживает подсказки типа PEP484: https://github.com/sphinx-doc/sphinx/issues/1968 –

ответ

5

Я занялся этим самостоятельно, используя sphinx-autodoc-typehints extension.

+0

Возможно, стоит отметить, что это расширение в настоящее время не работает для классов без '__init __()' в Python 3.6 - см. [мой билет] (https://github.com/agronholm/sphinx-autodoc-typehints/issues/12). –