[Python-Dev] Issue 2986: difflib.SequenceMatcher is partly broken (original) (raw)

Tim Peters tim.peters at gmail.com
Wed Jul 14 22:40:54 CEST 2010


[Steven D'Aprano]

4. I normally dislike global flags, but this is one time it might be less-worse than the alternatives.

Modify SequenceMatcher to test for the value of a global flag, defaulting to False if it doesn't exist. ... The flag will only exist if the caller explicitly creates it: import difflib difflib.disableheuristic = True ...

A module global is a non-starter for me (for all the usual reasons about the potentially horrid sociopathic consequences of one piece of an app changing behavior for the entire app - fine if it's a small app wholly understood by the user, potential nightmares if it's a large app nobody understands <0.3 wink>).

[Nick Coghlan]

Why make it a global? A property on the SequenceMatcher object should be able to do the right thing. ...

The pragmatic drawback is that the heuristics we're trying to disable typically execute during SequenceMatcher instance construction. That's why it makes most sense to convey the information to the constructor. Setting a property after the instance is created is typically too late (unless several other SequenceMatcher methods are rewritten to delay analyzing the second sequence).

A flag on the object rather than a per-call flag may actually be the better API here anyway.

The call in question here is the constructor (init), so there's no real difference between "on the object" and "per call" in this case.



More information about the Python-Dev mailing list