[Python-checkins] Add a What's New entry for the new parser error improvements (GH-24280)

pablogsal webhook-mailer at python.org
Thu Jan 21 12:36:44 EST 2021


https://github.com/python/cpython/commit/805ede8ae88fb517dea0df6de71cf88159b07e62
commit: 805ede8ae88fb517dea0df6de71cf88159b07e62
branch: master
author: Pablo Galindo <Pablogsal at gmail.com>
committer: pablogsal <Pablogsal at gmail.com>
date: 2021-01-21T17:36:35Z
summary:

Add a What's New entry for the new parser error improvements (GH-24280)

files:
M Doc/whatsnew/3.10.rst

diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst
index 7a2f4f8c82fe8..d822dda09d2e1 100644
--- a/Doc/whatsnew/3.10.rst
+++ b/Doc/whatsnew/3.10.rst
@@ -166,6 +166,48 @@ See :class:`typing.Callable`, :class:`typing.ParamSpec`,
 
 (Contributed by Ken Jin in :issue:`41559`.)
 
+Better error messages in the parser
+-----------------------------------
+
+When parsing code that contains unclosed parentheses or brackets the interpreter
+now includes the location of the unclosed bracket of parentheses instead of displaying
+*SyntaxError: unexpected EOF while parsing* or pointing to some incorrect location.
+For instance, consider the following code (notice the unclosed '{'):
+
+.. code-block:: python
+
+    expected = {9: 1, 18: 2, 19: 2, 27: 3, 28: 3, 29: 3, 36: 4, 37: 4,
+                38: 4, 39: 4, 45: 5, 46: 5, 47: 5, 48: 5, 49: 5, 54: 6,
+    some_other_code = foo()
+
+previous versions of the interpreter reported confusing places as the location of
+the syntax error:
+
+.. code-block:: text
+
+   File "example.py", line 3
+       some_other_code = foo()
+                       ^
+   SyntaxError: invalid syntax
+
+but in Python3.10 a more informative error is emitted:
+
+.. code-block:: text
+
+    File "example.py", line 1
+        expected = {9: 1, 18: 2, 19: 2, 27: 3, 28: 3, 29: 3, 36: 4, 37: 4,
+                   ^
+    SyntaxError: '{' was never closed
+
+
+In a similar way, errors involving unclosed string literals (single and triple
+quoted) now point to the start of the string instead of reporting EOF/EOL.
+
+These improvements are inspired by previous work in the PyPy interpreter.
+
+(Contributed by Pablo Galindo in :issue:`42864` and Batuhan Taskaya in
+:issue:`40176`.)
+
 Other Language Changes
 ======================
 



More information about the Python-checkins mailing list