Mercurial > cpython-lru_cache-weakref
annotate Lib/pprint.py @ 66978:aed2bbafa550 3.1
Blocked revisions 87324 via svnmerge
........
r87324 | r.david.murray | 2010-12-16 14:08:51 -0500 (Thu, 16 Dec 2010) | 9 lines
#10719: restore messages generated on invalid compileall args
Before the introduction of filename arguments to compileall it gave semi useful
messages about not being able to 'list' names that weren't valid directories.
This fix restores that behavior. In addition to the test for this case, the
patch also adds a test for the default behavior of compileall when no arguments
are provided, and fixes a bug in one of the previously added tests.
........
| author | R. David Murray <rdmurray@bitdance.com> |
|---|---|
| date | Thu, 16 Dec 2010 19:10:16 +0000 |
| parents | b31a33c36f08 |
| children | 9659e8c40079 |
| 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 |
|
5330
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
38 |
|
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 |
|
57340
b31a33c36f08
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: |
|
b31a33c36f08
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. |
|
b31a33c36f08
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
75 |
|
b31a33c36f08
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 |
|
b31a33c36f08
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 |
|
b31a33c36f08
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 |
|
b31a33c36f08
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. |
|
b31a33c36f08
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
80 |
|
b31a33c36f08
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
81 """ |
|
b31a33c36f08
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
82 |
|
b31a33c36f08
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
83 __slots__ = ['obj'] |
|
b31a33c36f08
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
84 |
|
b31a33c36f08
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): |
|
b31a33c36f08
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 |
|
b31a33c36f08
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
87 |
|
b31a33c36f08
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): |
|
b31a33c36f08
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) |
|
b31a33c36f08
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: |
|
b31a33c36f08
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)) < \ |
|
b31a33c36f08
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)) |
|
b31a33c36f08
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
93 return rv |
|
b31a33c36f08
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
94 |
|
b31a33c36f08
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): |
|
b31a33c36f08
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" |
|
b31a33c36f08
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]) |
|
b31a33c36f08
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) |
|
31084
e3025fe70d8b
Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents:
29379
diff
changeset
|
166 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
|
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 |
|
57340
b31a33c36f08
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
174 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
|
175 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
|
176 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
|
177 write(rep) |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
178 write(': ') |
|
24131
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
179 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
|
180 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
|
181 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
|
182 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
|
183 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
|
184 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
|
185 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
|
186 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
|
187 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
|
188 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
|
189 write('}') |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
190 return |
|
5330
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
191 |
|
44885
fefaa0e66fdd
Merged revisions 60176-60209 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
42501
diff
changeset
|
192 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
|
193 (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
|
194 (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
|
195 (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
|
196 ): |
|
44943
6547be11f443
Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
197 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
|
198 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
|
199 write('[') |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
200 endchar = ']' |
|
44885
fefaa0e66fdd
Merged revisions 60176-60209 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
42501
diff
changeset
|
201 elif issubclass(typ, set): |
|
44943
6547be11f443
Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
202 if not length: |
|
6547be11f443
Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
203 write('set()') |
|
6547be11f443
Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
204 return |
|
44885
fefaa0e66fdd
Merged revisions 60176-60209 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
42501
diff
changeset
|
205 write('{') |
|
fefaa0e66fdd
Merged revisions 60176-60209 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
42501
diff
changeset
|
206 endchar = '}' |
|
57340
b31a33c36f08
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
207 object = sorted(object, key=_safe_key) |
|
44885
fefaa0e66fdd
Merged revisions 60176-60209 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
42501
diff
changeset
|
208 elif issubclass(typ, frozenset): |
|
44943
6547be11f443
Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
209 if not length: |
|
6547be11f443
Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
210 write('frozenset()') |
|
6547be11f443
Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
211 return |
|
45067
8930ff230ee9
Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents:
44943
diff
changeset
|
212 write('frozenset({') |
|
8930ff230ee9
Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents:
44943
diff
changeset
|
213 endchar = '})' |
|
57340
b31a33c36f08
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
214 object = sorted(object, key=_safe_key) |
|
44943
6547be11f443
Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44885
diff
changeset
|
215 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
|
216 else: |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
217 write('(') |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
218 endchar = ')' |
|
24131
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
219 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
|
220 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
|
221 if length: |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
222 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
|
223 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
|
224 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
|
225 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
|
226 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
|
227 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
|
228 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
|
229 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
|
230 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
|
231 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
|
232 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
|
233 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
|
234 write(',') |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
235 write(endchar) |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
236 return |
|
5330
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
237 |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
238 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
|
239 |
|
24131
e5ecef5a123a
Change the "__ private" names to "_ protected"; this has been a pain for
Fred Drake <fdrake@acm.org>
parents:
23622
diff
changeset
|
240 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
|
241 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
|
242 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
|
243 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
|
244 self._readable = False |
|
17820
4bcf88e4abff
SF bug[ #423781: pprint.isrecursive() broken.
Tim Peters <tim.peters@gmail.com>
parents:
16562
diff
changeset
|
245 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
|
246 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
|
247 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
|
248 |
|
22766
d26d8575ac62
Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents:
21061
diff
changeset
|
249 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
|
250 """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
|
251 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
|
252 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
|
253 """ |
|
d26d8575ac62
Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents:
21061
diff
changeset
|
254 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
|
255 |
|
d26d8575ac62
Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents:
21061
diff
changeset
|
256 |
|
17820
4bcf88e4abff
SF bug[ #423781: pprint.isrecursive() broken.
Tim Peters <tim.peters@gmail.com>
parents:
16562
diff
changeset
|
257 # 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
|
258 |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
259 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
|
260 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
|
261 if typ is str: |
|
26929
ffa4ab37036f
- PrettyPrinter.isreadable(), .isrecursive():
Fred Drake <fdrake@acm.org>
parents:
24131
diff
changeset
|
262 if 'locale' not in _sys.modules: |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
31085
diff
changeset
|
263 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
|
264 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
|
265 closure = '"' |
|
bc6bd35f5998
Make pprint more locale-friendly; patch contributed by Denis S. Otkidach.
Fred Drake <fdrake@acm.org>
parents:
17828
diff
changeset
|
266 quotes = {'"': '\\"'} |
|
bc6bd35f5998
Make pprint more locale-friendly; patch contributed by Denis S. Otkidach.
Fred Drake <fdrake@acm.org>
parents:
17828
diff
changeset
|
267 else: |
|
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 = {"'": "\\'"} |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
270 qget = quotes.get |
|
26929
ffa4ab37036f
- PrettyPrinter.isreadable(), .isrecursive():
Fred Drake <fdrake@acm.org>
parents:
24131
diff
changeset
|
271 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
|
272 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
|
273 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
|
274 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
|
275 write(char) |
|
19697
bc6bd35f5998
Make pprint more locale-friendly; patch contributed by Denis S. Otkidach.
Fred Drake <fdrake@acm.org>
parents:
17828
diff
changeset
|
276 else: |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
31085
diff
changeset
|
277 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
|
278 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
|
279 |
|
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
|
280 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
|
281 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
|
282 if not object: |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
283 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
|
284 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
|
285 if maxlevels and level >= maxlevels: |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
286 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
|
287 if objid in context: |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
288 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
|
289 context[objid] = 1 |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
290 readable = True |
|
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
291 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
|
292 components = [] |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
293 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
|
294 level += 1 |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
295 saferepr = _safe_repr |
|
57340
b31a33c36f08
Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents:
47080
diff
changeset
|
296 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
|
297 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
|
298 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
|
299 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
|
300 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
|
301 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
|
302 if krecur or vrecur: |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
303 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
|
304 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
|
305 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
|
306 |
|
31084
e3025fe70d8b
Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents:
29379
diff
changeset
|
307 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
|
308 (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
|
309 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
|
310 if not object: |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
311 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
|
312 format = "[%s]" |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
313 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
|
314 format = "(%s,)" |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
315 else: |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
316 if not object: |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
317 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
|
318 format = "(%s)" |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
319 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
|
320 if maxlevels and level >= maxlevels: |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
321 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
|
322 if objid in context: |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
323 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
|
324 context[objid] = 1 |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
325 readable = True |
|
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
326 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
|
327 components = [] |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
328 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
|
329 level += 1 |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
330 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
|
331 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
|
332 append(orepr) |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
333 if not oreadable: |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
334 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
|
335 if orecur: |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
336 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
|
337 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
|
338 return format % _commajoin(components), readable, recursive |
|
20967
bb8716095a81
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
20819
diff
changeset
|
339 |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
31085
diff
changeset
|
340 rep = repr(object) |
|
22867
e2f2187c3d2c
Partial introduction of bools where appropriate.
Guido van Rossum <guido@python.org>
parents:
22766
diff
changeset
|
341 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
|
342 |
|
17828
26745053f840
pprint's workhorse _safe_repr() function took time quadratic in the # of
Tim Peters <tim.peters@gmail.com>
parents:
17820
diff
changeset
|
343 |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
344 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
|
345 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
|
346 % (_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
|
347 |
|
5330
5a22f9b38aac
Checking in a copy of Fred Drake's data structure pretty-printer
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
348 |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
349 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
|
350 import time |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
351 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
|
352 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
|
353 p = PrettyPrinter() |
|
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
354 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
|
355 _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
|
356 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
|
357 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
|
358 t3 = time.time() |
|
40775
4cdf21a0dbbc
Fix most trivially-findable print statements.
Guido van Rossum <guido@python.org>
parents:
39644
diff
changeset
|
359 print("_safe_repr:", t2 - t1) |
|
4cdf21a0dbbc
Fix most trivially-findable print statements.
Guido van Rossum <guido@python.org>
parents:
39644
diff
changeset
|
360 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
|
361 |
|
20819
261a70c0aa79
Brute-force performance hackery; buys back about 20% of the time for
Fred Drake <fdrake@acm.org>
parents:
20348
diff
changeset
|
362 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
|
363 _perfcheck() |
