Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pydantic autocompletion in VS Code

When i use pydantic in VS Code, the code snippet shows User(**data: Any). Is there any way for VS Code to show correct documentation? like User(name: str, email: str)

enter image description here

like image 949
Nicolas Acosta Avatar asked Jan 30 '26 19:01

Nicolas Acosta


2 Answers

As of today, the problem persists, both for pydantic's BaseModel classes, as well as the pydantic version of @dataclass decorator.

In case of BaseModel, add the following piece of code to your imports:

from typing import TYPE_CHECKING
from pydantic import BaseModel


if TYPE_CHECKING:
    from dataclasses import dataclass as _basemodel_decorator
else:
    _basemodel_decorator = lambda x: x

Then, decorate all classes as follows:

@_basemodel_decorator
class MyClass(BaseModel):
    foo: int
    bar: str

Alternatively, if you are using pydantic's version of the dataclass decorator boilerplate code is simpler:

from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from dataclasses import dataclass
else:
    from pydantic.dataclasses import dataclass

Then continue as usual:

@dataclass
class MyClass2:
    foo: int
    bar: str

Result: hints for the constructor parameters are showing in VS Code

More info:

  • Credit: https://github.com/microsoft/python-language-server/issues/1898#issuecomment-809975087

  • On the TYPE_CHECKING constant: https://docs.python.org/3/library/typing.html#typing.TYPE_CHECKING

like image 90
amka66 Avatar answered Feb 01 '26 08:02

amka66


Make sure that you've selected a python interpreter, that has pydantic installed.

VS code python extension will give you ability of syntax highlighting, as well as loading an interpreter.

In right down corner of VS code you will find python interpreter selection
(in my case 3.9.12 version)
enter image description here

Working example:
Working example

like image 30
Robert Mielewczyk Avatar answered Feb 01 '26 07:02

Robert Mielewczyk