[Python-checkins] Clarify that error messages are better with PEP 701 (#105150)
pablogsal
webhook-mailer at python.org
Wed May 31 17:01:36 EDT 2023
https://github.com/python/cpython/commit/60cfc6d1ae01c89f9b390ea5eb6a582c8a53f971
commit: 60cfc6d1ae01c89f9b390ea5eb6a582c8a53f971
branch: main
author: Pablo Galindo Salgado <Pablogsal at gmail.com>
committer: pablogsal <Pablogsal at gmail.com>
date: 2023-05-31T22:01:29+01:00
summary:
Clarify that error messages are better with PEP 701 (#105150)
Co-authored-by: Marta Gómez Macías <mgmacias at google.com>
files:
M Doc/whatsnew/3.12.rst
diff --git a/Doc/whatsnew/3.12.rst b/Doc/whatsnew/3.12.rst
index 2423672f75b3..6f725906f1e1 100644
--- a/Doc/whatsnew/3.12.rst
+++ b/Doc/whatsnew/3.12.rst
@@ -203,6 +203,31 @@ same quote as the containing f-string. Let's cover these in detail:
See :pep:`701` for more details.
+As a positive side-effect of how this feature has been implemented (by parsing f-strings
+with the PEG parser (see :pep:`617`), now error messages for f-strings are more precise
+and include the exact location of the error. For example, in Python 3.11, the following
+f-string raises a :exc:`SyntaxError`:
+
+.. code-block:: python
+
+ >>> my_string = f"{x z y}" + f"{1 + 1}"
+ File "<stdin>", line 1
+ (x z y)
+ ^^^
+ SyntaxError: f-string: invalid syntax. Perhaps you forgot a comma?
+
+but the error message doesn't include the exact location of the error withing the line and
+also has the expression artificially surrounded by parentheses. In Python 3.12, as f-strings
+are parsed with the PEG parser, error messages can be more precise and show the entire line:
+
+.. code-block:: python
+
+ >>> my_string = f"{x z y}" + f"{1 + 1}"
+ File "<stdin>", line 1
+ my_string = f"{x z y}" + f"{1 + 1}"
+ ^^^
+ SyntaxError: invalid syntax. Perhaps you forgot a comma?
+
(Contributed by Pablo Galindo, Batuhan Taskaya, Lysandros Nikolaou, Cristián
Maureira-Fredes and Marta Gómez in :gh:`102856`. PEP written by Pablo Galindo,
Batuhan Taskaya, Lysandros Nikolaou and Marta Gómez).
More information about the Python-checkins
mailing list