Skip to content

Commit 1ca9963

Browse files
authored
Move calculations into helpers (#2)
* Move recursive_indent calculation into helper * Move indent padding into helper
1 parent 9302ad4 commit 1ca9963

File tree

1 file changed

+55
-44
lines changed

1 file changed

+55
-44
lines changed

Lib/pprint.py

Lines changed: 55 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,18 @@ def _format_block_end(self, end_str, indent):
227227
return f"\n{' ' * indent}{end_str}"
228228
return end_str
229229

230+
def _child_indent(self, indent, prefix_len):
231+
if self._expand:
232+
return indent
233+
return indent + prefix_len
234+
235+
def _write_indent_padding(self, write):
236+
if self._expand:
237+
if self._indent_per_level > 0:
238+
write(self._indent_per_level * " ")
239+
elif self._indent_per_level > 1:
240+
write((self._indent_per_level - 1) * " ")
241+
230242
def _pprint_dataclass(self, object, stream, indent, allowance, context, level):
231243
# Lazy import to improve module import time
232244
from dataclasses import fields as dataclass_fields
@@ -246,10 +258,7 @@ def _pprint_dataclass(self, object, stream, indent, allowance, context, level):
246258
def _pprint_dict(self, object, stream, indent, allowance, context, level):
247259
write = stream.write
248260
write(self._format_block_start('{', indent))
249-
if self._indent_per_level > 1 and not self._expand:
250-
write((self._indent_per_level - 1) * ' ')
251-
if self._indent_per_level > 0 and self._expand:
252-
write(self._indent_per_level * ' ')
261+
self._write_indent_padding(write)
253262
length = len(object)
254263
if length:
255264
if self._sort_dicts:
@@ -282,12 +291,14 @@ def _pprint_ordered_dict(self, object, stream, indent, allowance, context, level
282291
return
283292
cls = object.__class__
284293
stream.write(cls.__name__ + '(')
285-
if self._expand:
286-
recursive_indent = indent
287-
else:
288-
recursive_indent = indent + len(cls.__name__) + 1
289-
self._format(list(object.items()), stream, recursive_indent,
290-
allowance + 1, context, level)
294+
self._format(
295+
list(object.items()),
296+
stream,
297+
self._child_indent(indent, len(cls.__name__) + 1),
298+
allowance + 1,
299+
context,
300+
level,
301+
)
291302
stream.write(')')
292303

293304
_dispatch[_collections.OrderedDict.__repr__] = _pprint_ordered_dict
@@ -467,12 +478,14 @@ def _pprint_bytearray(self, object, stream, indent, allowance, context, level):
467478

468479
def _pprint_mappingproxy(self, object, stream, indent, allowance, context, level):
469480
stream.write('mappingproxy(')
470-
if self._expand:
471-
recursive_indent = indent
472-
else:
473-
recursive_indent = indent + 13
474-
self._format(object.copy(), stream, recursive_indent, allowance + 1,
475-
context, level)
481+
self._format(
482+
object.copy(),
483+
stream,
484+
self._child_indent(indent, 13),
485+
allowance + 1,
486+
context,
487+
level,
488+
)
476489
stream.write(')')
477490

478491
_dispatch[_types.MappingProxyType.__repr__] = _pprint_mappingproxy
@@ -507,13 +520,14 @@ def _format_dict_items(self, items, stream, indent, allowance, context,
507520
rep = self._repr(key, context, level)
508521
write(rep)
509522
write(': ')
510-
if self._expand:
511-
recursive_indent = indent
512-
else:
513-
recursive_indent = indent + len(rep) + 2
514-
self._format(ent, stream, recursive_indent,
515-
allowance if last else 1,
516-
context, level)
523+
self._format(
524+
ent,
525+
stream,
526+
self._child_indent(indent, len(rep) + 2),
527+
allowance if last else 1,
528+
context,
529+
level,
530+
)
517531
if not last:
518532
write(delimnl)
519533

@@ -530,23 +544,21 @@ def _format_namespace_items(self, items, stream, indent, allowance, context, lev
530544
# recursive dataclass repr.
531545
write("...")
532546
else:
533-
if self._expand:
534-
recursive_indent = indent
535-
else:
536-
recursive_indent = indent + len(key) + 1
537-
self._format(ent, stream, recursive_indent,
538-
allowance if last else 1,
539-
context, level)
547+
self._format(
548+
ent,
549+
stream,
550+
self._child_indent(indent, len(key) + 1),
551+
allowance if last else 1,
552+
context,
553+
level,
554+
)
540555
if not last:
541556
write(delimnl)
542557

543558
def _format_items(self, items, stream, indent, allowance, context, level):
544559
write = stream.write
545560
indent += self._indent_per_level
546-
if self._indent_per_level > 1 and not self._expand:
547-
write((self._indent_per_level - 1) * ' ')
548-
if self._indent_per_level > 0 and self._expand:
549-
write(self._indent_per_level * ' ')
561+
self._write_indent_padding(write)
550562
delimnl = ',\n' + ' ' * indent
551563
delim = ''
552564
width = max_width = self._width - indent + 1
@@ -622,17 +634,16 @@ def _pprint_counter(self, object, stream, indent, allowance, context, level):
622634
return
623635
cls = object.__class__
624636
stream.write(self._format_block_start(cls.__name__ + '({', indent))
625-
if self._indent_per_level > 1 and not self._expand:
626-
stream.write((self._indent_per_level - 1) * ' ')
627-
if self._indent_per_level > 0 and self._expand:
628-
stream.write(self._indent_per_level * ' ')
637+
self._write_indent_padding(stream.write)
629638
items = object.most_common()
630-
if self._expand:
631-
recursive_indent = indent
632-
else:
633-
recursive_indent = indent + len(cls.__name__) + 1
634-
self._format_dict_items(items, stream, recursive_indent, allowance + 2,
635-
context, level)
639+
self._format_dict_items(
640+
items,
641+
stream,
642+
self._child_indent(indent, len(cls.__name__) + 1),
643+
allowance + 2,
644+
context,
645+
level,
646+
)
636647
stream.write(self._format_block_end('})', indent))
637648

638649
_dispatch[_collections.Counter.__repr__] = _pprint_counter

0 commit comments

Comments
 (0)