bazel-contrib / bazel-contrib/rules_python

Gazelle will confuse stdlib packages/modules with sibling modules

オープン
#3,097 コメント 1 件 リアクション 0 件 担当者 1 名 @dougthor42 が担当を希望しています GitHub で見る
gazelle
主要言語
Starlark
スター
688
フォーク
721
平均マージ
15時間 7分
マージ済み PR(30日)
76

説明

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

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。