bazel-contrib / bazel-contrib/rules_python
Bazel 7 namespace collision
- Dominant language
- Starlark
- Stars
- 688
- Forks
- 721
- Avg merge
- 15h 7m
- Merged PRs (30d)
- 76
Description
# 🐞 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
Contributor guide
Research direction
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.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- build-system
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100