Skip to content

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.

  • 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.
Top 5 of 7 that need code or config changes
Breaking3
Removes numexpr support.
numexpr
Removes the deprecated dask._compatibility.entry_points.
dask._compatibility.entry_points
Changes the zarr_read_kwargs argument to a mode argument.
zarr_read_kwargsmode
Security2
Reverts the change that enabled Jinja2 autoescape to prevent XSS in HTML reprs.
Jinja2autoescape
Enables Jinja2 autoescape to prevent XSS in HTML reprs.
Jinja2autoescape
Platform1
Adds preliminary Python 3.14t support.
Deprecated1
Notes that the inplace keyword in DataFrame.drop is deprecated in Pandas 3.1.
DataFrame.dropinplace

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)