@@ -58,7 +58,7 @@ def _safe_tuple(t):
58
58
class PrettyPrinter :
59
59
def __init__ (
60
60
self ,
61
- indent = 1 ,
61
+ indent = 4 ,
62
62
width = 80 ,
63
63
depth = None ,
64
64
stream = None ,
@@ -146,7 +146,6 @@ def _format(self, object, stream, indent, allowance, context, level):
146
146
147
147
def _pprint_dataclass (self , object , stream , indent , allowance , context , level ):
148
148
cls_name = object .__class__ .__name__
149
- indent += len (cls_name ) + 1
150
149
items = [
151
150
(f .name , getattr (object , f .name ))
152
151
for f in _dataclasses .fields (object )
@@ -164,17 +163,11 @@ def _pprint_dataclass(self, object, stream, indent, allowance, context, level):
164
163
def _pprint_dict (self , object , stream , indent , allowance , context , level ):
165
164
write = stream .write
166
165
write ("{" )
167
- if self ._indent_per_level > 1 :
168
- write ((self ._indent_per_level - 1 ) * " " )
169
- length = len (object )
170
- if length :
171
- if self ._sort_dicts :
172
- items = sorted (object .items (), key = _safe_tuple )
173
- else :
174
- items = object .items ()
175
- self ._format_dict_items (
176
- items , stream , indent , allowance + 1 , context , level
177
- )
166
+ if self ._sort_dicts :
167
+ items = sorted (object .items (), key = _safe_tuple )
168
+ else :
169
+ items = object .items ()
170
+ self ._format_dict_items (items , stream , indent , allowance , context , level )
178
171
write ("}" )
179
172
180
173
_dispatch [dict .__repr__ ] = _pprint_dict
@@ -185,32 +178,22 @@ def _pprint_ordered_dict(self, object, stream, indent, allowance, context, level
185
178
return
186
179
cls = object .__class__
187
180
stream .write (cls .__name__ + "(" )
188
- self ._format (
189
- list (object .items ()),
190
- stream ,
191
- indent + len (cls .__name__ ) + 1 ,
192
- allowance + 1 ,
193
- context ,
194
- level ,
195
- )
181
+ self ._pprint_dict (object , stream , indent , allowance , context , level )
196
182
stream .write (")" )
197
183
198
184
_dispatch [_collections .OrderedDict .__repr__ ] = _pprint_ordered_dict
199
185
200
186
def _pprint_list (self , object , stream , indent , allowance , context , level ):
201
187
stream .write ("[" )
202
- self ._format_items (object , stream , indent , allowance + 1 , context , level )
188
+ self ._format_items (object , stream , indent , allowance , context , level )
203
189
stream .write ("]" )
204
190
205
191
_dispatch [list .__repr__ ] = _pprint_list
206
192
207
193
def _pprint_tuple (self , object , stream , indent , allowance , context , level ):
208
194
stream .write ("(" )
209
- endchar = ",)" if len (object ) == 1 else ")"
210
- self ._format_items (
211
- object , stream , indent , allowance + len (endchar ), context , level
212
- )
213
- stream .write (endchar )
195
+ self ._format_items (object , stream , indent , allowance , context , level )
196
+ stream .write (")" )
214
197
215
198
_dispatch [tuple .__repr__ ] = _pprint_tuple
216
199
@@ -225,11 +208,8 @@ def _pprint_set(self, object, stream, indent, allowance, context, level):
225
208
else :
226
209
stream .write (typ .__name__ + "({" )
227
210
endchar = "})"
228
- indent += len (typ .__name__ ) + 1
229
211
object = sorted (object , key = _safe_key )
230
- self ._format_items (
231
- object , stream , indent , allowance + len (endchar ), context , level
232
- )
212
+ self ._format_items (object , stream , indent , allowance , context , level )
233
213
stream .write (endchar )
234
214
235
215
_dispatch [set .__repr__ ] = _pprint_set
@@ -319,7 +299,7 @@ def _pprint_bytearray(self, object, stream, indent, allowance, context, level):
319
299
320
300
def _pprint_mappingproxy (self , object , stream , indent , allowance , context , level ):
321
301
stream .write ("mappingproxy(" )
322
- self ._format (object .copy (), stream , indent + 13 , allowance + 1 , context , level )
302
+ self ._format (object .copy (), stream , indent , allowance , context , level )
323
303
stream .write (")" )
324
304
325
305
_dispatch [_types .MappingProxyType .__repr__ ] = _pprint_mappingproxy
@@ -333,7 +313,6 @@ def _pprint_simplenamespace(
333
313
cls_name = "namespace"
334
314
else :
335
315
cls_name = object .__class__ .__name__
336
- indent += len (cls_name ) + 1
337
316
items = object .__dict__ .items ()
338
317
stream .write (cls_name + "(" )
339
318
self ._format_namespace_items (items , stream , indent , allowance , context , level )
@@ -342,32 +321,30 @@ def _pprint_simplenamespace(
342
321
_dispatch [_types .SimpleNamespace .__repr__ ] = _pprint_simplenamespace
343
322
344
323
def _format_dict_items (self , items , stream , indent , allowance , context , level ):
324
+ if not items :
325
+ return
326
+
345
327
write = stream .write
346
- indent += self ._indent_per_level
347
- delimnl = ",\n " + " " * indent
348
- last_index = len (items ) - 1
349
- for i , (key , ent ) in enumerate (items ):
350
- last = i == last_index
351
- rep = self ._repr (key , context , level )
352
- write (rep )
328
+ item_indent = indent + self ._indent_per_level
329
+ delimnl = "\n " + " " * item_indent
330
+ for key , ent in items :
331
+ write (delimnl )
332
+ write (self ._repr (key , context , level ))
353
333
write (": " )
354
- self ._format (
355
- ent ,
356
- stream ,
357
- indent + len (rep ) + 2 ,
358
- allowance if last else 1 ,
359
- context ,
360
- level ,
361
- )
362
- if not last :
363
- write (delimnl )
334
+ self ._format (ent , stream , item_indent , 1 , context , level )
335
+ write ("," )
336
+
337
+ write ("\n " + " " * indent )
364
338
365
339
def _format_namespace_items (self , items , stream , indent , allowance , context , level ):
340
+ if not items :
341
+ return
342
+
366
343
write = stream .write
367
- delimnl = ", \n " + " " * indent
368
- last_index = len ( items ) - 1
369
- for i , ( key , ent ) in enumerate ( items ) :
370
- last = i == last_index
344
+ item_indent = indent + self . _indent_per_level
345
+ delimnl = " \n " + " " * item_indent
346
+ for key , ent in items :
347
+ write ( delimnl )
371
348
write (key )
372
349
write ("=" )
373
350
if id (ent ) in context :
@@ -378,52 +355,30 @@ def _format_namespace_items(self, items, stream, indent, allowance, context, lev
378
355
self ._format (
379
356
ent ,
380
357
stream ,
381
- indent + len (key ) + 1 ,
382
- allowance if last else 1 ,
358
+ item_indent + len (key ) + 1 ,
359
+ 1 ,
383
360
context ,
384
361
level ,
385
362
)
386
- if not last :
387
- write (delimnl )
363
+
364
+ write ("," )
365
+
366
+ write ("\n " + " " * indent )
388
367
389
368
def _format_items (self , items , stream , indent , allowance , context , level ):
390
- write = stream .write
391
- indent += self ._indent_per_level
392
- if self ._indent_per_level > 1 :
393
- write ((self ._indent_per_level - 1 ) * " " )
394
- delimnl = ",\n " + " " * indent
395
- delim = ""
396
- width = max_width = self ._width - indent + 1
397
- it = iter (items )
398
- try :
399
- next_ent = next (it )
400
- except StopIteration :
369
+ if not items :
401
370
return
402
- last = False
403
- while not last :
404
- ent = next_ent
405
- try :
406
- next_ent = next (it )
407
- except StopIteration :
408
- last = True
409
- max_width -= allowance
410
- width -= allowance
411
- if self ._compact :
412
- rep = self ._repr (ent , context , level )
413
- w = len (rep ) + 2
414
- if width < w :
415
- width = max_width
416
- if delim :
417
- delim = delimnl
418
- if width >= w :
419
- width -= w
420
- write (delim )
421
- delim = ", "
422
- write (rep )
423
- continue
424
- write (delim )
425
- delim = delimnl
426
- self ._format (ent , stream , indent , allowance if last else 1 , context , level )
371
+
372
+ write = stream .write
373
+ item_indent = indent + self ._indent_per_level
374
+ delimnl = "\n " + " " * item_indent
375
+
376
+ for item in items :
377
+ write (delimnl )
378
+ self ._format (item , stream , item_indent , 1 , context , level )
379
+ write ("," )
380
+
381
+ write ("\n " + " " * indent )
427
382
428
383
def _repr (self , object , context , level ):
429
384
repr , readable , recursive = self .format (
@@ -443,66 +398,45 @@ def format(self, object, context, maxlevels, level):
443
398
return self ._safe_repr (object , context , maxlevels , level )
444
399
445
400
def _pprint_default_dict (self , object , stream , indent , allowance , context , level ):
446
- if not len (object ):
447
- stream .write (repr (object ))
448
- return
449
401
rdf = self ._repr (object .default_factory , context , level )
450
- cls = object .__class__
451
- indent += len (cls .__name__ ) + 1
452
- stream .write (f"{ cls .__name__ } ({ rdf } ,\n { ' ' * indent } " )
453
- self ._pprint_dict (object , stream , indent , allowance + 1 , context , level )
402
+ stream .write (f"{ object .__class__ .__name__ } ({ rdf } , " )
403
+ self ._pprint_dict (object , stream , indent , allowance , context , level )
454
404
stream .write (")" )
455
405
456
406
_dispatch [_collections .defaultdict .__repr__ ] = _pprint_default_dict
457
407
458
408
def _pprint_counter (self , object , stream , indent , allowance , context , level ):
459
- if not len (object ):
460
- stream .write (repr (object ))
461
- return
462
- cls = object .__class__
463
- stream .write (cls .__name__ + "({" )
464
- if self ._indent_per_level > 1 :
465
- stream .write ((self ._indent_per_level - 1 ) * " " )
466
- items = object .most_common ()
467
- self ._format_dict_items (
468
- items , stream , indent + len (cls .__name__ ) + 1 , allowance + 2 , context , level
469
- )
470
- stream .write ("})" )
409
+ stream .write (object .__class__ .__name__ + "(" )
410
+
411
+ if object :
412
+ stream .write ("{" )
413
+ items = object .most_common ()
414
+ self ._format_dict_items (items , stream , indent , allowance , context , level )
415
+ stream .write ("}" )
416
+
417
+ stream .write (")" )
471
418
472
419
_dispatch [_collections .Counter .__repr__ ] = _pprint_counter
473
420
474
421
def _pprint_chain_map (self , object , stream , indent , allowance , context , level ):
475
- if not len (object .maps ):
422
+ if not len (object .maps ) or ( len ( object . maps ) == 1 and not len ( object . maps [ 0 ])) :
476
423
stream .write (repr (object ))
477
424
return
478
- cls = object .__class__
479
- stream .write (cls .__name__ + "(" )
480
- indent += len (cls .__name__ ) + 1
481
- for i , m in enumerate (object .maps ):
482
- if i == len (object .maps ) - 1 :
483
- self ._format (m , stream , indent , allowance + 1 , context , level )
484
- stream .write (")" )
485
- else :
486
- self ._format (m , stream , indent , 1 , context , level )
487
- stream .write (",\n " + " " * indent )
425
+
426
+ stream .write (object .__class__ .__name__ + "(" )
427
+ self ._format_items (object .maps , stream , indent , allowance , context , level )
428
+ stream .write (")" )
488
429
489
430
_dispatch [_collections .ChainMap .__repr__ ] = _pprint_chain_map
490
431
491
432
def _pprint_deque (self , object , stream , indent , allowance , context , level ):
492
- if not len (object ):
493
- stream .write (repr (object ))
494
- return
495
- cls = object .__class__
496
- stream .write (cls .__name__ + "(" )
497
- indent += len (cls .__name__ ) + 1
433
+ stream .write (object .__class__ .__name__ + "(" )
434
+ if object .maxlen is not None :
435
+ stream .write ("maxlen=%d, " % object .maxlen )
498
436
stream .write ("[" )
499
- if object .maxlen is None :
500
- self ._format_items (object , stream , indent , allowance + 2 , context , level )
501
- stream .write ("])" )
502
- else :
503
- self ._format_items (object , stream , indent , 2 , context , level )
504
- rml = self ._repr (object .maxlen , context , level )
505
- stream .write (f"],\n { ' ' * indent } maxlen={ rml } )" )
437
+
438
+ self ._format_items (object , stream , indent , allowance + 1 , context , level )
439
+ stream .write ("])" )
506
440
507
441
_dispatch [_collections .deque .__repr__ ] = _pprint_deque
508
442
0 commit comments