Instead of raising StopIteration you have to return from the function, otherwise you'll just get a RuntimeError starting with Python 3.7.
> [bpo-32670]: Enforce [PEP 479] for all code. This means that manually raising a StopIteration exception from a generator is prohibited for all code, regardless of whether ‘from __future__ import generator_stop’ was used or not.
[changelog]: https://docs.python.org/3.7/whatsnew/changelog.html#id115
[bpo-32670]: https://bugs.python.org/issue32670
[PEP 479]: https://www.python.org/dev/peps/pep-0479/