diff options
Diffstat (limited to 'Lib/pprint.py')
-rw-r--r-- | Lib/pprint.py | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/Lib/pprint.py b/Lib/pprint.py index fc5395efc8..c79c713756 100644 --- a/Lib/pprint.py +++ b/Lib/pprint.py @@ -34,10 +34,10 @@ saferepr() """ +import collections as _collections import re import sys as _sys import types as _types -from collections import OrderedDict as _OrderedDict from io import StringIO as _StringIO __all__ = ["pprint","pformat","isreadable","isrecursive","saferepr", @@ -188,16 +188,25 @@ class PrettyPrinter: write((self._indent_per_level - 1) * ' ') length = len(object) if length: - if isinstance(object, _OrderedDict): - items = list(object.items()) - else: - items = sorted(object.items(), key=_safe_tuple) + items = sorted(object.items(), key=_safe_tuple) self._format_dict_items(items, stream, indent, allowance + 1, context, level) write('}') _dispatch[dict.__repr__] = _pprint_dict - _dispatch[_OrderedDict.__repr__] = _pprint_dict + + def _pprint_ordered_dict(self, object, stream, indent, allowance, context, level): + if not len(object): + stream.write(repr(object)) + return + cls = object.__class__ + stream.write(cls.__name__ + '(') + self._format(list(object.items()), stream, + indent + len(cls.__name__) + 1, allowance + 1, + context, level) + stream.write(')') + + _dispatch[_collections.OrderedDict.__repr__] = _pprint_ordered_dict def _pprint_list(self, object, stream, indent, allowance, context, level): stream.write('[') |