Author: gstein Date: Fri Dec 15 09:44:03 2023 New Revision: 1914679 URL: http://svn.apache.org/viewvc?rev=1914679&view=rev Log: class DifflibDiffContent does not work, and maybe never did. There is no .next() method on the unified_diff() result object. While it would be possible to use the next() function, it is better to just remove this entirely and require the host OS to have a diff executable (not a hard requirement).
* tools/hook-scripts/mailer/mailer.py: (DiffGenerator.__getitem__): remove OSError exception, as the diff executable must be present. (class DifflibDiffContent): removed. Modified: subversion/trunk/tools/hook-scripts/mailer/mailer.py Modified: subversion/trunk/tools/hook-scripts/mailer/mailer.py URL: http://svn.apache.org/viewvc/subversion/trunk/tools/hook-scripts/mailer/mailer.py?rev=1914679&r1=1914678&r2=1914679&view=diff ============================================================================== --- subversion/trunk/tools/hook-scripts/mailer/mailer.py (original) +++ subversion/trunk/tools/hook-scripts/mailer/mailer.py Fri Dec 15 09:44:03 2023 @@ -1016,17 +1016,13 @@ class DiffGenerator: if binary: content = src_fname = dst_fname = None else: - src_fname, dst_fname = diff.get_files() - try: + src_fname, dst_fname = diff.get_files() content = DiffContent(self.cfg.get_diff_cmd(self.group, { 'label_from' : label1, 'label_to' : label2, 'from' : src_fname, 'to' : dst_fname, })) - except OSError: - # diff command does not exist, try difflib.unified_diff() - content = DifflibDiffContent(label1, label2, src_fname, dst_fname) # return a data item for this diff return _data( @@ -1101,36 +1097,6 @@ class DiffContent: raise IndexError line, ltype, self.seen_change = _classify_diff_line(line, self.seen_change) - return _data( - raw=line, - text=line[1:-1], # remove indicator and newline - type=ltype, - ) - - -class DifflibDiffContent(): - "This is a generator-like object returning annotated lines of a diff." - - def __init__(self, label_from, label_to, from_file, to_file): - import difflib - self.seen_change = False - fromlines = open(from_file, 'U').readlines() - tolines = open(to_file, 'U').readlines() - self.diff = difflib.unified_diff(fromlines, tolines, - label_from, label_to) - - def __nonzero__(self): - # we always have some items - return True - - def __getitem__(self, idx): - - try: - line = self.diff.next() - except StopIteration: - raise IndexError - - line, ltype, self.seen_change = _classify_diff_line(line, self.seen_change) return _data( raw=line, text=line[1:-1], # remove indicator and newline