[Python-checkins] bpo-37824: Properly handle user input warnings in IDLE shell. (GH-15500)

Miss Islington (bot) webhook-mailer at python.org
Mon Aug 26 02:53:42 EDT 2019


https://github.com/python/cpython/commit/1b15914ebb46e549ff0965c789ef03b4bac2a890
commit: 1b15914ebb46e549ff0965c789ef03b4bac2a890
branch: 3.7
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: GitHub <noreply at github.com>
date: 2019-08-25T23:53:38-07:00
summary:

bpo-37824: Properly handle user input warnings in IDLE shell. (GH-15500)


Cease turning SyntaxWarnings into SyntaxErrors.
(cherry picked from commit 1039f39c9c6edb4c185856c19316d3a4eb561c38)

Co-authored-by: Terry Jan Reedy <tjreedy at udel.edu>

files:
A Misc/NEWS.d/next/IDLE/2019-08-26-00-41-53.bpo-37824.YY5jAI.rst
M Lib/idlelib/NEWS.txt
M Lib/idlelib/pyshell.py

diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt
index b579c2c1a6dd..e414ead0762f 100644
--- a/Lib/idlelib/NEWS.txt
+++ b/Lib/idlelib/NEWS.txt
@@ -3,6 +3,12 @@ Released on 2019-09-30?
 ======================================
 
 
+bpo-37824: Properly handle user input warnings in IDLE shell.
+Cease turning SyntaxWarnings into SyntaxErrors.
+
+bpo-37929: IDLE Settings dialog now closes properly when there is no
+shell window.
+
 bpo-37849: Fix completions list appearing too high or low when shown
 above the current line.
 
diff --git a/Lib/idlelib/pyshell.py b/Lib/idlelib/pyshell.py
index 87401f33f55f..ea9465568bd9 100755
--- a/Lib/idlelib/pyshell.py
+++ b/Lib/idlelib/pyshell.py
@@ -394,7 +394,6 @@ def __init__(self, tkconsole):
         self.tkconsole = tkconsole
         locals = sys.modules['__main__'].__dict__
         InteractiveInterpreter.__init__(self, locals=locals)
-        self.save_warnings_filters = None
         self.restarting = False
         self.subprocess_arglist = None
         self.port = PORT
@@ -665,8 +664,6 @@ def runsource(self, source):
         "Extend base class method: Stuff the source in the line cache first"
         filename = self.stuffsource(source)
         self.more = 0
-        self.save_warnings_filters = warnings.filters[:]
-        warnings.filterwarnings(action="error", category=SyntaxWarning)
         # at the moment, InteractiveInterpreter expects str
         assert isinstance(source, str)
         #if isinstance(source, str):
@@ -677,14 +674,9 @@ def runsource(self, source):
         #        self.tkconsole.resetoutput()
         #        self.write("Unsupported characters in input\n")
         #        return
-        try:
-            # InteractiveInterpreter.runsource() calls its runcode() method,
-            # which is overridden (see below)
-            return InteractiveInterpreter.runsource(self, source, filename)
-        finally:
-            if self.save_warnings_filters is not None:
-                warnings.filters[:] = self.save_warnings_filters
-                self.save_warnings_filters = None
+        # InteractiveInterpreter.runsource() calls its runcode() method,
+        # which is overridden (see below)
+        return InteractiveInterpreter.runsource(self, source, filename)
 
     def stuffsource(self, source):
         "Stuff source in the filename cache"
@@ -763,9 +755,6 @@ def runcode(self, code):
         if self.tkconsole.executing:
             self.interp.restart_subprocess()
         self.checklinecache()
-        if self.save_warnings_filters is not None:
-            warnings.filters[:] = self.save_warnings_filters
-            self.save_warnings_filters = None
         debugger = self.debugger
         try:
             self.tkconsole.beginexecuting()
diff --git a/Misc/NEWS.d/next/IDLE/2019-08-26-00-41-53.bpo-37824.YY5jAI.rst b/Misc/NEWS.d/next/IDLE/2019-08-26-00-41-53.bpo-37824.YY5jAI.rst
new file mode 100644
index 000000000000..1a1e8a59816a
--- /dev/null
+++ b/Misc/NEWS.d/next/IDLE/2019-08-26-00-41-53.bpo-37824.YY5jAI.rst
@@ -0,0 +1,2 @@
+Properly handle user input warnings in IDLE shell. Cease turning
+SyntaxWarnings into SyntaxErrors.



More information about the Python-checkins mailing list