Fixed #29772 -- Made LazyObject proxy __lt__() and __gt__().

This commit is contained in:
Javier Buzzi 2018-09-19 19:51:01 +02:00 committed by Tim Graham
parent 9cbdb44014
commit a0d63b02c3
2 changed files with 12 additions and 0 deletions

View File

@ -304,6 +304,8 @@ class LazyObject:
# care about this (especially in equality tests)
__class__ = property(new_method_proxy(operator.attrgetter("__class__")))
__eq__ = new_method_proxy(operator.eq)
__lt__ = new_method_proxy(operator.lt)
__gt__ = new_method_proxy(operator.gt)
__ne__ = new_method_proxy(operator.ne)
__hash__ = new_method_proxy(hash)

View File

@ -66,6 +66,16 @@ class LazyObjectTestCase(TestCase):
self.assertNotEqual(obj1, obj2)
self.assertNotEqual(obj1, 'bar')
def test_lt(self):
obj1 = self.lazy_wrap(1)
obj2 = self.lazy_wrap(2)
self.assertLess(obj1, obj2)
def test_gt(self):
obj1 = self.lazy_wrap(1)
obj2 = self.lazy_wrap(2)
self.assertGreater(obj2, obj1)
def test_bytes(self):
obj = self.lazy_wrap(b'foo')
self.assertEqual(bytes(obj), b'foo')