Index: Doc/library/difflib.rst =================================================================== --- Doc/library/difflib.rst (revision 86929) +++ Doc/library/difflib.rst (working copy) @@ -358,6 +358,13 @@ .. versionadded:: 3.2 The *autojunk* parameter. + SequenceMatcher objects get three data attributes: *bjunk* is the + set of elements of b for which *isjunk* is True; *bpopular* is the set of non- + junk elements considered popular by the heuristic (if it is not disabled); + *b2j* is a dict mapping the remaining elements of b to a list of positions where + they occur. All three are reset whenever *b* is reset with :meth:`set_seqs` + or :meth:`set_seq2`. + :class:`SequenceMatcher` objects have the following methods: @@ -538,7 +545,7 @@ SequenceMatcher Examples ------------------------ -This example compares two strings, considering blanks to be "junk:" +This example compares two strings, considering blanks to be "junk": >>> s = SequenceMatcher(lambda x: x == " ", ... "private Thread currentThread;", Index: Lib/difflib.py =================================================================== --- Lib/difflib.py (revision 86929) +++ Lib/difflib.py (working copy) @@ -213,6 +213,10 @@ # (at least 200 elements) and x accounts for more than 1 + 1% of # its elements (when autojunk is enabled). # DOES NOT WORK for x in a! + # bjunk + # the items in b for which isjunk is True. + # bpopular + # nonjunk items in b treated as junk by the heuristic (if used). self.isjunk = isjunk self.a = self.b = None @@ -321,7 +325,7 @@ indices.append(i) # Purge junk elements - junk = set() + self.bjunk = junk = set() isjunk = self.isjunk if isjunk: for elt in list(b2j.keys()): # using list() since b2j is modified @@ -330,7 +334,7 @@ del b2j[elt] # Purge popular elements that are not junk - popular = set() + self.bpopular = popular = set() n = len(b) if self.autojunk and n >= 200: ntest = n // 100 + 1