commit: 9e75380f3945567172af1e2487ce4d1d1aeae81f Author: Michał Górny <mgorny <AT> gentoo <DOT> org> AuthorDate: Thu Jul 12 22:06:43 2018 +0000 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org> CommitDate: Thu Jul 12 22:25:59 2018 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9e75380f
dev-python/pygments: Backport python3.7 generator fix .../pygments/files/pygments-2.2.0-pep479.patch | 46 ++++++++++++++++++++++ dev-python/pygments/pygments-2.2.0.ebuild | 5 +++ 2 files changed, 51 insertions(+) diff --git a/dev-python/pygments/files/pygments-2.2.0-pep479.patch b/dev-python/pygments/files/pygments-2.2.0-pep479.patch new file mode 100644 index 00000000000..28d40e9566a --- /dev/null +++ b/dev-python/pygments/files/pygments-2.2.0-pep479.patch @@ -0,0 +1,46 @@ +# HG changeset patch +# User Miro Hrončok <m...@hroncok.cz> +# Date 1530720528 -7200 +# Branch py37 +# Node ID 933b5f6afe35e6d554f46085a4e62dc5bf413c87 +# Parent 7941677dc77d4f2bf0bbd6140ade85a9454b8b80 +PEP 479: Raising StopIteration from a generator is now an error + +So we return instead. Fix needed for Python 3.7. + +Fixes https://bitbucket.org/birkenfeld/pygments-main/issues/1457 + +diff --git a/pygments/lexers/lisp.py b/pygments/lexers/lisp.py +--- a/pygments/lexers/lisp.py ++++ b/pygments/lexers/lisp.py +@@ -2327,13 +2327,13 @@ + token = Name.Function if token == Literal else token + yield index, token, value + +- raise StopIteration ++ return + + def _process_signature(self, tokens): + for index, token, value in tokens: + if token == Literal and value == '}': + yield index, Punctuation, value +- raise StopIteration ++ return + elif token in (Literal, Name.Function): + token = Name.Variable if value.istitle() else Keyword.Type + yield index, token, value +diff --git a/pygments/lexers/sql.py b/pygments/lexers/sql.py +--- a/pygments/lexers/sql.py ++++ b/pygments/lexers/sql.py +@@ -347,7 +347,10 @@ + # Emit the output lines + out_token = Generic.Output + while 1: +- line = next(lines) ++ try: ++ line = next(lines) ++ except StopIteration: ++ return + mprompt = re_prompt.match(line) + if mprompt is not None: + # push the line back to have it processed by the prompt diff --git a/dev-python/pygments/pygments-2.2.0.ebuild b/dev-python/pygments/pygments-2.2.0.ebuild index 07dcfb61841..d9da923f8cd 100644 --- a/dev-python/pygments/pygments-2.2.0.ebuild +++ b/dev-python/pygments/pygments-2.2.0.ebuild @@ -32,6 +32,11 @@ DEPEND="${RDEPEND} S="${WORKDIR}/${MY_P}" +PATCHES=( + # fix generators for python3.7+ + "${FILESDIR}"/pygments-2.2.0-pep479.patch +) + python_compile_all() { use doc && emake -C doc html }