使用黑色格式化程序嵌套长列表和集合

问题描述

python black formatter 可以嵌套长列表和集合吗?例如:

输入

coworkers = {"amy","bill","raj","satoshi","jim","lifeng","jeff","sandeep","mike"}

输出

coworkers = {
    "amy","mike",}

期望的输出

coworkers = {
    "amy",}

解决方法

这是不可能的,因为 Black 使用的编码风格可以被视为 PEP 8 的严格子集。请阅读文档 here。具体:

对于垂直空白,Black 尝试在每一行呈现一个完整的表达式或简单的语句。如果这符合分配的行长,那就太好了。

# in:
j = [1,2,3
]

# out:
j = [1,3]

如果没有,Black 将查看第一个外部匹配括号的内容并将其放在单独的缩进行中。

# This piece of code is written by me,it isn't part of the original doc
# in
j = [1,3,4,5,6,7]

# out
j = [
    1,7
]

如果仍然不符合要求,它将使用相同的规则进一步分解内部表达式,每次缩进匹配的括号。如果匹配括号对的内容是逗号分隔的(如参数列表或字典文字等),那么 Black 将首先尝试将它们与匹配括号保持在同一行。如果这不起作用,它会将所有这些放在单独的行中。