diff options
author | Fred Drake <fdrake@acm.org> | 2002-04-02 05:08:35 (GMT) |
---|---|---|
committer | Fred Drake <fdrake@acm.org> | 2002-04-02 05:08:35 (GMT) |
commit | aee113d368ebad8a51386baa7c0aec056aca94d5 (patch) | |
tree | 9a81e154b2772284d823cd0df3f966faa59a93e2 /Lib/pprint.py | |
parent | 4993c51b9436bc28126659519c362558fdcdd0d7 (diff) | |
download | cpython-aee113d368ebad8a51386baa7c0aec056aca94d5.zip cpython-aee113d368ebad8a51386baa7c0aec056aca94d5.tar.gz cpython-aee113d368ebad8a51386baa7c0aec056aca94d5.tar.bz2 |
Add an experimental mechanism to support extending the pprint formatting.
Partly responds to SF bug #505152.
Diffstat (limited to 'Lib/pprint.py')
-rw-r--r-- | Lib/pprint.py | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/Lib/pprint.py b/Lib/pprint.py index 5d178a2..82eeac6 100644 --- a/Lib/pprint.py +++ b/Lib/pprint.py @@ -115,15 +115,11 @@ class PrettyPrinter: return sio.getvalue() def isrecursive(self, object): - self.__recursive = 0 - self.__repr(object, {}, 0) - return self.__recursive + return self.format(object, {}, 0)[2] def isreadable(self, object): - self.__recursive = 0 - self.__readable = 1 - self.__repr(object, {}, 0) - return self.__readable and not self.__recursive + s, readable, recursive = self.format(object, {}, 0) + return readable and not recursive def __format(self, object, stream, indent, allowance, context, level): level = level + 1 @@ -196,14 +192,22 @@ class PrettyPrinter: write(rep) def __repr(self, object, context, level): - repr, readable, recursive = _safe_repr(object, context, - self.__depth, level) + repr, readable, recursive = self.format(object, context.copy(), + self.__depth, level) if not readable: self.__readable = 0 if recursive: self.__recursive = 1 return repr + def format(self, object, context, maxlevels, level): + """Format object for a specific context, returning a string + and flags indicating whether the representation is 'readable' + and whether the object represents a recursive construct. + """ + return _safe_repr(object, context, maxlevels, level) + + # Return triple (repr_string, isreadable, isrecursive). def _safe_repr(object, context, maxlevels, level): |