bazel-contrib / bazel-contrib/rules_python

Bazel 7 namespace collision

Aperta
#1,897 4 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Starlark
Stelle
688
Fork
721
Merge medio
15h 7m
PR unite (30g)
76

Descrizione

# 🐞 bug report

with rules_python 0.31.0 and bazel 7.1.2, there seems to be an issue with naming certain directories with certain names. Wondering if this is expected?

### Description

There is a namespace collision with certain directories

## 🔬 Minimal Reproduction

Build file
example/time/BUILD
```
load("@rules_python//python:defs.bzl", "py_test", "py_library")

py_library(
name = "time_py",
srcs = ["py_test.py"],
)

py_test(
main = "py_test.py",
srcs = [":time_py"],
)
```

`example/time/__init__.py`
```
import time
```

`example/time/py_test.py`
```
import time
```

bazel test //example/time:all --noincompatible_default_to_explicit_init_py will result in an import error

## 🔥 Exception or Error



```
ImportError while importing test module
Hint: make sure your test modules/packages have valid Python names.
Traceback:
../pip_pytest/site-packages/_pytest/python.py:617: in _importtestmodule
mod = import_path(self.path, mode=importmode, root=self.config.rootpath)
../pip_pytest/site-packages/_pytest/pathlib.py:564: in import_path
importlib.import_module(module_name)
/home/ryang/.cache/bazel/_bazel_ryang/7071f3e24af240fa9a28f67dc16192b3/execroot/waabi-av/external/python3/lib/python310.zip/importlib/__init__.py:126: in import_module
return _bootstrap._gcd_import(name[level:], package, level)
:1050: in _gcd_import
???
:1027: in _find_and_load
???
:1001: in _find_and_load_unlocked
???
E ModuleNotFoundError: No module named 'time.py_test'; 'time' is not a package
```

## 🌍 Your Environment

**Operating System:**

ubuntu 20.04

**Output of `bazel version`:**

7.1.2
**Rules_python version:**

0.31.0

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Start by reproducing the failure with example/time/BUILD, example/time/__init__.py, and example/time/py_test.py using the reported Bazel test command and versions. Trace how the Python test is packaged and imported, then verify the behavior around the time namespace collision and confirm that the minimal reproduction no longer raises the reported ModuleNotFoundError.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python
Ambito
build-system
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
30/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.