From 9764791ce5957b57beeb99a7b46259d3e65c1ce8 Mon Sep 17 00:00:00 2001 From: Brandon Horton Date: Wed, 12 Aug 2026 18:04:35 +0000 Subject: [PATCH] fix: pin fury<2 and fastcore<2 to unbreak dipy and fastai tests b/545164527 The scheduled build re-resolves kaggle_requirements.txt against live PyPI, so a rebuild of an unchanged commit picks up new upstream releases. Two major versions landed since the last green build and broke all four test stages: - fury 2.0.0 swapped the VTK backend for pygfx/wgpu, dropping the APIs dipy.viz needs. test_dipy fails at import. https://github.com/dipy/dipy/issues/3978 - fastcore v2 removed L.starmap, called by fastai's set_hypers. test_fastai.test_tabular fails with AttributeError. https://github.com/fastai/fastai/issues/4154 Both consumers declare unbounded requirements (fury>=0.12.0, fastcore>=1.14.6), so nothing stopped the resolver from crossing the major version boundary. Neither upstream has a released fix, so pin both with TODOs. fastcore is capped directly rather than via a direct dep: five packages pull it uncapped, and execnb>=2.2.5 alone forces v2, so pinning nbdev does not help. Even nbdev<3 still resolves fastcore 2.2.12. Verified by building the CPU image both ways. Before: fury 2.0.0 / fastcore 2.2.12, both tests fail with the CI tracebacks. After: fury 0.12.0 / fastcore 1.14.5 / nbdev 3.1.0, both tests pass and nbdev, execnb, ghapi and learntools still import. Co-Authored-By: Claude --- kaggle_requirements.txt | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/kaggle_requirements.txt b/kaggle_requirements.txt index 18b5fbdd..c7eb18e5 100644 --- a/kaggle_requirements.txt +++ b/kaggle_requirements.txt @@ -26,11 +26,22 @@ dipy docker easyocr emoji +# TODO: b/545164527 - unpin once fastai supports fastcore v2. +# fastcore v2 removed L.starmap, breaking fastai's Optimizer.set_hypers: +# https://github.com/fastai/fastai/issues/4154 +# Pinned here rather than on a direct dep because nbdev, execnb, ghapi, fastgit +# and fastspec all pull fastcore uncapped; only constraining fastcore itself +# makes the resolver backtrack all of them. +fastcore<2 fasttext featuretools fiona flax -fury +# TODO: b/545164527 - unpin once dipy ships its fury<2.0 cap. +# fury 2.0 swapped VTK for pygfx/wgpu, breaking `from dipy.viz import window`. +# dipy requires fury uncapped; fix is merged upstream but unreleased: +# https://github.com/dipy/dipy/issues/3978 +fury<2 fuzzywuzzy geojson gensim