Как определить две версии одного и того же TypedDict: одну полную, а другую нет?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как определить две версии одного и того же TypedDict: одну полную, а другую нет?

Сообщение Anonymous »

Я пытаюсь определить две версии типизированного словаря для клиента API: одну Total=False для ввода маршрута частичного обновления и другую Total=True для ответа. Любой словарь с подмножеством полей действителен в качестве входных данных, но выходные словари должны иметь все поля.
Я пробовал это:

Код: Выделить всё

class PartialDict(TypedDict, total=False):
name: str
age: int

class FullDict(PartialDict, total=True):
pass
Но это не работает, поскольку Mypy 1.13 не жалуется ни на что из этого:

Код: Выделить всё

x: PartialDict = {}  # ok
y: FullDict = {}  # should fail
Если я отменяю наследование и делаю PartialDict наследованием от FullDict, который определяет поля, Mypy будет жаловаться на обе строки:

Код: Выделить всё

mymodule/types.py:38: error: Missing keys ("name", "age") for TypedDict "PartialDict"  [typeddict-item]
mymodule/types.py:39: error: Missing keys ("name", "age") for TypedDict "FullDict"  [typeddict-item]
Как определить такие типы, как FullDict должен иметь все ключи, а PartialDict может иметь не все из них? Я хотел бы избежать дублирования классов, поскольку мой реальный словарь имеет десятки ключей.

Подробнее здесь: https://stackoverflow.com/questions/791 ... nd-one-not
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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