diff --git a/parso/python/normalizer.py b/parso/python/normalizer.py index e394de0..d910236 100644 --- a/parso/python/normalizer.py +++ b/parso/python/normalizer.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- import codecs +import warnings import re from contextlib import contextmanager @@ -570,7 +571,10 @@ class ErrorFinder(Normalizer): func = codecs.unicode_escape_decode try: - func(payload) + with warnings.catch_warnings(): + # The warnings from parsing strings are not relevant. + warnings.filterwarnings('ignore') + func(payload) except UnicodeDecodeError as e: self._add_syntax_error('(unicode error) ' + str(e), leaf) except ValueError as e: diff --git a/test/test_python_errors.py b/test/test_python_errors.py index c881a6f..c589be2 100644 --- a/test/test_python_errors.py +++ b/test/test_python_errors.py @@ -241,6 +241,8 @@ GLOBAL_NONLOCAL_ERROR = [ if sys.version_info >= (3, 6): FAILING_EXAMPLES += GLOBAL_NONLOCAL_ERROR FAILING_EXAMPLES.append('(%s *d) = x' % ('a,' * 256)) +if sys.version_info >= (3, 5): + FAILING_EXAMPLES.append('[*[] for a in [1]]') if sys.version_info >= (3, 4): # Before that del None works like del list, it gives a NameError. FAILING_EXAMPLES.append('del None') @@ -253,6 +255,8 @@ if sys.version_info >= (3,): # A symtable error that raises only a SyntaxWarning in Python 2. 'def x(): from math import *', 'b"รค"', + '{**{} for a in [1]}', + '"s" b""', ] if sys.version_info >= (2, 7): # This is something that raises a different error in 2.6 than in the other @@ -381,9 +385,6 @@ def test_default_except_error_postition(): ('del *a, b', '3.5'), ('def x(*): pass', '3.5'), ('async def foo():\n def nofoo():[x async for x in []]', '3.6'), - ('[*[] for a in [1]]', '3.5'), - ('{**{} for a in [1]}', '3.5'), - ('"s" b""', '3.5'), ] ) def test_python_exception_matches_version(code, version):