GOOGLE ADS

martes, 19 de abril de 2022

En PyGitHub, ¿cómo configura set_labels?

Estoy construyendo una acción de GitHub que,

  • obtiene etiquetas de problemas existentes

  • agrega etiquetas de prioridad correctas

  • establece todas las etiquetas

  • 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.Labelo cadenas

    Por lo tanto, esperaba que una lista de cadenas, labels_outfuncionara, sin embargo, set_labelsdevuelve

    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 labelsla 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

    Flutter: error de rango al acceder a la respuesta JSON

    Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...