Допустим, у вас есть класс
User для базы данных, где есть id, email, username и created_at. Вам нужен класс UserUpdate для API, где id и created_at менять нельзя, а остальные поля необязательны, можно обновить только email.Сейчас приходится вручную писать новый класс и дублировать поля.
С PEP 827 можно будет сгенерировать его одной строкой:
UserUpdate = Partial[Omit[User, "id" | "created_at"]]
—
Omit убирает лишние поля из базового класса—
Partial делает оставшиеся необязательными— Если тип
email изменится в главной модели, он автоматически обновится и в UserUpdateВместо копипасты под каждый эндпоинт (Create, Update, Read) вы описываете одну модель и генерируете производные. И всё это работает на уровне статического анализа. Черновик нацелен на Python 3.15.
@zen_of_python (теперь и в Max)