Я пытаюсь создать экземпляр user = user (** extred_data) , где пользователь является pydantic basemodel , но я получаю ошибку от Pylance, который не любит мой внешний_дата Dictionary и невозможно выяснить, что данные в DICT на самом деле являются правильными (см. First First Screenshot). src = "https://i.sstatic.net/kd0we.png"/>
Я нашел обходной путь, создав typeddict с тем же объявлением, что и для пользователя (basemodel) . Теперь пиленмен счастлив, но я не являюсь, потому что мне нужно повторить себя (см. Второй скриншот).
Любые идеи о том, как сделать Pylafe и pydant, не понимает другой, не понимает другой и pydant, и не Pydant. повторение?from datetime import datetime
from pydantic import BaseModel
from typing import TypedDict
class UserDict(TypedDict, total=False):
id: int
name: str
signup_ts: datetime
friends: list[int]
class User(BaseModel):
id: int
name: str = "John Doe"
signup_ts: datetime | None = None
friends: list[int] = []
external_data: UserDict = {
'id': 123,
'name': 'Vlad',
'signup_ts': datetime.now(),
'friends': [1, 2, 3],
}
user = User(**external_data)
print(user)
print(user.id)
Ошибка пилога для случая без пользователя userdict :
Argument of type "int | str | datetime | list[int]" cannot be assigned to parameter "id" of type "int" in function "__init__"
Type "int | str | datetime | list[int]" cannot be assigned to type "int"
"datetime" is incompatible with "int"PylancereportGeneralTypeIssues
Argument of type "int | str | datetime | list[int]" cannot be assigned to parameter "name" of type "str" in function "__init__"
Type "int | str | datetime | list[int]" cannot be assigned to type "str"
"datetime" is incompatible with "str"PylancereportGeneralTypeIssues
Argument of type "int | str | datetime | list[int]" cannot be assigned to parameter "signup_ts" of type "datetime | None" in function "__init__"PylancereportGeneralTypeIssues
Argument of type "int | str | datetime | list[int]" cannot be assigned to parameter "friends" of type "list[int]" in function "__init__"
Type "int | str | datetime | list[int]" cannot be assigned to type "list[int]"
"datetime" is incompatible with "list[int]"PylancereportGeneralTypeIssues
(variable) external_data: dict[str, int | str | datetime | list[int]]
Подробнее здесь: https://stackoverflow.com/questions/767 ... ing-basemo
Как заставить пиманс и пидантику понимать друг друга при создании класса BaseModel из внешних данных? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как я могу заставить каждый из моих объектов «отскакивать» друг от друга при столкновении?
Anonymous » » в форуме JAVA - 0 Ответы
- 42 Просмотры
-
Последнее сообщение Anonymous
-