commit:     3bad779f43274c480b0433cb8514c01a471370eb
Author:     Patrick McLean <chutzpah <AT> gentoo <DOT> org>
AuthorDate: Fri Nov 29 01:02:17 2019 +0000
Commit:     Patrick McLean <chutzpah <AT> gentoo <DOT> org>
CommitDate: Fri Nov 29 19:56:18 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3bad779f

dev-python/pyflakes-2.1.1: bump, add py38

Package-Manager: Portage-2.3.80, Repoman-2.3.19
Signed-off-by: Patrick McLean <chutzpah <AT> gentoo.org>

 dev-python/pyflakes/Manifest                       |   1 +
 .../pyflakes/files/pyflakes-2.1.1-py38.patch       |  42 +++++
 .../pyflakes/files/pyflakes-2.1.1-tests.patch      | 207 +++++++++++++++++++++
 dev-python/pyflakes/pyflakes-2.1.1.ebuild          |  25 +++
 4 files changed, 275 insertions(+)

diff --git a/dev-python/pyflakes/Manifest b/dev-python/pyflakes/Manifest
index 71ef0fbef3a..36f7f86dfd0 100644
--- a/dev-python/pyflakes/Manifest
+++ b/dev-python/pyflakes/Manifest
@@ -3,3 +3,4 @@ DIST pyflakes-1.0.0.tar.gz 35365 BLAKE2B 
7b0f676fcb1f77f85a4fa85f02dd26f181f7d80
 DIST pyflakes-1.2.3.tar.gz 44776 BLAKE2B 
9effec80b58ebac140a6a8b2f5f31a32c4fdf9e842d3fbd2858a3e74f33920925f10b6377300d962d1e2b1931efe8bb5318b97ef51c99aeb003a3434d08810db
 SHA512 
e0b49b4cd388b39c4f4f5ab836520cfc2ee940ce24de084fbeca0a2f13beca23b3ca89741e297a6f450d211ec27ebd91a7d23a80105e50d14960a3888d7693f2
 DIST pyflakes-1.6.0.tar.gz 48184 BLAKE2B 
a5762c23521aa68ea92537fbc2903bb7af64faf8d1fafc97e48e003f529f8c16ae8dca444c9122fc5c50618fec7120b2f2b2e6682e1d86e502ab49096cb42bfc
 SHA512 
7e9c2aad6ebed638a1354cef51c7e1f68b25e59f8caf4694997a9afecd7cd8baa629a9363297ac0d961430f007fd22dcae7dae1bcbd7838a3b5d4285063bc7c5
 DIST pyflakes-2.0.0.tar.gz 49002 BLAKE2B 
146d1108b7cf9aca3316d33ad2ac3a0d1627af525b5def8c6140787fb4d1f47bb45c3c9ec9cb755e51e7ca4e947346e5e9de9b4a1b461389ff1bc4521371a684
 SHA512 
4961ebb8372f51783416681e79342d6be94318ecd007190e5c27f46c48f8f163c7a5f49cbe3025789ff1d9cd37c465b2f3baa219059779163545f9828a766f71
+DIST pyflakes-2.1.1.tar.gz 58072 BLAKE2B 
68dccddae2a9dc77f2d1f1251c80e2552935281b6b79e55fd2a0805cb30bf5e1c227b60a7e1f55f5f92ac42dfd18a69eb0b76ce06f43ac1c48dde3921817a271
 SHA512 
7ebf5843b38146305c1063e070480fea8ec3b47fa1be546b1fafaeb242a688a5a001f978e7257fd71d5905b9a338b466ef17c7330725191587e9c40ba632c3f8

