Open
Description
🐞 bug report
Affected Rule
gazelle
Is this a regression?
It's been like this for as long as I've been using rules_python.
Description
If there's a file called, say, typing.py
and a sibling file foo.py
has from typing import TYPE_CHECKING
or similar, gazelle will add :typing
to the foo
target deps (or to the package srcs
for package generation mode).
The correct behavior is to not include :typing
unless the import is from . import typing
or from .typing import MyType
or import .typing as typing
.
🔬 Minimal Reproduction
Dir structure:
$ tree gazelle/python/testdata/stdlib_confusion/
gazelle/python/testdata/stdlib_confusion/
├── file_based
│ ├── BUILD.in
│ ├── BUILD.out
│ ├── foo.py
│ ├── __init__.py
│ └── typing.py
├── package_based
│ ├── BUILD.in
│ ├── BUILD.out
│ ├── foo.py
│ ├── __init__.py
│ └── typing.py
├── README.md
├── test.yaml
└── WORKSPACE
--- FAIL: TestGazelleBinary (0.00s)
--- FAIL: TestGazelleBinary/stdlib_confusion (0.02s)
python_test.go:186: stdlib_confusion/file_based/BUILD diff (-want,+got):
(
"""
... // 6 identical lines
srcs = ["foo.py"],
visibility = ["//:__subpackages__"],
+ deps = [":typing"],
)
... // 5 identical lines
"""
)
python_test.go:186: stdlib_confusion/package_based/BUILD diff (-want,+got):
(
"""
... // 5 identical lines
"__init__.py",
"foo.py",
+ "typing.py",
],
visibility = ["//:__subpackages__"],
)
"""
)