bazel-contrib / bazel-contrib/rules_python
Gazelle will confuse stdlib packages/modules with sibling modules
- Langage dominant
- Starlark
- Étoiles
- 688
- Forks
- 721
- Merge moyen
- 15 h 7 min
- PR mergées (30 j)
- 76
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__"],
)
"""
)
```
Guide de contribution
Ouvrir le guide de contribution
Évaluation
Cette issue n'a pas encore été évaluée.