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[:]
'/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}
_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."""
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'}
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__().