NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1840 most downloaded on PyPI
A Python tool to maintain a modular package architecture.
Last release 3 days ago
01 Oct 2026
Ships unpredictably
gaps range from 1 weeks to 7 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
2 years old
108 releases · first in 2024
Add Windows ARM64 builds by @ndabas in #951
bump gitpython to address CVE-2026-78676 in #948
One column per month.
drop support for python 3.9 by @DetachHead in #927
Full Changelog: v0.34.1...v0.35.0
fix exit code 5 false positive when no tests are collected because they were all skipped by @DetachHead in #921
tach test crash caused by the pytest plugin being registered twice by @DetachHead in #923Full Changelog: v0.34.0...v0.34.1
Fix pytest deprecation warnings by @DetachHead in #913
Full Changelog: v0.33.4...v0.34.0
Add layers_explicit_depends_on to tach.toml JSON schema by @lukecivantos in #911
layers_explicit_depends_on to tach.toml JSON schema by @lukecivantos in #911Full Changelog: v0.33.3...v0.33.4
fix crash when pytest cacheprovider plugin is disabled by @tnewman-candid in #908
cacheprovider plugin is disabled by @tnewman-candid in #908Full Changelog: v0.33.2...v0.33.3
pytest plugin: fix bug that caused tests to get collected when they otherwise wouldn't be by @DetachHead in #909
Full Changelog: v0.33.1...v0.33.2
add layer explict depends_on flag by @craigmulligan in #898
Full Changelog: v0.33.0...v0.33.1
feat: improve pytest plugin UX with auto-loading and smart defaults by @andre-vauvelle in #893
Full Changelog: v0.32.3...v0.33.0
remove upper bound on rich dependency by @DetachHead in #869
Full Changelog: v0.32.1...v0.32.2
remove some more remnants of tach being abandoned that i missed by @DetachHead in https://github.com/tach-org/tach/pull/856
if_git_repo option for respect_gitignore by @DetachHead in https://github.com/tach-org/tach/pull/864Full Changelog: https://github.com/tach-org/tach/compare/v0.32.0...v0.32.1
drop support for python 3.7 which has been EOL for 2 years
rich and pydothello! i'm @DetachHead and i'll be taking over as the maintainer of tach under the new @tach-org organization.
some context: a few months ago, the original creators of tach (@gauge-sh) decided to stop maintaining it and have since handed the project over to myself. see https://github.com/tach-org/tach/issues/791#issuecomment-3509472391 for more details
i'm super grateful to gauge for creating tach, and for their efforts to support its continued development.
[!NOTE] i don't yet have access to publish the VSCode extension to the visual studio marketplace, so new releases will be published as
detachhead.dtachinstead of the usualGauge.tachfor the time being.
Full Changelog: https://github.com/tach-org/tach/compare/v0.29.0...v0.32.0
Deprecated Dependencies should always be warnings by @emdoyle in https://github.com/gauge-sh/tach/pull/741
Full Changelog: https://github.com/gauge-sh/tach/compare/v0.28.5...v0.29.0
Bump once_cell from 1.20.2 to 1.21.3 by @dependabot in https://github.com/gauge-sh/tach/pull/719
Full Changelog: https://github.com/gauge-sh/tach/compare/v0.28.4...v0.28.5
Fix usage file path upload by @emdoyle in https://github.com/gauge-sh/tach/pull/704
tach map by @emdoyle in https://github.com/gauge-sh/tach/pull/714Full Changelog: https://github.com/gauge-sh/tach/compare/v0.28.3...v0.28.4
Mark deprecated dependencies in git show (offline) by @skloibhofer in https://github.com/gauge-sh/tach/pull/700
tach map command by @emdoyle in https://github.com/gauge-sh/tach/pull/698Full Changelog: https://github.com/gauge-sh/tach/compare/v0.28.2...v0.28.3
Fix ignore directives not emitting diagnostics in some cases by @emdoyle in https://github.com/gauge-sh/tach/pull/686
tach upload by @emdoyle in https://github.com/gauge-sh/tach/pull/694'local_imports' by @emdoyle in https://github.com/gauge-sh/tach/pull/695Full Changelog: https://github.com/gauge-sh/tach/compare/v0.28.1...v0.28.2
Make missing config messages friendlier by @emdoyle in https://github.com/gauge-sh/tach/pull/684
.gitignore by @max-muoto in https://github.com/gauge-sh/tach/pull/620Full Changelog: https://github.com/gauge-sh/tach/compare/v0.28.0...v0.28.1
Remove formatting from non-interactive output by @emdoyle in https://github.com/gauge-sh/tach/pull/681
depends_on_external, cannot_depend_on_external to control external dependencies by @emdoyle in https://github.com/gauge-sh/tach/pull/683Full Changelog: https://github.com/gauge-sh/tach/compare/v0.27.3...v0.28.0
Bump console from 0.15.10 to 0.15.11 by @dependabot in https://github.com/gauge-sh/tach/pull/672
Full Changelog: https://github.com/gauge-sh/tach/compare/v0.27.2...v0.27.3
Fix visibility in tach.domain.toml by @emdoyle in https://github.com/gauge-sh/tach/pull/653
tach.domain.toml by @emdoyle in https://github.com/gauge-sh/tach/pull/653cannot_depend_on field to modules by @emdoyle in https://github.com/gauge-sh/tach/pull/654Full Changelog: https://github.com/gauge-sh/tach/compare/v0.27.1...v0.27.2
Add layers to report upload / show by @caelean in https://github.com/gauge-sh/tach/pull/648
source_roots by @emdoyle in https://github.com/gauge-sh/tach/pull/649Full Changelog: https://github.com/gauge-sh/tach/compare/v0.27.0...v0.27.1
Support config from pyproject.toml by @emdoyle in https://github.com/gauge-sh/tach/pull/638
pyproject.toml by @emdoyle in https://github.com/gauge-sh/tach/pull/638Full Changelog: https://github.com/gauge-sh/tach/compare/v0.26.1...v0.27.0
Stop sync from pruning globbed modules by @emdoyle in https://github.com/gauge-sh/tach/pull/635
sync from pruning globbed modules by @emdoyle in https://github.com/gauge-sh/tach/pull/635Full Changelog: https://github.com/gauge-sh/tach/compare/v0.26.0...v0.26.1
Support glob paths for modules by @emdoyle in https://github.com/gauge-sh/tach/pull/629
Full Changelog: https://github.com/gauge-sh/tach/compare/v0.25.6...v0.26.0
Migrate check external interface fully to Rust by @max-muoto in https://github.com/gauge-sh/tach/pull/616
Full Changelog: https://github.com/gauge-sh/tach/compare/v0.25.5...v0.25.6
Fix tach init detecting Tach's own config files when present in venv beneath project root by @emdoyle in https://github.com/gauge-sh/tach/pull/617
tach init detecting Tach's own config files when present in venv beneath project root by @emdoyle in https://github.com/gauge-sh/tach/pull/617Full Changelog: https://github.com/gauge-sh/tach/compare/v0.25.4...v0.25.5
Fix tach show when Python files exist outside of source roots by @emdoyle in https://github.com/gauge-sh/tach/pull/615
tach show when Python files exist outside of source roots by @emdoyle in https://github.com/gauge-sh/tach/pull/615Full Changelog: https://github.com/gauge-sh/tach/compare/v0.25.3...v0.25.4
Fix tach-ignore on multi-line imports by @emdoyle in https://github.com/gauge-sh/tach/pull/613
Full Changelog: https://github.com/gauge-sh/tach/compare/v0.25.2...v0.25.3
feat: Support custom toml path by @max-muoto in https://github.com/gauge-sh/tach/pull/581
toml path by @max-muoto in https://github.com/gauge-sh/tach/pull/581Full Changelog: https://github.com/gauge-sh/tach/compare/v0.25.1...v0.25.2
Create 'tach init' for smoother initial setup by @emdoyle in https://github.com/gauge-sh/tach/pull/603
Full Changelog: https://github.com/gauge-sh/tach/compare/v0.25.0...v0.25.1
Generalize checks by @emdoyle in https://github.com/gauge-sh/tach/pull/586
Full Changelog: https://github.com/gauge-sh/tach/compare/v0.24.1...v0.25.0
Fix relative imports missing from usages during modularity report generation by @emdoyle in https://github.com/gauge-sh/tach/pull/583
usages during modularity report generation by @emdoyle in https://github.com/gauge-sh/tach/pull/583import_mod_path for check_layers by @crockeo in https://github.com/gauge-sh/tach/pull/587Full Changelog: https://github.com/gauge-sh/tach/compare/v0.24.0...v0.24.1
Fix multi-path modules adding duplicate dependencies in tach sync by @emdoyle in https://github.com/gauge-sh/tach/pull/569
tach sync by @emdoyle in https://github.com/gauge-sh/tach/pull/569rust-toolchain.toml by @max-muoto in https://github.com/gauge-sh/tach/pull/578Full Changelog: https://github.com/gauge-sh/tach/compare/v0.23.0...v0.24.0
Split tach-ignore handling between check and check-external by @emdoyle in https://github.com/gauge-sh/tach/pull/563
check and check-external by @emdoyle in https://github.com/gauge-sh/tach/pull/563root_module = "ignore" by @emdoyle in https://github.com/gauge-sh/tach/pull/566tach sync with <root> dependencies by @emdoyle in https://github.com/gauge-sh/tach/pull/567Full Changelog: https://github.com/gauge-sh/tach/compare/v0.22.0...v0.23.0
Support tach.domain.toml distributed config files by @emdoyle in https://github.com/gauge-sh/tach/pull/561
tach.domain.toml distributed config files by @emdoyle in https://github.com/gauge-sh/tach/pull/561tach report with Python files outside source roots; parallelize by @emdoyle in https://github.com/gauge-sh/tach/pull/562Full Changelog: https://github.com/gauge-sh/tach/compare/v0.21.0...v0.22.0
Deprecate use_regex_matching by @emdoyle in https://github.com/gauge-sh/tach/pull/552
unused_ignore_directives rule when ignore directive does not apply to any import by @emdoyle in https://github.com/gauge-sh/tach/pull/549unused_ignore_directives on redundant tach-ignore by @emdoyle in https://github.com/gauge-sh/tach/pull/550depends_on optional by @emdoyle in https://github.com/gauge-sh/tach/pull/546use_regex_matching by @emdoyle in https://github.com/gauge-sh/tach/pull/552Full Changelog: https://github.com/gauge-sh/tach/compare/v0.20.0...v0.21.0
Validation errors for tach show by @caelean in https://github.com/gauge-sh/tach/pull/531
tach check by @emdoyle in https://github.com/gauge-sh/tach/pull/532Full Changelog: https://github.com/gauge-sh/tach/compare/v0.19.7...v0.20.0
Clean up core::config, rename to config by @emdoyle in https://github.com/gauge-sh/tach/pull/528
core::config, rename to config by @emdoyle in https://github.com/gauge-sh/tach/pull/528Full Changelog: https://github.com/gauge-sh/tach/compare/v0.19.6...v0.19.7
Fix early exit with Ctrl + C in tach check and tach sync by @emdoyle in https://github.com/gauge-sh/tach/pull/525
tach check and tach sync by @emdoyle in https://github.com/gauge-sh/tach/pull/525Full Changelog: https://github.com/gauge-sh/tach/compare/v0.19.5...v0.19.6
Support multiple path syntax for modules; string literal for depends_on by @emdoyle in https://github.com/gauge-sh/tach/pull/522
modules; string literal for depends_on by @emdoyle in https://github.com/gauge-sh/tach/pull/522Full Changelog: https://github.com/gauge-sh/tach/compare/v0.19.4...v0.19.5
fix up rstrip contains by @caelean in https://github.com/gauge-sh/tach/pull/517
Full Changelog: https://github.com/gauge-sh/tach/compare/v0.19.3...v0.19.4
Bump glob from 0.3.1 to 0.3.2 by @dependabot in https://github.com/gauge-sh/tach/pull/507
Full Changelog: https://github.com/gauge-sh/tach/compare/v0.19.2...v0.19.3
Bump serde_json from 1.0.133 to 1.0.134 by @dependabot in https://github.com/gauge-sh/tach/pull/493
Full Changelog: https://github.com/gauge-sh/tach/compare/v0.19.1...v0.19.2
Fix LSP diagnostics on Windows by @emdoyle in https://github.com/gauge-sh/tach/pull/500
Full Changelog: https://github.com/gauge-sh/tach/compare/v0.19.0...v0.19.1
Add git info to report upload by @caelean in https://github.com/gauge-sh/tach/pull/491
Full Changelog: https://github.com/gauge-sh/tach/compare/v0.18.0...v0.19.0
Bump serde from 1.0.215 to 1.0.216 by @dependabot in https://github.com/gauge-sh/tach/pull/480
tach server command to run stdio LSP server by @emdoyle in https://github.com/gauge-sh/tach/pull/484Full Changelog: https://github.com/gauge-sh/tach/compare/v0.17.0...v0.18.0
Move to abi3 wheels by @emdoyle in https://github.com/gauge-sh/tach/pull/474
Full Changelog: https://github.com/gauge-sh/tach/compare/v0.16.7...v0.17.0
support gha checkout by @caelean in https://github.com/gauge-sh/tach/pull/473
Full Changelog: https://github.com/gauge-sh/tach/compare/v0.16.6...v0.16.7
support github actions by @caelean in https://github.com/gauge-sh/tach/pull/461
Full Changelog: https://github.com/gauge-sh/tach/compare/v0.16.4...v0.16.5
Fix up deprecated report by @caelean in https://github.com/gauge-sh/tach/pull/459
Full Changelog: https://github.com/gauge-sh/tach/compare/v0.16.3...v0.16.4
Add rules config to require ignore directives have reasons attached by @emdoyle in https://github.com/gauge-sh/tach/pull/447
Full Changelog: https://github.com/gauge-sh/tach/compare/v0.16.2...v0.16.3
revert default upload link by @caelean in https://github.com/gauge-sh/tach/pull/446
Full Changelog: https://github.com/gauge-sh/tach/compare/v0.16.1...v0.16.2
add check result to upload by @caelean in https://github.com/gauge-sh/tach/pull/445
Full Changelog: https://github.com/gauge-sh/tach/compare/v0.16.0...v0.16.1
Unify report with report-external; incorporate module tree information by @emdoyle in https://github.com/gauge-sh/tach/pull/444
Full Changelog: https://github.com/gauge-sh/tach/compare/v0.15.5...v0.16.0
Allow same-line tach-ignore comments, support optional paren-enclosed 'reason' by @emdoyle in https://github.com/gauge-sh/tach/pull/443
Full Changelog: https://github.com/gauge-sh/tach/compare/v0.15.4...v0.15.5
Bump cached from 0.53.1 to 0.54.0 by @dependabot in https://github.com/gauge-sh/tach/pull/437
Full Changelog: https://github.com/gauge-sh/tach/compare/v0.15.2...v0.15.4
Separate interface checks from dependency checks by @emdoyle in https://github.com/gauge-sh/tach/pull/432
Full Changelog: https://github.com/gauge-sh/tach/compare/v0.15.1...v0.15.2
Upstream closed-beta client code by @emdoyle in https://github.com/gauge-sh/tach/pull/429
Full Changelog: https://github.com/gauge-sh/tach/compare/v0.15.0...v0.15.1
Your coding agent can read these notes before it upgrades. Set up the MCP server →