# What the build has no business seeing.
#
# Named `.dockerignore` rather than `.containerignore`: podman build honours
# either, and this is the name the Compose v2 provider documents, so one file
# covers both ways of building.
#
# Without this the context is 90MB, of which 87MB is the running database and a
# macOS virtual environment that could never work in a Linux image. Worse than
# the size: `COPY src/` and `COPY alembic/` would sweep up the host's
# __pycache__, so the image shipped bytecode compiled on a laptop -- including
# valid bytecode for migrations that had been deleted, which no `.py` in the
# repo accounts for. Those .pyc keep their mtime and size through COPY, so they
# validate and are loaded in preference to compiling the source that is there.
#
# It also restores layer caching: a local `uv run pytest` rewrites __pycache__,
# which changed the hash of `COPY src/` and so reinstalled the project and
# re-copied the venv on the next build.

# Host-mapped state: the live PostgreSQL cluster and the apps' data and logs.
hostdata/
hostlogs/

# The container-free local run's environment and its data and log roots. The
# Containerfile copies named paths, so none of this could reach the image --
# but dev.env holds a real database password, and there is no reason to hand
# it to the build daemon to find out.
dev.env
devdata/
devlogs/

# The site's own experiments and one-off utilities. Nothing reaches the image
# either way -- the Containerfile copies named paths rather than `.` -- but a
# scratch directory is where a database dump or a big sample file lands, and
# there is no reason to send it to the build daemon. Unlike the seeded
# .gitignore, this file is managed, so the convention travels to sites already
# in the field.
scratch/

# A macOS venv, wrong architecture and wrong absolute paths for the image.
.venv/

.git/
.github/
.claude/

# The `**/` matters and is not decoration: a bare `__pycache__/` anchors to the
# context root, so it would exclude nothing under src/ or alembic/ and quietly
# leave this whole file doing nothing.
**/__pycache__
**/*.py[cod]
.pytest_cache/

dist/
**/*.egg-info

# Editor and local tooling. `**/` for the same reason as __pycache__ above, and
# this file had the bug it warns about: a root-anchored `.DS_Store` let
# `src/.DS_Store` through `COPY src/`, and it was measured sitting in a built
# image. Finder writes one into any directory somebody has opened.
**/.DS_Store
**/*.wpr
**/*.wpu

# Wing IDE's debugger stub, which the IDE drops into the source directory it is
# debugging. Untracked, so a site's .gitignore hides it -- but the build context
# is the working tree, not the index, so `COPY src/` shipped a debugger into a
# production image. Nothing imports it there; it has no business in one anyway.
**/wingdbstub.py
