Skip to content

Commit cf86692

Browse files
authored
Merge pull request #5324 from janezd/owmergedata-empty-table
Fix calls to set_domain
2 parents 63ed27f + 0a809e4 commit cf86692

File tree

6 files changed

+21
-6
lines changed

6 files changed

+21
-6
lines changed

Orange/widgets/data/owcorrelations.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,8 @@ def set_data(self, data):
376376
self.vizrank.button.setEnabled(self.cont_data is not None)
377377

378378
def set_feature_model(self):
379-
self.feature_model.set_domain(self.cont_data and self.cont_data.domain)
379+
self.feature_model.set_domain(
380+
self.cont_data.domain if self.cont_data else None)
380381
data = self.data
381382
if self.cont_data and data.domain.has_continuous_class:
382383
self.feature = self.cont_data.domain[data.domain.class_var.name]

Orange/widgets/data/owcreateclass.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ def set_data(self, data):
301301
details = format_summary_details(data) if data else ""
302302
self.info.set_input_summary(summary, details)
303303
model = self.controls.attribute.model()
304-
model.set_domain(data and data.domain)
304+
model.set_domain(data.domain if data is not None else None)
305305
self.Warning.no_nonnumeric_vars(shown=data is not None and not model)
306306
if not model:
307307
self.attribute = None

Orange/widgets/data/owmergedata.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from orangewidget.utils.combobox import ComboBoxSearch
1111

1212
import Orange
13-
from Orange.data import StringVariable, ContinuousVariable, Variable
13+
from Orange.data import StringVariable, ContinuousVariable, Variable, Domain
1414
from Orange.data.util import hstack, get_unique_names_duplicates
1515
from Orange.widgets import widget, gui
1616
from Orange.widgets.settings import Setting, ContextHandler, ContextSetting
@@ -207,6 +207,8 @@ def decode_pair(widget, pair):
207207
def _encode_domain(self, domain):
208208
if domain is None:
209209
return {}
210+
if not isinstance(domain, Domain):
211+
domain = domain.domain
210212
all_vars = chain(domain.variables, domain.metas)
211213
return dict(self.encode_variables(all_vars))
212214

@@ -352,13 +354,13 @@ def change_merging(self):
352354
@check_sql_input
353355
def set_data(self, data):
354356
self.data = data
355-
self.model.set_domain(data and data.domain)
357+
self.model.set_domain(data.domain if data else None)
356358

357359
@Inputs.extra_data
358360
@check_sql_input
359361
def set_extra_data(self, data):
360362
self.extra_data = data
361-
self.extra_model.set_domain(data and data.domain)
363+
self.extra_model.set_domain(data.domain if data else None)
362364

363365
def store_combo_state(self):
364366
self.attr_pairs = self.attr_boxes.current_state()

Orange/widgets/data/owtranspose.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ def set_data(self, data):
102102
self.unconditional_apply()
103103

104104
def set_controls(self):
105-
self.feature_model.set_domain(self.data and self.data.domain)
105+
self.feature_model.set_domain(self.data.domain if self.data else None)
106106
self.meta_button.setEnabled(bool(self.feature_model))
107107
if self.feature_model:
108108
self.feature_names_column = self.feature_model[0]

Orange/widgets/data/tests/test_owcreateclass.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,12 @@ def test_no_useful_data(self):
283283
self.send_signal(self.widget.Inputs.data, self.heart)
284284
self.assertFalse(widget.Warning.no_nonnumeric_vars.is_shown())
285285

286+
self.send_signal(self.widget.Inputs.data, self.heart[:0])
287+
self.assertFalse(widget.Warning.no_nonnumeric_vars.is_shown())
288+
289+
self.send_signal(self.widget.Inputs.data, self.no_attributes[:0])
290+
self.assertTrue(widget.Warning.no_nonnumeric_vars.is_shown())
291+
286292
def test_string_data(self):
287293
widget = self.widget
288294
self.send_signal(self.widget.Inputs.data, self.zoo)

Orange/widgets/data/tests/test_owmergedata.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1063,6 +1063,12 @@ def test_summary(self):
10631063
self.assertIsInstance(info._StateInfo__output_summary, StateInfo.Empty)
10641064
self.assertEqual(info._StateInfo__output_summary.details, no_output)
10651065

1066+
def test_empty_tables(self):
1067+
widget = self.widget
1068+
self.send_signal(widget.Inputs.data, self.dataA[:0])
1069+
self.send_signal(widget.Inputs.extra_data, self.dataB[:0])
1070+
1071+
10661072
class MergeDataContextHandlerTest(unittest.TestCase):
10671073
# These units are too small to test individually, so they are tested
10681074
# within their function in the widget.

0 commit comments

Comments
 (0)