]> granicus.if.org Git - python/commitdiff
Implement a `pp' command, which is like `p' except that it
authorBarry Warsaw <barry@python.org>
Tue, 5 Nov 2002 22:40:20 +0000 (22:40 +0000)
committerBarry Warsaw <barry@python.org>
Tue, 5 Nov 2002 22:40:20 +0000 (22:40 +0000)
pretty-prints the value of its expression argument.

Lib/pdb.py

index 4b0516d28aefa4d0c706c9cb25d36a5d0906c87f..94518aebf65e5e15882c7b6d7d4d56213579266d 100755 (executable)
@@ -11,6 +11,7 @@ import bdb
 from repr import Repr
 import os
 import re
+import pprint
 
 # Create a custom safe Repr instance and increase its maxstring.
 # The default of 30 truncates error messages too easily.
@@ -532,19 +533,29 @@ class Pdb(bdb.Bdb, cmd.Cmd):
             print '*** Not yet returned!'
     do_rv = do_retval
 
-    def do_p(self, arg):
+    def _getval(self, arg):
         try:
-            value = eval(arg, self.curframe.f_globals,
-                            self.curframe.f_locals)
+            return eval(arg, self.curframe.f_globals,
+                        self.curframe.f_locals)
         except:
             t, v = sys.exc_info()[:2]
-            if type(t) == type(''):
+            if isinstance(t, str):
                 exc_type_name = t
             else: exc_type_name = t.__name__
             print '***', exc_type_name + ':', `v`
-            return
+            raise
+
+    def do_p(self, arg):
+        try:
+            print repr(self._getval(arg))
+        except:
+            pass
 
-        print `value`
+    def do_pp(self, arg):
+        try:
+            pprint.pprint(self._getval(arg))
+        except:
+            pass
 
     def do_list(self, arg):
         self.lastcmd = 'list'
@@ -817,6 +828,10 @@ Print the arguments of the current function."""
         print """p expression
 Print the value of the expression."""
 
+    def help_pp(self):
+        print """pp expression
+Pretty-print the value of the expression."""
+
     def help_exec(self):
         print """(!) statement
 Execute the (one-line) statement in the context of