##// END OF EJS Templates
Merge pull request #5376 from minrk/pretty-cap...
Paul Ivanov -
r15866:11575ed2 merge
parent child Browse files
Show More
@@ -229,10 +229,11 b' class PrettyPrinter(_PrettyPrinterBase):'
229 callback method.
229 callback method.
230 """
230 """
231
231
232 def __init__(self, output, max_width=79, newline='\n'):
232 def __init__(self, output, max_width=79, newline='\n', max_seq_length=1000):
233 self.output = output
233 self.output = output
234 self.max_width = max_width
234 self.max_width = max_width
235 self.newline = newline
235 self.newline = newline
236 self.max_seq_length = max_seq_length
236 self.output_width = 0
237 self.output_width = 0
237 self.buffer_width = 0
238 self.buffer_width = 0
238 self.buffer = deque()
239 self.buffer = deque()
@@ -325,7 +326,17 b' class PrettyPrinter(_PrettyPrinterBase):'
325 self.group_stack.append(group)
326 self.group_stack.append(group)
326 self.group_queue.enq(group)
327 self.group_queue.enq(group)
327 self.indentation += indent
328 self.indentation += indent
328
329
330 def _enumerate(self, seq):
331 """like enumerate, but with an upper limit on the number of items"""
332 for idx, x in enumerate(seq):
333 if self.max_seq_length and idx >= self.max_seq_length:
334 self.text(',')
335 self.breakable()
336 self.text('...')
337 raise StopIteration
338 yield idx, x
339
329 def end_group(self, dedent=0, close=''):
340 def end_group(self, dedent=0, close=''):
330 """End a group. See `begin_group` for more details."""
341 """End a group. See `begin_group` for more details."""
331 self.indentation -= dedent
342 self.indentation -= dedent
@@ -598,7 +609,7 b' def _seq_pprinter_factory(start, end, basetype):'
598 return p.text(start + '...' + end)
609 return p.text(start + '...' + end)
599 step = len(start)
610 step = len(start)
600 p.begin_group(step, start)
611 p.begin_group(step, start)
601 for idx, x in enumerate(obj):
612 for idx, x in p._enumerate(obj):
602 if idx:
613 if idx:
603 p.text(',')
614 p.text(',')
604 p.breakable()
615 p.breakable()
@@ -635,7 +646,7 b' def _set_pprinter_factory(start, end, basetype):'
635 except Exception:
646 except Exception:
636 # Sometimes the items don't sort.
647 # Sometimes the items don't sort.
637 pass
648 pass
638 for idx, x in enumerate(items):
649 for idx, x in p._enumerate(items):
639 if idx:
650 if idx:
640 p.text(',')
651 p.text(',')
641 p.breakable()
652 p.breakable()
@@ -664,7 +675,7 b' def _dict_pprinter_factory(start, end, basetype=None):'
664 except Exception as e:
675 except Exception as e:
665 # Sometimes the keys don't sort.
676 # Sometimes the keys don't sort.
666 pass
677 pass
667 for idx, key in enumerate(keys):
678 for idx, key in p._enumerate(keys):
668 if idx:
679 if idx:
669 p.text(',')
680 p.text(',')
670 p.breakable()
681 p.breakable()
@@ -196,4 +196,29 b' def test_super_repr():'
196 sb = SB()
196 sb = SB()
197 output = pretty.pretty(super(SA, sb))
197 output = pretty.pretty(super(SA, sb))
198 nt.assert_in("SA", output)
198 nt.assert_in("SA", output)
199 No newline at end of file
199
200
201 def test_long_list():
202 lis = list(range(10000))
203 p = pretty.pretty(lis)
204 last2 = p.rsplit('\n', 2)[-2:]
205 nt.assert_equal(last2, [' 999,', ' ...]'])
206
207 def test_long_set():
208 s = set(range(10000))
209 p = pretty.pretty(s)
210 last2 = p.rsplit('\n', 2)[-2:]
211 nt.assert_equal(last2, [' 999,', ' ...}'])
212
213 def test_long_tuple():
214 tup = tuple(range(10000))
215 p = pretty.pretty(tup)
216 last2 = p.rsplit('\n', 2)[-2:]
217 nt.assert_equal(last2, [' 999,', ' ...)'])
218
219 def test_long_dict():
220 d = { n:n for n in range(10000) }
221 p = pretty.pretty(d)
222 last2 = p.rsplit('\n', 2)[-2:]
223 nt.assert_equal(last2, [' 999: 999,', ' ...}'])
224
General Comments 0
You need to be logged in to leave comments. Login now