Estoy construyendo una acción de GitHub que,
La parte relevante es,
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)
Los documentos de set_labels dicen que requiere
lista de github.Label.Label
o cadenas
Por lo tanto, esperaba que una lista de cadenas, labels_out
funcionara, sin embargo, set_labels
devuelve
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'],)
También intenté hacer una unión de esta lista pero no vi ningún cambio.
set().union(out_labels)
También intenté usar el objeto de etiqueta de repositorio.
for label in labels_names:
labels_out.append(repo.get_label(name=label).name)
esto volvió,
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']
Cuando proporciono muchas cadenas set_labels
, funciona como se esperaba.
issue.set_labels("Separate", "Strings", "Work", "As", "Expected")
Claramente, uno no sabrá cuántas etiquetas puede tener un problema. ¿Cómo debo proporcionar las etiquetas requeridas a set_labels
?
Solución del problema
La documentación describe la siguiente firma de función:
set_labels(*labels)
La 'estrella' delante de labels
la firma de la función indica un argumento variable que toma cero, una o más etiquetas.
Por lo tanto, puede desempaquetar su lista antes de pasarla a set_labels
, de la siguiente manera:
issue.set_labels(*out_labels)
Puede leer más sobre los argumentos y el desempaquetado de argumentos en las Secciones 4.7.3 y 4.7.4 del tutorial.
No hay comentarios.:
Publicar un comentario