Repolode
tach-org

tach-org/tach

Una herramienta de Python escrita en Rust que visualiza y hace cumplir las dependencias entre módulos y sus interfaces públicas en una base de código.

Estrellas
2,861
Forks
98
Issues abiertos
56
Último commit
hace 8 días

¿Qué es?

Tach ayuda a los proyectos de Python a mantener intactos los límites entre módulos. Defines de qué módulos puede depender cada uno y la herramienta compara las importaciones con esas declaraciones, señalando las que cruzan límites que no deberían. También puede limitar las llamadas entre módulos a la interfaz pública declarada por cada módulo y detectar ciclos en el grafo de dependencias.

Está diseñada para arquitecturas de monolito modular y puede adoptarse de forma gradual, por lo que los equipos pueden marcar solo los paquetes que quieren supervisar. La configuración es interactiva mediante `tach init`, y `tach check` devuelve un código distinto de cero si detecta incumplimientos, lo que facilita ejecutarlo en CI o como hook de pre-commit.

Tach también puede mostrar el grafo de dependencias, ya sea como vista web con `tach show --web` o como archivo GraphViz DOT local. Además, `tach report` enumera las dependencias y los usos de una ruta determinada.

Funciones clave

  • 01Compara las importaciones con las dependencias declaradas entre módulos
  • 02Limita las llamadas entre módulos a las interfaces públicas
  • 03Detecta ciclos en el grafo de dependencias
  • 04Permite una adopción gradual al marcar solo los módulos seleccionados
  • 05Visualiza las dependencias como un grafo web o en formato GraphViz DOT
  • 06Se integra con CI y hooks de pre-commit mediante un código de salida distinto de cero si detecta incumplimientos

Casos de uso

  • Hacer cumplir los límites entre capas o módulos en un monolito grande de Python
  • Evitar importaciones no deseadas entre paquetes de un monorepo de Python
  • Introducir gradualmente reglas de arquitectura en una base de código existente
  • Revisar la estructura de dependencias de un proyecto mediante un grafo generado

Inicio rápido

  1. 1

    Instala Tach desde PyPI

    pip install tach
  2. 2

    Ejecuta la configuración interactiva para definir los límites entre módulos

    tach init
  3. 3

    Aplica los límites configurados desde la raíz del proyecto

    tach check

Antes de usarlo

  • Solo admite bases de código Python.
  • Aplica los límites de forma estática y requiere declarar manualmente las dependencias entre módulos en tach.toml.

En colecciones

Temas

Preguntas frecuentes

¿Qué es tach?
Una herramienta de Python escrita en Rust que visualiza y hace cumplir las dependencias entre módulos y sus interfaces públicas en una base de código. Tach ayuda a los proyectos de Python a mantener intactos los límites entre módulos. Defines de qué módulos puede depender cada uno y la herramienta compara las importaciones con esas declaraciones, señalando las que cruzan límites que no deberían. También puede limitar las llamadas entre módulos a la interfaz pública declarada por cada módulo y detectar ciclos en el grafo de dependencias.
¿tach es gratuito? ¿Qué licencia tiene?
tach es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿tach sigue mantenido?
Mantenimiento activo. El último commit de tach fue el 29 oct 2026.
¿Para qué puedo usar tach?
Hacer cumplir los límites entre capas o módulos en un monolito grande de Python Evitar importaciones no deseadas entre paquetes de un monorepo de Python Introducir gradualmente reglas de arquitectura en una base de código existente Revisar la estructura de dependencias de un proyecto mediante un grafo generado
¿Cómo se instala tach?
Instala Tach desde PyPI: pip install tach Ejecuta la configuración interactiva para definir los límites entre módulos: tach init Aplica los límites configurados desde la raíz del proyecto: tach check
¿Dónde consigo tach?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/tach-org/tach

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados