Skip to content

Commit ad2aa86

Browse files
committed
Pin fontbuilder image deps via uv-managed requirements.txt
Replace the unpinned pip3 install of scikit-image/scipy/matplotlib/parse with a uv-compiled lockfile. The Dockerfile installs from the lockfile, so layer-cache eviction can no longer silently pull newer matplotlib versions and shift gen_charmap.py output. The pinned versions match what the previously-cached fontbuilder image was already running, so no sample regeneration is required and the font/sample diff against master is empty. Direct deps live in requirements.in; the lockfile is produced by: uv pip compile xkcd-script/generator/requirements.in \ -o xkcd-script/generator/requirements.txt --python-version 3.12 To upgrade a dep, edit requirements.in (or pass --upgrade-package) and re-run the compile.
1 parent c677059 commit ad2aa86

3 files changed

Lines changed: 29 additions & 2 deletions

File tree

xkcd-script/generator/Dockerfile

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,10 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
99
python3-pip \
1010
&& rm -rf /var/lib/apt/lists/*
1111

12-
RUN pip3 install --break-system-packages \
13-
scikit-image scipy matplotlib parse
12+
# Direct deps are listed in requirements.in; requirements.txt is a fully
13+
# resolved lockfile produced by `uv pip compile`. Regenerate after editing
14+
# requirements.in:
15+
# uv pip compile xkcd-script/generator/requirements.in \
16+
# -o xkcd-script/generator/requirements.txt --python-version 3.12
17+
COPY requirements.txt /tmp/requirements.txt
18+
RUN pip3 install --break-system-packages -r /tmp/requirements.txt
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
scikit-image
2+
scipy
3+
matplotlib
4+
parse
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
contourpy==1.3.3
2+
cycler==0.12.1
3+
fonttools==4.62.1
4+
imageio==2.37.3
5+
kiwisolver==1.5.0
6+
lazy-loader==0.5
7+
matplotlib==3.10.9
8+
networkx==3.6.1
9+
numpy==2.4.4
10+
packaging==26.2
11+
parse==1.22.0
12+
pillow==12.2.0
13+
pyparsing==3.3.2
14+
python-dateutil==2.9.0.post0
15+
scikit-image==0.26.0
16+
scipy==1.17.1
17+
six==1.17.0
18+
tifffile==2026.5.2

0 commit comments

Comments
 (0)