PyCharm 2016.3 Help

Using Docstrings to Specify Types

On this page:


You debug your code permanently, and now in course of debugging you can also collect type information and specify these types in docstrings.

PyCharm provides an intention action that makes it possible to collect type information at runtime, and define type specifications.


Make sure that the check box Collect run-time types information for code insight in the Python Debugger page of the Debugger settings is selected.

Parameter type specification

To specify the parameter types, follow these general steps

  1. Open the desired Python class in the editor, and debug its calls.
  2. Place the caret at the function name, and press Alt+Enter.
  3. In the list of intention actions that opens, choose Insert documentation string stub. PyCharm creates a documentation stub, according to the selected docstring format, with the type specification, collected during the debugger session.


Consider the following code:

import math class SimpleEquation: def demo(self, a, b, c): d = math.sqrt(b ** 2 - 4 * a * c) root1 = (-b + d) / (2 * a) root2 = (-b - d) / (2 * a) print(root1, root2) SimpleEquation().demo(3, 2, 1)

Let us suppose that reStructuredText has been selected as the docstring format on the page Python Integrated Tools.

Next, in the Settings/Preferences dialog, do the following:

  • In the Python Debugger page of the debugger settings, select the check box Collect run-time information for code insight.
  • In the Smart Keys page of the editor settings, select the check box Insert type placeholders in the documentation comment stub (if this check box is selected, the type placeholders are generated.)

Debug the function call. PyCharm collects information about types, and suggests intention action Insert documentation string stub. To show this intention action, it is enough to place the caret at the function declaration.


The obtained results is:


Next, select Epytext format of the docstrings, and repeat the whole procedure. The documentation comment with types includes parameters in Epytext format.


See Also

Last modified: 23 November 2016