跳转到主要内容

检测不兼容Python 3的代码。

项目描述

Build status Test coverage status

py3kwarn检测不兼容Python 3的代码。它提供flake8风格的警告信息。

另请参阅

欢迎提交拉取请求!

安装

支持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!

待办事项

  • 更友好的消息。

  • flake8 扩展.

  • 忽略某些错误的标志

  • 让它更快。目前与其他语法检查器相比相当慢。可能需要进行主要重构。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。

源代码分发

py3kwarn-0.4.4.tar.gz (93.3 kB 查看散列)

上传时间 源代码

由以下支持