Conversation
…on for Python 3.14
There was a problem hiding this comment.
Pull request overview
This PR updates the project’s supported Python/test environments to align with the Scientific Python support window and improves CI coverage for both minimal and “latest deps” installs, while making dataframe-related dependencies optional (so dask-image can be installed without pandas/dask[dataframe] unless find_objects is used).
Changes:
- Drop Python 3.9 support and expand CI testing to Python 3.10–3.14 across platforms.
- Make dataframe dependencies optional via a
dataframeextra and gatefind_objectsbehind an explicit import check. - Add CI jobs for a minimal install (no dataframe extras) and for “latest unpinned deps” with all extras.
Reviewed changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
tests/test_dask_image/test_ndmeasure/test_find_objects.py |
Skip find_objects tests when optional dataframe deps aren’t installed. |
tests/test_dask_image/test_ndfilters/test__generic.py |
Adjust generic filter test functions to return scalars (compatibility with upstream behavior). |
pyproject.toml |
Drop Python 3.9, make dataframe deps optional, add flake8 config. |
dask_image/ndmeasure/_utils/_find_objects.py |
Move pandas/dask.dataframe imports into functions to support optional deps. |
dask_image/ndmeasure/__init__.py |
Add explicit optional-dependency check + improved error message for find_objects. |
continuous_integration/environment-3.9.yml |
Remove the Python 3.9 pinned test environment. |
continuous_integration/environment-3.13.yml |
Add pinned test environment for Python 3.13. |
continuous_integration/environment-3.14.yml |
Add pinned test environment for Python 3.14. |
.github/workflows/test_and_deploy.yml |
Update test matrix (3.10–3.14), install dataframe extras in CI, add test-minimal and test-latest-all-extras jobs. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| test-minimal: | ||
| # Verify dask-image works without the optional `dataframe` extras | ||
| # (i.e. without pandas and dask[dataframe]). | ||
| runs-on: ${{ matrix.os }} | ||
| strategy: |
There was a problem hiding this comment.
deploy (and potentially coveralls) still only depends on test. With the new test-minimal and test-latest-all-extras jobs, a tagged release could publish even if those new test jobs fail, since they are not included in deploy.needs. Update the workflow so deploy.needs (and any other gating jobs) includes the new test jobs.
This PR implements #431.
The PR
test-latest-all-extrastest-minimaladded here to run on all platformsThis PR branch is based on #429 and should only be merged after #429 is merged.