Skip to content

Commit fe02689

Browse files
committed
[FIX] Feature Constructor: no fail when no values
https://sentry.io/biolab/orange3/issues/279049068/
1 parent 0d075f0 commit fe02689

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

Orange/widgets/data/owfeatureconstructor.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ def setEditorData(self, data, domain):
244244
def editorData(self):
245245
values = self.valuesedit.text()
246246
values = re.split(r"(?<!\\),", values)
247-
values = tuple(v.replace(r"\,", ",").strip() for v in values)
247+
values = tuple(filter(None, [v.replace(r"\,", ",").strip() for v in values]))
248248
return DiscreteDescriptor(
249249
name=self.nameedit.text(),
250250
values=values,

Orange/widgets/data/tests/test_owfeatureconstructor.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
from Orange.widgets.data.owfeatureconstructor import (DiscreteDescriptor,
1212
ContinuousDescriptor,
1313
StringDescriptor,
14-
construct_variables, OWFeatureConstructor)
14+
construct_variables, OWFeatureConstructor,
15+
DiscreteFeatureEditor)
1516

1617
from Orange.widgets.data.owfeatureconstructor import freevars, validate_exp
1718

@@ -238,3 +239,22 @@ def test_error_invalid_expression(self):
238239
)
239240
self.widget.apply()
240241
self.assertTrue(self.widget.Error.invalid_expressions.is_shown())
242+
243+
def test_discrete_no_values(self):
244+
"""
245+
Should not fail when there are no values set.
246+
GH-2417
247+
"""
248+
data = Table("iris")
249+
self.widget.setData(data)
250+
discreteFeatureEditor = DiscreteFeatureEditor()
251+
252+
discreteFeatureEditor.valuesedit.setText("")
253+
discreteFeatureEditor.nameedit.setText("D1")
254+
discreteFeatureEditor.expressionedit.setText("iris")
255+
self.widget.addFeature(
256+
discreteFeatureEditor.editorData()
257+
)
258+
self.assertFalse(self.widget.Error.more_values_needed.is_shown())
259+
self.widget.apply()
260+
self.assertTrue(self.widget.Error.more_values_needed.is_shown())

0 commit comments

Comments
 (0)