bazel-contrib / bazel-contrib/rules_python

Gazelle will confuse stdlib packages/modules with sibling modules

Đang mở
#3,097 1 bình luận 0 reaction 1 người được giao Được @dougthor42 nhận Xem trên GitHub
gazelle
Ngôn ngữ chính
Starlark
Star
688
Fork
721
Merge trung bình
15 giờ 7 phút
Pull request đã merge (30 ngày)
76

Mô tả

# 🐞 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__"],
   )
   """
  )
```

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.