https://github.com/python/cpython/commit/bce45bcaf88c579c6fffcc4b20147d60caca5364
commit: bce45bcaf88c579c6fffcc4b20147d60caca5364
branch: main
author: Semyon Moroz <donbar...@proton.me>
committer: AA-Turner <9087854+aa-tur...@users.noreply.github.com>
date: 2025-05-01T04:11:36Z
summary:

gh-130167: Improve ``difflib.IS_LINE_JUNK`` performance by using string methods 
(#130170)

Co-authored-by: Adam Turner <9087854+aa-tur...@users.noreply.github.com>
Co-authored-by: Bénédikt Tran <10796600+picn...@users.noreply.github.com>
Co-authored-by: Hugo van Kemenade <1324225+hug...@users.noreply.github.com>
Co-authored-by: Tim Peters <tim.pet...@gmail.com>

files:
A Misc/NEWS.d/next/Library/2025-02-16-06-25-01.gh-issue-130167.kUg7Rc.rst
M Lib/difflib.py

diff --git a/Lib/difflib.py b/Lib/difflib.py
index 4bba9e7ea5cfa8..f1f4e62514a7bd 100644
--- a/Lib/difflib.py
+++ b/Lib/difflib.py
@@ -1038,11 +1038,9 @@ def _qformat(self, aline, bline, atags, btags):
 # remaining is that perhaps it was really the case that " volatile"
 # was inserted after "private".  I can live with that <wink>.
 
-import re
-
-def IS_LINE_JUNK(line, pat=re.compile(r"\s*(?:#\s*)?$").match):
+def IS_LINE_JUNK(line, pat=None):
     r"""
-    Return True for ignorable line: iff `line` is blank or contains a single 
'#'.
+    Return True for ignorable line: if `line` is blank or contains a single 
'#'.
 
     Examples:
 
@@ -1054,6 +1052,11 @@ def IS_LINE_JUNK(line, 
pat=re.compile(r"\s*(?:#\s*)?$").match):
     False
     """
 
+    if pat is None:
+        # Default: match '#' or the empty string
+        return line.strip() in '#'
+   # Previous versions used the undocumented parameter 'pat' as a
+   # match function. Retain this behaviour for compatibility.
     return pat(line) is not None
 
 def IS_CHARACTER_JUNK(ch, ws=" \t"):
@@ -2027,7 +2030,6 @@ def 
make_table(self,fromlines,tolines,fromdesc='',todesc='',context=False,
                      replace('\1','</span>'). \
                      replace('\t','&nbsp;')
 
-del re
 
 def restore(delta, which):
     r"""
diff --git 
a/Misc/NEWS.d/next/Library/2025-02-16-06-25-01.gh-issue-130167.kUg7Rc.rst 
b/Misc/NEWS.d/next/Library/2025-02-16-06-25-01.gh-issue-130167.kUg7Rc.rst
new file mode 100644
index 00000000000000..3d397084fc136c
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2025-02-16-06-25-01.gh-issue-130167.kUg7Rc.rst
@@ -0,0 +1 @@
+Improve speed of :func:`difflib.IS_LINE_JUNK`. Patch by Semyon Moroz.

_______________________________________________
Python-checkins mailing list -- python-checkins@python.org
To unsubscribe send an email to python-checkins-le...@python.org
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: arch...@mail-archive.com

Reply via email to