]> granicus.if.org Git - python/commitdiff
In Pdb, stop assigning values to __builtin__._ which interferes with the one commonly...
authorGeorg Brandl <georg@python.org>
Wed, 1 Apr 2009 21:54:21 +0000 (21:54 +0000)
committerGeorg Brandl <georg@python.org>
Wed, 1 Apr 2009 21:54:21 +0000 (21:54 +0000)
Lib/pdb.py
Misc/NEWS

index 3f76032cff486bf744661d38f98b8da5872c388d..9025be1af12aec42e71156bb8984b14a34b873cc 100755 (executable)
@@ -194,6 +194,12 @@ class Pdb(bdb.Bdb, cmd.Cmd):
         self.cmdloop()
         self.forget()
 
+    def displayhook(self, obj):
+        """Custom displayhook for the exec in default(), which prevents
+        assignment of the _ variable in the builtins.
+        """
+        print obj
+
     def default(self, line):
         if line[:1] == '!': line = line[1:]
         locals = self.curframe.f_locals
@@ -202,13 +208,16 @@ class Pdb(bdb.Bdb, cmd.Cmd):
             code = compile(line + '\n', '<stdin>', 'single')
             save_stdout = sys.stdout
             save_stdin = sys.stdin
+            save_displayhook = sys.displayhook
             try:
                 sys.stdin = self.stdin
                 sys.stdout = self.stdout
+                sys.displayhook = self.displayhook
                 exec code in globals, locals
             finally:
                 sys.stdout = save_stdout
                 sys.stdin = save_stdin
+                sys.displayhook = save_displayhook
         except:
             t, v = sys.exc_info()[:2]
             if type(t) == type(''):
index 51291641e7c9a31a3d8abd8cf47063df6e6ca8b8..b1e90bfcec47639939af57e2a82d8ee7bd89b485 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -202,6 +202,9 @@ Core and Builtins
 Library
 -------
 
+- In Pdb, prevent the reassignment of __builtin__._ by sys.displayhook on
+  printing out values.
+
 - Issue #4572: added SEEK_* symbolic constants to io module.
 
 - Issue #1665206 (partially): Move imports in cgitb to the top of the module