Mercurial > cpython-lru_cache-weakref
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 |
| 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() |
