VS Code renders markdown fine in mouse hovers - but doesn't render standard docstring formats well

The VS Code Python extension will use markdown that you put into a docstring for intellisense mouse hover information, but this doesn't really meet any of the commonly accepted/used docstring formats for Python. It doesn't properly layout any of those common formats (as of May 2020).

Update (4/2023): Sphinx has been updated to support markdown in docstrings for its auto-code generation, meaning you can put all your docstrings in markdown and they will look good in VS Code hovers and also work with Sphinx

So, your options are:

  1. Stick with one of the major formats that will work with existing Python documentation tools and utilities like Sphinx
  2. Use markdown in your docstrings and look good in VS Code, but be incompatible with most other documentation tools


More Details / Example

The top 3 Python docstring formats are:

  • Google
  • Sphinx
  • NumPY/ReST

VS Code will take ReST format (NumPY style) and properly layout the headers from each section (each item with the line of dashes under it), but in all the formats, the section content is unformatted and munged together with all the linebreaks dropped.

If you use markdown directly in the docstrings, it is supported, but then you aren't meeting the formatting requirements of docstrings for auto documentation frameworks like Sphinx. For example, I started with Sphinx format here and modified it to look better with VS Code's markdown tooltips

def autodoc_test_numpy(self, a: str, b: int = 5, c: Tuple[int, int] = (1, 2)) -> Any:
    """[summary]

    ### Parameters
    1. a : str
        - [description]
    2. *b : int, (default 5)
        - [description]
    3. *c : Tuple[int, int], (default (1, 2))
        - [description]

    ### Returns
    - Any
        - [description]

    Raises
    ------
    - ValueError
        - [description]
    """

Will render like this:

Notice that the final "Raises" section here has the underlining with dashes that makes it a level 1 header (which is the ReST style). Look how big it is! I bumped the other down to h3 by using ### in front of the text instead of underlining it with hyphens on the next line.

Also, note that the type hints in the main function definition (like str in the a: str) render well (even colored) for args and the return type hint, but are not shown for kwargs (e.g. b=5 without the type hint).

Answer from LightCC on Stack Overflow
🌐
Visual Studio Marketplace
marketplace.visualstudio.com › items
autoDocstring: VSCode Python Docstring Generator
Extension for Visual Studio Code - Generates python docstrings automatically
Top answer
1 of 4
45

VS Code renders markdown fine in mouse hovers - but doesn't render standard docstring formats well

The VS Code Python extension will use markdown that you put into a docstring for intellisense mouse hover information, but this doesn't really meet any of the commonly accepted/used docstring formats for Python. It doesn't properly layout any of those common formats (as of May 2020).

Update (4/2023): Sphinx has been updated to support markdown in docstrings for its auto-code generation, meaning you can put all your docstrings in markdown and they will look good in VS Code hovers and also work with Sphinx

So, your options are:

  1. Stick with one of the major formats that will work with existing Python documentation tools and utilities like Sphinx
  2. Use markdown in your docstrings and look good in VS Code, but be incompatible with most other documentation tools


More Details / Example

The top 3 Python docstring formats are:

  • Google
  • Sphinx
  • NumPY/ReST

VS Code will take ReST format (NumPY style) and properly layout the headers from each section (each item with the line of dashes under it), but in all the formats, the section content is unformatted and munged together with all the linebreaks dropped.

If you use markdown directly in the docstrings, it is supported, but then you aren't meeting the formatting requirements of docstrings for auto documentation frameworks like Sphinx. For example, I started with Sphinx format here and modified it to look better with VS Code's markdown tooltips

def autodoc_test_numpy(self, a: str, b: int = 5, c: Tuple[int, int] = (1, 2)) -> Any:
    """[summary]

    ### Parameters
    1. a : str
        - [description]
    2. *b : int, (default 5)
        - [description]
    3. *c : Tuple[int, int], (default (1, 2))
        - [description]

    ### Returns
    - Any
        - [description]

    Raises
    ------
    - ValueError
        - [description]
    """

Will render like this:

Notice that the final "Raises" section here has the underlining with dashes that makes it a level 1 header (which is the ReST style). Look how big it is! I bumped the other down to h3 by using ### in front of the text instead of underlining it with hyphens on the next line.

Also, note that the type hints in the main function definition (like str in the a: str) render well (even colored) for args and the return type hint, but are not shown for kwargs (e.g. b=5 without the type hint).

2 of 4
10

As far as I know, there is no official format that is supported. The code has a few functions it runs to convert some parts of RST to Markdown to be displayed, but that is pretty much it.

The code that does the conversion can be found here. The tests, which is a good way of seeing some actual examples, can be found here.

