biolab / orange3-timeseries

🍊 :chart_with_upwards_trend: Orange add-on for analyzing, visualizing, manipulating, and forecasting time series data.
Other
62 stars 41 forks source link

Difference: Modernize widget #217

Closed janezd closed 2 years ago

janezd commented 2 years ago
Issue

No issues, ...

Description of changes

... I just brought the widget's code more up-to-date and somewhat improved the user interface. And sped up tests.

Note: two tests are disabled for Qt < 5.15 (test "oldest", with Python 3.7) because of different signals for radio buttons. The functionality being tested does not depend on Qt version, hence disabling the test doesn't matter.

Includes
codecov-commenter commented 2 years ago

Codecov Report

Merging #217 (d041872) into master (026771c) will increase coverage by 0.16%. The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master     #217      +/-   ##
==========================================
+ Coverage   70.21%   70.38%   +0.16%     
==========================================
  Files          28       28              
  Lines        3566     3572       +6     
  Branches      613      614       +1     
==========================================
+ Hits         2504     2514      +10     
+ Misses        937      935       -2     
+ Partials      125      123       -2     
Impacted Files Coverage Δ
orangecontrib/timeseries/widgets/owdifference.py 100.00% <100.00%> (+3.53%) :arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 026771c...d041872. Read the comment docs.

ajdapretnar commented 2 years ago

The widget works well in general, but it fails when passed iris.

-------------------------- AttributeError Exception ---------------------------
Traceback (most recent call last):
  File "/Users/ajda/orange/orange-canvas-core/orangecanvas/scheme/signalmanager.py", line 1047, in __process_next
    if self.__process_next_helper(use_max_active=True):
  File "/Users/ajda/orange/orange-canvas-core/orangecanvas/scheme/signalmanager.py", line 1085, in __process_next_helper
    self.process_node(selected_node)
  File "/Users/ajda/orange/orange-canvas-core/orangecanvas/scheme/signalmanager.py", line 713, in process_node
    self.send_to_node(node, signals_in)
  File "/Users/ajda/orange/orange-widget-base/orangewidget/workflow/widgetsscheme.py", line 806, in send_to_node
    self.process_signals_for_widget(node, widget, signals)
  File "/Users/ajda/orange/orange-widget-base/orangewidget/workflow/widgetsscheme.py", line 820, in process_signals_for_widget
    process_signals_for_widget(widget, signals, workflow)
  File "/Users/ajda/.pyenv-x86/versions/3.9.10/lib/python3.9/functools.py", line 888, in wrapper
    return dispatch(args[0].__class__)(*args, **kw)
  File "/Users/ajda/orange/orange-widget-base/orangewidget/workflow/widgetsscheme.py", line 921, in process_signals_for_widget
    process_signal_input(input_meta, widget, signal, workflow)
  File "/Users/ajda/.pyenv-x86/versions/3.9.10/lib/python3.9/functools.py", line 888, in wrapper
    return dispatch(args[0].__class__)(*args, **kw)
  File "/Users/ajda/orange/orange-widget-base/orangewidget/workflow/widgetsscheme.py", line 884, in process_signal_input_default
    notify_input_helper(
  File "/Users/ajda/.pyenv-x86/versions/3.9.10/lib/python3.9/functools.py", line 888, in wrapper
    return dispatch(args[0].__class__)(*args, **kw)
  File "/Users/ajda/orange/orange-widget-base/orangewidget/utils/signals.py", line 692, in set_input_helper
    handler(*args)
  File "/Users/ajda/orange/orange-widget-base/orangewidget/utils/signals.py", line 205, in summarize_wrapper
    method(widget, value)
  File "/Users/ajda/orange/orange3-timeseries/orangecontrib/timeseries/widgets/owdifference.py", line 112, in set_data
    self.model[:] = [var for var in data.domain.variables
  File "/Users/ajda/orange/orange3-timeseries/orangecontrib/timeseries/widgets/owdifference.py", line 114, in <listcomp>
    data.time_variable]
AttributeError: 'Table' object has no attribute 'time_variable'
-------------------------------------------------------------------------------

It works on master, otherwise I wouldn't comment. :)