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

# uv
.uv/
uv.lock.lock

# Testing / coverage
.pytest_cache/
.coverage
.coverage.*
coverage.xml
htmlcov/

# mypy / ruff
.mypy_cache/
.ruff_cache/

# Env
.env
.env.local

# Editors / OS
.DS_Store
.vscode/
.idea/

# Generated artifacts (E2E-REPORT.md is intentionally committed as
# the sprint deliverable; CI overwrites it on each nightly run).
# `dist/` is already covered under "Python" above.
requirements.txt

# Knative / Docker buildpack scratch
.func/

# Local-only Claude state (skills under .claude/skills/ are committed)
.claude/homunculus/
.claude/settings.local.json

# Conventional local-only files. The `*.local.*` suffix is the agreed
# marker for ephemeral state that should never ship in sdists / wheels
# or get committed (e.g. .claude/ralph-loop.local.md).
*.local.*
