blob: f9b679e6677b40e913786ec385de66094f5dd1ba [file] [log] [blame]
Tim Petersa814db52001-05-14 07:05:58 +00001import pprint
Benjamin Petersonee8712c2008-05-20 21:35:26 +00002import test.support
Fred Drake43913dd2001-05-14 17:41:20 +00003import unittest
Christian Heimes969fe572008-01-25 11:23:10 +00004import test.test_set
Tim Petersa814db52001-05-14 07:05:58 +00005
Walter Dörwald7a7ede52003-12-03 20:15:28 +00006# list, tuple and dict subclasses that do or don't overwrite __repr__
7class list2(list):
8 pass
Thomas Wouters4d70c3d2006-06-08 14:42:34 +00009
Walter Dörwald7a7ede52003-12-03 20:15:28 +000010class list3(list):
11 def __repr__(self):
12 return list.__repr__(self)
Thomas Wouters4d70c3d2006-06-08 14:42:34 +000013
Walter Dörwald7a7ede52003-12-03 20:15:28 +000014class tuple2(tuple):
15 pass
Thomas Wouters4d70c3d2006-06-08 14:42:34 +000016
Walter Dörwald7a7ede52003-12-03 20:15:28 +000017class tuple3(tuple):
18 def __repr__(self):
19 return tuple.__repr__(self)
Thomas Wouters4d70c3d2006-06-08 14:42:34 +000020
Walter Dörwald7a7ede52003-12-03 20:15:28 +000021class dict2(dict):
22 pass
Thomas Wouters4d70c3d2006-06-08 14:42:34 +000023
Walter Dörwald7a7ede52003-12-03 20:15:28 +000024class dict3(dict):
25 def __repr__(self):
26 return dict.__repr__(self)
Tim Petersa814db52001-05-14 07:05:58 +000027
Fred Drake43913dd2001-05-14 17:41:20 +000028class QueryTestCase(unittest.TestCase):
Tim Petersa814db52001-05-14 07:05:58 +000029
Fred Drake43913dd2001-05-14 17:41:20 +000030 def setUp(self):
Guido van Rossum805365e2007-05-07 22:24:25 +000031 self.a = list(range(100))
32 self.b = list(range(200))
Fred Drake43913dd2001-05-14 17:41:20 +000033 self.a[-12] = self.b
Tim Petersa814db52001-05-14 07:05:58 +000034
Fred Drake43913dd2001-05-14 17:41:20 +000035 def test_basic(self):
Guido van Rossum32c2ae72002-08-22 19:45:32 +000036 # Verify .isrecursive() and .isreadable() w/o recursion
Fred Drake43913dd2001-05-14 17:41:20 +000037 verify = self.assert_
Fred Drakeb456e4f2002-12-31 07:16:16 +000038 pp = pprint.PrettyPrinter()
Walter Dörwald5de48bd2007-06-11 21:38:39 +000039 for safe in (2, 2.0, 2j, "abc", [3], (2,2), {3: 3}, "yaddayadda",
Fred Drake43913dd2001-05-14 17:41:20 +000040 self.a, self.b):
Fred Drakeb456e4f2002-12-31 07:16:16 +000041 # module-level convenience functions
Fred Drake43913dd2001-05-14 17:41:20 +000042 verify(not pprint.isrecursive(safe),
Walter Dörwald70a6b492004-02-12 17:35:32 +000043 "expected not isrecursive for %r" % (safe,))
Fred Drake43913dd2001-05-14 17:41:20 +000044 verify(pprint.isreadable(safe),
Walter Dörwald70a6b492004-02-12 17:35:32 +000045 "expected isreadable for %r" % (safe,))
Fred Drakeb456e4f2002-12-31 07:16:16 +000046 # PrettyPrinter methods
47 verify(not pp.isrecursive(safe),
Walter Dörwald70a6b492004-02-12 17:35:32 +000048 "expected not isrecursive for %r" % (safe,))
Fred Drakeb456e4f2002-12-31 07:16:16 +000049 verify(pp.isreadable(safe),
Walter Dörwald70a6b492004-02-12 17:35:32 +000050 "expected isreadable for %r" % (safe,))
Tim Petersa814db52001-05-14 07:05:58 +000051
Fred Drake43913dd2001-05-14 17:41:20 +000052 def test_knotted(self):
Guido van Rossum32c2ae72002-08-22 19:45:32 +000053 # Verify .isrecursive() and .isreadable() w/ recursion
Fred Drake43913dd2001-05-14 17:41:20 +000054 # Tie a knot.
55 self.b[67] = self.a
56 # Messy dict.
57 self.d = {}
58 self.d[0] = self.d[1] = self.d[2] = self.d
Tim Petersa814db52001-05-14 07:05:58 +000059
Fred Drake43913dd2001-05-14 17:41:20 +000060 verify = self.assert_
Fred Drakeb456e4f2002-12-31 07:16:16 +000061 pp = pprint.PrettyPrinter()
Tim Petersa814db52001-05-14 07:05:58 +000062
Fred Drake43913dd2001-05-14 17:41:20 +000063 for icky in self.a, self.b, self.d, (self.d, self.d):
64 verify(pprint.isrecursive(icky), "expected isrecursive")
65 verify(not pprint.isreadable(icky), "expected not isreadable")
Fred Drakeb456e4f2002-12-31 07:16:16 +000066 verify(pp.isrecursive(icky), "expected isrecursive")
67 verify(not pp.isreadable(icky), "expected not isreadable")
Fred Drake43913dd2001-05-14 17:41:20 +000068
69 # Break the cycles.
70 self.d.clear()
71 del self.a[:]
72 del self.b[:]
73
74 for safe in self.a, self.b, self.d, (self.d, self.d):
Fred Drakeb456e4f2002-12-31 07:16:16 +000075 # module-level convenience functions
Fred Drake43913dd2001-05-14 17:41:20 +000076 verify(not pprint.isrecursive(safe),
Walter Dörwald70a6b492004-02-12 17:35:32 +000077 "expected not isrecursive for %r" % (safe,))
Fred Drake43913dd2001-05-14 17:41:20 +000078 verify(pprint.isreadable(safe),
Walter Dörwald70a6b492004-02-12 17:35:32 +000079 "expected isreadable for %r" % (safe,))
Fred Drakeb456e4f2002-12-31 07:16:16 +000080 # PrettyPrinter methods
81 verify(not pp.isrecursive(safe),
Walter Dörwald70a6b492004-02-12 17:35:32 +000082 "expected not isrecursive for %r" % (safe,))
Fred Drakeb456e4f2002-12-31 07:16:16 +000083 verify(pp.isreadable(safe),
Walter Dörwald70a6b492004-02-12 17:35:32 +000084 "expected isreadable for %r" % (safe,))
Fred Drake43913dd2001-05-14 17:41:20 +000085
86 def test_unreadable(self):
Guido van Rossum32c2ae72002-08-22 19:45:32 +000087 # Not recursive but not readable anyway
Fred Drake43913dd2001-05-14 17:41:20 +000088 verify = self.assert_
Fred Drakeb456e4f2002-12-31 07:16:16 +000089 pp = pprint.PrettyPrinter()
Fred Drake43913dd2001-05-14 17:41:20 +000090 for unreadable in type(3), pprint, pprint.isrecursive:
Fred Drakeb456e4f2002-12-31 07:16:16 +000091 # module-level convenience functions
Fred Drake43913dd2001-05-14 17:41:20 +000092 verify(not pprint.isrecursive(unreadable),
Walter Dörwald70a6b492004-02-12 17:35:32 +000093 "expected not isrecursive for %r" % (unreadable,))
Fred Drake43913dd2001-05-14 17:41:20 +000094 verify(not pprint.isreadable(unreadable),
Walter Dörwald70a6b492004-02-12 17:35:32 +000095 "expected not isreadable for %r" % (unreadable,))
Fred Drakeb456e4f2002-12-31 07:16:16 +000096 # PrettyPrinter methods
97 verify(not pp.isrecursive(unreadable),
Walter Dörwald70a6b492004-02-12 17:35:32 +000098 "expected not isrecursive for %r" % (unreadable,))
Fred Drakeb456e4f2002-12-31 07:16:16 +000099 verify(not pp.isreadable(unreadable),
Walter Dörwald70a6b492004-02-12 17:35:32 +0000100 "expected not isreadable for %r" % (unreadable,))
Fred Drake43913dd2001-05-14 17:41:20 +0000101
Tim Peters95b3f782001-05-14 18:39:41 +0000102 def test_same_as_repr(self):
Walter Dörwald7a7ede52003-12-03 20:15:28 +0000103 # Simple objects, small containers and classes that overwrite __repr__
Thomas Wouters4d70c3d2006-06-08 14:42:34 +0000104 # For those the result should be the same as repr().
105 # Ahem. The docs don't say anything about that -- this appears to
106 # be testing an implementation quirk. Starting in Python 2.5, it's
107 # not true for dicts: pprint always sorts dicts by key now; before,
108 # it sorted a dict display if and only if the display required
109 # multiple lines. For that reason, dicts with more than one element
110 # aren't tested here.
Tim Peters95b3f782001-05-14 18:39:41 +0000111 verify = self.assert_
Walter Dörwald5de48bd2007-06-11 21:38:39 +0000112 for simple in (0, 0, 0+0j, 0.0, "", b"",
Walter Dörwald7a7ede52003-12-03 20:15:28 +0000113 (), tuple2(), tuple3(),
114 [], list2(), list3(),
115 {}, dict2(), dict3(),
116 verify, pprint,
Walter Dörwald5de48bd2007-06-11 21:38:39 +0000117 -6, -6, -6-6j, -1.5, "x", b"x", (3,), [3], {3: 6},
Tim Peters95b3f782001-05-14 18:39:41 +0000118 (1,2), [3,4], {5: 6, 7: 8},
Walter Dörwald7a7ede52003-12-03 20:15:28 +0000119 tuple2((1,2)), tuple3((1,2)), tuple3(range(100)),
120 [3,4], list2([3,4]), list3([3,4]), list3(range(100)),
Thomas Wouters4d70c3d2006-06-08 14:42:34 +0000121 {5: 6, 7: 8}, dict2({5: 6}), dict3({5: 6}),
Tim Peters95b3f782001-05-14 18:39:41 +0000122 range(10, -11, -1)
123 ):
124 native = repr(simple)
125 for function in "pformat", "saferepr":
126 f = getattr(pprint, function)
127 got = f(simple)
128 verify(native == got, "expected %s got %s from pprint.%s" %
129 (native, got, function))
Fred Drake43913dd2001-05-14 17:41:20 +0000130
Barry Warsaw00859c02001-11-28 05:49:39 +0000131 def test_basic_line_wrap(self):
Guido van Rossum32c2ae72002-08-22 19:45:32 +0000132 # verify basic line-wrapping operation
Barry Warsaw00859c02001-11-28 05:49:39 +0000133 o = {'RPM_cal': 0,
134 'RPM_cal2': 48059,
135 'Speed_cal': 0,
136 'controldesk_runtime_us': 0,
137 'main_code_runtime_us': 0,
138 'read_io_runtime_us': 0,
139 'write_io_runtime_us': 43690}
140 exp = """\
141{'RPM_cal': 0,
142 'RPM_cal2': 48059,
143 'Speed_cal': 0,
144 'controldesk_runtime_us': 0,
145 'main_code_runtime_us': 0,
146 'read_io_runtime_us': 0,
147 'write_io_runtime_us': 43690}"""
Walter Dörwald7a7ede52003-12-03 20:15:28 +0000148 for type in [dict, dict2]:
149 self.assertEqual(pprint.pformat(type(o)), exp)
150
151 o = range(100)
152 exp = '[%s]' % ',\n '.join(map(str, o))
153 for type in [list, list2]:
154 self.assertEqual(pprint.pformat(type(o)), exp)
155
156 o = tuple(range(100))
157 exp = '(%s)' % ',\n '.join(map(str, o))
158 for type in [tuple, tuple2]:
159 self.assertEqual(pprint.pformat(type(o)), exp)
Barry Warsaw00859c02001-11-28 05:49:39 +0000160
Walter Dörwaldc8de4582003-12-03 20:26:05 +0000161 # indent parameter
162 o = range(100)
163 exp = '[ %s]' % ',\n '.join(map(str, o))
164 for type in [list, list2]:
165 self.assertEqual(pprint.pformat(type(o), indent=4), exp)
166
Georg Brandl3ccb7872008-07-16 03:00:45 +0000167 def test_nested_indentations(self):
168 o1 = list(range(10))
169 o2 = dict(first=1, second=2, third=3)
170 o = [o1, o2]
171 expected = """\
172[ [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
173 { 'first': 1,
174 'second': 2,
175 'third': 3}]"""
176 self.assertEqual(pprint.pformat(o, indent=4, width=42), expected)
177
Thomas Wouters4d70c3d2006-06-08 14:42:34 +0000178 def test_sorted_dict(self):
179 # Starting in Python 2.5, pprint sorts dict displays by key regardless
180 # of how small the dictionary may be.
181 # Before the change, on 32-bit Windows pformat() gave order
182 # 'a', 'c', 'b' here, so this test failed.
183 d = {'a': 1, 'b': 1, 'c': 1}
184 self.assertEqual(pprint.pformat(d), "{'a': 1, 'b': 1, 'c': 1}")
185 self.assertEqual(pprint.pformat([d, d]),
186 "[{'a': 1, 'b': 1, 'c': 1}, {'a': 1, 'b': 1, 'c': 1}]")
187
188 # The next one is kind of goofy. The sorted order depends on the
189 # alphabetic order of type names: "int" < "str" < "tuple". Before
190 # Python 2.5, this was in the test_same_as_repr() test. It's worth
191 # keeping around for now because it's one of few tests of pprint
192 # against a crazy mix of types.
193 self.assertEqual(pprint.pformat({"xy\tab\n": (3,), 5: [[]], (): {}}),
194 r"{5: [[]], 'xy\tab\n': (3,), (): {}}")
195
Fred Drakeaee113d2002-04-02 05:08:35 +0000196 def test_subclassing(self):
197 o = {'names with spaces': 'should be presented using repr()',
198 'others.should.not.be': 'like.this'}
199 exp = """\
200{'names with spaces': 'should be presented using repr()',
201 others.should.not.be: like.this}"""
202 self.assertEqual(DottedPrettyPrinter().pformat(o), exp)
203
Christian Heimes969fe572008-01-25 11:23:10 +0000204 def test_set_reprs(self):
205 self.assertEqual(pprint.pformat(set()), 'set()')
206 self.assertEqual(pprint.pformat(set(range(3))), '{0, 1, 2}')
207 self.assertEqual(pprint.pformat(frozenset()), 'frozenset()')
208 self.assertEqual(pprint.pformat(frozenset(range(3))), 'frozenset({0, 1, 2})')
209 cube_repr_tgt = """\
210{frozenset(): frozenset({frozenset({2}), frozenset({0}), frozenset({1})}),
Raymond Hettinger4b8db412008-01-31 01:10:03 +0000211 frozenset({0}): frozenset({frozenset(),
Christian Heimes969fe572008-01-25 11:23:10 +0000212 frozenset({0, 2}),
Raymond Hettinger4b8db412008-01-31 01:10:03 +0000213 frozenset({0, 1})}),
214 frozenset({1}): frozenset({frozenset(),
Christian Heimes969fe572008-01-25 11:23:10 +0000215 frozenset({1, 2}),
Raymond Hettinger4b8db412008-01-31 01:10:03 +0000216 frozenset({0, 1})}),
217 frozenset({2}): frozenset({frozenset(),
Christian Heimes969fe572008-01-25 11:23:10 +0000218 frozenset({1, 2}),
Raymond Hettinger4b8db412008-01-31 01:10:03 +0000219 frozenset({0, 2})}),
220 frozenset({1, 2}): frozenset({frozenset({2}),
Christian Heimes969fe572008-01-25 11:23:10 +0000221 frozenset({1}),
Raymond Hettinger4b8db412008-01-31 01:10:03 +0000222 frozenset({0, 1, 2})}),
223 frozenset({0, 2}): frozenset({frozenset({2}),
Christian Heimes969fe572008-01-25 11:23:10 +0000224 frozenset({0}),
Raymond Hettinger4b8db412008-01-31 01:10:03 +0000225 frozenset({0, 1, 2})}),
226 frozenset({0, 1}): frozenset({frozenset({0}),
Christian Heimes969fe572008-01-25 11:23:10 +0000227 frozenset({1}),
Raymond Hettinger4b8db412008-01-31 01:10:03 +0000228 frozenset({0, 1, 2})}),
229 frozenset({0, 1, 2}): frozenset({frozenset({1, 2}),
Christian Heimes969fe572008-01-25 11:23:10 +0000230 frozenset({0, 2}),
Raymond Hettinger4b8db412008-01-31 01:10:03 +0000231 frozenset({0, 1})})}"""
Christian Heimes969fe572008-01-25 11:23:10 +0000232 cube = test.test_set.cube(3)
233 self.assertEqual(pprint.pformat(cube), cube_repr_tgt)
234 cubo_repr_tgt = """\
Raymond Hettinger4b8db412008-01-31 01:10:03 +0000235{frozenset({frozenset({0, 2}), frozenset({0})}): frozenset({frozenset({frozenset({0,
236 2}),
237 frozenset({0,
Christian Heimes969fe572008-01-25 11:23:10 +0000238 1,
Raymond Hettinger4b8db412008-01-31 01:10:03 +0000239 2})}),
240 frozenset({frozenset({0}),
241 frozenset({0,
242 1})}),
243 frozenset({frozenset(),
244 frozenset({0})}),
245 frozenset({frozenset({2}),
246 frozenset({0,
247 2})})}),
248 frozenset({frozenset({0, 1}), frozenset({1})}): frozenset({frozenset({frozenset({0,
249 1}),
250 frozenset({0,
Christian Heimes969fe572008-01-25 11:23:10 +0000251 1,
Raymond Hettinger4b8db412008-01-31 01:10:03 +0000252 2})}),
253 frozenset({frozenset({0}),
254 frozenset({0,
255 1})}),
256 frozenset({frozenset({1}),
257 frozenset({1,
258 2})}),
259 frozenset({frozenset(),
260 frozenset({1})})}),
261 frozenset({frozenset({1, 2}), frozenset({1})}): frozenset({frozenset({frozenset({1,
262 2}),
263 frozenset({0,
Christian Heimes969fe572008-01-25 11:23:10 +0000264 1,
Raymond Hettinger4b8db412008-01-31 01:10:03 +0000265 2})}),
266 frozenset({frozenset({2}),
267 frozenset({1,
268 2})}),
269 frozenset({frozenset(),
270 frozenset({1})}),
271 frozenset({frozenset({1}),
272 frozenset({0,
273 1})})}),
274 frozenset({frozenset({1, 2}), frozenset({2})}): frozenset({frozenset({frozenset({1,
275 2}),
276 frozenset({0,
Christian Heimes969fe572008-01-25 11:23:10 +0000277 1,
Raymond Hettinger4b8db412008-01-31 01:10:03 +0000278 2})}),
279 frozenset({frozenset({1}),
280 frozenset({1,
281 2})}),
282 frozenset({frozenset({2}),
283 frozenset({0,
284 2})}),
285 frozenset({frozenset(),
286 frozenset({2})})}),
287 frozenset({frozenset(), frozenset({0})}): frozenset({frozenset({frozenset({0}),
288 frozenset({0,
289 1})}),
290 frozenset({frozenset({0}),
291 frozenset({0,
292 2})}),
293 frozenset({frozenset(),
294 frozenset({1})}),
295 frozenset({frozenset(),
296 frozenset({2})})}),
297 frozenset({frozenset(), frozenset({1})}): frozenset({frozenset({frozenset(),
298 frozenset({0})}),
299 frozenset({frozenset({1}),
300 frozenset({1,
301 2})}),
302 frozenset({frozenset(),
303 frozenset({2})}),
304 frozenset({frozenset({1}),
305 frozenset({0,
306 1})})}),
307 frozenset({frozenset({2}), frozenset()}): frozenset({frozenset({frozenset({2}),
308 frozenset({1,
309 2})}),
310 frozenset({frozenset(),
311 frozenset({0})}),
312 frozenset({frozenset(),
313 frozenset({1})}),
314 frozenset({frozenset({2}),
315 frozenset({0,
316 2})})}),
317 frozenset({frozenset({0, 1, 2}), frozenset({0, 1})}): frozenset({frozenset({frozenset({1,
318 2}),
319 frozenset({0,
Christian Heimes969fe572008-01-25 11:23:10 +0000320 1,
Raymond Hettinger4b8db412008-01-31 01:10:03 +0000321 2})}),
322 frozenset({frozenset({0,
323 2}),
324 frozenset({0,
Christian Heimes969fe572008-01-25 11:23:10 +0000325 1,
Raymond Hettinger4b8db412008-01-31 01:10:03 +0000326 2})}),
327 frozenset({frozenset({0}),
328 frozenset({0,
329 1})}),
330 frozenset({frozenset({1}),
331 frozenset({0,
332 1})})}),
333 frozenset({frozenset({0}), frozenset({0, 1})}): frozenset({frozenset({frozenset(),
334 frozenset({0})}),
335 frozenset({frozenset({0,
336 1}),
337 frozenset({0,
Christian Heimes969fe572008-01-25 11:23:10 +0000338 1,
Raymond Hettinger4b8db412008-01-31 01:10:03 +0000339 2})}),
340 frozenset({frozenset({0}),
341 frozenset({0,
342 2})}),
343 frozenset({frozenset({1}),
344 frozenset({0,
345 1})})}),
346 frozenset({frozenset({2}), frozenset({0, 2})}): frozenset({frozenset({frozenset({0,
347 2}),
348 frozenset({0,
Christian Heimes969fe572008-01-25 11:23:10 +0000349 1,
Raymond Hettinger4b8db412008-01-31 01:10:03 +0000350 2})}),
351 frozenset({frozenset({2}),
352 frozenset({1,
353 2})}),
354 frozenset({frozenset({0}),
355 frozenset({0,
356 2})}),
357 frozenset({frozenset(),
358 frozenset({2})})}),
359 frozenset({frozenset({0, 1, 2}), frozenset({0, 2})}): frozenset({frozenset({frozenset({1,
360 2}),
361 frozenset({0,
Christian Heimes969fe572008-01-25 11:23:10 +0000362 1,
Raymond Hettinger4b8db412008-01-31 01:10:03 +0000363 2})}),
364 frozenset({frozenset({0,
365 1}),
366 frozenset({0,
Christian Heimes969fe572008-01-25 11:23:10 +0000367 1,
Raymond Hettinger4b8db412008-01-31 01:10:03 +0000368 2})}),
369 frozenset({frozenset({0}),
370 frozenset({0,
371 2})}),
372 frozenset({frozenset({2}),
373 frozenset({0,
374 2})})}),
375 frozenset({frozenset({1, 2}), frozenset({0, 1, 2})}): frozenset({frozenset({frozenset({0,
376 2}),
377 frozenset({0,
Christian Heimes969fe572008-01-25 11:23:10 +0000378 1,
Raymond Hettinger4b8db412008-01-31 01:10:03 +0000379 2})}),
380 frozenset({frozenset({0,
381 1}),
382 frozenset({0,
Christian Heimes969fe572008-01-25 11:23:10 +0000383 1,
Raymond Hettinger4b8db412008-01-31 01:10:03 +0000384 2})}),
385 frozenset({frozenset({2}),
386 frozenset({1,
387 2})}),
388 frozenset({frozenset({1}),
389 frozenset({1,
390 2})})})}"""
Christian Heimes969fe572008-01-25 11:23:10 +0000391
392 cubo = test.test_set.linegraph(cube)
393 self.assertEqual(pprint.pformat(cubo), cubo_repr_tgt)
394
Alexandre Vassalottieca20b62008-05-16 02:54:33 +0000395 def test_depth(self):
396 nested_tuple = (1, (2, (3, (4, (5, 6)))))
397 nested_dict = {1: {2: {3: {4: {5: {6: 6}}}}}}
398 nested_list = [1, [2, [3, [4, [5, [6, []]]]]]]
399 self.assertEqual(pprint.pformat(nested_tuple), repr(nested_tuple))
400 self.assertEqual(pprint.pformat(nested_dict), repr(nested_dict))
401 self.assertEqual(pprint.pformat(nested_list), repr(nested_list))
402
403 lv1_tuple = '(1, (...))'
404 lv1_dict = '{1: {...}}'
405 lv1_list = '[1, [...]]'
406 self.assertEqual(pprint.pformat(nested_tuple, depth=1), lv1_tuple)
407 self.assertEqual(pprint.pformat(nested_dict, depth=1), lv1_dict)
408 self.assertEqual(pprint.pformat(nested_list, depth=1), lv1_list)
409
Fred Drakeaee113d2002-04-02 05:08:35 +0000410
411class DottedPrettyPrinter(pprint.PrettyPrinter):
Guido van Rossum32c2ae72002-08-22 19:45:32 +0000412
Fred Drakeaee113d2002-04-02 05:08:35 +0000413 def format(self, object, context, maxlevels, level):
414 if isinstance(object, str):
415 if ' ' in object:
Walter Dörwald70a6b492004-02-12 17:35:32 +0000416 return repr(object), 1, 0
Fred Drakeaee113d2002-04-02 05:08:35 +0000417 else:
418 return object, 0, 0
419 else:
420 return pprint.PrettyPrinter.format(
421 self, object, context, maxlevels, level)
422
423
Fred Drake2e2be372001-09-20 21:33:42 +0000424def test_main():
Benjamin Petersonee8712c2008-05-20 21:35:26 +0000425 test.support.run_unittest(QueryTestCase)
Fred Drake2e2be372001-09-20 21:33:42 +0000426
427
428if __name__ == "__main__":
429 test_main()