在 PyGitHub 中,如何设置 set_labels?

In PyGitHub, how do you set set_labels?

我正在构建一个 GitHub 动作,

  1. 获取现有问题标签
  2. 添加正确的优先级标签
  3. 设置所有标签

相关部分是,

def required_labels(current_labels, required_priority):
    if current_labels is None:
        return [required_priority]
    labels_out = []
    for label in current_labels:
        if label not in possible_priorities:
            labels_out.append(label)
            continue
        if label != required_priority:
            continue
    labels_out.append(required_priority)
    return labels_out

out_labels = required_labels(existing_labels, body_priority_label)
issue.set_labels(out_labels)

set_labels docs说需要

list of github.Label.Label or strings

因此,我希望字符串列表 labels_out 可以工作,但是 set_labels returns

File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/github/Issue.py", line 545, in set_labels
    assert all(
AssertionError: (['enhancement', 'P2'],)

我也尝试过合并这个列表,但没有发现任何变化。

set().union(out_labels)

我也试过使用 repo 标签对象。

for label in labels_names:
    labels_out.append(repo.get_label(name=label).name)

这个返回了,

  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/github/Repository.py", line 2631, in get_label
    assert isinstance(name, str), name
AssertionError: ['enhancement', 'P2']

当我向 set_labels 提供许多字符串时,它按预期工作。

    issue.set_labels("Separate", "Strings", "Work", "As", "Expected")

显然,人们不会知道一个问题可能有多少个标签。我应该如何向 set_labels 提供所需的标签?

documentation 描述了以下函数签名:

set_labels(*labels)

函数签名中 labels 前面的 'star' 表示可变参数,它带有零个、一个或多个标签。

因此,您可以在将列表传递给 set_labels 之前将其解压缩,如下所示:

issue.set_labels(*out_labels)

您可以在 tutorial.

的第 4.7.3 和 4.7.4 节中阅读有关参数和参数解包的更多信息