Как заставить пиманс и пидантику понимать друг друга при создании класса BaseModel из внешних данных?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как заставить пиманс и пидантику понимать друг друга при создании класса BaseModel из внешних данных?

Сообщение Anonymous »

Я пытаюсь создать экземпляр 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»