ci: Test against lowest supported direct dependencies - #60
Merged
Conversation
cbueth
force-pushed
the
ci/lowest-direct
branch
from
August 11, 2026 12:40
0bad2ce to
a3e7c2e
Compare
Merging this PR will degrade performance by 22.72%
|
| Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|
| ❌ | test_detrend_method[z_score-p10] |
1.4 ms | 1.8 ms | -22.72% |
Tip
Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.
Comparing ci/lowest-direct (a0169ed) with main (fe011f7)
cbueth
force-pushed
the
ci/lowest-direct
branch
from
August 11, 2026 13:56
a3e7c2e to
3e8090f
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #60 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 29 29
Lines 859 859
Branches 149 149
=========================================
Hits 859 859 🚀 New features to boost your workflow:
|
cbueth
force-pushed
the
ci/lowest-direct
branch
from
August 11, 2026 14:22
3e8090f to
3adbb7c
Compare
Add a lowest-direct matrix entry to test.yml using a pip-based flow, since uv sync --resolution lowest-direct re-resolves all extras and fails building ancient matplotlib/pytest. Pin minimal lower bounds that verifiedly work and build on Python 3.11: numpy>=2.0.1 (2.0.0 breaks infomeasure grassberger joint-space reduction), scipy>=1.13.0, statsmodels>=0.13.3, scikit-learn>=1.5.0, numba>=0.59.0, infomeasure>=0.6.2 (0.6.1 incompatible with sparse 0.19), igraph>=0.11.5 (0.10/0.11.0-4 emit spurious eigenvector RuntimeWarning). Iterate the detrending registry in deterministic order: iterating a set to extend the names dict made its key order vary per process, breaking pytest-xdist cross-worker collection checks. Ignore Nextcloud .sync_*.db* files. Signed-off-by: Carlson Büth <commit@cbueth.de>
cbueth
force-pushed
the
ci/lowest-direct
branch
from
August 11, 2026 14:24
3adbb7c to
a0169ed
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR adds a
lowest-directrow to the test matrix so CI verifies the suite against the minimum versions we claim to support, not just latest. Can't use uv sync--resolution lowest-directdirectly. This somehow re-resolves all extras and dies building old 2008 matplotlib/pytest. The job compiles base deps withuv pip compile --resolution lowest-direct, installs those, then installs.[test]on top.I had to add lower-bound pins, all the lowest versions that resolve/build/import/pass on Python
3.11:numpy>=2.0.1(released 2024-07-21). 2.0.0 breaks infomeasure grassberger reduction (np.unique(axis=0, return_inverse=True) returns a column vector). 2.0.1 is the fix and still fits numba 0.59/0.60's ceilingscipy>=1.13.0(2024-04-02). first 1.x without a numpy<2 upper boundstatsmodels>=0.13.3(2022-11-01). oldest build that installs on 3.11 and imports cleanly under numpy 2scikit-learn>=1.5.0(2024-05-21). first version whose metadata allows numpy 2numba>=0.59.0(2024-01-31). first with numpy 2 support. lowest-direct actually resolves 0.60.0 because of the numpy floorinfomeasure>=0.6.2(2026-07-06). 0.6.1 + sparse 0.19 dies with "Cannot convert a sparse array to dense" in the discrete TE pathigraph>=0.11.5(2024-05-07). 0.10.x–0.11.4 emitRuntimeWarningin eigenvector centrality on weighted directed graphsAlso:
detrending_methods/__init__.py(set iteration made dict order differ per process, tripping pytest-xdist's cross-worker collection check).conftest.pyfixture sorted too