From 8a967050edd043a052238ced48b9d94119505830 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sat, 21 Nov 2020 17:05:19 +0200 Subject: [PATCH 1/2] bpo-42426: IDLE: Fix reporting offset of the RE error in searchengine --- Lib/idlelib/idle_test/test_searchengine.py | 4 +++- Lib/idlelib/searchengine.py | 11 ++++------- .../IDLE/2020-11-21-17-21-21.bpo-42426.kNnPoC.rst | 1 + 3 files changed, 8 insertions(+), 8 deletions(-) create mode 100644 Misc/NEWS.d/next/IDLE/2020-11-21-17-21-21.bpo-42426.kNnPoC.rst diff --git a/Lib/idlelib/idle_test/test_searchengine.py b/Lib/idlelib/idle_test/test_searchengine.py index 3d26d62a95a873..945edfa46225e5 100644 --- a/Lib/idlelib/idle_test/test_searchengine.py +++ b/Lib/idlelib/idle_test/test_searchengine.py @@ -175,11 +175,13 @@ def test_getprog(self): engine.setpat('') Equal(engine.getprog(), None) + self.assertEqual(Mbox.showerror.message, + 'Error: Empty regular expression') engine.setpat('+') engine.revar.set(1) Equal(engine.getprog(), None) self.assertEqual(Mbox.showerror.message, - 'Error: nothing to repeat at position 0\nPattern: +') + 'Error: nothing to repeat\nPattern: +\nOffset: 0') def test_report_error(self): showerror = Mbox.showerror diff --git a/Lib/idlelib/searchengine.py b/Lib/idlelib/searchengine.py index 911e7d4691cac1..a50038e282ba6c 100644 --- a/Lib/idlelib/searchengine.py +++ b/Lib/idlelib/searchengine.py @@ -84,20 +84,17 @@ def getprog(self): flags = flags | re.IGNORECASE try: prog = re.compile(pat, flags) - except re.error as what: - args = what.args - msg = args[0] - col = args[1] if len(args) >= 2 else -1 - self.report_error(pat, msg, col) + except re.error as e: + self.report_error(pat, e.msg, e.pos) return None return prog - def report_error(self, pat, msg, col=-1): + def report_error(self, pat, msg, col=None): # Derived class could override this with something fancier msg = "Error: " + str(msg) if pat: msg = msg + "\nPattern: " + str(pat) - if col >= 0: + if col is not None: msg = msg + "\nOffset: " + str(col) tkMessageBox.showerror("Regular expression error", msg, master=self.root) diff --git a/Misc/NEWS.d/next/IDLE/2020-11-21-17-21-21.bpo-42426.kNnPoC.rst b/Misc/NEWS.d/next/IDLE/2020-11-21-17-21-21.bpo-42426.kNnPoC.rst new file mode 100644 index 00000000000000..0ab7972aad982e --- /dev/null +++ b/Misc/NEWS.d/next/IDLE/2020-11-21-17-21-21.bpo-42426.kNnPoC.rst @@ -0,0 +1 @@ +Fix reporting offset of the RE error in searchengine. From ed8d9b9f563f0b73f59173d2d2ec36e97cb52c83 Mon Sep 17 00:00:00 2001 From: Terry Jan Reedy Date: Sat, 21 Nov 2020 21:53:03 -0500 Subject: [PATCH 2/2] Add IDLE news item. Use Equal abbreviation. --- Lib/idlelib/NEWS.txt | 2 ++ Lib/idlelib/idle_test/test_searchengine.py | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt index c9f28f62a1a5d1..34f28d6084f7a4 100644 --- a/Lib/idlelib/NEWS.txt +++ b/Lib/idlelib/NEWS.txt @@ -3,6 +3,8 @@ Released on 2021-10-04? ====================================== +bpo-42426: Fix reporting offset of the RE error in searchengine. + bpo-42416: Get docstrings for IDLE calltips more often by using inspect.getdoc. diff --git a/Lib/idlelib/idle_test/test_searchengine.py b/Lib/idlelib/idle_test/test_searchengine.py index 945edfa46225e5..f8401ce9380f25 100644 --- a/Lib/idlelib/idle_test/test_searchengine.py +++ b/Lib/idlelib/idle_test/test_searchengine.py @@ -175,13 +175,13 @@ def test_getprog(self): engine.setpat('') Equal(engine.getprog(), None) - self.assertEqual(Mbox.showerror.message, - 'Error: Empty regular expression') + Equal(Mbox.showerror.message, + 'Error: Empty regular expression') engine.setpat('+') engine.revar.set(1) Equal(engine.getprog(), None) - self.assertEqual(Mbox.showerror.message, - 'Error: nothing to repeat\nPattern: +\nOffset: 0') + Equal(Mbox.showerror.message, + 'Error: nothing to repeat\nPattern: +\nOffset: 0') def test_report_error(self): showerror = Mbox.showerror