Skip to content

Add Gazelle support for importlib.import_module? #1938

Open
@dougthor42

Description

@dougthor42

🚀 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 #1931 (comment), 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:

  1. 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.
  2. 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 not
      module = input("Enter a module name: "); import_module(module) or even
      module = "foo.bar.baz"; import_module(module)

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions