Rokas K. (rku) added the comment: I understand rationale for rejection of this issue but i beg to reconsider.
Unlike in traditional coroutines (windows fibers / setjmp|longjmp with stack switching) we can not yield from any point of execution. There must be full async-await chain preserved. This basically divides code into two islands - async and non-async. And there seems to be no way to schedule async call from non-async code and get a response. While suggestion to make custom `async def contains()` call is a valid one we can not always do that. Consider the case when we have to do some networking calls in a function that is invoked by non-async library. Naturally it would be simple non-awaited call from which we can not call a coroutine and get a response. And since it is a library calling into our code we can not easily change it. It might even be completely unsuitable change for library in question. I see two solutions to this problem (if i am missing something please point it out): 1. Reentrant loops as suggested in this issue. 2. Allow awaited calls from non-coroutines provided execution is invoked from a coroutine somewhere up the call stack. First one is certainly easier to implement. ---------- nosy: +Rokas K. (rku) _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue22239> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com