🌐
Python How Tos
campbell-muscle-lab.github.io › howtos_Python › pages › documentation › best_practices › vscode_docstring_extension › vscode_docstring_extension.html
Visual Studio Docstring Extension - Python How Tos
To automatically insert the docstring with proper formatting, you type three quotes, """ like a normal docstring, then hit Enter to let the extension automatically format the docstring.
🌐
Reddit
reddit.com › r/python › no more docstring despair: highlight them in vscode!
r/Python on Reddit: No More Docstring Despair: Highlight Them in VSCode!
March 12, 2024 -

Hey everyone!

I'm excited to share a simple yet effective tool I've developed that's all about enhancing your Python coding experience in VSCode. We all know how Docstrings are crucial for understanding and documenting our Python code, but they often blend into the background, treated as standard comments in VSCode. This can make them harder to read and differentiate from the rest of your code.

That's why I created a Python Docstring Highlighter for VSCode that recognizes the main styles (Google, NumPy, and Sphinx). This extension not only makes your code more readable but also allows you to customize the highlighting to fit your theme, making your coding environment as comfortable and productive as possible.

Whether you're documenting your own project or navigating through others', this extension is designed to make your life easier and your code more accessible. Give it a try and see the difference for yourself!

Source code

Install extension (VSCode)

Looking forward to your feedback and suggestions. Happy coding!

🌐
Reddit
reddit.com › r/vscode › no more python docstring despair: highlight them in vscode!
r/vscode on Reddit: No More Python Docstring Despair: Highlight Them in VSCode!
March 12, 2024 -

Hey everyone!

I'm excited to share a simple yet effective tool I've developed that's all about enhancing your Python coding experience in VSCode. We all know how Docstrings are crucial for understanding and documenting our Python code, but they often blend into the background, treated as standard comments in VSCode. This can make them harder to read and differentiate from the rest of your code.

That's why I created a Python Docstring Highlighter for VSCode that recognizes the main styles (Google, NumPy, and Sphinx). This extension not only makes your code more readable but also allows you to customize the highlighting to fit your theme, making your coding environment as comfortable and productive as possible.

Python Docstring Highlighter Demo (google style)

Whether you're documenting your own project or navigating through others', this extension is designed to make your life easier and your code more accessible. Give it a try and see the difference for yourself!

Source code

Install extension (VSCode)

Looking forward to your feedback and suggestions. Happy coding!

🌐
Python Engineer
python-engineer.com › posts › vscode-python-setup
My Minimal VS Code Setup for Python - 5 Visual Studio Code Extensions - Python Engineer
Usage: Write a function first, then go to the beginning of the function and type three double quotation marks ("""). Then hit enter, and you get a docstring that already contains the input and return variables.
🌐
Note.nkmk.me
note.nkmk.me › home › python
Python Docstring Formats (Styles) and Examples | note.nkmk.me
August 26, 2023 - Holding down shift and repeatedly pressing tab changes the display style. In Visual Studio Code (VSCode) with the Python extension installed, hovering the cursor over the target function shows the docstring in a tooltip.
🌐
Visual Studio Marketplace
marketplace.visualstudio.com › items
python docstrings - Visual Studio Marketplace
Extension for Visual Studio Code - generate python docstrings for classes and methods
Find elsewhere
🌐
GitHub
github.com › graykode › ai-docstring
GitHub - graykode/ai-docstring: Visual Studio Code extension to quickly generate docstrings for python functions using AI(NLP) technology. · GitHub
Visual Studio Code extension to quickly generate docstrings for python functions using AI(NLP) technology. This project is forked for NilsJPWerner/autoDocstring.
Author: graykode
🌐
Towards Data Science
towardsdatascience.com › home › latest › 3 easy steps to folding docstrings in vscode
3 Easy Steps to Folding Docstrings in VSCode | Towards Data Science
January 23, 2025 - If you have the Python Docstring Generator extension installed you can simply go to the right place in your code and type 3 double quotes and the skeleton docstring will be created for you -
🌐
Hrekov
hrekov.com › blog › python-docstring-guide-vscode
How to Easily Write Docstrings in Python Without a Headache (Using VSCode) | Web Tools, Production APIs & Technical Blog | Hrekov
May 10, 2026 - A guide to streamline writing Python docstrings using VSCode and the autoDocstring extension, covering common styles and best practices.
🌐
Reddit
reddit.com › r/vscode › what is the "working" python docstring style for vs code tooltips?
r/vscode on Reddit: What is the "working" Python docstring style for VS Code tooltips?
March 11, 2020 -

AFAIK I know, there are three major docstring conventions beyond PEP 257:

  • reST style

  • Google style

  • NumPy style

I use Google style because I find it the simplest. I'm also using type hints throughout my code, which helps keep docstrings readable and concise.

Unfortunately, VS Code's tooltips provide no proper support for any of them. It tries to parse the entire docstring as Markdown, resulting in ugly or illegible tootltips. I recently disabled Jedi in favor of MS Language Server which made the problem worse. (Notes on this below)

