跳转到主要内容

妥协的代码格式化工具。

项目描述

Black Logo

无妥协的代码格式化工具

Actions Status Documentation Status Coverage Status License: MIT PyPI Downloads conda-forge Code style: black

“你喜欢什么颜色。”

《Black》是无妥协的Python代码格式化工具。通过使用它,你同意放弃对手动格式化的细节控制。作为回报,Black为你提供速度、确定性和摆脱pycodestyle关于格式化的烦恼。你可以为更重要的事情节省时间和精力。

Black的代码在阅读任何项目时都看起来一样。格式化一段时间后变得透明,你可以专注于内容。

Black通过产生尽可能小的差异来加速代码审查。

现在就使用Black游乐场试试吧。观看PyCon 2019演讲了解更多信息。


在ReadTheDocs上阅读文档!


安装和使用

安装

Black 可以通过运行 pip install black 进行安装。它需要 Python 3.7+ 才能运行。如果您想格式化 Jupyter Notebooks,请使用 pip install "black[jupyter]" 进行安装。

如果您迫不及待想要使用最新版本,并想从 GitHub 安装,请使用以下命令:

pip install git+https://github.com/psf/black

使用方法

要立即开始使用默认设置

black {source_file_or_directory}

如果您以脚本形式运行 Black 不起作用,可以将其作为包运行

python -m black {source_file_or_directory}

更多信息请参阅我们的文档

Black 已被许多大小项目成功使用,包括 pytest、tox、Pyramid、Django、Django Channels、Hypothesis、attrs、SQLAlchemy、Poetry、PyPA 应用程序(Warehouse、Bandersnatch、Pipenv、virtualenv)、pandas、Pillow、Twisted、LocalStack、所有 Datadog Agent 集成、Home Assistant、Zulip、Kedro、OpenOA、FLORIS、ORBIT、WOMBAT 以及更多。 Black 拥有全面的测试套件,包括高效的并行测试,以及我们自己的自动格式化和并行持续集成运行器。现在我们已经变得稳定,您不应期望在将来有大量的格式化更改。风格更改将主要是对错误报告的响应和对新 Python 语法的支持。有关更多信息,请参阅 The Black Code Style

此外,作为一个安全措施,为了减慢处理速度,Black 将检查重新格式化后的代码是否仍然生成一个与原始代码等效的有效 AST(有关详细信息,请参阅 Pragmatism 部分)。如果您有信心,可以使用 --fast

Black 代码风格

Black 是一个符合 PEP 8 观点的格式化工具。它将整个文件就地重格式化。风格配置选项故意有限,很少添加。它不考虑之前的格式化(有关例外,请参阅 Pragmatism)。

我们的文档涵盖了当前的 Black 代码风格,但对其进行的计划更改也有记录。它们都值得一看

Black 代码风格的变化受到稳定性政策的约束

在提交问题之前,请参阅此文档。看似错误的行为可能是故意的行为。

实用主义

Black 的早期版本在某些方面是绝对的,这与它的初始作者相似。在当时这很合适,因为这使得实现更加简单,而且用户并不多。没有报告太多边缘情况。作为一个成熟的工具,Black 对它所坚持的规则做出了一些例外。

在提交问题之前,请参阅此文档,就像上述文档一样。看似错误的行为可能是故意的行为。

配置

Black 可以从 pyproject.toml 文件中读取其命令行选项的项目特定默认值。这对于指定项目的自定义 --include--exclude/--force-exclude/--extend-exclude 模式特别有用。

您可以在我们的文档中找到更多详细信息

如果您正在寻找更一般的配置文档

提示:如果您在问自己“我需要配置什么吗?”答案是“不需要”。Black 的一切都是关于合理的默认设置。应用这些默认设置将使您的代码符合许多其他 Black 格式化项目。

用户

以下知名开源项目信任 Black 来强制执行一致的代码风格:pytest、tox、Pyramid、Django、Django Channels、Hypothesis、attrs、SQLAlchemy、Poetry、PyPA 应用程序(Warehouse、Bandersnatch、Pipenv、virtualenv)、pandas、Pillow、Twisted、LocalStack、所有 Datadog Agent 集成、Home Assistant、Zulip、Kedro、OpenOA、FLORIS、ORBIT、WOMBAT 以及更多。

以下组织使用 Black:Facebook、Dropbox、KeepTruckin、Mozilla、Quora、Duolingo、QuantumBlack、Tesla、Archer Aviation。

我们是否遗漏了任何人?告诉我们。

评价

Mike Bayer《SQLAlchemy》作者

在我的整个编程生涯中,我无法想到有任何一种工具通过其引入能给我带来更大的生产力提升。现在我可以以大约1%的按键次数进行重构,而之前在没有代码自动格式化的方式时,这需要更多的按键。

Dusty Phillips作家

Black有强烈的意见,因此你不必有。

Hynek Schlawack《attrs》的创造者,Twisted和CPython的核心开发者

我只希望在圣诞节得到一个不会让人失望的自动格式化工具!

Carl MeyerDjango核心开发者

至少名字很好。

Kenneth Reitzrequestspipenv的创造者

这极大地提高了我们代码的格式化。非常感谢!

展示你的风格

在你的项目的README.md中使用徽章

[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)

在README.rst中使用徽章

.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
    :target: https://github.com/psf/black

看起来像这样:代码风格:black

许可证

MIT

贡献

欢迎!很高兴看到你愿意使项目变得更好。你可以通过阅读以下内容开始

你也可以查看其他贡献文档或与开发者交谈

变更日志

日志变得相当长。它已经移动到自己的文件中。

CHANGES

作者

作者名单现在相当长,因此它居住在自己的文件中。

AUTHORS.md

行为准则

所有参与Black项目的人,尤其是在问题跟踪器、拉取请求和社会媒体活动中,都应尊重他人,并更普遍地遵循Python社区行为准则中阐述的指南。

同时,鼓励幽默。实际上,对蒙提·派森飞行马戏团的初步了解是预期的。我们不是野蛮人。

如果你真的需要打某人,边跳舞边用鱼打。

变更日志

未发布

亮点

稳定风格

预览风格

配置

打包

解析器

性能

输出

Blackd

集成

文档

23.7.0

