Loading django/utils/functional.py +14 −1 Original line number Diff line number Diff line Loading @@ -249,9 +249,22 @@ class LazyObject(object): """ raise NotImplementedError # introspection support: # Introspection support __dir__ = new_method_proxy(dir) # Dictionary methods support @new_method_proxy def __getitem__(self, key): return self[key] @new_method_proxy def __setitem__(self, key, value): self[key] = value @new_method_proxy def __delitem__(self, key): del self[key] # Workaround for http://bugs.python.org/issue12370 _super = super Loading tests/utils_tests/simplelazyobject.py +10 −0 Original line number Diff line number Diff line Loading @@ -128,3 +128,13 @@ class TestUtilsSimpleLazyObject(TestCase): self.assertEqual(unpickled, x) self.assertEqual(six.text_type(unpickled), six.text_type(x)) self.assertEqual(unpickled.name, x.name) def test_dict(self): # See ticket #18447 lazydict = SimpleLazyObject(lambda: {'one': 1}) self.assertEqual(lazydict['one'], 1) lazydict['one'] = -1 self.assertEqual(lazydict['one'], -1) del lazydict['one'] with self.assertRaises(KeyError): lazydict['one'] Loading
django/utils/functional.py +14 −1 Original line number Diff line number Diff line Loading @@ -249,9 +249,22 @@ class LazyObject(object): """ raise NotImplementedError # introspection support: # Introspection support __dir__ = new_method_proxy(dir) # Dictionary methods support @new_method_proxy def __getitem__(self, key): return self[key] @new_method_proxy def __setitem__(self, key, value): self[key] = value @new_method_proxy def __delitem__(self, key): del self[key] # Workaround for http://bugs.python.org/issue12370 _super = super Loading
tests/utils_tests/simplelazyobject.py +10 −0 Original line number Diff line number Diff line Loading @@ -128,3 +128,13 @@ class TestUtilsSimpleLazyObject(TestCase): self.assertEqual(unpickled, x) self.assertEqual(six.text_type(unpickled), six.text_type(x)) self.assertEqual(unpickled.name, x.name) def test_dict(self): # See ticket #18447 lazydict = SimpleLazyObject(lambda: {'one': 1}) self.assertEqual(lazydict['one'], 1) lazydict['one'] = -1 self.assertEqual(lazydict['one'], -1) del lazydict['one'] with self.assertRaises(KeyError): lazydict['one']