Skip to content

Feature/migrate to pydantic v2

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

Этот MR переводит проект на Pydantic v2.

Что сделано:

  • Добавлен отдельный Docker-сервис yostate для локальной разработки.
  • Добавлена поддержка переменной PYTHON_VERSION=3.12 по умолчанию в обоих Dockerfile — корневом и тестовом (для устранения предупреждений Docker).
  • Обновлена основная зависимость pydantic до версии >=2.11,<3.0 в pyproject.toml.
  • Обновлена зависимость pydantic до ==2.11.0 в минимальном тестовом окружении.
  • Обновлена зависимость pydantic до >=2.11,<3.0 в максимальном тестовом окружении.
  • Обновлены зависимости в sphinx_docs для поддержки генерации документации с Pydantic 2:
    • обновлен autodoc-pydantic до >=2.0.0
    • добавлен pydantic-settings >= 2.0
  • Все модели адаптированы под Pydantic v2:
    • заменен Config на model_config с использованием ConfigDict
    • заменены validate_all=True на validate_default=True
    • заменен allow_mutation=False на frozen=True
    • keep_untouched заменён на ignored_types
    • заменен .dict() на .model_dump()
    • заменен @validate_arguments на @validate_call
    • заменен .parse_obj() на .model_validate()
  • Актуализированы тесты под Pydantic v2.
  • Добавлены дополнительные тесты для Locator, FrozenLocator, BaseState.
  • В файле sync_crawler.py удалены декораторы @validate_call с методов __init__ и restore, так как они принимают аргументы нестандартных типов, что приводило к ошибкам.

Чеклист к описанию MR:

  • В описании MR указана польза от изменений: кто получит пользу и почему он хочет этого
  • В описании MR указаны ссылки на соответствующие issues в GitLab, если есть
  • В описании MR приложены фрагменты переписки и/или ссылки на обсуждения, если такие велись за пределами GitLab Issues

Чеклист к коду в репозитории:

  • Новый код покрыт автотестами
  • К каждому новому автотесту в docstring описана функция и история в формате Product Flow
  • Документы Product Flow проверены и обновлены, если требуется
    • новый код совместим с !extension к старым концептам
    • новый код не влезает в !exclusion к старым концептам
    • добавлены новые !example в концепты, если требуется
  • Дока в README перечитана и обновлена, если требуется
  • Дока в CONTRIBUTING.md перечитана и обновлена, если требуется
  • Дока в sphinx_docs/source/index.rst перечитана и обновлена, если требуется
  • Обновлён файл CHANGES.md
Edited by Павел Колотов

Merge request reports