bazel-contrib / bazel-contrib/rules_python
Gazelle will confuse stdlib packages/modules with sibling modules
- Dominant language
- Starlark
- Stars
- 688
- Forks
- 721
- Avg merge
- 14h 49m
- Merged PRs (30d)
- 81
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__"],
)
"""
)
```
Contributor guide
Assessment
This issue has not been assessed yet.