Let’s say I have the following structure:

my_module/
  __init__.py
  utilities.py

and __init__.py contains

from .utilities import SomeUtilityFunction

Is there a way to prevent or alert developers when they do

from my_module.utilities import SomeUtilityFunction

instead of

from my_module import SomeUtilityFunction

The problem arose when a few modules started using a function that was imported inside a module in which it wasn’t used, while also being available on the module’s __init__.py, so after linting the file and removing the unused import my tests started failing.

any other advice for situations like this?

  • sebsch@discuss.tchncs.de
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    1 year ago

    This approach seems quite overkomplex. Instead of having these errors on runtime, stuff like this should sit in linter rules of any kind.

    • Chais
      link
      fedilink
      arrow-up
      2
      ·
      1 year ago

      It’s only useful during development there.