bazel-contrib / bazel-contrib/rules_python

Gazelle will confuse stdlib packages/modules with sibling modules

Abierto
#3,097 1 comentario 0 reacciones 1 asignado Reclamado por @dougthor42 Ver en GitHub
gazelle
Lenguaje dominante
Starlark
Estrellas
688
Forks
721
Merge medio
15 h 7 min
PR fusionados (30 d)
76

Descripción

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

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.