Python风格指南检查器
项目描述
pep8 - Python 风格指南检查器
pep8 是一个工具,用于检查您的 Python 代码是否符合 PEP 8 中的一些风格约定。
功能
插件架构:添加新检查很容易。
可解析输出:在编辑器中跳转到错误位置。
小巧:仅一个 Python 文件,仅需要 stdlib。您可以使用 pep8.py 文件来完成此目的。
附带全面的测试套件。
安装
您可以使用以下命令安装、升级、卸载 pep8.py
$ pip install pep8 $ pip install --upgrade pep8 $ pip uninstall pep8
还有适用于 Debian/Ubuntu 的软件包,但它不总是最新版本。
示例用法和输出
$ pep8 --first optparse.py optparse.py:69:11: E401 multiple imports on one line optparse.py:77:1: E302 expected 2 blank lines, found 1 optparse.py:88:5: E301 expected 1 blank line, found 0 optparse.py:222:34: W602 deprecated form of raising exception optparse.py:347:31: E211 whitespace before '(' optparse.py:357:17: E201 whitespace after '{' optparse.py:472:29: E221 multiple spaces before operator optparse.py:544:21: W601 .has_key() is deprecated, use 'in'
您还可以让 pep8.py 显示每个错误的源代码,甚至是来自 PEP 8 的相关文本
$ pep8 --show-source --show-pep8 testsuite/E40.py testsuite/E40.py:2:10: E401 multiple imports on one line import os, sys ^ Imports should usually be on separate lines. Okay: import os\nimport sys E401: import sys, os
或者您还可以显示每个错误出现的频率
$ pep8 --statistics -qq Python-2.5/Lib 232 E201 whitespace after '[' 599 E202 whitespace before ')' 631 E203 whitespace before ',' 842 E211 whitespace before '(' 2531 E221 multiple spaces before operator 4473 E301 expected 1 blank line, found 0 4006 E302 expected 2 blank lines, found 1 165 E303 too many blank lines (4) 325 E401 multiple imports on one line 3615 E501 line too long (82 characters) 612 W601 .has_key() is deprecated, use 'in' 1188 W602 deprecated form of raising exception
链接
变更日志
1.7.1 (2017-10-22)
变更
通过警告消息显著指出,该工具不再作为 pep8 发布,并且仅将在 pycodestyle 软件包中修复
1.7.0 (2016-01-12)
公告
仓库已迁移至 GitHub 上的 PyCQA 组织:https://github.com/pycqa/pep8
变更
撤销了 #368,"选项传递到命令行时只接受这些选项" 功能的修复。这会给 pep8 和 flake8 带来许多意外的后果,我将在有更多时间时重新工作。
添加了对 Python 3.5 的支持。(问题 #420 & #459)
添加了对多行 config_file 选项解析的支持。(问题 #429)
改进了参数解析。(问题 #420 & #456)
错误
修复了 Python 3 上的 BytesWarning。(问题 #459)
1.6.2 (2015-02-15)
变更
添加了对在二元运算符周围断行的检查。(问题 #197,拉取请求 #305)
错误
在 process_options() 中恢复了 config_file 参数。(问题 #380)
1.6.1 (2015-02-08)
变更
在引用之前分配变量。(问题 #287)
错误
由于未分配 local_dir 变量而抛出异常。(问题 #377)
1.6.0 (2015-02-06)
新闻
Ian Lee <ianlee1521@gmail.com> 加入项目作为维护者。
变更
报告 lambda 分配的 E731。(问题 #277)
报告 E704 而不是 E701 作为单行 def。在默认配置中不要报告此错误。(问题 #277)
将代码 E111、E112 和 E113 替换为代码 E114、E115 和 E116,用于注释的坏缩进。(问题 #274)
当块注释以多个 # 开头时,报告 E266 而不是 E265。(问题 #270)
报告 E402,因为导入语句不在文件顶部。(问题 #264)
不强制在 ** 操作符周围使用空格。(问题 #292)
在规范化过程中从路径中删除空白。(问题 #339 / #343)
更新 --format 文档。(问题 #198 / 拉取请求 #310)
将 .tox/ 添加到默认排除项。(问题 #335)
在默认配置中不要报告 E121 或 E126。(问题 #256 / #316)
允许在注解函数中等于号周围使用空格。(问题 #357)
如果是在内联注释中,允许尾部反斜杠。(问题 #374)
如果使用了 --config,则只处理该配置。否则,合并用户和本地配置。(问题 #368 / #369)
错误修复
如果 Checker.build_tokens_line() 返回 None,则不会崩溃。(问题 #306)
如果 os.path.expanduser() 抛出 ImportError,则不会崩溃。(问题 #297)
关键字参数等于号周围缺失的空格不一定报告,E251。(问题 #323)
修复了假阳性 E711/E712/E713。(问题 #330 和 #336)
如果换行符被转义,不要跳过物理检查。(问题 #319)
刷新 sys.stdout 以避免与打印的竞态条件。有关详细信息,请参阅 flake8 错误:[https://gitlab.com/pycqa/flake8/issues/17](https://gitlab.com/pycqa/flake8/issues/17)。(问题 #363)
1.5.7 (2014-05-29)
错误修复
跳过“管道破裂”信号的跟踪回溯。(问题 #275)
如果 setup.cfg 或 tox.ini 中的选项不被识别,不要退出。
即使最后一行不以换行符结尾,也要检查最后一行。(问题 #286)
在 Python 2 中始终以通用换行符模式打开文件。(问题 #288)
1.5.6 (2014-04-14)
错误修复
即使最后一行没有结束换行符,也要检查最后一行。(问题 #273)
1.5.5 (2014-04-10)
错误修复
修复与 E22 检查和内联注释相关的回归。(问题 #271)
1.5.4 (2014-04-07)
错误修复
修复多行文档字符串之前的 E303 负偏移。(问题 #269)
1.5.3 (2014-04-04)
错误修复
修复错误发生在物理行的最后一个字符时错误的偏移计算。(问题 #268)
1.5.2 (2014-04-04)
变更
分发通用 wheel 文件。
错误修复
对于带有注释的 E303 正确报告行号。(问题 #60)
不允许在参数等号后跟换行。(问题 #252)
修复多行字符串报告的错误行号。(问题 #220)
修复多行字符串的 E121/E126 假阳性。(问题 #265)
修复 Python 2.5 中未检测到的 E501。(问题 #265)
当行包含制表符时,修复使用 --show-source 的光标位置。(问题 #263)
1.5.1 (2014-03-27)
错误修复
修复多行字符串的 E125 错误导致的崩溃。(问题 #263)
1.5 (2014-03-26)
变更
对于具有与下一逻辑行相同缩进的视觉缩进行,报告 E129 而不是 E125。(问题 #126)
对于块注释之前的空间报告 E265。(问题 #190)
当推荐使用 not in 和 is not 操作符时,报告 E713 和 E714。(问题 #236)
如果无法包裹,则允许在多行字符串和注释中存在长行。(问题 #224)。
可选地使用 # noqa 禁用多行字符串内部物理行检查。(问题 #242)
将 E121 的文本更改为报告“悬垂行缩进不足,以悬挂缩进”而不是缩进不是 4 的倍数。
如果 E121 或 E126 错误在 ignore 列表中,则报告 E131 而不是 E121/E126,如果悬垂缩进在同一个连续块中不一致。
如果悬垂缩进具有额外的缩进,则即使缩进不是 4 的倍数,也报告 E126 而不是 E121。
错误修复
允许检查器在空文件上报告错误。(问题 #240)
修复使用具有 flake8 扩展中声明的代码的 --select 时忽略过多的检查。(问题 #216)
修复多个括号回归。(问题 #214)
修复 StyleGuide 以解析本地配置,如果指定了关键字参数 paths。(问题 #246)
修复悬垂缩进的 E124 假阳性。(问题 #254)
修复具有嵌入式冒号的 E126 的假阳性。(问题 #144)
修复使用制表符缩进时的 E126 假阳性。(问题 #204)
修复当 exclude 在配置文件中且当前目录不是项目目录时忽略的行为。(问题 #247)
逻辑检查可以返回 None 而不是空迭代器。(问题 #250)
如果只有第一个缩进以制表符开头,则不要报告多个 E101。(问题 #237)
修复一个罕见的 W602 假阳性。(问题 #34)
1.4.6 (2013-07-02)
变更
尊重 E711 和 E712 错误的 # noqa。(问题 #180)
如果项目目录中同时存在 tox.ini 和 setup.cfg,则合并其内容。 tox.ini 文件具有优先权(与之前相同)。(问题 #182)
将 --select 的优先级高于 --ignore。(问题 #188)
比较排除文件时的完整路径。(问题 #186)
添加了新的选项 --hang-closing 用于切换到悬挂缩进关闭括号的替代风格。为缺少缩进的关闭括号添加错误 E133。(问题 #103)
接受悬挂缩进关闭括号的两种风格。默认配置下不报告错误 E123。(问题 #103)
错误修复
当文档包含空字节时,运行 AST 检查不会崩溃。(问题 #184)
在忽略 E123 的情况下,正确报告其他 E12 错误。(问题 #103)
修复文件包含 BOM 时 E261/E262 的误报。(问题 #193)
修复有时未检测到 E701、E702 和 E703。(问题 #196)
修复在某些情况下未检测到 E122。(问题 #201 和 #208)
修复具有多个括号的 E121 误报。(问题 #203)
1.4.5 (2013-03-06)
当未指定路径时,不要尝试从 stdin 读取。此功能自 1.4.3 版本开始添加,但在 Windows 上不受支持。使用 - 文件名参数从 stdin 读取。此用法自 1.3.4 版本开始支持。(问题 #170)
在 setup.py 中不需要 setuptools。它解决了 pip 和 Python 3 的问题。(问题 #172)
将 __pycache__ 添加到忽略列表。
更改 E251 的误导性消息。(问题 #171)
当源文件有编码 cookie 或第一行注释时,不要报告误报的 E302。(问题 #174)
重新组织测试,并添加 API 和命令行用法及选项的测试。(问题 #161 和 #162)
当将 select 传递给 StyleGuide 构造函数时,忽略未明确选择的全部检查。
1.4.4 (2013-02-24)
对于位运算符、位移运算符或取模运算符周围的空白,报告 E227 或 E228 而不是 E225。(问题 #166)
更改 E226 的消息,使其明确指出它是关于算术运算符的。
修复使用带有制表符的续行符时的误报 E128。
修复与 --diff 选项相关的回归。(问题 #169)
修复 TestReport 类以打印意外的警告和错误。
1.4.3 (2013-02-22)
在安装时隐藏 --doctest 和 --testsuite 选项。
修复语法无效时 AST 检查器崩溃的问题。(问题 #160)
未指定路径时从标准输入读取。
在 Control+C 时启动优雅的关闭。
允许为 StyleGuide 更改 checker_class。
1.4.2 (2013-02-10)
支持第三方应用程序提供的 AST 检查器。
使用 register_check(func_or_cls, codes) 注册新的检查器。
允许使用自定义解析器构造 StyleGuide。
在 if 语句之后接受没有括号的视觉缩进。(问题 #151)
修复使用 # noqa 与续行符时出现的 UnboundLocalError。(问题 #158)
重新排列 StandardReport 的行。
在检查 E12 续行时展开制表符。(问题 #155)
将测试类 TestReport 和特定的测试函数重构到单独的测试模块中。
1.4.1 (2013-01-18)
允许注释中使用 sphinx.ext.autodoc 语法。(问题 #110)
对于尾随分号,报告 E703 而不是 E702。(问题 #117)
除了 # nopep8 之外,还要尊重 # noqa。(问题 #149)
公开 OptionParser 工厂以提高扩展性。
1.4 (2012-12-22)
报告E226而不是E225,以在常见运算符(*、**、/、+ 和 -)周围使用可选的空白。此新的错误代码在默认配置中会被忽略,因为PEP 8建议“用自己的判断力”。(问题#96)
以# nopep8结尾的行在行长度E501或延续行缩进E12*时不会引发错误。(问题#27)
修复当源文件包含无效行结束符"\r\r\n"时的断言错误。(问题#119)
如果存在,请阅读[pep8]部分tox.ini或setup.cfg。(问题#93和#141)
添加基于Sphinx的文档,并发布在http://pep8.readthedocs.org/。(问题#105)
1.3.4 (2012-12-18)
修复带有注释的E124和E128的误报。(问题#100)
修复使用bpython运行时的stdin错误。(问题#101)
修复E401的误报。(问题#104)
报告列表中的嵌套字典的E231。(问题#142)
在行首捕获E271。(问题#133)
修复多行注释的E126误报。(问题#138)
修复运算符前有逗号的E221误报。(问题#135)
修复在单行块上失败的--diff。(问题#137)
修复目录路径的--exclude开关。(问题#111)
使用- filename从标准输入读取。(问题#128)
1.3.3 (2012-06-27)
修复延续行检查器的回归。(问题#98)
1.3.2 (2012-06-26)
将--show-pep8重置为以前的操作:不要隐含--first。(问题#89)
添加E902用于IO错误。(问题#87)
修复E121的误报,并遗漏了E124。(问题#92)
在Windows上设置合理的默认配置文件路径。(问题#95)
允许在配置文件中使用verbose。(问题#91)
在错误信息中显示强制的max-line-length。(问题#86)
1.3.1 (2012-06-18)
解释期望的配置选项。接受并推荐使用连字符而不是下划线作为选项名称。(问题#82)
当作为模块使用时不要读取用户配置(除非将config_file=True传递给StyleGuide构造函数)。
修复E12系列的错误或遗漏的案例。
修复E122被遗漏的案例。(问题#81)
1.3 (2012-06-15)
移除全局配置,并围绕StyleGuide类重构库;添加配置各种报告的能力。(问题#35和#66)
从~/.config/pep8读取用户配置,并从./.pep8读取本地配置。(问题#22)
修复多行字符串中嵌入反斜杠的E502。(问题#68)
修复Python 3迭代解包的E225(PEP 3132)。(问题#72)
在默认配置中启用E12系列的新检查器。
为E712错误建议更不易出错的替代方案。
重写检查器以提高运行速度(E22、E251、E27)。
修复了解析无效代码时的崩溃(过多的括号关闭)。
修复延续行缩进的E127和E128。(问题#74)
添加新的选项--format以自定义错误格式。(问题#23)
添加新的选项--diff以仅检查修改过的代码。统一diff从STDIN读取。示例:hg diff | pep8 --diff(问题#39)
正确报告失败次数,当--doctest或--testsuite失败时,将退出代码设置为1。
正确检测Python 3中的编码。(问题#69)
停止支持Python 2.3、2.4和3.0。(问题#78)
1.2 (2012-06-01)
添加E121至E128以检查延续行的缩进。默认情况下,这些检查是禁用的。如果您想强制进行所有检查,请使用开关--select=E,W。由Sam Vilain提供补丁。(问题#64)
添加E721以检查直接类型比较。(问题#47)
添加E711和E712以检查对单例的比较。(问题#46)
修复虚假的E225和E701以处理函数注解。(问题#29)
添加E502以处理括号之间的显式行连接。
当使用--show-source打印源代码时修复E901。
为每个检查器报告所有错误,而不是仅报告每行的第一个出现。
选项--show-pep8意味着--first。
1.1 (2012-05-24)
添加E901以报告语法错误。(问题#63和#30)
添加E271、E272、E273和E274以检查关键字周围的冗余空格。(问题#57)
添加用于测试的tox.ini配置文件。(问题#61)
添加用于持续集成的.travis.yml配置文件。(问题#62)
1.0.1 (2012-04-06)
修复不一致的版本号。
1.0 (2012-04-04)
修复W602 raise以处理多字符名称。(问题#53)
0.7.0 (2012-03-26)
现在--first仅打印每个错误的第一个出现。由于它是默认行为,因此--repeat标志已过时。(问题#6)
允许指定--max-line-length。(问题#36)
使shebang更加灵活。(问题#26)
将测试套件添加到捆绑包中。(问题#25)
对Jython的修复。(问题#49)
添加PyPI分类器。(问题#43)
修复--exclude选项。(问题#48)
修复W602,接受3个参数的raise。(问题#34)
如果DEFAULT_IGNORE == '',则正确选择所有测试。
0.6.1 (2010-10-03)
修复不一致的版本号。(问题#21)
0.6.0 (2010-09-19)
重新组织并增强测试套件,以便用更少的测试文件检查更多失败。有关语法细节,请参阅run_tests文档字符串。
修复E225:接受print >>sys.stderr, "..."语法。
修复E501以处理包含多字节编码字符的行。(问题#7)
修复在某些情况下未检测到E221、E222、E223、E224。(问题#16)
修复E211以拒绝v = dic['a'] ['b']。
如果发现任何错误或警告,则退出代码始终为1。(问题#10)
--ignore检查现在真正被忽略,特别是与--count一起使用时。(问题#8)
带有空格的空行现在产生W293而不是W291:一些开发者想忽略此警告并将空行缩进以轻松将代码粘贴到Python解释器中。
修复E301:在缩进块之前不需要空白行。(问题#14)
修复E203以接受NumPy切片表示法a[0, :]。(问题#13)
性能改进。
修复Python 3中解码和非UTF8文件的检查。
修复在Python 3上运行时拒绝True+False的E225。
修复行以操作符开头时的异常。
允许在关闭)、}或]之前换行。(问题#5)
0.5.0 (2010-02-17)
已将--count开关修改为打印到sys.stderr,并在发现任何错误或警告时设置退出代码为1。
已从标准检查中删除E241和E242。如果希望包含这些检查,请使用开关--select=E,W。(问题#4)
在第一个类方法或嵌套函数定义之前不需要空行,即使存在文档字符串。(问题#1)
添加了--version开关。
修复了与Python 3相关的解码错误。(问题#13 [1])
添加了与--ignore类似的--select选项。
添加了检查E261和E262,用于检查行内注释前的空格。
新的检查W604警告关于弃用的反引号使用。
新的检查W603警告关于弃用的操作符<>。
性能改进,由于重写了E225。
E225现在接受
一元操作符或类似符号后面没有空白。(问题#9 [1])
带有参数解包或关键字默认值的lambda函数。
为模块级逻辑块保留“2空行”。(E303)
允许多行注释。(E302,问题#10 [1])
0.4.2 (2009-10-22)
现在类和类方法上的装饰器是OK的。
0.4 (2009-10-20)
0.3.1 (2009-09-14)
对注释的修复:在检查项目之间的空行时不要计算它们。
添加了setup.py以用于pypi上传和easy_installability。
0.2 (2007-10-16)
大量的修复和改进。
0.1 (2006-10-01)
第一个版本。
项目详细信息
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
构建分发
pep8-1.7.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fe249b52e20498e59e0b5c5256aa52ee99fc295b26ec9eaa85776ffdb9fe6374 |
|
MD5 | 603821d06db945c71d811b5a8d78423c |
|
BLAKE2b-256 | 01a064ba19519db49e4094d82599412a9660dee8c26a7addbbb1bf17927ceefe |
pep8-1.7.1-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b22cfae5db09833bb9bd7c8463b53e1a9c9b39f12e304a8d0bba729c501827ee |
|
MD5 | fc720c80ac140fdbe92564066bed209c |
|
BLAKE2b-256 | 423f669429ce58de2c22d8d2c542752e137ec4b9885fff398d3eceb1a7f5acb4 |