Fix iteration on Python 3.7#35
Open
Glutexo wants to merge 1 commit into
Open
Conversation
PEP 479 changed handling of StopIteration inside generators. Since Python 3.7, StopIteration errors raised from generators are implicitly converted to RuntimeErrors. The correct way of reporting the state when there is nothing more to yield is to return. Import from future ensures the same behavior on older versions of Python that don’t have this as default.
Author
|
@wglass May I ask for an input here? Close, merge? |
Owner
Sorry about that, kinda forgot this repo existed to tell the truth. If you can get the CI passing I'll merge it in. |
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
PEP 479 changed handling of StopIteration inside generators. Since Python 3.7, StopIteration errors raised from generators are implicitly converted to RuntimeErrors. The correct way of reporting the state when there is nothing more to yield is to return. See PEP 479/.
The
import from __future__ensures the same behavior on older versions of Python that don’t have this as default, making the tests fail without the actual fix. That includes Python 3.6.The test_iterables tests pass. Unfortunately I didn’t get some errors when running the whole test suite, even with Python 3.6. It looks like those are not introduced by this PR, since they happen on master too.
Fixes #34 .