Issue 21635: Fix caching in difflib.SequenceMatcher.get_matching_blocks().
This commit is contained in:
parent
8aa9e4268f
commit
fabefc3c5b
|
@ -511,8 +511,8 @@ class SequenceMatcher:
|
|||
non_adjacent.append((i1, j1, k1))
|
||||
|
||||
non_adjacent.append( (la, lb, 0) )
|
||||
self.matching_blocks = non_adjacent
|
||||
return map(Match._make, self.matching_blocks)
|
||||
self.matching_blocks = list(map(Match._make, non_adjacent))
|
||||
return self.matching_blocks
|
||||
|
||||
def get_opcodes(self):
|
||||
"""Return list of 5-tuples describing how to turn a into b.
|
||||
|
|
|
@ -76,6 +76,15 @@ class TestSFbugs(unittest.TestCase):
|
|||
diff_gen = difflib.unified_diff([], [])
|
||||
self.assertRaises(StopIteration, next, diff_gen)
|
||||
|
||||
def test_matching_blocks_cache(self):
|
||||
# Issue #21635
|
||||
s = difflib.SequenceMatcher(None, "abxcd", "abcd")
|
||||
first = s.get_matching_blocks()
|
||||
second = s.get_matching_blocks()
|
||||
self.assertEqual(second[0].size, 2)
|
||||
self.assertEqual(second[1].size, 2)
|
||||
self.assertEqual(second[2].size, 0)
|
||||
|
||||
def test_added_tab_hint(self):
|
||||
# Check fix for bug #1488943
|
||||
diff = list(difflib.Differ().compare(["\tI am a buggy"],["\t\tI am a bug"]))
|
||||
|
|
|
@ -29,6 +29,10 @@ Library
|
|||
|
||||
- Issue #21491: socketserver: Fix a race condition in child processes reaping.
|
||||
|
||||
- Issue #21635: The difflib SequenceMatcher.get_matching_blocks() method
|
||||
cache didn't match the actual result. The former was a list of tuples
|
||||
and the latter was a list of named tuples.
|
||||
|
||||
- Issue #21722: The distutils "upload" command now exits with a non-zero
|
||||
return code when uploading fails. Patch by Martin Dengler.
|
||||
|
||||
|
|
Loading…
Reference in New Issue