internlm/SWE-Fixer-Train-110K huggingface dataset:
Repository: biolab/orange3

Issue:
Transpose remembers old unexisting data
I have a table file  that I overwrite with different values (rows and columns stay the same). When using a certain version of the file with certain workflow the workflow remembers old data, that was previously overwritten (and does not exist on my disk anymore).  I could not replicate this in a new workflow made from scratch or with Orange data sets. However, it occurs even when I reopen Orange or when I copy the workflow to a new file. 
Below are the workflow and the data and an image of what is happening. 

![Screenshot from 2020-01-23 11-41-55](https://user-images.githubusercontent.com/47607471/72978198-46e61180-3dd6-11ea-9d14-94cf9f1af850.png)

[transpose_remembering.zip](https://github.com/biolab/orange3/files/4102632/transpose_remembering.zip)

Orange: Last master.



Discussion:
It was explained to me that the issue arises due to the displayed value being categorical (as it has only 2 values) and not numerical. This affects storing and subsequent display of the data before and after transpose. Transpose of categorical variables does not return categorical values (as does Excel), but rather their numerical representation from the Orange's np.array used for storing the data. 
The issue is thus not in how the data is remembered in  the workflow. 
Show a warning when transposing categorical data.

Resolving patch:
diff --git a/Orange/widgets/data/owtranspose.py b/Orange/widgets/data/owtranspose.py
--- a/Orange/widgets/data/owtranspose.py
+++ b/Orange/widgets/data/owtranspose.py
@@ -38,6 +38,7 @@ class Warning(OWWidget.Warning):
         duplicate_names = Msg("Values are not unique.\nTo avoid multiple "
                               "features with the same name, values \nof "
                               "'{}' have been augmented with indices.")
+        discrete_attrs = Msg("Categorical features have been encoded as numbers.")
 
     class Error(OWWidget.Error):
         value_error = Msg("{}")
@@ -123,6 +124,8 @@ def apply(self):
                     names = self.data.get_column_view(variable)[0]
                     if len(names) != len(set(names)):
                         self.Warning.duplicate_names(variable)
+                if self.data.domain.has_discrete_attributes():
+                    self.Warning.discrete_attrs()
                 self.info.set_output_summary(len(transposed))
             except ValueError as e:
                 self.Error.value_error(e)


Test patch:
Repository: biolab/orange3

Issue:
Scatter plot does not detect coloring changes
**Describe the bug**

Scatter plot ignores data input when the affected attributes are unchanged. Other projections probably have a similar problem and it probably also affects size and shape.

**To Reproduce**

1. Connect File -> Color -> Scatter plot
2. In Scatter plot, set color to Cholesterol. X and Y should be, say, age and rest SBP.
3. In Color, change the color for max HR.
4. In Scatter plot, set color to max HR.

After this, max HR will be shown in the original color. I suspect that this occurs because at step 3 "max HR" was not in `effective_data`, so scatter plot ignored the new data input.

**Expected behavior**

I suppose projections should be more careful with `effective_data`. Perhaps this mechanism is flawed.


Discussion:

Resolving patch:
diff --git a/Orange/widgets/visualize/utils/widget.py b/Orange/widgets/visualize/utils/widget.py
--- a/Orange/widgets/visualize/utils/widget.py
+++ b/Orange/widgets/visualize/utils/widget.py
@@ -430,13 +430,10 @@ def effective_data(self):
     def set_data(self, data):
         data_existed = self.data is not None
         effective_data = self.effective_data if data_existed else None
-        same_domain = (data_existed and data is not None and
-                       data.domain.checksum() == self.data.domain.checksum())
         self.closeContext()
         self.data = data
         self.check_data()
-        if not same_domain:
-            self.init_attr_values()
+        self.init_attr_values()
         self.openContext(self.data)
         self._invalidated = not (
             data_existed and self.data is not None and


Test patch:
diff --git a/Orange/widgets/visualize/tests/test_owprojectionwidget.py b/Orange/widgets/visualize/tests/test_owprojectionwidget.py
--- a/Orange/widgets/visualize/tests/test_owprojectionwidget.py
+++ b/Orange/widgets/visualize/tests/test_owprojectionwidget.py
@@ -11,6 +11,7 @@
 from Orange.widgets.tests.base import (
     WidgetTest, WidgetOutputsTestMixin, ProjectionWidgetTestMixin
 )
+from Orange.widgets.utils.colorpalettes import ContinuousPalettes
 from Orange.widgets.visualize.utils.widget import (
     OWDataProjectionWidget, OWProjectionWidgetBase
 )
@@ -230,6 +231,23 @@ def test_unconditional_commit_on_new_signal(self):
             self.send_signal(self.widget.Inputs.data, self.data)
             commit.assert_called()
 
+    def test_model_update(self):
+        widget = self.widget
+
+        data = Table("iris")
+        domain = data.domain
+
+        self.send_signal(widget.Inputs.data, data)
+        self.assertIs(widget.controls.attr_color.model()[4], domain[0])
+
+        copy0 = domain[0].copy()
+        assert copy0.palette.name != "linear_kryw_0_100_c71"
+        copy0.palette = ContinuousPalettes["linear_kryw_0_100_c71"]
+        domain = Domain((copy0, ) + domain.attributes[1:], domain.class_var)
+        data0 = data.transform(domain)
+        self.send_signal(widget.Inputs.data, data0)
+        self.assertIs(widget.controls.attr_color.model()[4], copy0)
+
 
 if __name__ == "__main__":
     unittest.main()
Repository: biolab/orange3

Issue:
Orange.projection loads slowly after introduction of fastTSNE
After f5eeaa6cf24b7ab62a8a24847b43ec8489647048 (tSNE: Implement Orange wrapper around Pavlin's implementation of tSNE) loading of Orange.projection became even slower.

On my computer, it used to take 0.9 second, now it takes 2.3 second.

Should we import fastTSNE only when actually needed?


Discussion:
@pavlin-policar, @markotoplak, is this still an issue and will we (ehm, you :)) do something about it?
Yes, it is still an issue. Now it takes ~2.6 seconds. It can be fixed by not using numba (@pavlin-policar 
, did anyone try to work on this?) or importing some things more lazily. 
I don't see the t-SNE library not-depending on numba any time soon. I've been looking for alternatives, but have found none that would make sense. Eventually, I might write my own implementation of the library depending on numba, but that will require a fair bit of work.

In the meantime, I'll look into how we could load things lazily.

Resolving patch:
diff --git a/Orange/projection/manifold.py b/Orange/projection/manifold.py
--- a/Orange/projection/manifold.py
+++ b/Orange/projection/manifold.py
@@ -8,10 +8,6 @@
 from scipy.sparse.linalg import eigsh as arpack_eigh
 import sklearn.manifold as skl_manifold
 
-import openTSNE
-import openTSNE.affinity
-import openTSNE.initialization
-
 import Orange
 from Orange.data import Table, Domain, ContinuousVariable
 from Orange.distance import Distance, DistanceModel, Euclidean
@@ -21,9 +17,19 @@
 __all__ = ["MDS", "Isomap", "LocallyLinearEmbedding", "SpectralEmbedding",
            "TSNE"]
 
-# Disable t-SNE user warnings
-openTSNE.tsne.log.setLevel(logging.ERROR)
-openTSNE.affinity.log.setLevel(logging.ERROR)
+
+class _LazyTSNE:  # pragma: no cover
+    def __getattr__(self, attr):
+        # pylint: disable=import-outside-toplevel,redefined-outer-name,global-statement
+        global openTSNE
+        import openTSNE
+        # Disable t-SNE user warnings
+        openTSNE.tsne.log.setLevel(logging.ERROR)
+        openTSNE.affinity.log.setLevel(logging.ERROR)
+        return openTSNE.__dict__[attr]
+
+
+openTSNE = _LazyTSNE()
 
 
 def torgerson(distances, n_components=2, eigen_solver="auto"):


Test patch:
Repository: biolab/orange3

Issue:
Predictions widget: change selection mode for a list box
In the `show probabilities for` list box in Predictions widget, we are currently using the MultiSelection selection mode, which is OK when the number of target values is low. The problem appears when number of target values is hight (let say 30). In this case, many of them are selected by default, and I want to deselect all of them to get rid of a long list of probabilities in each row of the view. In MultiSelection mode more items can be toggled off/on by dragging mouse through but I think it is very unnatural for a user. 

I suggest changing the selection mode to ExtendedSelection like it is done in some other Orange's widgets.  Here selecting and deselecting of multiple items can be done with the help of shift/control keys. It seems more natural to me.


Discussion:
I agree. I even thought that MultiSelection already behaves like this.
Not exactly like this. Selecting/deselecting multiple items is done with dragging through them (not with ctrl/shift keys). I needed to check in Qt documentation to find that out - have never seen before that mode elsewhere.

Resolving patch:
diff --git a/Orange/widgets/evaluate/owpredictions.py b/Orange/widgets/evaluate/owpredictions.py
--- a/Orange/widgets/evaluate/owpredictions.py
+++ b/Orange/widgets/evaluate/owpredictions.py
@@ -76,7 +76,7 @@ def __init__(self):
         gui.listBox(self.controlArea, self, "selected_classes", "class_values",
                     box="Show probabibilities for",
                     callback=self._update_prediction_delegate,
-                    selectionMode=QListWidget.MultiSelection,
+                    selectionMode=QListWidget.ExtendedSelection,
                     addSpace=False,
                     sizePolicy=(QSizePolicy.Preferred, QSizePolicy.Preferred))
         gui.rubber(self.controlArea)


Test patch:
Repository: biolab/orange3

Issue:
SyntaxWarning: "is" with a literal

this kind of syntax is invalid, eg `elif self._metric is 'precomputed':`
```
/usr/lib/python3.8/site-packages/Orange/projection/manifold.py:132: SyntaxWarning: "is" with a literal. Did you mean "=="?
/usr/lib/python3.8/site-packages/Orange/data/variable.py:818: SyntaxWarning: "is" with a literal. Did you mean "=="?
/usr/lib/python3.8/site-packages/Orange/data/variable.py:821: SyntaxWarning: "is" with a literal. Did you mean "=="?
```


Discussion:

Resolving patch:
diff --git a/Orange/projection/manifold.py b/Orange/projection/manifold.py
--- a/Orange/projection/manifold.py
+++ b/Orange/projection/manifold.py
@@ -135,7 +135,7 @@ def __call__(self, data):
             _X, Y, domain = data.X, data.Y, data.domain
             X = dist_matrix = self._metric(_X)
             dissimilarity = 'precomputed'
-        elif self._metric is 'precomputed':
+        elif self._metric == 'precomputed':
             dist_matrix, Y, domain = data, None, None
             X = dist_matrix
             dissimilarity = 'precomputed'


Test patch:
Repository: biolab/orange3

Issue:
Table doesn't output the current tab selection when switching between tabs
**Describe the bug**
If the Table widget has multiple tabs and if on each tab there are some instances selected it doesn't change the output when a user switches between tabs. The widget doesn't output the current tab selection but it outputs the last selection made on some of the previous tabs and the user has to re-select instances.

**Orange version:**
3.25.dev

**Expected behavior**
The output should change every time the tab is changed.

![screen-capture](https://user-images.githubusercontent.com/43814754/78376399-8d25d100-75ce-11ea-8f7d-8f192e851c7b.gif)




Discussion:

Resolving patch:
diff --git a/Orange/widgets/data/owtable.py b/Orange/widgets/data/owtable.py
--- a/Orange/widgets/data/owtable.py
+++ b/Orange/widgets/data/owtable.py
@@ -718,6 +718,7 @@ def _on_current_tab_changed(self, index):
         view = self.tabs.widget(index)
         if view is not None and view.model() is not None:
             self.set_info(view.input_slot.summary)
+            self.update_selection()
         else:
             self.set_info(None)
 


Test patch:
Repository: biolab/orange3

Issue:
Feature Constructor reducing numeric presicion
**Describe the bug**

Using a function on a numeric in feature constructor with a numeric output will reduce precision to 3 decimal places.  The precision loss is significant and not a typical floating point estimation problem.

I tried a few functions.  fmod, modf, division, basically anything that produces a float output is getting reduced.

**To Reproduce**

Create a numeric feature constructor attribute with this function.

float(1.100001)

Output is 1.100.

**Orange version:**
3.24.1

**Expected behavior**
Floats should retain original precision

**Screenshots**
![image](https://user-images.githubusercontent.com/7517411/78941099-db721e80-7a6b-11ea-9de2-1facba231479.png)
![image](https://user-images.githubusercontent.com/7517411/78941149-f3e23900-7a6b-11ea-9f9c-1a53d6531c7d.png)


**Operating system:**
Windows 10




Discussion:

Resolving patch:
diff --git a/Orange/widgets/data/owfeatureconstructor.py b/Orange/widgets/data/owfeatureconstructor.py
--- a/Orange/widgets/data/owfeatureconstructor.py
+++ b/Orange/widgets/data/owfeatureconstructor.py
@@ -235,7 +235,7 @@ class ContinuousFeatureEditor(FeatureEditor):
     def editorData(self):
         return ContinuousDescriptor(
             name=self.nameedit.text(),
-            number_of_decimals=3,
+            number_of_decimals=None,
             expression=self.expressionedit.text()
         )
 


Test patch:
Repository: biolab/orange3

Issue:
CSV File Import does not set dataset name
When importing files with CSV File Import the files are not given a name. Thus when using Venn Diagram they are all called 'untitled', which makes it impossible to use that widget.

Orange version: recent master.


Discussion:

Resolving patch:
diff --git a/Orange/widgets/data/owcsvimport.py b/Orange/widgets/data/owcsvimport.py
--- a/Orange/widgets/data/owcsvimport.py
+++ b/Orange/widgets/data/owcsvimport.py
@@ -961,6 +961,8 @@ def __handle_result(self, f):
 
         if df is not None:
             table = pandas_to_table(df)
+            filename = self.current_item().path()
+            table.name = os.path.splitext(os.path.split(filename)[-1])[0]
         else:
             table = None
         self.send("Data Frame", df)


Test patch:
diff --git a/Orange/widgets/data/tests/test_owcsvimport.py b/Orange/widgets/data/tests/test_owcsvimport.py
--- a/Orange/widgets/data/tests/test_owcsvimport.py
+++ b/Orange/widgets/data/tests/test_owcsvimport.py
@@ -83,6 +83,7 @@ def test_restore(self):
         self.assertEqual(item.options(), self.data_regions_options)
         out = self.get_output("Data", w)
         self._check_data_regions(out)
+        self.assertEqual(out.name, "data-regions")
 
     def test_restore_from_local(self):
         dirname = os.path.dirname(__file__)
Repository: biolab/orange3

Issue:
SOM on Covid data uses constant color
**Provide a clear and concise description of what the bug is**

All circles in SOM are of the same colors, and so are all rectangles in the legend.

**To Reproduce**

Load https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv into File widgets, remove Lat and Long, connect it to SOM and color by any date. All circles are blue. Sizing by number of instances can be disabled for a cleaner effect.

Clicking "Show Pie Charts" does change the color for some circles, but the legend stays the same.

**Orange version:**

Orange - current master (87849a8729cc06214535542631d695d2b7233ec6).

This may be related to new palettes, though I doubt it. The bug doesn't appear on Iris. It probably has something to do with this particular data set.

**Screenshots**

<img width="362" alt="Screenshot 2020-03-30 at 23 26 39" src="https://user-images.githubusercontent.com/2387315/77963625-fb704800-72dd-11ea-8138-15706b903726.png">

<img width="371" alt="Screenshot 2020-03-30 at 23 26 52" src="https://user-images.githubusercontent.com/2387315/77963633-ff9c6580-72dd-11ea-8d50-7f4a1a2a6aa0.png">



Discussion:
It would be nice if we could fix this for the release in a few days -- it may be useful for the blog/videos about Covid.
Similar can be tested with Auto MPG or Housing.

Resolving patch:
diff --git a/Orange/widgets/unsupervised/owsom.py b/Orange/widgets/unsupervised/owsom.py
--- a/Orange/widgets/unsupervised/owsom.py
+++ b/Orange/widgets/unsupervised/owsom.py
@@ -637,6 +637,7 @@ def _draw_pie_charts(self, sizes):
     def _draw_colored_circles(self, sizes):
         fx, fy = self._grid_factors
         color_column = self._get_color_column()
+        qcolors = self.colors.qcolors_w_nan
         for y in range(self.size_y):
             for x in range(self.size_x - self.hexagonal * (y % 2)):
                 r = sizes[x, y]
@@ -648,10 +649,10 @@ def _draw_colored_circles(self, sizes):
                 if len(color_dist) != len(members):
                     self.Warning.missing_colors(self.attr_color.name)
                 bc = np.bincount(color_dist, minlength=len(self.colors))
-                color = self.colors[np.argmax(bc)]
+                color = qcolors[np.argmax(bc)]
                 ellipse = ColoredCircle(r / 2, color, np.max(bc) / len(members))
                 ellipse.setPos(x + (y % 2) * fx, y * fy)
-                ellipse.setToolTip(self._tooltip(self.colors, bc))
+                ellipse.setToolTip(self._tooltip(qcolors, bc))
                 self.elements.addToGroup(ellipse)
 
     def redraw_grid(self):
@@ -863,7 +864,7 @@ def create_legend(self):
 
         items = []
         size = 8
-        for name, color in zip(names, self.colors):
+        for name, color in zip(names, self.colors.qcolors):
             item = QGraphicsItemGroup()
             item.addToGroup(
                 CanvasRectangle(None, -size / 2, -size / 2, size, size,


Test patch:
Repository: biolab/orange3

Issue:
Missing pictures in orange help
Hello,
I just updated Orange to 3.24 on windows10.

**Here**, provide a clear and concise description of what the bug is.
Before I had a great documentation on-line available from the widget.
Now the window opens with the text but missing the picture.

**To Reproduce**

Steps to reproduce the behavior go **here**:
1. Go to any widget and 
2. click on the "?" at the bottom left of the window
3. the help file opens,
4. the images are missing


**Orange version:**
Orange - About - 3.24.1.

**Expected behavior**
The images on the flow show show up

**Screenshots**
See attached screenshot

**Operating system:**
Windows 10  64 bits

![OrangeBug](https://user-images.githubusercontent.com/63545457/79069360-e2986700-7ccd-11ea-9436-e10d432c2752.JPG)




Discussion:
@FroggyTest, thank you for reporting this.

@acopar, is this perhaps connected with changes to server urls on Friday? If I open Orange docs in the Browser, I get the same rendering: without the images.
Unrelated, the images are not uploaded with the rest of the documentation: https://github.com/biolab/orange3/blob/e1bc1ca741577a1cbbf8d4d3de0571f18e6a18f7/.travis/upload_doc.sh#L18

I recommend we use Github Actions to build and Github Pages to serve the documentation directly. We could re-use this script: https://github.com/biolab/orange3/blob/e1bc1ca741577a1cbbf8d4d3de0571f18e6a18f7/doc/build_doc.sh#L28
Hello,

thank you all for your comments.
If it  helps at all, I loaded today the "Associate", "Educational" and "Geo" add-onsand there the help works well, with images included.
All except "Geo" are in a different format, it seems, but even more readable

best regards. Stay safe.


Resolving patch:
diff --git a/doc/visual-programming/source/conf.py b/doc/visual-programming/source/conf.py
--- a/doc/visual-programming/source/conf.py
+++ b/doc/visual-programming/source/conf.py
@@ -15,7 +15,6 @@
 
 import sys
 import os
-from recommonmark.parser import CommonMarkParser
 
 # If extensions (or modules to document with autodoc) are in another directory,
 # add these directories to sys.path here. If the directory is relative to the
@@ -40,13 +39,12 @@
     "sphinx.ext.imgmath",
     "sphinx.ext.ifconfig",
     "sphinx.ext.viewcode",
+    "recommonmark",
 ]
 
 # Add any paths that contain templates here, relative to this directory.
 templates_path = ["_templates"]
 
-source_parsers = {".md": CommonMarkParser}
-
 # The suffix(es) of source filenames.
 # You can specify multiple suffix as a list of string:
 source_suffix = [".md", ".rst"]


Test patch:
Repository: biolab/orange3

Issue:
Display failure Distribution Widget
Using distribution widget with "Normal"-distribution, shows mue and sigma^2 (variance) in the diagram (top-right).
The value for mue is correct, but the value for sigma^2 is wrong. Its the value for sigma.
So you have to change sigma^2 to sigma (without changing the value) or have to show value^2.

See the picture, sigma is 17.6.. , sigma^2 would be 309....

![grafik](https://user-images.githubusercontent.com/64842403/81062745-d1aad200-8ed6-11ea-8d8a-803f84c7dc29.png)

**Orange version:**
3.23.1.

**Operating system:**
Windows 7



Discussion:

Resolving patch:
diff --git a/Orange/widgets/visualize/owdistributions.py b/Orange/widgets/visualize/owdistributions.py
--- a/Orange/widgets/visualize/owdistributions.py
+++ b/Orange/widgets/visualize/owdistributions.py
@@ -287,11 +287,11 @@ class Warning(OWWidget.Warning):
 
     Fitters = (
         ("None", None, (), ()),
-        ("Normal", norm, ("loc", "scale"), ("μ", "σ²")),
+        ("Normal", norm, ("loc", "scale"), ("μ", "σ")),
         ("Beta", beta, ("a", "b", "loc", "scale"),
          ("α", "β", "-loc", "-scale")),
         ("Gamma", gamma, ("a", "loc", "scale"), ("α", "β", "-loc", "-scale")),
-        ("Rayleigh", rayleigh, ("loc", "scale"), ("-loc", "σ²")),
+        ("Rayleigh", rayleigh, ("loc", "scale"), ("-loc", "σ")),
         ("Pareto", pareto, ("b", "loc", "scale"), ("α", "-loc", "-scale")),
         ("Exponential", expon, ("loc", "scale"), ("-loc", "λ")),
         ("Kernel density", AshCurve, ("a",), ("",))


Test patch:
Repository: biolab/orange3

Issue:
Pythagorean Tree crashes when the number of classes decreases
I merged #4656 too early: Orange actually crashed when I was trying #4656, but it doesn't show me a dialog, so I overlooked it.

1. In File, open Iris.
2. Connect Tree and Pythagorean Tree. In Pythagorean Tree, select the last class value.
3. Switch to Titanic and get `IndexError: index 2 is out of bounds for axis 0 with size 2`.

It is very possible that this crashed the same way before #4656.


Discussion:

Resolving patch:
diff --git a/Orange/widgets/visualize/pythagorastreeviewer.py b/Orange/widgets/visualize/pythagorastreeviewer.py
--- a/Orange/widgets/visualize/pythagorastreeviewer.py
+++ b/Orange/widgets/visualize/pythagorastreeviewer.py
@@ -192,6 +192,7 @@ def tooltip_changed(self, tooltip_enabled):
     def clear(self):
         """Clear the entire widget state."""
         self.clear_tree()
+        self._target_class_index = 0
 
     def clear_tree(self):
         """Clear only the tree, keeping tooltip and color functions."""


Test patch: