So, this is the loop http://bazaar.launchpad.net/~aptdaemon-
developers/aptdaemon/main/view/head:/aptdaemon/gtk3widgets.py#L1114
for line in difflib.unified_diff(from_lines, to_lines, lineterm=""):
if line.startswith("@@"):
match = re.match(self.REGEX_RANGE, line)
if not match:
continue
line_number = int(match.group("from_start"))
if line_number > 1:
insert_tagged_text(iter, self.ELLIPSIS, "default")
elif line.startswith("---") or line.startswith("+++"):
continue
Note the 'if not match: continue' after the REGEX_RANGE lookup - and
REGEX_RANGE is:
REGEX_RANGE = "^@@ \-(?P<from_start>[0-9]+),(?P<from_context>[0-9]+) " \
"\+(?P<to_start>[0-9]+),(?P<to_context>[0-9]+) @@"
Now difflib.py has this for its output:
first, last = group[0], group[-1]
file1_range = _format_range_unified(first[1], last[2])
file2_range = _format_range_unified(first[3], last[4])
yield '@@ -{} +{} @@{}'.format(file1_range, file2_range, lineterm)
And if you look at _format_range_unified it has this:
# Per the diff spec at http://www.unix.org/single_unix_specification/
beginning = start + 1 # lines start numbering with one
length = stop - start
if length == 1:
return '{}'.format(beginning)
if not length:
beginning -= 1 # empty ranges begin at line just before the range
return '{},{}'.format(beginning, length)
So if the diff range is precisely 1 line long, the output will be
@@ -12 +12,13 @@
But the regex aptdaemon has expects x,y never just x.
So - bad regex, fix that and you should be good. May need to tweak the
assignment code of course.
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1120322
Title:
update-manager crashed with UnboundLocalError in show_diff(): local
variable 'line_number' referenced before assignment
To manage notifications about this bug go to:
https://bugs.launchpad.net/aptdaemon/+bug/1120322/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs