Enable use of await for a class based view#714
Closed
mattrasband wants to merge 1 commit intoaio-libs:masterfrom
Closed
Enable use of await for a class based view#714mattrasband wants to merge 1 commit intoaio-libs:masterfrom
await for a class based view#714mattrasband wants to merge 1 commit intoaio-libs:masterfrom
Conversation
…ty for async functions (native coroutines)
Member
|
Please add tests |
Author
|
@asvetlov Roger, I meant to ask - is there a good way to test python 3.4 vs 3.5 in the current setup? I saw that appveyor does it but wasn't sure the right way to try it locally? |
Member
|
Fixed by #717 |
Author
|
Awesome, you're the man. Sorry, I've been traveling a bit recently and haven't gotten back to doing it. |
asvetlov
added a commit
that referenced
this pull request
Jan 3, 2016
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Currently if you implement a middleware in the 3.5 syntax (native coroutines, e.g.
async defandawait) for class based views, they will yield aTypeErrorsaying that thatweb.View is not awaitable. This is due to a new magic method__await__for classes that needs to be implemented. This change simply uses the current__iter__behavior (supporting 3.4@asyncio.coroutineandyield from) and enables the 3.5awaitkeyword (required for native coroutines, e.g.async def)A quick example of an error this can cause is in middleware written in the 3.5 syntax:
Without the
__await__method implemented aTypeErroris raised.Validated to work with 3.4+