Message242927
| Author |
ncoghlan |
| Recipients |
asvetlov, gvanrossum, ncoghlan, scoder, vstinner, yselivanov |
| Date |
2015年05月12日.00:03:04 |
| SpamBayes Score |
-1.0 |
| Marked as misclassified |
Yes |
| Message-id |
<1431388984.78.0.444072262315.issue24017@psf.upfronthosting.co.za> |
| In-reply-to |
| Content |
Latest version looks good to me (aside from a quibble about whether StopAsyncIteration should inherit from BaseException instead of Exception - see my review for details).
Based on Guido's explanation in the review, I also suggested adding the following example method to the PEP as part of the rationale for StopAsyncIteration:
def __anext__(self):
try:
data = await self._get_data()
except EOFError:
raise StopAsyncIteration
return data
The trick is that when __anext__ is itself a coroutine, we really do have 3 exit paths:
* suspension to wait for events (await)
* returning the next value (return)
* terminating iteration (raise StopAsyncIteration) |
|