Что внутри:
🔘 TypedDict с closed=True запрещает любые ключи сверх объявленных — раньше лишние ключи в значении типа TypedDict были формально допустимы, и тайпчекер не мог на них ругаться;
🔘 закрытость делает надёжным сужение типов: в объединении Book | DVD проверка "author" in item теперь честно доказывает mypy, что перед ним Book;
🔘 работает и в классовом синтаксисе: class Book(TypedDict, closed=True);
🔘 завершена поддержка дефолтов типовых переменных из PEP 696 — и в старой записи TypeVar("T", default=int), и в новой class Box[T = int], включая рекурсивные дефолты;
🔘 mypy теперь уважает явно аннотированный тип возврата у
__new__ — раньше он молча считал, что __new__ всегда возвращает экземпляр текущего класса;🔘 поддержка TypeForm перестала быть экспериментальной.
Пользуетесь TypedDict для словарей с фиксированной структурой или в таких местах у вас dataclass и pydantic?
@zen_of_python