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)
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)
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
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