Skip to content

AttributeError: module 'dask.dataframe.core' has no attribute 'DataFrame' with dask version 2025.01.01 #1471

@FlorisCalkoen

Description

@FlorisCalkoen

ALL software version info

(this library, plus any other relevant software, e.g. bokeh, python, notebook, OS, browser, etc should be added within the dropdown below.)

Software Version Info
Python              :  3.12.8 | packaged by conda-forge | (main, Dec  5 2024, 14:19:53) [Clang 18.1.8 ]
Operating system    :  macOS-14.6.1-arm64-arm-64bit
Panel comms         :  default

holoviews           :  1.20.0

bokeh               :  3.4.2
colorcet            :  3.1.0
cudf                :  -
cupy                :  -
dask                :  2025.1.0
dask-expr           :  -
datashader          :  0.16.3
geoviews            :  1.12.0
hvplot              :  0.11.2
ibis-framework      :  -
IPython             :  8.17.2
ipywidgets-bokeh    :  -
jupyter-bokeh       :  4.0.5
jupyterlab          :  4.3.4
matplotlib          :  3.10.0
networkx            :  3.4.2
notebook            :  7.3.2
numba               :  0.60.0
numpy               :  1.26.4
pandas              :  2.2.3
panel               :  1.4.5
param               :  2.2.0
pillow              :  11.1.0
plotly              :  -
pyarrow             :  19.0.0
pyviz-comms         :  3.0.4
scikit-image        :  0.25.0
scipy               :  1.15.1
spatialpandas       :  0.4.10
streamz             :  -
tsdownsample        :  -
xarray              :  2025.1.1

Description of expected behavior and the observed behavior

When updating to the latest dask version hvplot breaks due to an unresolved attribute error.

Complete, minimal, self-contained example code that reproduces the issue

import geopandas as gpd
import hvplot.pandas
import shapely

roi = gpd.GeoDataFrame(geometry=[shapely.box(4.757, 53.108, 5.042, 53.272)], crs=4326)
roi.hvplot(geo=True)


---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Cell In[11], line 5
      3 import hvplot.pandas
      4 roi = gpd.GeoDataFrame(geometry=[shapely.box(4.757, 53.108, 5.042, 53.272)], crs=4326)
----> 5 roi.hvplot(geo=True)

