Bazel, python: перенос тестов нарушает импорт в pip_requirement

Я пытаюсь перевести большой проект на использование Bazel и начинаю с малого. Я нашел небольшую оболочку в нашем проекте, и я пытаюсь сначала "базифицировать" ее.

Первоначальная структура пакета была примерно такой:

      pydantic_utils
  +- __init__.py
  +- some_module.py
  +- some_other_module.py
  +- subdir
     +- one.py
  +- tests
     +- __init__.py
     +- test_some_module.py

Я добавил файлы в эту структуру и все заработало нормально, мои тесты запустились и прошли. Но потом я подумал, что поместил бы тесты в корневой каталог нашей библиотеки-оболочки. Поэтому я переместилtest_some_moduleна один уровень выше, переместилpy_testориентироваться наBUILD.bazelфайл в корневом каталоге, изменилsrcsобеих целей, чтобы не включать файлы другой цели:

      load("@rules_python//python:defs.bzl", "py_library", "py_test")
load("@my_pip_install//:requirements.bzl", "requirement")

py_library(
    name = "pydantic_utils",
    srcs = glob(
        ["*.py"],
        exclude = ["test_*.py"],
    ),
    visibility = ["//visibility:public"],
    deps = [
        "//pydantic_utils/subdir",
        requirement("pydantic"),
    ],
)

py_test(
    name = "test_pydantic_utils_dp",
    srcs = glob([
        "test_*.py",
    ]),
    main = "test_some_module.py",
    deps = [
        "//pydantic_utils",
        requirement("pytest"),
    ],
)

Но теперь я получаю сообщение об ошибке, чтоpydanticпо какой-то причине не может импортировать TYPE_CHECKING.

      ...pydantic_utils/test_some_module.py", line 2, in <module>
    from typing import Any

...

  File "pydantic/__init__.py", line 2, in init pydantic.__init__
    from .models import (
  File "pydantic/dataclasses.py", line 1, in init pydantic.dataclasses
    import re
ImportError: cannot import name TYPE_CHECKING

Это очень расплывчатый вопрос, но я понятия не имею, как начать его диагностировать. Может кто-нибудь мне помочь?

1 ответ

Пожалуйста, обновите ваш Python до последней версии, если вы используете старую. Он имеет поддержку до 3.10 и выше. Это общий журнал ошибок из реализации Python. Обратитесь, если вы все еще видите ошибку после обновления.

Другие вопросы по тегам