.. _stop-iteration-return: stop-iteration-return / R1708 ============================= **Message emitted:** ``Do not raise StopIteration in generator, use return statement instead`` **Description:** *According to PEP479, the raise of StopIteration to end the loop of a generator may lead to hard to find bugs. This PEP specify that raise StopIteration has to be replaced by a simple return statement* **Problematic code:** ``fruit_generator.py``: .. literalinclude:: /data/messages/s/stop-iteration-return/bad/fruit_generator.py :language: python ``two_fruit_generator.py``: .. literalinclude:: /data/messages/s/stop-iteration-return/bad/two_fruit_generator.py :language: python ``two_good_fruit_generator.py``: .. literalinclude:: /data/messages/s/stop-iteration-return/bad/two_good_fruit_generator.py :language: python **Correct code:** ``fruit_generator.py``: .. literalinclude:: /data/messages/s/stop-iteration-return/good/fruit_generator.py :language: python ``two_fruit_generator.py``: .. literalinclude:: /data/messages/s/stop-iteration-return/good/two_fruit_generator.py :language: python ``two_good_fruit_generator.py``: .. literalinclude:: /data/messages/s/stop-iteration-return/good/two_good_fruit_generator.py :language: python **Additional details:** It's possible to give a default value to ``next`` or catch the ``StopIteration``, or return directly. A ``StopIteration`` cannot be propagated from a generator. **Related links:** - `PEP 479 `_ Created by the `refactoring `__ checker.