Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python 3: Sphinx doesn't show type hints correctly

I am generating a HTML documentation of a Python 3 module automatically from its reStructuredText docstrings of its functions by using Sphinx (make HTML). The generated HTML documentation looks fine so far, but the parameter types of the function signatures, which are given in the source code as PEP484 type hints aren't shown correctly.

E.g. this is some example output from the Sphinx-generated HTML doc of one of my functions:

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

This is what I would expect it to look like:

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

This is how the Python code actually looks like:

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

How can I make Sphinx show the Python 3 type hints correctly?

like image 631
Gerhard Hagerer Avatar asked Oct 16 '16 14:10

Gerhard Hagerer


2 Answers

I tackled it on my own by using the sphinx-autodoc-typehints extension.

like image 82
Gerhard Hagerer Avatar answered Nov 19 '22 03:11

Gerhard Hagerer


There is autodoc_typehints variable. Since version 3.0 you can set it to 'description' which shows typehints as content of function or method and removes them from signature.

So just add this line into your conf.py:

autodoc_typehints = "description"
like image 31
Břetislav Hájek Avatar answered Nov 19 '22 02:11

Břetislav Hájek