亮点

  • 已移除对Python 3.7的运行时支持。格式化3.7代码将继续得到支持,直到另行通知(#3765)

稳定风格

  • 修复了一个问题,其中在使用PEP 604联合使用PEP 604时,在返回类型注解中添加了非法尾随逗号(#3735)
  • 修复了在某些情况下删除或错误处理占位符文件中的注释的几个错误和崩溃(#3745)
  • 修复了多行魔法注释(如type: ignore)在括号内的崩溃(#3740)
  • 修复了当Black在类型注释中删除尾随空格时AST验证中的错误(#3773)

预览风格

  • 不再将用作函数参数的隐式连接字符串包裹在括号内(#3640)
  • 删除类定义和其文档字符串之间的空白行(#3692)

配置

  • 现在可以通过BLACK_NUM_WORKERS环境变量指定Black--workers参数(#3743)
  • 默认情况下排除.pytest_cache.ruff_cache.vscode(#3691)
  • 修复了当运行--stdin-filenameBlack不尊重pyproject.toml设置的问题,并且找到的pyproject.toml不在当前工作目录中(#3719)
  • Black 现在如果 pyproject.tomlexcludeextend-exclude 存在无效的数据类型,将报错,而不是默默地做错事(#3764)

打包

  • 将 mypyc 从 0.991 升级到 1.3(#3697)
  • 移除对 Click 的修补,该修补缓解了在 Python 3.6 上使用 LANG=C 时的错误(#3768)

解析器

  • 添加对 Python 3.12 中新 PEP 695 语法的支持(#3703)

性能

  • 当缓存满时,显著加快 Black 的速度(#3751)
  • 避免在不必要的情况下导入 IPython(#3748)

输出

  • 内部使用感知 UTC 日期时间,避免了 Python 3.12 上的弃用警告(#3728)
  • 将详细日志记录改为与 Black 的源发现逻辑完全一致(#3749)

Blackd

  • blackd 参数解析器现在在帮助文本中显示选项的默认值(#3712)

集成

文档

  • 在存储库根目录中添加 CITATION.cff 文件,其中包含有关如何引用此软件的元数据(#3723)
  • 更新开发者参考中的 异常 文档,以匹配最新的代码库(#3755)

23.3.0

亮点

此版本修复了 Black 的 GitHub Action 中的一个长期存在的混淆行为,即动作的版本没有确定运行的 Black 的版本(问题 #3382)。此外,还有一些关于导入的小错误修复以及预览样式的多项改进。

请尝试使用 black --preview 使用 预览样式 并告诉我们您的反馈。预计预览样式中的所有更改都将成为 2024 年 1 月 Black 稳定风格的组成部分。

稳定风格

  • 带有 # fmt: skip# fmt: off 的导入行,如果它们直接跟在另一个导入行后面,则不再添加额外的空白行(#3610)

预览风格

  • 即使在最后一个条目后有注释的情况下,也会向集合字面量添加尾随逗号(#3393)
  • async defasync forasync with 语句现在与非异步版本格式化一致(#3609)
  • 包含两个上下管理器的 with 语句现在将一致地用括号括起来(#3589)
  • 让字符串分隔符尊重 东亚宽度(#3445)
  • 现在长字符串字面量可以在空格之前以及东亚逗号和句号( U+3001 中文逗号, U+3002 中文句号,以及 U+FF0C 全角逗号)之后分割(#3445)
  • 对于存根,强制在除了 ... 之外的任何有体内容的嵌套类后面有一个空白行(#3564)
  • 通过更改行分割行为来改进多行字符串的处理(#1879)

解析器

  • 添加了对格式化具有无效类型注释的文件的支持(#3594)

集成

  • 更新 GitHub Action 以使用未指定版本输入时与动作版本等效的 Black 版本(#3543)
  • 修复了 vim 的 autoload 脚本中缺少 Python 二进制路径的问题(#3508)

文档

  • 文档指出,只有最新的版本支持安全问题;漏洞应通过 Tidelift 报告(#3612)

23.1.0

亮点

这是 2023 年的第一个版本,根据我们的 稳定性策略,它包含了对我们稳定风格的许多改进,包括对空行处理的改进、删除了多个上下文中的冗余括号,以及更好地突出显示隐式连接的字符串的输出。

还有许多关于预览样式的更改;尝试使用 black --preview 并给我们反馈,以帮助我们为明年设置稳定风格。

除了样式更改之外,Black 现在会自动从您的 pyproject.toml 文件中推断支持的 Python 版本,无需单独设置 Black 的目标版本。

稳定风格

  • 引入 2023 稳定风格,该风格结合了去年预览样式的几乎所有方面(#3418)。具体更改
    • 强制在具有粘性前导注释的类和函数之前有空行(#3302)(22.12.0)
    • 重格式化空文件和仅包含空白字符的文件,如果没有换行符则为空文件,如果有换行符则为单个换行符(#3348)(22.12.0)
    • 现在将用作函数参数的隐式连接的字符串括在括号内(#3307)(22.12.0)
    • 正确处理行首非嵌套括号内的尾随逗号(#3370)(22.12.0)
    • --skip-string-normalization / -S现在阻止按预期规范化文档字符串前缀(#3168)(自22.8.0以来)
    • 当使用--skip-magic-trailing-comma-C时,从具有多个元素的索引表达式中删除尾随逗号(#3209)(22.8.0)
    • 列表、集合或元组中的隐式连接的字符串现在括在括号内(#3162)(22.8.0)
    • 修复在隐式连接的字符串的单独行中存在注释时字符串合并/拆分问题(#3227)(22.8.0)
    • 如果会违反行长度限制,则不再移动文档字符串引号(#3044,#3430)(22.6.0)
    • 现在管理返回注释周围的括号(#2990)(22.6.0)
    • 删除围绕await对象的冗余括号(#2991)(22.6.0)
    • 删除with语句中的冗余括号(#2926)(22.6.0)
    • 删除代码块开头的尾随换行符(#3035)(22.6.0)
    • 将代码单元格分隔符#%%标准化为# %%(#2919)(22.3.0)
    • except语句中删除冗余括号(#2939)(22.3.0)
    • for循环中的元组解包中删除冗余括号(#2945)(22.3.0)
    • 避免在单元素子脚本中使用魔法尾随逗号(#2942)(22.3.0)
  • 修复当在# fmt: off# fmt: on之间标记冒号行时的崩溃(#3439)

预览风格

  • 在字符串字面量中的Unicode转义序列中格式化十六进制代码(#2916)
  • if-else表达式中添加括号(#2278)
  • 提高包含许多字符串的大表达式性能(#3467)
  • 修复在预览样式中使用assert加括号字符串时的崩溃(#3415)
  • 修复在预览样式中使用在函数返回注释和except子句中使用walrus运算符时的崩溃(#3423)
  • 修复在预览高级字符串处理中,当隐式连接的正则表达式和f-字符串以空span开始时崩溃的问题(#3463)
  • 修复在预览高级字符串处理中,在字典值之前放置独立注释时的崩溃(#3469)
  • 修复当装饰器应用# fmt: skip或装饰器之间有独立注释时添加额外空行的问题(#3470)
  • 即使行太长,也不将文档字符串中的闭合引号放在单独的一行上(#3430)
  • 字典字面量中的长值现在括在括号内;相应地,从字典字面量中的短值周围删除不必要的括号;长字符串lambda值现在括在括号内(#3440)
  • 修复预览样式中涉及文档字符串的边缘情况的两个崩溃(#3451)
  • 从改进的字符串处理中排除字符串类型注解;修复当返回类型注解被字符串化并跨越多行时的崩溃(#3462)
  • 当针对Python 3.9+时,将多个上下文管理器括在括号内(#3489)
  • 修复在预览样式中使用with语句或元组中的walrus运算符时的几个崩溃(#3473)
  • 修复f-string表达式中的无效引号转义错误,该错误产生了无效代码。现在可以通过更改表达式中的引号将具有不同引号的隐式连接的f-字符串合并或规范化(#3509)
  • 修复当Black与mypyc编译时在await (yield)上的崩溃(#3533)

配置

  • Black现在尝试从pyproject.toml中指定的项目元数据推断其--target-version(#3219)

打包

  • 将mypyc从0.971升级到0.991,以便在armv7上构建mypycified Black(#3380)
    • 这也修复了使用编译后的Black与CPython调试构建一起使用时的一些崩溃
  • 在3.11 alpha版本中删除对tomli要求的特定支持,解决了一个会导致在任何非最终Python版本上不安装要求的错误(#3448)
  • Black现在依赖于packaging版本22.0或更高版本。这是为了支持需要解析项目元数据部分的新功能(#3219)

输出

  • 多次调用black --help将每次返回相同的帮助内容(#3516)
  • 详细的日志现在会显示pyproject.toml配置变量的值(#3392)
  • 修复了由于使用到项目根目录的错误相对路径而导致的详细输出中的假符号链接检测信息(#3385)

集成

  • 由于所有依赖项都支持3.11,现在将3.11 CI移动到正常流程(#3446)
  • Docker:添加新的latest_prerelease标签自动化,以跟踪Docker镜像上最新的Black alpha版本(#3465)

文档

  • 扩展vim-plug的安装说明,以提供更明确的选项(#3468)

22.12.0

预览风格

  • 在类和函数之前强制执行带有粘性前注释的空行(#3302)
  • 将空文件和仅包含空白字符的文件重新格式化为空文件(如果不存在换行符)或单个换行符(如果存在换行符)(#3348)
  • 现在将用作函数参数的隐式连接字符串括在括号内(#3307)
  • 对于赋值语句,如果左侧可以在单行中容纳,则首选拆分右侧(#3368)
  • 正确处理行首非嵌套括号内的尾随逗号(#3370)

配置

  • 通过考虑.gitignore的位置和目标文件的相对路径来修复不正确应用.gitignore规则的问题(#3338)
  • 修复了在指定多个源目录时忽略.gitignore存在的问题(#3336)

解析器

  • 为作为函数参数传递的生成器表达式中的海象操作符添加了解析支持(例如,any(match := my_re.match(text) for text in texts))(#3327)。

集成

  • Vim插件:可选地允许通过let g:black_use_virtualenv = 0使用系统安装的Black(#3309)

22.10.0

亮点

  • 已移除对Python 3.6的运行时支持。除非另行通知,格式化3.6代码将继续得到支持。

稳定风格

  • 修复了在# fmt: on# fmt: off处于不同块级别时崩溃的问题(#3281)

预览风格

  • 修复了在格式化一些带有括号包裹的长字符串键的字典时崩溃的问题(#3262)

配置

  • .ipynb_checkpoints目录现在默认排除(#3293)
  • 添加了--skip-source-first-line / -x选项,在格式化时忽略源代码的第一行(#3299)

打包

  • 使用PyInstaller制作的可执行文件在macOS上格式化多个文件时不会再崩溃。macOS的原生x86-64可执行文件现在再次可用。(#3275)
  • Hatchling现在用作构建后端。对于使用PyPI的wheels安装Black的用户,这不会有任何影响。(#3233)
  • 现在为CPython 3.11提供了更快的编译wheels(#3276)

Blackd

  • 将保留Windows样式(CRLF)换行符(#3257)。

集成

  • Vim插件:添加标志(g:black_preview)以启用/禁用预览样式(#3246)
  • 更新GitHub Action以支持通过jupyter选项格式化Jupyter Notebook文件(#3282)
  • 更新GitHub Action以支持使用版本说明符(例如,<23)来指定Black版本(#3265)

22.8.0

亮点

  • 现在支持Python 3.11,除了blackd之外,因为aiohttp在发布时还不支持3.11(#3234)
  • 这是最后一个支持在Python 3.6上运行Black的版本(除非另行通知,格式化3.6代码将继续得到支持)
  • 重述稳定性策略,表示在罕见情况下,我们可能会进行影响之前未由Black格式化的代码的更改(#3155)

稳定风格

  • 修复了在表达式或代码块中间使用# fmt: on/off时出现无限循环的问题(#3158)
  • 修复了在冒号(:)行上处理# fmt: skip时的错误(#3148)
  • 在移除幂运算符周围的空格时不再删除注释(#2874)

预览风格

  • 单字符关闭文档字符串引号不再移动到其自己的行,因为这是不合法的。这是在版本22.6.0中引入的错误。(#3166)
  • --skip-string-normalization / -S 现在阻止按预期对文档字符串前缀进行归一化 (#3168)
  • 当使用 --skip-magic-trailing-comma-C 时,从包含超过 1 个元素的索引表达式中去除了尾随逗号 (#3209)
  • 现在在列表、集合或元组内部隐式连接的字符串现在被括号包裹 (#3162)
  • 修复了在单行中隐式连接的字符串的中间有注释时字符串合并/拆分的问题 (#3227)

Blackd

  • blackd 现在支持通过 X-Preview 标头启用预览样式 (#3217)

配置

  • Black 现在通过调试 f-strings 的存在来检测目标版本 (#3215)
  • 修复了涉及 --stdin-filename 时的项目根误检测和详细记录源的问题 (#3216)
  • 命令行中给出的源目录中的立即 .gitignore 文件现在也被尊重,之前只有项目根目录和自动发现的目录中的 .gitignore 文件被尊重 (#3237)

文档

  • 建议在 IntelliJ IDE 中使用 BlackConnect (#3150)

集成

  • Vim 插件:将消息前缀为 Black: ,以便清楚地知道它们来自 Black (#3194)
  • Docker:改为 /opt/venv 安装,并添加到 PATH 以供非 root 用户使用 (#3202)

输出

  • 从已弃用的 asyncio.get_event_loop() 更改为创建我们的事件循环,这消除了 DeprecationWarning (#3164)
  • 从内部 blib2to3 库中删除日志记录,因为它会定期发出关于失败缓存的错误日志,这些日志可以且应该被忽略 (#3193)

解析器

  • 类型注释现在在 AST 等价性检查中始终包含,因此意外删除将引发错误。尽管由于标准库限制,在 PyPy 3.7 上运行时无法跟踪类型注释。 (#2874)

性能

  • 在格式化单个文件时,Black 的启动时间减少了 15-30% (#3211)

22.6.0

样式

  • 修复了涉及 #fmt: skip# fmt:skip 注释(注意空格的缺失)的不稳定格式化 (#2970)

预览风格

  • 如果会违反行长度限制,则不再移动文档字符串引号 (#3044)
  • 现在管理围绕返回注释的括号 (#2990)
  • 移除围绕等待对象的冗余括号 (#2991)
  • 移除 with 语句中的冗余括号 (#2926)
  • 在代码块打开后移除尾随换行符 (#3035)

集成

  • 添加 scripts/migrate-black.py 脚本,以简化将 Black 引入 Git 项目的操作 (#3038)

输出

  • 将 Python 版本和实现作为 --version 标志的一部分输出 (#2997)

打包

  • 在 Python 3.11 构建中使用 tomli 而不是 tomllib,因为 tomllib 不可用 (#2987)

解析器

  • PEP 654 语法(例如,except *ExceptionGroup:)现在受支持 (#3016)
  • PEP 646 语法(例如,Array[Batch, *Shape]def fn(*args: *T) -> None)现在受支持 (#3071)

Vim 插件

  • 修复了 strtobool 函数。它没有解析 true/on/false/off。 (#3025)

22.3.0

预览风格

  • 代码单元格分隔符 #%% 现在已标准化为 # %% (#2919)
  • except 语句中移除冗余括号 (#2939)
  • for 循环中的元组解包中移除冗余括号 (#2945)
  • 避免在单个元素子脚本中使用魔法尾随逗号 (#2942)

配置

  • 默认情况下不格式化 __pypackages__ 目录 (#2836)
  • 添加了对使用 --required-version 指定稳定版本的支持 (#2832)。
  • 避免当用户没有主目录时崩溃 (#2814)
  • 避免当 md5 不可用时崩溃 (#2905)
  • 修复了 Windows 上的目录连接处理 (#2904)

文档

  • 更新 pylint 配置文档 (#2931)

集成

  • 将测试移动到 Vim/Neovim 中禁用插件,这加快了加载 (#2896)

输出

  • 在详细模式下,当Black使用用户级配置时记录日志(#2861)

打包

  • 修复Black以与Click 8.1.0兼容(#2966)
  • 在Python 3.11及更高版本中,使用标准库的tomllib而不是tomli(#2903)
  • black-primer,已弃用的内部开发工具,已被移除并复制到单独的仓库(#2924)

解析器

  • Black现在可以解析forasync for语句的目标中的星号表达式,例如for item in *items_1, *items_2: pass(#2879)。

22.1.0

终于,Black不再是beta产品!这是第一个非beta版本,也是第一个受我们新稳定性策略覆盖的版本。

亮点

  • 移除Python 2支持 (#2740)
  • 引入--preview标志(#2752)

样式

  • 弃用--experimental-string-processing并将其功能移动到--preview下(#2789)
  • 对于存根,如果至少有一个现有的空白行,则现在在类属性和方法之间保留一个空白行(#2736)
  • Black现在标准化字符串前缀顺序(#2297)
  • 如果两个操作数都是简单的,则移除幂运算符周围的空格(#2726)
  • 解决由尾随逗号引起的某些情况下格式不稳定的问题(#2807)
  • 使用括号在十进制浮点数和整数字面量上进行属性访问(#2799)
  • 不要在十六进制、二进制、八进制和复数字面量上进行属性访问时添加空格(#2799)
  • 在顶层if语句中,将存根中的空白行视为相同(#2820)
  • 修复分号和算术表达式导致的不稳定格式化问题(#2817)
  • 修复尾随逗号周围的不稳定格式化问题(#2572)

解析器

  • 修复包含as表达式的映射情况,如case {"key": 1 | 2 as password}(#2686)
  • 修复包含多个顶层as表达式的映射情况,如case 1 as a, 2 as b(#2716)
  • 修复包含具有关键字参数的as表达式的调用模式,如case Foo(bar=baz as quux)(#2749)
  • returnyield构造上使用元组解包现在意味着3.8+(#2700)
  • 在注解赋值上的无括号元组(例如 values: Tuple[int, ...] = 1, 2, 3)现在意味着3.8+(#2708)
  • 修复当括号内有尾随换行符或注释时处理独立match()case()的bug。(#2760)
  • from __future__ import annotations语句现在意味着Python 3.7+(#2690)

性能

  • 新回溯解析器在一般情况下速度提高约4倍(当--target-version设置为3.10及以上时启用)。(#2728)
  • Black现在使用mypyc编译,整体速度提高2倍。支持64位Windows、MacOS和Linux(不包括musl)。(#1009, #2431)

配置

  • 不要在pyproject.toml中接受裸回车换行符(#2408)
  • 添加配置选项(python-cell-magics),用于在Jupyter笔记本中格式化带有自定义魔法的单元格(#2744)
  • 允许使用环境变量BLACK_CACHE_DIR在所有平台上设置自定义缓存目录(#2739)。
  • 默认启用Python 3.10+,无需额外指定--target-version=py310。(#2758)
  • 使传递SRC--code成为强制性的,并且互斥的(#2804)

输出

  • 改进无效正则表达式的错误信息(#2678)
  • 在AST安全检查期间解析失败时,通过嵌入底层SyntaxError改进错误信息(#2693)
  • 不再将diff标题着色为白色,因为它在浅色主题终端中不可读(#2691)
  • 在最终统计中添加了文本着色(#2712)
  • 详细模式现在还描述了如何发现项目根以及哪些路径将被格式化。(#2526)

打包

  • 删除依赖项的所有最高版本限制(#2718)
  • typing-extensions 在 Python 3.10+ 中不再是一个必需的依赖项 (#2772)
  • click 的下限设置为 8.0.0 (#2791)

集成

  • 更新 GitHub Action 以支持容器化运行 (#2748)

文档

  • 将 pip 安装说明中的协议更改为 https:// (#2761)
  • 将 HTML 主题更改为 Furo,主要是因为其响应式设计和移动支持 (#2793)
  • 弃用 black-primer 工具 (#2809)
  • 记录 Python 支持策略 (#2819)

21.12b0

Black

  • 修复 f-string 表达式范围的确定 (#2654)
  • 修复多行语句中 EOF 错误消息的格式错误 (#2343)
  • 现在块中的函数和类具有更一致的周围间距 (#2472)

Jupyter Notebook 支持

  • 只有已知 Python 单元格魔法的单元格魔法才会被处理。之前,所有单元格魔法都被标记化,可能导致缩进错误,例如使用 %%writefile。 (#2630)
  • 修复 Jupyter Notebook 中的环境变量赋值 (#2642)

支持 Python 3.10

  • 如果检测到 3.10 专用语法,则引导用户使用 --target-version py310 (#2668)
  • 修复具有开放序列主题的 match 语句,如 match a, b:match a, *b: (#2639) (#2659)
  • 修复包含多个 match/case 软关键词的 match/case 语句,如 match re.match() (#2661)
  • 修复具有内联体的 case 语句 (#2665)
  • 修复 match 主体中的星号表达式的样式 (#2667)
  • 修复在 match 语句中无效语法上的解析器错误位置 (#2649)
  • 修复在无 ProcessPoolExecutor 的平台上对 Python 3.10 的支持 (#2631)
  • --target-version py310 下,对使用 match 的代码的解析性能进行了改进,最高可达 ~50% (#2670)

打包

  • 移除对 regex 的依赖 (#2644) (#2663)

21.11b1

Black

  • 将 regex 版本最低要求提升到 2021.4.4 以修复 Pattern 类的使用 (#2621)

21.11b0

Black

  • 通过改进 Python 2 专用语法的检测,在更多情况下警告 Python 2 的弃用 (#2592)
  • 添加实验性 PyPy 支持 (#2559)
  • 添加对 match 语句的部分支持。由于它是实验性的,因此只有在显式指定 --target-version py310 时才会启用 (#2586)
  • 添加对括号内 with 的支持 (#2586)
  • 声明支持 Python 3.10 以运行 Black (#2562)

集成

  • 通过删除已弃用的 distutils 导入,修复了与 Python 3.10 兼容的 vim 插件 (#2610)
  • 现在 vim 插件从 pyproject.toml 解析 skip_magic_trailing_comma (#2613)

21.10b0

Black

  • 记录稳定性策略,该策略将适用于非测试版发布 (#2529)
  • 添加新的 --workers 参数 (#2514)
  • 修复了 lambda 中位置只读参数的功能检测 (#2532)
  • 将 typed-ast 版本最低要求提升到 1.4.3 以兼容 3.10 (#2519)
  • 修复了即使删除了循环参数,循环参数仍在传递的 Python 3.10 兼容性问题 (#2580)
  • 弃用 Python 2 格式化支持 (#2523)

Blackd

  • 移除对 aiohttp-cors 的依赖 (#2500)
  • 将所需 aiohttp 版本提升到 3.7.4 (#2509)

Black-Primer

  • 添加对 --projects 的 primer 支持 (#2555)
  • 在单个失败后打印 primer 摘要 (#2570)

集成

  • 允许在 vim 插件中传递 target_version (#1319)
  • 在 docker 文件中安装构建工具,并使用多阶段构建以降低镜像大小 (#2582)

21.9b0

打包

  • 修复了自包含二进制文件中缺失的模块 (#2466)
  • 修复了安装期间缺失的 toml 额外模块 (#2475)

21.8b0

Black

  • 添加对格式化 Jupyter Notebook 文件的支持 (#2357)
  • appdirs 依赖项移动到 platformdirs (#2375)
  • 在 .gitignore 无效时提供更友好的错误提示 (#2414)
  • 将 f-string 表达式中的意外添加的反斜杠的安全机制加强,以处理引号规范化期间的更多边缘情况 (#2437)
  • 通过添加尾随逗号,避免将函数返回类型注解的类型更改为元组 (#2384)
  • 已添加对集合字面量、集合推导式和索引(#2447)中无括号海豹的解析支持。
  • 设置 setuptools-scm 构建时依赖版本(#2457)。
  • 由于在 Python 3.10 上损坏,排除 typing-extensions 版本 3.10.0.1(#2460)。

Blackd

  • 将 sys.exit(-1) 替换为 raise ImportError,因为它与扫描已安装包的工具更友好(#2440)。

集成

  • 提供的 pre-commit 钩子不再指定 language_version 以避免覆盖 default_language_version(#2430)。

21.7b0

Black

  • 现在支持使用高于 spec v0.5.0 的 TOML 功能的配置文件(#2301)。
  • 添加了对通过 STDIN 管道到 black 的代码的 primer 支持,并进行测试(#2315)。
  • 修复了当启用 FORCE_OPTIONAL_PARENTHESES 功能时的内部错误(#2332)。
  • 接受空的 stdin(#2346)。
  • 在 AST 安全性检查期间解析失败时提供更有用的错误(#2304)。

Docker

  • 添加新的 latest_release 标签自动化,以跟踪 docker 图像上的最新 black 版本(#2374)。

集成

  • vim 插件现在从包含当前缓冲区的目录向上搜索,而不是从当前工作目录搜索 pyproject.toml(#1871)。
  • vim 插件现在从 pyproject.toml 中读取正确的字符串规范化选项(#1869)。
  • vim 插件不再在 pyproject.toml 中存在布尔值时崩溃 Black(#1869)。

21.6b0

Black

  • 修复了由 fmt: skip 和缩进引起的失败(#2281)。
  • 在决定是否拆分字符串时考虑 += 赋值(#2312)。
  • 在存在字符串运算符时纠正最大字符串长度计算(#2292)。
  • 修复了使用 --code 标志时的选项使用错误(#2259)。
  • Black 作为库使用时,不要调用 uvloop.install()(#2303)。
  • 添加了 --required-version 选项,要求运行特定版本(#2300)。
  • 修复了当字符串组包含假 f 字符串时错误的自定义断点索引(#2311)。
  • 修复了文档字符串中的 R 前缀会被小写化的回归问题(#2285)。
  • 当使用 --experimental-string-processing 时,修复了对命名转义(\N{...})的处理(#2319)。

集成

  • 官方 Black 操作现在支持选择要使用的版本,并支持主要 3 个操作系统。(#1940)

21.5b2

Black

  • 不再在空文档字符串中插入空格(#2249)。
  • 修复了在 Windows 上包含非 ASCII 字符的 .gitignore 文件的错误处理(#2229)。
  • 尊重所有级别的 .gitignore 文件,而不仅仅是 root/.gitignore 文件(应用与 git 相同的 .gitignore 规则)(#2225)。
  • 当使用 LANG=C 时,恢复了与 Click 8.0 在 Python 3.6 上的兼容性(#2227)。
  • 如果处于 python 环境中,则添加额外的 uvloop 安装 + 导入支持(#2258)。
  • 修复了当找不到匹配括号时 --experimental-string-processing 冲突的问题(#2283)。
  • 确保拆分以字符串运算符开头的行(#2286)。
  • 修复了 black 用来识别 f 表达式的正则表达式(#2287)。

Blackd

  • aiohttp-cors 依赖添加了下限。仅支持 0.4.0 或更高版本。(#2231)

打包

  • 作为 GitHub 发布流程的一部分发布自包含的 x86_64 MacOS 二进制文件(#2198)。
  • 始终使用最新的可用 Python 构建二进制文件(#2260)。

文档

  • 在常见问题解答页面上添加了对魔法注释的讨论(#2272)。
  • --experimental-string-processing 将默认启用(#2273)。
  • 修复了由 codespell 发现的拼写错误(#2228)。
  • 修复了 Vim 插件安装说明(#2235)。
  • 添加了新的常见问题解答页面(#2247)。
  • 修复了编码 + 符号链接问题,防止在 Windows 上正确构建(#2262)。

21.5b1

Black

  • 重构 src/black/__init__.py 为多个文件(#2206)。

文档

  • 将所有剩余的 master 分支引用替换为 main 分支。还对源代码进行了其他一些更改。(#2210)
  • 大幅重组织了文档,使其更易理解。请前往 RTD 上的稳定文档 查看它们。(#2174)

21.5b0

Black

  • 如果 --stdin-filename.pyi 结尾,则设置 --pyi 模式。(#2169)
  • 停止检测目标版本为 Python 3.9+,因为这些版本使用了预 PEP-614 装饰器,但没有参数。(#2182)

Black-Primer

  • --no-diff 添加到 black-primer,以抑制格式化更改。(#2187)

21.4b2

Black

  • 修复了用户配置目录不可访问时的崩溃。(#2158)

  • 阐明 Black 在以下情况下可能会更改 AST 的 情况。(#2159)

  • 允许通过在 pyproject.toml 或命令行中指定 exclude 来覆盖 .gitignore 规则。(#2170)

打包

  • 使用 black 安装 primer.json(默认情况下由 black-primer 使用)。(#2154)

21.4b1

Black

  • 修复了以 "\ " 结尾的文档字符串的崩溃。(#2142)

  • 修复了从文档字符串中清理典型空白时的崩溃。(#2120)

  • --skip-magic-trailing-comma--experimental-string-processing 标志反映在缓存文件名中。如果没有此修复,则这些标志的变化不会生效,如果缓存已填充。(#2131)

  • 不要从包含 assert / return 语句的赋值表达式中删除必要的括号。(#2143)

打包

  • 将 pathspec 升级到 >= 0.8.1 以解决无效 .gitignore 排除处理。(#1655)

21.4b0

Black

  • 修复了由 Black 插入的可选尾随逗号和查看现有“魔法”尾随逗号的可选括号组合引起的罕见但令人烦恼的格式化不稳定性。此修复解决了问题 #1629 及其许多重复问题。(#2126)

  • Black 现在通过删除前导和尾随空格来处理单行文档字符串,并在需要时添加填充空格以分割 """"。(#1740)

  • Black 现在清理注释中的前导非中断空格。(#2092)

  • Black 现在在正常化多行文档字符串引号时尊重 --skip-string-normalization。(#1637)

  • Black 现在在格式化类型存根时不再删除非函数代码和装饰器之间的所有空行。现在 Black 强制执行单行空行。(#1646)

  • Black 现在不再在 if/while 语句中在括号赋值表达式后添加错误的空间。(#1655)

  • 添加了 --skip-magic-trailing-comma / -C 以避免将尾随逗号用作拆分行的理由。(#1824)

  • 修复了 POSIX 上的 PWD=/ 时的崩溃。(#1631)

  • 修复了使用 --diff 时的 "I/O operation on closed file"。(#1664)

  • 防止彩色 diff 输出与多个文件交织。(#1673)

  • 在 python 3.9 上添加了对 PEP 614 松弛装饰器语法的支持。(#1711)

  • 在注解赋值中的无括号元组和 yield 表达式上添加了解析支持。(#1835)

  • 添加了 --extend-exclude 参数(PR #2005)

  • 通过避免使用 pathlib 来加速缓存(#1950)

  • --diff 正确地指示文件是否以换行符结尾(#1662)

  • 添加了 --stdin-filename 参数,允许 stdin 尊重 --force-exclude 规则(#1780)

  • 现在将结束于 fmt: skip 的行将不会被格式化(#1800)

  • PR #2053:Black 现在不再依赖 typed-ast,适用于 Python 3.8 和更高版本

  • PR #2053:Python 2 支持现在是可选的,使用 python3 -m pip install black[python2] 安装以保持支持。

  • 默认排除 venv 目录(#1683)

  • 修复了格式化 Python 2 文档字符串时 "Black 生成的代码与源代码不等价" 的问题(#2037)

打包

  • 现在通过 GitHub Releases 提供了自包含的本地 Black 二进制文件(#1743)

20.8b1

打包

  • 显式依赖于 Click 7.1.2 或更高版本,因为 Black 现在不再与 7.0 以下的版本一起工作

20.8b0

Black

  • 重新实现了对显式尾随逗号的支持:现在它在任何括号对中一致地工作,包括嵌套结构(#1288 和重复项)

  • Black 现在在重新格式化围绕它的代码时重新缩进文档字符串(#1053)

  • Black 现在显示彩色 diff(#1266)

  • Black现在使用带有'py3'标签的wheel打包(#1388)

  • Black现在支持Python 3.8代码,例如返回语句中的星号表达式(#1121)

  • Black不再将大写R字符串前缀进行规范化,因为这些前缀有社区接受的含义(#1244)

  • Black现在在指定的配置文件不存在时使用退出代码2(#1361)

  • Black现在可以在AWS Lambda上运行(#1141)

  • 添加了--force-exclude参数(#1032)

  • 删除了已弃用的--py36选项(#1236)

  • 修复了遇到EOF时--diff输出的错误(#526)

  • 修复了装饰器周围的# fmt: off处理(#560)

  • 修复了某些# type: ignore注释导致的格式化不稳定(#1113)

  • 修复了组织括号后跟索引时的无效删除(#1575)

  • 引入了black-primer,这是一个CI工具,允许我们对Black的现有开源用户运行回归测试(#1402)

  • 根据Hypothesis和Hypothersmith引入了基于属性的模糊测试到我们的测试套件中(#1566)

  • 实现了实验性的长字符串重包装,默认情况下是禁用的(#1132),在开发过程中,隐藏在--experimental-string-processing标志下;这是一个非文档化的不受支持的功能,依赖于它将失去网络积分(#1609)

Vim插件

  • 优先使用virtualenv包而不是全局包(#1383)

19.10b0

  • 添加了对PEP 572赋值表达式的支持(#711)

  • 添加了对PEP 570位置参数的支持(#943)

  • 添加了对异步生成器的支持(#593)

  • 添加了对通过在内部放置显式尾逗号来预分割集合的支持(#826)

  • 添加了black -c作为从命令行传递代码进行格式化的方式(#761)

  • --safe现在与Python 2代码一起工作(#840)

  • 修复了Python 2特定代码的语法选择(#765)

  • 修复了函数定义和调用站点中尾随逗号的特性检测(#763)

  • # fmt: off/# fmt: on注释对在相同代码块内多次放置现在表现正确(#1005)

  • Black不再在具有61个以上核心的Windows机器上崩溃(#838)

  • Black不再在以反斜杠开头的独立注释上崩溃(#767)

  • Black不再在from ... import块中的注释上崩溃(#829)

  • Black不再在某些平台配置上的Python 3.7上崩溃(#494)

  • Black不再在from导入中的注释上失败(#671)

  • Black不再在以反斜杠开头的文件开头时失败(#922)

  • Black不再将常规注释与类型注释合并(#1027)

  • Black不再分割包含类型注释的长行(#997)

  • 删除了yield表达式周围的冗余括号(#834)

  • 在解包赋值中添加了长元组的括号(#832)

  • 在由一元运算符前缀时添加了复杂幂的括号(#646)

  • 修复了导致Black格式某些代码行长度目标为1的bug(#762)

  • Black不再在字符串边界上f-string子表达式中引入引号(#863)

  • 如果Black将括号放在单个表达式中,它将注释移动到包装的表达式而不是括号之后(#872)

  • blackd现在在响应头中返回Black的版本(#1013)

  • blackd现在当提供X-Diff头时,可以输出源代码的格式化差异(#969)

19.3b0

  • 添加了新的选项--target-version来控制Black格式化代码应针对哪些Python版本(#618)

  • 弃用了--py36(使用--target-version=py36代替)(#724)

  • Black不再将数值字面量规范化为包含_分隔符(#696)

  • del语句现在拆分为多行(#698)

  • 函数签名中不再破坏类型注释

  • 提高了格式化深度嵌套数据结构的性能(#509)

  • Black现在可以在Windows上并行正确地格式化多个文件(#632)

  • Black 现在以原子方式创建缓存文件,允许它在并行管道(如 xargs -P8)中使用(#673)

  • Black 现在正确地缩进之前用制表符格式化的文件的注释(#262)

  • blackd 现在支持 CORS(#622)

18.9b0

  • 数字字面量现在由 Black 格式化(#452,#461,#464,#469)

    • 数字字面量在 Python 3.6+ 代码中包含 _ 分隔符

    • 添加了 --skip-numeric-underscore-normalization 以禁用上述行为,并保留输入中的数字下划线

    • 数字字面量中的 _ 被识别为 Python 3.6+

    • 大多数数字字面量中的字母现在都转换为小写(例如,在 1e100x01

    • 十六进制数字始终大写(例如 0xBADC0DE

  • 添加了 blackd,有关更多信息,请参阅其文档(#349)

  • 相邻的字符串字面量现在正确地拆分为多行(#463)

  • 现在为单行中不适合的单独导入添加了尾随逗号(#250)

  • --check 对文件成功时,现在填充缓存,这加快了对正确格式化且未修改的文件的连续检查(#448)

  • 现在移除了文件开头的空白字符(#399)

  • 修复了 pweaveSpyder IDE 特殊注释的混淆(#532)

  • 修复了解包大元组时的不稳定格式化(#267)

  • 修复了带有重命名 __future__ 导入的解析(#389)

  • 修复了直接在 yield 和其他节点之前 # fmt: off 的作用域(#385)

  • 修复了具有默认参数的 lambda 表达式的格式化(#468)

  • 修复了 async for 语句:Black 不再将其拆分为单独的行(#372)

  • 注意:Vim 插件停止将 ,= 注册为默认和弦,因为这被证明是一个糟糕的想法(#415)

18.6b4

  • 热修复:当多个注释直接在 # fmt: off 前面时,不要冻结(#371)

18.6b3

  • 类型存根文件(.pyi)现在在常量后添加了空行(#340)

  • # fmt: off# fmt: on 现在更加可靠

    • 它们现在也括号对内有效(#329)

    • 它们现在正确地跨越函数/类边界(#335)

    • 它们现在在缩进块以空行或错位注释开始时也有效(#334)

  • 使 Click 在无效环境中不会失败;注意,Click 是正确的,但我们处理 Python 源代码时访问非 ASCII 文件路径的可能性很低(#277)

  • 修复了在带有引号插值表达式的 f 字符串中的不当格式化(#322)

  • 修复了在文件中找到长列表字面量时的不必要减慢

  • 修复了在具有非常多的兄弟姐妹的 AST 节点上的不必要减慢

  • 修复了字符串标准化期间食用的反斜杠

  • 修复了由于符号链接指向项目目录外部而导致的崩溃(#338)

18.6b2

  • 添加了 --config(#65)

  • 添加了 -h,相当于 --help(#316)

  • 修复了使用 -S 时不当的未修改文件缓存

  • 修复了字符串拆包中的额外空格(#305)

  • 修复了空的三引号字符串的格式化(#313)

  • 修复了在无注释行上的注释位置计算中的不必要减慢(#399)

18.6b1

  • 热修复:不要在 stdout 上输出面向人类的信息(#299)

  • 热修复:不要在非零返回代码上输出蛋糕表情符号(#300)

18.6b0

  • 添加了 --include--exclude(#270)

  • 添加了 --skip-string-normalization(#118)

  • 添加了 --verbose(#283)

  • 现在在--diff中输出的标题输出实际上符合统一的差异规范

  • 修复了被不必要的括号包裹的长而简单赋值问题(#273)

  • 修复了当一行包含多行字符串时出现的不必要的括号(#232)

  • 修复了如果使用旧版本的Click,标准输入处理无法正常工作的问题(#276)

  • Black现在在原地格式化文件时保留行结束符(#258)

18.5b1

  • 添加了--pyi(#249)

  • 添加了--py36(#249)

  • Black现在将Python语法pickle缓存与格式化缓存一起存储,使其能够在site-packages不可写的情况下工作(#192)

  • Black现在强制在类级别文档字符串(和/或字段)以及第一个方法之后有一个PEP 257空行

  • 修复了当省略了行分割的大型表达式时,在尾部注释中存在独立注释时产生的无效代码(#237)

  • 修复了在# fmt: off部分中移除可选括号(#224)

  • 修复了在非常长的导入中,星星被错误地包裹在可选括号中时产生的无效代码(#234)

  • 修复了在省略了行分割的大型表达式中的尾部注释中移动内联注释时的不稳定格式化(#238)

  • 修复了如果没有类文档字符串或字段,则在类声明和第一个方法之间出现额外的空行(#219)

  • 修复了在函数签名和内部函数或内部类之间出现额外的空行(#196)

18.5b0

  • 现在根据流畅接口样式格式化调用链(#67)

  • 现在,当数据结构字面量(元组、列表、字典和集合)不适合单行时,也会像导入一样展开(#152)

  • 现在根据PEP 8格式化切片(#178)

  • 现在也自动管理赋值和返回语句右侧的括号(#140)

  • 数学运算符现在使用它们各自的优先级来界定多行表达式(#148)

  • 现在在以括号开头或结尾且只包含单个运算符的表达式中省略可选括号(#177)

  • 现在在类定义中删除空括号(#145、#180)

  • 字符串前缀现在标准化为小写,Python 3.6+代码和Python 2.7+代码中删除了u(#188、#198、#199)

  • 类型存根文件(.pyi)现在以与PEP 484一致的风格格式化(#207、#210)

  • 现在在重新格式化多个文件时逐步报告进度

  • 修复了在缩进关闭括号后不必要地将尾部(内容带有括号)拆分为自己的行的问题(#119)

  • 修复了在导入中有时留下的无效尾逗号(#185)

  • 修复了使用多对可移除括号时的非确定格式化(#183)

  • 修复了在长赋值中不必要地将多行字符串包裹在可选括号中(#215)

  • 修复了不分割只有一个名称的长from导入

  • 修复了通过查看具有解包的函数调用来发现Python 3.6+文件,这修复了在函数签名和带有星号的函数调用中使用尾逗号时的非确定格式化,如果前者被格式化为单行。

  • 修复了处理可选括号时的崩溃(#193)

  • 修复了“是”、“不是”、“在”和“不在”在分割目的上不被视为运算符

  • 修复了遇到死链接时的崩溃

18.4a4

  • 不要在--check上填充缓存(#175)

18.4a3

  • 添加了“缓存”;如果文件在磁盘上未更改,则不会再次格式化已重新格式化的文件(#109)

  • --check--diff 不再相互排斥 (#149)

  • 通用星号表达式处理,包括双星号;这修复了乘法使表达式“不安全”的情况,即尾随逗号 (#132)

  • Black 不再强制在控制流语句后放置空行 (#90)

  • Black 现在将导入拆分,类似于 isort 的“模式 3 + 尾随逗号” (#127)

  • 修复了当独立注释关闭一个代码块时的注释缩进问题 (#16, #32)

  • 修复了当独立注释在类、def 或装饰器之前立即出现时接收额外空行的问题 (#56, #154)

  • 修复了 --diff 不显示完整路径 (#130)

  • 修复了函数调用中星号和双星号之后复杂表达式的解析 (#2)

  • 修复了在 lambda 参数中逗号上的无效拆分 (#133)

  • 修复了三重条件表达式的缺失拆分 (#141)

18.4a2

  • 修复了解析未对齐的独立注释 (#99, #112)

  • 修复了在字典字面量内部字典拆包的位置 (#111)

  • Vim 插件现在也适用于 Windows

  • 修复了在字符串中遇到不必要的转义引号时的不稳定格式化 (#120)

18.4a1

  • 添加了 --quiet (#78)

  • 添加了自动括号管理 (#4)

  • 添加了 pre-commit 集成 (#103, #104)

  • 修复了 --check 在多个文件上的报告问题 (#101, #102)

  • 修复了从原始字符串中删除反斜杠转义符 (#100, #105)

18.4a0

  • 添加了 --diff (#87)

  • 在所有定界符之前添加换行符,除了像逗号这样的情况,以更好地符合 PEP 8 (#73)

  • 标准化字符串字面量,几乎在所有地方使用双引号 (#75)

  • 修复了在嵌套括号表达式内处理独立注释的问题;Black 将不再生成超长的行或将所有独立注释放在表达式的末尾 (#22)

  • 修复了 18.3a4 的回归:在具有尾随空格的空行上不会崩溃 (#80)

  • 修复了 18.3a4 的回归:# yapf: disable 的使用作为尾随注释会导致 Black 不输出文件的其余部分 (#95)

  • 在格式化许多文件时按下 CTRL+C,Black 不会因为一系列 asyncio 相关的异常而恐慌

  • 只允许模块级别最多有两个空行,并且函数内只允许单行空行 (#74)

18.3a4

  • # fmt: off# fmt: on 已实现 (#5)

  • 自动检测格式化文件中已弃用的 Python 2 版本的 print 语句和 exec 语句 (#49)

  • 在带类型的函数参数的默认值中使用适当的空格表示复杂表达式 (#60)

  • 只有当使用 --check 时才返回退出代码 1 (#50)

  • 不要从方括号索引中删除单个尾随逗号 (#59)

  • 如果前面的因子叶不是数学运算符,则不要省略空格 (#55)

  • 如果它是第一个参数,则在关键字参数拆包中省略额外空格 (#46)

  • Sphinx 自动属性注释 中省略额外空格 (#68)

18.3a3

  • 不要删除括号表达式之外的单行空行 (#19)

  • 添加了从 stdin 到 stdin 的管道格式化功能 (#25)

  • 恢复了使用 legacy 使用 async 作为名称的代码格式化功能 (#20, #42)

  • 进一步改进了 numpy 风格数组索引的处理 (#33,再次)

18.3a2

  • 更改了二进制运算符的位置,使其位于行的开始而不是末尾,遵循 PEP 8 最近的更改 (#21)

  • 在拆分时忽略空括号对。这避免了非常奇怪的外观格式化 (#34, #35)

  • 如果调用只有一个参数,则删除尾随逗号

  • 如果顶层函数之间有注释分隔,则不要在上方函数之后放置四个空行

  • 修复了导入导致的换行格式不稳定

  • 修复了无意中将独立的后置注释折叠到最后一行的问题(#18, #28)

  • 修复了 numpy 风格数组索引中缺少空格的问题(#33)

  • 修复了基于星号的单一表达式后面的多余空格(#31)

18.3a1

  • 添加了 --check

  • 仅在安全的情况下在函数签名和调用中放置尾随逗号。如果文件是 Python 3.6+,则始终安全,否则只有在签名或调用中没有使用 *args**kwargs 时才安全。(#8)

  • 修复了相对导入中点的不正确间距(#6, #13)

  • 修复了 for 循环中解包变量后面的逗号拆分不正确的问题(#23)

  • 修复了括号中的集合表达式中多余的空格(#7)

  • 修复了在默认参数中打开括号后的多余空格以及默认参数中的多余空格(#14, #17)

  • 修复了当操作数是复杂表达式时,一元运算符后面的多余空格(#15)

18.3a0

  • 首个发布版本,祝 2018 年快乐 🍰 佳节!

  • alpha 质量级

  • 按日期和版本标记(见:https://calver.org/

项目详情


下载文件

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

源分发

tan-23.7.0.tar.gz (587.4 kB 查看哈希)

上传时间

构建分发

tan-23.7.0-py3-none-any.whl (181.4 kB 查看哈希)

上传时间 Python 3

支持者

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