rules_python
rules_python copied to clipboard
Add Gazelle support for `importlib.import_module`?
🚀 feature request
Relevant Rules
- gazelle
Description
First off, I want to say that I'm not sure if this is a good idea or not. So feel free to shoot it down 🤣.
In https://github.com/bazelbuild/rules_python/pull/1931#issuecomment-2141255218, it was said that the gazelle parser only needs to know about a subset of the python language:
- comments
if __name__ == "__main__"
from foo import bar
import foo
However, there's another way to import other python code: importlib.import_module()
.
Should Gazelle parse these and attempt to add dependencies for them?
Issues
There are a couple pretty big issues with trying to do so:
- In my experience,
importlib.import_module
is typically used as a way to work around circular dependencies. So having Gazelle parse them would just result in a broken build, probably frustrating users more than helping. - There's no way to figure out what the runtime value would be.
- So we could anything that's a string constant:
import_module("foo.bar.baz")
but notmodule = input("Enter a module name: "); import_module(module)
or evenmodule = "foo.bar.baz"; import_module(module)
- So we could anything that's a string constant:
Benefits
Umm... I guess if import_module
is used in a very specific way, then it would make making build files easier.
Describe the solution you'd like
N/A
Describe alternatives you've considered
Manually adding dependencies after running Gazelle. Not a big deal, IMO.