# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
.venv/
venv/
env/
build/
dist/
*.egg-info/
*.egg
.eggs/
.installed.cfg
wheels/
share/python-wheels/
pip-wheel-metadata/

# uv
.uv-cache/
uv.lock.bak

# mgf-common catch-up backups
**/*.bak.[0-9]*

# Test + coverage
.pytest_cache/
.coverage
.coverage.*
htmlcov/
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.tox/

# mypy + ruff
.mypy_cache/
.ruff_cache/
.import_linter_cache/
# grimp's own default cache dir, written by a direct grimp.build_graph() call
# without cache_dir (import-linter 2.11-2.15 write .import_linter_cache/ above,
# measured by Court round sdist-r1; the 2026-06-08 writer of the copy that
# shipped in 0.1.11 is unidentified). It drops a `*` .gitignore inside, so git
# hides it while hatchling's sdist, which reads only this root file, packs it.
# Named here; the sdist's `/.*` exclude in pyproject.toml is the real guard.
.grimp_cache/
# The mandated test gate (mtest) writes its run records here; unignored, the
# next build packs them into the sdist (mgf-standard's cookiecutter .gitignore
# names it for the same reason).
.gates/

# pre-commit
.pre-commit-cache/

# Editors
.idea/
.vscode/
*.swp
*.swo
.DS_Store

# Zig (hrb-code/)
zig-cache/
zig-out/
.zig-cache/

# Project-local notes
my_stuff/
# MGF standardized ignores (AG-18) — local secrets, IDE, Claude-local
.claude/settings.local.json
.claude/state/
.claude/mgf-hooks-disabled
