2016-10-16 31 views
5

Generuję dokumentację HTML modułu Python 3 automatycznie z jego instrukcji reStructuredText jego funkcji za pomocą Sphinx (make HTML). Wygenerowana dokumentacja HTML wygląda do tej pory dobrze, ale typy parametrów sygnatur funkcji, które są podane w kodzie źródłowym jako PEP484 type hints, nie są poprawnie wyświetlane.Python 3: Sphinx nie pokazuje poprawnie podpowiedzi typu

E.g. to jakiś przykład wyjście z Sphinx wygenerowanego dokumentu HTML jednego z moich funkcji:

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 

To co by się spodziewać, że aby wyglądać następująco:

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 

ten sposób kod Python rzeczywiście wygląda następująco:

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 [] 

Jak mogę dokonać Sphinx pokazać typ Python 3 wskazówki prawidłowo?

+1

Umieszczenie typów w docstruowaniu nie jest możliwe? ': param str filename: ...' i ': rtype: list' dla typu zwrotu ... – Bakuriu

+0

To spowodowałoby, że jest on zbędny, a ludzie w naszym projekcie nie będą myśleć o zmianie typów dwa razy. Poza tym wygląda na to, że Sphinx obsługuje wskazówki typu PEP484: https://github.com/sphinx-doc/sphinx/issues/1968 –

Odpowiedz

5

Rozwiązałem go samodzielnie, korzystając z sphinx-autodoc-typehints extension.

+0

Może warto zauważyć, że to rozszerzenie obecnie nie działa dla klas bez '__init __()' w Pythonie 3.6 - patrz [mój bilet] (https://github.com/agronholm/sphinx-autodoc-typehints/issues/12). –