diff options
author | Raymond Hettinger <python@rcn.com> | 2011-11-05 20:39:57 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2011-11-05 20:39:57 (GMT) |
commit | f1182cd4dbd2556c5cfeae24deb889e514979b18 (patch) | |
tree | cc24c4aa3ab4d8237d3ac78adcadf39ad2992823 /Lib | |
parent | 748d7ae209f746979b03b9ab4534858221d8d3da (diff) | |
parent | 4e6bf41934de08f62b22b90cda2e331eb4641dea (diff) | |
download | cpython-f1182cd4dbd2556c5cfeae24deb889e514979b18.zip cpython-f1182cd4dbd2556c5cfeae24deb889e514979b18.tar.gz cpython-f1182cd4dbd2556c5cfeae24deb889e514979b18.tar.bz2 |
Merge
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/collections/__init__.py | 8 | ||||
-rw-r--r-- | Lib/test/test_collections.py | 6 |
2 files changed, 12 insertions, 2 deletions
diff --git a/Lib/collections/__init__.py b/Lib/collections/__init__.py index 68b63a8..6cae1dd 100644 --- a/Lib/collections/__init__.py +++ b/Lib/collections/__init__.py @@ -585,8 +585,12 @@ class Counter(dict): def __repr__(self): if not self: return '%s()' % self.__class__.__name__ - items = ', '.join(map('%r: %r'.__mod__, self.most_common())) - return '%s({%s})' % (self.__class__.__name__, items) + try: + items = ', '.join(map('%r: %r'.__mod__, self.most_common())) + return '%s({%s})' % (self.__class__.__name__, items) + except TypeError: + # handle case where values are not orderable + return '{0}({1!r})'.format(self.__class__.__name__, dict(self)) # Multiset-style mathematical operations discussed in: # Knuth TAOCP Volume II section 4.6.3 exercise 19 diff --git a/Lib/test/test_collections.py b/Lib/test/test_collections.py index ec209389..c9b7f6b 100644 --- a/Lib/test/test_collections.py +++ b/Lib/test/test_collections.py @@ -969,6 +969,12 @@ class TestCounter(unittest.TestCase): self.assertEqual(dict(+c), dict(c=5, d=10, e=15, g=40)) self.assertEqual(dict(-c), dict(a=5)) + def test_repr_nonsortable(self): + c = Counter(a=2, b=None) + r = repr(c) + self.assertIn("'a': 2", r) + self.assertIn("'b': None", r) + def test_helper_function(self): # two paths, one for real dicts and one for other mappings elems = list('abracadabra') |