Tach – a Python tool to enforce modular design, inspired by nx
Tach – a Python tool to enforce modular design, inspired by nx
tach is a lightweight Python tool that enforces boundaries and dependencies in your Python project. Inspired by nx, tach helps you maintain a decoupled and modular Python codebase. By default, Python allows you to import and use anything, anywhere. Over time, this results in modules that were intended to be separate getting tightly coupled together, and domain boundaries breaking down. We experienced this first-hand at a unicorn startup, where the eng team paused development for over a year in an attempt to split up packages into independent services. This attempt ultimately failed. This problem occurs because: - It's much easier to add to an existing package rather than create a new one - Junior devs have a limited understanding of the existing architecture - External pressure leading to shortcuts and overlooking best practices Efforts we've seen to fix this problem always came up short. A patchwork of solutions would attempt to solve this from different angles, such as developer education, CODEOWNERs, standard guides, refactors, and more. However, none of these addressed the root cause. With tach, you can: 1. Declare your packages (`package.yml`) 2. Define dependencies between packages (`tach.yml`) 3. Enforce those dependencies (`tach check`) You can also enforce a strict interface for each package. This means that only imports that are directly listed in `__init__.py` can be imported by other packages. tach is: - fully open source - able to be adopted incrementally (`tach init` and `tach add`) - implemented with no runtime footprint - interoperable with your existing tooling We hope you give it a try! We'd love any feedback. https://github.com/Never-Over/tach
Share cardActual performance
Launch Intel predictions
Analyze your own launch →Incorrect prediction on native model
Similar products
Modguard – a lightweight Python tool for enforcing modular design
Letlang specification inspired by Python PEPs (WIP)
Modguard – Enforce modular Python automatically
Consecution: A Python Pipeline Tool Inspired by Apache Storm Topologies
PyBench 2.0 – Python benchmark tool inspired by Geekbench
Pcons: new software build tool in Python, inspired by SCons and CMake
I made a boxen library for Python (inspired by sindresorhus)
Iceberg – Graphic Design and Diagramming in Python
FPGA design acceleration – idiomatic Python to synthesizable Verilog
Cassandradump – Exporting tool for Cassandra inspired from mysqldump