Skip to content
Snippets Groups Projects
Commit 1acb2c69 authored by Piotr Maślanka's avatar Piotr Maślanka
Browse files

* DictObject will no longer announce it's presence via __str__ and __repr__

* nested creation of DictObject's was optimized
parent b586e665
No related branches found
No related tags found
No related merge requests found
Pipeline #63565 passed with stages
in 2 minutes and 6 seconds
# v2.25.10 # v2.26.0
* _TBA_ * **breaking change**: DictObject will no longer announce it's presence via __str__ and __repr__. It will just display
it's dictionary.
* nested creation of DictObject's was optimized
# v2.25.9 # v2.25.9
......
__version__ = '2.25.10a1' __version__ = '2.26.0'
...@@ -22,18 +22,19 @@ class DictObject(dict): ...@@ -22,18 +22,19 @@ class DictObject(dict):
>>> self.assertEqual(a['test'], 5) >>> self.assertEqual(a['test'], 5)
""" """
def __new__(cls, *args, **kwargs):
if not kwargs and len(args) == 1:
arg, = args
if isinstance(arg, DictObject):
return arg
return super().__new__(cls, *args, **kwargs)
def __copy__(self): def __copy__(self):
return DictObject(copy.copy(super())) return DictObject(copy.copy(super()))
def __deepcopy__(self, memo=None): def __deepcopy__(self, memo=None):
return DictObject(copy.deepcopy(super(), memo=memo)) return DictObject(copy.deepcopy(super(), memo=memo))
def __str__(self) -> str:
return 'DictObject(%s)' % (super().__str__(),)
def __repr__(self) -> str:
return 'DictObject(%s)' % (super().__repr__(),)
@rethrow_as(KeyError, AttributeError) @rethrow_as(KeyError, AttributeError)
def __getattr__(self, item): def __getattr__(self, item):
return self[item] return self[item]
......
...@@ -503,6 +503,11 @@ class TestStructures(unittest.TestCase): ...@@ -503,6 +503,11 @@ class TestStructures(unittest.TestCase):
self.assertEqual(cd[2], []) self.assertEqual(cd[2], [])
self.assertEqual(cd[2], []) self.assertEqual(cd[2], [])
def test_new_dictobject(self):
a = DictObject(a=5, k=3)
b = DictObject(a)
self.assertIs(a, b)
def test_dictobject_dictobject(self): def test_dictobject_dictobject(self):
a = DictObject(a=5, k=3) a = DictObject(a=5, k=3)
b = DictObject(a) b = DictObject(a)
...@@ -514,8 +519,6 @@ class TestStructures(unittest.TestCase): ...@@ -514,8 +519,6 @@ class TestStructures(unittest.TestCase):
self.assertEqual(b.c, 4) self.assertEqual(b.c, 4)
self.assertEqual(b['c'], 4) self.assertEqual(b['c'], 4)
self.assertIn('DictObject', str(b))
self.assertIn('DictObject', repr(b))
self.assertIn('a', b.keys()) self.assertIn('a', b.keys())
self.assertIn(5, b.values()) self.assertIn(5, b.values())
self.assertIn(('a', 5), b.items()) self.assertIn(('a', 5), b.items())
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment