检测不兼容Python 3的代码。
项目描述
py3kwarn检测不兼容Python 3的代码。它提供flake8风格的警告信息。
另请参阅
lib2to3 文档以获取有关警告信息的信息。
欢迎提交拉取请求!
安装
支持Python 2.6、2.7和3.3+
$ pip install py3kwarn
…或从git仓库安装
$ pip install -e git+git://github.com/liamcurry/py3kwarn.git#egg=py3kwarn
在vim中使用
您可以使用py3kwarn与syntastic一起使用(请参阅syntastic)。如果您想使用flake8等其他语法检查器与py3kwarn一起使用,则必须在您的vim配置中添加此内容
let g:syntastic_python_checkers=['flake8', 'py3kwarn']
从命令行使用
$ py3kwarn example.py example.py:2:1: PY3K (FixApply) apply(hello, args, kwargs) -> hello(*args, **kwargs) example.py:5:1: PY3K (FixBasestring) basestring -> str example.py:15:1: PY3K (FixDict) d.iteritems(); -> iter(d.items()); example.py:16:1: PY3K (FixDict) d.viewvalues(); -> d.values(); example.py:19:1: PY3K (FixExcept) try:import asdf;except E, T:pass; -> try:import asdf;except E as T:pass; example.py:25:1: PY3K (FixExec) exec code in ns1, ns2; -> exec(code, ns1, ns2); example.py:28:1: PY3K (FixExecfile) execfile('test.py') -> exec(compile(open('test.py').read(), 'test.py', 'exec')) example.py:31:1: PY3K (FixFilter) filter(lambda x: x, [1, 2, 3]) -> [x for x in [1, 2, 3] if x] example.py:36:1: PY3K (FixFuncattrs) test.func_name; -> test.__name__; example.py:37:1: PY3K (FixFuncattrs) test.func_closure; -> test.__closure__; example.py:38:1: PY3K (FixFuncattrs) test.func_dict; -> test.__dict__; example.py:44:1: PY3K (FixHasKey) d.has_key('foobar') -> 'foobar' in d example.py:56:1: PY3K (FixInput) input('FixInput') -> eval(input('FixInput')) example.py:66:1: PY3K (FixItertoolsImports) from itertools import imap -> example.py:67:1: PY3K (FixItertoolsImports) from itertools import ifilter; -> example.py:68:1: PY3K (FixItertoolsImports) from itertools import izip; -> example.py:69:1: PY3K (FixItertoolsImports) from itertools import ifilterfalse; -> from itertools import filterfalse; example.py:62:1: PY3K (FixLong) long; -> int; example.py:75:1: PY3K (FixLong) long -> int example.py:50:1: PY3K (FixImports) import StringIO -> import io example.py:51:1: PY3K (FixImports) import cStringIO; -> import io; example.py:52:1: PY3K (FixImports) import cPickle; -> import pickle; example.py:53:1: PY3K (FixImports) import __builtin__; -> import builtins; example.py:62:1: PY3K (FixIsinstance) isinstance(x, (int, int)) -> isinstance(x, int) example.py:63:1: PY3K (FixIsinstance) isinstance(x, (int, int)); -> isinstance(x, int); example.py:11:1: PY3K (FixCallable) callable('hello') -> isinstance('hello', collections.Callable) example.py:59:1: PY3K (FixIntern) intern(s) -> sys.intern(s)
自动修改代码
可以通过py3kwarn2to3修复问题
$ py3kwarn2to3 --write example.py
测试
测试可以使用 make test。py3kwarn 也支持 tox。这允许快速测试 Python 多个版本的更改。更多详情请查看 tox.ini 文件。
贡献
要贡献,请将该仓库 fork 到您的本地机器。
创建一个虚拟环境并
pip install -r requirements_dev.txt
然后只需提交一个包含您已修复问题的 pull request!
待办事项
更友好的消息。
忽略某些错误的标志
让它更快。目前与其他语法检查器相比相当慢。可能需要进行主要重构。
项目详情
关闭
py3kwarn-0.4.4.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | d4da108f5fecc6db8e7dc2d9365fedb6e7d886577b583ed477c52a92d9250d33 |
|
MD5 | d5f858fd0c7426faacb00fb0df3e4df4 |
|
BLAKE2b-256 | 830e4195e8d0f761b5efe1e1349d988fb73d73707ff5464568aba298fdc1bf6f |