Skip to content

Commit b62e9db

Browse files
cailmdaleyclaude
andcommitted
chore: explain weightwatcher patches and bump pyproject minimums
The Dockerfile now carries an inline note about why we use Debian's weightwatcher package instead of the source build with sed-patched headers — short version: GCC 10 (Apr 2020) flipped its default to -fno-common, breaking WeightWatcher 1.12's (2014) use of common-symbol globals in headers. The old Dockerfile patched them inline; Debian's weightwatcher 1.12+dfsg-3 patches the same way upstream of the build. Pyproject minimums bumped to current major versions where the major itself moved (astropy 6→7, numpy 1→2, pandas 2→3) so the abstract constraint signals our actual target. Minor-version drift stays in uv.lock. ngmix line carries an explicit "do not modernize" note since it's pinned to Axel's stable_version branch until upstream absorbs the fixes (tracked in the ngmix-update fiber). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 9af1025 commit b62e9db

3 files changed

Lines changed: 61 additions & 52 deletions

File tree

Dockerfile

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,12 @@ ENV SHELL=/bin/bash \
1212
# System dependencies. Three categories:
1313
# - astromatic binaries (psfex, source-extractor, weightwatcher) ship as
1414
# Debian packages on bookworm; preferred over building from source.
15+
# WeightWatcher 1.12 (2014) source uses pre-GCC-10 "common symbol"
16+
# globals that won't link with GCC's modern -fno-common default; the
17+
# old Dockerfile patched them inline with sed. Debian's
18+
# `weightwatcher 1.12+dfsg-3` carries an equivalent patch upstream of
19+
# the build, so apt install gives us the same binary without the
20+
# in-tree patches.
1521
# - compilers and dev libs needed to build the heavier wheels (galsim,
1622
# mpi4py, python-pysap, fitsio).
1723
# - libgl1, proj, fftw at runtime for skyproj/PyQt5/galsim.

pyproject.toml

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,34 +12,37 @@ license = { "file" = "LICENSE" }
1212
requires-python = ">=3.12"
1313
# Abstract runtime constraints. Exact versions live in `uv.lock` — pyproject
1414
# is the single source of truth for *what* shapepipe needs, the lockfile for
15-
# *which versions*. Minimums reflect the versions known to work in the
16-
# published Dockerfile; bump them only when a feature actually requires it.
15+
# *which versions*. Minimums signal the major-version target; uv.lock pins
16+
# the actual installed versions. Bump minimums only when crossing a major
17+
# version line or when a feature actually requires a specific release.
1718
dependencies = [
18-
"astropy>=6.1",
19+
"astropy>=7.0", # major 6 → 7
1920
"astroquery",
2021
"canfar",
2122
"cs_util>=0.1.9",
22-
"galsim>=2.5.3",
23+
"galsim>=2.8",
2324
"h5py",
2425
"joblib>=1.4",
25-
"matplotlib>=3.8.4",
26+
"matplotlib>=3.10",
2627
"mccd>=1.2.4",
2728
"modopt>=1.6",
2829
"mpi4py>=4.0",
29-
"numba>=0.58.1",
30-
"numpy>=1.26",
31-
"pandas>=2.2",
30+
"numba>=0.59", # numpy 2 support
31+
"numpy>=2.0", # major 1 → 2
32+
"pandas>=3.0", # major 2 → 3
3233
"python-dateutil",
33-
"python-pysap>=0.2.1",
34+
"python-pysap>=0.3",
3435
"PyQt5",
3536
"pyqtgraph",
36-
"reproject>=0.14",
37+
"reproject>=0.19",
3738
"sf_tools>=2.0.4",
3839
"skaha>=1.7",
3940
"sqlitedict>=2.0",
4041
"termcolor",
4142
"tqdm>=4.63",
4243
"vos>=3.6",
44+
# ngmix is pinned to Axel's stable_version branch until upstream ngmix
45+
# absorbs the fixes — tracked separately, do not modernize this line.
4346
"ngmix @ git+https://github.com/aguinot/ngmix@stable_version",
4447
]
4548

0 commit comments

Comments
 (0)