diff --git a/Orange/preprocess/preprocess.py b/Orange/preprocess/preprocess.py
index a40fa3528a1..1334fbc8c0e 100644
--- a/Orange/preprocess/preprocess.py
+++ b/Orange/preprocess/preprocess.py
@@ -18,7 +18,7 @@
"SklImpute", "Normalize", "Randomize", "Preprocess",
"RemoveConstant", "RemoveNaNClasses", "RemoveNaNColumns",
"ProjectPCA", "ProjectCUR", "Scale", "RemoveSparse",
- "AdaptiveNormalize"]
+ "AdaptiveNormalize", "PreprocessorList"]
class Preprocess(Reprable):
diff --git a/Orange/widgets/data/owaggregatecolumns.py b/Orange/widgets/data/owaggregatecolumns.py
index 51947578fe8..d12be2ea93a 100644
--- a/Orange/widgets/data/owaggregatecolumns.py
+++ b/Orange/widgets/data/owaggregatecolumns.py
@@ -11,7 +11,6 @@
ContextSetting, Setting, DomainContextHandler
)
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.widget import Input, Output
from Orange.widgets.utils.itemmodels import DomainModel
@@ -80,22 +79,14 @@ def set_data(self, data: Table = None):
self.data = data
if self.data:
self.variable_model.set_domain(data.domain)
- self.info.set_input_summary(len(self.data),
- format_summary_details(self.data))
self.openContext(data)
else:
self.variable_model.set_domain(None)
- self.info.set_input_summary(self.info.NoInput)
self.unconditional_commit()
def commit(self):
augmented = self._compute_data()
self.Outputs.data.send(augmented)
- if augmented is None:
- self.info.set_output_summary(self.info.NoOutput)
- else:
- self.info.set_output_summary(
- len(augmented), format_summary_details(augmented))
def _compute_data(self):
if not self.data or not self.variables:
diff --git a/Orange/widgets/data/owcolor.py b/Orange/widgets/data/owcolor.py
index 3028cca3ce2..2ff3c5bbb4f 100644
--- a/Orange/widgets/data/owcolor.py
+++ b/Orange/widgets/data/owcolor.py
@@ -19,7 +19,6 @@
from Orange.widgets.gui import HorizontalGridDelegate
from Orange.widgets.utils import itemmodels, colorpalettes
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.report import colored_square as square
from Orange.widgets.widget import Input, Output
@@ -580,9 +579,6 @@ def __init__(self):
gui.rubber(self.buttonsArea)
gui.auto_apply(self.buttonsArea, self, "auto_apply")
- self.info.set_input_summary(self.info.NoInput)
- self.info.set_output_summary(self.info.NoOutput)
-
@staticmethod
def sizeHint(): # pragma: no cover
return QSize(500, 570)
@@ -594,10 +590,8 @@ def set_data(self, data):
self.cont_descs = []
if data is None:
self.data = self.domain = None
- self.info.set_input_summary(self.info.NoInput)
else:
self.data = data
- self.info.set_input_summary(len(data), format_summary_details(data))
for var in chain(data.domain.variables, data.domain.metas):
if var.is_discrete:
self.disc_descs.append(DiscAttrDesc(var))
@@ -738,7 +732,6 @@ def make(variables):
if self.data is None:
self.Outputs.data.send(None)
- self.info.set_output_summary(self.info.NoOutput)
return
disc_dict = {desc.var.name: desc for desc in self.disc_descs}
@@ -748,8 +741,6 @@ def make(variables):
new_domain = Orange.data.Domain(
make(dom.attributes), make(dom.class_vars), make(dom.metas))
new_data = self.data.transform(new_domain)
- self.info.set_output_summary(len(new_data),
- format_summary_details(new_data))
self.Outputs.data.send(new_data)
def send_report(self):
diff --git a/Orange/widgets/data/owconcatenate.py b/Orange/widgets/data/owconcatenate.py
index a56899ae02d..3ecc73681ba 100644
--- a/Orange/widgets/data/owconcatenate.py
+++ b/Orange/widgets/data/owconcatenate.py
@@ -23,8 +23,6 @@
from Orange.widgets.utils.annotated_data import add_columns
from Orange.widgets.utils.sql import check_sql_input
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_summary_details, \
- format_multiple_summaries
from Orange.widgets.widget import Input, Output, Msg
@@ -145,9 +143,6 @@ def __init__(self):
gui.comboBox(ibox, self, "source_column_role", items=self.id_roles,
callback=self._source_changed))
- self.info.set_input_summary(self.info.NoInput)
- self.info.set_output_summary(self.info.NoOutput)
-
ibox.layout().addLayout(form)
mleft, mtop, mright, _ = ibox.layout().getContentsMargins()
ibox.layout().setContentsMargins(mleft, mtop, mright, 4)
@@ -170,25 +165,8 @@ def set_more_data(self, data=None, sig_id=None):
elif sig_id in self.more_data:
del self.more_data[sig_id]
- def _set_input_summary(self):
- more_data = list(self.more_data.values()) if self.more_data else [None]
- n_primary = len(self.primary_data) if self.primary_data else 0
- n_more_data = [len(data) if data else 0 for data in more_data]
-
- summary, details, kwargs = self.info.NoInput, "", {}
- if self.primary_data or self.more_data:
- summary = f"{self.info.format_number(n_primary)}, " \
- + ", ".join(self.info.format_number(i) for i in n_more_data)
- details = format_multiple_summaries(
- [("Primary data", self.primary_data)]
- + [("", data) for data in more_data]
- )
- kwargs = {"format": Qt.RichText}
- self.info.set_input_summary(summary, details, **kwargs)
-
def handleNewSignals(self):
self.mergebox.setDisabled(self.primary_data is not None)
- self._set_input_summary()
if self.incompatible_types():
self.Error.bow_concatenation()
else:
@@ -242,10 +220,8 @@ def apply(self):
source_ids = np.array(list(flatten(
[i] * len(table) for i, table in enumerate(tables)))).reshape((-1, 1))
data[:, source_var] = source_ids
- self.info.set_output_summary(len(data), format_summary_details(data))
else:
data = None
- self.info.set_output_summary(self.info.NoOutput)
self.Outputs.data.send(data)
diff --git a/Orange/widgets/data/owcontinuize.py b/Orange/widgets/data/owcontinuize.py
index b2d8a845a79..7c944319cb8 100644
--- a/Orange/widgets/data/owcontinuize.py
+++ b/Orange/widgets/data/owcontinuize.py
@@ -13,7 +13,6 @@
from Orange.widgets.settings import Setting
from Orange.widgets.utils.sql import check_sql_input
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.widget import Input, Output
@@ -99,8 +98,6 @@ def __init__(self):
gui.auto_apply(self.buttonsArea, self, "autosend")
self.data = None
- self.info.set_input_summary(self.info.NoInput)
- self.info.set_output_summary(self.info.NoOutput)
def settings_changed(self):
self.commit()
@@ -111,12 +108,8 @@ def setData(self, data):
self.data = data
self.enable_normalization()
if data is None:
- self.info.set_input_summary(self.info.NoInput)
- self.info.set_output_summary(self.info.NoOutput)
self.Outputs.data.send(None)
else:
- self.info.set_input_summary(len(data),
- format_summary_details(data))
self.unconditional_commit()
def enable_normalization(self):
@@ -147,8 +140,6 @@ def commit(self):
domain = continuizer(self.data)
data = self.data.transform(domain)
self.Outputs.data.send(data)
- self.info.set_output_summary(len(data),
- format_summary_details(data))
else:
self.Outputs.data.send(self.data) # None or empty data
diff --git a/Orange/widgets/data/owcorrelations.py b/Orange/widgets/data/owcorrelations.py
index 3f8593cd5e4..98f7840427e 100644
--- a/Orange/widgets/data/owcorrelations.py
+++ b/Orange/widgets/data/owcorrelations.py
@@ -25,7 +25,6 @@
from Orange.widgets.utils.itemmodels import DomainModel
from Orange.widgets.utils.signals import Input, Output
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.visualize.utils import VizRankDialogAttrPair
from Orange.widgets.widget import OWWidget, AttributeList, Msg
@@ -297,9 +296,6 @@ def __init__(self):
button_box = gui.hBox(self.buttonsArea)
button_box.layout().addWidget(self.vizrank.button)
- self.info.set_input_summary(self.info.NoInput)
- self.info.set_output_summary(self.info.NoOutput)
-
@staticmethod
def sizeHint():
return QSize(350, 400)
@@ -366,10 +362,6 @@ def set_data(self, data):
self.Warning.not_enough_vars()
else:
self.cont_data = SklImpute()(cont_data)
- self.info.set_input_summary(len(data),
- format_summary_details(data))
- else:
- self.info.set_input_summary(self.info.NoInput)
self.set_feature_model()
self.openContext(self.cont_data)
self.apply()
@@ -394,9 +386,6 @@ def apply(self):
def commit(self):
self.Outputs.data.send(self.data)
- summary = len(self.data) if self.data else self.info.NoOutput
- details = format_summary_details(self.data) if self.data else ""
- self.info.set_output_summary(summary, details)
if self.data is None or self.cont_data is None:
self.Outputs.features.send(None)
diff --git a/Orange/widgets/data/owcreateclass.py b/Orange/widgets/data/owcreateclass.py
index 07621c0df10..bbf20096726 100644
--- a/Orange/widgets/data/owcreateclass.py
+++ b/Orange/widgets/data/owcreateclass.py
@@ -15,7 +15,6 @@
from Orange.widgets.settings import DomainContextHandler, ContextSetting
from Orange.widgets.utils.itemmodels import DomainModel
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.widget import Msg, Input, Output
@@ -269,9 +268,6 @@ def __init__(self):
gui.button(self.buttonsArea, self, "Apply", callback=self.apply)
- self.info.set_input_summary(self.info.NoInput)
- self.info.set_output_summary(self.info.NoOutput)
-
# TODO: Resizing upon changing the number of rules does not work
self.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum)
@@ -297,16 +293,12 @@ def set_data(self, data):
self.closeContext()
self.rules = {}
self.data = data
- summary = len(data) if data else self.info.NoInput
- details = format_summary_details(data) if data else ""
- self.info.set_input_summary(summary, details)
model = self.controls.attribute.model()
model.set_domain(data.domain if data is not None else None)
self.Warning.no_nonnumeric_vars(shown=data is not None and not model)
if not model:
self.attribute = None
self.Outputs.data.send(None)
- self.info.set_output_summary(self.info.NoOutput)
return
self.attribute = model[0]
self.openContext(data)
@@ -513,7 +505,6 @@ def apply(self):
self.class_name = self.class_name.strip()
if not self.attribute:
self.Outputs.data.send(None)
- self.info.set_output_summary(self.info.NoOutput)
return
domain = self.data.domain
if not self.class_name:
@@ -522,15 +513,11 @@ def apply(self):
self.Error.class_name_duplicated()
if not self.class_name or self.class_name in domain:
self.Outputs.data.send(None)
- self.info.set_output_summary(self.info.NoOutput)
return
new_class = self._create_variable()
new_domain = Domain(
domain.attributes, new_class, domain.metas + domain.class_vars)
new_data = self.data.transform(new_domain)
- summary = len(new_data) if new_data is not None else self.info.NoOutput
- details = format_summary_details(new_data) if new_data is not None else ""
- self.info.set_output_summary(summary, details)
self.Outputs.data.send(new_data)
def _create_variable(self):
diff --git a/Orange/widgets/data/owcreateinstance.py b/Orange/widgets/data/owcreateinstance.py
index 845b9796625..3b96919ef15 100644
--- a/Orange/widgets/data/owcreateinstance.py
+++ b/Orange/widgets/data/owcreateinstance.py
@@ -17,8 +17,6 @@
from Orange.widgets import gui
from Orange.widgets.utils.itemmodels import TableModel
from Orange.widgets.settings import Setting
-from Orange.widgets.utils.state_summary import format_summary_details, \
- format_multiple_summaries
from Orange.widgets.utils.widgetpreview import WidgetPreview
from Orange.widgets.widget import OWWidget, Input, Output, Msg
@@ -527,8 +525,6 @@ def __init__(self):
gui.rubber(self.buttonsArea)
box = gui.auto_apply(self.buttonsArea, self, "auto_commit")
- self._set_input_summary()
- self._set_output_summary()
self.settingsAboutToBePacked.connect(self.pack_settings)
def __filter_edit_changed(self):
@@ -604,7 +600,6 @@ def _initialize_values(self, fun: str, indices: List[QModelIndex] = None):
@Inputs.data
def set_data(self, data: Table):
self.data = data
- self._set_input_summary()
self._set_model_data()
self.unconditional_commit()
@@ -624,27 +619,6 @@ def _set_model_data(self):
@Inputs.reference
def set_reference(self, data: Table):
self.reference = data
- self._set_input_summary()
-
- def _set_input_summary(self):
- n_data = len(self.data) if self.data else 0
- n_refs = len(self.reference) if self.reference else 0
- summary, details, kwargs = self.info.NoInput, "", {}
-
- if self.data or self.reference:
- summary = f"{self.info.format_number(n_data)}, " \
- f"{self.info.format_number(n_refs)}"
- data_list = [("Data", self.data), ("Reference", self.reference)]
- details = format_multiple_summaries(data_list)
- kwargs = {"format": Qt.RichText}
- self.info.set_input_summary(summary, details, **kwargs)
-
- def _set_output_summary(self, data: Optional[Table] = None):
- if data:
- summary, details = len(data), format_summary_details(data)
- else:
- summary, details = self.info.NoOutput, ""
- self.info.set_output_summary(summary, details)
def commit(self):
output_data = None
@@ -652,7 +626,6 @@ def commit(self):
output_data = self._create_data_from_values()
if self.append_to_data:
output_data = self._append_to_data(output_data)
- self._set_output_summary(output_data)
self.Outputs.data.send(output_data)
def _create_data_from_values(self) -> Table:
diff --git a/Orange/widgets/data/owcsvimport.py b/Orange/widgets/data/owcsvimport.py
index 517469f2342..c6784321c75 100644
--- a/Orange/widgets/data/owcsvimport.py
+++ b/Orange/widgets/data/owcsvimport.py
@@ -66,7 +66,6 @@
from Orange.widgets.utils.settings import (
QSettings_readArray, QSettings_writeArray
)
-from Orange.widgets.utils.state_summary import format_summary_details
if typing.TYPE_CHECKING:
# pylint: disable=invalid-name
@@ -605,17 +604,17 @@ class OWCSVFileImport(widget.OWWidget):
category = "Data"
keywords = ["file", "load", "read", "open", "csv"]
- outputs = [
- widget.OutputSignal(
+ class Outputs:
+ data = widget.Output(
name="Data",
type=Orange.data.Table,
- doc="Loaded data set."),
- widget.OutputSignal(
+ doc="Loaded data set.")
+ data_frame = widget.Output(
name="Data Frame",
type=pd.DataFrame,
- doc=""
+ doc="",
+ auto_summary=False
)
- ]
class Error(widget.OWWidget.Error):
error = widget.Msg(
@@ -714,8 +713,6 @@ def __init__(self, *args, **kwargs):
self.summary_text.viewport().setAutoFillBackground(False)
box.layout().addWidget(self.summary_text)
- self.info.set_output_summary(self.info.NoOutput)
-
button_box = QDialogButtonBox(
orientation=Qt.Horizontal,
standardButtons=QDialogButtonBox.Cancel | QDialogButtonBox.Retry
@@ -1216,14 +1213,11 @@ def __handle_result(self, f):
table.name = os.path.splitext(os.path.split(filename)[-1])[0]
else:
table = None
- self.send("Data Frame", df)
- self.send('Data', table)
+ self.Outputs.data_frame.send(df)
+ self.Outputs.data.send(table)
self._update_status_messages(table)
def _update_status_messages(self, data):
- summary = len(data) if data else self.info.NoOutput
- details = format_summary_details(data) if data else ""
- self.info.set_output_summary(summary, details)
if data is None:
return
diff --git a/Orange/widgets/data/owdatainfo.py b/Orange/widgets/data/owdatainfo.py
index 20726727ed0..2811875d07b 100644
--- a/Orange/widgets/data/owdatainfo.py
+++ b/Orange/widgets/data/owdatainfo.py
@@ -4,7 +4,6 @@
from Orange.widgets import widget, gui
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.widget import Input
from Orange.data.table import Table
from Orange.data import StringVariable, DiscreteVariable, ContinuousVariable
@@ -43,8 +42,6 @@ def __init__(self):
bo = gui.vBox(self.controlArea, box)
gui.label(bo, self, "%%(%s)s" % name)
- self.info.set_input_summary(self.info.NoInput)
-
# ensure the widget has some decent minimum width.
self.targets = "Categorical outcome with 123 values"
self.layout().activate()
@@ -59,12 +56,9 @@ def __init__(self):
def data(self, data):
if data is None:
self._clear_fields()
- self.info.set_input_summary(self.info.NoInput)
else:
self._set_fields(data)
self._set_report(data)
- self.info.set_input_summary(data.approx_len(),
- format_summary_details(data))
def _clear_fields(self):
self.data_set_name = ""
diff --git a/Orange/widgets/data/owdatasampler.py b/Orange/widgets/data/owdatasampler.py
index b0dbd1e1221..e6d9376a977 100644
--- a/Orange/widgets/data/owdatasampler.py
+++ b/Orange/widgets/data/owdatasampler.py
@@ -11,7 +11,6 @@
from Orange.data import Table
from Orange.data.sql.table import SqlTable
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.widget import Msg, OWWidget, Input, Output
from Orange.util import Reprable
@@ -86,9 +85,6 @@ def __init__(self):
self.indices = None
self.sampled_instances = self.remaining_instances = None
- self.info.set_input_summary(self.info.NoInput)
- self.info.set_output_summary(self.info.NoInput)
-
self.sampling_box = gui.vBox(self.controlArea, "Sampling Type")
sampling = gui.radioButtons(self.sampling_box, self, "sampling_type",
callback=self.sampling_type_changed)
@@ -194,14 +190,11 @@ def set_data(self, dataset):
self.cb_seed.setVisible(not sql)
self.cb_stratify.setVisible(not sql)
self.cb_sql_dl.setVisible(sql)
- self.info.set_input_summary(dataset.approx_len(),
- format_summary_details(dataset))
if not sql:
self._update_sample_max_size()
self.updateindices()
else:
- self.info.set_input_summary(self.info.NoInput)
self.indices = None
self.clear_messages()
self.commit()
@@ -248,10 +241,6 @@ def commit(self):
self.sampled_instances = len(sample)
self.remaining_instances = len(other)
- summary = sample.approx_len() if sample else self.info.NoOutput
- details = format_summary_details(sample) if sample else ""
- self.info.set_output_summary(summary, details)
-
self.Outputs.data_sample.send(sample)
self.Outputs.remaining_data.send(other)
diff --git a/Orange/widgets/data/owdatasets.py b/Orange/widgets/data/owdatasets.py
index caf3cafb5cd..fb1c8cbdc05 100644
--- a/Orange/widgets/data/owdatasets.py
+++ b/Orange/widgets/data/owdatasets.py
@@ -28,7 +28,6 @@
from Orange.widgets import settings, gui
from Orange.widgets.utils.signals import Output
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.widget import OWWidget, Msg
@@ -242,8 +241,6 @@ def __init__(self):
self.splitter.addWidget(self.view)
self.splitter.addWidget(box)
- self.info.set_output_summary(self.info.NoOutput)
-
self.splitter.setSizes([300, 200])
self.splitter.splitterMoved.connect(
lambda:
@@ -550,12 +547,9 @@ def closeEvent(self, event):
def load_and_output(self, path):
if path is None:
self.Outputs.data.send(None)
- self.info.set_output_summary(self.info.NoOutput)
else:
data = self.load_data(path)
self.Outputs.data.send(data)
- self.info.set_output_summary(len(data),
- format_summary_details(data))
self.current_output = path
self.__update_cached_state()
diff --git a/Orange/widgets/data/owdiscretize.py b/Orange/widgets/data/owdiscretize.py
index 91494b68faa..142acd711d7 100644
--- a/Orange/widgets/data/owdiscretize.py
+++ b/Orange/widgets/data/owdiscretize.py
@@ -17,7 +17,6 @@
from Orange.widgets import widget, gui, settings
from Orange.widgets.utils import itemmodels, vartype, unique_everseen
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.widget import Input, Output
from Orange.widgets.data.oweditdomain import FixedSizeButton
@@ -470,9 +469,6 @@ def set_manual_cuts():
self._update_spin_positions()
- self.info.set_input_summary(self.info.NoInput)
- self.info.set_output_summary(self.info.NoOutput)
-
@property
def default_method(self) -> Methods:
return Methods[self.default_method_name]
@@ -504,10 +500,7 @@ def set_data(self, data):
self._restore(self.saved_var_states)
# Complete the induction of cut points
self._update_points()
- self.info.set_input_summary(len(data),
- format_summary_details(data))
else:
- self.info.set_input_summary(self.info.NoInput)
self._clear()
self.unconditional_commit()
@@ -775,10 +768,6 @@ def commit(self):
if self.data is not None:
domain = self.discretized_domain()
output = self.data.transform(domain)
-
- summary = len(output) if output else self.info.NoOutput
- details = format_summary_details(output) if output else ""
- self.info.set_output_summary(summary, details)
self.Outputs.data.send(output)
def storeSpecificSettings(self):
diff --git a/Orange/widgets/data/oweditdomain.py b/Orange/widgets/data/oweditdomain.py
index dfd566ca6fa..cad60a98f8d 100644
--- a/Orange/widgets/data/oweditdomain.py
+++ b/Orange/widgets/data/oweditdomain.py
@@ -41,7 +41,6 @@
from Orange.widgets.utils.buttons import FixedSizeButton
from Orange.widgets.utils.itemmodels import signal_blocking
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.widget import Input, Output
ndarray = np.ndarray # pylint: disable=invalid-name
@@ -1877,9 +1876,6 @@ def __init__(self):
self.variables_view.setFocus(Qt.NoFocusReason) # initial focus
- self.info.set_input_summary(self.info.NoInput)
- self.info.set_output_summary(self.info.NoOutput)
-
@Inputs.data
def set_data(self, data):
"""Set input dataset."""
@@ -1888,8 +1884,6 @@ def set_data(self, data):
self.data = data
if self.data is not None:
- self.info.set_input_summary(len(data),
- format_summary_details(data))
self.setup_model(data)
self.le_output_name.setPlaceholderText(data.name)
self.openContext(self.data)
@@ -1897,7 +1891,6 @@ def set_data(self, data):
self._restore()
else:
self.le_output_name.setPlaceholderText("")
- self.info.set_input_summary(self.info.NoInput)
self.commit()
@@ -2080,7 +2073,6 @@ def commit(self):
data = self.data
if data is None:
self.Outputs.data.send(None)
- self.info.set_output_summary(self.info.NoOutput)
return
model = self.variables_model
@@ -2096,8 +2088,6 @@ def state(i):
and not any(requires_transform(var, trs)
for var, (_, trs) in zip(input_vars, state)):
self.Outputs.data.send(data)
- self.info.set_output_summary(len(data),
- format_summary_details(data))
return
assert all(v_.vtype.name == v.name
@@ -2121,7 +2111,6 @@ def state(i):
if len(output_vars) != len({v.name for v in output_vars}):
self.Error.duplicate_var_name()
self.Outputs.data.send(None)
- self.info.set_output_summary(self.info.NoOutput)
return
domain = data.domain
@@ -2148,8 +2137,6 @@ def construct_domain(vars_list):
if self.output_table_name:
new_data.name = self.output_table_name
self.Outputs.data.send(new_data)
- self.info.set_output_summary(len(new_data),
- format_summary_details(new_data))
def sizeHint(self):
sh = super().sizeHint()
diff --git a/Orange/widgets/data/owfeatureconstructor.py b/Orange/widgets/data/owfeatureconstructor.py
index fc92cb568d5..48b84219f20 100644
--- a/Orange/widgets/data/owfeatureconstructor.py
+++ b/Orange/widgets/data/owfeatureconstructor.py
@@ -39,7 +39,6 @@
from Orange.widgets.utils.sql import check_sql_input
from Orange.widgets import report
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.widget import OWWidget, Msg, Input, Output
FeatureDescriptor = \
@@ -494,9 +493,6 @@ def generate_newname(fmt):
self._on_selectedVariableChanged
)
- self.info.set_input_summary(self.info.NoInput)
- self.info.set_output_summary(self.info.NoOutput)
-
layout.addWidget(self.featureview)
box.layout().addLayout(layout, 1)
@@ -563,14 +559,12 @@ def setData(self, data=None):
self.data = data
- self.info.set_input_summary(self.info.NoInput)
if self.data is not None:
descriptors = list(self.descriptors)
currindex = self.currentIndex
self.descriptors = []
self.currentIndex = -1
self.openContext(data)
- self.info.set_input_summary(len(data), format_summary_details(data))
if descriptors != self.descriptors or \
self.currentIndex != currindex:
@@ -591,7 +585,6 @@ def handleNewSignals(self):
if self.data is not None:
self.apply()
else:
- self.info.set_output_summary(self.info.NoOutput)
self.Outputs.data.send(None)
def addFeature(self, descriptor):
@@ -698,7 +691,6 @@ def report_error(err):
self.Error.more_values_needed(disc_attrs_not_ok)
return
- self.info.set_output_summary(len(data), format_summary_details(data))
self.Outputs.data.send(data)
def send_report(self):
diff --git a/Orange/widgets/data/owfeaturestatistics.py b/Orange/widgets/data/owfeaturestatistics.py
index 05e0905c937..898eade7cdd 100644
--- a/Orange/widgets/data/owfeaturestatistics.py
+++ b/Orange/widgets/data/owfeaturestatistics.py
@@ -31,7 +31,6 @@
from Orange.widgets.utils.itemmodels import DomainModel, AbstractSortTableModel
from Orange.widgets.utils.signals import Input, Output
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_summary_details
def _categorical_entropy(x):
@@ -792,9 +791,6 @@ def __init__(self):
gui.rubber(self.buttonsArea)
gui.auto_send(self.buttonsArea, self, "auto_commit")
- self.info.set_input_summary(self.info.NoInput)
- self.info.set_output_summary(self.info.NoOutput)
-
@staticmethod
def sizeHint():
return QSize(1050, 500)
@@ -823,14 +819,11 @@ def set_data(self, data):
self.data = data
if data is not None:
- self.info.set_input_summary(len(data),
- format_summary_details(data))
self.color_var_model.set_domain(data.domain)
self.color_var = None
if self.data.domain.class_vars:
self.color_var = self.data.domain.class_vars[0]
else:
- self.info.set_input_summary(self.info.NoInput)
self.color_var_model.set_domain(None)
self.color_var = None
self.model.set_data(data)
@@ -885,15 +878,12 @@ def on_select(self):
def commit(self):
if not self.selected_vars:
- self.info.set_output_summary(self.info.NoOutput)
self.Outputs.reduced_data.send(None)
self.Outputs.statistics.send(None)
return
# Send a table with only selected columns to output
variables = self.selected_vars
- self.info.set_output_summary(len(self.data[:, variables]),
- format_summary_details(self.data[:, variables]))
self.Outputs.reduced_data.send(self.data[:, variables])
# Send the statistics of the selected variables to ouput
diff --git a/Orange/widgets/data/owfile.py b/Orange/widgets/data/owfile.py
index 31f6ee147eb..86d650a4793 100644
--- a/Orange/widgets/data/owfile.py
+++ b/Orange/widgets/data/owfile.py
@@ -21,7 +21,6 @@
from Orange.widgets.utils.filedialogs import RecentPathsWComboMixin, \
open_filename_dialog
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.widget import Output, Msg
# Backward compatibility: class RecentPath used to be defined in this module,
@@ -256,8 +255,6 @@ def __init__(self):
callback=lambda: self.browse_file(True), autoDefault=False)
gui.rubber(hBox)
- self.info.set_output_summary(self.info.NoOutput)
-
self.set_file_list()
# Must not call open_file from within __init__. open_file
# explicitly re-enters the event loop (by a progress bar)
@@ -343,7 +340,6 @@ def load_data(self):
self.sheet_box.hide()
self.Outputs.data.send(None)
self.infolabel.setText("No data.")
- self.info.set_output_summary(self.info.NoOutput)
def _try_load(self):
# pylint: disable=broad-except
@@ -358,7 +354,6 @@ def _try_load(self):
if self.reader is self.NoFileSelected:
self.Outputs.data.send(None)
- self.info.set_output_summary(self.info.NoOutput)
return None
try:
@@ -512,9 +507,6 @@ def apply_domain_edit(self):
self.Warning.multiple_targets(
shown=table is not None and len(table.domain.class_vars) > 1)
- summary = len(table) if table else self.info.NoOutput
- details = format_summary_details(table) if table else ""
- self.info.set_output_summary(summary, details)
self.Outputs.data.send(table)
self.apply_button.setEnabled(False)
diff --git a/Orange/widgets/data/owimpute.py b/Orange/widgets/data/owimpute.py
index 8f74e33e0d3..a3549fbfcd9 100644
--- a/Orange/widgets/data/owimpute.py
+++ b/Orange/widgets/data/owimpute.py
@@ -26,7 +26,6 @@
from Orange.widgets.utils import concurrent as qconcurrent
from Orange.widgets.utils.sql import check_sql_input
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.utils.spinbox import DoubleSpinBox
from Orange.widgets.widget import OWWidget, Msg, Input, Output
from Orange.classification import SimpleTreeLearner
@@ -303,9 +302,6 @@ def set_default_time(datetime):
gui.auto_apply(self.buttonsArea, self, "autocommit")
- self.info.set_input_summary(self.info.NoInput)
- self.info.set_output_summary(self.info.NoOutput)
-
def create_imputer(self, method, *args):
# type: (Method, ...) -> impute.BaseImputeMethod
if method == Method.Model:
@@ -371,9 +367,6 @@ def set_data(self, data):
# restore per variable imputation state
self._restore_state(self._variable_imputation_state)
self.reset_button.setEnabled(len(self.varmodel) > 0)
- summary = len(data) if data else self.info.NoInput
- details = format_summary_details(data) if data else ""
- self.info.set_input_summary(summary, details)
self.update_varview()
self.unconditional_commit()
@@ -418,9 +411,6 @@ def commit(self):
self.warning()
self.Error.imputation_failed.clear()
self.Error.model_based_imputer_sparse.clear()
- summary = len(self.data) if self.data else self.info.NoOutput
- detail = format_summary_details(self.data) if self.data else ""
- self.info.set_output_summary(summary, detail)
if not self.data or not self.varmodel.rowCount():
self.Outputs.data.send(self.data)
@@ -530,9 +520,6 @@ def create_data(attributes, class_vars):
self.Outputs.data.send(data)
self.modified = False
- summary = len(data) if data else self.info.NoOutput
- details = format_summary_details(data) if data else ""
- self.info.set_output_summary(summary, details)
@Slot(int, int)
def __progress_changed(self, n, d):
diff --git a/Orange/widgets/data/owmergedata.py b/Orange/widgets/data/owmergedata.py
index e48f37d8c8f..d704ff0d5bd 100644
--- a/Orange/widgets/data/owmergedata.py
+++ b/Orange/widgets/data/owmergedata.py
@@ -18,8 +18,6 @@
from Orange.widgets.utils.itemmodels import DomainModel
from Orange.widgets.utils.sql import check_sql_input
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_multiple_summaries, \
- format_summary_details
from Orange.widgets.widget import Input, Output, Msg
INSTANCEID = "Instance id"
@@ -327,9 +325,6 @@ def __init__(self):
self.model = DomainModelWithTooltips(content)
self.extra_model = DomainModelWithTooltips(content)
- self.info.set_input_summary(self.info.NoInput)
- self.info.set_output_summary(self.info.NoOutput)
-
grp = gui.radioButtons(
self.controlArea, self, "merging", box="Merging",
btnLabels=self.OptionNames, tooltips=self.OptionDescriptions,
@@ -371,20 +366,6 @@ def handleNewSignals(self):
self.openContext(self.data and self.data.domain,
self.extra_data and self.extra_data.domain)
self.attr_boxes.set_state(self.attr_pairs)
-
- summary, details, kwargs = self.info.NoInput, "", {}
- if self.data or self.extra_data:
- n_data = len(self.data) if self.data else 0
- n_extra_data = len(self.extra_data) if self.extra_data else 0
- summary = f"{self.info.format_number(n_data)}, " \
- f"{self.info.format_number(n_extra_data)}"
- kwargs = {"format": Qt.RichText}
- details = format_multiple_summaries([
- ("Data", self.data),
- ("Extra data", self.extra_data)
- ])
- self.info.set_input_summary(summary, details, **kwargs)
-
self.unconditional_commit()
def _find_best_match(self):
@@ -409,9 +390,6 @@ def commit(self):
self.clear_messages()
merged = self.merge() if self.data and self.extra_data else None
self.Outputs.data.send(merged)
- details = format_summary_details(merged) if merged else ""
- summary = len(merged) if merged else self.info.NoOutput
- self.info.set_output_summary(summary, details)
def send_report(self):
# pylint: disable=invalid-sequence-index
diff --git a/Orange/widgets/data/owneighbors.py b/Orange/widgets/data/owneighbors.py
index caf5f864ef2..e449af029c0 100644
--- a/Orange/widgets/data/owneighbors.py
+++ b/Orange/widgets/data/owneighbors.py
@@ -11,8 +11,6 @@
from Orange.widgets.utils.signals import Input, Output
from Orange.widgets.widget import OWWidget, Msg
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_summary_details,\
- format_multiple_summaries
METRICS = [
("Euclidean", distance.Euclidean),
@@ -84,23 +82,6 @@ def __init__(self):
callback=lambda: self.apply())
self.apply_button = gui.auto_apply(self.buttonsArea, self, commit=self.apply)
- self.info.set_input_summary(self.info.NoInput)
- self.info.set_output_summary(self.info.NoOutput)
-
- def _set_input_summary(self):
- n_data = len(self.data) if self.data else 0
- n_refs = len(self.reference) if self.reference else 0
- summary, details, kwargs = self.info.NoInput, "", {}
-
- if self.data or self.reference:
- summary = f"{self.info.format_number(n_data)}, " \
- f"{self.info.format_number(n_refs)}"
- details = format_multiple_summaries([
- ("Data", self.data),
- ("Reference", self.reference)
- ])
- kwargs = {"format": Qt.RichText}
- self.info.set_input_summary(summary, details, **kwargs)
@Inputs.data
def set_data(self, data):
@@ -113,7 +94,6 @@ def set_ref(self, refs):
def handleNewSignals(self):
self.compute_distances()
- self._set_input_summary()
self.unconditional_apply()
def recompute(self):
@@ -149,11 +129,8 @@ def apply(self):
if indices is None:
neighbors = None
- self.info.set_output_summary(self.info.NoOutput)
else:
neighbors = self._data_with_similarity(indices)
- summary, details = len(neighbors), format_summary_details(neighbors)
- self.info.set_output_summary(summary, details)
self.Outputs.data.send(neighbors)
def _compute_indices(self):
diff --git a/Orange/widgets/data/owoutliers.py b/Orange/widgets/data/owoutliers.py
index 22e7814be46..c419a91d9cf 100644
--- a/Orange/widgets/data/owoutliers.py
+++ b/Orange/widgets/data/owoutliers.py
@@ -18,7 +18,6 @@
from Orange.widgets.utils.concurrent import TaskState, ConcurrentWidgetMixin
from Orange.widgets.utils.sql import check_sql_input
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.widget import Msg, Input, Output, OWWidget
@@ -231,9 +230,6 @@ def init_gui(self):
gui.auto_apply(self.buttonsArea, self, "auto_commit")
- self.info.set_input_summary(self.info.NoInput)
- self.info.set_output_summary(self.info.NoOutput)
-
def _init_editors(self):
self.svm_editor = SVMEditor(self)
self.cov_editor = CovarianceEditor(self)
@@ -266,9 +262,6 @@ def set_data(self, data):
self.cancel()
self.clear_messages()
self.data = data
- summary = len(data) if data else self.info.NoInput
- details = format_summary_details(data) if data else ""
- self.info.set_input_summary(summary, details)
self.enable_controls()
self.unconditional_commit()
@@ -296,9 +289,6 @@ def on_partial_result(self, _):
def on_done(self, result: Results):
inliers, outliers = result.inliers, result.outliers
- summary = len(inliers) if inliers else self.info.NoOutput
- details = format_summary_details(inliers) if inliers else ""
- self.info.set_output_summary(summary, details)
self.n_inliers = len(inliers) if inliers else None
self.n_outliers = len(outliers) if outliers else None
diff --git a/Orange/widgets/data/owpaintdata.py b/Orange/widgets/data/owpaintdata.py
index 5fcdf7fd36c..f78fd7e7550 100644
--- a/Orange/widgets/data/owpaintdata.py
+++ b/Orange/widgets/data/owpaintdata.py
@@ -30,7 +30,6 @@
from Orange.util import scale, namegen
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.widget import OWWidget, Msg, Input, Output
@@ -967,9 +966,6 @@ def _init_ui(self):
self.mainArea.layout().addWidget(self.plotview)
- self.info.set_input_summary(self.info.NoInput)
- self.info.set_output_summary(self.info.NoOutput)
-
# enable brush tool
self.toolActions.actions()[0].setChecked(True)
self.set_current_tool(self.TOOLS[0][2])
@@ -1008,13 +1004,11 @@ def _check_and_set_data(data):
data = None
elif len(data.domain.attributes) > 2:
self.Information.use_first_two()
- self.info.set_input_summary(len(data), format_summary_details(data))
self.input_data = data
self.btResetToInput.setDisabled(data is None)
return bool(data)
if not _check_and_set_data(data):
- self.info.set_input_summary(self.info.NoInput)
return
X = np.array([scale(vals) for vals in data.X[:, :2].T]).T
@@ -1274,7 +1268,6 @@ def commit(self):
if not self.data:
self.Outputs.data.send(None)
- self.info.set_output_summary(self.info.NoOutput)
return
data = np.array(self.data)
if self.hasAttr2:
@@ -1305,7 +1298,6 @@ def commit(self):
data.name = self.table_name
self.Outputs.data.send(data)
- self.info.set_output_summary(len(data), format_summary_details(data))
def sizeHint(self):
sh = super().sizeHint()
diff --git a/Orange/widgets/data/owpivot.py b/Orange/widgets/data/owpivot.py
index f62ea7833d6..8ac3530290e 100644
--- a/Orange/widgets/data/owpivot.py
+++ b/Orange/widgets/data/owpivot.py
@@ -27,8 +27,6 @@
from Orange.widgets.utils.sql import check_sql_input
from Orange.widgets.utils.itemmodels import DomainModel
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_summary_details, \
- format_multiple_summaries
from Orange.widgets.widget import OWWidget, Input, Output, Msg
@@ -806,9 +804,6 @@ def _add_control_area_controls(self):
gui.rubber(self.controlArea)
gui.auto_apply(self.buttonsArea, self, "auto_commit")
- self.set_input_summary()
- self.set_output_summary(None, None, None)
-
def __add_aggregation_controls(self):
def new_inbox():
nonlocal row, col, inbox
@@ -906,7 +901,6 @@ def set_data(self, data):
def check_data(self):
self.clear_messages()
- self.set_input_summary()
def init_attr_values(self):
domain = self.data.domain if self.data and len(self.data) else None
@@ -933,7 +927,6 @@ def send_outputs(pivot_table, filtered_data, grouped_data):
self.Outputs.grouped_data.send(grouped_data)
self.Outputs.pivot_table.send(pivot_table)
self.Outputs.filtered_data.send(filtered_data)
- self.set_output_summary(pivot_table, filtered_data, grouped_data)
self.Warning.renamed_vars.clear()
self.Warning.too_many_values.clear()
@@ -971,28 +964,6 @@ def send_outputs(pivot_table, filtered_data, grouped_data):
if self.pivot.renamed:
self.Warning.renamed_vars(self.pivot.renamed)
- def set_input_summary(self):
- summary = len(self.data) if self.data else self.info.NoInput
- details = format_summary_details(self.data) if self.data else ""
- self.info.set_input_summary(summary, details)
-
- def set_output_summary(self, pivot: Table, filtered: Table, grouped: Table):
- summary, detail, kwargs = self.info.NoOutput, "", {}
- if pivot or filtered or grouped:
- n_pivot = len(pivot) if pivot else 0
- n_filtered = len(filtered) if filtered else 0
- n_grouped = len(grouped) if grouped else 0
- summary = f"{self.info.format_number(n_pivot)}, " \
- f"{self.info.format_number(n_filtered)}, " \
- f"{self.info.format_number(n_grouped)}"
- detail = format_multiple_summaries([
- ("Pivot table", pivot),
- ("Filtered data", filtered),
- ("Grouped data", grouped)
- ])
- kwargs = {"format": Qt.RichText}
- self.info.set_output_summary(summary, detail, **kwargs)
-
def _update_graph(self):
self.table_view.clear()
if self.pivot.pivot_table:
diff --git a/Orange/widgets/data/owpreprocess.py b/Orange/widgets/data/owpreprocess.py
index 12ea6314afb..d43c0af37d3 100644
--- a/Orange/widgets/data/owpreprocess.py
+++ b/Orange/widgets/data/owpreprocess.py
@@ -29,7 +29,6 @@
from Orange.widgets.utils.overlay import OverlayWidget
from Orange.widgets.utils.sql import check_sql_input
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.widget import Input, Output
from Orange.preprocess import Normalize
from Orange.widgets.data.utils.preprocess import (
@@ -1160,9 +1159,6 @@ def sizeHint(self):
gui.auto_apply(self.buttonsArea, self, "autocommit")
- self.info.set_input_summary(self.info.NoInput)
- self.info.set_output_summary(self.info.NoOutput)
-
self._initialize()
def _initialize(self):
@@ -1290,10 +1286,6 @@ def __on_modelchanged(self):
def set_data(self, data=None):
"""Set the input dataset."""
self.data = data
- if data is not None:
- self.info.set_input_summary(len(data), format_summary_details(data))
- else:
- self.info.set_input_summary(self.info.NoInput)
def handleNewSignals(self):
self.apply()
@@ -1337,10 +1329,8 @@ def apply(self):
except (ValueError, ZeroDivisionError) as e:
self.error(str(e))
return
- self.info.set_output_summary(len(data), format_summary_details(data))
else:
data = None
- self.info.set_output_summary(self.info.NoOutput)
self.Outputs.preprocessor.send(preprocessor)
self.Outputs.preprocessed_data.send(data)
diff --git a/Orange/widgets/data/owpurgedomain.py b/Orange/widgets/data/owpurgedomain.py
index 8093bc2d79a..c0d6c4b225f 100644
--- a/Orange/widgets/data/owpurgedomain.py
+++ b/Orange/widgets/data/owpurgedomain.py
@@ -6,7 +6,6 @@
from Orange.widgets.settings import Setting
from Orange.widgets.utils.sql import check_sql_input
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.widget import Input, Output
@@ -104,16 +103,11 @@ def add_line(parent):
gui.auto_send(self.buttonsArea, self, "autoSend")
- self.info.set_input_summary(self.info.NoInput)
- self.info.set_output_summary(self.info.NoOutput)
-
@Inputs.data
@check_sql_input
def setData(self, dataset):
if dataset is not None:
self.data = dataset
- self.info.set_input_summary(len(dataset),
- format_summary_details(dataset))
self.unconditional_commit()
else:
self.removedAttrs = "-"
@@ -126,8 +120,6 @@ def setData(self, dataset):
self.reducedMetas = "-"
self.Outputs.data.send(None)
self.data = None
- self.info.set_input_summary(self.info.NoInput)
- self.info.set_output_summary(self.info.NoOutput)
def optionsChanged(self):
self.commit()
@@ -160,8 +152,6 @@ def commit(self):
self.removedMetas = meta_res['removed']
self.reducedMetas = meta_res['reduced']
- self.info.set_output_summary(len(cleaned),
- format_summary_details(cleaned))
self.Outputs.data.send(cleaned)
def send_report(self):
diff --git a/Orange/widgets/data/owrandomize.py b/Orange/widgets/data/owrandomize.py
index 595bb544def..7556d0567e1 100644
--- a/Orange/widgets/data/owrandomize.py
+++ b/Orange/widgets/data/owrandomize.py
@@ -7,7 +7,6 @@
from Orange.preprocess import Randomize
from Orange.widgets.settings import Setting
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.widget import OWWidget, Input, Output
from Orange.widgets import gui
@@ -67,9 +66,6 @@ def __init__(self):
box, self, "random_seed", "Replicable shuffling",
callback=self._shuffle_check_changed)
- self.info.set_input_summary(self.info.NoInput)
- self.info.set_output_summary(self.info.NoOutput)
-
gui.auto_apply(self.buttonsArea, self, commit=self.apply)
@property
@@ -89,9 +85,6 @@ def _set_scope_label(self):
@Inputs.data
def set_data(self, data):
self.data = data
- summary = len(data) if data else self.info.NoInput
- details = format_summary_details(data) if data else ""
- self.info.set_input_summary(summary, details)
self.unconditional_apply()
def apply(self):
@@ -106,9 +99,6 @@ def apply(self):
data = self.data.copy()
for i, instance in zip(indices, randomized):
data[i] = instance
- summary = len(data) if data else self.info.NoOutput
- details = format_summary_details(data) if data else ""
- self.info.set_output_summary(summary, details)
self.Outputs.data.send(data)
def send_report(self):
diff --git a/Orange/widgets/data/owrank.py b/Orange/widgets/data/owrank.py
index 640da176c06..5e90242cd05 100644
--- a/Orange/widgets/data/owrank.py
+++ b/Orange/widgets/data/owrank.py
@@ -32,7 +32,6 @@
from Orange.widgets.utils.concurrent import ConcurrentWidgetMixin, TaskState
from Orange.widgets.utils.itemmodels import PyTableModel
from Orange.widgets.utils.sql import check_sql_input
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.utils.widgetpreview import WidgetPreview
from Orange.widgets.widget import AttributeList, Input, Msg, Output, OWWidget
@@ -377,9 +376,6 @@ def button(text, buttonid, toolTip=None):
gui.auto_send(self.buttonsArea, self, "auto_apply")
- self.info.set_input_summary(self.info.NoInput)
- self.info.set_output_summary(self.info.NoOutput)
-
self.resize(690, 500)
def switchProblemType(self, index):
@@ -413,9 +409,6 @@ def set_data(self, data):
self.switchProblemType(ProblemType.CLASSIFICATION)
if self.data is not None:
domain = self.data.domain
- self.info.set_input_summary(len(self.data),
- format_summary_details(self.data))
-
if domain.has_discrete_class:
problem_type = ProblemType.CLASSIFICATION
elif domain.has_continuous_class:
@@ -436,8 +429,6 @@ def set_data(self, data):
max((a.name for a in domain.attributes), key=len))
self.selectionMethod = OWRank.SelectNBest
- else:
- self.info.set_input_summary(self.info.NoInput)
self.openContext(data)
self.selectButtons.button(self.selectionMethod).setChecked(True)
@@ -628,7 +619,6 @@ def commit(self):
self.Outputs.reduced_data.send(None)
self.Outputs.features.send(None)
self.out_domain_desc = None
- self.info.set_output_summary(self.info.NoOutput)
else:
reduced_domain = Domain(
self.selected_attrs, self.data.domain.class_var,
@@ -637,8 +627,6 @@ def commit(self):
self.Outputs.reduced_data.send(data)
self.Outputs.features.send(AttributeList(self.selected_attrs))
self.out_domain_desc = report.describe_domain(data.domain)
- self.info.set_output_summary(len(data),
- format_summary_details(data))
def create_scores_table(self, labels):
self.Warning.renamed_variables.clear()
diff --git a/Orange/widgets/data/owsave.py b/Orange/widgets/data/owsave.py
index b3b55a4facd..eee2d338afd 100644
--- a/Orange/widgets/data/owsave.py
+++ b/Orange/widgets/data/owsave.py
@@ -8,7 +8,6 @@
from Orange.widgets.settings import Setting
from Orange.widgets.utils.save.owsavebase import OWSaveBase
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_summary_details
_userhome = os.path.expanduser(f"~{os.sep}")
@@ -35,9 +34,6 @@ class Error(OWSaveBase.Error):
def __init__(self):
super().__init__(2)
-
- self.info.set_input_summary(self.info.NoInput)
-
self.grid.addWidget(
gui.checkBox(
None, self, "add_type_annotations",
@@ -81,11 +77,6 @@ def update_messages(self):
shown=self.data is not None and self.data.is_sparse()
and self.filename and not self.writer.SUPPORT_SPARSE_DATA)
- def update_status(self):
- summary = len(self.data) if self.data else self.info.NoInput
- details = format_summary_details(self.data) if self.data else ""
- self.info.set_input_summary(summary, details)
-
def send_report(self):
self.report_data_brief(self.data)
writer = self.writer
diff --git a/Orange/widgets/data/owselectbydataindex.py b/Orange/widgets/data/owselectbydataindex.py
index 7bc8b5f082a..03a5cd8e33a 100644
--- a/Orange/widgets/data/owselectbydataindex.py
+++ b/Orange/widgets/data/owselectbydataindex.py
@@ -1,14 +1,10 @@
import numpy as np
-from AnyQt.QtCore import Qt
-
from Orange.data import Table
from Orange.widgets import widget, gui
from Orange.widgets.utils import itemmodels
from Orange.widgets.utils.sql import check_sql_input
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_summary_details, \
- format_multiple_summaries
from Orange.widgets.widget import Input, Output
from Orange.widgets.utils.annotated_data import (create_annotated_table)
@@ -54,9 +50,6 @@ def __init__(self):
self.infoBoxExtraData = gui.label(
box, self, self.data_info_text(None), box="Data Subset")
- self.info.set_input_summary(self.info.NoInput)
- self.info.set_output_summary(self.info.NoOutput)
-
@Inputs.data
@check_sql_input
def set_data(self, data):
@@ -70,19 +63,6 @@ def set_data_subset(self, data):
self.infoBoxExtraData.setText(self.data_info_text(data))
def handleNewSignals(self):
- summary, details, kwargs = self.info.NoInput, "", {}
- if self.data or self.data_subset:
- n_data = len(self.data) if self.data else 0
- n_data_subset = len(self.data_subset) if self.data_subset else 0
- summary = f"{self.info.format_number(n_data)}, " \
- f"{self.info.format_number(n_data_subset)}"
- kwargs = {"format": Qt.RichText}
- details = format_multiple_summaries([
- ("Data", self.data),
- ("Data subset", self.data_subset)
- ])
- self.info.set_input_summary(summary, details, **kwargs)
-
self._invalidate()
@staticmethod
@@ -111,9 +91,6 @@ def commit(self):
non_matching_output = self.data[~row_sel]
annotated_output = create_annotated_table(self.data, row_sel)
- summary = self.info.NoOutput if matching_output is None else len(matching_output)
- details = "" if matching_output is None else format_summary_details(matching_output)
- self.info.set_output_summary(summary, details)
self.Outputs.matching_data.send(matching_output)
self.Outputs.non_matching_data.send(non_matching_output)
self.Outputs.annotated_data.send(annotated_output)
diff --git a/Orange/widgets/data/owselectcolumns.py b/Orange/widgets/data/owselectcolumns.py
index 3b1b1f1d108..86f99be760c 100644
--- a/Orange/widgets/data/owselectcolumns.py
+++ b/Orange/widgets/data/owselectcolumns.py
@@ -18,7 +18,6 @@
VariablesListItemView, slices, variables_filter
)
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.widget import Input, Output, AttributeList, Msg
from Orange.data.table import Table
from Orange.widgets.utils.itemmodels import VariableListModel
@@ -321,9 +320,6 @@ def dropcompleted(action):
self.output_data = None
self.original_completer_items = []
- self.info.set_input_summary(self.info.NoInput)
- self.info.set_output_summary(self.info.NoOutput)
-
self.resize(600, 600)
@property
@@ -367,7 +363,6 @@ def set_data(self, data=None):
self.class_attrs[:] = []
self.meta_attrs[:] = []
self.available_attrs[:] = []
- self.info.set_input_summary(self.info.NoInput)
return
self.openContext(data)
@@ -384,7 +379,6 @@ def attrs_for_role(role):
self.class_attrs[:] = attrs_for_role("class")
self.meta_attrs[:] = attrs_for_role("meta")
self.available_attrs[:] = attrs_for_role("available")
- self.info.set_input_summary(len(data), format_summary_details(data))
self.update_interface_state(self.class_attrs_view)
@@ -607,14 +601,11 @@ def commit(self):
self.output_data = newdata
self.Outputs.data.send(newdata)
self.Outputs.features.send(AttributeList(attributes))
- self.info.set_output_summary(len(newdata),
- format_summary_details(newdata))
self.Warning.multiple_targets(shown=len(class_var) > 1)
else:
self.output_data = None
self.Outputs.data.send(None)
self.Outputs.features.send(None)
- self.info.set_output_summary(self.info.NoOutput)
def reset(self):
self.enable_used_attrs()
diff --git a/Orange/widgets/data/owselectrows.py b/Orange/widgets/data/owselectrows.py
index 71c69859c48..43ed2f9d094 100644
--- a/Orange/widgets/data/owselectrows.py
+++ b/Orange/widgets/data/owselectrows.py
@@ -30,7 +30,6 @@
from Orange.widgets.widget import Msg
from Orange.widgets.utils.annotated_data import (create_annotated_table,
ANNOTATED_DATA_SIGNAL_NAME)
-from Orange.widgets.utils.state_summary import format_summary_details
class SelectRowsContextHandler(DomainContextHandler):
@@ -282,9 +281,6 @@ def __init__(self):
acbox = gui.auto_send(self.buttonsArea, self, "auto_commit")
- self.info.set_input_summary(self.info.NoInput)
- self.info.set_output_summary(self.info.NoOutput)
-
self.set_data(None)
self.resize(600, 400)
@@ -554,7 +550,6 @@ def set_data(self, data):
data is None or
len(data.domain.variables) + len(data.domain.metas) > 100)
if not data:
- self.info.set_input_summary(self.info.NoInput)
self.data_desc = None
self.variable_model.set_domain(None)
self.commit()
@@ -570,8 +565,6 @@ def set_data(self, data):
if not self.cond_list.model().rowCount():
self.add_row()
- self.info.set_input_summary(data.approx_len(),
- format_summary_details(data))
self.unconditional_commit()
def conditions_changed(self):
@@ -712,11 +705,6 @@ def commit(self):
self.match_desc = report.describe_data_brief(matching_output)
self.nonmatch_desc = report.describe_data_brief(non_matching_output)
- summary = matching_output.approx_len() if matching_output else \
- self.info.NoOutput
- details = format_summary_details(matching_output) if matching_output else ""
- self.info.set_output_summary(summary, details)
-
def send_report(self):
if not self.data:
self.report_paragraph("No data.")
diff --git a/Orange/widgets/data/owtable.py b/Orange/widgets/data/owtable.py
index 7ebaa6da5c3..45e54a15e00 100644
--- a/Orange/widgets/data/owtable.py
+++ b/Orange/widgets/data/owtable.py
@@ -178,7 +178,7 @@ class OWDataTable(OWWidget):
keywords = []
class Inputs:
- data = Input("Data", Table, multiple=True)
+ data = Input("Data", Table, multiple=True, auto_summary=False)
class Outputs:
selected_data = Output("Selected Data", Table, default=True)
@@ -213,7 +213,6 @@ def __init__(self):
info_box = gui.vBox(self.controlArea, "Info")
self.info_text = gui.widgetLabel(info_box)
self._set_input_summary(None)
- self._set_output_summary(None)
box = gui.vBox(self.controlArea, "Variables")
self.c_show_attribute_labels = gui.checkBox(
@@ -543,11 +542,6 @@ def desc(n, part):
+ format_part(summary.M))
return text
- def _set_output_summary(self, output):
- summary = len(output) if output else self.info.NoOutput
- details = format_summary_details(output) if output else ""
- self.info.set_output_summary(summary, details)
-
def _on_select_all(self, _):
data_info = self.tabs.currentWidget().input_slot.summary
if len(self.selected_rows) == data_info.len \
@@ -711,7 +705,6 @@ def commit(self):
# Selections of individual instances are not implemented
# for SqlTables
if isinstance(table, SqlTable):
- self._set_output_summary(selected_data)
self.Outputs.selected_data.send(selected_data)
self.Outputs.annotated_data.send(None)
return
@@ -747,7 +740,6 @@ def select_vars(role):
else:
selected_data = table.from_table(domain, table, rowsel)
- self._set_output_summary(selected_data)
self.Outputs.selected_data.send(selected_data)
self.Outputs.annotated_data.send(create_annotated_table(table, rowsel))
diff --git a/Orange/widgets/data/owtransform.py b/Orange/widgets/data/owtransform.py
index cbe3aa32097..1fbf465b8e0 100644
--- a/Orange/widgets/data/owtransform.py
+++ b/Orange/widgets/data/owtransform.py
@@ -1,14 +1,10 @@
from typing import Optional
-from AnyQt.QtCore import Qt
-
from Orange.data import Table
from Orange.widgets import gui
from Orange.widgets.report.report import describe_data
from Orange.widgets.utils.sql import check_sql_input
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_multiple_summaries, \
- format_summary_details
from Orange.widgets.widget import OWWidget, Input, Output, Msg
@@ -46,9 +42,6 @@ def __init__(self):
self.set_input_label_text()
self.set_template_label_text()
- self.info.set_input_summary(self.info.NoInput)
- self.info.set_output_summary(self.info.NoOutput)
-
def set_input_label_text(self):
text = "No data on input."
if self.data:
@@ -85,18 +78,6 @@ def set_template_data(self, data):
self.template_data = data
def handleNewSignals(self):
- summary, details, kwargs = self.info.NoInput, "", {}
- if self.data or self.template_data:
- n_data = len(self.data) if self.data else 0
- n_template = len(self.template_data) if self.template_data else 0
- summary = f"{self.info.format_number(n_data)}, " \
- f"{self.info.format_number(n_template)}"
- kwargs = {"format": Qt.RichText}
- details = format_multiple_summaries([
- ("Data", self.data),
- ("Template data", self.template_data)
- ])
- self.info.set_input_summary(summary, details, **kwargs)
self.apply()
def apply(self):
@@ -109,9 +90,6 @@ def apply(self):
self.Error.error(ex)
data = transformed_data
- summary = len(data) if data else self.info.NoOutput
- details = format_summary_details(data) if data else ""
- self.info.set_output_summary(summary, details)
self.transformed_info = describe_data(data)
self.Outputs.transformed_data.send(data)
self.set_template_label_text()
diff --git a/Orange/widgets/data/owtranspose.py b/Orange/widgets/data/owtranspose.py
index cb56185a64c..973586d392c 100644
--- a/Orange/widgets/data/owtranspose.py
+++ b/Orange/widgets/data/owtranspose.py
@@ -6,7 +6,6 @@
from Orange.widgets.utils.concurrent import TaskState, ConcurrentWidgetMixin
from Orange.widgets.utils.itemmodels import DomainModel
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.widget import OWWidget, Msg
from Orange.widgets import gui
from Orange.widgets.widget import Input, Output
@@ -102,9 +101,6 @@ def __init__(self):
gui.auto_apply(self.buttonsArea, self, commit=self.apply)
- self.info.set_input_summary(self.info.NoInput)
- self.info.set_output_summary(self.info.NoOutput)
-
self.set_controls()
def _apply_editing(self):
@@ -123,10 +119,6 @@ def set_data(self, data):
if self.feature_model:
self.closeContext()
self.data = data
- if data:
- self.info.set_input_summary(len(data), format_summary_details(data))
- else:
- self.info.set_input_summary(self.info.NoInput)
self.set_controls()
if self.feature_model:
self.openContext(data)
@@ -160,11 +152,6 @@ def on_partial_result(self, _):
def on_done(self, transposed: Optional[Table]):
self.Outputs.data.send(transposed)
- if transposed:
- self.info.set_output_summary(len(transposed),
- format_summary_details(transposed))
- else:
- self.info.set_output_summary(self.info.NoOutput)
def on_exception(self, ex: Exception):
if isinstance(ex, ValueError):
diff --git a/Orange/widgets/data/tests/test_owaggregatecolumns.py b/Orange/widgets/data/tests/test_owaggregatecolumns.py
index a67bfa3dab8..27c53adc784 100644
--- a/Orange/widgets/data/tests/test_owaggregatecolumns.py
+++ b/Orange/widgets/data/tests/test_owaggregatecolumns.py
@@ -13,7 +13,6 @@
)
from Orange.widgets.data.owaggregatecolumns import OWAggregateColumns
from Orange.widgets.tests.base import WidgetTest
-from Orange.widgets.utils.state_summary import format_summary_details
class TestOWAggregateColumn(WidgetTest):
@@ -36,31 +35,21 @@ def setUp(self):
def test_no_input(self):
widget = self.widget
domain = self.data1.domain
- input_sum = widget.info.set_input_summary = Mock()
- output_sum = widget.info.set_output_summary = Mock()
self.send_signal(widget.Inputs.data, self.data1)
self.assertEqual(widget.variables, [])
widget.commit()
output = self.get_output(self.widget.Outputs.data)
self.assertIs(output, self.data1)
- input_sum.assert_called_with(len(self.data1),
- format_summary_details(self.data1))
- output_sum.assert_called_with(len(output),
- format_summary_details(output))
widget.variables = [domain[n] for n in "c1 c2 t2".split()]
widget.commit()
output = self.get_output(self.widget.Outputs.data)
self.assertIsNotNone(output)
- output_sum.assert_called_with(len(output),
- format_summary_details(output))
self.send_signal(widget.Inputs.data, None)
widget.commit()
self.assertIsNone(self.get_output(self.widget.Outputs.data))
- input_sum.assert_called_with(widget.info.NoInput)
- output_sum.assert_called_with(widget.info.NoOutput)
def test_compute_data(self):
domain = self.data1.domain
diff --git a/Orange/widgets/data/tests/test_owcolor.py b/Orange/widgets/data/tests/test_owcolor.py
index f48607e1065..859c2cdd242 100644
--- a/Orange/widgets/data/tests/test_owcolor.py
+++ b/Orange/widgets/data/tests/test_owcolor.py
@@ -10,14 +10,12 @@
from AnyQt.QtCore import Qt, QSize, QRect
from AnyQt.QtGui import QBrush
-from orangewidget.widget import StateInfo
from orangewidget.tests.base import GuiTest
from Orange.data import Table, ContinuousVariable, DiscreteVariable, Domain
from Orange.preprocess.transformation import Identity
from Orange.util import color_to_hex
from Orange.widgets.utils import colorpalettes
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.data import owcolor
from Orange.widgets.data.owcolor import ColorRole
from Orange.widgets.tests.base import WidgetTest
@@ -703,25 +701,6 @@ def test_report(self):
def test_string_variables(self):
self.send_signal(self.widget.Inputs.data, Table("zoo"))
- def test_summary(self):
- """Check if the status bar is updated when data is received"""
- data = self.iris
- input_sum = self.widget.info.set_input_summary = Mock()
- output_sum = self.widget.info.set_output_summary = Mock()
-
- self.send_signal(self.widget.Inputs.data, data)
- input_sum.assert_called_with(len(data), format_summary_details(data))
- output = self.get_output(self.widget.Outputs.data)
- output_sum.assert_called_with(len(output),
- format_summary_details(output))
- input_sum.reset_mock()
- output_sum.reset_mock()
- self.send_signal(self.widget.Inputs.data, None)
- input_sum.assert_called_once()
- self.assertIsInstance(input_sum.call_args[0][0], StateInfo.Empty)
- output_sum.assert_called_once()
- self.assertIsInstance(output_sum.call_args[0][0], StateInfo.Empty)
-
def test_reset(self):
self.send_signal(self.widget.Inputs.data, self.iris)
cont_model = self.widget.cont_model
diff --git a/Orange/widgets/data/tests/test_owconcatenate.py b/Orange/widgets/data/tests/test_owconcatenate.py
index 79db53c4262..25a0fa56089 100644
--- a/Orange/widgets/data/tests/test_owconcatenate.py
+++ b/Orange/widgets/data/tests/test_owconcatenate.py
@@ -5,15 +5,11 @@
import numpy as np
-from orangewidget.widget import StateInfo
-
from Orange.data import (
Table, Domain, ContinuousVariable, DiscreteVariable, StringVariable
)
from Orange.preprocess.transformation import Identity
from Orange.widgets.data.owconcatenate import OWConcatenate
-from Orange.widgets.utils.state_summary import format_summary_details, \
- format_multiple_summaries
from Orange.widgets.tests.base import WidgetTest
@@ -380,49 +376,6 @@ def test_different_number_decimals(self):
x = out_dom.attributes[0]
self.assertEqual(x.number_of_decimals, 4)
- def test_summary(self):
- """Check if the status bar is updated when data is received"""
- info = self.widget.info
- no_input, no_output = "No data on input", "No data on output"
-
- self.send_signal(self.widget.Inputs.primary_data, self.iris)
- data_list = [("Primary data", self.iris), ("", None)]
- summary, details = "150, 0", format_multiple_summaries(data_list)
- self.assertEqual(info._StateInfo__input_summary.brief, summary)
- self.assertEqual(info._StateInfo__input_summary.details, details)
- output = self.get_output(self.widget.Outputs.data)
- summary, details = f"{len(output)}", format_summary_details(output)
- self.assertEqual(info._StateInfo__output_summary.brief, summary)
- self.assertEqual(info._StateInfo__output_summary.details, details)
-
- self.send_signal(self.widget.Inputs.additional_data, self.titanic, 0)
- data_list = [("Primary data", self.iris), ("", self.titanic)]
- summary, details = "150, 2201", format_multiple_summaries(data_list)
- self.assertEqual(info._StateInfo__input_summary.brief, summary)
- self.assertEqual(info._StateInfo__input_summary.details, details)
- output = self.get_output(self.widget.Outputs.data)
- summary, details = f"{len(output)}", format_summary_details(output)
- self.assertEqual(info._StateInfo__output_summary.brief, summary)
- self.assertEqual(info._StateInfo__output_summary.details, details)
-
- self.send_signal(self.widget.Inputs.primary_data, None)
- self.send_signal(self.widget.Inputs.additional_data, self.iris, 1)
- data_list = [("Primary data", None), ("", self.titanic), ("", self.iris)]
- summary, details = "0, 2201, 150", format_multiple_summaries(data_list)
- self.assertEqual(info._StateInfo__input_summary.brief, summary)
- self.assertEqual(info._StateInfo__input_summary.details, details)
- output = self.get_output(self.widget.Outputs.data)
- summary, details = f"{len(output)}", format_summary_details(output)
- self.assertEqual(info._StateInfo__output_summary.brief, summary)
- self.assertEqual(info._StateInfo__output_summary.details, details)
-
- self.send_signal(self.widget.Inputs.additional_data, None, 0)
- self.send_signal(self.widget.Inputs.additional_data, None, 1)
- self.assertIsInstance(info._StateInfo__input_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__input_summary.details, no_input)
- self.assertIsInstance(info._StateInfo__output_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__output_summary.details, no_output)
-
def _create_compute_values(self):
a1, a2, a3, a4, c1 = self.iris.domain.variables
diff --git a/Orange/widgets/data/tests/test_owcontinuize.py b/Orange/widgets/data/tests/test_owcontinuize.py
index 57d3482526e..f717eebfdb5 100644
--- a/Orange/widgets/data/tests/test_owcontinuize.py
+++ b/Orange/widgets/data/tests/test_owcontinuize.py
@@ -1,18 +1,14 @@
# Test methods with long descriptive names can omit docstrings
# pylint: disable=missing-docstring,unsubscriptable-object
import unittest
-from unittest.mock import Mock
import numpy as np
-from orangewidget.widget import StateInfo
-
from Orange.data import Table, DiscreteVariable, ContinuousVariable, Domain
from Orange.preprocess import transformation
from Orange.widgets.data import owcontinuize
from Orange.widgets.data.owcontinuize import OWContinuize, WeightedIndicator
from Orange.widgets.tests.base import WidgetTest
-from Orange.widgets.utils.state_summary import format_summary_details
class TestOWContinuize(WidgetTest):
@@ -43,27 +39,6 @@ def test_empty_data(self):
imp_data = self.get_output(self.widget.Outputs.data)
self.assertIsNone(imp_data)
- def test_summary(self):
- """Check if status bar is updated when data is received"""
- data = Table("iris")
- input_sum = self.widget.info.set_input_summary = Mock()
- output_sum = self.widget.info.set_output_summary = Mock()
-
- self.send_signal(self.widget.Inputs.data, data)
- input_sum.assert_called_with(len(data),
- format_summary_details(data))
- output = self.get_output(self.widget.Outputs.data)
- output_sum.assert_called_with(len(output),
- format_summary_details(output))
-
- input_sum.reset_mock()
- output_sum.reset_mock()
- self.send_signal(self.widget.Inputs.data, None)
- input_sum.assert_called_once()
- self.assertIsInstance(input_sum.call_args[0][0], StateInfo.Empty)
- output_sum.assert_called_once()
- self.assertIsInstance(output_sum.call_args[0][0], StateInfo.Empty)
-
def test_continuous(self):
table = Table("housing")
self.send_signal(self.widget.Inputs.data, table)
diff --git a/Orange/widgets/data/tests/test_owcorrelations.py b/Orange/widgets/data/tests/test_owcorrelations.py
index 062926333c3..6502136868b 100644
--- a/Orange/widgets/data/tests/test_owcorrelations.py
+++ b/Orange/widgets/data/tests/test_owcorrelations.py
@@ -8,8 +8,6 @@
from AnyQt.QtCore import Qt
-from orangewidget.widget import StateInfo
-
from Orange.data import Table, Domain, ContinuousVariable, DiscreteVariable
from Orange.tests import test_filename
from Orange.widgets.data.owcorrelations import (
@@ -20,7 +18,6 @@
from Orange.widgets.tests.utils import simulate
from Orange.widgets.visualize.owscatterplot import OWScatterPlot
from Orange.widgets.widget import AttributeList
-from Orange.widgets.utils.state_summary import format_summary_details
class TestOWCorrelations(WidgetTest):
@@ -303,26 +300,6 @@ def test_send_report(self):
self.send_signal(self.widget.Inputs.data, None)
self.widget.report_button.click()
- def test_summary(self):
- """Check if status bar is updated when data is received"""
- data = Table("iris")
- input_sum = self.widget.info.set_input_summary = Mock()
- output_sum = self.widget.info.set_output_summary = Mock()
-
- self.send_signal(self.widget.Inputs.data, data)
- input_sum.assert_called_with(len(data), format_summary_details(data))
- output = self.get_output(self.widget.Outputs.data)
- output_sum.assert_called_with(len(output),
- format_summary_details(output))
-
- input_sum.reset_mock()
- output_sum.reset_mock()
- self.send_signal(self.widget.Inputs.data, None)
- input_sum.assert_called_once()
- self.assertIsInstance(input_sum.call_args[0][0], StateInfo.Empty)
- output_sum.assert_called_once()
- self.assertIsInstance(output_sum.call_args[0][0], StateInfo.Empty)
-
class TestCorrelationRank(WidgetTest):
@classmethod
diff --git a/Orange/widgets/data/tests/test_owcreateclass.py b/Orange/widgets/data/tests/test_owcreateclass.py
index 2946cba581c..640addd72d2 100644
--- a/Orange/widgets/data/tests/test_owcreateclass.py
+++ b/Orange/widgets/data/tests/test_owcreateclass.py
@@ -5,15 +5,12 @@
import numpy as np
-from orangewidget.widget import StateInfo
-
from Orange.data import Table, StringVariable, DiscreteVariable, Domain
from Orange.widgets.data.owcreateclass import (
OWCreateClass,
map_by_substring, ValueFromStringSubstring, ValueFromDiscreteSubstring,
unique_in_order_mapping)
from Orange.widgets.tests.base import WidgetTest
-from Orange.widgets.utils.state_summary import format_summary_details
class TestHelpers(unittest.TestCase):
@@ -569,37 +566,6 @@ def test_same_class(self):
self.get_output(widget2.Outputs.data, widget=widget2).domain.class_var
)
- def test_summary(self):
- """Check if status bar is updated when data is received"""
- data = self.zoo
- info = self.widget.info
- no_input, no_output = "No data on input", "No data on output"
-
- self.send_signal(self.widget.Inputs.data, data)
- summary, details = f"{len(data)}", format_summary_details(data)
- self.assertEqual(info._StateInfo__input_summary.brief, summary)
- self.assertEqual(info._StateInfo__input_summary.details, details)
- output = self.get_output(self.widget.Outputs.data)
- summary, details = f"{len(output)}", format_summary_details(output)
- self.assertEqual(info._StateInfo__output_summary.brief, summary)
- self.assertEqual(info._StateInfo__output_summary.details, details)
-
- self.send_signal(self.widget.Inputs.data, data)
- self.widget.class_name = ""
- self.widget.apply()
- self.assertIsInstance(info._StateInfo__output_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__output_summary.details, no_output)
- self.widget.class_name = "type"
- self.widget.apply()
- self.assertIsInstance(info._StateInfo__output_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__output_summary.details, no_output)
-
- self.send_signal(self.widget.Inputs.data, None)
- self.assertIsInstance(info._StateInfo__input_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__input_summary.details, no_input)
- self.assertIsInstance(info._StateInfo__output_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__output_summary.details, no_output)
-
if __name__ == "__main__":
unittest.main()
diff --git a/Orange/widgets/data/tests/test_owcreateinstance.py b/Orange/widgets/data/tests/test_owcreateinstance.py
index 7684fc97709..a0fa57d6d11 100644
--- a/Orange/widgets/data/tests/test_owcreateinstance.py
+++ b/Orange/widgets/data/tests/test_owcreateinstance.py
@@ -7,7 +7,6 @@
from AnyQt.QtWidgets import QWidget, QLineEdit, QStyleOptionViewItem, QMenu, \
QPushButton
-from orangewidget.widget import StateInfo
from orangewidget.tests.base import GuiTest
from Orange.data import Table, ContinuousVariable, Domain, DiscreteVariable, \
@@ -16,8 +15,6 @@
DiscreteVariableEditor, ContinuousVariableEditor, StringVariableEditor, \
TimeVariableEditor, VariableDelegate, VariableItemModel, ValueRole
from Orange.widgets.tests.base import WidgetTest, datasets
-from Orange.widgets.utils.state_summary import format_summary_details, \
- format_multiple_summaries
class TestOWCreateInstance(WidgetTest):
@@ -58,45 +55,6 @@ def test_output_append_data(self):
self.assertTupleEqual(output.domain.metas[0].values,
("iris", "created"))
- def test_summary(self):
- info = self.widget.info
- reference = self.data[:1]
- no_input, no_output = "No data on input", "No data on output"
-
- self.assertIsInstance(info._StateInfo__input_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__input_summary.details, no_input)
- self.assertIsInstance(info._StateInfo__output_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__output_summary.details, no_output)
-
- self.send_signal(self.widget.Inputs.data, self.data)
- data_list = [("Data", self.data), ("Reference", None)]
- summary, details = "150, 0", format_multiple_summaries(data_list)
- self.assertEqual(info._StateInfo__input_summary.brief, summary)
- self.assertEqual(info._StateInfo__input_summary.details, details)
-
- output = self.get_output(self.widget.Outputs.data)
- details = format_summary_details(output)
- self.assertEqual(info._StateInfo__output_summary.brief, "151")
- self.assertEqual(info._StateInfo__output_summary.details, details)
-
- self.send_signal(self.widget.Inputs.reference, reference)
- data_list = [("Data", self.data), ("Reference", reference)]
- summary, details = "150, 1", format_multiple_summaries(data_list)
- self.assertEqual(info._StateInfo__input_summary.brief, summary)
- self.assertEqual(info._StateInfo__input_summary.details, details)
-
- self.send_signal(self.widget.Inputs.data, None)
- data_list = [("Data", None), ("Reference", reference)]
- summary, details = "0, 1", format_multiple_summaries(data_list)
- self.assertEqual(info._StateInfo__input_summary.brief, summary)
- self.assertEqual(info._StateInfo__input_summary.details, details)
- self.assertIsInstance(info._StateInfo__output_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__output_summary.details, no_output)
-
- self.send_signal(self.widget.Inputs.reference, None)
- self.assertIsInstance(info._StateInfo__input_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__input_summary.details, no_input)
-
def _get_init_buttons(self, widget=None):
if not widget:
widget = self.widget
diff --git a/Orange/widgets/data/tests/test_owcsvimport.py b/Orange/widgets/data/tests/test_owcsvimport.py
index 03400f9013e..667686d2dfd 100644
--- a/Orange/widgets/data/tests/test_owcsvimport.py
+++ b/Orange/widgets/data/tests/test_owcsvimport.py
@@ -30,7 +30,6 @@
)
from Orange.widgets.utils.pathutils import PathItem, samepath
from Orange.widgets.utils.settings import QSettings_writeArray
-from Orange.widgets.utils.state_summary import format_summary_details
W = TypeVar("W", bound=OWBaseWidget)
@@ -147,25 +146,6 @@ def test_restore_from_local(self):
)
self._check_data_regions(self.get_output("Data", w))
- def test_summary(self):
- """Check if status bar is updated when data is received"""
- dirname = os.path.dirname(__file__)
- path = os.path.join(dirname, "data-regions.tab")
- widget = self.create_widget(
- owcsvimport.OWCSVFileImport,
- stored_settings={
- "_session_items": [
- (path, self.data_regions_options.as_dict())
- ]
- }
- )
- output_sum = widget.info.set_output_summary = mock.Mock()
- widget.commit()
- self.wait_until_finished(widget)
- output = self.get_output("Data", widget)
- output_sum.assert_called_with(len(output),
- format_summary_details(output))
-
data_csv_types_options = owcsvimport.Options(
encoding="ascii", dialect=csv.excel_tab(),
columntypes=[
diff --git a/Orange/widgets/data/tests/test_owdatainfo.py b/Orange/widgets/data/tests/test_owdatainfo.py
index 0173a143773..c188f0abaee 100644
--- a/Orange/widgets/data/tests/test_owdatainfo.py
+++ b/Orange/widgets/data/tests/test_owdatainfo.py
@@ -1,13 +1,8 @@
# Test methods with long descriptive names can omit docstrings
# pylint: disable=missing-docstring,unsubscriptable-object
-from unittest.mock import Mock
-
-from orangewidget.widget import StateInfo
-
from Orange.data import Table
from Orange.widgets.data.owdatainfo import OWDataInfo
from Orange.widgets.tests.base import WidgetTest
-from Orange.widgets.utils.state_summary import format_summary_details
class TestOWDataInfo(WidgetTest):
@@ -30,14 +25,3 @@ def test_data_attributes(self):
data = Table("iris")
data.attributes = {"att 1": 1, "att 2": True, "att 3": 3}
self.send_signal(self.widget.Inputs.data, data)
-
- def test_summary(self):
- """Check if the status bar is updated when data is received"""
- data = Table("iris")
- input_sum = self.widget.info.set_input_summary = Mock()
- self.send_signal(self.widget.Inputs.data, data)
- input_sum.assert_called_with(len(data), format_summary_details(data))
- input_sum.reset_mock()
- self.send_signal(self.widget.Inputs.data, None)
- input_sum.assert_called_once()
- self.assertIsInstance(input_sum.call_args[0][0], StateInfo.Empty)
diff --git a/Orange/widgets/data/tests/test_owdatasampler.py b/Orange/widgets/data/tests/test_owdatasampler.py
index 252e079fa62..c59ba560014 100644
--- a/Orange/widgets/data/tests/test_owdatasampler.py
+++ b/Orange/widgets/data/tests/test_owdatasampler.py
@@ -1,14 +1,10 @@
# Test methods with long descriptive names can omit docstrings
# pylint: disable=missing-docstring,unsubscriptable-object
import unittest
-from unittest.mock import Mock
-
-from orangewidget.widget import StateInfo
from Orange.data import Table
from Orange.widgets.data.owdatasampler import OWDataSampler
from Orange.widgets.tests.base import WidgetTest
-from Orange.widgets.utils.state_summary import format_summary_details
class TestOWDataSampler(WidgetTest):
@@ -122,26 +118,6 @@ def test_shuffling(self):
self.assertTrue((self.iris.ids != sample.ids).any())
self.assertEqual(set(self.iris.ids), set(sample.ids))
- def test_summary(self):
- """Check if status bar is updated when data is received"""
- data = self.iris
- input_sum = self.widget.info.set_input_summary = Mock()
- output_sum = self.widget.info.set_output_summary = Mock()
-
- self.send_signal(self.widget.Inputs.data, data)
- input_sum.assert_called_with(len(data), format_summary_details(data))
- output = self.get_output(self.widget.Outputs.data_sample)
- output_sum.assert_called_with(len(output),
- format_summary_details(output))
-
- input_sum.reset_mock()
- output_sum.reset_mock()
- self.send_signal(self.widget.Inputs.data, None)
- input_sum.assert_called_once()
- self.assertIsInstance(input_sum.call_args[0][0], StateInfo.Empty)
- output_sum.assert_called_once()
- self.assertIsInstance(output_sum.call_args[0][0], StateInfo.Empty)
-
def set_fixed_sample_size(self, sample_size, with_replacement=False):
"""Set fixed sample size and return the number of gui spin.
diff --git a/Orange/widgets/data/tests/test_owdatasets.py b/Orange/widgets/data/tests/test_owdatasets.py
index 45c3d7e3a18..344b3946ad4 100644
--- a/Orange/widgets/data/tests/test_owdatasets.py
+++ b/Orange/widgets/data/tests/test_owdatasets.py
@@ -7,7 +7,6 @@
from Orange.widgets.data.owdatasets import OWDataSets
from Orange.widgets.tests.base import WidgetTest
-from Orange.widgets.utils.state_summary import format_summary_details
class TestOWDataSets(WidgetTest):
@@ -76,24 +75,6 @@ def test_dir_depth(self):
self.wait_until_stop_blocking(w)
self.assertEqual(w.view.model().rowCount(), 2)
- @patch("Orange.widgets.data.owdatasets.list_remote",
- Mock(return_value={('core', 'iris.tab'): {}}))
- @patch("Orange.widgets.data.owdatasets.list_local",
- Mock(return_value={}))
- @patch("Orange.widgets.data.owdatasets.ensure_local",
- Mock(return_value="iris.tab"))
- def test_summary(self):
- """Check if status bar is updated when data is received"""
- widget = self.create_widget(OWDataSets)
- output_sum = widget.info.set_output_summary = Mock()
- self.wait_until_stop_blocking(widget)
- # select the only dataset
- sel_type = QItemSelectionModel.ClearAndSelect | QItemSelectionModel.Rows
- widget.view.selectionModel().select(widget.view.model().index(0, 0), sel_type)
- widget.commit()
- output = self.get_output(widget.Outputs.data, widget)
- output_sum.assert_called_with(len(output),
- format_summary_details(output))
if __name__ == "__main__":
unittest.main()
diff --git a/Orange/widgets/data/tests/test_owdiscretize.py b/Orange/widgets/data/tests/test_owdiscretize.py
index 2d36b0a1e1e..c6ce6766c57 100644
--- a/Orange/widgets/data/tests/test_owdiscretize.py
+++ b/Orange/widgets/data/tests/test_owdiscretize.py
@@ -1,20 +1,16 @@
# Test methods with long descriptive names can omit docstrings
# pylint: disable=missing-docstring,unsubscriptable-object,protected-access
import unittest
-from unittest.mock import Mock
from AnyQt.QtCore import Qt, QPoint
from AnyQt.QtWidgets import QWidget, QApplication, QStyleOptionViewItem
-from orangewidget.widget import StateInfo
-
from Orange.data import Table, DiscreteVariable
from Orange.widgets.data.owdiscretize import OWDiscretize, Default, EqualFreq, \
Remove, Leave, Custom, IncreasingNumbersListValidator, DiscDelegate, MDL, \
EqualWidth, DState, show_tip
from Orange.widgets.tests.base import WidgetTest
from Orange.widgets.tests.base import GuiTest
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.utils.itemmodels import select_row, VariableListModel
@@ -35,26 +31,6 @@ def test_empty_data(self):
widget.unconditional_commit()
self.assertIsNotNone(self.get_output(widget.Outputs.data))
- def test_summary(self):
- """Check if status bar is updated when data is received"""
- input_sum = self.widget.info.set_input_summary = Mock()
- output_sum = self.widget.info.set_output_summary = Mock()
-
- data = Table("iris")
- self.send_signal(self.widget.Inputs.data, data)
- input_sum.assert_called_with(len(data), format_summary_details(data))
- output = self.get_output(self.widget.Outputs.data)
- output_sum.assert_called_with(len(output),
- format_summary_details(output))
-
- input_sum.reset_mock()
- output_sum.reset_mock()
- self.send_signal(self.widget.Inputs.data, None)
- input_sum.assert_called_once()
- self.assertIsInstance(input_sum.call_args[0][0], StateInfo.Empty)
- output_sum.assert_called_once()
- self.assertIsInstance(output_sum.call_args[0][0], StateInfo.Empty)
-
def test_select_method(self):
widget = self.widget
data = Table("iris")[::5]
diff --git a/Orange/widgets/data/tests/test_oweditdomain.py b/Orange/widgets/data/tests/test_oweditdomain.py
index e9a3862894e..5f7f0d99ed0 100644
--- a/Orange/widgets/data/tests/test_oweditdomain.py
+++ b/Orange/widgets/data/tests/test_oweditdomain.py
@@ -15,8 +15,6 @@
QStyleOptionViewItem, QDialog, QMenu
from AnyQt.QtTest import QTest, QSignalSpy
-from orangewidget.widget import StateInfo
-
from Orange.widgets.utils import colorpalettes
from orangewidget.tests.utils import simulate
from orangewidget.utils.itemmodels import PyListModel
@@ -42,7 +40,6 @@
from Orange.widgets.tests.base import WidgetTest, GuiTest
from Orange.widgets.tests.utils import contextMenu
from Orange.tests import test_filename, assert_array_nanequal
-from Orange.widgets.utils.state_summary import format_summary_details
MArray = np.ma.MaskedArray
@@ -340,45 +337,6 @@ def restore(state):
tr = model.data(model.index(4), TransformRole)
self.assertEqual(tr, [AsString(), Rename("Z")])
- def test_summary(self):
- """Check if status bar is updated when data is received"""
- data = Table("iris")
- input_sum = self.widget.info.set_input_summary = Mock()
- output_sum = self.widget.info.set_output_summary = Mock()
-
- self.send_signal(self.widget.Inputs.data, data)
- input_sum.assert_called_with(len(data), format_summary_details(data))
- output = self.get_output(self.widget.Outputs.data)
- output_sum.assert_called_with(len(output),
- format_summary_details(output))
-
- def enter_text(widget, text):
- # type: (QLineEdit, str) -> None
- widget.selectAll()
- QTest.keyClick(widget, Qt.Key_Delete)
- QTest.keyClicks(widget, text)
- QTest.keyClick(widget, Qt.Key_Return)
-
- editor = self.widget.findChild(ContinuousVariableEditor)
- enter_text(editor.name_edit, "sepal height")
- self.widget.commit()
- output = self.get_output(self.widget.Outputs.data)
- output_sum.assert_called_with(len(output),
- format_summary_details(output))
- output_sum.reset_mock()
- enter_text(editor.name_edit, "sepal width")
- self.widget.commit()
- output_sum.assert_called_once()
- self.assertIsInstance(output_sum.call_args[0][0], StateInfo.Empty)
-
- input_sum.reset_mock()
- output_sum.reset_mock()
- self.send_signal(self.widget.Inputs.data, None)
- input_sum.assert_called_once()
- self.assertIsInstance(input_sum.call_args[0][0], StateInfo.Empty)
- output_sum.assert_called_once()
- self.assertIsInstance(output_sum.call_args[0][0], StateInfo.Empty)
-
class TestEditors(GuiTest):
def test_variable_editor(self):
diff --git a/Orange/widgets/data/tests/test_owfeatureconstructor.py b/Orange/widgets/data/tests/test_owfeatureconstructor.py
index 85affd90539..7ec9bd147b3 100644
--- a/Orange/widgets/data/tests/test_owfeatureconstructor.py
+++ b/Orange/widgets/data/tests/test_owfeatureconstructor.py
@@ -6,17 +6,13 @@
import pickle
import copy
-from unittest.mock import Mock
import numpy as np
-from orangewidget.widget import StateInfo
-
from Orange.data import (Table, Domain, StringVariable,
ContinuousVariable, DiscreteVariable, TimeVariable)
from Orange.widgets.tests.base import WidgetTest
from Orange.widgets.utils import vartype
from Orange.widgets.utils.itemmodels import PyListModel
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.data.owfeatureconstructor import (
DiscreteDescriptor, ContinuousDescriptor, StringDescriptor,
construct_variables, OWFeatureConstructor,
@@ -377,26 +373,6 @@ def test_discrete_no_values(self):
self.widget.apply()
self.assertTrue(self.widget.Error.more_values_needed.is_shown())
- def test_summary(self):
- """Check if status bar is updated when data is received"""
- data = Table("iris")
- input_sum = self.widget.info.set_input_summary = Mock()
- output_sum = self.widget.info.set_output_summary = Mock()
-
- self.send_signal(self.widget.Inputs.data, data)
- input_sum.assert_called_with(len(data), format_summary_details(data))
- output = self.get_output(self.widget.Outputs.data)
- output_sum.assert_called_with(len(output),
- format_summary_details(output))
-
- input_sum.reset_mock()
- output_sum.reset_mock()
- self.send_signal(self.widget.Inputs.data, None)
- input_sum.assert_called_once()
- self.assertIsInstance(input_sum.call_args[0][0], StateInfo.Empty)
- output_sum.assert_called_once()
- self.assertIsInstance(output_sum.call_args[0][0], StateInfo.Empty)
-
class TestFeatureEditor(unittest.TestCase):
def test_has_functions(self):
diff --git a/Orange/widgets/data/tests/test_owfeaturestatistics.py b/Orange/widgets/data/tests/test_owfeaturestatistics.py
index 05d3e078a7f..629cf98404d 100644
--- a/Orange/widgets/data/tests/test_owfeaturestatistics.py
+++ b/Orange/widgets/data/tests/test_owfeaturestatistics.py
@@ -5,13 +5,11 @@
from functools import partial
from itertools import chain
from typing import List
-from unittest.mock import Mock
import numpy as np
from AnyQt.QtCore import QItemSelection, QItemSelectionRange, \
QItemSelectionModel, Qt
-from orangewidget.widget import StateInfo
from orangewidget.settings import Context
from Orange.data import Table, Domain, StringVariable, ContinuousVariable, \
@@ -20,7 +18,6 @@
from Orange.widgets.tests.utils import simulate, table_dense_sparse
from Orange.widgets.data.owfeaturestatistics import \
OWFeatureStatistics
-from Orange.widgets.utils.state_summary import format_summary_details
VarDataPair = namedtuple('VarDataPair', ['variable', 'data'])
@@ -524,28 +521,6 @@ def setUp(self):
)
self.select_rows = partial(select_rows, widget=self.widget)
- def test_summary(self):
- """Check if the status bar is updated when data is received"""
- data = self.data
- input_sum = self.widget.info.set_input_summary = Mock()
- output_sum = self.widget.info.set_output_summary = Mock()
-
- self.send_signal(self.widget.Inputs.data, data)
- input_sum.assert_called_with(len(data), format_summary_details(data))
-
- self.select_rows([0, 2])
- self.widget.unconditional_commit()
- output = self.get_output(self.widget.Outputs.reduced_data)
- output_sum.assert_called_with(len(output), format_summary_details(output))
-
- input_sum.reset_mock()
- output_sum.reset_mock()
- self.send_signal(self.widget.Inputs.data, None)
- input_sum.assert_called_once()
- self.assertIsInstance(input_sum.call_args[0][0], StateInfo.Empty)
- output_sum.assert_called_once()
- self.assertIsInstance(output_sum.call_args[0][0], StateInfo.Empty)
-
if __name__ == "__main__":
unittest.main()
diff --git a/Orange/widgets/data/tests/test_owfile.py b/Orange/widgets/data/tests/test_owfile.py
index f413813799d..13793f3737c 100644
--- a/Orange/widgets/data/tests/test_owfile.py
+++ b/Orange/widgets/data/tests/test_owfile.py
@@ -26,7 +26,6 @@
from Orange.tests import named_file
from Orange.widgets.data.owfile import OWFile
from Orange.widgets.utils.filedialogs import dialog_formats, format_filter, RecentPath
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.tests.base import WidgetTest
from Orange.widgets.utils.domaineditor import ComboDelegate, VarTypeDelegate, VarTableModel
@@ -546,14 +545,6 @@ def test_adds_origin(self):
self.assertIn("origin", attrs)
self.assertIn("origin1", attrs["origin"])
- def test_summary(self):
- """Check if the status bar is updated when data is received"""
- output_sum = self.widget.info.set_output_summary = Mock()
- self.open_dataset("iris")
- output = self.get_output(self.widget.Outputs.data)
- output_sum.assert_called_with(len(output),
- format_summary_details(output))
-
@patch("Orange.widgets.widget.OWWidget.workflowEnv",
Mock(return_value={"basedir": getcwd()}))
def test_open_moved_workflow(self):
diff --git a/Orange/widgets/data/tests/test_owimpute.py b/Orange/widgets/data/tests/test_owimpute.py
index ddcd7433be5..7cec4263864 100644
--- a/Orange/widgets/data/tests/test_owimpute.py
+++ b/Orange/widgets/data/tests/test_owimpute.py
@@ -1,20 +1,16 @@
# Test methods with long descriptive names can omit docstrings
# pylint: disable=missing-docstring,pointless-statement,blacklisted-name,unsubscriptable-object
-from unittest.mock import Mock
import numpy as np
from AnyQt.QtCore import Qt, QItemSelection
from AnyQt.QtTest import QTest
-from orangewidget.widget import StateInfo
-
from Orange.data import Table, Domain, ContinuousVariable, TimeVariable
from Orange.preprocess import impute
from Orange.widgets.data.owimpute import OWImpute, AsDefault, Learner, Method
from Orange.widgets.tests.base import WidgetTest
from Orange.widgets.tests.utils import simulate
from Orange.widgets.utils.itemmodels import select_row
-from Orange.widgets.utils.state_summary import format_summary_details
class Foo(Learner):
@@ -214,29 +210,3 @@ def effective_method(var):
widget.value_combo.isEnabledTo(widget))
self.assertEqual(varbg.checkedId(), Method.Default)
self.assertEqual(widget.value_combo.currentIndex(), 1)
-
- def test_summary(self):
- """Check if the status bar is updated when data is received"""
- data = Table("heart_disease")
- input_sum = self.widget.info.set_input_summary = Mock()
- output_sum = self.widget.info.set_output_summary = Mock()
-
- self.send_signal(self.widget.Inputs.data, data)
- input_sum.assert_called_with(len(data), format_summary_details(data))
- output = self.get_output(self.widget.Outputs.data)
- output_sum.assert_called_with(len(output),
- format_summary_details(output))
-
- varbg = self.widget.variable_button_group
- varbg.button(Method.AsValue).click()
- output = self.get_output(self.widget.Outputs.data)
- output_sum.assert_called_with(len(output),
- format_summary_details(output))
-
- input_sum.reset_mock()
- output_sum.reset_mock()
- self.send_signal(self.widget.Inputs.data, None)
- input_sum.assert_called_once()
- self.assertIsInstance(input_sum.call_args[0][0], StateInfo.Empty)
- output_sum.assert_called_once()
- self.assertIsInstance(output_sum.call_args[0][0], StateInfo.Empty)
diff --git a/Orange/widgets/data/tests/test_owmergedata.py b/Orange/widgets/data/tests/test_owmergedata.py
index 2da8f97d31c..02b4ff37c77 100644
--- a/Orange/widgets/data/tests/test_owmergedata.py
+++ b/Orange/widgets/data/tests/test_owmergedata.py
@@ -12,15 +12,11 @@
from AnyQt.QtCore import Qt
-from orangewidget.widget import StateInfo
-
from Orange.data import Table, Domain, DiscreteVariable, StringVariable, \
ContinuousVariable
from Orange.widgets.data.owmergedata import OWMergeData, INSTANCEID, INDEX, \
MergeDataContextHandler
from Orange.widgets.tests.base import WidgetTest
-from Orange.widgets.utils.state_summary import format_multiple_summaries, \
- format_summary_details
from Orange.tests import test_filename
@@ -1024,44 +1020,6 @@ def test_keep_non_duplicate_variables_missing_rows(self):
self.assertListEqual([m.name for m in merged_data.domain.variables],
["A", "B", "C"])
- def test_summary(self):
- """Check if the status bar is updated when data is received"""
- data = self.dataA
- info = self.widget.info
- no_input, no_output = "No data on input", "No data on output"
-
- self.send_signal(self.widget.Inputs.data, data)
- data_list = [("Data", data), ("Extra data", None)]
- summary, details = f"{len(data)}, 0", format_multiple_summaries(data_list)
- self.assertEqual(info._StateInfo__input_summary.brief, summary)
- self.assertEqual(info._StateInfo__input_summary.details, details)
- self.assertIsInstance(info._StateInfo__output_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__output_summary.details, no_output)
-
- self.send_signal(self.widget.Inputs.extra_data, data)
- data_list = [("Data", data), ("Extra data", data)]
- summary = f"{len(data)}, {len(data)}"
- details = format_multiple_summaries(data_list)
- self.assertEqual(info._StateInfo__input_summary.brief, summary)
- self.assertEqual(info._StateInfo__input_summary.details, details)
- output = self.get_output(self.widget.Outputs.data)
- summary, details = f"{len(output)}", format_summary_details(output)
- self.assertEqual(info._StateInfo__output_summary.brief, summary)
- self.assertEqual(info._StateInfo__output_summary.details, details)
-
- self.send_signal(self.widget.Inputs.data, None)
- data_list = [("Data", None), ("Extra data", data)]
- summary, details = f"0, {len(data)}", format_multiple_summaries(data_list)
- self.assertEqual(info._StateInfo__input_summary.brief, summary)
- self.assertEqual(info._StateInfo__input_summary.details, details)
- self.assertIsInstance(info._StateInfo__output_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__output_summary.details, no_output)
-
- self.send_signal(self.widget.Inputs.extra_data, None)
- self.assertIsInstance(info._StateInfo__input_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__input_summary.details, no_input)
- self.assertIsInstance(info._StateInfo__output_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__output_summary.details, no_output)
def test_empty_tables(self):
widget = self.widget
diff --git a/Orange/widgets/data/tests/test_owneighbors.py b/Orange/widgets/data/tests/test_owneighbors.py
index 7debdf81f85..3249c658a82 100644
--- a/Orange/widgets/data/tests/test_owneighbors.py
+++ b/Orange/widgets/data/tests/test_owneighbors.py
@@ -4,13 +4,9 @@
import numpy as np
-from orangewidget.widget import StateInfo
-
from Orange.data import Table, Domain, ContinuousVariable
from Orange.widgets.data.owneighbors import OWNeighbors, METRICS
from Orange.widgets.tests.base import WidgetTest, ParameterMapping
-from Orange.widgets.utils.state_summary import format_summary_details, \
- format_multiple_summaries
class TestOWNeighbors(WidgetTest):
@@ -117,44 +113,6 @@ def test_missing_values(self):
widget.apply_button.button.click()
self.assertIsNotNone(self.get_output("Neighbors"))
- def test_summary(self):
- """Check if status bar is updated when data is received"""
- info = self.widget.info
- data, reference = Table("iris"), Table("iris")[:5]
- no_input, no_output = "No data on input", "No data on output"
-
- self.send_signal(self.widget.Inputs.data, data)
- data_list = [("Data", data), ("Reference", None)]
- summary, details = "150, 0", format_multiple_summaries(data_list)
- self.assertEqual(info._StateInfo__input_summary.brief, summary)
- self.assertEqual(info._StateInfo__input_summary.details, details)
- self.assertIsInstance(info._StateInfo__output_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__output_summary.details, no_output)
-
- self.send_signal(self.widget.Inputs.reference, reference)
- data_list = [("Data", data), ("Reference", reference)]
- summary, details = "150, 5", format_multiple_summaries(data_list)
- self.assertEqual(info._StateInfo__input_summary.brief, summary)
- self.assertEqual(info._StateInfo__input_summary.details, details)
- output = self.get_output(self.widget.Outputs.data)
- summary, details = f"{len(output)}", format_summary_details(output)
- self.assertEqual(info._StateInfo__output_summary.brief, summary)
- self.assertEqual(info._StateInfo__output_summary.details, details)
-
- self.send_signal(self.widget.Inputs.data, None)
- data_list = [("Data", None), ("Reference", reference)]
- summary, details = "0, 5", format_multiple_summaries(data_list)
- self.assertEqual(info._StateInfo__input_summary.brief, summary)
- self.assertEqual(info._StateInfo__input_summary.details, details)
- self.assertIsInstance(info._StateInfo__output_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__output_summary.details, no_output)
-
- self.send_signal(self.widget.Inputs.reference, None)
- self.assertIsInstance(info._StateInfo__input_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__input_summary.details, no_input)
- self.assertIsInstance(info._StateInfo__output_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__output_summary.details, no_output)
-
def test_compute_distances_apply_called(self):
"""Check compute distances and apply are called when receiving signal"""
widget = self.widget
diff --git a/Orange/widgets/data/tests/test_owoutliers.py b/Orange/widgets/data/tests/test_owoutliers.py
index 81e7b090162..2e4e3e14e20 100644
--- a/Orange/widgets/data/tests/test_owoutliers.py
+++ b/Orange/widgets/data/tests/test_owoutliers.py
@@ -4,13 +4,10 @@
import unittest
from unittest.mock import patch, Mock
-from orangewidget.widget import StateInfo
-
from Orange.data import Table
from Orange.classification import LocalOutlierFactorLearner
from Orange.widgets.data.owoutliers import OWOutliers, run
from Orange.widgets.tests.base import WidgetTest, simulate
-from Orange.widgets.utils.state_summary import format_summary_details
class TestRun(unittest.TestCase):
@@ -136,30 +133,6 @@ def test_nans(self):
self.assertIsNotNone(self.get_output(self.widget.Outputs.inliers))
self.assertFalse(self.widget.Error.singular_cov.is_shown())
- def test_in_out_summary(self):
- info = self.widget.info
- self.assertIsInstance(info._StateInfo__input_summary, StateInfo.Empty)
- self.assertIsInstance(info._StateInfo__output_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__input_summary.details, "No data on input")
- self.assertEqual(info._StateInfo__output_summary.details, "No data on output")
-
- self.send_signal(self.widget.Inputs.data, self.iris)
- self.wait_until_finished()
- self.assertEqual(info._StateInfo__input_summary.brief, "150")
- self.assertIn(info._StateInfo__output_summary.brief, ["135", "136"])
- self.assertEqual(info._StateInfo__input_summary.details,
- format_summary_details(self.iris))
- output = self.get_output(self.widget.Outputs.inliers)
- self.assertEqual(info._StateInfo__output_summary.details,
- format_summary_details(output))
-
- self.send_signal(self.widget.Inputs.data, None)
- self.wait_until_finished()
- self.assertIsInstance(info._StateInfo__input_summary, StateInfo.Empty)
- self.assertIsInstance(info._StateInfo__output_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__input_summary.details, "No data on input")
- self.assertEqual(info._StateInfo__output_summary.details, "No data on output")
-
@patch("Orange.widgets.data.owoutliers.OWOutliers.MAX_FEATURES", 3)
@patch("Orange.widgets.data.owoutliers.OWOutliers.commit", Mock())
def test_covariance_enabled(self):
diff --git a/Orange/widgets/data/tests/test_owpaintdata.py b/Orange/widgets/data/tests/test_owpaintdata.py
index ddba2321e97..a8fda41d151 100644
--- a/Orange/widgets/data/tests/test_owpaintdata.py
+++ b/Orange/widgets/data/tests/test_owpaintdata.py
@@ -7,13 +7,10 @@
from AnyQt.QtCore import QRectF, QPointF, QEvent, Qt
from AnyQt.QtGui import QMouseEvent
-from orangewidget.widget import StateInfo
-
from Orange.data import Table, DiscreteVariable, ContinuousVariable, Domain
from Orange.widgets.data import owpaintdata
from Orange.widgets.data.owpaintdata import OWPaintData
from Orange.widgets.tests.base import WidgetTest, datasets
-from Orange.widgets.utils.state_summary import format_summary_details
class TestOWPaintData(WidgetTest):
@@ -122,41 +119,3 @@ def test_reset_to_input(self):
self.widget.reset_to_input()
output = self.get_output(self.widget.Outputs.data)
self.assertEqual(len(output), len(data))
-
- def test_summary(self):
- """Check if status bar is updated when data is received"""
- data, info = Table("iris"), self.widget.info
- no_input, no_output = "No data on input", "No data on output"
-
- self.widget.set_current_tool(self.widget.TOOLS[1][2])
- tool = self.widget.current_tool
- event = QMouseEvent(QEvent.MouseButtonPress, QPointF(0.17, 0.17),
- Qt.LeftButton, Qt.LeftButton, Qt.NoModifier)
- tool.mousePressEvent(event)
- self.assertIsInstance(info._StateInfo__input_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__input_summary.details, no_input)
- output = self.get_output(self.widget.Outputs.data)
- summary, details = f"{len(output)}", format_summary_details(output)
- self.assertEqual(info._StateInfo__output_summary.brief, summary)
- self.assertEqual(info._StateInfo__output_summary.details, details)
-
- self.send_signal(self.widget.Inputs.data, data)
- summary, details = f"{len(data)}", format_summary_details(data)
- self.assertEqual(info._StateInfo__input_summary.brief, summary)
- self.assertEqual(info._StateInfo__input_summary.details, details)
- output = self.get_output(self.widget.Outputs.data)
- summary, details = f"{len(output)}", format_summary_details(output)
- self.assertEqual(info._StateInfo__output_summary.brief, summary)
- self.assertEqual(info._StateInfo__output_summary.details, details)
-
- self.send_signal(self.widget.Inputs.data, None)
- self.assertIsInstance(info._StateInfo__input_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__input_summary.details, no_input)
- output = self.get_output(self.widget.Outputs.data)
- summary, details = f"{len(output)}", format_summary_details(output)
- self.assertEqual(info._StateInfo__output_summary.brief, summary)
- self.assertEqual(info._StateInfo__output_summary.details, details)
-
- self.widget.set_current_tool(self.widget.TOOLS[5][2])
- self.assertIsInstance(info._StateInfo__output_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__output_summary.details, no_output)
diff --git a/Orange/widgets/data/tests/test_owpivot.py b/Orange/widgets/data/tests/test_owpivot.py
index fa7d8a4625d..f817f21351f 100644
--- a/Orange/widgets/data/tests/test_owpivot.py
+++ b/Orange/widgets/data/tests/test_owpivot.py
@@ -1,7 +1,7 @@
# Test methods with long descriptive names can omit docstrings
# pylint: disable=missing-docstring,unsubscriptable-object
import unittest
-from unittest.mock import patch, Mock
+from unittest.mock import patch
from pickle import loads, dumps
import numpy as np
@@ -9,8 +9,6 @@
from AnyQt.QtCore import Qt, QPoint
from AnyQt.QtTest import QTest
-from orangewidget.widget import StateInfo
-
from Orange.data import (Table, Domain, ContinuousVariable as Cv,
StringVariable as sv, DiscreteVariable as Dv,
TimeVariable as Tv)
@@ -18,8 +16,6 @@
AggregationFunctionsEnum)
from Orange.widgets.tests.base import WidgetTest
from Orange.widgets.tests.utils import simulate
-from Orange.widgets.utils.state_summary import format_summary_details, \
- format_multiple_summaries
class TestOWPivot(WidgetTest):
@@ -245,39 +241,6 @@ def test_send_report(self):
self.send_signal(self.widget.Inputs.data, None)
self.widget.report_button.click()
- def test_summary(self):
- """Check if the status bar is updated when data is received"""
- data = self.iris
- input_sum = self.widget.info.set_input_summary = Mock()
- output_sum = self.widget.info.set_output_summary = Mock()
-
- self.send_signal(self.widget.Inputs.data, data)
- input_sum.assert_called_with(len(data), format_summary_details(data))
- output = self.get_output(self.widget.Outputs.filtered_data)
- self.assertIsNone(output)
- simulate.combobox_activate_item(self.widget.controls.row_feature,
- self.iris.domain.attributes[0].name)
- simulate.combobox_activate_item(self.widget.controls.col_feature,
- self.iris.domain.class_var.name)
- self.widget.table_view.set_selection(set([(11, 0), (11, 1), (12, 0)]))
- self.widget.table_view.selection_changed.emit()
- filtered = self.get_output(self.widget.Outputs.filtered_data)
- pivot = self.get_output(self.widget.Outputs.pivot_table)
- grouped = self.get_output(self.widget.Outputs.grouped_data)
- output_sum.assert_called_with(
- f"{len(pivot)}, {len(filtered)}, {len(grouped)}",
- format_multiple_summaries([("Pivot table", pivot),
- ("Filtered data", filtered),
- ("Grouped data", grouped)]),
- format=1)
- input_sum.reset_mock()
- output_sum.reset_mock()
- self.send_signal(self.widget.Inputs.data, None)
- input_sum.assert_called_once()
- self.assertIsInstance(input_sum.call_args[0][0], StateInfo.Empty)
- output_sum.assert_called_once()
- self.assertIsInstance(output_sum.call_args[0][0], StateInfo.Empty)
-
def test_renaming_warning(self):
data = Table('iris')
cls_var = data.domain.class_var.copy(name='Aggregate')
diff --git a/Orange/widgets/data/tests/test_owpreprocess.py b/Orange/widgets/data/tests/test_owpreprocess.py
index a8e404a424a..cfdf1456c40 100644
--- a/Orange/widgets/data/tests/test_owpreprocess.py
+++ b/Orange/widgets/data/tests/test_owpreprocess.py
@@ -1,10 +1,7 @@
# Test methods with long descriptive names can omit docstrings
# pylint: disable=missing-docstring,unsubscriptable-object
-from unittest.mock import Mock
import numpy as np
-from orangewidget.widget import StateInfo
-
from Orange.data import Table
from Orange.preprocess import (
Randomize, Scale, Discretize, Continuize, Impute, ProjectPCA, \
@@ -14,7 +11,6 @@
from Orange.widgets.data import owpreprocess
from Orange.widgets.data.owpreprocess import OWPreprocess, \
UnivariateFeatureSelect, Scale as ScaleEditor
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.tests.base import WidgetTest, datasets
@@ -142,26 +138,6 @@ def test_data_column_nans(self):
self.widget.set_model(model)
self.send_signal(self.widget.Inputs.data, table)
- def test_summary(self):
- """Check if status bar is updated when data is received"""
- data = Table("iris")
- input_sum = self.widget.info.set_input_summary = Mock()
- output_sum = self.widget.info.set_output_summary = Mock()
-
- self.send_signal(self.widget.Inputs.data, data)
- input_sum.assert_called_with(len(data), format_summary_details(data))
- output = self.get_output(self.widget.Outputs.preprocessed_data)
- output_sum.assert_called_with(len(output),
- format_summary_details(output))
-
- input_sum.reset_mock()
- output_sum.reset_mock()
- self.send_signal(self.widget.Inputs.data, None)
- input_sum.assert_called_once()
- self.assertIsInstance(input_sum.call_args[0][0], StateInfo.Empty)
- output_sum.assert_called_once()
- self.assertIsInstance(output_sum.call_args[0][0], StateInfo.Empty)
-
# Test for editors
class TestDiscretizeEditor(WidgetTest):
diff --git a/Orange/widgets/data/tests/test_owpurgedomain.py b/Orange/widgets/data/tests/test_owpurgedomain.py
index 37ad2b6e141..8066d23d6b4 100644
--- a/Orange/widgets/data/tests/test_owpurgedomain.py
+++ b/Orange/widgets/data/tests/test_owpurgedomain.py
@@ -1,13 +1,9 @@
# pylint: disable=unsubscriptable-object
import unittest
-from unittest.mock import Mock
-
-from orangewidget.widget import StateInfo
from Orange.data import Table
from Orange.widgets.data.owpurgedomain import OWPurgeDomain
from Orange.widgets.tests.base import WidgetTest
-from Orange.widgets.utils.state_summary import format_summary_details
class TestOWPurgeDomain(WidgetTest):
@@ -15,25 +11,6 @@ def setUp(self):
self.widget = self.create_widget(OWPurgeDomain)
self.iris = Table("iris")
- def test_summary(self):
- """Check if the status bar is updated when data is received"""
- data = self.iris
- input_sum = self.widget.info.set_input_summary = Mock()
- output_sum = self.widget.info.set_output_summary = Mock()
-
- self.send_signal(self.widget.Inputs.data, data)
- input_sum.assert_called_with(len(data), format_summary_details(data))
- output = self.get_output(self.widget.Outputs.data)
- output_sum.assert_called_with(len(output),
- format_summary_details(output))
- input_sum.reset_mock()
- output_sum.reset_mock()
- self.send_signal(self.widget.Inputs.data, None)
- input_sum.assert_called_once()
- self.assertIsInstance(input_sum.call_args[0][0], StateInfo.Empty)
- output_sum.assert_called_once()
- self.assertIsInstance(output_sum.call_args[0][0], StateInfo.Empty)
-
def test_minimum_size(self):
pass
diff --git a/Orange/widgets/data/tests/test_owrandomize.py b/Orange/widgets/data/tests/test_owrandomize.py
index aacfbb12c98..ab594846cba 100644
--- a/Orange/widgets/data/tests/test_owrandomize.py
+++ b/Orange/widgets/data/tests/test_owrandomize.py
@@ -1,15 +1,12 @@
# Test methods with long descriptive names can omit docstrings
# pylint: disable=missing-docstring,unsubscriptable-object
-from unittest.mock import patch, Mock
+from unittest.mock import patch
import numpy as np
-from orangewidget.widget import StateInfo
-
from Orange.data import Table
from Orange.widgets.data.owrandomize import OWRandomize
from Orange.widgets.tests.base import WidgetTest
-from Orange.widgets.utils.state_summary import format_summary_details
class TestOWRandomize(WidgetTest):
@@ -77,26 +74,6 @@ def test_replicable_shuffling(self):
np.testing.assert_array_equal(output.Y, output2.Y)
np.testing.assert_array_equal(output.metas, output2.metas)
- def test_summary(self):
- """"Check if status bar displays correct input/output summary"""
- output_sum = self.widget.info.set_output_summary = Mock()
- input_sum = self.widget.info.set_input_summary = Mock()
-
- data = self.zoo
- self.send_signal(self.widget.Inputs.data, data)
- input_sum.assert_called_with(len(data),
- format_summary_details(data))
- output = self.get_output(self.widget.Outputs.data)
- output_sum.assert_called_with(len(output),
- format_summary_details(output))
- input_sum.reset_mock()
- output_sum.reset_mock()
- self.send_signal(self.widget.Inputs.data, None)
- input_sum.assert_called_once()
- self.assertIsInstance(input_sum.call_args[0][0], StateInfo.Empty)
- output_sum.assert_called_once()
- self.assertIsInstance(output_sum.call_args[0][0], StateInfo.Empty)
-
def test_unconditional_commit_on_new_signal(self):
with patch.object(self.widget, 'unconditional_apply') as apply:
self.widget.auto_apply = False
diff --git a/Orange/widgets/data/tests/test_owrank.py b/Orange/widgets/data/tests/test_owrank.py
index d2c5522ac82..c015f313dd3 100644
--- a/Orange/widgets/data/tests/test_owrank.py
+++ b/Orange/widgets/data/tests/test_owrank.py
@@ -2,7 +2,7 @@
import time
import warnings
import unittest
-from unittest.mock import patch, Mock
+from unittest.mock import patch
import numpy as np
from sklearn.exceptions import ConvergenceWarning
@@ -10,7 +10,6 @@
from AnyQt.QtCore import Qt, QItemSelection
from AnyQt.QtWidgets import QCheckBox
-from orangewidget.widget import StateInfo
from orangewidget.settings import Context, IncompatibleContext
from Orange.data import Table, Domain, ContinuousVariable, DiscreteVariable
@@ -22,7 +21,6 @@
from Orange.widgets.data.owrank import OWRank, ProblemType, CLS_SCORES, REG_SCORES
from Orange.widgets.tests.base import WidgetTest, datasets
from Orange.widgets.widget import AttributeList
-from Orange.widgets.utils.state_summary import format_summary_details
class SlowScorer(Scorer):
@@ -472,28 +470,6 @@ def test_selected_rows(self):
self.assertEqual(len(output), len(self.iris))
- def test_summary(self):
- """Check if the status bar is updated when data is received"""
- data = self.iris
- input_sum = self.widget.info.set_input_summary = Mock()
- output_sum = self.widget.info.set_output_summary = Mock()
-
- self.send_signal(self.widget.Inputs.data, data)
- self.wait_until_finished()
- input_sum.assert_called_with(len(data), format_summary_details(data))
- output = self.get_output(self.widget.Outputs.reduced_data)
- output_sum.assert_called_with(len(output),
- format_summary_details(output))
-
- input_sum.reset_mock()
- output_sum.reset_mock()
- self.send_signal(self.widget.Inputs.data, None)
- self.wait_until_finished()
- input_sum.assert_called_once()
- self.assertIsInstance(input_sum.call_args[0][0], StateInfo.Empty)
- output_sum.assert_called_once()
- self.assertIsInstance(output_sum.call_args[0][0], StateInfo.Empty)
-
def test_concurrent_cancel(self):
"""
Send one signal after another. It test if the first process get
diff --git a/Orange/widgets/data/tests/test_owsave.py b/Orange/widgets/data/tests/test_owsave.py
index ec7da432c50..2f17a3d186a 100644
--- a/Orange/widgets/data/tests/test_owsave.py
+++ b/Orange/widgets/data/tests/test_owsave.py
@@ -7,15 +7,12 @@
import scipy.sparse as sp
from AnyQt.QtWidgets import QFileDialog
-from orangewidget.widget import StateInfo
-
from Orange.data import Table
from Orange.data.io import TabReader, PickleReader, ExcelReader, FileFormat
from Orange.tests import named_file
from Orange.widgets.data.owsave import OWSave, OWSaveBase
from Orange.widgets.utils.save.tests.test_owsavebase import \
SaveWidgetsTestBaseMixin
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.tests.base import WidgetTest, open_widget_classes
@@ -53,32 +50,22 @@ class TestOWSave(OWSaveTestBase):
def test_dataset(self):
widget = self.widget
widget.auto_save = True
- insum = widget.info.set_input_summary = Mock()
savefile = widget.save_file = Mock()
datasig = widget.Inputs.data
self.send_signal(datasig, self.iris)
- insum.assert_called_with(len(self.iris), format_summary_details(self.iris))
- insum.reset_mock()
savefile.reset_mock()
widget.filename = "foo.tab"
widget.writer = TabReader
widget.auto_save = False
self.send_signal(datasig, self.iris)
- insum.assert_called_with(len(self.iris), format_summary_details(self.iris))
savefile.assert_not_called()
widget.auto_save = True
self.send_signal(datasig, self.iris)
- insum.assert_called_with(len(self.iris), format_summary_details(self.iris))
savefile.assert_called()
- insum.reset_mock()
- self.send_signal(datasig, None)
- insum.assert_called_once()
- self.assertIsInstance(insum.call_args[0][0], StateInfo.Empty)
-
def test_initial_start_dir(self):
widget = self.widget
self.assertEqual(widget.initial_start_dir(),
diff --git a/Orange/widgets/data/tests/test_owselectbydataindex.py b/Orange/widgets/data/tests/test_owselectbydataindex.py
index e2a5bb323be..52bc180eb6a 100644
--- a/Orange/widgets/data/tests/test_owselectbydataindex.py
+++ b/Orange/widgets/data/tests/test_owselectbydataindex.py
@@ -1,13 +1,9 @@
# pylint: disable=protected-access
-from orangewidget.widget import StateInfo
-
from Orange.data import Table, Domain
from Orange.widgets.data.owselectbydataindex import OWSelectByDataIndex
from Orange.widgets.tests.base import WidgetTest
from Orange.widgets.utils.annotated_data import ANNOTATED_DATA_FEATURE_NAME
-from Orange.widgets.utils.state_summary import format_summary_details, \
- format_multiple_summaries
class TestOWSelectSubset(WidgetTest):
@@ -49,42 +45,3 @@ def test_subset_nosubset(self):
self.assertTrue(self.widget.Warning.instances_not_matching.is_shown())
self.assertEqual([], list(matching))
self.assertEqual(list(data), list(non_matching))
-
- def test_summary(self):
- """Check if the status bar is updated when data is received"""
- data = Table("iris")
- info = self.widget.info
- no_input, no_output = "No data on input", "No data on output"
-
- self.send_signal(self.widget.Inputs.data, data)
- data_list = [("Data", data), ("Data subset", None)]
- summary, details = f"{len(data)}, 0", format_multiple_summaries(data_list)
- self.assertEqual(info._StateInfo__input_summary.brief, summary)
- self.assertEqual(info._StateInfo__input_summary.details, details)
- self.assertEqual(info._StateInfo__output_summary.brief, "0")
-
- self.send_signal(self.widget.Inputs.data_subset, data)
- data_list = [("Data", data), ("Data subset", data)]
- summary = f"{len(data)}, {len(data)}"
- details = format_multiple_summaries(data_list)
- self.assertEqual(info._StateInfo__input_summary.brief, summary)
- self.assertEqual(info._StateInfo__input_summary.details, details)
- output = self.get_output(self.widget.Outputs.matching_data)
- summary, details = f"{len(output)}", format_summary_details(output)
- self.assertEqual(info._StateInfo__output_summary.brief, summary)
- self.assertEqual(info._StateInfo__output_summary.details, details)
-
- self.send_signal(self.widget.Inputs.data, None)
- data_list = [("Data", None), ("Data subset", data)]
- summary, details = f"0, {len(data)}", format_multiple_summaries(
- data_list)
- self.assertEqual(info._StateInfo__input_summary.brief, summary)
- self.assertEqual(info._StateInfo__input_summary.details, details)
- self.assertIsInstance(info._StateInfo__output_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__output_summary.details, no_output)
-
- self.send_signal(self.widget.Inputs.data_subset, None)
- self.assertIsInstance(info._StateInfo__input_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__input_summary.details, no_input)
- self.assertIsInstance(info._StateInfo__output_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__output_summary.details, no_output)
diff --git a/Orange/widgets/data/tests/test_owselectcolumns.py b/Orange/widgets/data/tests/test_owselectcolumns.py
index e0c473f511e..174ca9938ab 100644
--- a/Orange/widgets/data/tests/test_owselectcolumns.py
+++ b/Orange/widgets/data/tests/test_owselectcolumns.py
@@ -7,12 +7,10 @@
from AnyQt.QtCore import QMimeData, QPoint, Qt
from AnyQt.QtGui import QDragEnterEvent
-from orangewidget.widget import StateInfo
from Orange.data import Table, ContinuousVariable, DiscreteVariable, Domain
from Orange.widgets.settings import ContextSetting
from Orange.widgets.utils import vartype
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.tests.base import WidgetTest
from Orange.widgets.data.owselectcolumns \
import OWSelectAttributes, VariablesListItemModel, \
@@ -379,26 +377,6 @@ def test_move_rows(self):
data.domain.attributes
)
- def test_summary(self):
- """Check if status bar is updated when data is received"""
- input_sum = self.widget.info.set_input_summary = Mock()
- output_sum = self.widget.info.set_output_summary = Mock()
-
- data = Table("iris")
- self.send_signal(self.widget.Inputs.data, data)
- input_sum.assert_called_with(len(data), format_summary_details(data))
- output = self.get_output(self.widget.Outputs.data)
- output_sum.assert_called_with(len(output),
- format_summary_details(output))
-
- input_sum.reset_mock()
- output_sum.reset_mock()
- self.send_signal(self.widget.Inputs.data, None)
- input_sum.assert_called_once()
- self.assertIsInstance(input_sum.call_args[0][0], StateInfo.Empty)
- output_sum.assert_called_once()
- self.assertIsInstance(output_sum.call_args[0][0], StateInfo.Empty)
-
def test_domain_new_feature(self):
""" Test scenario when new attribute is added at position 0 """
data = Table("iris")
diff --git a/Orange/widgets/data/tests/test_owselectrows.py b/Orange/widgets/data/tests/test_owselectrows.py
index 955967bcbe1..39331071ca0 100644
--- a/Orange/widgets/data/tests/test_owselectrows.py
+++ b/Orange/widgets/data/tests/test_owselectrows.py
@@ -1,14 +1,13 @@
# Test methods with long descriptive names can omit docstrings
# pylint: disable=missing-docstring,unsubscriptable-object
import time
-from unittest.mock import Mock, patch
+from unittest.mock import patch
import numpy as np
from AnyQt.QtCore import QLocale, Qt, QDate
from AnyQt.QtTest import QTest
from AnyQt.QtWidgets import QLineEdit, QComboBox
-from orangewidget.widget import StateInfo
from orangewidget.settings import VERSION_KEY
from Orange.data import (
@@ -23,7 +22,6 @@
from Orange.data.filter import FilterContinuous, FilterString
from Orange.widgets.tests.utils import simulate, override_locale
from Orange.widgets.utils.annotated_data import ANNOTATED_DATA_FEATURE_NAME
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.tests import test_filename
CFValues = {
@@ -396,30 +394,6 @@ def test_is_defined_on_continuous_variable(self):
# Test saving of settings
self.widget.settingsHandler.pack_data(self.widget)
- def test_summary(self):
- """Check if status bar displays correct input/output summary"""
- input_sum = self.widget.info.set_input_summary = Mock()
- output_sum = self.widget.info.set_output_summary = Mock()
-
- data = Table("iris")
- self.send_signal(self.widget.Inputs.data, data)
- input_sum.assert_called_with(len(data), format_summary_details(data))
- output = self.get_output("Matching Data")
- output_sum.assert_called_with(len(output),
- format_summary_details(output))
-
- self.enterFilter(data.domain["iris"], "is", "Iris-setosa")
- output = self.get_output("Matching Data")
- output_sum.assert_called_with(len(output),
- format_summary_details(output))
- input_sum.reset_mock()
- output_sum.reset_mock()
- self.send_signal(self.widget.Inputs.data, None)
- input_sum.assert_called_once()
- self.assertIsInstance(input_sum.call_args[0][0], StateInfo.Empty)
- output_sum.assert_called_once()
- self.assertIsInstance(output_sum.call_args[0][0], StateInfo.Empty)
-
def test_output_filter(self):
"""
None on output when there is no data.
diff --git a/Orange/widgets/data/tests/test_owtable.py b/Orange/widgets/data/tests/test_owtable.py
index c661a39aea7..a9db551481e 100644
--- a/Orange/widgets/data/tests/test_owtable.py
+++ b/Orange/widgets/data/tests/test_owtable.py
@@ -108,7 +108,7 @@ def test_sorting(self):
output = self.get_output(self.widget.Outputs.selected_data)
output, _ = output.get_column_view(0)
output_sorted = output.tolist()
-
+
# the two outputs should not be the same.
self.assertTrue(output_original != output_sorted)
@@ -131,46 +131,21 @@ def test_summary(self):
summary, details = f"{len(data)}", format_summary_details(data)
self.assertEqual(info._StateInfo__input_summary.brief, summary)
self.assertEqual(info._StateInfo__input_summary.details, details)
- self.assertEqual(info._StateInfo__output_summary.brief, summary)
- self.assertEqual(info._StateInfo__output_summary.details, details)
- self.widget.tabs.currentWidget().selectAll()
- output = self.get_output(self.widget.Outputs.selected_data)
- summary, details = f"{len(output)}", format_summary_details(output)
- self.assertEqual(info._StateInfo__output_summary.brief, summary)
- self.assertEqual(info._StateInfo__output_summary.details, details)
data = Table("iris")
self.send_signal(self.widget.Inputs.data, data, 2)
summary, details = f"{len(data)}", format_summary_details(data)
self.assertEqual(info._StateInfo__input_summary.brief, summary)
self.assertEqual(info._StateInfo__input_summary.details, details)
- self.assertEqual(info._StateInfo__output_summary.brief, summary)
- self.assertEqual(info._StateInfo__output_summary.details, details)
- self._select_data()
- output = self.get_output(self.widget.Outputs.selected_data)
- summary, details = f"{len(output)}", format_summary_details(output)
- self.assertEqual(info._StateInfo__output_summary.brief, summary)
- self.assertEqual(info._StateInfo__output_summary.details, details)
- self.widget.tabs.setCurrentWidget(self.widget._inputs[1].view)
- output = self.get_output(self.widget.Outputs.selected_data)
- summary, details = f"{len(output)}", format_summary_details(output)
- self.assertEqual(info._StateInfo__output_summary.brief, summary)
- self.assertEqual(info._StateInfo__output_summary.details, details)
self.send_signal(self.widget.Inputs.data, None, 1)
summary, details = f"{len(data)}", format_summary_details(data)
self.assertEqual(info._StateInfo__input_summary.brief, summary)
self.assertEqual(info._StateInfo__input_summary.details, details)
- output = self.get_output(self.widget.Outputs.selected_data)
- summary, details = f"{len(output)}", format_summary_details(output)
- self.assertEqual(info._StateInfo__output_summary.brief, summary)
- self.assertEqual(info._StateInfo__output_summary.details, details)
self.send_signal(self.widget.Inputs.data, None, 2)
self.assertIsInstance(info._StateInfo__input_summary, StateInfo.Empty)
self.assertEqual(info._StateInfo__input_summary.details, no_input)
- self.assertIsInstance(info._StateInfo__output_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__output_summary.details, no_output)
def test_info(self):
info_text = self.widget.info_text
diff --git a/Orange/widgets/data/tests/test_owtransform.py b/Orange/widgets/data/tests/test_owtransform.py
index 096e741c229..fc9fdf37d10 100644
--- a/Orange/widgets/data/tests/test_owtransform.py
+++ b/Orange/widgets/data/tests/test_owtransform.py
@@ -4,15 +4,11 @@
from numpy import testing as npt
-from orangewidget.widget import StateInfo
-
from Orange.data import Table
from Orange.preprocess import Discretize
from Orange.widgets.data.owtransform import OWTransform
from Orange.widgets.tests.base import WidgetTest
from Orange.widgets.unsupervised.owpca import OWPCA
-from Orange.widgets.utils.state_summary import format_summary_details, \
- format_multiple_summaries
class TestOWTransform(WidgetTest):
@@ -23,8 +19,6 @@ def setUp(self):
def test_output(self):
# send data and template data
- info = self.widget.info
- no_input, no_output = "No data on input", "No data on output"
self.send_signal(self.widget.Inputs.data, self.data[::15])
self.send_signal(self.widget.Inputs.template_data, self.disc_data)
output = self.get_output(self.widget.Outputs.transformed_data)
@@ -35,13 +29,6 @@ def test_output(self):
self.widget.template_label.text())
self.assertEqual("Output data includes 4 features.",
self.widget.output_label.text())
- data_list = [("Data", self.data[::15]), ("Template data", self.disc_data)]
- summary, details = "10, 150", format_multiple_summaries(data_list)
- self.assertEqual(info._StateInfo__input_summary.brief, summary)
- self.assertEqual(info._StateInfo__input_summary.details, details)
- summary, details = "10", format_summary_details(output)
- self.assertEqual(info._StateInfo__output_summary.brief, summary)
- self.assertEqual(info._StateInfo__output_summary.details, details)
# remove template data
self.send_signal(self.widget.Inputs.template_data, None)
@@ -52,12 +39,6 @@ def test_output(self):
self.assertEqual("No template data on input.",
self.widget.template_label.text())
self.assertEqual("", self.widget.output_label.text())
- data_list = [("Data", self.data[::15]), ("Template data", None)]
- summary, details = "10, 0", format_multiple_summaries(data_list)
- self.assertEqual(info._StateInfo__input_summary.brief, summary)
- self.assertEqual(info._StateInfo__input_summary.details, details)
- self.assertIsInstance(info._StateInfo__output_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__output_summary.details, no_output)
# send template data
self.send_signal(self.widget.Inputs.template_data, self.disc_data)
@@ -78,12 +59,6 @@ def test_output(self):
self.assertEqual("Template data includes 4 features.",
self.widget.template_label.text())
self.assertEqual("", self.widget.output_label.text())
- data_list = [("Data", None), ("Template data", self.disc_data)]
- summary, details = "0, 150", format_multiple_summaries(data_list)
- self.assertEqual(info._StateInfo__input_summary.brief, summary)
- self.assertEqual(info._StateInfo__input_summary.details, details)
- self.assertIsInstance(info._StateInfo__output_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__output_summary.details, no_output)
# remove template data
self.send_signal(self.widget.Inputs.template_data, None)
@@ -91,10 +66,6 @@ def test_output(self):
self.assertEqual("No template data on input.",
self.widget.template_label.text())
self.assertEqual("", self.widget.output_label.text())
- self.assertIsInstance(info._StateInfo__input_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__input_summary.details, no_input)
- self.assertIsInstance(info._StateInfo__output_summary, StateInfo.Empty)
- self.assertEqual(info._StateInfo__output_summary.details, no_output)
def assertTableEqual(self, table1, table2):
self.assertIs(table1.domain, table2.domain)
diff --git a/Orange/widgets/data/tests/test_owtranspose.py b/Orange/widgets/data/tests/test_owtranspose.py
index dd5fa7d6116..1d144a9f0ef 100644
--- a/Orange/widgets/data/tests/test_owtranspose.py
+++ b/Orange/widgets/data/tests/test_owtranspose.py
@@ -6,13 +6,10 @@
import numpy as np
-from orangewidget.widget import StateInfo
-
from Orange.data import Table
from Orange.widgets.data.owtranspose import OWTranspose, run
from Orange.widgets.tests.base import WidgetTest
from Orange.widgets.tests.utils import simulate
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.tests import test_filename
@@ -219,28 +216,6 @@ def test_unconditional_commit_on_new_signal(self):
self.send_signal(self.widget.Inputs.data, self.zoo)
apply.assert_called()
- def test_summary(self):
- """Check if status bar is updated when data is received"""
- input_sum = self.widget.info.set_input_summary = Mock()
- output_sum = self.widget.info.set_output_summary = Mock()
-
- data = Table("iris")
- self.send_signal(self.widget.Inputs.data, data)
- input_sum.assert_called_with(len(data), format_summary_details(data))
- self.wait_until_finished()
- output = self.get_output(self.widget.Outputs.data)
- output_sum.assert_called_with(len(output),
- format_summary_details(output))
-
- input_sum.reset_mock()
- output_sum.reset_mock()
- self.send_signal(self.widget.Inputs.data, None)
- input_sum.assert_called_once()
- self.assertIsInstance(input_sum.call_args[0][0], StateInfo.Empty)
- self.wait_until_finished()
- output_sum.assert_called_once()
- self.assertIsInstance(output_sum.call_args[0][0], StateInfo.Empty)
-
if __name__ == "__main__":
unittest.main()
diff --git a/Orange/widgets/evaluate/owconfusionmatrix.py b/Orange/widgets/evaluate/owconfusionmatrix.py
index 771cec725f5..8b539cb30dd 100644
--- a/Orange/widgets/evaluate/owconfusionmatrix.py
+++ b/Orange/widgets/evaluate/owconfusionmatrix.py
@@ -20,7 +20,6 @@
from Orange.widgets.utils.annotated_data import (create_annotated_table,
ANNOTATED_DATA_SIGNAL_NAME)
from Orange.widgets.utils.widgetpreview import WidgetPreview
-from Orange.widgets.utils.state_summary import format_summary_details
from Orange.widgets.widget import Msg, Input, Output
@@ -146,8 +145,6 @@ def __init__(self):
gui.auto_apply(self.outputbox, self, "autocommit", box=False)
- self.info.set_output_summary(self.info.NoOutput)
-
box = gui.vBox(self.mainArea, box=True)
sbox = gui.hBox(box)
@@ -418,10 +415,6 @@ def commit(self):
data = None
annotated_data = None
- summary = len(data) if data else self.info.NoOutput
- details = format_summary_details(data) if data else ""
- self.info.set_output_summary(summary, details)
-
self.Outputs.selected_data.send(data)
self.Outputs.annotated_data.send(annotated_data)
diff --git a/Orange/widgets/evaluate/owpredictions.py b/Orange/widgets/evaluate/owpredictions.py
index 483961e7ee7..1292b5a768d 100644
--- a/Orange/widgets/evaluate/owpredictions.py
+++ b/Orange/widgets/evaluate/owpredictions.py
@@ -87,9 +87,6 @@ def __init__(self):
self.selection_store = None
self.__pending_selection = self.selection
- self._set_input_summary()
- self._set_output_summary(None)
-
controlBox = gui.vBox(self.controlArea, "Show probabilities for")
gui.listBox(controlBox, self, "selected_classes", "class_values",
@@ -226,7 +223,6 @@ def handleNewSignals(self):
self._update_predictions_model()
self._update_prediction_delegate()
self._set_errors()
- self._set_input_summary()
self.commit()
def _call_predictors(self):
@@ -332,19 +328,9 @@ def _set_errors(self):
else:
self.Warning.wrong_targets.clear()
- def _set_input_summary(self):
- if not self.data and not self.predictors:
- self.info.set_input_summary(self.info.NoInput)
- return
-
- summary = len(self.data) if self.data else 0
- details = self._get_details()
- self.info.set_input_summary(summary, details, format=Qt.RichText)
-
def _get_details(self):
details = "Data:
"
- details += format_summary_details(self.data).replace('\n', '
') if \
- self.data else "No data on input."
+ details += format_summary_details(self.data, format=Qt.RichText)
details += "