# ── Python ────────────────────────────────────────────────────────────────────
__pycache__/
*.py[cod]
*.pyo
*.pyd
*.so
*.egg
*.egg-info/
dist/
build/
wheels/
.eggs/
MANIFEST

# ── Virtual environments ──────────────────────────────────────────────────────
.venv/
venv/
env/
ENV/

# ── uv ────────────────────────────────────────────────────────────────────────
.uv/
uv.lock

# ── Secrets — NEVER commit these ─────────────────────────────────────────────
.env
.env.*
!.env.example
*.pem
*.key
*.p12
*.pfx
service-account*.json
*credentials*.json
*secret*
*token*

# ── IDE ───────────────────────────────────────────────────────────────────────
.idea/
*.swp
*.swo
*~

# ── OS ────────────────────────────────────────────────────────────────────────
.DS_Store
Thumbs.db

# ── Testing & coverage ────────────────────────────────────────────────────────
.pytest_cache/
.coverage
coverage.xml
htmlcov/
.tox/
junit.xml

# ── Type checking ─────────────────────────────────────────────────────────────
.mypy_cache/
.pyright/
.ruff_cache/

# ── Docker ────────────────────────────────────────────────────────────────────
deploy/docker-compose.override.yml

# ── VCR cassettes with real responses (regenerate from mocks) ─────────────────
tests/fixtures/cassettes/*.yaml

# ── Node.js ───────────────────────────────────────────────────────────────────
docs/node_modules/
docs/build/
docs/.docusaurus/

# ── Logs & tmp ────────────────────────────────────────────────────────────────
*.log
tmp/
.tmp/
