Понадобилось валидировать данные получаемые и отправляемые по api.
Сделал небольшую “надстройку” над датаклассом - датакласс ValidatedDC.
Валидируются аннотации:
1. Стандартные типы python и пользовательские классы
2. Некоторый алиасы из typing: Any, List, Literal, Optional, Union (можно добавить и другие, но для json-api пока без надобности). Эти алиасы могут быть вложены друг в друга, то есть можно описывать сложные структуры данных.
3. При инициализации экземпляра, если его поле имеет в аннотации потомка ValidatedDC, то в такое поле можно подставить словарь (или список словарей, если поле List), и если он будет валидный, то значение поля станет экземпляром потомка ValidatedDC из аннотации.
Подробнее тут:
https://github.com/EvgeniyBurdin/validated_dc