flake8插件,用于调用black作为代码风格验证器
项目描述
简介
这是一个MIT许可的flake8插件,用于使用命令行代码格式化工具black验证Python代码风格。它可以从Python包索引(PyPI)安装。
Black,“无妥协的代码格式化工具”,通常用于就地编辑Python代码以匹配其编码风格,这是PEP 8风格指南的严格子集。
此插件的目的是在flake8插件生态系统中运行black --check ...。您可能通过git pre-commit钩子或作为持续集成测试的一部分来使用它。
如果您使用pre-commit,请将其配置为直接调用black和/或flake8 - 您根本不需要flake8-black。
Flake8验证代码
flake8的早期版本假定验证代码以单个字符为前缀,这在插件生态系统中导致了冲突问题。自v3.0版本以来,flake8支持更长的前缀,因此该插件使用BLK作为其前缀。
代码 |
描述(及注意事项) |
BLK100 |
Black会进行更改。 |
BLK9## |
内部错误(各种,见下文) |
BLK900 |
无法加载文件:… |
BLK901 |
无效输入。 |
BLK997 |
无效的TOML文件:… |
BLK998 |
无法访问flake8行长度设置(不再使用)。 |
BLK999 |
意外异常。 |
请注意,如果您的Python代码有语法错误,使用black --check ...会将其报告为错误。同样,flake8 ...默认情况下会报告语法错误,但重要的是它似乎不会调用插件,因此您将不会获得额外的BLK错误。
安装
需要Python 3.7或更高版本,但可以在为旧版本的Python编写的Python代码上使用black。
您可以使用pip安装flake8-black,如果尚未安装,则应同时安装flake8和black。
$ pip install flake8-black
或者,如果您使用Anaconda包装系统,以下命令将安装插件及其依赖项
$ conda install -c conda-forge flake8-black
当使用flake8时,新验证器应自动包含,现在可能还会报告以BLK(如上所述)开头的附加验证代码。例如
$ flake8 example.py
您可以使用以下方式仅显示BLK代码
$ flake8 --select BLK example.py
Python包管理
我们上面介绍了如何手动使用pip或conda。如果您使用基于PyPI的Python依赖系统,如pipenv或poetry,您可能会遇到问题,因为撰写本文时,所有black的PyPI发布都标记为预发布(beta代码)。PEP440对预发布的处理可以更明确。
对于pipenv,flake8-black v0.2.0及以后的版本应该可以直接使用。
对于poetry,在您的pyproject.toml配置文件中包含以下内容
[tool.poetry.dev-dependencies] ... black = { version = "*", allow-prereleases = true } ...
在任何情况下,对于大型项目,您应考虑锁定您希望使用的black的确切版本,因为它们的更新有时会引入更改,这会通过flake8显示为新的BLK100违规。
配置
我们建议在您的flake8配置中使用以下设置,例如在您的.flake8、setup.cfg或tox.ini文件中
[flake8] # Recommend matching the black line length (default 88), # rather than using the flake8 default of 79: max-line-length = 88 extend-ignore = # See https://github.com/PyCQA/pycodestyle/issues/373 E203,
请注意,当前pycodestyle对black使用的切片空白给出假阳性,flake8将其报告为E203: ':'之前有空格。在pyflakes问题373修复并更新flake8之前,我们建议禁用此样式检查。
另外,pyproject.toml用于black配置 - 如果找到此文件,插件将查看以下black设置
target_version
跳过字符串规范化
行长度
您可以使用命令行中的 --black-config FILENAME 或在您的 flake8 配置文件中使用 black-config = FILENAME 来指定 pyproject.toml 文件的特定路径(例如全局开发设置)。
忽略验证码
不建议使用 flake8 无质量保证的预处理指令注释(例如,将 # noqa: BLK100 添加到 black 的第一行会改变)。相反,在您代码中任何不需要更改的区域的开头使用 # fmt: off,并在结尾使用 # fmt: on。或者,对单行添加 # fmt: skip。或者,通过名称排除整个文件(见下文)。
忽略文件
插件目前不考虑 black 设置 include 和 exclude,因此如果您有一些不使用 black 的 Python 文件并且已将其忽略,您还需要告诉 flake8 忽略它们(例如使用 exclude 或 per-file-ignores)。
版本历史
版本 |
发布日期 |
更改 |
v0.3.6 |
2022-12-13 |
|
v0.3.5 |
2022-11-21 |
|
v0.3.4 |
2022-11-17 |
|
v0.3.3 |
2022-05-16 |
|
v0.3.2 |
2022-02-25 |
|
v0.3.0 |
2022-02-25 |
|
v0.2.4 |
2022-01-30 |
|
v0.2.3 |
2021-07-16 |
|
v0.2.2 |
2021-07-16 |
|
v0.2.1 |
2020-07-25 |
|
v0.2.0 |
2020-05-20 |
|
v0.1.2 |
2020-05-18 |
|
v0.1.1 |
2019-08-26 |
|
v0.1.0 |
2019-06-03 |
|
v0.0.4 |
2019-03-15 |
|
v0.0.3 |
2019-02-21 |
|
v0.0.2 |
2019-02-15 |
|
v0.0.1 |
2019-01-10 |
|
开发者
此插件可在GitHub上找到:https://github.com/peterjc/flake8-black
开发者可以使用可选的构建依赖从git仓库安装此插件。
$ pip install -e .[develop]
在本地和在线测试后制作新版本。
$ git tag vX.Y.Z $ python -m build $ git push origin master --tags $ twine upload dist/flake8?black-X.Y.Z*
PyPI上传应触发一个自动的拉取请求,更新flake8-black conda-forge配方。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。