Skip to content

Commit af9db29

Browse files
author
sprenger
committed
only accept list-like labels with string items
1 parent 3d2dcaf commit af9db29

File tree

2 files changed

+14
-12
lines changed

2 files changed

+14
-12
lines changed

nixio/data_array.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,11 @@ def append_set_dimension(self, labels=None):
9191
index = len(self.dimensions) + 1
9292
setdim = SetDimension.create_new(self, index)
9393
if labels is not None:
94-
if not hasattr(labels, '__iter__'):
95-
labels = str(labels)
96-
if isinstance(labels, str):
97-
labels = [labels]
94+
if not hasattr(labels, '__iter__') or isinstance(labels, str):
95+
raise ValueError('`labels` has to be a list-like object.')
96+
for label in labels:
97+
if not isinstance(label, str):
98+
raise ValueError(f'`labels` has to contain string objects, not {type(label)}')
9899
if not isinstance(labels, list):
99100
labels = list(labels)
100101
setdim.labels = labels

nixio/test/test_dimensions.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -158,15 +158,16 @@ def test_set_dim_labels_array(self):
158158
setdim = self.array.append_set_dimension(labels)
159159
assert tuple(labels) == setdim.labels
160160

161-
def test_set_dim_labels_single_string(self):
162-
labels = 'Sample 1'
163-
setdim = self.array.append_set_dimension(labels)
164-
assert tuple([labels]) == setdim.labels
161+
def test_set_dim_invalid_labels(self):
162+
# don't accept non list-like labels
163+
with self.assertRaises(ValueError):
164+
self.array.append_set_dimension('Sample 1')
165+
with self.assertRaises(ValueError):
166+
self.array.append_set_dimension(1000)
165167

166-
def test_set_dim_labels_single_float(self):
167-
labels = 1000
168-
setdim = self.array.append_set_dimension(labels)
169-
assert tuple([str(labels)]) == setdim.labels
168+
# don't accept list of non-string objects
169+
with self.assertRaises(ValueError):
170+
self.array.append_set_dimension([1, 2, 3])
170171

171172
def test_range_dim_ticks_resize(self):
172173
rangedim = self.array.append_range_dimension([1, 2, 100])

0 commit comments

Comments
 (0)