From e12acef10979e8660cbef28542483f90aab13143 Mon Sep 17 00:00:00 2001 From: Ofek Lev Date: Mon, 8 Feb 2021 12:18:00 -0500 Subject: [PATCH 1/2] Make __repr__ more similar to other mapping types --- immutables/_map.c | 14 ++------------ immutables/map.py | 6 ++---- tests/test_map.py | 11 ++++------- tests/test_none_keys.py | 8 ++++---- 4 files changed, 12 insertions(+), 27 deletions(-) diff --git a/immutables/_map.c b/immutables/_map.c index 9f0a5866..fe302002 100644 --- a/immutables/_map.c +++ b/immutables/_map.c @@ -3194,14 +3194,14 @@ map_py_repr(BaseMapObject *m) if (MapMutation_Check(m)) { if (_PyUnicodeWriter_WriteASCIIString( - &writer, "", m); - if (addr == NULL) { - goto error; - } - if (_PyUnicodeWriter_WriteStr(&writer, addr) < 0) { - Py_DECREF(addr); - goto error; - } - Py_DECREF(addr); - Py_ReprLeave((PyObject *)m); return _PyUnicodeWriter_Finish(&writer); diff --git a/immutables/map.py b/immutables/map.py index 7c16139d..32954f75 100644 --- a/immutables/map.py +++ b/immutables/map.py @@ -649,8 +649,7 @@ def __repr__(self): items = [] for key, val in self.items(): items.append("{!r}: {!r}".format(key, val)) - return ''.format( - ', '.join(items), id(self)) + return 'Map({{{}}})'.format(', '.join(items)) def __dump__(self): # pragma: no cover buf = [] @@ -818,8 +817,7 @@ def __repr__(self): items = [] for key, val in self.__root.items(): items.append("{!r}: {!r}".format(key, val)) - return ''.format( - ', '.join(items), id(self)) + return 'MapMutation({{{}}})'.format(', '.join(items)) def __len__(self): return self.__count diff --git a/tests/test_map.py b/tests/test_map.py index b6ee7f19..511cb8cb 100644 --- a/tests/test_map.py +++ b/tests/test_map.py @@ -845,11 +845,10 @@ def test_map_getitem_1(self): def test_repr_1(self): h = self.Map() - self.assertTrue(repr(h).startswith(' Date: Mon, 8 Feb 2021 13:33:28 -0500 Subject: [PATCH 2/2] address feedback --- immutables/_map.c | 4 ++-- immutables/map.py | 4 ++-- tests/test_map.py | 8 ++++---- tests/test_none_keys.py | 8 ++++---- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/immutables/_map.c b/immutables/_map.c index fe302002..7e510fd1 100644 --- a/immutables/_map.c +++ b/immutables/_map.c @@ -3194,14 +3194,14 @@ map_py_repr(BaseMapObject *m) if (MapMutation_Check(m)) { if (_PyUnicodeWriter_WriteASCIIString( - &writer, "MapMutation({", 13) < 0) + &writer, "immutables.MapMutation({", 24) < 0) { goto error; } } else { if (_PyUnicodeWriter_WriteASCIIString( - &writer, "Map({", 5) < 0) + &writer, "immutables.Map({", 16) < 0) { goto error; } diff --git a/immutables/map.py b/immutables/map.py index 32954f75..fe9dbaf3 100644 --- a/immutables/map.py +++ b/immutables/map.py @@ -649,7 +649,7 @@ def __repr__(self): items = [] for key, val in self.items(): items.append("{!r}: {!r}".format(key, val)) - return 'Map({{{}}})'.format(', '.join(items)) + return 'immutables.Map({{{}}})'.format(', '.join(items)) def __dump__(self): # pragma: no cover buf = [] @@ -817,7 +817,7 @@ def __repr__(self): items = [] for key, val in self.__root.items(): items.append("{!r}: {!r}".format(key, val)) - return 'MapMutation({{{}}})'.format(', '.join(items)) + return 'immutables.MapMutation({{{}}})'.format(', '.join(items)) def __len__(self): return self.__count diff --git a/tests/test_map.py b/tests/test_map.py index 511cb8cb..4a473b31 100644 --- a/tests/test_map.py +++ b/tests/test_map.py @@ -845,10 +845,10 @@ def test_map_getitem_1(self): def test_repr_1(self): h = self.Map() - self.assertEqual(repr(h), 'Map({})') + self.assertEqual(repr(h), 'immutables.Map({})') h = h.set(1, 2).set(2, 3).set(3, 4) - self.assertEqual(repr(h), 'Map({1: 2, 2: 3, 3: 4})') + self.assertEqual(repr(h), 'immutables.Map({1: 2, 2: 3, 3: 4})') def test_repr_2(self): h = self.Map() @@ -878,7 +878,7 @@ def __repr__(self): h = h.set(k, 1) k.val = h - self.assertEqual(repr(h), 'Map({{...}: 1})') + self.assertEqual(repr(h), 'immutables.Map({{...}: 1})') def test_hash_1(self): h = self.Map() @@ -962,7 +962,7 @@ def test_map_mut_3(self): h = h.set('a', 1) hm1 = h.mutate() - self.assertEqual(repr(hm1), "MapMutation({'a': 1})") + self.assertEqual(repr(hm1), "immutables.MapMutation({'a': 1})") with self.assertRaisesRegex(TypeError, 'unhashable type'): hash(hm1) diff --git a/tests/test_none_keys.py b/tests/test_none_keys.py index 8b5c3848..92e78139 100644 --- a/tests/test_none_keys.py +++ b/tests/test_none_keys.py @@ -61,7 +61,7 @@ def test_none_as_key(self): self.assertEqual(len(m), 1) self.assertTrue(None in m) self.assertEqual(m[None], 1) - self.assertEqual(repr(m), 'Map({None: 1})') + self.assertEqual(repr(m), 'immutables.Map({None: 1})') for level in range(7): key = NoneCollision('a', level) @@ -72,7 +72,7 @@ def test_none_as_key(self): m = m.delete(None) self.assertEqual(len(m), 0) self.assertFalse(None in m) - self.assertEqual(repr(m), 'Map({})') + self.assertEqual(repr(m), 'immutables.Map({})') self.assertEqual(m, self.Map()) @@ -125,7 +125,7 @@ def test_none_collision_1(self): self.assertFalse(None in m3) self.assertFalse(key in m3) self.assertEqual(m3, self.Map()) - self.assertEqual(repr(m3), 'Map({})') + self.assertEqual(repr(m3), 'immutables.Map({})') with self.assertRaises(KeyError): m3.delete(None) with self.assertRaises(KeyError): @@ -144,7 +144,7 @@ def test_none_collision_1(self): self.assertFalse(None in m4) self.assertFalse(key in m4) self.assertEqual(m4, self.Map()) - self.assertEqual(repr(m4), 'Map({})') + self.assertEqual(repr(m4), 'immutables.Map({})') with self.assertRaises(KeyError): m4.delete(None) with self.assertRaises(KeyError):