diff options
author | Patrick McLean <chutzpah@gentoo.org> | 2019-11-28 17:02:17 -0800 |
---|---|---|
committer | Patrick McLean <chutzpah@gentoo.org> | 2019-11-29 11:56:18 -0800 |
commit | 3bad779f43274c480b0433cb8514c01a471370eb (patch) | |
tree | 9f17ae68b802cee16c1b187ff86cdeee921abfd1 /dev-python/pyflakes/files | |
parent | dev-python/mccabe-0.6.1-r1: Revbump, EAPI=7, py38 (diff) | |
download | gentoo-3bad779f43274c480b0433cb8514c01a471370eb.tar.gz gentoo-3bad779f43274c480b0433cb8514c01a471370eb.tar.bz2 gentoo-3bad779f43274c480b0433cb8514c01a471370eb.zip |
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@gentoo.org>
Diffstat (limited to 'dev-python/pyflakes/files')
-rw-r--r-- | dev-python/pyflakes/files/pyflakes-2.1.1-py38.patch | 42 | ||||
-rw-r--r-- | dev-python/pyflakes/files/pyflakes-2.1.1-tests.patch | 207 |
2 files changed, 249 insertions, 0 deletions
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 000000000000..f9f00b895f5a --- /dev/null +++ b/dev-python/pyflakes/files/pyflakes-2.1.1-py38.patch @@ -0,0 +1,42 @@ +commit 1911c203a13826d2eb03d582d60874b91e36f4fc +Author: Batuhan Taşkaya <47358913+isidentical@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 000000000000..5e1a445e161e --- /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) + |