File [~/mambaforge/envs/testenv/lib/python3.12/site-packages/hvplot/plotting/core.py:95](http://localhost:8888/lab/tree/notebooks/~/mambaforge/envs/testenv/lib/python3.12/site-packages/hvplot/plotting/core.py#line=94), in hvPlotBase.__call__(self, x, y, kind, **kwds)
     92         plot = self._get_converter(x, y, kind, **kwds)(kind, x, y)
     93         return pn.panel(plot, **panel_dict)
---> 95 return self._get_converter(x, y, kind, **kwds)(kind, x, y)

File [~/mambaforge/envs/testenv/lib/python3.12/site-packages/hvplot/plotting/core.py:102](http://localhost:8888/lab/tree/notebooks/~/mambaforge/envs/testenv/lib/python3.12/site-packages/hvplot/plotting/core.py#line=101), in hvPlotBase._get_converter(self, x, y, kind, **kwds)
    100 y = y or params.pop('y', None)
    101 kind = kind or params.pop('kind', None)
--> 102 return HoloViewsConverter(self._data, x, y, kind=kind, **params)

File [~/mambaforge/envs/testenv/lib/python3.12/site-packages/hvplot/converter.py:653](http://localhost:8888/lab/tree/notebooks/~/mambaforge/envs/testenv/lib/python3.12/site-packages/hvplot/converter.py#line=652), in HoloViewsConverter.__init__(self, data, x, y, kind, by, use_index, group_label, value_label, backlog, persist, use_dask, crs, fields, groupby, dynamic, grid, legend, rot, title, xlim, ylim, clim, robust, symmetric, logx, logy, loglog, hover, hover_cols, hover_formatters, hover_tooltips, subplots, label, invert, stacked, colorbar, cticks, datashade, rasterize, downsample, resample_when, row, col, debug, framewise, aggregator, projection, global_extent, geo, precompute, flip_xaxis, flip_yaxis, dynspread, x_sampling, y_sampling, pixel_ratio, project, tools, attr_labels, coastline, tiles, tiles_opts, sort_date, check_symmetric_max, transforms, stream, cnorm, features, rescale_discrete_levels, autorange, subcoordinate_y, **kwds)
    651 # Try importing geoviews if geo-features requested
    652 if self.geo or self.datatype == 'geopandas':
--> 653     import_geoviews()
    655 self.crs = self._process_crs(data, crs) if self.geo else None
    656 self.output_projection = self.crs

File [~/mambaforge/envs/testenv/lib/python3.12/site-packages/hvplot/util.py:735](http://localhost:8888/lab/tree/notebooks/~/mambaforge/envs/testenv/lib/python3.12/site-packages/hvplot/util.py#line=734), in import_geoviews()
    733 geoviews = None
    734 try:
--> 735     import geoviews
    736 except ModuleNotFoundError:
    737     raise ModuleNotFoundError(
    738         'The `geoviews` package must be installed in order to use '
    739         'geographic features. Install it with pip or conda.'
    740     ) from None

File [~/mambaforge/envs/testenv/lib/python3.12/site-packages/geoviews/__init__.py:18](http://localhost:8888/lab/tree/notebooks/~/mambaforge/envs/testenv/lib/python3.12/site-packages/geoviews/__init__.py#line=17)
     16 from ._warnings import GeoviewsDeprecationWarning, GeoviewsUserWarning  # noqa: F401
     17 from . import data                                  # noqa (API import)
---> 18 from . import plotting                              # noqa (API import)
     19 from . import feature                               # noqa (API import)
     20 from . import tile_sources                          # noqa (API import)

File [~/mambaforge/envs/testenv/lib/python3.12/site-packages/geoviews/plotting/__init__.py:19](http://localhost:8888/lab/tree/notebooks/~/mambaforge/envs/testenv/lib/python3.12/site-packages/geoviews/plotting/__init__.py#line=18)
     17 backends = Store.loaded_backends()
     18 if 'bokeh' in backends:
---> 19     _load_bokeh()
     20 if 'matplotlib' in backends:
     21     _load_mpl()

File [~/mambaforge/envs/testenv/lib/python3.12/site-packages/geoviews/plotting/__init__.py:10](http://localhost:8888/lab/tree/notebooks/~/mambaforge/envs/testenv/lib/python3.12/site-packages/geoviews/plotting/__init__.py#line=9), in _load_bokeh()
      9 def _load_bokeh():
---> 10     from . import bokeh

File [~/mambaforge/envs/testenv/lib/python3.12/site-packages/geoviews/plotting/bokeh/__init__.py:23](http://localhost:8888/lab/tree/notebooks/~/mambaforge/envs/testenv/lib/python3.12/site-packages/geoviews/plotting/bokeh/__init__.py#line=22)
     17 from holoviews.plotting.bokeh.raster import RasterPlot, RGBPlot, QuadMeshPlot
     18 from ...element import (
     19     WMTS, Points, Polygons, Path, Contours, Shape, Image, ImageStack, Feature,
     20     Text, RGB, Nodes, EdgePaths, Graph, TriMesh, QuadMesh, VectorField,
     21     Labels, HexTiles, LineContours, FilledContours, Rectangles, Segments
     22 )
---> 23 from ...operation import (
     24     project_image, project_points, project_path, project_graph,
     25     project_quadmesh, project_geom, project_vectorfield
     26 )
     27 from ...tile_sources import _ATTRIBUTIONS
     28 from ...util import poly_types, line_types

File [~/mambaforge/envs/testenv/lib/python3.12/site-packages/geoviews/operation/__init__.py:15](http://localhost:8888/lab/tree/notebooks/~/mambaforge/envs/testenv/lib/python3.12/site-packages/geoviews/operation/__init__.py#line=14)
     13 geo_ops = [contours, bivariate_kde]
     14 try:
---> 15     from holoviews.operation.datashader import shade, stack, dynspread
     16     from holoviews.operation.resample import ResampleOperation2D
     17     geo_ops += [ResampleOperation2D, shade, stack, dynspread]

File [~/mambaforge/envs/testenv/lib/python3.12/site-packages/holoviews/operation/datashader.py:5](http://localhost:8888/lab/tree/notebooks/~/mambaforge/envs/testenv/lib/python3.12/site-packages/holoviews/operation/datashader.py#line=4)
      2 from collections.abc import Callable, Iterable
      3 from functools import partial
----> 5 import datashader as ds
      6 import datashader.reductions as rd
      7 import datashader.transfer_functions as tf

File [~/mambaforge/envs/testenv/lib/python3.12/site-packages/datashader/__init__.py:14](http://localhost:8888/lab/tree/notebooks/~/mambaforge/envs/testenv/lib/python3.12/site-packages/datashader/__init__.py#line=13)
     12 from .pipeline import Pipeline                           # noqa (API import)
     13 from . import transfer_functions as tf                   # noqa (API import)
---> 14 from . import data_libraries                             # noqa (API import)
     16 # Make RaggedArray pandas extension array available for
     17 # pandas >= 0.24.0 is installed
     18 from pandas import __version__ as pandas_version

File [~/mambaforge/envs/testenv/lib/python3.12/site-packages/datashader/data_libraries/__init__.py:5](http://localhost:8888/lab/tree/notebooks/~/mambaforge/envs/testenv/lib/python3.12/site-packages/datashader/data_libraries/__init__.py#line=4)
      3 try:
      4     import dask as _dask  # noqa (Test dask installed)
----> 5     from . import dask    # noqa (API import)
      6 except ImportError:
      7     pass

File [~/mambaforge/envs/testenv/lib/python3.12/site-packages/datashader/data_libraries/dask.py:55](http://localhost:8888/lab/tree/notebooks/~/mambaforge/envs/testenv/lib/python3.12/site-packages/datashader/data_libraries/dask.py#line=54)
     51     return scheduler(dsk, name)
     54 # Classic Dask.DataFrame
---> 55 bypixel.pipeline.register(dd.core.DataFrame)(dask_pipeline)
     57 with suppress(ImportError):
     58     import dask_expr

AttributeError: module 'dask.dataframe.core' has no attribute 'DataFrame'

Stack traceback and/or browser JavaScript console output

Screenshots or screencasts of the bug in action

  • I may be interested in making a pull request to address this

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions