summaryrefslogtreecommitdiffstats
path: root/Doc
diff options
context:
space:
mode:
authorPablo Galindo Salgado <Pablogsal@gmail.com>2023-05-31 21:01:29 (GMT)
committerGitHub <noreply@github.com>2023-05-31 21:01:29 (GMT)
commit60cfc6d1ae01c89f9b390ea5eb6a582c8a53f971 (patch)
treedf68e37c4426406ab491c14519a9a24c7a3b38ec /Doc
parentd944d873b2d7a627c20246762e931f9d4fcf8fe7 (diff)
downloadcpython-60cfc6d1ae01c89f9b390ea5eb6a582c8a53f971.zip
cpython-60cfc6d1ae01c89f9b390ea5eb6a582c8a53f971.tar.gz
cpython-60cfc6d1ae01c89f9b390ea5eb6a582c8a53f971.tar.bz2
Clarify that error messages are better with PEP 701 (#105150)
Co-authored-by: Marta Gómez Macías <mgmacias@google.com>
Diffstat (limited to 'Doc')
-rw-r--r--Doc/whatsnew/3.12.rst25
1 files changed, 25 insertions, 0 deletions
diff --git a/Doc/whatsnew/3.12.rst b/Doc/whatsnew/3.12.rst
index 2423672..6f72590 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).