Skip to content

Commit 02bb367

Browse files
[3.11] GH-115986 Reorder pprint docs and amend some references (#116019) (#116064)
(cherry picked from commit 6c1c94d) Introduce a new subsubsection, 'Functions', for module level functions, and place it before the PrettyPrinter class reference. Also: - Fix pprint.pprint() references so they properly link to the module level function. - Add links to sys.stdout. Co-authored-by: Kerim Kabirov <[email protected]>
1 parent 99ab0d4 commit 02bb367

File tree

1 file changed

+89
-85
lines changed

1 file changed

+89
-85
lines changed

Doc/library/pprint.rst

Lines changed: 89 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,90 @@ Dictionaries are sorted by key before the display is computed.
3131
.. versionchanged:: 3.10
3232
Added support for pretty-printing :class:`dataclasses.dataclass`.
3333

34-
The :mod:`pprint` module defines one class:
34+
.. _pprint-functions:
35+
36+
Functions
37+
---------
38+
39+
.. function:: pp(object, *args, sort_dicts=False, **kwargs)
40+
41+
Prints the formatted representation of *object* followed by a newline.
42+
If *sort_dicts* is false (the default), dictionaries will be displayed with
43+
their keys in insertion order, otherwise the dict keys will be sorted.
44+
*args* and *kwargs* will be passed to :func:`~pprint.pprint` as formatting
45+
parameters.
46+
47+
.. versionadded:: 3.8
48+
49+
50+
.. function:: pprint(object, stream=None, indent=1, width=80, depth=None, *, \
51+
compact=False, sort_dicts=True, underscore_numbers=False)
52+
53+
Prints the formatted representation of *object* on *stream*, followed by a
54+
newline. If *stream* is ``None``, :data:`sys.stdout` is used. This may be used
55+
in the interactive interpreter instead of the :func:`print` function for
56+
inspecting values (you can even reassign ``print = pprint.pprint`` for use
57+
within a scope).
58+
59+
The configuration parameters *stream*, *indent*, *width*, *depth*,
60+
*compact*, *sort_dicts* and *underscore_numbers* are passed to the
61+
:class:`PrettyPrinter` constructor and their meanings are as
62+
described in its documentation above.
63+
64+
>>> import pprint
65+
>>> stuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni']
66+
>>> stuff.insert(0, stuff)
67+
>>> pprint.pprint(stuff)
68+
[<Recursion on list with id=...>,
69+
'spam',
70+
'eggs',
71+
'lumberjack',
72+
'knights',
73+
'ni']
74+
75+
.. function:: pformat(object, indent=1, width=80, depth=None, *, \
76+
compact=False, sort_dicts=True, underscore_numbers=False)
77+
78+
Return the formatted representation of *object* as a string. *indent*,
79+
*width*, *depth*, *compact*, *sort_dicts* and *underscore_numbers* are
80+
passed to the :class:`PrettyPrinter` constructor as formatting parameters
81+
and their meanings are as described in its documentation above.
82+
83+
84+
.. function:: isreadable(object)
85+
86+
.. index:: pair: built-in function; eval
87+
88+
Determine if the formatted representation of *object* is "readable", or can be
89+
used to reconstruct the value using :func:`eval`. This always returns ``False``
90+
for recursive objects.
91+
92+
>>> pprint.isreadable(stuff)
93+
False
94+
95+
96+
.. function:: isrecursive(object)
97+
98+
Determine if *object* requires a recursive representation.
99+
100+
101+
.. function:: saferepr(object)
102+
103+
Return a string representation of *object*, protected against recursive data
104+
structures. If the representation of *object* exposes a recursive entry, the
105+
recursive reference will be represented as ``<Recursion on typename with
106+
id=number>``. The representation is not otherwise formatted.
107+
108+
>>> pprint.saferepr(stuff)
109+
"[<Recursion on list with id=...>, 'spam', 'eggs', 'lumberjack', 'knights', 'ni']"
110+
111+
112+
.. _prettyprinter-objects:
113+
114+
PrettyPrinter Objects
115+
---------------------
116+
117+
This module defines one class:
35118

36119
.. First the implementation class:
37120
@@ -44,9 +127,9 @@ The :mod:`pprint` module defines one class:
44127
Construct a :class:`PrettyPrinter` instance. This constructor understands
45128
several keyword parameters.
46129

47-
*stream* (default ``sys.stdout``) is a :term:`file-like object` to
130+
*stream* (default :data:`!sys.stdout`) is a :term:`file-like object` to
48131
which the output will be written by calling its :meth:`!write` method.
49-
If both *stream* and ``sys.stdout`` are ``None``, then
132+
If both *stream* and :data:`!sys.stdout` are ``None``, then
50133
:meth:`~PrettyPrinter.pprint` silently returns.
51134

52135
Other values configure the manner in which nesting of complex data
@@ -87,7 +170,7 @@ The :mod:`pprint` module defines one class:
87170
Added the *underscore_numbers* parameter.
88171

89172
.. versionchanged:: 3.11
90-
No longer attempts to write to ``sys.stdout`` if it is ``None``.
173+
No longer attempts to write to :data:`!sys.stdout` if it is ``None``.
91174

92175
>>> import pprint
93176
>>> stuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni']
@@ -112,85 +195,6 @@ The :mod:`pprint` module defines one class:
112195
>>> pp.pprint(tup)
113196
('spam', ('eggs', ('lumberjack', ('knights', ('ni', ('dead', (...)))))))
114197

115-
.. function:: pformat(object, indent=1, width=80, depth=None, *, \
116-
compact=False, sort_dicts=True, underscore_numbers=False)
117-
118-
Return the formatted representation of *object* as a string. *indent*,
119-
*width*, *depth*, *compact*, *sort_dicts* and *underscore_numbers* are
120-
passed to the :class:`PrettyPrinter` constructor as formatting parameters
121-
and their meanings are as described in its documentation above.
122-
123-
124-
.. function:: pp(object, *args, sort_dicts=False, **kwargs)
125-
126-
Prints the formatted representation of *object* followed by a newline.
127-
If *sort_dicts* is false (the default), dictionaries will be displayed with
128-
their keys in insertion order, otherwise the dict keys will be sorted.
129-
*args* and *kwargs* will be passed to :func:`pprint` as formatting
130-
parameters.
131-
132-
.. versionadded:: 3.8
133-
134-
135-
.. function:: pprint(object, stream=None, indent=1, width=80, depth=None, *, \
136-
compact=False, sort_dicts=True, underscore_numbers=False)
137-
138-
Prints the formatted representation of *object* on *stream*, followed by a
139-
newline. If *stream* is ``None``, ``sys.stdout`` is used. This may be used
140-
in the interactive interpreter instead of the :func:`print` function for
141-
inspecting values (you can even reassign ``print = pprint.pprint`` for use
142-
within a scope).
143-
144-
The configuration parameters *stream*, *indent*, *width*, *depth*,
145-
*compact*, *sort_dicts* and *underscore_numbers* are passed to the
146-
:class:`PrettyPrinter` constructor and their meanings are as
147-
described in its documentation above.
148-
149-
>>> import pprint
150-
>>> stuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni']
151-
>>> stuff.insert(0, stuff)
152-
>>> pprint.pprint(stuff)
153-
[<Recursion on list with id=...>,
154-
'spam',
155-
'eggs',
156-
'lumberjack',
157-
'knights',
158-
'ni']
159-
160-
.. function:: isreadable(object)
161-
162-
.. index:: pair: built-in function; eval
163-
164-
Determine if the formatted representation of *object* is "readable", or can be
165-
used to reconstruct the value using :func:`eval`. This always returns ``False``
166-
for recursive objects.
167-
168-
>>> pprint.isreadable(stuff)
169-
False
170-
171-
172-
.. function:: isrecursive(object)
173-
174-
Determine if *object* requires a recursive representation.
175-
176-
177-
One more support function is also defined:
178-
179-
.. function:: saferepr(object)
180-
181-
Return a string representation of *object*, protected against recursive data
182-
structures. If the representation of *object* exposes a recursive entry, the
183-
recursive reference will be represented as ``<Recursion on typename with
184-
id=number>``. The representation is not otherwise formatted.
185-
186-
>>> pprint.saferepr(stuff)
187-
"[<Recursion on list with id=...>, 'spam', 'eggs', 'lumberjack', 'knights', 'ni']"
188-
189-
190-
.. _prettyprinter-objects:
191-
192-
PrettyPrinter Objects
193-
---------------------
194198

195199
:class:`PrettyPrinter` instances have the following methods:
196200

@@ -254,7 +258,7 @@ are converted to strings. The default implementation uses the internals of the
254258
Example
255259
-------
256260

257-
To demonstrate several uses of the :func:`pprint` function and its parameters,
261+
To demonstrate several uses of the :func:`~pprint.pprint` function and its parameters,
258262
let's fetch information about a project from `PyPI <https://pypi.org>`_::
259263

260264
>>> import json
@@ -263,7 +267,7 @@ let's fetch information about a project from `PyPI <https://pypi.org>`_::
263267
>>> with urlopen('https://pypi.org/pypi/sampleproject/json') as resp:
264268
... project_info = json.load(resp)['info']
265269

266-
In its basic form, :func:`pprint` shows the whole object::
270+
In its basic form, :func:`~pprint.pprint` shows the whole object::
267271

268272
>>> pprint.pprint(project_info)
269273
{'author': 'The Python Packaging Authority',

0 commit comments

Comments
 (0)