Mercurial > cpython-lru_cache-weakref
annotate Lib/pprint.py @ 74006:88198b93ff2f
Issue #13560: Add PyUnicode_EncodeLocale()
* Use PyUnicode_EncodeLocale() in time.strftime() if wcsftime() is not
available
* Document my last changes in Misc/NEWS
| author | Victor Stinner <victor.stinner@haypocalc.com> |
|---|---|
| date | Sat, 17 Dec 2011 04:13:41 +0100 |
| parents | 9659e8c40079 |
| children | 03cda5360dc6 |
| rev | line source |
|---|---|
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6312
diff
changeset
|
1 # Author: Fred L. Drake, Jr. |
|
20348
425c6c558fac
Remove obsolete email address.
Fred Drake <fdrake@acm.org>
parents:
19697
diff
changeset
|
2 # fdrake@acm.org |
|
5330
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
3 # |
|
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
4 # This is a simple little module I wrote to make life easier. I didn't |
|
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
5 # see anything quite like it in the library, though I may have overlooked |
|
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
6 # something. I wrote this when I was trying to read some heavily nested |
|
13620
5b727ab37092
Spelling fixes supplied by Rob W. W. Hooft. All these are fixes in either
Thomas Wouters <thomas@python.org>
parents:
11620
diff
changeset
|
7 # tuples with fairly non-descriptive content. This is modeled very much |
|
5330
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
8 # after Lisp/Scheme - style pretty-printing of lists. If you find it |
|
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
9 # useful, thank small children who sleep at night. |
|
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
10 |
|
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
11 """Support to pretty-print lists, tuples, & dictionaries recursively. |
|
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
12 |
|
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
13 Very simple, but useful, especially in debugging data structures. |
|
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
14 |
|
5335
ee9275b0f5c8
Muchly changed and improved pprint.py:
Fred Drake <fdrake@acm.org>
parents:
5330
diff
changeset
|
15 Classes |
|
ee9275b0f5c8
Muchly changed and improved pprint.py:
Fred Drake <fdrake@acm.org>
parents:
5330
diff
changeset
|
16 ------- |
|
ee9275b0f5c8
Muchly changed and improved pprint.py:
Fred Drake <fdrake@acm.org>
parents:
5330
diff
changeset
|
17 |
|
ee9275b0f5c8
Muchly changed and improved pprint.py:
Fred Drake <fdrake@acm.org>
parents:
5330
diff
changeset
|
18 PrettyPrinter() |
|
ee9275b0f5c8
Muchly changed and improved pprint.py:
Fred Drake <fdrake@acm.org>
parents:
5330
diff
changeset
|
19 Handle pretty-printing operations onto a stream using a configured |
|
ee9275b0f5c8
Muchly changed and improved pprint.py:
Fred Drake <fdrake@acm.org>
parents:
5330
diff
changeset
|
20 set of formatting parameters. |
|
ee9275b0f5c8
Muchly changed and improved pprint.py:
Fred Drake <fdrake@acm.org>
parents:
5330
diff
changeset
|
21 |
|
5330
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
22 Functions |
|
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
23 --------- |
|
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
24 |
|
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
25 pformat() |
|
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
26 Format a Python object into a pretty-printed representation. |
|
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
27 |
|
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
28 pprint() |
| 32107 | 29 Pretty-print a Python object to a stream [default is sys.stdout]. |
|
5330
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
30 |
|
5335
ee9275b0f5c8
Muchly changed and improved pprint.py:
Fred Drake <fdrake@acm.org>
parents:
5330
diff
changeset
|
31 saferepr() |
|
ee9275b0f5c8
Muchly changed and improved pprint.py:
Fred Drake <fdrake@acm.org>
parents:
5330
diff
changeset
|
32 Generate a 'standard' repr()-like value, but protect against recursive |
|
ee9275b0f5c8
Muchly changed and improved pprint.py:
Fred Drake <fdrake@acm.org>
parents:
5330
diff
changeset
|
33 data structures. |
|
5330
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
34 |
|
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
35 """ |
|
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
36 |
|
26929
ffa4ab37036f
- PrettyPrinter.isreadable(), .isrecursive():
Fred Drake <fdrake@acm.org>
parents:
24131
diff
changeset
|
37 import sys as _sys |
|
64583
9659e8c40079
Have pprint() respect the order in an OrderedDict.
Raymond Hettinger <python@rcn.com>
parents:
57341
diff
changeset
|
38 from collections import OrderedDict as _OrderedDict |
|
42501
f6069f9dd52d
SF patch# 1770008 by Christian Heimes (plus some extras).
Guido van Rossum <guido@python.org>
parents:
41717
diff
changeset
|
39 from io import StringIO as _StringIO |
|
5330
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
40 |
|
16562
623456576d6a
__all__ for several more modules
Skip Montanaro <skip@pobox.com>
parents:
13620
diff
changeset
|
41 __all__ = ["pprint","pformat","isreadable","isrecursive","saferepr", |
|
623456576d6a
__all__ for several more modules
Skip Montanaro <skip@pobox.com>
parents:
13620
diff
changeset
|
42 "PrettyPrinter"] |
|
5330
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
43 |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
44 # cache these for faster access: |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
45 _commajoin = ", ".join |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
46 _id = id |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
47 _len = len |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
48 _type = type |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
49 |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
50 |
|
31085
a2f6c6a67f24
Add parameters indent, width and depth to pprint.pprint() and pprint.pformat()
Walter Dörwald <walter@livinglogic.de>
parents:
31084
diff
changeset
|
51 def pprint(object, stream=None, indent=1, width=80, depth=None): |
| 32107 | 52 """Pretty-print a Python object to a stream [default is sys.stdout].""" |
|
31085
a2f6c6a67f24
Add parameters indent, width and depth to pprint.pprint() and pprint.pformat()
Walter Dörwald <walter@livinglogic.de>
parents:
31084
diff
changeset
|
53 printer = PrettyPrinter( |
|
a2f6c6a67f24
Add parameters indent, width and depth to pprint.pprint() and pprint.pformat()
Walter Dörwald <walter@livinglogic.de>
parents:
31084
diff
changeset
|
54 stream=stream, indent=indent, width=width, depth=depth) |
|
5335
ee9275b0f5c8
Muchly changed and improved pprint.py:
Fred Drake <fdrake@acm.org>
parents:
5330
diff
changeset
|
55 printer.pprint(object) |
|
ee9275b0f5c8
Muchly changed and improved pprint.py:
Fred Drake <fdrake@acm.org>
parents:
5330
diff
changeset
|
56 |
|
31085
a2f6c6a67f24
Add parameters indent, width and depth to pprint.pprint() and pprint.pformat()
Walter Dörwald <walter@livinglogic.de>
parents:
31084
diff
changeset
|
57 def pformat(object, indent=1, width=80, depth=None): |
|
5335
ee9275b0f5c8
Muchly changed and improved pprint.py:
Fred Drake <fdrake@acm.org>
parents:
5330
diff
changeset
|
58 """Format a Python object into a pretty-printed representation.""" |
|
31085
a2f6c6a67f24
Add parameters indent, width and depth to pprint.pprint() and pprint.pformat()
Walter Dörwald <walter@livinglogic.de>
parents:
31084
diff
changeset
|
59 return PrettyPrinter(indent=indent, width=width, depth=depth).pformat(object) |
|
5335
ee9275b0f5c8
Muchly changed and improved pprint.py:
Fred Drake <fdrake@acm.org>
parents:
5330
diff
changeset
|
60 |
|
ee9275b0f5c8
Muchly changed and improved pprint.py:
Fred Drake <fdrake@acm.org>
parents:
5330
diff
changeset
|
61 def saferepr(object): |
|
ee9275b0f5c8
Muchly changed and improved pprint.py:
Fred Drake <fdrake@acm.org>
parents:
5330
diff
changeset
|
62 """Version of repr() which can handle recursive data structures.""" |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
63 return _safe_repr(object, {}, None, 0)[0] |
|
5330
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
64 |
|
17820
4bcf88e4abff
SF bug[ #423781: pprint.isrecursive() broken.
Tim Peters <tim.peters@gmail.com>
parents:
16562
diff
changeset
|
65 def isreadable(object): |
|
4bcf88e4abff
SF bug[ #423781: pprint.isrecursive() broken.
Tim Peters <tim.peters@gmail.com>
parents:
16562
diff
changeset
|
66 """Determine if saferepr(object) is readable by eval().""" |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
67 return _safe_repr(object, {}, None, 0)[1] |
|
17820
4bcf88e4abff
SF bug[ #423781: pprint.isrecursive() broken.
Tim Peters <tim.peters@gmail.com>
parents:
16562
diff
changeset
|
68 |
|
4bcf88e4abff
SF bug[ #423781: pprint.isrecursive() broken.
Tim Peters <tim.peters@gmail.com>
parents:
16562
diff
changeset
|
69 def isrecursive(object): |
|
4bcf88e4abff
SF bug[ #423781: pprint.isrecursive() broken.
Tim Peters <tim.peters@gmail.com>
parents:
16562
diff
changeset
|
70 """Determine if object requires a recursive representation.""" |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
71 return _safe_repr(object, {}, None, 0)[2] |
|
5330
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
72 |
|
57341
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
73 class _safe_key: |
|
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
74 """Helper function for key functions when sorting unorderable objects. |
|
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
75 |
|
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
76 The wrapped-object will fallback to an Py2.x style comparison for |
|
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
77 unorderable types (sorting first comparing the type name and then by |
|
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
78 the obj ids). Does not work recursively, so dict.items() must have |
|
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
79 _safe_key applied to both the key and the value. |
|
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
80 |
|
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
81 """ |
|
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
82 |
|
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
83 __slots__ = ['obj'] |
|
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
84 |
|
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
85 def __init__(self, obj): |
|
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
86 self.obj = obj |
|
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
87 |
|
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
88 def __lt__(self, other): |
|
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
89 rv = self.obj.__lt__(other.obj) |
|
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
90 if rv is NotImplemented: |
|
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
91 rv = (str(type(self.obj)), id(self.obj)) < \ |
|
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
92 (str(type(other.obj)), id(other.obj)) |
|
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
93 return rv |
|
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
94 |
|
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
95 def _safe_tuple(t): |
|
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
96 "Helper function for comparing 2-tuples" |
|
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
97 return _safe_key(t[0]), _safe_key(t[1]) |
|
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
98 |
|
5335
ee9275b0f5c8
Muchly changed and improved pprint.py:
Fred Drake <fdrake@acm.org>
parents:
5330
diff
changeset
|
99 class PrettyPrinter: |
|
ee9275b0f5c8
Muchly changed and improved pprint.py:
Fred Drake <fdrake@acm.org>
parents:
5330
diff
changeset
|
100 def __init__(self, indent=1, width=80, depth=None, stream=None): |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6312
diff
changeset
|
101 """Handle pretty printing operations onto a stream using a set of |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6312
diff
changeset
|
102 configured parameters. |
|
5330
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
103 |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6312
diff
changeset
|
104 indent |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6312
diff
changeset
|
105 Number of spaces to indent for each level of nesting. |
|
5335
ee9275b0f5c8
Muchly changed and improved pprint.py:
Fred Drake <fdrake@acm.org>
parents:
5330
diff
changeset
|
106 |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6312
diff
changeset
|
107 width |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6312
diff
changeset
|
108 Attempted maximum number of columns in the output. |
|
5335
ee9275b0f5c8
Muchly changed and improved pprint.py:
Fred Drake <fdrake@acm.org>
parents:
5330
diff
changeset
|
109 |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6312
diff
changeset
|
110 depth |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6312
diff
changeset
|
111 The maximum depth to print out nested structures. |
|
5330
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
112 |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6312
diff
changeset
|
113 stream |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6312
diff
changeset
|
114 The desired output stream. If omitted (or false), the standard |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6312
diff
changeset
|
115 output stream available at construction will be used. |
|
5335
ee9275b0f5c8
Muchly changed and improved pprint.py:
Fred Drake <fdrake@acm.org>
parents:
5330
diff
changeset
|
116 |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6312
diff
changeset
|
117 """ |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6312
diff
changeset
|
118 indent = int(indent) |
|
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6312
diff
changeset
|
119 width = int(width) |
|
31084
e3025fe70d8b
Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents:
29379
diff
changeset
|
120 assert indent >= 0, "indent must be >= 0" |
|
17820
4bcf88e4abff
SF bug[ #423781: pprint.isrecursive() broken.
Tim Peters <tim.peters@gmail.com>
parents:
16562
diff
changeset
|
121 assert depth is None or depth > 0, "depth must be > 0" |
|
31084
e3025fe70d8b
Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents:
29379
diff
changeset
|
122 assert width, "width must be != 0" |
|
24131
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
123 self._depth = depth |
|
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
124 self._indent_per_level = indent |
|
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
125 self._width = width |
|
23622
5edd80726d96
Replace boolean test with is None.
Raymond Hettinger <python@rcn.com>
parents:
22867
diff
changeset
|
126 if stream is not None: |
|
24131
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
127 self._stream = stream |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6312
diff
changeset
|
128 else: |
|
26929
ffa4ab37036f
- PrettyPrinter.isreadable(), .isrecursive():
Fred Drake <fdrake@acm.org>
parents:
24131
diff
changeset
|
129 self._stream = _sys.stdout |
|
5330
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
130 |
|
5335
ee9275b0f5c8
Muchly changed and improved pprint.py:
Fred Drake <fdrake@acm.org>
parents:
5330
diff
changeset
|
131 def pprint(self, object): |
|
35852
ee3e0ee1edca
Change PrettyPrinter.pprint(), so that output is written directly to the
Walter Dörwald <walter@livinglogic.de>
parents:
33993
diff
changeset
|
132 self._format(object, self._stream, 0, 0, {}, 0) |
|
ee3e0ee1edca
Change PrettyPrinter.pprint(), so that output is written directly to the
Walter Dörwald <walter@livinglogic.de>
parents:
33993
diff
changeset
|
133 self._stream.write("\n") |
|
5335
ee9275b0f5c8
Muchly changed and improved pprint.py:
Fred Drake <fdrake@acm.org>
parents:
5330
diff
changeset
|
134 |
|
ee9275b0f5c8
Muchly changed and improved pprint.py:
Fred Drake <fdrake@acm.org>
parents:
5330
diff
changeset
|
135 def pformat(self, object): |
|
26929
ffa4ab37036f
- PrettyPrinter.isreadable(), .isrecursive():
Fred Drake <fdrake@acm.org>
parents:
24131
diff
changeset
|
136 sio = _StringIO() |
|
24131
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
137 self._format(object, sio, 0, 0, {}, 0) |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6312
diff
changeset
|
138 return sio.getvalue() |
|
5330
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
139 |
|
5837
2e917f9372e0
Slight mods to make the module conform to the documentation.
Fred Drake <fdrake@acm.org>
parents:
5337
diff
changeset
|
140 def isrecursive(self, object): |
|
26929
ffa4ab37036f
- PrettyPrinter.isreadable(), .isrecursive():
Fred Drake <fdrake@acm.org>
parents:
24131
diff
changeset
|
141 return self.format(object, {}, 0, 0)[2] |
|
5837
2e917f9372e0
Slight mods to make the module conform to the documentation.
Fred Drake <fdrake@acm.org>
parents:
5337
diff
changeset
|
142 |
|
2e917f9372e0
Slight mods to make the module conform to the documentation.
Fred Drake <fdrake@acm.org>
parents:
5337
diff
changeset
|
143 def isreadable(self, object): |
|
26929
ffa4ab37036f
- PrettyPrinter.isreadable(), .isrecursive():
Fred Drake <fdrake@acm.org>
parents:
24131
diff
changeset
|
144 s, readable, recursive = self.format(object, {}, 0, 0) |
|
22766
d26d8575ac62
Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents:
21061
diff
changeset
|
145 return readable and not recursive |
|
5837
2e917f9372e0
Slight mods to make the module conform to the documentation.
Fred Drake <fdrake@acm.org>
parents:
5337
diff
changeset
|
146 |
|
24131
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
147 def _format(self, object, stream, indent, allowance, context, level): |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6312
diff
changeset
|
148 level = level + 1 |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
149 objid = _id(object) |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
150 if objid in context: |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
151 stream.write(_recursion(object)) |
|
24131
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
152 self._recursive = True |
|
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
153 self._readable = False |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
154 return |
|
24131
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
155 rep = self._repr(object, context, level - 1) |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
156 typ = _type(object) |
|
24131
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
157 sepLines = _len(rep) > (self._width - 1 - indent - allowance) |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
158 write = stream.write |
|
5330
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
159 |
|
47080
58a0d5524f9a
Merged revisions 63119-63128,63130-63131,63133,63135-63144,63146-63148,63151-63152,63155-63165,63167-63176,63181-63186,63188-63189 via svnmerge from
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
45067
diff
changeset
|
160 if self._depth and level > self._depth: |
|
58a0d5524f9a
Merged revisions 63119-63128,63130-63131,63133,63135-63144,63146-63148,63151-63152,63155-63165,63167-63176,63181-63186,63188-63189 via svnmerge from
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
45067
diff
changeset
|
161 write(rep) |
|
58a0d5524f9a
Merged revisions 63119-63128,63130-63131,63133,63135-63144,63146-63148,63151-63152,63155-63165,63167-63176,63181-63186,63188-63189 via svnmerge from
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
45067
diff
changeset
|
162 return |
|
58a0d5524f9a
Merged revisions 63119-63128,63130-63131,63133,63135-63144,63146-63148,63151-63152,63155-63165,63167-63176,63181-63186,63188-63189 via svnmerge from
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
45067
diff
changeset
|
163 |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
164 if sepLines: |
|
33993
6771e1840bbc
Fix pprint to be able to handle objects that don't have a __repr__
Walter Dörwald <walter@livinglogic.de>
parents:
32107
diff
changeset
|
165 r = getattr(typ, "__repr__", None) |
|
64583
9659e8c40079
Have pprint() respect the order in an OrderedDict.
Raymond Hettinger <python@rcn.com>
parents:
57341
diff
changeset
|
166 if issubclass(typ, dict): |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
167 write('{') |
|
24131
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
168 if self._indent_per_level > 1: |
|
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
169 write((self._indent_per_level - 1) * ' ') |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
170 length = _len(object) |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
171 if length: |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
172 context[objid] = 1 |
|
24131
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
173 indent = indent + self._indent_per_level |
|
64583
9659e8c40079
Have pprint() respect the order in an OrderedDict.
Raymond Hettinger <python@rcn.com>
parents:
57341
diff
changeset
|
174 if issubclass(typ, _OrderedDict): |
|
9659e8c40079
Have pprint() respect the order in an OrderedDict.
Raymond Hettinger <python@rcn.com>
parents:
57341
diff
changeset
|
175 items = list(object.items()) |
|
9659e8c40079
Have pprint() respect the order in an OrderedDict.
Raymond Hettinger <python@rcn.com>
parents:
57341
diff
changeset
|
176 else: |
|
9659e8c40079
Have pprint() respect the order in an OrderedDict.
Raymond Hettinger <python@rcn.com>
parents:
57341
diff
changeset
|
177 items = sorted(object.items(), key=_safe_tuple) |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
178 key, ent = items[0] |
|
24131
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
179 rep = self._repr(key, context, level) |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
180 write(rep) |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
181 write(': ') |
|
24131
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
182 self._format(ent, stream, indent + _len(rep) + 2, |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
183 allowance + 1, context, level) |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
184 if length > 1: |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
185 for key, ent in items[1:]: |
|
24131
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
186 rep = self._repr(key, context, level) |
|
21061
1802a9edb4ee
__format(): Applied SF patch #482003 by Skip to fix multiline dict
Barry Warsaw <barry@python.org>
parents:
20967
diff
changeset
|
187 write(',\n%s%s: ' % (' '*indent, rep)) |
|
24131
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
188 self._format(ent, stream, indent + _len(rep) + 2, |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
189 allowance + 1, context, level) |
|
24131
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
190 indent = indent - self._indent_per_level |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
191 del context[objid] |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
192 write('}') |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
193 return |
|
5330
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
194 |
|
44885
fefaa0e66fdd
Merged revisions 60176-60209 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
42501
diff
changeset
|
195 if ((issubclass(typ, list) and r is list.__repr__) or |
|
fefaa0e66fdd
Merged revisions 60176-60209 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
42501
diff
changeset
|
196 (issubclass(typ, tuple) and r is tuple.__repr__) or |
|
fefaa0e66fdd
Merged revisions 60176-60209 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
42501
diff
changeset
|
197 (issubclass(typ, set) and r is set.__repr__) or |
|
fefaa0e66fdd
Merged revisions 60176-60209 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
42501
diff
changeset
|
198 (issubclass(typ, frozenset) and r is frozenset.__repr__) |
|
fefaa0e66fdd
Merged revisions 60176-60209 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
42501
diff
changeset
|
199 ): |
|
44943
6547be11f443
Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
200 length = _len(object) |
|
31084
e3025fe70d8b
Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents:
29379
diff
changeset
|
201 if issubclass(typ, list): |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
202 write('[') |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
203 endchar = ']' |
|
44885
fefaa0e66fdd
Merged revisions 60176-60209 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
42501
diff
changeset
|
204 elif issubclass(typ, set): |
|
44943
6547be11f443
Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
205 if not length: |
|
6547be11f443
Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
206 write('set()') |
|
6547be11f443
Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
207 return |
|
44885
fefaa0e66fdd
Merged revisions 60176-60209 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
42501
diff
changeset
|
208 write('{') |
|
fefaa0e66fdd
Merged revisions 60176-60209 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
42501
diff
changeset
|
209 endchar = '}' |
|
57341
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
210 object = sorted(object, key=_safe_key) |
|
44885
fefaa0e66fdd
Merged revisions 60176-60209 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
42501
diff
changeset
|
211 elif issubclass(typ, frozenset): |
|
44943
6547be11f443
Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
212 if not length: |
|
6547be11f443
Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
213 write('frozenset()') |
|
6547be11f443
Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
214 return |
|
45067
8930ff230ee9
Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents:
44943
diff
changeset
|
215 write('frozenset({') |
|
8930ff230ee9
Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents:
44943
diff
changeset
|
216 endchar = '})' |
|
57341
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
217 object = sorted(object, key=_safe_key) |
|
44943
6547be11f443
Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
218 indent += 10 |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
219 else: |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
220 write('(') |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
221 endchar = ')' |
|
24131
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
222 if self._indent_per_level > 1: |
|
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
223 write((self._indent_per_level - 1) * ' ') |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
224 if length: |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
225 context[objid] = 1 |
|
24131
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
226 indent = indent + self._indent_per_level |
|
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
227 self._format(object[0], stream, indent, allowance + 1, |
|
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
228 context, level) |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
229 if length > 1: |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
230 for ent in object[1:]: |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
231 write(',\n' + ' '*indent) |
|
24131
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
232 self._format(ent, stream, indent, |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
233 allowance + 1, context, level) |
|
24131
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
234 indent = indent - self._indent_per_level |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
235 del context[objid] |
|
31084
e3025fe70d8b
Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents:
29379
diff
changeset
|
236 if issubclass(typ, tuple) and length == 1: |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
237 write(',') |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
238 write(endchar) |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
239 return |
|
5330
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
240 |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
241 write(rep) |
|
5330
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
242 |
|
24131
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
243 def _repr(self, object, context, level): |
|
22766
d26d8575ac62
Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents:
21061
diff
changeset
|
244 repr, readable, recursive = self.format(object, context.copy(), |
|
24131
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
245 self._depth, level) |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6312
diff
changeset
|
246 if not readable: |
|
24131
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
247 self._readable = False |
|
17820
4bcf88e4abff
SF bug[ #423781: pprint.isrecursive() broken.
Tim Peters <tim.peters@gmail.com>
parents:
16562
diff
changeset
|
248 if recursive: |
|
24131
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
249 self._recursive = True |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6312
diff
changeset
|
250 return repr |
|
5330
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
251 |
|
22766
d26d8575ac62
Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents:
21061
diff
changeset
|
252 def format(self, object, context, maxlevels, level): |
|
d26d8575ac62
Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents:
21061
diff
changeset
|
253 """Format object for a specific context, returning a string |
|
d26d8575ac62
Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents:
21061
diff
changeset
|
254 and flags indicating whether the representation is 'readable' |
|
d26d8575ac62
Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents:
21061
diff
changeset
|
255 and whether the object represents a recursive construct. |
|
d26d8575ac62
Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents:
21061
diff
changeset
|
256 """ |
|
d26d8575ac62
Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents:
21061
diff
changeset
|
257 return _safe_repr(object, context, maxlevels, level) |
|
d26d8575ac62
Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents:
21061
diff
changeset
|
258 |
|
d26d8575ac62
Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents:
21061
diff
changeset
|
259 |
|
17820
4bcf88e4abff
SF bug[ #423781: pprint.isrecursive() broken.
Tim Peters <tim.peters@gmail.com>
parents:
16562
diff
changeset
|
260 # Return triple (repr_string, isreadable, isrecursive). |
|
5330
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
261 |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
262 def _safe_repr(object, context, maxlevels, level): |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
263 typ = _type(object) |
|
29379
347e7b6dfd53
Revert 1.25, as overloaded __repr__ is not considered.
Martin v. Löwis <martin@v.loewis.de>
parents:
29378
diff
changeset
|
264 if typ is str: |
|
26929
ffa4ab37036f
- PrettyPrinter.isreadable(), .isrecursive():
Fred Drake <fdrake@acm.org>
parents:
24131
diff
changeset
|
265 if 'locale' not in _sys.modules: |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
31085
diff
changeset
|
266 return repr(object), True, False |
|
19697
bc6bd35f5998
Make pprint more locale-friendly; patch contributed by Denis S. Otkidach.
Fred Drake <fdrake@acm.org>
parents:
17828
diff
changeset
|
267 if "'" in object and '"' not in object: |
|
bc6bd35f5998
Make pprint more locale-friendly; patch contributed by Denis S. Otkidach.
Fred Drake <fdrake@acm.org>
parents:
17828
diff
changeset
|
268 closure = '"' |
|
bc6bd35f5998
Make pprint more locale-friendly; patch contributed by Denis S. Otkidach.
Fred Drake <fdrake@acm.org>
parents:
17828
diff
changeset
|
269 quotes = {'"': '\\"'} |
|
bc6bd35f5998
Make pprint more locale-friendly; patch contributed by Denis S. Otkidach.
Fred Drake <fdrake@acm.org>
parents:
17828
diff
changeset
|
270 else: |
|
bc6bd35f5998
Make pprint more locale-friendly; patch contributed by Denis S. Otkidach.
Fred Drake <fdrake@acm.org>
parents:
17828
diff
changeset
|
271 closure = "'" |
|
bc6bd35f5998
Make pprint more locale-friendly; patch contributed by Denis S. Otkidach.
Fred Drake <fdrake@acm.org>
parents:
17828
diff
changeset
|
272 quotes = {"'": "\\'"} |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
273 qget = quotes.get |
|
26929
ffa4ab37036f
- PrettyPrinter.isreadable(), .isrecursive():
Fred Drake <fdrake@acm.org>
parents:
24131
diff
changeset
|
274 sio = _StringIO() |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
275 write = sio.write |
|
19697
bc6bd35f5998
Make pprint more locale-friendly; patch contributed by Denis S. Otkidach.
Fred Drake <fdrake@acm.org>
parents:
17828
diff
changeset
|
276 for char in object: |
|
bc6bd35f5998
Make pprint more locale-friendly; patch contributed by Denis S. Otkidach.
Fred Drake <fdrake@acm.org>
parents:
17828
diff
changeset
|
277 if char.isalpha(): |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
278 write(char) |
|
19697
bc6bd35f5998
Make pprint more locale-friendly; patch contributed by Denis S. Otkidach.
Fred Drake <fdrake@acm.org>
parents:
17828
diff
changeset
|
279 else: |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
31085
diff
changeset
|
280 write(qget(char, repr(char)[1:-1])) |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
281 return ("%s%s%s" % (closure, sio.getvalue(), closure)), True, False |
|
17828
26745053f840
pprint's workhorse _safe_repr() function took time quadratic in the # of
Tim Peters <tim.peters@gmail.com>
parents:
17820
diff
changeset
|
282 |
|
33993
6771e1840bbc
Fix pprint to be able to handle objects that don't have a __repr__
Walter Dörwald <walter@livinglogic.de>
parents:
32107
diff
changeset
|
283 r = getattr(typ, "__repr__", None) |
|
31084
e3025fe70d8b
Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents:
29379
diff
changeset
|
284 if issubclass(typ, dict) and r is dict.__repr__: |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
285 if not object: |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
286 return "{}", True, False |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
287 objid = _id(object) |
|
47080
58a0d5524f9a
Merged revisions 63119-63128,63130-63131,63133,63135-63144,63146-63148,63151-63152,63155-63165,63167-63176,63181-63186,63188-63189 via svnmerge from
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
45067
diff
changeset
|
288 if maxlevels and level >= maxlevels: |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
289 return "{...}", False, objid in context |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
290 if objid in context: |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
291 return _recursion(object), False, True |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
292 context[objid] = 1 |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
293 readable = True |
|
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
294 recursive = False |
|
17828
26745053f840
pprint's workhorse _safe_repr() function took time quadratic in the # of
Tim Peters <tim.peters@gmail.com>
parents:
17820
diff
changeset
|
295 components = [] |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
296 append = components.append |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
297 level += 1 |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
298 saferepr = _safe_repr |
|
57341
b8a0b333e469
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
299 items = sorted(object.items(), key=_safe_tuple) |
|
39644
13d5e5f0e993
Restructure comparison dramatically. There is no longer a default
Guido van Rossum <guido@python.org>
parents:
38669
diff
changeset
|
300 for k, v in items: |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
301 krepr, kreadable, krecur = saferepr(k, context, maxlevels, level) |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
302 vrepr, vreadable, vrecur = saferepr(v, context, maxlevels, level) |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
303 append("%s: %s" % (krepr, vrepr)) |
|
7755
fb4b4d069cc7
Mass check-in after untabifying all files that need it.
Guido van Rossum <guido@python.org>
parents:
6312
diff
changeset
|
304 readable = readable and kreadable and vreadable |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
305 if krecur or vrecur: |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
306 recursive = True |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
307 del context[objid] |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
308 return "{%s}" % _commajoin(components), readable, recursive |
|
17828
26745053f840
pprint's workhorse _safe_repr() function took time quadratic in the # of
Tim Peters <tim.peters@gmail.com>
parents:
17820
diff
changeset
|
309 |
|
31084
e3025fe70d8b
Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents:
29379
diff
changeset
|
310 if (issubclass(typ, list) and r is list.__repr__) or \ |
|
e3025fe70d8b
Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents:
29379
diff
changeset
|
311 (issubclass(typ, tuple) and r is tuple.__repr__): |
|
e3025fe70d8b
Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents:
29379
diff
changeset
|
312 if issubclass(typ, list): |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
313 if not object: |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
314 return "[]", True, False |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
315 format = "[%s]" |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
316 elif _len(object) == 1: |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
317 format = "(%s,)" |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
318 else: |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
319 if not object: |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
320 return "()", True, False |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
321 format = "(%s)" |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
322 objid = _id(object) |
|
47080
58a0d5524f9a
Merged revisions 63119-63128,63130-63131,63133,63135-63144,63146-63148,63151-63152,63155-63165,63167-63176,63181-63186,63188-63189 via svnmerge from
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
45067
diff
changeset
|
323 if maxlevels and level >= maxlevels: |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
324 return format % "...", False, objid in context |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
325 if objid in context: |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
326 return _recursion(object), False, True |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
327 context[objid] = 1 |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
328 readable = True |
|
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
329 recursive = False |
|
17828
26745053f840
pprint's workhorse _safe_repr() function took time quadratic in the # of
Tim Peters <tim.peters@gmail.com>
parents:
17820
diff
changeset
|
330 components = [] |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
331 append = components.append |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
332 level += 1 |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
333 for o in object: |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
334 orepr, oreadable, orecur = _safe_repr(o, context, maxlevels, level) |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
335 append(orepr) |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
336 if not oreadable: |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
337 readable = False |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
338 if orecur: |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
339 recursive = True |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
340 del context[objid] |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
341 return format % _commajoin(components), readable, recursive |
|
20967
bb8716095a81
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
20819
diff
changeset
|
342 |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
31085
diff
changeset
|
343 rep = repr(object) |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
344 return rep, (rep and not rep.startswith('<')), False |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
345 |
|
17828
26745053f840
pprint's workhorse _safe_repr() function took time quadratic in the # of
Tim Peters <tim.peters@gmail.com>
parents:
17820
diff
changeset
|
346 |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
347 def _recursion(object): |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
348 return ("<Recursion on %s with id=%s>" |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
349 % (_type(object).__name__, _id(object))) |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
350 |
|
5330
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
351 |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
352 def _perfcheck(object=None): |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
353 import time |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
354 if object is None: |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
355 object = [("string", (1, 2), [3, 4], {5: 6, 7: 8})] * 100000 |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
356 p = PrettyPrinter() |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
357 t1 = time.time() |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
358 _safe_repr(object, {}, None, 0) |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
359 t2 = time.time() |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
360 p.pformat(object) |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
361 t3 = time.time() |
|
40775
4cdf21a0dbbc
Fix most trivially-findable print statements.
Guido van Rossum <guido@python.org>
parents:
39644
diff
changeset
|
362 print("_safe_repr:", t2 - t1) |
|
4cdf21a0dbbc
Fix most trivially-findable print statements.
Guido van Rossum <guido@python.org>
parents:
39644
diff
changeset
|
363 print("pformat:", t3 - t2) |
|
5330
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
364 |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
365 if __name__ == "__main__": |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
366 _perfcheck() |
