Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 15 additions & 15 deletions environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,35 +7,35 @@ 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 -> pytensor 3.x -> numba<=0.65.1 -> numpy<2.5
- numpy>=2.4.6,<2.5 # pymc -> pytensor 3.x -> numba -> numpy<2.5; numba 0.66.0 still pins <2.5, so lifting this needs a numba release that supports 2.5
- scipy>=1.18.0
- pandas>=3.0.3
- pandas>=3.0.5
- 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 # 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
- numba>=0.58,<=0.65.1 # every pytensor 3.x caps numba here (verified 3.1.3, 3.2.1, 3.2.2, 3.2.3); this is what pymc commits us to
- matplotlib>=3.11.1
- scikit-learn>=1.9.0
- statsmodels>=0.14.6
- 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
- pymc>=6.2.0 # pulls pytensor + a C toolchain from conda-forge; each pymc 6.x admits one pytensor 3.x minor (6.1 -> 3.1, 6.2 -> >=3.2.2,<3.3), which caps numba <=0.65.1 -> numpy <2.5. Floor is the minimum supported, not what solves: 6.2.0/pytensor 3.2.3 is current
- nutpie>=0.16.11
- numpyro>=0.21.0
- jax>=0.10.2 # CPU build; GPU acceleration via environment-gpu.yml
- arviz>=1.2.0
- arviz-base>=1.2.0
- arviz-stats>=1.2.0
- arviz-plots>=1.2.0
- preliz>=0.27.0
- h5py>=3.12.0
- h5netcdf>=1.3.0
- preliz>=0.27.1
- h5py>=3.16.0
- h5netcdf>=1.8.1
- graphviz>=14.1.2
- python-graphviz>=0.20
- python-graphviz>=0.21
# ── research add-ons (compiled / columnar data / system binaries) ─────────
- lightgbm>=4.6.0
- lightgbm>=4.7.0
- xgboost>=3.3.0
- shap>=0.52.0
- polars>=1.42.1
- duckdb>=1.5.4
- polars>=1.43.1
- duckdb>=1.5.5
- pyreadstat>=1.3.5
- xarray>=2026.4.0
- xarray>=2026.7.0
- zarr
- networkx
- pandoc
Expand All @@ -58,5 +58,5 @@ dependencies:
- hatch
- build
- pytest>=9.1.1
- ruff>=0.15.20
- setuptools>=82.0.1
- ruff>=0.16.1
- setuptools>=83.0.0
14 changes: 7 additions & 7 deletions src/python/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[build-system]
requires = ["hatchling>=1.30.1"]
requires = ["hatchling>=1.31.0"]
build-backend = "hatchling.build"

[project]
Expand All @@ -14,13 +14,13 @@ dependencies = [
"arviz>=1.2.0",
"azure-identity",
"azure-storage-blob",
"matplotlib>=3.11.0",
"numpy>=2.4.6,<2.5", # numba 0.65.1 requires numpy <2.5; lift cap when numba supports 2.5
"pandas>=3.0.3",
"preliz>=0.27.0",
"matplotlib>=3.11.1",
"numpy>=2.4.6,<2.5", # numba requires numpy <2.5 (still true of 0.66.0); lift cap when numba supports 2.5
"pandas>=3.0.5",
"preliz>=0.27.1",
"psutil>=7.2.2",
"pyarrow>=24.0.0", # pandas 3.x's default `str` dtype is Arrow-backed; matches the conda core floor
"pyyaml>=6.0", # dse_research_utils.environment.check (dse-check-env console script)
"pyyaml>=6.0.3", # dse_research_utils.environment.check (dse-check-env console script)
"rich>=15.0.0",
"scikit-learn>=1.9.0",
"scipy>=1.18.0",
Expand All @@ -33,7 +33,7 @@ dependencies = [
# and raise a clear error when the extra is absent.
viz = ["seaborn>=0.13"] # dse_research_utils.plot.grids (histogram grids)
graphs = ["graphviz", "networkx"] # dse_research_utils.plot.graphs (needs system Graphviz)
notebook = ["jupyter>=1.1.0", "jupytext>=1.19.4"] # notebook/Jupyter stack (ipython drives plot.io.display_image)
notebook = ["jupyter>=1.1.1", "jupytext>=1.19.5"] # notebook/Jupyter stack (ipython drives plot.io.display_image)
dependence = ["dcor"] # dse_research_utils.ml.feature_dependence.distance_corr_matrix
# Shared pure-Python tail for consuming projects (the pip layer of the hybrid env
# model); the compiled scientific core lives in conda-forge (data/environment-core.yml).
Expand Down
2 changes: 1 addition & 1 deletion src/python/src/dse_research_utils/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright (c) 2026 Down Syndrome Education International and contributors
# SPDX-License-Identifier: AGPL-3.0-or-later

__version__ = "0.8.0"
__version__ = "0.9.0"
30 changes: 21 additions & 9 deletions src/python/src/dse_research_utils/data/environment-core.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,14 @@ channels:
dependencies:
- python=3.14.6
# --- core numerics (compiled) ---
- numpy>=2.4.6,<2.5 # pymc -> pytensor 3.x -> numba<=0.65.1 -> numpy<2.5
# numpy 2.5 is released but unreachable: pymc -> pytensor 3.x -> numba, and
# every numba that pytensor accepts pins numpy <2.5. Note the cap does not
# move when the numba cap below does — numba 0.66.0 still pins numpy <2.5 —
# so lifting this needs a numba release that supports 2.5, not merely a
# pytensor release that accepts a newer numba.
- numpy>=2.4.6,<2.5
- scipy>=1.18.0
- pandas>=3.0.3
- pandas>=3.0.5
# pandas 3.x's default `str` dtype is Arrow-backed, so PyArrow underpins every
# string column. Declared explicitly because pandas only *constrains* pyarrow
# (>=13.0.0) rather than depending on it — without this line its presence rests
Expand All @@ -36,23 +41,30 @@ 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 # 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
# Cap holds even though numba 0.66.0 is released: every pytensor 3.x caps
# numba at 0.65.1 (verified 3.1.3, 3.2.1, 3.2.2, 3.2.3), and that is what pymc
# commits us to.
- numba>=0.58,<=0.65.1
- matplotlib>=3.11.1
- scikit-learn>=1.9.0
- statsmodels>=0.14.6
# --- Bayesian modelling stack ---
- 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
# pymc pulls pytensor + a C toolchain from conda-forge. Each pymc 6.x admits
# one pytensor 3.x minor (6.1 -> 3.1, 6.2 -> >=3.2.2,<3.3), which caps numba
# <=0.65.1 -> numpy <2.5. Floor is the minimum supported, not what solves:
# 6.2.0/pytensor 3.2.3 is current.
- pymc>=6.2.0
- nutpie>=0.16.11
- numpyro>=0.21.0
- jax>=0.10.2 # CPU build; GPU acceleration via environment-gpu.yml
- arviz>=1.2.0
- arviz-base>=1.2.0
- arviz-stats>=1.2.0
- arviz-plots>=1.2.0
- preliz>=0.27.0
- preliz>=0.27.1
# --- serialization / storage (system libraries) ---
- h5py>=3.12.0
- h5netcdf>=1.3.0
- h5py>=3.16.0
- h5netcdf>=1.8.1
# --- graph rendering (system Graphviz) ---
- graphviz>=14.1.2
- python-graphviz>=0.20
- python-graphviz>=0.21