es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El gancho de pre-commit de yapf regresa resultados diferentes a ejecutar yapf en la línea de comandos.

Al ejecutar un archivo usando la línea de comandos y yapf, mis etiquetas son las siguientes:

-i –verbose –style “google”

Cuando uso lo mismo como argumentos para pre-commit, mi gancho de pre-commit siempre retorna “Pass”.

Esto fue probado con el mismo archivo y los mismos cambios, así que esperaría resultados similares. Si excluyo --style "google", mi gancho de pre-commit cambiará al menos el formato de mi archivo, pero no al estilo que deseo.

¿Alguien puede decirme qué estoy haciendo mal con los argumentos?

Archivo de Python que contiene un ejemplo:

def hello_world():
    print("hello world")
if 5 == 5: print("goodbye world")

Archivo .pre-commit-config.yaml:

repos:
– repo: https://github.com/pre-commit/pre-commit-hooks.git
sha: v4.0.1
hooks:
– id: trailing-whitespace
– id: end-of-file-fixer


<ul> <li>repo: https://github.com/google/yapf rev: v0.31.0 hooks: <ul> <li>id: yapf name: "yapf" ```</li> </ul></li> </ul> En el commit, mi archivo cambiará y pre-commit me ha dicho que yapf ha cambiado mi archivo al siguiente: </code></pre> def hello_world(): print("hello world") <pre><code><br /><pre><code>if 5 == 5: print(&quot;goodbye world&quot;) </code></pre> </code></pre> Si vuelvo al mismo archivo de Python y actualizo mi archivo .pre-commit-config.yaml a esto: <pre><code>repos: - repo: https://github.com/pre-commit/pre-commit-hooks.git sha: v4.0.1 hooks: - id: trailing-whitespace - id: end-of-file-fixer </code></pre> <ul> <li>repo: https://github.com/google/yapf rev: v0.31.0 hooks: <ul> <li>id: yapf name: "yapf" args: [--style "google" ] ``` Ejecutando un commit proporcionará Pass en lugar de realizar cambios, incluso los anteriores. Edit 1: El archivo .pre-commit.config.yaml se actualizó a:
repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks.git
    sha: v4.0.1
    hooks:
      - id: trailing-whitespace
      - id: end-of-file-fixer
  - repo: https://github.com/google/yapf
    rev: v0.31.0
    hooks:
      - id: yapf
        name: "yapf"
        args: [--style, google]

Ejecutar pre-commit run solo muestra Passed en lugar de reformatear. También he intentado poner pep8 y otras palabras arbitrarias como reemplazo de google. Todas ellas resultan en Passed. ¿Tal vez hay algo en mi lado donde el argumento de estilo está siendo ignorado y causando que yapf falle?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema podría residir en la forma en que se proporcionan los argumentos a yapf en el archivo .pre-commit-config.yaml.

    En el primer ejemplo, cuando se ejecuta yapf utilizando la línea de comando y los argumentos “-i –verbose –style ‘google'”, se formatea el archivo según lo esperado.

    Sin embargo, cuando se proporcionan los mismos argumentos a yapf en el archivo .pre-commit-config.yaml, yapf devuelve ‘Pasado’ sin cambiar el formato del archivo.

    Podría ser útil intentar actualizar los argumentos para yapf en el archivo .pre-commit-config.yaml de la siguiente manera:

    - args: ["--style", "google"]
    

    De esta manera, el argumento de estilo se proporciona por separado de los demás argumentos, lo que podría evitar que sea ignorado.

    También podría valer la pena verificar si hay algún otro gancho previo a la confirmación que pueda estar interfiriendo con yapf, o si hay alguna configuración que pueda estar evitando que se ejecute correctamente.

Comments are closed.