跳转到主要内容

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)

公告

变更

  • 撤销了 #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)

新闻

变更

  • 报告 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.cfgtox.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 inis 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.inisetup.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.inisetup.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)

  • 支持从2.3到3.1的所有Python版本。

  • 新增和大幅扩展的自测试。

  • 添加了--count选项以打印错误和警告的总数。

  • 进一步改进了注释和空行的处理。(问题#1 [1]和其他更改。)

  • 当传递目录时检查目录中的所有py文件(问题#2 [1])。这还防止了遍历非*.py文件的目录时的异常。

  • E231应允许逗号后面跟)。(问题#3 [1]

  • 不再需要在关键字参数或默认参数值周围的等号周围有空格。

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 (80.3 kB 查看哈希值)

上传时间 源代码

构建分发

pep8-1.7.1-py2.py3-none-any.whl (41.5 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持