0

I am trying to move a large project to using Bazel, and I am starting small. I have found a small wrapper around pydantic in our project, and I am trying to "bazelify" that first.

The initial structure of the package was something like this:

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

I added BUILD.bazel files to this structure and everything worked fine, my tests ran and passed. But then I thought, I'd put the tests into the root dir of our wrapper lib. So I moved the test_some_module one level up, moved the py_test target to the BUILD.bazel file in the root dir, modified the srcs of both targets not to include the other target's files:

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"),
    ],
)

But now I get an error, that pydantic cannot import TYPE_CHECKING for some reason.

...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

It is a very vague question, but I have no idea how to begin to diagnose it. Can anyone help me?

Ibolit
  • 9,218
  • 7
  • 52
  • 96
  • It was python 3.10, it was probably the latest version then. I will try to reproduce this issue with minimal code. Thank you for the answer, though. – Ibolit Nov 15 '22 at 07:57

1 Answers1

1

Please upgrade your python to the latest version if you are using the old one. It has support upto 3.10 and above. Thats a general error log from Python implementation. Reach out if you are still seeing the error after the upgrade.

SG_Bazel
  • 343
  • 2
  • 7
  • When I posted that question, the python interpreter was at 3.10, I _think_, but I am not sure now. I will check as soon as I get back to that project. Thank you. – Ibolit Dec 02 '22 at 05:13