@@ -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