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