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
 }

Reply via email to