Python:Black不会换行长行

34

我正在使用 black==20.8b1

我有一个长字符串,例如:

return f"{self.name}, a {adjective.to_name()} {kin_string}{self._type.to_name()} who works for the {target.get_relationship_target_string()}."

I run:

$ black -l 80 . -t py38
All done! ✨  ✨
2 files left unchanged.

为什么字符串没有换行?我以为black现在支持换行字符串了(基于github上的问题)。
3个回答

31

8
看起来我们有一个新的旗帜可以取代 --experimental-string-processing 现在:--preview。当运行时搭配使用 --experimental-string-processing: <string>:12: Deprecated: experimental string processinghas been included inpreviewand deprecated. Usepreview instead. 的话,会出现这样的提示:<string>:12:已弃用:experimental string processing 已被包含在 preview 中并被弃用。请改用 preview - Taylor D. Edmiston

18

22.1.0(2022年1月29日)开始,您需要使用--preview运行Black。


1
谢谢!当我执行 black --preview file.py 时,这对我很有效。如何在 VScode 中使用它?我已经在我的项目的 settings.json 中包含了 "python.formatting.blackArgs": [ "--preview" ],但是没有强制执行换行。 - KLaz
@KLaz 不是很确定。这是我的VSCode设置:"python.formatting.provider": "black", "python.formatting.blackArgs": ["--preview"](在MacOS上)。看起来我们的设置一样。这个对我有用。你的VSCode能否成功格式化Python文件(我是说,除了换行)?也许它无法在你的系统中找到Black二进制文件。 - GG.

13

目前,Black未对长字符串或长注释进行换行处理。您可以在他们项目的GitHub上看到一个开放问题,其中说:

Black目前不会换行长字符串文字或合并发生在同一行的字符串文字。[...]这将需要修改AST,这并非100%安全,并且有许多边缘情况需要处理。


1
你知道为什么这个问题被关闭了吗?https://github.com/psf/black/issues/182 我以为它已经完成了? - gruszczy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接