autopep8 缩进不一致

autopep8 indenting inconsistently

我正在将 autopep8 实施到现有项目中,有时较长的行会被奇怪地格式化。例如,有这样的代码片段:

client_data={'id': str(self.user.client.client_id), 'type': self.user.client.client_type},

格式如下:

self.setup_auth(UserProxy(self.user.sub, [],
                          client_data={
    'id': str(
        self.user.client.client_id),
    'type': self.user.client.client_type},
    roles=[]))

所以传递给 UserProxy 的参数在第一行有两个元素,然后第三个元素在正确缩进的新行上,但是字典的元素只缩进一次而不是缩进一次它脱落的线。

如果我尝试手动修复它,它只会恢复原状。

有谁知道如何改进这种情况下的缩进?

编辑: 我是 运行 autopep8 在 pyproject.toml

[tool.autopep8]
max_line_length = 88
in-place = true
recursive = true
aggressive = 3

缩进有点一致,只是不是您想要的。你可以用你的原始代码做很多事情来符合 PEP8,因为一行中有太多事情要做。分解它 - 它将更具可读性并使 autopep8 快乐。

client_data = {
    'id': str(self.user.client.client_id),
    'type': self.user.client.client_type }
proxy = UserProxy(self.user.sub, [], client_data=client_data, roles=[])
self.setup_auth(proxy)

看起来你的选择是:

  1. 使用 --SELECT = <Features> 以 select 仅您要修复的问题类型。
  2. 提供指定的配置文件 here and here。在配置文件中,您可以 select 要忽略的事物类型。

附带说明一下,我不确定您对 autopep8 的喜爱程度如何,但在相同的代码中,Black 看起来是这样的:

self.setup_auth(
    UserProxy(
        self.user.sub,
        [],
        client_data={
            "id": str(self.user.client.client_id),
            "type": self.user.client.client_type,
        },
        roles=[],
    )
)

我喜欢它的样子。