bazel-contrib / bazel-contrib/rules_python

[gazelle] Adjust how `imports` is auto-generated

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

Description

Discussion moved from an internal doc and discussion with @rickeylev:

> Externally, the Bazel Python rules have an attribute named `imports`. This is a string list of repo-relative paths that should be added to `sys.path`.

@dougthor42 writes in a comment:

> FYI: With gazelle's `python_root` directive, these are autogenerated as package-relative paths, eg `["../../.."]`.
>
> Now that I see [that `imports` is repo-relative], I might submit a PR to change Gazelle to generate repo-relative paths.

@rickeylev replies:

> Hm. Is package-relative better than repo-relative? Quick thought is: they both have pros and cons.
> Which makes me think: is there something that has all pros and no cons?
> To which I think: maybe we can change the logic to more directly express what we're after.
> When src/my_package says "add .. to path", what it really means is: make sure sys.path has a directory with "my_package" as a sub directory.
> So maybe instead we add a top_level_package_name attribute? Under the hood, a quick implementation would be to just do "compute the correct imports attr value automatically". A better impl for the future would be to ensure that some directory with the desired name ends up in sys.path, however that may come to be.
>
> Thanks for the inspiration :)

Contributor guide

Open the contributing guide

Research direction

The issue names Gazelle's Python rules and the generated `imports` attribute, but provides no file, test, or entry point. Start by locating the Gazelle logic that generates `imports` and the related tests; done means the intended path behavior is agreed and covered for the relevant `python_root` cases.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
build-system, tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.