annotate Lib/test/test_pprint.py @ 83191:0437c19cdad0

gibibytes (Arfrever)
author Antoine Pitrou <solipsis@pitrou.net>
date Sun, 07 Apr 2013 23:46:52 +0200
parents 5a2296093645
children 2d21239a5205
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
82919
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
1 # -*- coding: utf-8 -*-
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
2
17820
4bcf88e4abff SF bug[ #423781: pprint.isrecursive() broken.
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
3 import pprint
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 47080
diff changeset
4 import test.support
17827
0b3da99824c7 Convert the pprint test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 17820
diff changeset
5 import unittest
44943
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
6 import test.test_set
57340
b31a33c36f08 Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents: 55593
diff changeset
7 import random
64583
9659e8c40079 Have pprint() respect the order in an OrderedDict.
Raymond Hettinger <python@rcn.com>
parents: 58476
diff changeset
8 import collections
9659e8c40079 Have pprint() respect the order in an OrderedDict.
Raymond Hettinger <python@rcn.com>
parents: 58476
diff changeset
9 import itertools
17827
0b3da99824c7 Convert the pprint test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 17820
diff changeset
10
31084
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
11 # list, tuple and dict subclasses that do or don't overwrite __repr__
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
12 class list2(list):
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
13 pass
38546
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
14
31084
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
15 class list3(list):
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
16 def __repr__(self):
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
17 return list.__repr__(self)
38546
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
18
31084
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
19 class tuple2(tuple):
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
20 pass
38546
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
21
31084
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
22 class tuple3(tuple):
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
23 def __repr__(self):
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
24 return tuple.__repr__(self)
38546
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
25
31084
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
26 class dict2(dict):
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
27 pass
38546
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
28
31084
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
29 class dict3(dict):
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
30 def __repr__(self):
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
31 return dict.__repr__(self)
17827
0b3da99824c7 Convert the pprint test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 17820
diff changeset
32
57340
b31a33c36f08 Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents: 55593
diff changeset
33 class Unorderable:
b31a33c36f08 Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents: 55593
diff changeset
34 def __repr__(self):
b31a33c36f08 Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents: 55593
diff changeset
35 return str(id(self))
b31a33c36f08 Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents: 55593
diff changeset
36
17827
0b3da99824c7 Convert the pprint test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 17820
diff changeset
37 class QueryTestCase(unittest.TestCase):
17820
4bcf88e4abff SF bug[ #423781: pprint.isrecursive() broken.
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
38
17827
0b3da99824c7 Convert the pprint test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 17820
diff changeset
39 def setUp(self):
41642
a6eb6acfe04a Merged revisions 55007-55179 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41575
diff changeset
40 self.a = list(range(100))
a6eb6acfe04a Merged revisions 55007-55179 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41575
diff changeset
41 self.b = list(range(200))
17827
0b3da99824c7 Convert the pprint test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 17820
diff changeset
42 self.a[-12] = self.b
17820
4bcf88e4abff SF bug[ #423781: pprint.isrecursive() broken.
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
43
17827
0b3da99824c7 Convert the pprint test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 17820
diff changeset
44 def test_basic(self):
24957
dc66eb4cd17a Standardize behavior: no docstrings in test functions.
Guido van Rossum <guido@python.org>
parents: 24364
diff changeset
45 # Verify .isrecursive() and .isreadable() w/o recursion
26930
32e4c7753416 Make sure PrettyPrinter methods that mirror the module-level
Fred Drake <fdrake@acm.org>
parents: 24957
diff changeset
46 pp = pprint.PrettyPrinter()
42050
ca693f4fd05d Simplify various spots where: str() is called on something
Walter Dörwald <walter@livinglogic.de>
parents: 41642
diff changeset
47 for safe in (2, 2.0, 2j, "abc", [3], (2,2), {3: 3}, "yaddayadda",
17827
0b3da99824c7 Convert the pprint test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 17820
diff changeset
48 self.a, self.b):
26930
32e4c7753416 Make sure PrettyPrinter methods that mirror the module-level
Fred Drake <fdrake@acm.org>
parents: 24957
diff changeset
49 # module-level convenience functions
58476
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
50 self.assertFalse(pprint.isrecursive(safe),
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
51 "expected not isrecursive for %r" % (safe,))
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
52 self.assertTrue(pprint.isreadable(safe),
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
53 "expected isreadable for %r" % (safe,))
26930
32e4c7753416 Make sure PrettyPrinter methods that mirror the module-level
Fred Drake <fdrake@acm.org>
parents: 24957
diff changeset
54 # PrettyPrinter methods
58476
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
55 self.assertFalse(pp.isrecursive(safe),
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
56 "expected not isrecursive for %r" % (safe,))
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
57 self.assertTrue(pp.isreadable(safe),
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
58 "expected isreadable for %r" % (safe,))
17820
4bcf88e4abff SF bug[ #423781: pprint.isrecursive() broken.
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
59
17827
0b3da99824c7 Convert the pprint test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 17820
diff changeset
60 def test_knotted(self):
24957
dc66eb4cd17a Standardize behavior: no docstrings in test functions.
Guido van Rossum <guido@python.org>
parents: 24364
diff changeset
61 # Verify .isrecursive() and .isreadable() w/ recursion
17827
0b3da99824c7 Convert the pprint test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 17820
diff changeset
62 # Tie a knot.
0b3da99824c7 Convert the pprint test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 17820
diff changeset
63 self.b[67] = self.a
0b3da99824c7 Convert the pprint test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 17820
diff changeset
64 # Messy dict.
0b3da99824c7 Convert the pprint test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 17820
diff changeset
65 self.d = {}
0b3da99824c7 Convert the pprint test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 17820
diff changeset
66 self.d[0] = self.d[1] = self.d[2] = self.d
0b3da99824c7 Convert the pprint test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 17820
diff changeset
67
26930
32e4c7753416 Make sure PrettyPrinter methods that mirror the module-level
Fred Drake <fdrake@acm.org>
parents: 24957
diff changeset
68 pp = pprint.PrettyPrinter()
17820
4bcf88e4abff SF bug[ #423781: pprint.isrecursive() broken.
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
69
17827
0b3da99824c7 Convert the pprint test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 17820
diff changeset
70 for icky in self.a, self.b, self.d, (self.d, self.d):
58476
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
71 self.assertTrue(pprint.isrecursive(icky), "expected isrecursive")
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
72 self.assertFalse(pprint.isreadable(icky), "expected not isreadable")
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
73 self.assertTrue(pp.isrecursive(icky), "expected isrecursive")
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
74 self.assertFalse(pp.isreadable(icky), "expected not isreadable")
17827
0b3da99824c7 Convert the pprint test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 17820
diff changeset
75
0b3da99824c7 Convert the pprint test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 17820
diff changeset
76 # Break the cycles.
0b3da99824c7 Convert the pprint test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 17820
diff changeset
77 self.d.clear()
0b3da99824c7 Convert the pprint test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 17820
diff changeset
78 del self.a[:]
0b3da99824c7 Convert the pprint test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 17820
diff changeset
79 del self.b[:]
17820
4bcf88e4abff SF bug[ #423781: pprint.isrecursive() broken.
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
80
17827
0b3da99824c7 Convert the pprint test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 17820
diff changeset
81 for safe in self.a, self.b, self.d, (self.d, self.d):
26930
32e4c7753416 Make sure PrettyPrinter methods that mirror the module-level
Fred Drake <fdrake@acm.org>
parents: 24957
diff changeset
82 # module-level convenience functions
58476
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
83 self.assertFalse(pprint.isrecursive(safe),
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
84 "expected not isrecursive for %r" % (safe,))
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
85 self.assertTrue(pprint.isreadable(safe),
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
86 "expected isreadable for %r" % (safe,))
26930
32e4c7753416 Make sure PrettyPrinter methods that mirror the module-level
Fred Drake <fdrake@acm.org>
parents: 24957
diff changeset
87 # PrettyPrinter methods
58476
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
88 self.assertFalse(pp.isrecursive(safe),
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
89 "expected not isrecursive for %r" % (safe,))
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
90 self.assertTrue(pp.isreadable(safe),
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
91 "expected isreadable for %r" % (safe,))
17820
4bcf88e4abff SF bug[ #423781: pprint.isrecursive() broken.
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
92
17827
0b3da99824c7 Convert the pprint test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 17820
diff changeset
93 def test_unreadable(self):
24957
dc66eb4cd17a Standardize behavior: no docstrings in test functions.
Guido van Rossum <guido@python.org>
parents: 24364
diff changeset
94 # Not recursive but not readable anyway
26930
32e4c7753416 Make sure PrettyPrinter methods that mirror the module-level
Fred Drake <fdrake@acm.org>
parents: 24957
diff changeset
95 pp = pprint.PrettyPrinter()
17827
0b3da99824c7 Convert the pprint test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 17820
diff changeset
96 for unreadable in type(3), pprint, pprint.isrecursive:
26930
32e4c7753416 Make sure PrettyPrinter methods that mirror the module-level
Fred Drake <fdrake@acm.org>
parents: 24957
diff changeset
97 # module-level convenience functions
58476
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
98 self.assertFalse(pprint.isrecursive(unreadable),
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
99 "expected not isrecursive for %r" % (unreadable,))
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
100 self.assertFalse(pprint.isreadable(unreadable),
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
101 "expected not isreadable for %r" % (unreadable,))
26930
32e4c7753416 Make sure PrettyPrinter methods that mirror the module-level
Fred Drake <fdrake@acm.org>
parents: 24957
diff changeset
102 # PrettyPrinter methods
58476
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
103 self.assertFalse(pp.isrecursive(unreadable),
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
104 "expected not isrecursive for %r" % (unreadable,))
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
105 self.assertFalse(pp.isreadable(unreadable),
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
106 "expected not isreadable for %r" % (unreadable,))
17820
4bcf88e4abff SF bug[ #423781: pprint.isrecursive() broken.
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
107
17828
26745053f840 pprint's workhorse _safe_repr() function took time quadratic in the # of
Tim Peters <tim.peters@gmail.com>
parents: 17827
diff changeset
108 def test_same_as_repr(self):
31084
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
109 # Simple objects, small containers and classes that overwrite __repr__
38546
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
110 # For those the result should be the same as repr().
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
111 # Ahem. The docs don't say anything about that -- this appears to
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
112 # be testing an implementation quirk. Starting in Python 2.5, it's
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
113 # not true for dicts: pprint always sorts dicts by key now; before,
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
114 # it sorted a dict display if and only if the display required
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
115 # multiple lines. For that reason, dicts with more than one element
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
116 # aren't tested here.
42050
ca693f4fd05d Simplify various spots where: str() is called on something
Walter Dörwald <walter@livinglogic.de>
parents: 41642
diff changeset
117 for simple in (0, 0, 0+0j, 0.0, "", b"",
31084
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
118 (), tuple2(), tuple3(),
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
119 [], list2(), list3(),
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
120 {}, dict2(), dict3(),
58476
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
121 self.assertTrue, pprint,
42050
ca693f4fd05d Simplify various spots where: str() is called on something
Walter Dörwald <walter@livinglogic.de>
parents: 41642
diff changeset
122 -6, -6, -6-6j, -1.5, "x", b"x", (3,), [3], {3: 6},
52892
792bb885029f Merged revisions 70712,70714,70764-70765,70769-70771,70773,70776-70777,70788-70789,70824,70828,70832,70836,70842,70851,70855,70857,70866-70872,70883,70885,70893-70894,70896-70897,70903,70905-70907,70915,70927,70933,70951,70960,70962-70964,70998,71001,71006,71008,71010-71011,71019,71037,71056,71094,71101-71103,71106,71119,71123,71149-71150,71203,71212,71214-71217,71221,71240 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 48493
diff changeset
123 (1,2), [3,4], {5: 6},
31084
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
124 tuple2((1,2)), tuple3((1,2)), tuple3(range(100)),
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
125 [3,4], list2([3,4]), list3([3,4]), list3(range(100)),
52892
792bb885029f Merged revisions 70712,70714,70764-70765,70769-70771,70773,70776-70777,70788-70789,70824,70828,70832,70836,70842,70851,70855,70857,70866-70872,70883,70885,70893-70894,70896-70897,70903,70905-70907,70915,70927,70933,70951,70960,70962-70964,70998,71001,71006,71008,71010-71011,71019,71037,71056,71094,71101-71103,71106,71119,71123,71149-71150,71203,71212,71214-71217,71221,71240 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 48493
diff changeset
126 dict2({5: 6}), dict3({5: 6}),
17828
26745053f840 pprint's workhorse _safe_repr() function took time quadratic in the # of
Tim Peters <tim.peters@gmail.com>
parents: 17827
diff changeset
127 range(10, -11, -1)
26745053f840 pprint's workhorse _safe_repr() function took time quadratic in the # of
Tim Peters <tim.peters@gmail.com>
parents: 17827
diff changeset
128 ):
26745053f840 pprint's workhorse _safe_repr() function took time quadratic in the # of
Tim Peters <tim.peters@gmail.com>
parents: 17827
diff changeset
129 native = repr(simple)
26745053f840 pprint's workhorse _safe_repr() function took time quadratic in the # of
Tim Peters <tim.peters@gmail.com>
parents: 17827
diff changeset
130 for function in "pformat", "saferepr":
26745053f840 pprint's workhorse _safe_repr() function took time quadratic in the # of
Tim Peters <tim.peters@gmail.com>
parents: 17827
diff changeset
131 f = getattr(pprint, function)
26745053f840 pprint's workhorse _safe_repr() function took time quadratic in the # of
Tim Peters <tim.peters@gmail.com>
parents: 17827
diff changeset
132 got = f(simple)
58476
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
133 self.assertEqual(native, got,
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
134 "expected %s got %s from pprint.%s" %
c10ace5b76ce Merged revisions 77729 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57340
diff changeset
135 (native, got, function))
17827
0b3da99824c7 Convert the pprint test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 17820
diff changeset
136
21061
1802a9edb4ee __format(): Applied SF patch #482003 by Skip to fix multiline dict
Barry Warsaw <barry@python.org>
parents: 20013
diff changeset
137 def test_basic_line_wrap(self):
24957
dc66eb4cd17a Standardize behavior: no docstrings in test functions.
Guido van Rossum <guido@python.org>
parents: 24364
diff changeset
138 # verify basic line-wrapping operation
21061
1802a9edb4ee __format(): Applied SF patch #482003 by Skip to fix multiline dict
Barry Warsaw <barry@python.org>
parents: 20013
diff changeset
139 o = {'RPM_cal': 0,
1802a9edb4ee __format(): Applied SF patch #482003 by Skip to fix multiline dict
Barry Warsaw <barry@python.org>
parents: 20013
diff changeset
140 'RPM_cal2': 48059,
1802a9edb4ee __format(): Applied SF patch #482003 by Skip to fix multiline dict
Barry Warsaw <barry@python.org>
parents: 20013
diff changeset
141 'Speed_cal': 0,
1802a9edb4ee __format(): Applied SF patch #482003 by Skip to fix multiline dict
Barry Warsaw <barry@python.org>
parents: 20013
diff changeset
142 'controldesk_runtime_us': 0,
1802a9edb4ee __format(): Applied SF patch #482003 by Skip to fix multiline dict
Barry Warsaw <barry@python.org>
parents: 20013
diff changeset
143 'main_code_runtime_us': 0,
1802a9edb4ee __format(): Applied SF patch #482003 by Skip to fix multiline dict
Barry Warsaw <barry@python.org>
parents: 20013
diff changeset
144 'read_io_runtime_us': 0,
1802a9edb4ee __format(): Applied SF patch #482003 by Skip to fix multiline dict
Barry Warsaw <barry@python.org>
parents: 20013
diff changeset
145 'write_io_runtime_us': 43690}
1802a9edb4ee __format(): Applied SF patch #482003 by Skip to fix multiline dict
Barry Warsaw <barry@python.org>
parents: 20013
diff changeset
146 exp = """\
1802a9edb4ee __format(): Applied SF patch #482003 by Skip to fix multiline dict
Barry Warsaw <barry@python.org>
parents: 20013
diff changeset
147 {'RPM_cal': 0,
1802a9edb4ee __format(): Applied SF patch #482003 by Skip to fix multiline dict
Barry Warsaw <barry@python.org>
parents: 20013
diff changeset
148 'RPM_cal2': 48059,
1802a9edb4ee __format(): Applied SF patch #482003 by Skip to fix multiline dict
Barry Warsaw <barry@python.org>
parents: 20013
diff changeset
149 'Speed_cal': 0,
1802a9edb4ee __format(): Applied SF patch #482003 by Skip to fix multiline dict
Barry Warsaw <barry@python.org>
parents: 20013
diff changeset
150 'controldesk_runtime_us': 0,
1802a9edb4ee __format(): Applied SF patch #482003 by Skip to fix multiline dict
Barry Warsaw <barry@python.org>
parents: 20013
diff changeset
151 'main_code_runtime_us': 0,
1802a9edb4ee __format(): Applied SF patch #482003 by Skip to fix multiline dict
Barry Warsaw <barry@python.org>
parents: 20013
diff changeset
152 'read_io_runtime_us': 0,
1802a9edb4ee __format(): Applied SF patch #482003 by Skip to fix multiline dict
Barry Warsaw <barry@python.org>
parents: 20013
diff changeset
153 'write_io_runtime_us': 43690}"""
31084
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
154 for type in [dict, dict2]:
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
155 self.assertEqual(pprint.pformat(type(o)), exp)
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
156
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
157 o = range(100)
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
158 exp = '[%s]' % ',\n '.join(map(str, o))
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
159 for type in [list, list2]:
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
160 self.assertEqual(pprint.pformat(type(o)), exp)
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
161
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
162 o = tuple(range(100))
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
163 exp = '(%s)' % ',\n '.join(map(str, o))
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
164 for type in [tuple, tuple2]:
e3025fe70d8b Patch #750542: pprint now will pretty print subclasses of list, tuple
Walter Dörwald <walter@livinglogic.de>
parents: 26930
diff changeset
165 self.assertEqual(pprint.pformat(type(o)), exp)
21061
1802a9edb4ee __format(): Applied SF patch #482003 by Skip to fix multiline dict
Barry Warsaw <barry@python.org>
parents: 20013
diff changeset
166
31085
a2f6c6a67f24 Add parameters indent, width and depth to pprint.pprint() and pprint.pformat()
Walter Dörwald <walter@livinglogic.de>
parents: 31084
diff changeset
167 # indent parameter
a2f6c6a67f24 Add parameters indent, width and depth to pprint.pprint() and pprint.pformat()
Walter Dörwald <walter@livinglogic.de>
parents: 31084
diff changeset
168 o = range(100)
a2f6c6a67f24 Add parameters indent, width and depth to pprint.pprint() and pprint.pformat()
Walter Dörwald <walter@livinglogic.de>
parents: 31084
diff changeset
169 exp = '[ %s]' % ',\n '.join(map(str, o))
a2f6c6a67f24 Add parameters indent, width and depth to pprint.pprint() and pprint.pformat()
Walter Dörwald <walter@livinglogic.de>
parents: 31084
diff changeset
170 for type in [list, list2]:
a2f6c6a67f24 Add parameters indent, width and depth to pprint.pprint() and pprint.pformat()
Walter Dörwald <walter@livinglogic.de>
parents: 31084
diff changeset
171 self.assertEqual(pprint.pformat(type(o), indent=4), exp)
a2f6c6a67f24 Add parameters indent, width and depth to pprint.pprint() and pprint.pformat()
Walter Dörwald <walter@livinglogic.de>
parents: 31084
diff changeset
172
48493
9ebd3f385575 Merged revisions 64446,64490,64495,64526,64567 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
173 def test_nested_indentations(self):
9ebd3f385575 Merged revisions 64446,64490,64495,64526,64567 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
174 o1 = list(range(10))
9ebd3f385575 Merged revisions 64446,64490,64495,64526,64567 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
175 o2 = dict(first=1, second=2, third=3)
9ebd3f385575 Merged revisions 64446,64490,64495,64526,64567 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
176 o = [o1, o2]
9ebd3f385575 Merged revisions 64446,64490,64495,64526,64567 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
177 expected = """\
9ebd3f385575 Merged revisions 64446,64490,64495,64526,64567 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
178 [ [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
9ebd3f385575 Merged revisions 64446,64490,64495,64526,64567 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
179 { 'first': 1,
9ebd3f385575 Merged revisions 64446,64490,64495,64526,64567 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
180 'second': 2,
9ebd3f385575 Merged revisions 64446,64490,64495,64526,64567 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
181 'third': 3}]"""
9ebd3f385575 Merged revisions 64446,64490,64495,64526,64567 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
182 self.assertEqual(pprint.pformat(o, indent=4, width=42), expected)
9ebd3f385575 Merged revisions 64446,64490,64495,64526,64567 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
183
38546
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
184 def test_sorted_dict(self):
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
185 # Starting in Python 2.5, pprint sorts dict displays by key regardless
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
186 # of how small the dictionary may be.
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
187 # Before the change, on 32-bit Windows pformat() gave order
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
188 # 'a', 'c', 'b' here, so this test failed.
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
189 d = {'a': 1, 'b': 1, 'c': 1}
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
190 self.assertEqual(pprint.pformat(d), "{'a': 1, 'b': 1, 'c': 1}")
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
191 self.assertEqual(pprint.pformat([d, d]),
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
192 "[{'a': 1, 'b': 1, 'c': 1}, {'a': 1, 'b': 1, 'c': 1}]")
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
193
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
194 # The next one is kind of goofy. The sorted order depends on the
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
195 # alphabetic order of type names: "int" < "str" < "tuple". Before
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
196 # Python 2.5, this was in the test_same_as_repr() test. It's worth
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
197 # keeping around for now because it's one of few tests of pprint
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
198 # against a crazy mix of types.
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
199 self.assertEqual(pprint.pformat({"xy\tab\n": (3,), 5: [[]], (): {}}),
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
200 r"{5: [[]], 'xy\tab\n': (3,), (): {}}")
2eb8be0f8731 pprint functions used to sort a dict (by key) if and only if
Tim Peters <tim.peters@gmail.com>
parents: 31515
diff changeset
201
64583
9659e8c40079 Have pprint() respect the order in an OrderedDict.
Raymond Hettinger <python@rcn.com>
parents: 58476
diff changeset
202 def test_ordered_dict(self):
9659e8c40079 Have pprint() respect the order in an OrderedDict.
Raymond Hettinger <python@rcn.com>
parents: 58476
diff changeset
203 words = 'the quick brown fox jumped over a lazy dog'.split()
9659e8c40079 Have pprint() respect the order in an OrderedDict.
Raymond Hettinger <python@rcn.com>
parents: 58476
diff changeset
204 d = collections.OrderedDict(zip(words, itertools.count()))
9659e8c40079 Have pprint() respect the order in an OrderedDict.
Raymond Hettinger <python@rcn.com>
parents: 58476
diff changeset
205 self.assertEqual(pprint.pformat(d),
9659e8c40079 Have pprint() respect the order in an OrderedDict.
Raymond Hettinger <python@rcn.com>
parents: 58476
diff changeset
206 """\
9659e8c40079 Have pprint() respect the order in an OrderedDict.
Raymond Hettinger <python@rcn.com>
parents: 58476
diff changeset
207 {'the': 0,
9659e8c40079 Have pprint() respect the order in an OrderedDict.
Raymond Hettinger <python@rcn.com>
parents: 58476
diff changeset
208 'quick': 1,
9659e8c40079 Have pprint() respect the order in an OrderedDict.
Raymond Hettinger <python@rcn.com>
parents: 58476
diff changeset
209 'brown': 2,
9659e8c40079 Have pprint() respect the order in an OrderedDict.
Raymond Hettinger <python@rcn.com>
parents: 58476
diff changeset
210 'fox': 3,
9659e8c40079 Have pprint() respect the order in an OrderedDict.
Raymond Hettinger <python@rcn.com>
parents: 58476
diff changeset
211 'jumped': 4,
9659e8c40079 Have pprint() respect the order in an OrderedDict.
Raymond Hettinger <python@rcn.com>
parents: 58476
diff changeset
212 'over': 5,
9659e8c40079 Have pprint() respect the order in an OrderedDict.
Raymond Hettinger <python@rcn.com>
parents: 58476
diff changeset
213 'a': 6,
9659e8c40079 Have pprint() respect the order in an OrderedDict.
Raymond Hettinger <python@rcn.com>
parents: 58476
diff changeset
214 'lazy': 7,
9659e8c40079 Have pprint() respect the order in an OrderedDict.
Raymond Hettinger <python@rcn.com>
parents: 58476
diff changeset
215 'dog': 8}""")
22766
d26d8575ac62 Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents: 21061
diff changeset
216 def test_subclassing(self):
d26d8575ac62 Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents: 21061
diff changeset
217 o = {'names with spaces': 'should be presented using repr()',
d26d8575ac62 Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents: 21061
diff changeset
218 'others.should.not.be': 'like.this'}
d26d8575ac62 Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents: 21061
diff changeset
219 exp = """\
d26d8575ac62 Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents: 21061
diff changeset
220 {'names with spaces': 'should be presented using repr()',
d26d8575ac62 Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents: 21061
diff changeset
221 others.should.not.be: like.this}"""
d26d8575ac62 Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents: 21061
diff changeset
222 self.assertEqual(DottedPrettyPrinter().pformat(o), exp)
d26d8575ac62 Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents: 21061
diff changeset
223
76485
6e5855854a2e Implement PEP 412: Key-sharing dictionaries (closes #13903)
Benjamin Peterson <benjamin@python.org>
parents: 64891
diff changeset
224 @unittest.expectedFailure
6e5855854a2e Implement PEP 412: Key-sharing dictionaries (closes #13903)
Benjamin Peterson <benjamin@python.org>
parents: 64891
diff changeset
225 #See http://bugs.python.org/issue13907
64891
b3d0deaf50e5 Issue9131: Mark fragile test as CPython-specific
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents: 64583
diff changeset
226 @test.support.cpython_only
44943
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
227 def test_set_reprs(self):
64891
b3d0deaf50e5 Issue9131: Mark fragile test as CPython-specific
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents: 64583
diff changeset
228 # This test creates a complex arrangement of frozensets and
b3d0deaf50e5 Issue9131: Mark fragile test as CPython-specific
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents: 64583
diff changeset
229 # compares the pretty-printed repr against a string hard-coded in
b3d0deaf50e5 Issue9131: Mark fragile test as CPython-specific
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents: 64583
diff changeset
230 # the test. The hard-coded repr depends on the sort order of
b3d0deaf50e5 Issue9131: Mark fragile test as CPython-specific
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents: 64583
diff changeset
231 # frozensets.
b3d0deaf50e5 Issue9131: Mark fragile test as CPython-specific
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents: 64583
diff changeset
232 #
b3d0deaf50e5 Issue9131: Mark fragile test as CPython-specific
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents: 64583
diff changeset
233 # However, as the docs point out: "Since sets only define
b3d0deaf50e5 Issue9131: Mark fragile test as CPython-specific
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents: 64583
diff changeset
234 # partial ordering (subset relationships), the output of the
b3d0deaf50e5 Issue9131: Mark fragile test as CPython-specific
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents: 64583
diff changeset
235 # list.sort() method is undefined for lists of sets."
b3d0deaf50e5 Issue9131: Mark fragile test as CPython-specific
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents: 64583
diff changeset
236 #
b3d0deaf50e5 Issue9131: Mark fragile test as CPython-specific
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents: 64583
diff changeset
237 # In a nutshell, the test assumes frozenset({0}) will always
b3d0deaf50e5 Issue9131: Mark fragile test as CPython-specific
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents: 64583
diff changeset
238 # sort before frozenset({1}), but:
b3d0deaf50e5 Issue9131: Mark fragile test as CPython-specific
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents: 64583
diff changeset
239 #
b3d0deaf50e5 Issue9131: Mark fragile test as CPython-specific
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents: 64583
diff changeset
240 # >>> frozenset({0}) < frozenset({1})
b3d0deaf50e5 Issue9131: Mark fragile test as CPython-specific
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents: 64583
diff changeset
241 # False
b3d0deaf50e5 Issue9131: Mark fragile test as CPython-specific
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents: 64583
diff changeset
242 # >>> frozenset({1}) < frozenset({0})
b3d0deaf50e5 Issue9131: Mark fragile test as CPython-specific
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents: 64583
diff changeset
243 # False
b3d0deaf50e5 Issue9131: Mark fragile test as CPython-specific
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents: 64583
diff changeset
244 #
b3d0deaf50e5 Issue9131: Mark fragile test as CPython-specific
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents: 64583
diff changeset
245 # Consequently, this test is fragile and
b3d0deaf50e5 Issue9131: Mark fragile test as CPython-specific
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents: 64583
diff changeset
246 # implementation-dependent. Small changes to Python's sort
b3d0deaf50e5 Issue9131: Mark fragile test as CPython-specific
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents: 64583
diff changeset
247 # algorithm cause the test to fail when it should pass.
76485
6e5855854a2e Implement PEP 412: Key-sharing dictionaries (closes #13903)
Benjamin Peterson <benjamin@python.org>
parents: 64891
diff changeset
248 # XXX Or changes to the dictionary implmentation...
64891
b3d0deaf50e5 Issue9131: Mark fragile test as CPython-specific
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents: 64583
diff changeset
249
44943
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
250 self.assertEqual(pprint.pformat(set()), 'set()')
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
251 self.assertEqual(pprint.pformat(set(range(3))), '{0, 1, 2}')
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
252 self.assertEqual(pprint.pformat(frozenset()), 'frozenset()')
76485
6e5855854a2e Implement PEP 412: Key-sharing dictionaries (closes #13903)
Benjamin Peterson <benjamin@python.org>
parents: 64891
diff changeset
253
44943
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
254 self.assertEqual(pprint.pformat(frozenset(range(3))), 'frozenset({0, 1, 2})')
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
255 cube_repr_tgt = """\
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
256 {frozenset(): frozenset({frozenset({2}), frozenset({0}), frozenset({1})}),
45067
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
257 frozenset({0}): frozenset({frozenset(),
44943
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
258 frozenset({0, 2}),
45067
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
259 frozenset({0, 1})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
260 frozenset({1}): frozenset({frozenset(),
44943
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
261 frozenset({1, 2}),
45067
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
262 frozenset({0, 1})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
263 frozenset({2}): frozenset({frozenset(),
44943
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
264 frozenset({1, 2}),
45067
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
265 frozenset({0, 2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
266 frozenset({1, 2}): frozenset({frozenset({2}),
44943
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
267 frozenset({1}),
45067
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
268 frozenset({0, 1, 2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
269 frozenset({0, 2}): frozenset({frozenset({2}),
44943
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
270 frozenset({0}),
45067
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
271 frozenset({0, 1, 2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
272 frozenset({0, 1}): frozenset({frozenset({0}),
44943
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
273 frozenset({1}),
45067
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
274 frozenset({0, 1, 2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
275 frozenset({0, 1, 2}): frozenset({frozenset({1, 2}),
44943
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
276 frozenset({0, 2}),
45067
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
277 frozenset({0, 1})})}"""
44943
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
278 cube = test.test_set.cube(3)
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
279 self.assertEqual(pprint.pformat(cube), cube_repr_tgt)
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
280 cubo_repr_tgt = """\
45067
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
281 {frozenset({frozenset({0, 2}), frozenset({0})}): frozenset({frozenset({frozenset({0,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
282 2}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
283 frozenset({0,
44943
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
284 1,
45067
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
285 2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
286 frozenset({frozenset({0}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
287 frozenset({0,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
288 1})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
289 frozenset({frozenset(),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
290 frozenset({0})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
291 frozenset({frozenset({2}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
292 frozenset({0,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
293 2})})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
294 frozenset({frozenset({0, 1}), frozenset({1})}): frozenset({frozenset({frozenset({0,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
295 1}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
296 frozenset({0,
44943
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
297 1,
45067
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
298 2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
299 frozenset({frozenset({0}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
300 frozenset({0,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
301 1})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
302 frozenset({frozenset({1}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
303 frozenset({1,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
304 2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
305 frozenset({frozenset(),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
306 frozenset({1})})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
307 frozenset({frozenset({1, 2}), frozenset({1})}): frozenset({frozenset({frozenset({1,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
308 2}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
309 frozenset({0,
44943
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
310 1,
45067
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
311 2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
312 frozenset({frozenset({2}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
313 frozenset({1,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
314 2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
315 frozenset({frozenset(),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
316 frozenset({1})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
317 frozenset({frozenset({1}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
318 frozenset({0,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
319 1})})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
320 frozenset({frozenset({1, 2}), frozenset({2})}): frozenset({frozenset({frozenset({1,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
321 2}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
322 frozenset({0,
44943
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
323 1,
45067
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
324 2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
325 frozenset({frozenset({1}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
326 frozenset({1,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
327 2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
328 frozenset({frozenset({2}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
329 frozenset({0,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
330 2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
331 frozenset({frozenset(),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
332 frozenset({2})})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
333 frozenset({frozenset(), frozenset({0})}): frozenset({frozenset({frozenset({0}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
334 frozenset({0,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
335 1})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
336 frozenset({frozenset({0}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
337 frozenset({0,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
338 2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
339 frozenset({frozenset(),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
340 frozenset({1})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
341 frozenset({frozenset(),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
342 frozenset({2})})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
343 frozenset({frozenset(), frozenset({1})}): frozenset({frozenset({frozenset(),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
344 frozenset({0})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
345 frozenset({frozenset({1}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
346 frozenset({1,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
347 2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
348 frozenset({frozenset(),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
349 frozenset({2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
350 frozenset({frozenset({1}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
351 frozenset({0,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
352 1})})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
353 frozenset({frozenset({2}), frozenset()}): frozenset({frozenset({frozenset({2}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
354 frozenset({1,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
355 2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
356 frozenset({frozenset(),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
357 frozenset({0})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
358 frozenset({frozenset(),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
359 frozenset({1})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
360 frozenset({frozenset({2}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
361 frozenset({0,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
362 2})})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
363 frozenset({frozenset({0, 1, 2}), frozenset({0, 1})}): frozenset({frozenset({frozenset({1,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
364 2}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
365 frozenset({0,
44943
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
366 1,
45067
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
367 2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
368 frozenset({frozenset({0,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
369 2}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
370 frozenset({0,
44943
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
371 1,
45067
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
372 2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
373 frozenset({frozenset({0}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
374 frozenset({0,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
375 1})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
376 frozenset({frozenset({1}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
377 frozenset({0,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
378 1})})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
379 frozenset({frozenset({0}), frozenset({0, 1})}): frozenset({frozenset({frozenset(),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
380 frozenset({0})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
381 frozenset({frozenset({0,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
382 1}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
383 frozenset({0,
44943
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
384 1,
45067
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
385 2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
386 frozenset({frozenset({0}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
387 frozenset({0,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
388 2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
389 frozenset({frozenset({1}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
390 frozenset({0,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
391 1})})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
392 frozenset({frozenset({2}), frozenset({0, 2})}): frozenset({frozenset({frozenset({0,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
393 2}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
394 frozenset({0,
44943
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
395 1,
45067
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
396 2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
397 frozenset({frozenset({2}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
398 frozenset({1,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
399 2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
400 frozenset({frozenset({0}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
401 frozenset({0,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
402 2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
403 frozenset({frozenset(),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
404 frozenset({2})})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
405 frozenset({frozenset({0, 1, 2}), frozenset({0, 2})}): frozenset({frozenset({frozenset({1,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
406 2}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
407 frozenset({0,
44943
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
408 1,
45067
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
409 2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
410 frozenset({frozenset({0,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
411 1}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
412 frozenset({0,
44943
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
413 1,
45067
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
414 2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
415 frozenset({frozenset({0}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
416 frozenset({0,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
417 2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
418 frozenset({frozenset({2}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
419 frozenset({0,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
420 2})})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
421 frozenset({frozenset({1, 2}), frozenset({0, 1, 2})}): frozenset({frozenset({frozenset({0,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
422 2}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
423 frozenset({0,
44943
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
424 1,
45067
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
425 2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
426 frozenset({frozenset({0,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
427 1}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
428 frozenset({0,
44943
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
429 1,
45067
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
430 2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
431 frozenset({frozenset({2}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
432 frozenset({1,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
433 2})}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
434 frozenset({frozenset({1}),
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
435 frozenset({1,
8930ff230ee9 Update pprint() to match the new repr style for frozensets
Raymond Hettinger <python@rcn.com>
parents: 44943
diff changeset
436 2})})})}"""
44943
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
437
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
438 cubo = test.test_set.linegraph(cube)
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
439 self.assertEqual(pprint.pformat(cubo), cubo_repr_tgt)
6547be11f443 Merged revisions 60245-60277 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 42050
diff changeset
440
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
441 def test_depth(self):
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
442 nested_tuple = (1, (2, (3, (4, (5, 6)))))
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
443 nested_dict = {1: {2: {3: {4: {5: {6: 6}}}}}}
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
444 nested_list = [1, [2, [3, [4, [5, [6, []]]]]]]
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
445 self.assertEqual(pprint.pformat(nested_tuple), repr(nested_tuple))
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
446 self.assertEqual(pprint.pformat(nested_dict), repr(nested_dict))
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
447 self.assertEqual(pprint.pformat(nested_list), repr(nested_list))
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
448
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
449 lv1_tuple = '(1, (...))'
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
450 lv1_dict = '{1: {...}}'
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
451 lv1_list = '[1, [...]]'
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
452 self.assertEqual(pprint.pformat(nested_tuple, depth=1), lv1_tuple)
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
453 self.assertEqual(pprint.pformat(nested_dict, depth=1), lv1_dict)
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
454 self.assertEqual(pprint.pformat(nested_list, depth=1), lv1_list)
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
455
57340
b31a33c36f08 Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents: 55593
diff changeset
456 def test_sort_unorderable_values(self):
b31a33c36f08 Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents: 55593
diff changeset
457 # Issue 3976: sorted pprints fail for unorderable values.
b31a33c36f08 Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents: 55593
diff changeset
458 n = 20
b31a33c36f08 Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents: 55593
diff changeset
459 keys = [Unorderable() for i in range(n)]
b31a33c36f08 Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents: 55593
diff changeset
460 random.shuffle(keys)
b31a33c36f08 Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents: 55593
diff changeset
461 skeys = sorted(keys, key=id)
b31a33c36f08 Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents: 55593
diff changeset
462 clean = lambda s: s.replace(' ', '').replace('\n','')
b31a33c36f08 Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents: 55593
diff changeset
463
b31a33c36f08 Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents: 55593
diff changeset
464 self.assertEqual(clean(pprint.pformat(set(keys))),
b31a33c36f08 Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents: 55593
diff changeset
465 '{' + ','.join(map(repr, skeys)) + '}')
b31a33c36f08 Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents: 55593
diff changeset
466 self.assertEqual(clean(pprint.pformat(frozenset(keys))),
b31a33c36f08 Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents: 55593
diff changeset
467 'frozenset({' + ','.join(map(repr, skeys)) + '})')
b31a33c36f08 Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents: 55593
diff changeset
468 self.assertEqual(clean(pprint.pformat(dict.fromkeys(keys))),
b31a33c36f08 Issue 3976: fix pprint for sets, frozensets, and dicts containing unorderable types.
Raymond Hettinger <python@rcn.com>
parents: 55593
diff changeset
469 '{' + ','.join('%r:None' % k for k in skeys) + '}')
22766
d26d8575ac62 Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents: 21061
diff changeset
470
78212
03cda5360dc6 Issues #10017 and #14998: Fix TypeError using pprint on dictionaries with unorderable key.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 64891
diff changeset
471 # Issue 10017: TypeError on user-defined types as dict keys.
03cda5360dc6 Issues #10017 and #14998: Fix TypeError using pprint on dictionaries with unorderable key.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 64891
diff changeset
472 self.assertEqual(pprint.pformat({Unorderable: 0, 1: 0}),
03cda5360dc6 Issues #10017 and #14998: Fix TypeError using pprint on dictionaries with unorderable key.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 64891
diff changeset
473 '{1: 0, ' + repr(Unorderable) +': 0}')
03cda5360dc6 Issues #10017 and #14998: Fix TypeError using pprint on dictionaries with unorderable key.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 64891
diff changeset
474
03cda5360dc6 Issues #10017 and #14998: Fix TypeError using pprint on dictionaries with unorderable key.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 64891
diff changeset
475 # Issue 14998: TypeError on tuples with NoneTypes as dict keys.
78214
29642f82bbcc Fix test_pprint random dict ordering.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 78212
diff changeset
476 keys = [(1,), (None,)]
29642f82bbcc Fix test_pprint random dict ordering.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 78212
diff changeset
477 self.assertEqual(pprint.pformat(dict.fromkeys(keys, 0)),
29642f82bbcc Fix test_pprint random dict ordering.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 78212
diff changeset
478 '{%r: 0, %r: 0}' % tuple(sorted(keys, key=id)))
78212
03cda5360dc6 Issues #10017 and #14998: Fix TypeError using pprint on dictionaries with unorderable key.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 64891
diff changeset
479
82919
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
480 def test_str_wrap(self):
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
481 # pprint tries to wrap strings intelligently
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
482 fox = 'the quick brown fox jumped over a lazy dog'
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
483 self.assertEqual(pprint.pformat(fox, width=20), """\
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
484 'the quick brown '
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
485 'fox jumped over '
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
486 'a lazy dog'""")
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
487 self.assertEqual(pprint.pformat({'a': 1, 'b': fox, 'c': 2},
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
488 width=26), """\
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
489 {'a': 1,
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
490 'b': 'the quick brown '
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
491 'fox jumped over '
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
492 'a lazy dog',
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
493 'c': 2}""")
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
494 # With some special characters
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
495 # - \n always triggers a new line in the pprint
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
496 # - \t and \n are escaped
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
497 # - non-ASCII is allowed
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
498 # - an apostrophe doesn't disrupt the pprint
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
499 special = "Portons dix bons \"whiskys\"\nà l'avocat goujat\t qui fumait au zoo"
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
500 self.assertEqual(pprint.pformat(special, width=20), """\
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
501 'Portons dix bons '
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
502 '"whiskys"\\n'
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
503 "à l'avocat "
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
504 'goujat\\t qui '
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
505 'fumait au zoo'""")
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
506 # An unwrappable string is formatted as its repr
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
507 unwrappable = "x" * 100
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
508 self.assertEqual(pprint.pformat(unwrappable, width=80), repr(unwrappable))
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
509 self.assertEqual(pprint.pformat(''), "''")
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
510 # Check that the pprint is a usable repr
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
511 special *= 10
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
512 for width in range(3, 40):
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
513 formatted = pprint.pformat(special, width=width)
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
514 self.assertEqual(eval("(" + formatted + ")"), special)
5a2296093645 Issue #17150: pprint now uses line continuations to wrap long string literals.
Antoine Pitrou <solipsis@pitrou.net>
parents: 78215
diff changeset
515
78212
03cda5360dc6 Issues #10017 and #14998: Fix TypeError using pprint on dictionaries with unorderable key.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 64891
diff changeset
516
22766
d26d8575ac62 Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents: 21061
diff changeset
517 class DottedPrettyPrinter(pprint.PrettyPrinter):
24957
dc66eb4cd17a Standardize behavior: no docstrings in test functions.
Guido van Rossum <guido@python.org>
parents: 24364
diff changeset
518
22766
d26d8575ac62 Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents: 21061
diff changeset
519 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
520 if isinstance(object, str):
d26d8575ac62 Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents: 21061
diff changeset
521 if ' ' in object:
31515
71a294bd7950 Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents: 31085
diff changeset
522 return repr(object), 1, 0
22766
d26d8575ac62 Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents: 21061
diff changeset
523 else:
d26d8575ac62 Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents: 21061
diff changeset
524 return object, 0, 0
d26d8575ac62 Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents: 21061
diff changeset
525 else:
d26d8575ac62 Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents: 21061
diff changeset
526 return pprint.PrettyPrinter.format(
d26d8575ac62 Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents: 21061
diff changeset
527 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
528
d26d8575ac62 Add an experimental mechanism to support extending the pprint formatting.
Fred Drake <fdrake@acm.org>
parents: 21061
diff changeset
529
20013
e3184e46303b Change the PyUnit-based tests to use the test_main() approach. This
Fred Drake <fdrake@acm.org>
parents: 19343
diff changeset
530 def test_main():
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 47080
diff changeset
531 test.support.run_unittest(QueryTestCase)
20013
e3184e46303b Change the PyUnit-based tests to use the test_main() approach. This
Fred Drake <fdrake@acm.org>
parents: 19343
diff changeset
532
e3184e46303b Change the PyUnit-based tests to use the test_main() approach. This
Fred Drake <fdrake@acm.org>
parents: 19343
diff changeset
533
e3184e46303b Change the PyUnit-based tests to use the test_main() approach. This
Fred Drake <fdrake@acm.org>
parents: 19343
diff changeset
534 if __name__ == "__main__":
e3184e46303b Change the PyUnit-based tests to use the test_main() approach. This
Fred Drake <fdrake@acm.org>
parents: 19343
diff changeset
535 test_main()