I could ditch all docstring conventions and resort to writing Markdown, but it would mean giving up my documentation generation tools (sphinx, pydocmd). Has anyone managed to get docstring tooltips to look good on VS Code?

Sidetrack: Jedi vs MS Language Server?

Note: I disabled Jedi because it wanted to use rope for renaming variables. For some reason, VS Code fails to rename variables even when I install rope in my venv. In contrast, refactoring with MS Language Server just works...though it breaks tooltips even more.

So I am stuck in a dilemma between Jedi & MSLS:

  • Subpar tooltips & no refactoring support, or

  • Even worse tooltips & refactoring support

BTW, I'm using VS Code on Windows 10 with Git Bash as the default terminal. This setup allows me to use Linux commands provided by Git Bash, but has been causing some headaches...

Edit: I just checked again, and reStructuredText actually seems to produce somewhat usable docstrings. The caveat being that there is no way to document class attributes directly (Google style has the Attributes: section).

Top answer
1 of 2
1
I think I see what you mean. It doesn't really answer your question, but here are a couple considerations that can make your life easier in the meantime: I wanted to make the docstrings more legible in the code. I used the extension Highlight to write ugly regexes to match specific characters in a Google-style docstring, to make it more legible, like so . Instead of relying on tooltips, you can rely on another nice feature of VS Code: Peek Definition. It allows you to look to another location in the code in-place. It's a nice way to quickly see what a function does somewhere else in the code. You can bind this operation to a keybind of your liking to do that efficiently. I also recommend using the autoDocstring extension, which works nice. I wrote a custom mustache template to remove types from the Google template, as I rely on the extension sphinx_autodoc_typehints to generate them from my type hints.
2 of 2
1
Coming from TypeScript hurts to have such ugly docs :-P. This was the best custom format I could come up with, which has the advantage of technically being valid yaml so it should be fairly straight forward to parse if needed. https://imgur.com/a/5lgkiYi https://user-images.githubusercontent.com/15365418/89723797-e52f7280-d9c8-11ea-8b6a-9362319e0cea.png class RestResponseExchange(TypedDict): """ Returns basic information about the exchange. ### References - https://docs.idex.io/#get-exchange ### Attributes `timeZone: str`: summary: 'Timezone pass of the exchange' example: 'UTC' `serverTime: int`: summary: 'Current server timestamp in milliseconds' example: 1596938576511
🌐
Microsoft Developer Blogs
devblogs.microsoft.com › dev blogs › microsoft for python developers blog › python in visual studio code – november 2024 release
Python in Visual Studio Code - November 2024 Release - Microsoft for Python Developers Blog
November 1, 2024 - The generated docstring includes fields for the function’s description, parameter descriptions, parameter types, return value description, and return type. This feature is currently behind an experimental setting, but we look forward to making it the default experience soon. You can try it out today by enabling the python.analysis.supportDocstringTemplate setting.
🌐
Visual Studio Marketplace
marketplace.visualstudio.com › items
AI Python Docstring Generator - Visual Studio Marketplace
November 19, 2020 - Extension for Visual Studio Code - Automatically generates summary for python functions using AI
🌐
GitHub
github.com › microsoft › vscode-python › discussions › 20638
Docstring formatting settings · microsoft/vscode-python · Discussion #20638
microsoft / vscode-python Public forked from DonJayamanne/pythonVSCode ... There was an error while loading. Please reload this page. Something went wrong. There was an error while loading. Please reload this page. ... Hi all, it seems the default behavior for docstrings on hover has changed, and now basically every method/function seems to show the signature with line breaks.
Author: microsoft
🌐
GitHub
github.com › AZaugg › vscode-python-docstring
GitHub - AZaugg/vscode-python-docstring · GitHub
An inspired vscode extentions for creating python docstring on new functions/methods.
Starred by 4 users
Forked by 2 users
Languages: TypeScript
🌐
Visual Studio Marketplace
marketplace.visualstudio.com › items
PyDoc - Visual Studio Marketplace
Extension for Visual Studio Code - Generates the docstring for functions and classes
🌐
Towards Data Science
towardsdatascience.com › home › latest › step by step basics: code autodocumentation
Step by Step Basics: Code Autodocumentation | Towards Data Science
January 24, 2025 - The below code block is a typical example of a Google docstring: ... """Description of the function, class or method etc.Args: varA (str): Description of varA varB (bool): Description of varBReturns: list: Description of returned listRaises: ValueError: Description of raised error""" Top tip. download the 'autoDocstring - Python Docstring Generator' in VS Code to automatically generate a docstring when you type three double quotation marks (i.e.
🌐
GitHub
github.com › iansan5653 › vscode-format-python-docstrings
GitHub - iansan5653/vscode-format-python-docstrings: VSCode formatter extension implementation of docformatter. · GitHub
June 16, 2021 - In a Python file in VSCode, ctrl+shift+p to open the command pallette, run the command Format Document With... and select Python Docstring Formatter.
Author: iansan5653