blob: 22ffd7bada783736b3cdc79bb7ba5af9ffcfc6c5 [file] [log] [blame]
Fred Drake295da241998-08-10 19:42:37 +00001\section{\module{pprint} ---
Fred Drakef8ca7d82000-10-10 17:03:45 +00002 Data pretty printer}
Fred Drakeb91e9341998-07-23 17:59:49 +00003
Fred Drake2a2f1fe1999-02-18 21:10:32 +00004\declaremodule{standard}{pprint}
Fred Drakeb91e9341998-07-23 17:59:49 +00005\modulesynopsis{Data pretty printer.}
Fred Drake2a2f1fe1999-02-18 21:10:32 +00006\moduleauthor{Fred L. Drake, Jr.}{fdrake@acm.org}
7\sectionauthor{Fred L. Drake, Jr.}{fdrake@acm.org}
Fred Drakeb91e9341998-07-23 17:59:49 +00008
Fred Drakeee8d3ca1997-07-18 20:41:58 +00009
Fred Drake2c8aa651998-02-20 06:03:52 +000010The \module{pprint} module provides a capability to ``pretty-print''
Fred Drakeee8d3ca1997-07-18 20:41:58 +000011arbitrary Python data structures in a form which can be used as input
12to the interpreter. If the formatted structures include objects which
13are not fundamental Python types, the representation may not be
14loadable. This may be the case if objects such as files, sockets,
15classes, or instances are included, as well as many other builtin
16objects which are not representable as Python constants.
17
18The formatted representation keeps objects on a single line if it can,
Fred Drake12d9eac1997-07-24 15:39:16 +000019and breaks them onto multiple lines if they don't fit within the
Fred Drake2c8aa651998-02-20 06:03:52 +000020allowed width. Construct \class{PrettyPrinter} objects explicitly if
21you need to adjust the width constraint.
Fred Drakeee8d3ca1997-07-18 20:41:58 +000022
Fred Drake2c8aa651998-02-20 06:03:52 +000023The \module{pprint} module defines one class:
Fred Drakeee8d3ca1997-07-18 20:41:58 +000024
Fred Drakeee8d3ca1997-07-18 20:41:58 +000025
Fred Drake12d9eac1997-07-24 15:39:16 +000026% First the implementation class:
Fred Drakeee8d3ca1997-07-18 20:41:58 +000027
Fred Drake2c8aa651998-02-20 06:03:52 +000028\begin{classdesc}{PrettyPrinter}{...}
29Construct a \class{PrettyPrinter} instance. This constructor
30understands several keyword parameters. An output stream may be set
31using the \var{stream} keyword; the only method used on the stream
32object is the file protocol's \method{write()} method. If not
33specified, the \class{PrettyPrinter} adopts \code{sys.stdout}. Three
34additional parameters may be used to control the formatted
35representation. The keywords are \var{indent}, \var{depth}, and
36\var{width}. The amount of indentation added for each recursive level
37is specified by \var{indent}; the default is one. Other values can
38cause output to look a little odd, but can make nesting easier to
39spot. The number of levels which may be printed is controlled by
40\var{depth}; if the data structure being printed is too deep, the next
41contained level is replaced by \samp{...}. By default, there is no
42constraint on the depth of the objects being formatted. The desired
43output width is constrained using the \var{width} parameter; the
44default is eighty characters. If a structure cannot be formatted
45within the constrained width, a best effort will be made.
Fred Drakeee8d3ca1997-07-18 20:41:58 +000046
47\begin{verbatim}
Fred Drake12d9eac1997-07-24 15:39:16 +000048>>> import pprint, sys
Fred Drakeee8d3ca1997-07-18 20:41:58 +000049>>> stuff = sys.path[:]
Fred Drake12d9eac1997-07-24 15:39:16 +000050>>> stuff.insert(0, stuff[:])
Fred Drakeee8d3ca1997-07-18 20:41:58 +000051>>> pp = pprint.PrettyPrinter(indent=4)
52>>> pp.pprint(stuff)
53[ [ '',
Fred Drake12d9eac1997-07-24 15:39:16 +000054 '/usr/local/lib/python1.5',
55 '/usr/local/lib/python1.5/test',
56 '/usr/local/lib/python1.5/sunos5',
57 '/usr/local/lib/python1.5/sharedmodules',
58 '/usr/local/lib/python1.5/tkinter'],
Fred Drakeee8d3ca1997-07-18 20:41:58 +000059 '',
Fred Drake12d9eac1997-07-24 15:39:16 +000060 '/usr/local/lib/python1.5',
61 '/usr/local/lib/python1.5/test',
62 '/usr/local/lib/python1.5/sunos5',
63 '/usr/local/lib/python1.5/sharedmodules',
64 '/usr/local/lib/python1.5/tkinter']
Fred Drakeee8d3ca1997-07-18 20:41:58 +000065>>>
66>>> import parser
67>>> tup = parser.ast2tuple(
68... parser.suite(open('pprint.py').read()))[1][1][1]
69>>> pp = pprint.PrettyPrinter(depth=6)
70>>> pp.pprint(tup)
71(266, (267, (307, (287, (288, (...))))))
72\end{verbatim}
Fred Drake2c8aa651998-02-20 06:03:52 +000073\end{classdesc}
Fred Drake12d9eac1997-07-24 15:39:16 +000074
75
76% Now the derivative functions:
77
Fred Drake2c8aa651998-02-20 06:03:52 +000078The \class{PrettyPrinter} class supports several derivative functions:
Fred Drake12d9eac1997-07-24 15:39:16 +000079
80\begin{funcdesc}{pformat}{object}
81Return the formatted representation of \var{object} as a string. The
82default parameters for formatting are used.
83\end{funcdesc}
84
85\begin{funcdesc}{pprint}{object\optional{, stream}}
86Prints the formatted representation of \var{object} on \var{stream},
87followed by a newline. If \var{stream} is omitted, \code{sys.stdout}
88is used. This may be used in the interactive interpreter instead of a
Fred Drake2c8aa651998-02-20 06:03:52 +000089\keyword{print} statement for inspecting values. The default
90parameters for formatting are used.
Fred Drake12d9eac1997-07-24 15:39:16 +000091
92\begin{verbatim}
93>>> stuff = sys.path[:]
94>>> stuff.insert(0, stuff)
95>>> pprint.pprint(stuff)
96[<Recursion on list with id=869440>,
97 '',
98 '/usr/local/lib/python1.5',
99 '/usr/local/lib/python1.5/test',
100 '/usr/local/lib/python1.5/sunos5',
101 '/usr/local/lib/python1.5/sharedmodules',
102 '/usr/local/lib/python1.5/tkinter']
103\end{verbatim}
104\end{funcdesc}
105
106\begin{funcdesc}{isreadable}{object}
107Determine if the formatted representation of \var{object} is
108``readable,'' or can be used to reconstruct the value using
Fred Drake14c198b1998-04-03 07:11:32 +0000109\function{eval()}\bifuncindex{eval}. This always returns false for
Fred Drake2c8aa651998-02-20 06:03:52 +0000110recursive objects.
Fred Drake12d9eac1997-07-24 15:39:16 +0000111
112\begin{verbatim}
113>>> pprint.isreadable(stuff)
1140
115\end{verbatim}
116\end{funcdesc}
117
118\begin{funcdesc}{isrecursive}{object}
119Determine if \var{object} requires a recursive representation.
120\end{funcdesc}
121
122
123One more support function is also defined:
124
125\begin{funcdesc}{saferepr}{object}
126Return a string representation of \var{object}, protected against
127recursive data structures. If the representation of \var{object}
128exposes a recursive entry, the recursive reference will be represented
Fred Drake2303d311997-12-17 14:07:25 +0000129as \samp{<Recursion on \var{typename} with id=\var{number}>}. The
Fred Drake12d9eac1997-07-24 15:39:16 +0000130representation is not otherwise formatted.
Fred Drakeb55f9d31998-03-08 07:03:27 +0000131\end{funcdesc}
Fred Drake12d9eac1997-07-24 15:39:16 +0000132
Fred Drakeb55f9d31998-03-08 07:03:27 +0000133% This example is outside the {funcdesc} to keep it from running over
134% the right margin.
Fred Drake12d9eac1997-07-24 15:39:16 +0000135\begin{verbatim}
136>>> pprint.saferepr(stuff)
Fred Drake14c198b1998-04-03 07:11:32 +0000137"[<Recursion on list with id=682968>, '', '/usr/local/lib/python1.5', '/usr/loca
138l/lib/python1.5/test', '/usr/local/lib/python1.5/sunos5', '/usr/local/lib/python
1391.5/sharedmodules', '/usr/local/lib/python1.5/tkinter']"
Fred Drake12d9eac1997-07-24 15:39:16 +0000140\end{verbatim}
Fred Drakeee8d3ca1997-07-18 20:41:58 +0000141
142
143\subsection{PrettyPrinter Objects}
Fred Drake2c8aa651998-02-20 06:03:52 +0000144\label{PrettyPrinter Objects}
Fred Drakeee8d3ca1997-07-18 20:41:58 +0000145
Fred Drakeb55f9d31998-03-08 07:03:27 +0000146\class{PrettyPrinter} instances have the following methods:
Fred Drakeee8d3ca1997-07-18 20:41:58 +0000147
Fred Drakeee8d3ca1997-07-18 20:41:58 +0000148
Fred Drake8fe533e1998-03-27 05:27:08 +0000149\begin{methoddesc}{pformat}{object}
Fred Drakeee8d3ca1997-07-18 20:41:58 +0000150Return the formatted representation of \var{object}. This takes into
Fred Drake8fe533e1998-03-27 05:27:08 +0000151Account the options passed to the \class{PrettyPrinter} constructor.
152\end{methoddesc}
Fred Drakeee8d3ca1997-07-18 20:41:58 +0000153
Fred Drake8fe533e1998-03-27 05:27:08 +0000154\begin{methoddesc}{pprint}{object}
Fred Drakeee8d3ca1997-07-18 20:41:58 +0000155Print the formatted representation of \var{object} on the configured
156stream, followed by a newline.
Fred Drake8fe533e1998-03-27 05:27:08 +0000157\end{methoddesc}
Fred Drakeee8d3ca1997-07-18 20:41:58 +0000158
159The following methods provide the implementations for the
160corresponding functions of the same names. Using these methods on an
Fred Drake2c8aa651998-02-20 06:03:52 +0000161instance is slightly more efficient since new \class{PrettyPrinter}
162objects don't need to be created.
Fred Drakeee8d3ca1997-07-18 20:41:58 +0000163
Fred Drake8fe533e1998-03-27 05:27:08 +0000164\begin{methoddesc}{isreadable}{object}
Fred Drakeee8d3ca1997-07-18 20:41:58 +0000165Determine if the formatted representation of the object is
166``readable,'' or can be used to reconstruct the value using
Fred Drake2c8aa651998-02-20 06:03:52 +0000167\function{eval()}\bifuncindex{eval}. Note that this returns false for
168recursive objects. If the \var{depth} parameter of the
169\class{PrettyPrinter} is set and the object is deeper than allowed,
170this returns false.
Fred Drake8fe533e1998-03-27 05:27:08 +0000171\end{methoddesc}
Fred Drakeee8d3ca1997-07-18 20:41:58 +0000172
Fred Drake8fe533e1998-03-27 05:27:08 +0000173\begin{methoddesc}{isrecursive}{object}
Fred Drakeee8d3ca1997-07-18 20:41:58 +0000174Determine if the object requires a recursive representation.
Fred Drake8fe533e1998-03-27 05:27:08 +0000175\end{methoddesc}
Fred Drakeaee113d2002-04-02 05:08:35 +0000176
177This method is provided as a hook to allow subclasses to modify the
178way objects are converted to strings. The default implementation uses
179the internals of the \function{saferepr()} implementation.
180
181\begin{methoddesc}{format}{object, context, maxlevels, level}
182Returns three values: the formatted version of \var{object} as a
183string, a flag indicating whether the result is readable, and a flag
184indicating whether recursion was detected. The first argument is the
185object to be presented. The second is a dictionary which contains the
186\function{id()} of objects that are part of the current presentation
187context (direct and indirect containers for \var{object} that are
188affecting the presentation) as the keys; if an object needs to be
189presented which is already represented in \var{context}, the third
190return value should be true. Recursive calls to the \method{format()}
191method should add additionaly entries for containers to this
192dictionary. The fourth argument, \var{maxlevels}, gives the requested
193limit to recursion; this will be \code{0} if there is no requested
194limit. This argument should be passed unmodified to recursive calls.
195The fourth argument, \var{level} gives the current level; recursive
196calls should be passed a value less than that of the current call.
197\versionadded{2.3}
198\end{methoddesc}