Message245113
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.
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. (related: inspect.iscoroutine is defined in terms of collections.abc.Coroutine. Should inspect.isgenerator be redefined to use the new collections.abc.Generator?) |
|
| Date |
User |
Action |
Args |
| 2015-06-10 04:43:33 | Ben.Darnell | set | recipients:
+ Ben.Darnell, gvanrossum, ncoghlan, scoder, vstinner, asvetlov, Yury.Selivanov, yselivanov |
| 2015-06-10 04:43:32 | Ben.Darnell | set | messageid: <[email protected]> |
| 2015-06-10 04:43:32 | Ben.Darnell | link | issue24400 messages |
| 2015-06-10 04:43:32 | Ben.Darnell | create | |
|