Configurando pre-commit con Ruff para un proyecto en Python

Cuando utilizas Git, dispones de una herramienta muy poderosa llamada hooks. Te permite lanzar scripts en diferentes momentos del ciclo de vida de un repositorio. Por ejemplo, puedes ejecutar un comando después de hacer un push, el cual podría desplegar el código a un servidor, o lanzar un software que se ejecute antes de hacer un commit para asegurarte de que el código cumple con ciertas normas. Y aquí es donde entra en juego pre-commit.

pre-commit es un framework que simplifica la gestión de los scripts que se ejecutan en los hooks de Git entre proyectos. A través de plantillas, puedes definir y compartir diferentes procesos en momentos concretos. Su uso más popular, que además le da su nombre, es el uso del hook pre-commit, que se ejecuta antes de hacer un commit. Es un momento muy importante cuando se necesita incorporar nuevo código. Es un momento idóneo para lanzar una serie de tareas de validación y formateo del código, asegurando que el código que se va a enviar al repositorio cumple con unos mínimos estándares de calidad: si falta algún punto y coma, si hay errores de sintaxis, si el código no sigue las convenciones de estilo, los comentarios están bien escritos, etc.

A continuación vamos a instalar pre-commit y a configurarlo para que se ejecute en un proyecto de Python.

Instalación

Lo más recomendado sería usando uv. Si desconoces qué es, te recomiendo que previamente leas Guia rápida de herramientas modernas en Python.

uv tool install pre-commit

En caso contrario, puedes usar pip.

pip install pre-commit

O el sistema de paquetes de tu sistema operativo. Por ejemplo, en Debian/Ubuntu:

sudo apt install pre-commit

Configuración

Para configurar pre-commit en un proyecto, debes crear un archivo YAML. Este archivo define los hooks que se ejecutarán antes de cada commit.

Astral, los creadores de uv y ruff, han creado una plantilla fantástica. Puedes encontrar toda la información en su repositorio.

Crea el archivo .pre-commit-config.yaml en la raíz de tu proyecto y añade el siguiente contenido:

repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
  # Ruff version.
  rev: v0.12.8
  hooks:
    # Run the linter.
    - id: ruff
      args: [ --fix ]
    # Run the formatter.
    - id: ruff-format

En la plantilla se indica que repositorio contiene los hooks que se van a utilizar, y qué comandos se van a ejecutar. En este caso, se utiliza ruff para el análisis y formateo del código Python. La opción --fix indica que se debe intentar corregir automáticamente los problemas encontrados.

A continuación, actívalo en tu proyecto:

pre-commit install

¡Y ya está listo! Ahora, cada vez que hagas un commit, pre-commit ejecutará un formateo y validación en el código Python. Si hay algún error, el commit fallará y tendrás que corregirlo antes de poder continuar.

Este trabajo está bajo una licencia Attribution-NonCommercial-NoDerivatives 4.0 International.

¿Me invitas a un café?

Puedes usar el terminal.

ssh customer@andros.dev -p 5555

Escrito por Andros Fenollosa

agosto 12, 2025

3 min de lectura

Sigue leyendo