[pypy-commit] pypy py3.5-async: add __await__ method to Coroutine typedef and redirect it to descr__await__

plan_rich pypy.commits at gmail.com
Fri Jul 29 09:32:49 EDT 2016


Author: Richard Plangger <planrichi at gmail.com>
Branch: py3.5-async
Changeset: r85904:000728f0465a
Date: 2016-07-29 15:31 +0200
http://bitbucket.org/pypy/pypy/changeset/000728f0465a/

Log:	add __await__ method to Coroutine typedef and redirect it to
	descr__await__

diff --git a/pypy/interpreter/generator.py b/pypy/interpreter/generator.py
--- a/pypy/interpreter/generator.py
+++ b/pypy/interpreter/generator.py
@@ -319,6 +319,12 @@
         self.running = False
         if self.pycode.co_flags & CO_YIELD_INSIDE_TRY:
             self.register_finalizer(self.space)
+
+    def descr__await__(self, space):
+        # implement this function:
+        # https://github.com/python/cpython/blob/3.5/Objects/genobject.c#L786
+        # you need a new CoroutineWrapper object + CoroutineWrapperType
+        pass
     
     def descr__reduce__(self, space):
         from pypy.interpreter.mixedmodule import MixedModule
diff --git a/pypy/interpreter/typedef.py b/pypy/interpreter/typedef.py
--- a/pypy/interpreter/typedef.py
+++ b/pypy/interpreter/typedef.py
@@ -811,6 +811,8 @@
                             descrmismatch='close'),
     __iter__   = interp2app(Coroutine.descr__iter__,
                             descrmismatch='__iter__'),
+    __await__  = interp2app(Coroutine.descr__await__,
+                            descrmismatch='__await__'),
     gi_running = interp_attrproperty('running', cls=Coroutine),
     gi_frame   = GetSetProperty(Coroutine.descr_gi_frame),
     gi_code    = GetSetProperty(Coroutine.descr_gi_code),


More information about the pypy-commit mailing list