bpo-33224: PEP 479 fix for difflib.mdiff() (GH-6381)
This commit is contained in:
parent
7286dbd8b2
commit
01b731fc2b
|
@ -1634,6 +1634,7 @@ def _mdiff(fromlines, tolines, context=None, linejunk=None,
|
||||||
lines_to_write -= 1
|
lines_to_write -= 1
|
||||||
# Now yield the context lines after the change
|
# Now yield the context lines after the change
|
||||||
lines_to_write = context-1
|
lines_to_write = context-1
|
||||||
|
try:
|
||||||
while(lines_to_write):
|
while(lines_to_write):
|
||||||
from_line, to_line, found_diff = next(line_pair_iterator)
|
from_line, to_line, found_diff = next(line_pair_iterator)
|
||||||
# If another change within the context, extend the context
|
# If another change within the context, extend the context
|
||||||
|
@ -1642,6 +1643,9 @@ def _mdiff(fromlines, tolines, context=None, linejunk=None,
|
||||||
else:
|
else:
|
||||||
lines_to_write -= 1
|
lines_to_write -= 1
|
||||||
yield from_line, to_line, found_diff
|
yield from_line, to_line, found_diff
|
||||||
|
except StopIteration:
|
||||||
|
# Catch exception from next() and return normally
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
_file_template = """
|
_file_template = """
|
||||||
|
|
|
@ -93,6 +93,14 @@ class TestSFbugs(unittest.TestCase):
|
||||||
self.assertEqual("+ \t\tI am a bug", diff[2])
|
self.assertEqual("+ \t\tI am a bug", diff[2])
|
||||||
self.assertEqual("? +\n", diff[3])
|
self.assertEqual("? +\n", diff[3])
|
||||||
|
|
||||||
|
def test_mdiff_catch_stop_iteration(self):
|
||||||
|
# Issue #33224
|
||||||
|
self.assertEqual(
|
||||||
|
list(difflib._mdiff(["2"], ["3"], 1)),
|
||||||
|
[((1, '\x00-2\x01'), (1, '\x00+3\x01'), True)],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
patch914575_from1 = """
|
patch914575_from1 = """
|
||||||
1. Beautiful is beTTer than ugly.
|
1. Beautiful is beTTer than ugly.
|
||||||
2. Explicit is better than implicit.
|
2. Explicit is better than implicit.
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
Update difflib.mdiff() for PEP 479. Convert an uncaught StopIteration in a
|
||||||
|
generator into a return-statement.
|
Loading…
Reference in New Issue