Commit ffd18732 authored by Chesco Igual's avatar Chesco Igual Committed by Tim Graham
Browse files

Fixed #24781 -- Fixed repr() for lazy objects.

parent 2f9c4e2b
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -75,6 +75,9 @@ def lazy(func, *resultclasses):
                (func, self.__args, self.__kw) + resultclasses
            )

        def __repr__(self):
            return repr(self.__cast())

        @classmethod
        def __prepare_class__(cls):
            for resultclass in resultclasses:
+15 −0
Original line number Diff line number Diff line
@@ -130,3 +130,18 @@ class FunctionalTestCase(unittest.TestCase):

        self.assertEqual(lazy_a(), lazy_b())
        self.assertNotEqual(lazy_b(), lazy_c())

    def test_lazy_repr_text(self):
        original_object = 'Lazy translation text'
        lazy_obj = lazy(lambda: original_object, six.text_type)
        self.assertEquals(repr(original_object), repr(lazy_obj()))

    def test_lazy_repr_int(self):
        original_object = 15
        lazy_obj = lazy(lambda: original_object, int)
        self.assertEquals(repr(original_object), repr(lazy_obj()))

    def test_lazy_repr_bytes(self):
        original_object = b'J\xc3\xbcst a str\xc3\xadng'
        lazy_obj = lazy(lambda: original_object, bytes)
        self.assertEquals(repr(original_object), repr(lazy_obj()))