A Python tool to enforce dependencies, using modular architecture π Open source π Installable via pip π§ Able to be adopted incrementally - β‘ Implemented with no runtime impact βΎοΈ Interoperable with your existing systems π¦ Written in rust
Some projects would like to ensure that their project's dependencies remain unidirectional, or in other words, that there are no cycles in their dependency graph.
A simple way to begin supporting this is to add a setting like forbid_circular_dependencies which can be set in tach.yml (ProjectConfig within the Tach codebase). When this setting is true, tach check should fail with a specific error message when a circular dependency is detected.
This should likely be done as a "pre-flight check" which would validate the modules list, and could be delegated to the ModuleTree internally. It does not need to apply any new logic to actual detected imports.
Some projects would like to ensure that their project's dependencies remain unidirectional, or in other words, that there are no cycles in their dependency graph.
A simple way to begin supporting this is to add a setting like
forbid_circular_dependencies
which can be set intach.yml
(ProjectConfig
within the Tach codebase). When this setting is true,tach check
should fail with a specific error message when a circular dependency is detected.This should likely be done as a "pre-flight check" which would validate the
modules
list, and could be delegated to theModuleTree
internally. It does not need to apply any new logic to actual detected imports.