帮助消除通配符导入的工具

Pau*_*aul 21 python code-analysis pylint

我正在重构并消除一些相当单一的代码上的通配符导入.

Pylint似乎在列出通配符导入所带来的所有未使用的导入方面做得很好,但我希望它能提供一个已使用的导入列表,这样我就可以快速替换通配符导入.有什么快速的方法吗?我即将解析pyLint的输出并set.difference()对此和dir()导入的模块执行操作.但我敢打赌,我不知道有一些工具/程序.

gur*_*lex 6

注意:pylint不建议使用一组二手进口产品。更改此设置时,您必须知道其他模块正在导入您正在修改的代码,这些模块可能使用属于重构的模块名称空间的符号,这仅是因为您有未使用的导入。

我建议按照以下步骤进行重构from foo import *

  • 在交互式外壳中,键入:

    import re
    import foo as module # XXX use the correct module name here!
    
    module_name = module.__name__
    import_line = 'from %s import (%%s)' % module_name
    length = len(import_line) - 3
    print import_line % (',\n' + length * ' ').join([a for a in dir(module) 
                                                                   if not re.match('__.*[^_]{2}', a)])
    
    Run Code Online (Sandbox Code Playgroud)
  • from foo import *上面打印的一行替换行

  • 运行pylint,并删除pylint标记的未使用的导入
  • 在整个代码的基础上再次运行pylint,以查找不存在的sympol的导入
  • 运行单元测试

重复 from bar import *


Que*_*ser 5

这是 dewildcard,一个基于 Alex 最初想法的非常简单的工具:

https://github.com/quentinsf/dewildcard