From 8a6821441e07b308084e5eee6877e7e2cfe84615 Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Wed, 14 Jun 2017 23:48:20 +0100 Subject: [PATCH 1/3] Allow redim.label if not custom label set --- holoviews/core/dimension.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/holoviews/core/dimension.py b/holoviews/core/dimension.py index 3b77aebd7b..f45c5ea9ee 100644 --- a/holoviews/core/dimension.py +++ b/holoviews/core/dimension.py @@ -158,6 +158,13 @@ def value_format(self, specs=None, **values): def range(self, specs=None, **values): return self._redim('range', specs, **values) + def label(self, specs=None, **values): + for k, v in values.items(): + dim = self.parent.get_dimension(k) + if dim.name != dim.label and dim.name != v: + raise ValueError('Cannot override an existing Dimension label') + return self._redim('label', specs, **values) + def soft_range(self, specs=None, **values): return self._redim('soft_range', specs, **values) From 7b654ee87c1451fa3b2bc5230af22f9e9d144f62 Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Wed, 14 Jun 2017 23:53:27 +0100 Subject: [PATCH 2/3] Added unit tests for Dimension relabel --- tests/testdimensions.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/testdimensions.py b/tests/testdimensions.py index 4aebfa8889..2dfe07e3d0 100644 --- a/tests/testdimensions.py +++ b/tests/testdimensions.py @@ -245,6 +245,16 @@ def test_dimensioned_redim_string(self): redimensioned = dimensioned.clone(kdims=['Test']) self.assertEqual(redimensioned, dimensioned.redim(x='Test')) + def test_dimensioned_redim_dict_label(self): + dimensioned = Dimensioned('Arbitrary Data', kdims=['x']) + redimensioned = dimensioned.clone(kdims=[('x', 'Test')]) + self.assertEqual(redimensioned, dimensioned.redim.label(x='Test')) + + def test_dimensioned_redim_dict_label_existing_error(self): + dimensioned = Dimensioned('Arbitrary Data', kdims=[('x', 'Test1')]) + with self.assertRaisesRegexp(ValueError, 'Cannot override an existing Dimension label'): + dimensioned.redim.label(x='Test2') + def test_dimensioned_redim_dimension(self): dimensioned = Dimensioned('Arbitrary Data', kdims=['x']) redimensioned = dimensioned.clone(kdims=['Test']) From fa1f209cb261719e10816723cdca94953fe1143b Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Wed, 14 Jun 2017 23:54:27 +0100 Subject: [PATCH 3/3] Small fix for redim.label --- holoviews/core/dimension.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/holoviews/core/dimension.py b/holoviews/core/dimension.py index f45c5ea9ee..40f8307559 100644 --- a/holoviews/core/dimension.py +++ b/holoviews/core/dimension.py @@ -161,7 +161,7 @@ def range(self, specs=None, **values): def label(self, specs=None, **values): for k, v in values.items(): dim = self.parent.get_dimension(k) - if dim.name != dim.label and dim.name != v: + if dim and dim.name != dim.label and dim.name != v: raise ValueError('Cannot override an existing Dimension label') return self._redim('label', specs, **values)