I was recently tasked with maintaining a bunch of code that uses from module import *
fairly heavily.
This codebase has gotten big enough that import c
Here are the other related tools mentioned:
pylint
More about pylint
pylint
is a very good tool built on top of ast
that is already able to tell you where in your code there are from somemodule import *
statements, as well as telling you which imports are not necessary.
example:
# next is what's on line 32
from re import *
this will complain:
W: 32,0: Wildcard import re
W: 32,0: Unused import finditer from wildcard import
W: 32,0: Unused import LOCALE from wildcard import
... # this is a long list ...
Towards a solution?
Note that in the above output pylint
gives you the line numbers. it might be some effort, but a refactoring tool can look at those particular warnings, get the line number, import the module and look at the __all__
list, or using a sandboxed execfile()
statement to see the module's global names (would modulefinder
help with that? maybe...). With the list of global names from __all__
and the names that pylint
complains about, you can have two set()
and proceed to get the difference. Replace the line featuring wildcard imports with specific imports.