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)