From 1b59c440006679e18ffc0be7fef58f8c156309a6 Mon Sep 17 00:00:00 2001 From: Ben Dichter Date: Sat, 22 Aug 2026 21:49:00 -0400 Subject: [PATCH] Install ipywidgets into the image kernel environment Three tutorial groups failed verification on the 3.13 rebuild with "IProgress not found": tqdm routes to its widget progress bar inside an IPython session and needs ipywidgets, which Colab preinstalls and the image did not. A user running those notebooks in the container would have hit the same error in JupyterLab. ipywidgets now resolves jointly with the pins alongside ipykernel, matching what the CI harness installs in kernel mode. Verified locally on tutorials-cosyne-2023. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_011NuStoQykizhQCx2KBrMCN --- .github/docker/Dockerfile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/docker/Dockerfile b/.github/docker/Dockerfile index 5248bb4..bc74f62 100644 --- a/.github/docker/Dockerfile +++ b/.github/docker/Dockerfile @@ -39,12 +39,15 @@ ENV PATH="/opt/uv-bin:${PATH}" \ # ipykernel and nbformat resolve jointly with the pins in one invocation so # any conflict fails the build instead of silently changing a pinned version. +# ipywidgets is part of the kernel environment for the same reason it is on +# Colab: tqdm (and anything else that renders widgets) routes to ipywidgets +# inside Jupyter and raises "IProgress not found" without it. # gcc/libc6-dev cover pins with no wheel for the target arch (e.g. old psutil # on arm64) and are purged in the same layer to keep the image slim. COPY requirements.txt /tmp/requirements.txt RUN apt-get update \ && apt-get install -y --no-install-recommends gcc libc6-dev \ - && uv pip install --system --no-cache -r /tmp/requirements.txt ipykernel nbformat \ + && uv pip install --system --no-cache -r /tmp/requirements.txt ipykernel ipywidgets nbformat \ && python -m ipykernel install --name python3 --display-name "Python 3 (pinned)" \ && apt-get purge -y gcc libc6-dev \ && apt-get autoremove -y \