is there a way to prevent or alert in case a member is imported from within a module?
is there a way to prevent or alert in case a member is imported from within a module?
Let's say I have the following structure:
my_module/ __init__.py utilities.py
and __init__.py
contains
python
from .utilities import SomeUtilityFunction
Is there a way to prevent or alert developers when they do
python
from my_module.utilities import SomeUtilityFunction
instead of
python
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?
You could guard it.
__init__.py
:utilities.py
:Take this with a grain of salt, as I'm typing this on my phone and haven't actually tried it.
Alternatively there's the
import-guard
package on PyPI. No idea if it's any good, though. Just something a quick search brought up.Edit:
Ok, I tried my suggestion and it doesn't work.
This approach seems quite overkomplex. Instead of having these errors on runtime, stuff like this should sit in linter rules of any kind.
It's only useful during development there.