# .dockerignore
#
# Primary purpose: keep the .git directory out of the build context and
# the published image. .git carries the full commit history (author
# emails, and anything ever committed then removed). The Dockerfile
# copies selectively today (COPY src/, COPY pyproject.toml, ...), so .git
# is not shipped currently -- this file makes that guarantee robust: a
# future `COPY . .`, or a local build from a stale clone, would otherwise
# embed the entire history into the image.
#
# Only files the Dockerfile explicitly COPYs are needed in the context;
# everything below is either never copied or is regenerated in-image.

# ── Version control ──────────────────────────────────────────────
.git
.gitignore
.gitattributes
.github

# ── Python bytecode / caches / virtualenvs ───────────────────────
**/__pycache__/
**/*.py[cod]
**/*$py.class
.venv/
venv/
**/.pytest_cache/
**/.ruff_cache/
**/.mypy_cache/
.coverage
htmlcov/

# ── Node (installed fresh in the image; the local copy is ~300 MB) ─
**/node_modules/

# ── Secrets, local databases, logs — never belong in an image ────
**/.env
**/.env.local
**/.env.*.local
**/*.log
**/*.db
**/*.sqlite
**/*.sqlite3
# ...but the checked-in defaults template IS part of the source the
# build copies via `COPY src/` -- keep it.
!**/.env.template

# ── Editor / OS cruft ────────────────────────────────────────────
.idea/
.vscode/
.DS_Store
