Skip to content

Feature/migrate to pydantic v2

Павел Колотов requested to merge feature/migrate-to-pydantic-v2 into main

Обновлены зависимости:

  • Обновлена основная зависимость 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_HOSTS
    • DJ__CSRF_TRUSTED_ORIGINS
Edited by Павел Колотов

Merge request reports