更改日志¶
24.8.0¶
稳定风格¶
修复当
# fmt: off
用于结束括号或方括号之前时的崩溃问题。 (#4363)
打包¶
更新打包元数据:明确链接文档,现在还链接了问题跟踪器。这改善了 Black 在 PyPI 上的列表。 (#4345)
解析器¶
性能¶
改进在
.gitignore
中列出大型目录时的性能 (#4415)
Blackd¶
修复 docker 容器的 blackd(以及所有 extras 安装) (#4357)
24.4.2¶
这是一个错误修复版本,用于修复 24.4.1 中引入的新 f-string 解析器中的两个回归问题。
解析器¶
修复某些复杂 f-string 无法解析的回归问题 (#4332)
性能¶
修复某些复杂字符串文字的性能低下问题 (#4331)
24.4.1¶
亮点¶
添加对 PEP 701 引入的 Python 3.12 新 f-string 语法的支持 (#3822)
稳定风格¶
修复包含换行符的缩进虚拟函数导致的崩溃问题 (#4318)
解析器¶
添加对类型参数默认值的支持,这是一个由 PEP 696 添加到 Python 3.13 的新语法特性 (#4327)
集成¶
即使跳过
git archive
,Github Action 仍然可以工作 (#4313)
24.4.0¶
稳定风格¶
修复由 AST 等效性检查引起的意外崩溃问题 (#4290)
预览风格¶
集成¶
在 GitHub Action
psf/black
中添加一个新选项use_pyproject
。这将从pyproject.toml
读取 Black 版本。 (#4294)
24.3.0¶
亮点¶
此版本是一个里程碑:它修复了 Black 的第一个 CVE 安全漏洞。如果您在不受信任的输入上运行 Black,或者您习惯在文档字符串中放置数千个前导制表符,那么强烈建议您立即升级以修复 CVE-2024-21503。
此版本还修复了 Black 的 AST 安全检查中的一个错误,该错误允许 Black 对 Python 3.12 及更高版本中有效的某些 f-string 进行不正确的更改。
稳定风格¶
性能¶
修复在包含大量前导制表符的文档字符串上的灾难性性能问题。这修复了 CVE-2024-21503。 (#4278)
文档¶
说明将
--check
与--quiet
一起使用时会发生什么 (#4236)
24.2.0¶
稳定风格¶
修复注释与冗余括号一起被错误删除的错误 (#4218)
预览风格¶
配置¶
输出¶
Black 在执行等效性检查时会吞并
ast
模块产生的任何SyntaxWarning
或DeprecationWarning
(#4189)
集成¶
添加 JSONSchema 并提供 validate-pyproject 入口点 (#4181)
24.1.1¶
错误修复版本,用于修复一个错误,该错误导致 Black 在某些路径长度限制严格的文件系统上不可用。
预览风格¶
一致地在类型化参数上添加尾随逗号 (#4164)
配置¶
缩短缓存文件名的长度以修复在不支持长路径的文件系统上的崩溃问题 (#4176)
24.1.0¶
亮点¶
此版本引入了新的 2024 稳定风格 (#4106),稳定了以下更改
在
if
-else
表达式周围添加括号 (#2278)仅包含
...
的虚拟类和函数实现被格式化为更紧凑 (#3796)如果赋值语句太长,我们现在更喜欢在右侧进行拆分 (#3368)
Unicode 转义序列中的十六进制代码现在被标准化为小写 (#2916)
在长类型注释周围添加括号 (#3899)
修复返回类型中不正确的魔术尾随逗号处理 (#3916)
删除类docstring之前的空行 (#3692)
如果在单个
with
语句中组合,则将多个上下文管理器包装在括号中 (#3489)修复幂运算行长计算中的错误 (#3942)
即使在最后一个条目之后有注释,也要将尾随逗号添加到集合字面量 (#3393)
使用
--skip-magic-trailing-comma
或-C
时,将从具有多个元素的子表达式中删除尾随逗号 (#3209)接受原始字符串作为docstring (#3947)
在case块中分割长行 (#4024)
停止从子表达式中的walrus运算符中删除空格 (#3823)
修复某些异步语句的格式错误 (#3609)
允许将
# fmt: skip
与其他注释组合 (#3959)
在 --preview
风格中已经有一些改进,这些改进将在2025年稳定风格中发布。请尝试一下并 分享你的反馈。在过去,预览风格包含了一些我们无法稳定的功能。今年,我们添加了单独的 --unstable
风格用于具有已知问题的功能。现在, --preview
风格只包含我们真正希望在下一年的稳定风格中使用的功能。
稳定风格¶
在此版本中,对已移至稳定风格的功能进行了多项错误修复
预览风格¶
添加
--unstable
风格,涵盖具有已知问题(会阻止它们进入稳定风格)的预览功能。还添加了--enable-unstable-feature
标志;例如,使用--enable-unstable-feature hug_parens_with_braces_and_square_brackets
在整个 2024 年应用此预览功能,即使以后的 Black 版本将该功能降级为不稳定 (#4096)以与类和函数docstring相同的方式格式化模块docstring (#4095)
修复在字典中使用walrus时发生的崩溃 (#4155)
修复包装长字典时不必要的括号 (#4135)
停止在
# fmt: skip
注释之前规范化空格 (#4146)
配置¶
集成¶
23.12.1¶
打包¶
修复了一个默认情况下包含来自
d
额外的依赖项的错误 (#4108)
23.12.0¶
亮点¶
马上就要到 2024 年了,这意味着是时候发布新版本的 Black 稳定风格了!与本版本一起,我们将发布一个 alpha 版本 24.1a1,展示 2024 年稳定风格的草案,我们将在 1 月份的版本中最终确定。请尝试一下并 分享你的反馈。
此版本 (23.12.0) 仍然会生成 2023 年风格。 --preview
模式下的大多数(但不是全部)更改都将出现在 2024 年稳定风格中。
稳定风格¶
预览风格¶
配置¶
--line-ranges
现在在--safe
模式下跳过 Black 的内部稳定性检查。这避免了在罕见的输入上发生崩溃,这些输入具有许多未格式化的相同内容行。 (#4034)
打包¶
集成¶
23.11.0¶
亮点¶
使用新的
--line-ranges
命令行选项支持格式化行范围 (#4020)
稳定风格¶
预览风格¶
配置¶
性能¶
修复了 macOS 上 arm64 架构上 mypyc 构建的错误 (#4017)
集成¶
Black 的 pre-commit 集成现在只会在适合代码格式化的 Git hook 上运行 (#3940)
23.10.1¶
亮点¶
维护版本,修复 GitHub Action 边界情况 (#3957)
预览样式¶
打包¶
将 Dockerfile 更改为使用 hatch + 编译 black (#3965)
集成¶
文档¶
已知 Windows 文档 CI 出现问题 https://github.com/psf/black/issues/3968
23.10.0¶
稳定样式¶
修复了从括号内字符串中删除注释的错误 (#3909)
预览样式¶
配置¶
修复了设置
BLACK_CACHE_DIR
时,缓存版本控制逻辑的问题 (#3937)
解析器¶
输出¶
集成¶
现在,作业摘要中显示的操作输出将用 Markdown 样式包装 (#3914)
23.9.1¶
由于各种问题,上一个版本 (23.9.0) 没有包含编译的 mypyc 轮子,这些轮子使 Black 的速度显著提升。这些问题现在已经修复,本版本应该再次包含编译的轮子。
由于 mypyc 中的错误,将不会提供 Python 3.12 的轮子。一旦 mypyc 错误修复,我们将在未来的版本中提供 3.12 的轮子。
打包¶
将 mypy 升级到 1.5.1 (#3864)
性能¶
在 Black 的缓存中存储原始元组而不是命名元组,从而提高性能并减小缓存大小 (#3877)
23.9.0¶
预览样式¶
配置¶
Black 现在在解析符号链接之前应用排除和忽略逻辑 (#3846)
性能¶
Blackd¶
修复了
blackd
中使用单字符输入的问题 (#3558)
集成¶
Black 现在有一个 官方的 pre-commit 镜像。在您的
.pre-commit-config.yaml
中将https://github.com/psf/black
替换为https://github.com/psf/black-pre-commit-mirror
将使 Black 的速度提升约 2 倍 (#3828)现在,GitHub Action 完成后,将删除
ENV_PATH
指定的.black.env
文件夹 (#3759)
23.7.0¶
亮点¶
已删除对 Python 3.7 的运行时支持。格式化 3.7 代码将继续受到支持,直到另行通知为止 (#3765)
稳定样式¶
预览样式¶
配置¶
*Black* 的
--workers
参数现在可以通过BLACK_NUM_WORKERS
环境变量指定 (#3743)现在默认情况下排除
.pytest_cache
、.ruff_cache
和.vscode
(#3691)修复了在运行
--stdin-filename
时,*Black* 未遵守pyproject.toml
设置的问题,前提是找到的pyproject.toml
不在当前工作目录中 (#3719)如果
exclude
和extend-exclude
在pyproject.toml
中具有无效数据类型,*Black* 现在会报错,而不是静默地执行错误的操作 (#3764)
打包¶
解析器¶
添加了对 Python 3.12 中新的 PEP 695 语法的支持 (#3703)
性能¶
输出¶
Blackd¶
现在,
blackd
参数解析器会在其帮助文本中显示选项的默认值 (#3712)
集成¶
Black 现在已在
PYTHONWARNDEFAULTENCODING = 1
(#3763) 下进行测试。更新 GitHub Action 以在作业摘要中显示黑色输出 (#3688)
文档¶
23.3.0¶
亮点¶
此版本修复了 Black 的 GitHub action 中一个长期存在的令人困惑的行为,即 action 的版本并不决定运行的 Black 版本 (问题 #3382)。此外,还修复了关于导入的一个小错误,并对预览样式进行了多项改进。
请尝试使用 black --preview
来试用 预览样式,并告诉我们您的反馈。预览样式中的所有更改预计将在 2024 年 1 月成为 Black 稳定样式的一部分。
稳定样式¶
包含
# fmt: skip
和# fmt: off
的导入行不再在紧随其后的另一个导入行之后添加额外的空行 (#3610)
预览样式¶
即使在最后一个条目之后有注释,也要将尾随逗号添加到集合字面量 (#3393)
async def
、async for
和async with
语句现在与它们的非异步版本相比,格式一致。(#3609)包含两个上下文管理器的
with
语句将始终用括号括起来 (#3589)现在,长字符串字面量可以在东亚逗号和句点 (
、
U+3001 IDEOGRAPHIC COMMA、。
U+3002 IDEOGRAPHIC FULL STOP 和,
U+FF0C FULLWIDTH COMMA) 之后分割,除了在空格之前分割 (#3445)对于存根,强制在具有除
...
以外的正文的嵌套类之后使用一个空行 (#3564)通过更改行分割行为来改进对多行字符串的处理 (#1879)
解析器¶
添加了对格式化具有无效类型注释的文件的支持 (#3594)
集成¶
文档¶
文档说明仅支持最新版本以解决安全问题;漏洞应通过 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
现在阻止 docstring 前缀按预期进行规范化 (#3168) (自 22.8.0 以来)使用
--skip-magic-trailing-comma
或-C
时,将从具有多个元素的下标表达式中删除尾随逗号 (#3209) (22.8.0)现在,列表、集合或元组中的隐式连接字符串用括号括起来 (#3162) (22.8.0)
修复了当注释出现在其自身行上的隐式连接字符串中间时发生的字符串合并/分割问题 (#3227) (22.8.0)
现在,返回值注释周围的括号得到管理 (#2990) (22.6.0)
删除等待对象周围的冗余括号 (#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)
修复了在使用 walrus 运算符在函数返回值注释和 except 子句中使用的预览样式中发生的崩溃 (#3423)
修复了在预览高级字符串处理中发生的崩溃,其中混合的隐式连接的常规字符串和 f 字符串以空跨度开头 (#3463)
修复了在预览高级字符串处理中发生的崩溃,其中在字典的值之前放置了独立的注释 (#3469)
修复了一个问题,即当装饰器应用了
# fmt: skip
或装饰器之间存在独立注释时,会添加额外的空行 (#3470)不要将 docstring 中的结束引号放在单独的行上,即使该行太长 (#3430)
字典字面量中的长值现在用括号括起来;相应地,现在删除了字典字面量中短值周围的冗余括号;现在,长字符串 lambda 值用括号括起来 (#3440)
修复了在涉及 docstring 的边缘情况下发生的两个预览样式崩溃 (#3451)
将字符串类型注释排除在改进的字符串处理之外;修复了在返回值注释被字符串化并跨多行扩展时发生的崩溃 (#3462)
在针对 Python 3.9+ 时,将多个上下文管理器用括号括起来 (#3489)
修复了在使用 walrus 运算符在
with
语句或元组中使用的预览样式中发生的多个崩溃 (#3473)修复了在 f 字符串表达式中发生的无效引号转义错误,该错误生成了无效代码。现在,通过更改表达式中使用的引号,可以将具有不同引号的隐式连接的 f 字符串合并或引号规范化。(#3509)
修复了在使用 mypyc 编译 Black 时发生的
await (yield)
崩溃 (#3533)
配置¶
Black 现在尝试从
pyproject.toml
(#3219) 中指定的项目元数据中推断其--target-version
。
打包¶
输出¶
集成¶
文档¶
扩展
vim-plug
安装说明以提供更明确的选项 (#3468)
22.12.0¶
预览样式¶
配置¶
解析器¶
解析器添加了对传递给函数参数的生成器表达式中的 walrus 的支持(例如,
any(match := my_re.match(text) for text in texts)
) (#3327).
集成¶
Vim 插件:可以通过
let g:black_use_virtualenv = 0
(#3309) 选项使用 Black 的系统安装。
22.10.0¶
亮点¶
已删除对 Python 3.6 的运行时支持。将继续支持格式化 3.6 代码,直到另行通知。
稳定样式¶
修复了在
# fmt: on
的块级与# fmt: off
的块级不同时发生的崩溃 (#3281)
预览样式¶
修复了格式化一些具有括号括起来的较长字符串键的字典时发生的崩溃 (#3262)
配置¶
打包¶
Blackd¶
将保留 Windows 样式 (CRLF) 换行符 (#3257).
集成¶
22.8.0¶
亮点¶
稳定样式¶
预览样式¶
Blackd¶
blackd
现在支持通过X-Preview
标头启用预览样式 (#3217)
配置¶
文档¶
建议在 IntelliJ IDE 中使用 BlackConnect (#3150)
集成¶
输出¶
解析器¶
类型注释现在一致地包含在 AST 等效性检查中,因此意外删除会引发错误。 尽管由于标准库的限制,在 PyPy 3.7 上运行时无法跟踪类型注释。 (#2874)
性能¶
在格式化单个文件时,将 Black 的启动时间减少 15-30% (#3211)
22.6.0¶
样式¶
修复涉及
#fmt: skip
和# fmt:skip
注释的不稳定格式(注意空格的缺失)(#2970)
预览样式¶
集成¶
添加
scripts/migrate-black.py
脚本,以方便将 Black 引入 Git 项目 (#3038)
输出¶
将 Python 版本和实现作为
--version
标志的一部分输出 (#2997)
打包¶
在 Python 3.11 构建中使用
tomli
而不是tomllib
,其中tomllib
不可用 (#2987)
解析器¶
Vim 插件¶
修复
strtobool
函数。 它没有解析 true/on/false/off。 (#3025)
22.3.0¶
预览样式¶
配置¶
文档¶
更新 pylint 配置文档 (#2931)
集成¶
将测试移至在 Vim/Neovim 中禁用插件,这可以加快加载速度 (#2896)
输出¶
在详细模式下,记录何时 *Black* 使用用户级配置 (#2861)
打包¶
解析器¶
Black 现在可以解析
for
和async for
语句目标中的星号表达式,例如for item in *items_1, *items_2: pass
(#2879)。
22.1.0¶
最后,*Black* 不再是 beta 产品! 这是第一个非 beta 版本,也是第一个受我们新的 稳定性策略 涵盖的版本。
重点¶
样式¶
弃用
--experimental-string-processing
并将功能移至--preview
下 (#2789)对于存根,如果存在至少一个预先存在的空行,则现在保留类属性和方法之间的一个空行 (#2736)
Black 现在规范化字符串前缀顺序 (#2297)
如果两个操作数都是简单的,则删除幂运算符周围的空格 (#2726)
解决在存在 magic trailing comma 的情况下导致某些情况下格式不稳定的错误 (#2807)
对十进制浮点数和整数字面量使用括号进行属性访问 (#2799)
不要对十六进制、二进制、八进制和复数字面量添加属性访问的空格 (#2799)
在顶层
if
语句中以相同方式对待存根中的空行 (#2820)修复使用分号和算术表达式的格式不稳定 (#2817)
修复围绕 magic trailing comma 的格式不稳定 (#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)在
return
和yield
结构上的元组解包现在表示 3.8+ (#2700)带注释的赋值上的无括号元组(例如
values: Tuple[int, ...] = 1, 2, 3
)现在表示 3.8+ (#2708)修复在括号内存在尾随换行符或注释时,处理独立
match()
或case()
(#2760)from __future__ import annotations
语句现在表示 Python 3.7+ (#2690)
性能¶
配置¶
输出¶
打包¶
集成¶
更新 GitHub 操作以支持容器化运行 (#2748)
文档¶
21.12b0¶
Black¶
Jupyter Notebook 支持¶
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)
在使用
match
的代码上,在--target-version py310
下的解析性能提高了约 50% (#2670)
打包¶
21.11b1¶
Black¶
将 regex 版本最低限度提升到 2021.4.4 以修复 Pattern 类的用法 (#2621)
21.11b0¶
Black¶
集成¶
21.10b0¶
Black¶
Blackd¶
Black-Primer¶
集成¶
21.9b0¶
打包¶
21.8b0¶
Black¶
添加对格式化 Jupyter Notebook 文件的支持 (#2357)
从
appdirs
依赖项迁移到platformdirs
(#2375)如果 .gitignore 无效,则显示更友好的错误 (#2414)
在 f-string 表达式中意外添加的反斜杠的故障保护机制已得到加强,以便在引号规范化期间处理更多边缘情况 (#2437)
通过添加尾随逗号,避免将函数返回类型注释的类型更改为元组 (#2384)
已添加对集合文字、集合推导和索引中未带括号的 walrus 的解析支持 (#2447).
固定
setuptools-scm
构建时依赖项版本 (#2457)排除 typing-extensions 版本 3.10.0.1,因为它在 Python 3.10 上已损坏 (#2460)
Blackd¶
将 sys.exit(-1) 替换为 raise ImportError,因为它与扫描已安装软件包的工具的配合更加良好 (#2440)
集成¶
提供的 pre-commit 钩子不再指定
language_version
,以避免覆盖default_language_version
(#2430)
21.7b0¶
Black¶
Docker¶
添加新的
latest_release
标签自动化,以跟踪 docker 镜像上的最新 black 版本 (#2374)
集成¶
21.6b0¶
Black¶
修复由
fmt: skip
和缩进引起的失败 (#2281)在决定是否拆分字符串时考虑 += 赋值 (#2312)
当存在字符串运算符时更正最大字符串长度计算 (#2292)
修复使用
--code
标志时的选项用法 (#2259)当 Black 用作库时,不要调用
uvloop.install()
(#2303)添加
--required-version
选项,以要求运行特定版本 (#2300)修复字符串组包含伪造的 f-string 时不正确的自定义断点索引 (#2311)
修复
R
前缀将被 docstring 转换为小写字符的回归 (#2285)修复使用
--experimental-string-processing
时处理命名转义 (\N{...}
) 的问题 (#2319)
集成¶
官方 Black 操作现在支持选择要使用的版本,并支持三大操作系统。 (#1940)
21.5b2¶
Black¶
不再在空 docstring 中插入空格 (#2249)
修复在 Windows 上处理包含非 ASCII 字符的 .gitignore 文件的问题 (#2229)
尊重所有级别的
.gitignore
文件,而不仅仅是root/.gitignore
文件(像git
一样应用.gitignore
规则)(#2225)在使用 LANG=C 时恢复与 Python 3.6 上 Click 8.0 的兼容性 (#2227)
如果在 python 环境中,添加额外的 uvloop 安装 + 导入支持 (#2258)
修复当匹配的括号未找到时
--experimental-string-processing
崩溃 (#2283)确保拆分以字符串运算符开头的行 (#2286)
修复 black 用于识别 f-表达式 的正则表达式 (#2287)
Blackd¶
为
aiohttp-cors
依赖项添加下限。仅支持 0.4.0 或更高版本。 (#2231)
打包¶
文档¶
21.5b1¶
Black¶
将
src/black/__init__.py
重构为多个文件 (#2206)
文档¶
对文档进行了大幅重组,使其更有意义。前往 RTD 上的稳定文档 查看它们。 (#2174)
21.5b0¶
Black¶
Black-Primer¶
将
--no-diff
添加到 black-primer 以抑制格式更改 (#2187)
21.4b2¶
Black¶
打包¶
使用 black 安装
primer.json
(默认情况下由black-primer
使用)。 (#2154)
21.4b1¶
Black¶
打包¶
将 pathspec 提升到 >= 0.8.1 以解决无效的 .gitignore 排除处理
21.4b0¶
Black¶
修复了由
Black
插入的可选尾部逗号和查看预先存在的“魔术”尾部逗号的可选括号的组合而导致的罕见但令人讨厌的格式不稳定。这修复了问题 #1629 及其许多许多副本。 (#2126)Black
现在通过剥离前导和尾随空格来处理单行 docstring,并在需要时添加填充空格以拆分 “”””。 (#1740)Black
现在清理注释中的前导非换行空格 (#2092)Black
现在在规范化多行 docstring 引号时尊重--skip-string-normalization
(#1637)Black
不再在格式化类型存根时删除非函数代码和修饰符之间的所有空行。现在Black
强制使用一个空行。 (#1646)Black
不再在 if/while 语句中添加括号化赋值表达式后的不正确空格 (#1655)添加
--skip-magic-trailing-comma
/-C
以避免使用尾部逗号作为拆分行的理由 (#1824)修复了在 POSIX 上 PWD=/ 时崩溃 (#1631)
修复了使用 –diff 时出现的“在关闭的文件上进行 I/O 操作” (#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 现在不再依赖于 Python 3.8 及更高版本的 typed-ast
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
现在显示彩色差异 (#1266)Black
现在使用“py3”标记的轮子进行打包 (#1388)Black
现在支持 Python 3.8 代码,例如 return 语句中的星号表达式 (#1121)Black
不再规范化大写 R 字符串前缀,因为它们具有社区认可的含义 (#1244)Black
现在在指定的配置文件不存在时使用退出代码 2 (#1361)Black
现在可以在 AWS Lambda 上运行 (#1141)添加了
--force-exclude
参数 (#1032)删除了已弃用的
--py36
选项 (#1236)修复了
--diff
输出在遇到 EOF 时的问题 (#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-imports 中的注释上失败 (#671)
Black 不再在文件以反斜杠开头时失败 (#922)
Black 不再将普通注释与类型注释合并 (#1027)
Black 不再分割包含类型注释的长行 (#997)
删除了围绕
yield
表达式的多余括号 (#834)在解包赋值中添加了围绕长元组的括号 (#832)
在单目运算符前缀时,在复杂幂周围添加了括号 (#646)
修复了导致 Black 使用 1 的行长度目标格式化某些代码的错误 (#762)
Black 不再在字符串边界上在 f 字符串子表达式中引入引号 (#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+数字字面量中的大多数字母都将转换为小写(例如,在
1e10
中,0x01
)十六进制数字始终为大写(例如
0xBADC0DE
)
相邻的字符串字面量现在可以正确地拆分为多行 (#463)
现在将尾随逗号添加到不适合一行导入的单个导入 (#250)
当
--check
对文件成功时,现在会填充缓存,这将加快对格式正确且未修改文件的连续检查 (#448)现在将删除文件开头的空白 (#399)
修复了对 pweave 和 Spyder IDE 特殊注释的混淆 (#532)
修复了在解包大型元组时格式不稳定的问题 (#267)
修复了对带有重命名的
__future__
导入的解析 (#389)修复了
# fmt: off
的作用域,该作用域直接位于yield
和其他节点之前 (#385)修复了带有默认参数的 lambda 表达式的格式 (#468)
修复了
async for
语句:Black 现在不再将它们拆分为单独的行 (#372)注意:Vim 插件不再将
,=
注册为默认和弦,因为它被证明是一个糟糕的想法 (#415)
18.6b4¶
热修复:当多个注释直接位于
# fmt: off
之前时,不要冻结 (#371)
18.6b3¶
18.6b2¶
18.6b1¶
18.6b0¶
18.5b1¶
添加了
--pyi
(#249)添加了
--py36
(#249)Python 语法 pickle 缓存与格式缓存一起存储,使 Black 可以在 site-packages 不可写入的环境中工作 (#192)
Black 现在在类级文档字符串(和/或字段)和第一个方法之后强制执行 PEP 257 空行
修复了在从大型表达式中的行拆分中省略的尾随项中存在独立注释时产生的无效代码 (#237)
修复了在
# fmt: off
部分中删除可选括号的问题 (#224)修复了在非常长的导入中,星号被错误地包装在可选括号中时产生的无效代码 (#234)
修复了在从大型表达式中的行拆分中省略的尾随项中移动内联注释时,格式不稳定的问题 (#238)
修复了如果不存在类文档字符串或字段,则在类声明和第一个方法之间存在额外的空行 (#219)
修复了在函数签名和内部函数或内部类之间存在额外的空行 (#196)
18.5b0¶
数据结构字面量(元组、列表、字典和集合)现在也始终像导入一样在不适合单行时爆炸 (#152)
切片现在根据 PEP 8 进行格式化 (#178)
现在,在赋值和返回值语句的右侧也会自动管理括号 (#140)
数学运算符现在使用它们各自的优先级来分隔多行表达式 (#148)
现在,在以括号开头或结尾且仅包含单个运算符的表达式上省略了可选括号 (#177)
字符串前缀现在已标准化为小写,并且
u
仅在 Python 3.6+ 代码和带有unicode_literals
未来导入的 Python 2.7+ 代码中删除 (#188, #198, #199)现在将增量报告对许多文件的重新格式化进度
修复了尾随项(带括号的内容)在缩进减少的结束括号之后被不必要地爆炸成它们自己的行的问题 (#119)
修复了有时在导入中留下的无效尾随逗号 (#185)
修复了在使用多对可删除括号时,格式不确定的问题 (#183)
修复了在长赋值中,多行字符串被不必要地包装在可选括号中的问题 (#215)
修复了未拆分仅包含单个名称的长 from-导入
修复了 Python 3.6+ 文件发现,方法是还查看带有解包的函数调用。这修复了如果在带有星号的函数签名和带有星号的函数调用中都使用尾随逗号,则格式不确定的问题,但前者将重新格式化为单行。
修复了处理可选括号时发生的崩溃 (#193)
修复了“is”、“is not”、“in”和“not in”未被视为拆分目的的操作符的问题
修复了遇到失效的符号链接时发生的崩溃
18.4a4¶
在
--check
时不再填充缓存 (#175)
18.4a3¶
添加了“缓存”功能;已经重新格式化且磁盘上没有更改的文件将不再重新格式化 (#109)
--check
和--diff
不再互斥 (#149)泛化了星号表达式处理,包括双星号;这修复了乘法导致表达式对尾随逗号“不安全”的问题 (#132)
Black不再强制在控制流语句后面添加空行 (#90)
Black现在像isort的“模式3+尾随逗号”一样拆分导入 (#127)
修复了
--diff
没有显示完整路径的问题 (#130)修复了在函数调用中解析星号和双星号之后的复杂表达式的错误 (#2)
修复了在lambda参数中逗号处无效拆分的问题 (#133)
修复了缺少三元表达式拆分的问题 (#141)
18.4a2¶
18.4a1¶
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¶
18.3a3¶
18.3a2¶
18.3a1¶
18.3a0¶
第一个发布版本,祝您2018年蛋糕日快乐!
alpha质量
日期版本 (参见: https://calver.org/)