From 58b8b95cdb577694e48a5f673acb58b454dd3f8b Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Wed, 1 Apr 2009 21:54:21 +0000 Subject: [PATCH] In Pdb, stop assigning values to __builtin__._ which interferes with the one commonly installed by gettext. --- Lib/pdb.py | 9 +++++++++ Misc/NEWS | 3 +++ 2 files changed, 12 insertions(+) diff --git a/Lib/pdb.py b/Lib/pdb.py index 3f76032cff4..9025be1af12 100755 --- a/Lib/pdb.py +++ b/Lib/pdb.py @@ -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', '', '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(''): diff --git a/Misc/NEWS b/Misc/NEWS index 51291641e7c..b1e90bfcec4 100644 --- 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