Turn SyntasWarning into SyntaxError for all code entered
authorGuido van Rossum <guido@python.org>
Mon, 26 Mar 2001 17:41:35 +0000 (17:41 +0000)
committerGuido van Rossum <guido@python.org>
Mon, 26 Mar 2001 17:41:35 +0000 (17:41 +0000)
interactively.

Tools/idle/PyShell.py

index 86c0f6b0ae4bc1f1bee004ee4770542bc06bd731..bae4e16d7e0645dfbdb268e30480d2394ef99915 100644 (file)
@@ -5,6 +5,7 @@ import sys
 import string
 import getopt
 import re
+import warnings
 
 import linecache
 from code import InteractiveInterpreter
@@ -180,7 +181,14 @@ class ModifiedInterpreter(InteractiveInterpreter):
         # Extend base class to stuff the source in the line cache first
         filename = self.stuffsource(source)
         self.more = 0
-        return InteractiveInterpreter.runsource(self, source, filename)
+        self.save_warnings_filters = warnings.filters[:]
+        warnings.filterwarnings(action="error", category=SyntaxWarning)
+        try:
+            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
 
     def stuffsource(self, source):
         # Stuff source in the filename cache
@@ -249,6 +257,9 @@ class ModifiedInterpreter(InteractiveInterpreter):
 
     def runcode(self, code):
         # Override base class method
+        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()