Warn on "raise StopIteration"
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 1.5k
- Forks
- 190
- Avg merge
- 8m
- Merged PRs (30d)
- 13
Description
Original report by asmeurer (@asmeurer?) on Launchpad:
PEP 479 (https://www.python.org/dev/peps/pep-0479/) changes "raise StopIteration" inside a generator to cause RuntimeError to be raised (previously, it would stop the generator, same as "return None").
This feature is so far only available as a __future__ import in Python 3.5.
Due to the way __future__ imports work, it's not possible to use "from future import generator_stop" and support Python < 3.5 at the same time. Hence, a check on the source, i.e., pyflakes, is a good workaround (I guess there's also a deprecation warning which can be enabled, but checking code without running it is still useful).
One thing I'm still a little unclear about is if you'd ever still want to raise StopIteration legitimately, even with the new behavior. The fact that it's now a RuntimeError + a deprecation warning seems to indicate no to me, but I could be wrong.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Read PEP 479 and the issue description first, focusing on how pyflakes should identify raise StopIteration inside generators. Done means pyflakes reports the problematic pattern while preserving any legitimate uses that the project decides should remain allowed; the payload names no implementation files or tests.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- tooling
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100