# syntax=docker/dockerfile:1.7

# Pinned 2026-05-29. The index digest keeps multi-arch builds pinned while
# Docker selects the host platform manifest. Current amd64 manifest observed:
# sha256:d3984101d0e2fcf0574ea66f69e236b6706b7c81ac29117d01d8eaeb4de972b1
ARG PYTHON_BASE=python:3.11-slim-bookworm@sha256:8dca233de9f3d9bb410665f00a4da6dd06f331083137e0e98ccf227236fcc438
ARG UV_IMAGE=ghcr.io/astral-sh/uv:0.5.31-python3.11-bookworm-slim@sha256:9398ea109260fafedc26fecccfe26e5f511ad4fbc7a69235b7166c0315d526ba

FROM ${UV_IMAGE} AS uv-bin

FROM ${PYTHON_BASE} AS runtime

LABEL org.opencontainers.image.title="pythia"
LABEL org.opencontainers.image.description="Deterministic Python runtime for the Pythia data-science pipeline"
LABEL org.opencontainers.image.base.name="python:3.11-slim-bookworm"
LABEL org.opencontainers.image.base.digest="sha256:8dca233de9f3d9bb410665f00a4da6dd06f331083137e0e98ccf227236fcc438"
LABEL org.opencontainers.image.uv.digest="sha256:9398ea109260fafedc26fecccfe26e5f511ad4fbc7a69235b7166c0315d526ba"

ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1 \
    PYTHONHASHSEED=0 \
    PYTHIA_SEED=42 \
    UV_PROJECT_ENVIRONMENT=/opt/pythia/.venv \
    UV_LINK_MODE=copy \
    UV_PYTHON_DOWNLOADS=never \
    OMP_NUM_THREADS=1 \
    MKL_NUM_THREADS=1 \
    OPENBLAS_NUM_THREADS=1 \
    NUMEXPR_NUM_THREADS=1 \
    VECLIB_MAXIMUM_THREADS=1 \
    BLIS_NUM_THREADS=1

ENV PATH="/opt/pythia/.venv/bin:${PATH}"

WORKDIR /workspace

COPY --from=uv-bin /usr/local/bin/uv /usr/local/bin/uv
COPY pyproject.toml uv.lock README.md ./
COPY src ./src
COPY tests ./tests
COPY docs ./docs
COPY .dvc ./.dvc
COPY .dvcignore ./.dvcignore
COPY fixtures ./fixtures
COPY scripts ./scripts
COPY tools ./tools

RUN uv sync --frozen --extra dev \
    && scripts/dependency_freeze.sh > /opt/pythia/dependency-freeze.txt

CMD ["python", "-c", "import pythia; print(pythia.__version__)"]
