Skip to content

Commit 84ec585

Browse files
committed
Variable: fix equal when names equal
1 parent 01365b6 commit 84ec585

File tree

2 files changed

+19
-9
lines changed

2 files changed

+19
-9
lines changed

Orange/data/tests/test_variable.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -215,18 +215,25 @@ def test_hash(self):
215215

216216
def test_hash_eq(self):
217217
a = ContinuousVariable("a")
218+
a1 = ContinuousVariable("a")
218219
b1 = ContinuousVariable("b", compute_value=Identity(a))
219220
b2 = ContinuousVariable("b2", compute_value=Identity(b1))
220221
b3 = ContinuousVariable("b")
221-
self.assertEqual(a, b2)
222-
self.assertEqual(b1, b2)
223-
self.assertEqual(a, b1)
222+
c1 = ContinuousVariable("c", compute_value=Identity(a))
223+
c2 = ContinuousVariable("c", compute_value=Identity(a))
224+
self.assertNotEqual(a, b2)
225+
self.assertNotEqual(b1, b2)
226+
self.assertNotEqual(a, b1)
224227
self.assertNotEqual(b1, b3)
228+
self.assertEqual(a, a1)
229+
self.assertEqual(c1, c2)
225230

226-
self.assertEqual(hash(a), hash(b2))
227-
self.assertEqual(hash(b1), hash(b2))
228-
self.assertEqual(hash(a), hash(b1))
231+
self.assertNotEqual(hash(a), hash(b2))
232+
self.assertNotEqual(hash(b1), hash(b2))
233+
self.assertNotEqual(hash(a), hash(b1))
229234
self.assertNotEqual(hash(b1), hash(b3))
235+
self.assertEqual(hash(a), hash(a1))
236+
self.assertEqual(hash(c1), hash(c2))
230237

231238

232239
def variabletest(varcls):

Orange/data/variable.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -353,12 +353,15 @@ def __eq__(self, other):
353353
var1 = self._get_identical_source(self)
354354
var2 = self._get_identical_source(other)
355355
# pylint: disable=protected-access
356-
return var1.name == var2.name \
357-
and var1._compute_value == var2._compute_value
356+
return (
357+
self.name == other.name
358+
and var1.name == var2.name
359+
and var1._compute_value == var2._compute_value
360+
)
358361

359362
def __hash__(self):
360363
var = self._get_identical_source(self)
361-
return hash((var.name, type(self), var._compute_value))
364+
return hash((self.name, var.name, type(self), var._compute_value))
362365

363366
@staticmethod
364367
def _get_identical_source(var):

0 commit comments

Comments
 (0)