Skip to content

Commit 9673bf1

Browse files
Pikestasm
authored andcommitted
.equals should not ignore Variant and Attribute order, fixes #111 (#112)
Also remove .sorting_key, it's not used anymore.
1 parent 478ff4d commit 9673bf1

File tree

2 files changed

+4
-24
lines changed

2 files changed

+4
-24
lines changed

fluent.syntax/fluent/syntax/ast.py

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -183,13 +183,6 @@ def equals(self, other, ignored_fields=['span']):
183183
if len(field1) != len(field2):
184184
return False
185185

186-
# Sort elements of order-agnostic fields to ensure the
187-
# comparison is order-agnostic as well. Annotations should be
188-
# here too but they don't have sorting keys.
189-
if key in ('attributes', 'variants'):
190-
field1 = sorted(field1, key=lambda elem: elem.sorting_key)
191-
field2 = sorted(field2, key=lambda elem: elem.sorting_key)
192-
193186
for elem1, elem2 in zip(field1, field2):
194187
if not scalars_equal(elem1, elem2, ignored_fields):
195188
return False
@@ -358,10 +351,6 @@ def __init__(self, id, value, **kwargs):
358351
self.id = id
359352
self.value = value
360353

361-
@property
362-
def sorting_key(self):
363-
return self.id.name
364-
365354

366355
class Variant(SyntaxNode):
367356
def __init__(self, key, value, default=False, **kwargs):
@@ -370,12 +359,6 @@ def __init__(self, key, value, default=False, **kwargs):
370359
self.value = value
371360
self.default = default
372361

373-
@property
374-
def sorting_key(self):
375-
if isinstance(self.key, NumberLiteral):
376-
return self.key.value
377-
return self.key.name
378-
379362

380363
class NamedArgument(SyntaxNode):
381364
def __init__(self, name, value, **kwargs):

fluent.syntax/tests/syntax/test_equals.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ def test_same_junk(self):
8484
self.assertTrue(message1.equals(message1.clone()))
8585

8686

87-
class TestOrderEquals(unittest.TestCase):
87+
class TestNonEquals(unittest.TestCase):
8888
def setUp(self):
8989
self.parser = FluentParser()
9090

@@ -103,8 +103,7 @@ def test_attributes(self):
103103
.attr1 = Attr1
104104
""")
105105

106-
self.assertTrue(message1.equals(message2))
107-
self.assertTrue(message2.equals(message1))
106+
self.assertFalse(message1.equals(message2))
108107

109108
def test_variants(self):
110109
message1 = self.parse_ftl_entry("""\
@@ -122,8 +121,7 @@ def test_variants(self):
122121
}
123122
""")
124123

125-
self.assertTrue(message1.equals(message2))
126-
self.assertTrue(message2.equals(message1))
124+
self.assertFalse(message1.equals(message2))
127125

128126
def test_variants_with_numbers(self):
129127
message1 = self.parse_ftl_entry("""\
@@ -141,8 +139,7 @@ def test_variants_with_numbers(self):
141139
}
142140
""")
143141

144-
self.assertTrue(message1.equals(message2))
145-
self.assertTrue(message2.equals(message1))
142+
self.assertFalse(message1.equals(message2))
146143

147144

148145
class TestEqualWithSpans(unittest.TestCase):

0 commit comments

Comments
 (0)