From 7bfdd032602de3c10db4e906df7b4cc65db6514a Mon Sep 17 00:00:00 2001 From: Frank Buckley Date: Sat, 25 Jul 2026 14:29:26 +0100 Subject: [PATCH] docs(env): describe the pytensor -> numba -> numpy chain by invariant MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The comments on numpy, numba and pymc named pytensor 3.1.x, which is no longer what solves: pymc 6.2.0 pins pytensor-base >=3.2.2,<3.3, and every fresh solve now takes it — including this repo's own CI on main. The constraints themselves are unchanged and still correct. pytensor-base 3.2.2 caps numba at >=0.58,<=0.65.1, byte-identical to 3.1.3, and numba 0.65.1 still requires numpy <2.5. So the chain that justifies both caps survives the bump; only the prose was stale. Reworded to name the invariant rather than a version, so it stops going stale on the next pytensor minor, and to record that the pymc floor is the minimum supported rather than what installs. Specs are untouched: dse-check-env compares YAML-parsed values, which strip comments, so this needs no coordinated change in dependent repos and no release. Co-Authored-By: Claude Opus 5 --- environment.yml | 6 +++--- src/python/src/dse_research_utils/data/environment-core.yml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/environment.yml b/environment.yml index 15320ee..85bc933 100644 --- a/environment.yml +++ b/environment.yml @@ -7,15 +7,15 @@ dependencies: # These lines must match that spec exactly. Verify with: # dse-check-env environment.yml - python=3.14.6 - - numpy>=2.4.6,<2.5 # pymc>=6.1.0 -> pytensor 3.1.x -> numba<=0.65.1 -> numpy<2.5 + - numpy>=2.4.6,<2.5 # pymc -> pytensor 3.x -> numba<=0.65.1 -> numpy<2.5 - scipy>=1.18.0 - pandas>=3.0.3 - pyarrow>=24.0.0 # pandas 3.x's default `str` dtype is Arrow-backed; floor held at 24 by jaxlib's libabseil pin — see environment-core.yml - - numba>=0.58,<=0.65.1 # pytensor 3.x caps numba; this is what pymc>=6.1.0 commits us to + - numba>=0.58,<=0.65.1 # every pytensor 3.x caps numba here (verified 3.1.3, 3.2.1, 3.2.2); this is what pymc commits us to - matplotlib>=3.11.0 - scikit-learn>=1.9.0 - statsmodels>=0.14.6 - - pymc>=6.1.0 # pulls pytensor + a C toolchain from conda-forge; forces pytensor >=3.1.2 -> numba <=0.65.1 -> numpy <2.5 + - pymc>=6.1.0 # pulls pytensor + a C toolchain from conda-forge; each pymc 6.x pins one pytensor 3.x minor (6.1 -> 3.1, 6.2 -> 3.2), which caps numba <=0.65.1 -> numpy <2.5. Floor is the minimum supported, not what solves: 6.2.0/pytensor 3.2.2 is current - nutpie>=0.16.11 - numpyro>=0.21.0 - jax>=0.10.2 # CPU build; GPU acceleration via environment-gpu.yml diff --git a/src/python/src/dse_research_utils/data/environment-core.yml b/src/python/src/dse_research_utils/data/environment-core.yml index 9080319..ae64f40 100644 --- a/src/python/src/dse_research_utils/data/environment-core.yml +++ b/src/python/src/dse_research_utils/data/environment-core.yml @@ -20,7 +20,7 @@ channels: dependencies: - python=3.14.6 # --- core numerics (compiled) --- - - numpy>=2.4.6,<2.5 # pymc>=6.1.0 -> pytensor 3.1.x -> numba<=0.65.1 -> numpy<2.5 + - numpy>=2.4.6,<2.5 # pymc -> pytensor 3.x -> numba<=0.65.1 -> numpy<2.5 - scipy>=1.18.0 - pandas>=3.0.3 # pandas 3.x's default `str` dtype is Arrow-backed, so PyArrow underpins every @@ -36,12 +36,12 @@ dependencies: # 0.10.2) still pins libabseil <20260108 — the two do not co-solve. Raise this # once jaxlib is rebuilt against the newer abseil. - pyarrow>=24.0.0 - - numba>=0.58,<=0.65.1 # pytensor 3.x caps numba; this is what pymc>=6.1.0 commits us to + - numba>=0.58,<=0.65.1 # every pytensor 3.x caps numba here (verified 3.1.3, 3.2.1, 3.2.2); this is what pymc commits us to - matplotlib>=3.11.0 - scikit-learn>=1.9.0 - statsmodels>=0.14.6 # --- Bayesian modelling stack --- - - pymc>=6.1.0 # pulls pytensor + a C toolchain from conda-forge; forces pytensor >=3.1.2 -> numba <=0.65.1 -> numpy <2.5 + - pymc>=6.1.0 # pulls pytensor + a C toolchain from conda-forge; each pymc 6.x pins one pytensor 3.x minor (6.1 -> 3.1, 6.2 -> 3.2), which caps numba <=0.65.1 -> numpy <2.5. Floor is the minimum supported, not what solves: 6.2.0/pytensor 3.2.2 is current - nutpie>=0.16.11 - numpyro>=0.21.0 - jax>=0.10.2 # CPU build; GPU acceleration via environment-gpu.yml