Skip to content

difflib.HtmlDiff produces different output from difflib.ndiff #71896

Closed

Description

@SilentGhost
BPO 27709
Nosy @loewis, @terryjreedy, @j, @tirkarthi

Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.

Show more details

GitHub fields:

assignee = None
closed_at = None
created_at = <Date 2016-08-08.15:40:57.110>
labels = ['type-bug', 'library']
title = 'difflib.HtmlDiff produces different output from difflib.ndiff'
updated_at = <Date 2018-09-22.18:00:18.520>
user = 'https://bugs.python.org/SilentGhost'

bugs.python.org fields:

activity = <Date 2018-09-22.18:00:18.520>
actor = 'xtreak'
assignee = 'none'
closed = False
closed_date = None
closer = None
components = ['Library (Lib)']
creation = <Date 2016-08-08.15:40:57.110>
creator = 'SilentGhost'
dependencies = []
files = []
hgrepos = []
issue_num = 27709
keywords = ['patch']
message_count = 2.0
messages = ['272173', '272196']
nosy_count = 6.0
nosy_names = ['loewis', 'terry.reedy', 'eli.bendersky', 'SilentGhost', 'jlwing', 'xtreak']
pr_nums = []
priority = 'normal'
resolution = None
stage = 'needs patch'
status = 'open'
superseder = None
type = 'behavior'
url = 'https://bugs.python.org/issue27709'
versions = ['Python 3.5', 'Python 3.6']

Linked PRs

Activity

  1. SilentGhost commented on Aug 8, 2016

    SilentGhostmannequin
    MannequinAuthor

    msg264842 in bpo-26945 reports an odd results of HtmlDiff.make_file, digging into it I've noticed couple of things: different output to one generated directly from difflib.ndiff and underlying issue further up the stack that generates same faulty output with a slightly modified files.

    The patch I'm attaching fixes the issue with different outputs, from make_file and ndiff, by not removing EOL characters, I had to re-generate expected test output file.

  2. added
    stdlibStandard Library Python modules in the Lib/ directory
    type-bugAn unexpected behavior, bug, or error
    on Aug 8, 2016
  3. SilentGhost commented on Aug 8, 2016

    SilentGhostmannequin
    MannequinAuthor

    The degenerate behaviour appears ultimately due to the autojunk heuristic. Given that autojunk defaults to True and there isn't any way to change via most user-facing functions, I don't think there is an easy resolution that can be found here. I'm going to withdraw the earlier patch, since it feels like a half-measure which enable correct behaviour by accident.

  4. transferred this issue fromon Apr 10, 2022