From 392fd272cde0542859063ea01980091945029e95 Mon Sep 17 00:00:00 2001 From: andrei kulakov Date: Tue, 10 May 2022 13:22:36 -0400 Subject: bpo-42259: clarify pprint saferepr docs (#30256) --- Doc/library/pprint.rst | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Doc/library/pprint.rst b/Doc/library/pprint.rst index 3da5aa9..4e29192 100644 --- a/Doc/library/pprint.rst +++ b/Doc/library/pprint.rst @@ -171,17 +171,21 @@ The :mod:`pprint` module defines one class: .. function:: isrecursive(object) - Determine if *object* requires a recursive representation. + Determine if *object* requires a recursive representation. This function is + subject to the same limitations as noted in :func:`saferepr` below and may raise an + :exc:`RecursionError` if it fails to detect a recursive object. One more support function is also defined: .. function:: saferepr(object) - Return a string representation of *object*, protected against recursive data - structures. If the representation of *object* exposes a recursive entry, the - recursive reference will be represented as ````. The representation is not otherwise formatted. + Return a string representation of *object*, protected against recursion in + some common data structures, namely instances of :class:`dict`, :class:`list` + and :class:`tuple` or subclasses whose ``__repr__`` has not been overridden. If the + representation of object exposes a recursive entry, the recursive reference + will be represented as ````. The + representation is not otherwise formatted. >>> pprint.saferepr(stuff) "[, 'spam', 'eggs', 'lumberjack', 'knights', 'ni']" -- cgit v0.12