Yury Selivanov added the comment: > GeneratorWrapper helps, but it fails when applied to non-generator functions > that return a value (while both tornado.gen.coroutine and asyncio.coroutine > take pains to support such usage). The "raise TypeError" should be removed; > just return the result without wrapping if it's not a generator.
I think this is reasonable. I'll try it tomorrow to see if there are any corner cases, but I doubt there are any. > GeneratorWrapper also runs afoul of some places where I do explicit type > checking instead of duck typing (isinstance(x, types.GeneratorType)). Using > the Generator ABC doesn't work because the generator methods are set as > attributes on __init__ instead of defined on the class. The methods should be > defined on the class, even if they're overwritten with instance attributes > later for speed. Sure, this can be fixed too. Could you please update types.coroutine locally and verify that it will work for Tornado? > (related: inspect.iscoroutine is defined in terms of > collections.abc.Coroutine. Should inspect.isgenerator be redefined to use the > new collections.abc.Generator?) Since abc.Generator is a new thing I guess we still can do that. Do you have a good use case for it? We need a good one to convince Larry to include this post-beta. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue24400> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com