blob: 45d9c873ac0a8e7ea3c679488739ebc807da201e [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
Walter Dörwaldc8de4582003-12-03 20:26:05 +000080\begin{funcdesc}{pformat}{object\optional{, indent\optional{,
81width\optional{, depth}}}}
82Return the formatted representation of \var{object} as a string. \var{indent},
83\var{width} and \var{depth} will be passed to the \class{PrettyPrinter}
84constructor as formatting parameters.
85\versionchanged[The parameters \var{indent}, \var{width} and \var{depth}
86were added]{2.4}
Fred Drake12d9eac1997-07-24 15:39:16 +000087\end{funcdesc}
88
Walter Dörwaldc8de4582003-12-03 20:26:05 +000089\begin{funcdesc}{pprint}{object\optional{, stream\optional{,
90indent\optional{, width\optional{, depth}}}}}
Fred Drake12d9eac1997-07-24 15:39:16 +000091Prints the formatted representation of \var{object} on \var{stream},
92followed by a newline. If \var{stream} is omitted, \code{sys.stdout}
93is used. This may be used in the interactive interpreter instead of a
Walter Dörwaldc8de4582003-12-03 20:26:05 +000094\keyword{print} statement for inspecting values. \var{indent},
95\var{width} and \var{depth} will be passed to the \class{PrettyPrinter}
96constructor as formatting parameters.
Fred Drake12d9eac1997-07-24 15:39:16 +000097
98\begin{verbatim}
99>>> stuff = sys.path[:]
100>>> stuff.insert(0, stuff)
101>>> pprint.pprint(stuff)
102[<Recursion on list with id=869440>,
103 '',
104 '/usr/local/lib/python1.5',
105 '/usr/local/lib/python1.5/test',
106 '/usr/local/lib/python1.5/sunos5',
107 '/usr/local/lib/python1.5/sharedmodules',
108 '/usr/local/lib/python1.5/tkinter']
109\end{verbatim}
Walter Dörwaldc8de4582003-12-03 20:26:05 +0000110\versionchanged[The parameters \var{indent}, \var{width} and \var{depth}
111were added]{2.4}
Fred Drake12d9eac1997-07-24 15:39:16 +0000112\end{funcdesc}
113
114\begin{funcdesc}{isreadable}{object}
115Determine if the formatted representation of \var{object} is
116``readable,'' or can be used to reconstruct the value using
Fred Drake14c198b1998-04-03 07:11:32 +0000117\function{eval()}\bifuncindex{eval}. This always returns false for
Fred Drake2c8aa651998-02-20 06:03:52 +0000118recursive objects.
Fred Drake12d9eac1997-07-24 15:39:16 +0000119
120\begin{verbatim}
121>>> pprint.isreadable(stuff)
Martin v. Löwisccabed32003-11-27 19:48:03 +0000122False
Fred Drake12d9eac1997-07-24 15:39:16 +0000123\end{verbatim}
124\end{funcdesc}
125
126\begin{funcdesc}{isrecursive}{object}
127Determine if \var{object} requires a recursive representation.
128\end{funcdesc}
129
130
131One more support function is also defined:
132
133\begin{funcdesc}{saferepr}{object}
134Return a string representation of \var{object}, protected against
135recursive data structures. If the representation of \var{object}
136exposes a recursive entry, the recursive reference will be represented
Fred Drake2303d311997-12-17 14:07:25 +0000137as \samp{<Recursion on \var{typename} with id=\var{number}>}. The
Fred Drake12d9eac1997-07-24 15:39:16 +0000138representation is not otherwise formatted.
Fred Drakeb55f9d31998-03-08 07:03:27 +0000139\end{funcdesc}
Fred Drake12d9eac1997-07-24 15:39:16 +0000140
Fred Drakeb55f9d31998-03-08 07:03:27 +0000141% This example is outside the {funcdesc} to keep it from running over
142% the right margin.
Fred Drake12d9eac1997-07-24 15:39:16 +0000143\begin{verbatim}
144>>> pprint.saferepr(stuff)
Fred Drake14c198b1998-04-03 07:11:32 +0000145"[<Recursion on list with id=682968>, '', '/usr/local/lib/python1.5', '/usr/loca
146l/lib/python1.5/test', '/usr/local/lib/python1.5/sunos5', '/usr/local/lib/python
1471.5/sharedmodules', '/usr/local/lib/python1.5/tkinter']"
Fred Drake12d9eac1997-07-24 15:39:16 +0000148\end{verbatim}
Fred Drakeee8d3ca1997-07-18 20:41:58 +0000149
150
151\subsection{PrettyPrinter Objects}
Fred Drake2c8aa651998-02-20 06:03:52 +0000152\label{PrettyPrinter Objects}
Fred Drakeee8d3ca1997-07-18 20:41:58 +0000153
Fred Drakeb55f9d31998-03-08 07:03:27 +0000154\class{PrettyPrinter} instances have the following methods:
Fred Drakeee8d3ca1997-07-18 20:41:58 +0000155
Fred Drakeee8d3ca1997-07-18 20:41:58 +0000156
Fred Drake8fe533e1998-03-27 05:27:08 +0000157\begin{methoddesc}{pformat}{object}
Fred Drakeee8d3ca1997-07-18 20:41:58 +0000158Return the formatted representation of \var{object}. This takes into
Fredrik Lundhbb2bf2c2005-12-25 12:05:42 +0000159account the options passed to the \class{PrettyPrinter} constructor.
Fred Drake8fe533e1998-03-27 05:27:08 +0000160\end{methoddesc}
Fred Drakeee8d3ca1997-07-18 20:41:58 +0000161
Fred Drake8fe533e1998-03-27 05:27:08 +0000162\begin{methoddesc}{pprint}{object}
Fred Drakeee8d3ca1997-07-18 20:41:58 +0000163Print the formatted representation of \var{object} on the configured
164stream, followed by a newline.
Fred Drake8fe533e1998-03-27 05:27:08 +0000165\end{methoddesc}
Fred Drakeee8d3ca1997-07-18 20:41:58 +0000166
167The following methods provide the implementations for the
168corresponding functions of the same names. Using these methods on an
Fred Drake2c8aa651998-02-20 06:03:52 +0000169instance is slightly more efficient since new \class{PrettyPrinter}
170objects don't need to be created.
Fred Drakeee8d3ca1997-07-18 20:41:58 +0000171
Fred Drake8fe533e1998-03-27 05:27:08 +0000172\begin{methoddesc}{isreadable}{object}
Fred Drakeee8d3ca1997-07-18 20:41:58 +0000173Determine if the formatted representation of the object is
174``readable,'' or can be used to reconstruct the value using
Fred Drake2c8aa651998-02-20 06:03:52 +0000175\function{eval()}\bifuncindex{eval}. Note that this returns false for
176recursive objects. If the \var{depth} parameter of the
177\class{PrettyPrinter} is set and the object is deeper than allowed,
178this returns false.
Fred Drake8fe533e1998-03-27 05:27:08 +0000179\end{methoddesc}
Fred Drakeee8d3ca1997-07-18 20:41:58 +0000180
Fred Drake8fe533e1998-03-27 05:27:08 +0000181\begin{methoddesc}{isrecursive}{object}
Fred Drakeee8d3ca1997-07-18 20:41:58 +0000182Determine if the object requires a recursive representation.
Fred Drake8fe533e1998-03-27 05:27:08 +0000183\end{methoddesc}
Fred Drakeaee113d2002-04-02 05:08:35 +0000184
185This method is provided as a hook to allow subclasses to modify the
186way objects are converted to strings. The default implementation uses
187the internals of the \function{saferepr()} implementation.
188
189\begin{methoddesc}{format}{object, context, maxlevels, level}
190Returns three values: the formatted version of \var{object} as a
191string, a flag indicating whether the result is readable, and a flag
192indicating whether recursion was detected. The first argument is the
193object to be presented. The second is a dictionary which contains the
194\function{id()} of objects that are part of the current presentation
195context (direct and indirect containers for \var{object} that are
196affecting the presentation) as the keys; if an object needs to be
197presented which is already represented in \var{context}, the third
198return value should be true. Recursive calls to the \method{format()}
Raymond Hettinger68804312005-01-01 00:28:46 +0000199method should add additional entries for containers to this
Fredrik Lundh428b4132005-12-25 11:36:43 +0000200dictionary. The third argument, \var{maxlevels}, gives the requested
Fred Drakeaee113d2002-04-02 05:08:35 +0000201limit to recursion; this will be \code{0} if there is no requested
202limit. This argument should be passed unmodified to recursive calls.
Fredrik Lundh428b4132005-12-25 11:36:43 +0000203The fourth argument, \var{level}, gives the current level; recursive
Fred Drakeaee113d2002-04-02 05:08:35 +0000204calls should be passed a value less than that of the current call.
205\versionadded{2.3}
206\end{methoddesc}