]> granicus.if.org Git - python/commitdiff
Issue #24450: Proxy cr_await and gi_yieldfrom in @types.coroutine
authorYury Selivanov <yselivanov@sprymix.com>
Fri, 3 Jul 2015 04:35:02 +0000 (00:35 -0400)
committerYury Selivanov <yselivanov@sprymix.com>
Fri, 3 Jul 2015 04:35:02 +0000 (00:35 -0400)
Lib/test/test_types.py
Lib/types.py

index e283f32dd72bd4a1baaf768d5f3167f161c66956..ba8a1b93ebfcf15c9dfd7598eaeaf7ae24188de8 100644 (file)
@@ -1295,8 +1295,8 @@ class CoroutineTests(unittest.TestCase):
         self.assertIs(wrapper.__name__, gen.__name__)
 
         # Test AttributeErrors
-        for name in {'gi_running', 'gi_frame', 'gi_code',
-                     'cr_running', 'cr_frame', 'cr_code'}:
+        for name in {'gi_running', 'gi_frame', 'gi_code', 'gi_yieldfrom',
+                     'cr_running', 'cr_frame', 'cr_code', 'cr_await'}:
             with self.assertRaises(AttributeError):
                 getattr(wrapper, name)
 
@@ -1304,12 +1304,15 @@ class CoroutineTests(unittest.TestCase):
         gen.gi_running = object()
         gen.gi_frame = object()
         gen.gi_code = object()
+        gen.gi_yieldfrom = object()
         self.assertIs(wrapper.gi_running, gen.gi_running)
         self.assertIs(wrapper.gi_frame, gen.gi_frame)
         self.assertIs(wrapper.gi_code, gen.gi_code)
+        self.assertIs(wrapper.gi_yieldfrom, gen.gi_yieldfrom)
         self.assertIs(wrapper.cr_running, gen.gi_running)
         self.assertIs(wrapper.cr_frame, gen.gi_frame)
         self.assertIs(wrapper.cr_code, gen.gi_code)
+        self.assertIs(wrapper.cr_await, gen.gi_yieldfrom)
 
         wrapper.close()
         gen.close.assert_called_once_with()
index 38b453ad197713e44a3e2d20724001b63b5a2e39..8c5fc65d2737e65655b847a0877ad6b469b6d63a 100644 (file)
@@ -188,9 +188,13 @@ class _GeneratorWrapper:
     @property
     def gi_running(self):
         return self.__wrapped.gi_running
+    @property
+    def gi_yieldfrom(self):
+        return self.__wrapped.gi_yieldfrom
     cr_code = gi_code
     cr_frame = gi_frame
     cr_running = gi_running
+    cr_await = gi_yieldfrom
     def __next__(self):
         return next(self.__wrapped)
     def __iter__(self):