跳转到主要内容

flake8插件,用于调用black作为代码风格验证器

项目描述

Released on the Python Package Index (PyPI) Released on Conda pre-commit.ci status GitHub workflow status PyPI downloads Code style: 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,如果尚未安装,则应同时安装flake8black

$ 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配置black配置

我们建议在您的flake8配置中使用以下设置,例如在您的.flake8setup.cfgtox.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 设置 includeexclude,因此如果您有一些不使用 black 的 Python 文件并且已将其忽略,您还需要告诉 flake8 忽略它们(例如使用 excludeper-file-ignores)。

版本历史

版本

发布日期

更改

v0.3.6

2022-12-13

  • 从 Python 3.11 开始使用标准库 tomllib,由 Ganden Schaffner 贡献。

v0.3.5

2022-11-21

  • 修复与 flake8-rst-docstrings 冲突的回归。

v0.3.4

2022-11-17

  • pyproject.toml 替换 setup.py 用于构建。

v0.3.3

2022-05-16

  • 处理 pyproject.toml 配置中的行长度字符串。

v0.3.2

2022-02-25

  • 使用 tomli 库匹配 black,由 Brian Helba 贡献。

  • 采用 GitHub Actions 替代 TravisCI 测试。

  • 需要 Python 3.7 或更高版本。

v0.3.0

2022-02-25

  • 需要 black v22.1.0(第一个非测试版)或更高版本。

  • 在 black TOML 文件中支持“preview”、“skip-magic-trailing-comma”选项,由 Ferdy 贡献。

v0.2.4

2022-01-30

  • 支持 black v22.1.0,该版本更改了函数调用,由 Raffaele Salmaso 贡献。

v0.2.3

2021-07-16

  • setup.py 中明确声明 toml 依赖关系。

v0.2.2

2021-07-16

  • 声明 toml 依赖关系(对于 black 21.7b0)。

v0.2.1

2020-07-25

  • 通过扩展名检测 *.pyi 文件。

v0.2.0

2020-05-20

  • 对 black 19.3b0 或更高版本的最低要求现在是隐含的。这是对 pipenv issue 3928 的一种解决方案。如果运行 flake8 时出现错误,请升级 black:例如 Flake8 failed to load plugin "BLK" due to __call__() got an unexpected keyword argument 'target_versions'

v0.1.2

2020-05-18

  • 移除由 flake8 v3.8 更改为相对于当前目录解析配置文件而损坏的测试。

v0.1.1

2019-08-26

  • 提供了使用(全局)black 配置文件的选项,由 Tomasz Grining 贡献。

  • 如果无法解析 pyproject.toml 文件,则新增 BLK997

  • 记录配置文件,使用 -v--verbose

  • 修复了 flake8 “内置”参数警告。

  • 现在需要 black 19.3b0 或更高版本。

v0.1.0

2019-06-03

  • 使用 pyproject.toml 中的主要 black 设置,由 Alex 贡献。

  • 警告:现在忽略 flake8 max-line-length 设置。

v0.0.4

2019-03-15

  • 支持black 19.3b0,该版本更改了函数调用。

v0.0.3

2019-02-21

  • 当应用W292 文件末尾没有换行符时修复了bug,由Sapphire Becker贡献。

v0.0.2

2019-02-15

  • 记录文档语法错误行为(没有报告BLK错误)。

v0.0.1

2019-01-10

  • 首次公开发布。

  • 通过black的max-line-length设置通过flake8。

开发者

此插件可在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配方

项目详情


下载文件

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

源分发

flake8-black-0.3.6.tar.gz (14.6 kB 查看哈希值)

上传时间

构建分发

flake8_black-0.3.6-py3-none-any.whl (9.9 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面