HEX
Server: Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/8.4.25
System: Windows NT DESKTOP-4TAV2RJ 10.0 build 19045 (Windows 10) AMD64
User: fred (0)
PHP: 8.4.25
Disabled: NONE
Upload Files
File: C:/Users/fred/anaconda3/Lib/site-packages/datashader/data_libraries/xarray.py
from __future__ import annotations
from datashader.glyphs.line import LinesXarrayCommonX
from datashader.glyphs.quadmesh import _QuadMeshLike
from datashader.data_libraries.pandas import default
from datashader.core import bypixel
import xarray as xr
from datashader.utils import Dispatcher


try:
    import cupy
except Exception:
    cupy = None

glyph_dispatch = Dispatcher()


@bypixel.pipeline.register(xr.Dataset)
def xarray_pipeline(xr_ds, schema, canvas, glyph, summary, *, antialias=False):
    cuda = False
    if cupy:
        if isinstance(glyph, LinesXarrayCommonX):
            cuda = isinstance(xr_ds[glyph.y].data, cupy.ndarray)
        else:
            cuda = isinstance(xr_ds[glyph.name].data, cupy.ndarray)

    if not xr_ds.chunks:
        return glyph_dispatch(
            glyph, xr_ds, schema, canvas, summary, antialias=antialias, cuda=cuda)
    else:
        from datashader.data_libraries.dask_xarray import dask_xarray_pipeline
        return dask_xarray_pipeline(
            glyph, xr_ds, schema, canvas, summary, antialias=antialias, cuda=cuda)


# Default to default pandas implementation
glyph_dispatch.register(_QuadMeshLike)(default)
glyph_dispatch.register(LinesXarrayCommonX)(default)