Feature/migrate to pydantic v2
Обновлены зависимости:
- Обновлена основная зависимость
pydantic >=2.11,<3.0 - Добавлена зависимость
pydantic-settings = "^2.9.1" - Обновлены
tg-api,yostateна версии с поддержкой Pydantic v2 (по git-commit'ам) - Добавлена библиотека
s3_parsing_toolsв.contrib-candidates
Изменения в моделях и конфигурации:
- Проект полностью переведен на pydantic>=2.11:
- Заменен
BaseModel.Configнаmodel_config = ConfigDict(...) - Все
descriptionизField(...)перенесены в docstring - Заменены валидаторы:
-
@validator->@field_validator -
@root_validator->@model_validator(mode='after') -
@validate_arguments->@validate_call(config=ConfigDict(...))
-
- Обновлены методы сериализации и валидации:
-
.dict()->.model_dump() -
.json()->.model_dump_json() -
.parse_obj()->.model_validate() -
.parse_raw()->.model_validate_json()
-
- Устранено использование
__fields__(заменено наmodel_fields)
Обновления и исправления кода:
- В
tg_bot/states.pyвместо_editable_messages = {...}теперь используется классEditableMessagesс атрибутами - В
mysent/contract.pyпереработан метод_get_all_control_elements()для поддержки любых коллекцийControlElement - В
editable_messages/message_route.py: обновлен_get_messages_contracts()с поддержкойModelPrivateAttrи фильтрацией служебных полей
Тесты
- Актуализированы все тесты в соответствии с изменениями Pydantic v2
- Обновлены ожидаемые ошибки в
response.json()['details']
Инфраструктура:
- Обновлен
settings.py- парсингPostgresDsnчерезurllib.parse - Обновлены
env_settings.pyпод Pydantic v2 (BaseSettings, валидаторы) - Обновлены переменные в
docker-compose.yml:DJ__ALLOWED_HOSTSDJ__CSRF_TRUSTED_ORIGINS
Edited by Павел Колотов