From c8de4585a6e52e1186828dd929671d3a6c36db95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Walter=20D=C3=B6rwald?= Date: Wed, 3 Dec 2003 20:26:05 +0000 Subject: Add parameters indent, width and depth to pprint.pprint() and pprint.pformat() and pass them along to the PrettyPrinter constructor. --- Doc/lib/libpprint.tex | 20 ++++++++++++++------ Lib/pprint.py | 9 +++++---- Lib/test/test_pprint.py | 6 ++++++ Misc/NEWS | 3 +++ 4 files changed, 28 insertions(+), 10 deletions(-) diff --git a/Doc/lib/libpprint.tex b/Doc/lib/libpprint.tex index 66f64e2..b1fd9fa 100644 --- a/Doc/lib/libpprint.tex +++ b/Doc/lib/libpprint.tex @@ -77,17 +77,23 @@ within the constrained width, a best effort will be made. The \class{PrettyPrinter} class supports several derivative functions: -\begin{funcdesc}{pformat}{object} -Return the formatted representation of \var{object} as a string. The -default parameters for formatting are used. +\begin{funcdesc}{pformat}{object\optional{, indent\optional{, +width\optional{, depth}}}} +Return the formatted representation of \var{object} as a string. \var{indent}, +\var{width} and \var{depth} will be passed to the \class{PrettyPrinter} +constructor as formatting parameters. +\versionchanged[The parameters \var{indent}, \var{width} and \var{depth} +were added]{2.4} \end{funcdesc} -\begin{funcdesc}{pprint}{object\optional{, stream}} +\begin{funcdesc}{pprint}{object\optional{, stream\optional{, +indent\optional{, width\optional{, depth}}}}} Prints the formatted representation of \var{object} on \var{stream}, followed by a newline. If \var{stream} is omitted, \code{sys.stdout} is used. This may be used in the interactive interpreter instead of a -\keyword{print} statement for inspecting values. The default -parameters for formatting are used. +\keyword{print} statement for inspecting values. \var{indent}, +\var{width} and \var{depth} will be passed to the \class{PrettyPrinter} +constructor as formatting parameters. \begin{verbatim} >>> stuff = sys.path[:] @@ -101,6 +107,8 @@ parameters for formatting are used. '/usr/local/lib/python1.5/sharedmodules', '/usr/local/lib/python1.5/tkinter'] \end{verbatim} +\versionchanged[The parameters \var{indent}, \var{width} and \var{depth} +were added]{2.4} \end{funcdesc} \begin{funcdesc}{isreadable}{object} diff --git a/Lib/pprint.py b/Lib/pprint.py index 19b9661..d938122 100644 --- a/Lib/pprint.py +++ b/Lib/pprint.py @@ -48,14 +48,15 @@ _len = len _type = type -def pprint(object, stream=None): +def pprint(object, stream=None, indent=1, width=80, depth=None): """Pretty-print a Python object to a stream [default is sys.sydout].""" - printer = PrettyPrinter(stream=stream) + printer = PrettyPrinter( + stream=stream, indent=indent, width=width, depth=depth) printer.pprint(object) -def pformat(object): +def pformat(object, indent=1, width=80, depth=None): """Format a Python object into a pretty-printed representation.""" - return PrettyPrinter().pformat(object) + return PrettyPrinter(indent=indent, width=width, depth=depth).pformat(object) def saferepr(object): """Version of repr() which can handle recursive data structures.""" diff --git a/Lib/test/test_pprint.py b/Lib/test/test_pprint.py index d66b78a..a61bb66 100644 --- a/Lib/test/test_pprint.py +++ b/Lib/test/test_pprint.py @@ -154,6 +154,12 @@ class QueryTestCase(unittest.TestCase): for type in [tuple, tuple2]: self.assertEqual(pprint.pformat(type(o)), exp) + # indent parameter + o = range(100) + exp = '[ %s]' % ',\n '.join(map(str, o)) + for type in [list, list2]: + self.assertEqual(pprint.pformat(type(o), indent=4), exp) + def test_subclassing(self): o = {'names with spaces': 'should be presented using repr()', 'others.should.not.be': 'like.this'} diff --git a/Misc/NEWS b/Misc/NEWS index c21a6c6..78118cf 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -170,6 +170,9 @@ Extension modules Library ------- +- pprint.pprint() and pprint.pformat() now have additional parameters + indent, width and depth. + - Patch #750542: pprint now will pretty print subclasses of list, tuple and dict too, as long as they don't overwrite __repr__(). -- cgit v0.12