Upgrading dask 2025 to 2026
Breaking2025.12.0 → 2026.8.0Breaking3Security2Platform1Deprecated1New3Changed14Fixed23Other112
BreakingUpgrade verdict
3 breaking changes and a platform requirement change and 2 security fixes.
In plain terms
- Removes numexpr support.
- Removes the deprecated dask._compatibility.entry_points.
- Changes the `zarr_read_kwargs` argument to a `mode` argument.
- Dask now has early support for the free-threaded build of Python 3.14.
Must act Top 5 of 7 that need code or config changes
What you must change
Breaking3
Removes numexpr support.
numexprRemoves the deprecated dask._compatibility.entry_points.
dask._compatibility.entry_pointsChanges the
zarr_read_kwargs argument to a mode argument.zarr_read_kwargsmodeSecurity2
Reverts the change that enabled Jinja2 autoescape to prevent XSS in HTML reprs.
Jinja2autoescapeEnables Jinja2 autoescape to prevent XSS in HTML reprs.
Jinja2autoescapePlatform1
Adds preliminary Python 3.14t support.
Deprecations to plan for
Deprecated1
Notes that the inplace keyword in DataFrame.drop is deprecated in Pandas 3.1.
DataFrame.dropinplaceAPI changes
Generated by DepDelta from published Python source. Not mixed with prose notes.
- changed:
function array_expr_enabled() → function array_expr_enabled() -> builtins.bool
- changed:
function to_zarr(arr, url, component=…, storage_options=…, region=…, compute=…, return_stored=…, zarr_array_kwargs=…, zarr_read_kwargs=…, **kwargs) → function to_zarr(arr, url, component=…, storage_options=…, region=…, compute=…, return_stored=…, mode=…, **zarr_array_kwargs)
- changed:
function svd(a, coerce_signs=…) → function svd(a, coerce_signs=…, full_matrices=…)
- removed:
variable numbagg - added:
variable HAS_NUMBAGG
- changed:
function refresh(config: dict | None=…, defaults: list[Mapping]=…, **kwargs) -> None → function refresh(config: dict | None=…, defaults: list[Mapping]=…, paths: list[str]=…, env: Mapping[str, str] | None=…) -> None - changed:
function rename(deprecations: Mapping[str, str | None]=…, config: dict=…) -> None → function rename(deprecations: Mapping[str, str | None]=…, config: dict=…) -> dict[str, str | None]
- added:
function xfail(request: pytest.FixtureRequest)
- removed:
variable HAS_PYARROW
- changed:
function meta_warning(df, method=…) → function meta_warning(df: Any, method: str) -> str
- removed:
function drop_by_shallow_copy(df, columns, errors=…)
- changed:
function cpu_count() → function cpu_count() -> int
- added:
class ContextAwareThreadPoolExecutor(ThreadPoolExecutor) - added:
method ContextAwareThreadPoolExecutor.submit(fn, /, *args, **kwargs)