.venv/
__pycache__/
*.pyc
*.egg-info/
dist/
build/
docs/_build/
.pytest_cache/
.ruff_cache/
.DS_Store

# marimo notebook session/output caches (regenerated by `marimo edit` / `marimo export`)
__marimo__/

# Large reference proteomes for source lookup are fetched, not committed
data/proteomes/
*.fasta
*.fasta.gz

# ...but shipped package data is never ignorable, whatever a glob above says. `mhci_pseudo.fa`
# escapes the *.fasta rule only by its extension; named .fasta it would have been silently
# untracked, and every fresh clone would ship a package that cannot load its own models.
!src/mhcmatch/data/**
# ...but bytecode is not package data. Without this carve-out the negation above re-adds
# data/__pycache__/*.pyc to the index, where they produce a spurious diff on every interpreter
# version and block `git worktree remove`. hatchling already keeps them out of the wheel.
src/mhcmatch/data/__pycache__/

# Obsidian memory-sync marker (machine-local absolute paths + sync hashes)
.claude/obsidian-sync.json

# per-feature git worktrees (see CLAUDE.md) — live inside the repo dir but are never committed
.claude/worktrees/