diff --git a/dev-python/pyflakes/files/pyflakes-2.1.1-py38.patch 
b/dev-python/pyflakes/files/pyflakes-2.1.1-py38.patch
new file mode 100644
index 00000000000..f9f00b895f5
--- /dev/null
+++ b/dev-python/pyflakes/files/pyflakes-2.1.1-py38.patch
@@ -0,0 +1,42 @@
+commit 1911c203a13826d2eb03d582d60874b91e36f4fc
+Author: Batuhan Taşkaya <47358913+isidenti...@users.noreply.github.com>
+Date:   Sun Nov 3 22:51:27 2019 +0300
+
+    Allow continue inside finally in 3.8+ (#476)
+
+diff --git a/pyflakes/checker.py b/pyflakes/checker.py
+index eca2002..c8ccf56 100644
+--- a/pyflakes/checker.py
++++ b/pyflakes/checker.py
+@@ -1738,7 +1738,7 @@ class Checker(object):
+                 break
+             # Handle Try/TryFinally difference in Python < and >= 3.3
+             if hasattr(n, 'finalbody') and isinstance(node, ast.Continue):
+-                if n_child in n.finalbody:
++                if n_child in n.finalbody and not PY38_PLUS:
+                     self.report(messages.ContinueInFinally, node)
+                     return
+         if isinstance(node, ast.Continue):
+diff --git a/pyflakes/test/test_other.py b/pyflakes/test/test_other.py
+index df2f790..282accb 100644
+--- a/pyflakes/test/test_other.py
++++ b/pyflakes/test/test_other.py
+@@ -493,8 +493,10 @@ class Test(TestCase):
+                     continue
+         ''')
+ 
++    @skipIf(version_info > (3, 8), "Python <= 3.8 only")
+     def test_continueInFinally(self):
+         # 'continue' inside 'finally' is a special syntax error
++        # that is removed in 3.8
+         self.flakes('''
+         while True:
+             try:
+@@ -2003,6 +2005,7 @@ class TestAsyncStatements(TestCase):
+         ''', m.BreakOutsideLoop)
+ 
+     @skipIf(version_info < (3, 5), 'new in Python 3.5')
++    @skipIf(version_info > (3, 8), "Python <= 3.8 only")
+     def test_continueInAsyncForFinally(self):
+         self.flakes('''
+         async def read_data(db):

diff --git a/dev-python/pyflakes/files/pyflakes-2.1.1-tests.patch 
b/dev-python/pyflakes/files/pyflakes-2.1.1-tests.patch
new file mode 100644
index 00000000000..5e1a445e161
--- /dev/null
+++ b/dev-python/pyflakes/files/pyflakes-2.1.1-tests.patch
@@ -0,0 +1,207 @@
+diff --git a/pyflakes/test/test_api.py b/pyflakes/test/test_api.py
+index ee205f9..e295bd9 100644
+--- a/pyflakes/test/test_api.py
++++ b/pyflakes/test/test_api.py
+@@ -9,7 +9,6 @@ import shutil
+ import subprocess
+ import tempfile
+ 
+-from pyflakes.checker import PY2
+ from pyflakes.messages import UnusedImport
+ from pyflakes.reporter import Reporter
+ from pyflakes.api import (
+@@ -423,7 +422,7 @@ def baz():
+ 
+         with self.makeTempFile(source) as sourcePath:
+             if PYPY:
+-                message = 'EOF while scanning triple-quoted string literal'
++                message = 'end of file (EOF) while scanning triple-quoted 
string literal'
+             else:
+                 message = 'invalid syntax'
+ 
+@@ -465,8 +464,8 @@ def foo(
+         syntax error reflects the cause for the syntax error.
+         """
+         with self.makeTempFile("if True:\n\tfoo =") as sourcePath:
+-            column = 5 if PYPY else 7
+-            last_line = '\t   ^' if PYPY else '\t     ^'
++            column = 6 if PYPY else 7
++            last_line = '\t    ^' if PYPY else '\t     ^'
+ 
+             self.assertHasErrors(
+                 sourcePath,
+@@ -476,6 +475,7 @@ def foo(
+ %s
+ """ % (sourcePath, column, last_line)])
+ 
++    @skipIf(PYPY, "Broken on pypy")
+     def test_nonDefaultFollowsDefaultSyntaxError(self):
+         """
+         Source which has a non-default argument following a default argument
+@@ -488,7 +488,12 @@ def foo(bar=baz, bax):
+ """
+         with self.makeTempFile(source) as sourcePath:
+             if ERROR_HAS_LAST_LINE:
+-                column = 9 if sys.version_info >= (3, 8) else 8
++                if PYPY and sys.version_info >= (3,):
++                    column = 7
++                elif sys.version_info >= (3, 8):
++                    column = 9
++                else:
++                    column = 8
+                 last_line = ' ' * (column - 1) + '^\n'
+                 columnstr = '%d:' % column
+             else:
+@@ -500,6 +505,7 @@ def foo(bar=baz, bax):
+ def foo(bar=baz, bax):
+ %s""" % (sourcePath, columnstr, last_line)])
+ 
++    @skipIf(PYPY, "Broken on pypy")
+     def test_nonKeywordAfterKeywordSyntaxError(self):
+         """
+         Source which has a non-keyword argument after a keyword argument 
should
+@@ -511,7 +517,12 @@ foo(bar=baz, bax)
+ """
+         with self.makeTempFile(source) as sourcePath:
+             if ERROR_HAS_LAST_LINE:
+-                column = 14 if sys.version_info >= (3, 8) else 13
++                if PYPY and sys.version_info >= (3,):
++                    column = 12
++                elif sys.version_info >= (3, 8):
++                    column = 14
++                else:
++                    column = 13
+                 last_line = ' ' * (column - 1) + '^\n'
+                 columnstr = '%d:' % column
+             else:
+@@ -529,6 +540,7 @@ foo(bar=baz, bax)
+ foo(bar=baz, bax)
+ %s""" % (sourcePath, columnstr, message, last_line)])
+ 
++    @skipIf(PYPY and sys.hexversion < 0x3080000, "broken on pypy3")
+     def test_invalidEscape(self):
+         """
+         The invalid escape syntax raises ValueError in Python 2
+@@ -681,6 +693,12 @@ class IntegrationTests(TestCase):
+     Tests of the pyflakes script that actually spawn the script.
+     """
+ 
++    # 
https://bitbucket.org/pypy/pypy/issues/3069/pypy36-on-windows-incorrect-line-separator
++    if PYPY and sys.version_info >= (3,) and WIN:
++        LINESEP = '\n'
++    else:
++        LINESEP = os.linesep
++
+     def setUp(self):
+         self.tempdir = tempfile.mkdtemp()
+         self.tempfilepath = os.path.join(self.tempdir, 'temp')
+@@ -721,9 +739,6 @@ class IntegrationTests(TestCase):
+         if sys.version_info >= (3,):
+             stdout = stdout.decode('utf-8')
+             stderr = stderr.decode('utf-8')
+-        # Workaround https://bitbucket.org/pypy/pypy/issues/2350
+-        if PYPY and PY2 and WIN:
+-            stderr = stderr.replace('\r\r\n', '\r\n')
+         return (stdout, stderr, rv)
+ 
+     def test_goodFile(self):
+@@ -744,7 +759,7 @@ class IntegrationTests(TestCase):
+             fd.write("import contraband\n".encode('ascii'))
+         d = self.runPyflakes([self.tempfilepath])
+         expected = UnusedImport(self.tempfilepath, Node(1), 'contraband')
+-        self.assertEqual(d, ("%s%s" % (expected, os.linesep), '', 1))
++        self.assertEqual(d, ("%s%s" % (expected, self.LINESEP), '', 1))
+ 
+     def test_errors_io(self):
+         """
+@@ -754,7 +769,7 @@ class IntegrationTests(TestCase):
+         """
+         d = self.runPyflakes([self.tempfilepath])
+         error_msg = '%s: No such file or directory%s' % (self.tempfilepath,
+-                                                         os.linesep)
++                                                         self.LINESEP)
+         self.assertEqual(d, ('', error_msg, 1))
+ 
+     def test_errors_syntax(self):
+@@ -766,8 +781,8 @@ class IntegrationTests(TestCase):
+         with open(self.tempfilepath, 'wb') as fd:
+             fd.write("import".encode('ascii'))
+         d = self.runPyflakes([self.tempfilepath])
+-        error_msg = '{0}:1:{2}: invalid syntax{1}import{1}    {3}^{1}'.format(
+-            self.tempfilepath, os.linesep, 5 if PYPY else 7, '' if PYPY else 
'  ')
++        error_msg = '{0}:1:{2}: invalid syntax{1}import{1}     
{3}^{1}'.format(
++            self.tempfilepath, self.LINESEP, 6 if PYPY else 7, '' if PYPY 
else ' ')
+         self.assertEqual(d, ('', error_msg, 1))
+ 
+     def test_readFromStdin(self):
+@@ -776,13 +791,14 @@ class IntegrationTests(TestCase):
+         """
+         d = self.runPyflakes([], stdin='import contraband')
+         expected = UnusedImport('<stdin>', Node(1), 'contraband')
+-        self.assertEqual(d, ("%s%s" % (expected, os.linesep), '', 1))
++        self.assertEqual(d, ("%s%s" % (expected, self.LINESEP), '', 1))
+ 
+ 
+ class TestMain(IntegrationTests):
+     """
+     Tests of the pyflakes main function.
+     """
++    LINESEP = os.linesep
+ 
+     def runPyflakes(self, paths, stdin=None):
+         try:
+diff --git a/pyflakes/test/test_doctests.py b/pyflakes/test/test_doctests.py
+index 0825ffe..a474bb1 100644
+--- a/pyflakes/test/test_doctests.py
++++ b/pyflakes/test/test_doctests.py
+@@ -328,7 +328,9 @@ class Test(TestCase):
+             m.DoctestSyntaxError).messages
+         exc = exceptions[0]
+         self.assertEqual(exc.lineno, 4)
+-        if sys.version_info >= (3, 8):
++        if PYPY:
++            self.assertEqual(exc.col, 27)
++        elif sys.version_info >= (3, 8):
+             self.assertEqual(exc.col, 18)
+         else:
+             self.assertEqual(exc.col, 26)
+@@ -339,12 +341,14 @@ class Test(TestCase):
+         exc = exceptions[1]
+         self.assertEqual(exc.lineno, 5)
+         if PYPY:
+-            self.assertEqual(exc.col, 13)
++            self.assertEqual(exc.col, 14)
+         else:
+             self.assertEqual(exc.col, 16)
+         exc = exceptions[2]
+         self.assertEqual(exc.lineno, 6)
+-        if PYPY or sys.version_info >= (3, 8):
++        if PYPY:
++            self.assertEqual(exc.col, 14)
++        elif sys.version_info >= (3, 8):
+             self.assertEqual(exc.col, 13)
+         else:
+             self.assertEqual(exc.col, 18)
+@@ -358,7 +362,9 @@ class Test(TestCase):
+             """
+         ''', m.DoctestSyntaxError).messages[0]
+         self.assertEqual(exc.lineno, 5)
+-        if PYPY or sys.version_info >= (3, 8):
++        if PYPY:
++            self.assertEqual(exc.col, 14)
++        elif sys.version_info >= (3, 8):
+             self.assertEqual(exc.col, 13)
+         else:
+             self.assertEqual(exc.col, 16)
+@@ -377,7 +383,10 @@ class Test(TestCase):
+             m.DoctestSyntaxError,
+             m.UndefinedName).messages
+         self.assertEqual(exc1.lineno, 6)
+-        self.assertEqual(exc1.col, 19)
++        if PYPY:
++            self.assertEqual(exc1.col, 20)
++        else:
++            self.assertEqual(exc1.col, 19)
+         self.assertEqual(exc2.lineno, 7)
+         self.assertEqual(exc2.col, 12)
+ 

diff --git a/dev-python/pyflakes/pyflakes-2.1.1.ebuild 
b/dev-python/pyflakes/pyflakes-2.1.1.ebuild
new file mode 100644
index 00000000000..f6e2a0f4ae2
--- /dev/null
+++ b/dev-python/pyflakes/pyflakes-2.1.1.ebuild
@@ -0,0 +1,25 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+PYTHON_COMPAT=( python2_7 python3_{5,6,7,8} pypy{,3} )
+
+inherit distutils-r1
+
+DESCRIPTION="Passive checker for Python programs"
+HOMEPAGE="https://github.com/PyCQA/pyflakes https://pypi.org/project/pyflakes/";
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sparc 
~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris 
~sparc64-solaris ~x64-solaris ~x86-solaris"
+
+BDEPEND="dev-python/setuptools[${PYTHON_USEDEP}]"
+RDEPEND="${BDEPEND}"
+
+PATCHES=(
+       "${FILESDIR}/pyflakes-2.1.1-tests.patch"
+       "${FILESDIR}/pyflakes-2.1.1-py38.patch"
+)
+
+distutils_enable_tests unittest

Reply via email to