- La nueva versión de uv ofrece de forma experimental una función de formateo de código
- El comando
uv formatusa internamente el formateador de Ruff para dar un estilo consistente al código Python - Ahora es posible ordenar y formatear código fácilmente solo con uv sin necesitar una herramienta aparte
- Los usuarios pueden ajustar en detalle el comportamiento del formateo mediante argumentos adicionales
- Como todavía es una función experimental, es posible que cambien la forma del comando y el manejo de errores
Resumen
La versión más reciente de uv (0.8.13) introduce uv format, un comando experimental que los desarrolladores de Python llevaban tiempo esperando. Con esta función, es posible organizar el estilo del código usando solo uv dentro del proyecto, sin tener que gestionar una herramienta de formateo adicional
¿Qué es uv format?
- El comando
uv formatofrece formateo de código Python a través de la interfaz de uv - Internamente, invoca el formateador de Ruff para organizar automáticamente el código de manera consistente
Nota para desarrolladores
Charlie Marsh (desarrollador de uv) explicó lo siguiente en Hacker News
Ruff y uv no se están fusionando; siguen siendo herramientas separadas.
El objetivo es simplemente mejorar la experiencia para que el usuario pueda usar el formateador sin percibirlo como una herramienta aparte.
Es similar a la relación entrecargo fmty rustfmt en el ecosistema de Rust.
Cómo usarlo
- Debes usar uv 0.8.13 o una versión superior
- Si ejecutas el comando
uv formaten la raíz del proyecto, el efecto es el mismo que ejecutar ruff format - La forma de ejecución sigue la interfaz de comandos de uv
Pasar argumentos adicionales
- Con la forma
uv format -- [argumentos adicionales]puedes configurar opciones detalladas que se pasan a Ruff - Así puedes aprovechar al mismo tiempo la comodidad de uv y la configuración fina de Ruff
Aviso sobre la etapa experimental
- Actualmente, esta función está en una etapa experimental, por lo que en el futuro podrían cambiar tanto la forma del comando como la manera en que se integra con la estructura del proyecto
- El manejo de errores y el formato de salida también seguirán mejorándose
- La función evolucionará incorporando los comentarios de los usuarios
Cierre
- Si necesitas un estilo de código simple y consistente en proyectos Python, vale la pena probar
uv format - Como se trata de una incorporación experimental, usarlo directamente y enviar comentarios puede contribuir al desarrollo futuro de uv
1 comentarios
Comentarios en Hacker News
ruffse fusionara conty;uvdebería concentrarse en la gestión de paquetes o proyectos y no meterse en la edición del estilo del código. Pienso que el único caso en queuvdebería modificar archivos de código es al actualizar dependencias (PEP 723)ruffyuvno se van a fusionar y seguirán siendo herramientas separadas; la idea es ofrecer una experiencia más simple para quienes no quieren preocuparse por el formateador. Es una configuración similar a Rust, dondecargo fmtejecutarustfmtinternamentecargo fmten Rusttyterminara integrándose enuv; como todo viene de astral.sh, quizá esa sea la visión, aunque ty todavía no parece estar listouv lintpara que ejecutetyinternamente. Idealmente, estaría bueno poder preparar un proyecto de Python (formatear, lint, probar, publicar) con un comando estándar o una serie de comandos; quizá esa sea la visión detrás de estouv run --no-projectyuv run --active, por ejemplo). Más que agregar funciones nuevas porque sí, preferiría que se enfocaran en mejorar las herramientas y la documentación existentesuv synces muy útil porque solo construye conjuntos de paquetes que pueden reproducirse de nuevo, pero paquetes complejos como torch-tensorrt o flash-attn inevitablemente dependen del entorno. La comunidad de Python a menudo tiende a personalizar el problema con un "en mi máquina funciona", pero el costo de distribuir software de forma segura, repetible y confiable nunca desaparece; al final alguien termina pagándolo después, en un contexto más restringido. Intentar satisfacer todas esas distintas necesidades de usuarios y operación es realmente complicadouvx ruff formattenga una palabra más; más bien podría volverse confuso qué formateador se ejecuta realmente, si ruff se instala automáticamente o si, como hasta ahora, la herramienta se descarga y se guarda en cachéuv formatno funcionauv <función>ayuda mucho al equipo. También estaría bueno que se pudiera integrar con otros formateadores, y si incluso soportara formateo de modelos SQL/dbt, no pediría nada más. Por ahora pienso probarlo y ver qué posibilidades abrejust formaty formatear Python/SQL/Bash/TypeScript de una sola vezuv formates básicamente un atajo parauv run --with ruff ruffuv fmty también agregaría algo comouv vetal roadmapuv formates básicamente un frontend deruff format; no se está agregando un formateador nuevoruff format, que ya usa mucha gente