# Python
__pycache__/
*.py[cod]
*.egg-info/
.eggs/
build/
dist/
.venv/
venv/

# IF-Split cache: downloaded mmCIF (large). Manifests/locks in data/out/ are kept.
data/cache/*
!data/cache/.gitkeep

# Build artifacts. The split itself is tiny (train/val/test.json + per-class test
# lists + the KB-scale manifest.json) and IS committed under examples/. Only the
# BULKY, regenerable companions are ignored — they belong in a GitHub Release:
#   candidates.jsonl (~335MB), ligands.tiers.json (~24MB), and the per-entry maps.
candidates.jsonl
dataset.lock
ligands.tiers.json
ligands.classes.json
clusters.json
splits.registry.json
splits.registry.json.tmp*
# ...but keep the committed example split (these live only under examples/).
!examples/**/manifest.json
!examples/**/train.json
!examples/**/val.json
!examples/**/test.json
!examples/**/test/*.json

# Tooling
.pytest_cache/
.mypy_cache/
.ruff_cache/

# Claude Code: share settings.json (project conventions), ignore local + runtime.
.claude/*
!.claude/settings.json
.claude/settings.local.json

# uv: commit uv.lock, ignore the managed virtualenv.
# (.venv is already covered above.)
