code: def modified_lines_from_udiff(udiff):
      
      chunks = re.split('\n@@ [^\n]+\n', udiff)[1:]
  
      line_numbers = re.findall('@@\s[+-]\d+,\d+ \+(\d+)', udiff)
      line_numbers = list(map(int, line_numbers))
  
      for c, start in zip(chunks, line_numbers):
          ilines = enumerate((line for line in c.splitlines()
                              if not line.startswith('-')),
                             start=start)
          added_lines = [i for i, line in ilines if line.startswith('+')]
          if added_lines:
              yield (added_lines[0], added_lines[-1])
docs: Extract from a udiff an iterator of tuples of (start, end) line
      numbers.