Loading django/utils/functional.py +3 −0 Original line number Diff line number Diff line Loading @@ -270,6 +270,9 @@ class LazyObject(object): def __delitem__(self, key): del self[key] __len__ = new_method_proxy(len) __contains__ = new_method_proxy(operator.contains) # Workaround for http://bugs.python.org/issue12370 _super = super Loading tests/utils_tests/test_simplelazyobject.py +13 −0 Original line number Diff line number Diff line Loading @@ -136,6 +136,9 @@ class TestUtilsSimpleLazyObject(TestCase): self.assertEqual(lazydict['one'], 1) lazydict['one'] = -1 self.assertEqual(lazydict['one'], -1) self.assertTrue('one' in lazydict) self.assertFalse('two' in lazydict) self.assertEqual(len(lazydict), 1) del lazydict['one'] with self.assertRaises(KeyError): lazydict['one'] Loading Loading @@ -183,3 +186,13 @@ class TestUtilsSimpleLazyObject(TestCase): # This would fail with "TypeError: expected string or Unicode object, NoneType found". pickled = cPickle.dumps(x) def test_list_set(self): lazy_list = SimpleLazyObject(lambda: [1, 2, 3, 4, 5]) lazy_set = SimpleLazyObject(lambda: set([1, 2, 3, 4])) self.assertTrue(1 in lazy_list) self.assertTrue(1 in lazy_set) self.assertFalse(6 in lazy_list) self.assertFalse(6 in lazy_set) self.assertEqual(len(lazy_list), 5) self.assertEqual(len(lazy_set), 4) Loading
django/utils/functional.py +3 −0 Original line number Diff line number Diff line Loading @@ -270,6 +270,9 @@ class LazyObject(object): def __delitem__(self, key): del self[key] __len__ = new_method_proxy(len) __contains__ = new_method_proxy(operator.contains) # Workaround for http://bugs.python.org/issue12370 _super = super Loading
tests/utils_tests/test_simplelazyobject.py +13 −0 Original line number Diff line number Diff line Loading @@ -136,6 +136,9 @@ class TestUtilsSimpleLazyObject(TestCase): self.assertEqual(lazydict['one'], 1) lazydict['one'] = -1 self.assertEqual(lazydict['one'], -1) self.assertTrue('one' in lazydict) self.assertFalse('two' in lazydict) self.assertEqual(len(lazydict), 1) del lazydict['one'] with self.assertRaises(KeyError): lazydict['one'] Loading Loading @@ -183,3 +186,13 @@ class TestUtilsSimpleLazyObject(TestCase): # This would fail with "TypeError: expected string or Unicode object, NoneType found". pickled = cPickle.dumps(x) def test_list_set(self): lazy_list = SimpleLazyObject(lambda: [1, 2, 3, 4, 5]) lazy_set = SimpleLazyObject(lambda: set([1, 2, 3, 4])) self.assertTrue(1 in lazy_list) self.assertTrue(1 in lazy_set) self.assertFalse(6 in lazy_list) self.assertFalse(6 in lazy_set) self.assertEqual(len(lazy_list), 5) self.assertEqual(len(lazy_set), 4)