@@ -404,6 +404,86 @@ def format(self, object, context, maxlevels, level):
404404 """
405405 return _safe_repr (object , context , maxlevels , level )
406406
407+ def _pprint_default_dict (self , object , stream , indent , allowance , context , level ):
408+ if not len (object ):
409+ stream .write (repr (object ))
410+ return
411+ rdf = self ._repr (object .default_factory , context , level )
412+ cls = object .__class__
413+ indent += len (cls .__name__ ) + 1
414+ stream .write ('%s(%s,\n %s' % (cls .__name__ , rdf , ' ' * indent ))
415+ self ._pprint_dict (object , stream , indent , allowance + 1 , context , level )
416+ stream .write (')' )
417+
418+ _dispatch [_collections .defaultdict .__repr__ ] = _pprint_default_dict
419+
420+ def _pprint_counter (self , object , stream , indent , allowance , context , level ):
421+ if not len (object ):
422+ stream .write (repr (object ))
423+ return
424+ cls = object .__class__
425+ stream .write (cls .__name__ + '({' )
426+ if self ._indent_per_level > 1 :
427+ stream .write ((self ._indent_per_level - 1 ) * ' ' )
428+ items = object .most_common ()
429+ self ._format_dict_items (items , stream ,
430+ indent + len (cls .__name__ ) + 1 , allowance + 2 ,
431+ context , level )
432+ stream .write ('})' )
433+
434+ _dispatch [_collections .Counter .__repr__ ] = _pprint_counter
435+
436+ def _pprint_chain_map (self , object , stream , indent , allowance , context , level ):
437+ if not len (object .maps ):
438+ stream .write (repr (object ))
439+ return
440+ cls = object .__class__
441+ stream .write (cls .__name__ + '(' )
442+ indent += len (cls .__name__ ) + 1
443+ for i , m in enumerate (object .maps ):
444+ if i == len (object .maps ) - 1 :
445+ self ._format (m , stream , indent , allowance + 1 , context , level )
446+ stream .write (')' )
447+ else :
448+ self ._format (m , stream , indent , 1 , context , level )
449+ stream .write (',\n ' + ' ' * indent )
450+
451+ _dispatch [_collections .ChainMap .__repr__ ] = _pprint_chain_map
452+
453+ def _pprint_deque (self , object , stream , indent , allowance , context , level ):
454+ if not len (object ):
455+ stream .write (repr (object ))
456+ return
457+ cls = object .__class__
458+ stream .write (cls .__name__ + '(' )
459+ indent += len (cls .__name__ ) + 1
460+ stream .write ('[' )
461+ if object .maxlen is None :
462+ self ._format_items (object , stream , indent , allowance + 2 ,
463+ context , level )
464+ stream .write ('])' )
465+ else :
466+ self ._format_items (object , stream , indent , 2 ,
467+ context , level )
468+ rml = self ._repr (object .maxlen , context , level )
469+ stream .write ('],\n %smaxlen=%s)' % (' ' * indent , rml ))
470+
471+ _dispatch [_collections .deque .__repr__ ] = _pprint_deque
472+
473+ def _pprint_user_dict (self , object , stream , indent , allowance , context , level ):
474+ self ._format (object .data , stream , indent , allowance , context , level - 1 )
475+
476+ _dispatch [_collections .UserDict .__repr__ ] = _pprint_user_dict
477+
478+ def _pprint_user_list (self , object , stream , indent , allowance , context , level ):
479+ self ._format (object .data , stream , indent , allowance , context , level - 1 )
480+
481+ _dispatch [_collections .UserList .__repr__ ] = _pprint_user_list
482+
483+ def _pprint_user_string (self , object , stream , indent , allowance , context , level ):
484+ self ._format (object .data , stream , indent , allowance , context , level - 1 )
485+
486+ _dispatch [_collections .UserString .__repr__ ] = _pprint_user_string
407487
408488# Return triple (repr_string, isreadable, isrecursive).
409489
0 commit comments