diff --git a/holoviews/core/data/__init__.py b/holoviews/core/data/__init__.py index abeddde74a..f8cac365b6 100644 --- a/holoviews/core/data/__init__.py +++ b/holoviews/core/data/__init__.py @@ -376,6 +376,8 @@ def __init__(self, data, kdims=None, vdims=None, **kwargs): else: self._dataset = Dataset(input_data, dataset=None, pipeline=None, transforms=None, _validate_vdims=False) + if hasattr(self, '_binned'): + self._dataset._binned = self._binned @property def redim(self): @@ -390,7 +392,8 @@ def dataset(self): if type(self) is Dataset: return self datatype = list(util.unique_iterator(self.datatype+Dataset.datatype)) - dataset = Dataset(self, _validate_vdims=False, datatype=datatype) + dataset = Dataset(self, dataset=None, pipeline=None, transforms=None, + _validate_vdims=False, datatype=datatype) if hasattr(self, '_binned'): dataset._binned = self._binned return dataset @@ -1161,12 +1164,6 @@ def clone(self, data=None, shared_data=True, new_type=None, link=True, data = self if link: overrides['plot_id'] = self._plot_id - - if 'dataset' not in overrides: - overrides['dataset'] = self.dataset - - if 'pipeline' not in overrides: - overrides['pipeline'] = self._pipeline elif self._in_method: if 'dataset' not in overrides: overrides['dataset'] = self.dataset diff --git a/holoviews/selection.py b/holoviews/selection.py index bb637f92b7..84ddc82bf6 100644 --- a/holoviews/selection.py +++ b/holoviews/selection.py @@ -486,6 +486,7 @@ def _select(element, selection_expr): mask = selection_expr.apply(dataset, compute=False, keep_index=True, strict=True) selection = dataset.select(selection_mask=mask) element = element.pipeline(selection) + element._dataset = dataset except KeyError as e: key_error = str(e).replace('"', '').replace('.', '') raise CallbackError("linked_selection aborted because it could not "