Skip to content

Commit db543d6

Browse files
authored
Merge pull request #2137 from astaric/file-match-values
[FIX] Fix invalid settings reuse in File widget
2 parents 489ddfb + ee02816 commit db543d6

File tree

4 files changed

+32
-4
lines changed

4 files changed

+32
-4
lines changed

Orange/tests/__init__.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@
77

88

99
@contextmanager
10-
def named_file(content, encoding=None):
11-
file = tempfile.NamedTemporaryFile("wt", delete=False, encoding=encoding)
10+
def named_file(content, encoding=None, suffix=''):
11+
file = tempfile.NamedTemporaryFile("wt", delete=False,
12+
encoding=encoding, suffix=suffix)
1213
file.write(content)
1314
name = file.name
1415
file.close()

Orange/widgets/data/owfile.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,9 @@ class OWFile(widget.OWWidget, RecentPathsWComboMixin):
8686
SIZE_LIMIT = 1e7
8787
LOCAL_FILE, URL = range(2)
8888

89-
settingsHandler = PerfectDomainContextHandler()
89+
settingsHandler = PerfectDomainContextHandler(
90+
match_values=PerfectDomainContextHandler.MATCH_VALUES_ALL
91+
)
9092

9193
# Overload RecentPathsWidgetMixin.recent_paths to set defaults
9294
recent_paths = Setting([

Orange/widgets/data/tests/test_owfile.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import Orange
1212
from Orange.data import FileFormat, dataset_dirs, StringVariable, Table, \
1313
Domain, DiscreteVariable
14+
from Orange.tests import named_file
1415
from Orange.widgets.data.owfile import OWFile
1516
from Orange.widgets.tests.base import WidgetTest
1617

@@ -140,3 +141,27 @@ def test_check_column_noname(self):
140141
self.assertEqual(self.widget.domain_editor.model().data(idx, Qt.DisplayRole), temp)
141142
self.widget.domain_editor.model().setData(idx, "", Qt.EditRole)
142143
self.assertEqual(self.widget.domain_editor.model().data(idx, Qt.DisplayRole), temp)
144+
145+
def test_context_match_includes_variable_values(self):
146+
file1 = """\
147+
var
148+
a b
149+
150+
a
151+
"""
152+
file2 = """\
153+
var
154+
a b c
155+
156+
a
157+
"""
158+
editor = self.widget.domain_editor
159+
idx = self.widget.domain_editor.model().createIndex(0, 3)
160+
161+
with named_file(file1, suffix=".tab") as filename:
162+
self.open_dataset(filename)
163+
self.assertEqual(editor.model().data(idx, Qt.DisplayRole), "a, b")
164+
165+
with named_file(file2, suffix=".tab") as filename:
166+
self.open_dataset(filename)
167+
self.assertEqual(editor.model().data(idx, Qt.DisplayRole), "a, b, c")

Orange/widgets/settings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1150,7 +1150,7 @@ def encode_domain(self, domain):
11501150

11511151
if self.match_values == self.MATCH_VALUES_ALL:
11521152
def _encode(attrs):
1153-
return tuple((v.name, v.values if v.is_discrete else vartype(v))
1153+
return tuple((v.name, list(v.values) if v.is_discrete else vartype(v))
11541154
for v in attrs)
11551155
else:
11561156
def _encode(attrs):

0 commit comments

Comments
 (0)