##// END OF EJS Templates
make pretty.max_seq_length configurable...
Min RK -
Show More
@@ -589,7 +589,14 b' class PlainTextFormatter(BaseFormatter):'
589 589 # This subclass ignores this attribute as it always need to return
590 590 # something.
591 591 enabled = Bool(True, config=False)
592
592
593 max_seq_length = Integer(pretty.MAX_SEQ_LENGTH, config=True,
594 help="""Truncate large collections (lists, dicts, tuples, sets) to this size.
595
596 Set to 0 to disable truncation.
597 """
598 )
599
593 600 # Look for a _repr_pretty_ methods to use for pretty printing.
594 601 print_method = ObjectName('_repr_pretty_')
595 602
@@ -682,6 +689,7 b' class PlainTextFormatter(BaseFormatter):'
682 689 # or it will cause trouble.
683 690 printer = pretty.RepresentationPrinter(stream, self.verbose,
684 691 self.max_width, unicode_to_str(self.newline),
692 max_seq_length=self.max_seq_length,
685 693 singleton_pprinters=self.singleton_printers,
686 694 type_pprinters=self.type_printers,
687 695 deferred_pprinters=self.deferred_printers)
@@ -338,3 +338,15 b' def test_format_config():'
338 338 result = f(Config)
339 339 nt.assert_is(result, None)
340 340 nt.assert_equal(captured.stderr, "")
341
342 def test_pretty_max_seq_length():
343 f = PlainTextFormatter(max_seq_length=1)
344 lis = list(range(3))
345 text = f(lis)
346 nt.assert_equal(text, '[0, ...]')
347 f.max_seq_length = 0
348 text = f(lis)
349 nt.assert_equal(text, '[0, 1, 2]')
350 text = f(list(range(1024)))
351 lines = text.splitlines()
352 nt.assert_equal(len(lines), 1024)
@@ -123,9 +123,9 b" __all__ = ['pretty', 'pprint', 'PrettyPrinter', 'RepresentationPrinter',"
123 123 'for_type', 'for_type_by_name']
124 124
125 125
126 MAX_SEQ_LENGTH = 1000
126 127 _re_pattern_type = type(re.compile(''))
127 128
128
129 129 def _safe_getattr(obj, attr, default=None):
130 130 """Safe version of getattr.
131 131
@@ -137,22 +137,22 b' def _safe_getattr(obj, attr, default=None):'
137 137 except Exception:
138 138 return default
139 139
140 def pretty(obj, verbose=False, max_width=79, newline='\n'):
140 def pretty(obj, verbose=False, max_width=79, newline='\n', max_seq_length=MAX_SEQ_LENGTH):
141 141 """
142 142 Pretty print the object's representation.
143 143 """
144 144 stream = StringIO()
145 printer = RepresentationPrinter(stream, verbose, max_width, newline)
145 printer = RepresentationPrinter(stream, verbose, max_width, newline, max_seq_length)
146 146 printer.pretty(obj)
147 147 printer.flush()
148 148 return stream.getvalue()
149 149
150 150
151 def pprint(obj, verbose=False, max_width=79, newline='\n'):
151 def pprint(obj, verbose=False, max_width=79, newline='\n', max_seq_length=MAX_SEQ_LENGTH):
152 152 """
153 153 Like `pretty` but print to stdout.
154 154 """
155 printer = RepresentationPrinter(sys.stdout, verbose, max_width, newline)
155 printer = RepresentationPrinter(sys.stdout, verbose, max_width, newline, max_seq_length)
156 156 printer.pretty(obj)
157 157 printer.flush()
158 158 sys.stdout.write(newline)
@@ -186,7 +186,7 b' class PrettyPrinter(_PrettyPrinterBase):'
186 186 callback method.
187 187 """
188 188
189 def __init__(self, output, max_width=79, newline='\n', max_seq_length=1000):
189 def __init__(self, output, max_width=79, newline='\n', max_seq_length=MAX_SEQ_LENGTH):
190 190 self.output = output
191 191 self.max_width = max_width
192 192 self.newline = newline
@@ -346,9 +346,10 b' class RepresentationPrinter(PrettyPrinter):'
346 346 """
347 347
348 348 def __init__(self, output, verbose=False, max_width=79, newline='\n',
349 singleton_pprinters=None, type_pprinters=None, deferred_pprinters=None):
349 singleton_pprinters=None, type_pprinters=None, deferred_pprinters=None,
350 max_seq_length=MAX_SEQ_LENGTH):
350 351
351 PrettyPrinter.__init__(self, output, max_width, newline)
352 PrettyPrinter.__init__(self, output, max_width, newline, max_seq_length=max_seq_length)
352 353 self.verbose = verbose
353 354 self.stack = []
354 355 if singleton_pprinters is None:
General Comments 0
You need to be logged in to leave comments. Login now