bazel-contrib / bazel-contrib/rules_python

Gazelle generates py_proto_library with imports attribute when in a non-root python_root

Open
#3,494 0 comments 0 reactions 0 assignees View on GitHub
gazelle
Dominant language
Starlark
Stars
688
Forks
721
Avg merge
15h 7m
Merged PRs (30d)
76

Description

# 🐞 bug report

### Affected Rule

`gazelle`

### Is this a regression?

No, I believe it's a new feature introduced by https://github.com/bazel-contrib/rules_python/issues/2994 and it seems to be not working as expected in the specific situation of this report.

### Description

When using gazelle to generate [`py_proto_library`](https://github.com/bazel-contrib/rules_python/issues/2994), it doesn't work as expected when the proto file is in a subfolder of a python root that differs from the repo root (specified with the directive `# gazelle:python_root`).

Gazelle generates the target with an `imports` attribute, which is not supported and thus the target fails to build.

## 🔬 Minimal Reproduction

https://github.com/regb/issue-reports/tree/main/rules_python/py_proto_imports

## 🔥 Exception or Error

Gazelle runs smoothly but generates the invalid targets, then running build generate this error:



$ bazel build ...
ERROR: /home/regb/vcs/issue-reports/rules_python/py_proto_imports/src/mypackage/BUILD.bazel:10:17: //src/mypackage:example_py_pb2: no such attribute 'imports' in 'py_proto_library' rule
ERROR: package contains errors: src/mypackage
ERROR: package contains errors: src/mypackage: //src/mypackage:example_py_pb2: no such attribute 'imports' in 'py_proto_library' rule
WARNING: Target pattern parsing failed.
ERROR: Skipping '...': Error evaluating '...': error loading package 'src/mypackage': Package 'src/mypackage' contains errors
ERROR: Error evaluating '...': error loading package 'src/mypackage': Package 'src/mypackage' contains errors
INFO: Elapsed time: 0.136s
INFO: 0 processes.
ERROR: Build did NOT complete successfully

## 🌍 Your Environment

**Operating System:**

  

Ubuntun 22.04

**Output of `bazel version`:**

  

8.5.0

**Rules_python version:**

  

1.7.0 (also tested 1.6.3)

Contributor guide

Open the contributing guide

Research direction

Start with the minimal reproduction at regb/issue-reports/rules_python/py_proto_imports and inspect the generated BUILD.bazel under src/mypackage, focusing on the # gazelle:python_root directive and the generated py_proto_library target. Run Gazelle followed by bazel build ...; done means the generated target no longer contains the unsupported imports attribute and the build succeeds.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
build-system, tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.