Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.7k
Closed
Description
Bug report
Bug description:
Since Python 3.12, the compiler throws a ValueError when compiling a string likef"{x:{y=}}":
$ ./python.exePython3.14.0a0 (heads/main:81a654a342,Jun282024,07:45:17) [Clang15.0.0 (clang-1500.3.9.4)]ondarwinType"help","copyright","credits"or"license"formoreinformation.>>>f"{x:{y=}}"ValueError:field'value'isrequiredforConstant
Note this is a compile-time error; you also see it if you callcompile() orast.parse(). I would not expect the compiler to ever throw ValueError.
On 3.11, this works as I'd expect:
$ pythonPython 3.11.9 (main, May 7 2024, 09:02:19) [Clang 15.0.0 (clang-1500.3.9.4)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> f"{x:{y=}}"Traceback (most recent call last): File "<stdin>", line 1, in <module>NameError: name 'x' is not defined>>> import ast>>> ast.dump(ast.parse('f"{x:{y=}}"'))"Module(body=[Expr(value=JoinedStr(values=[FormattedValue(value=Name(id='x', ctx=Load()), conversion=-1, format_spec=JoinedStr(values=[Constant(value='y='), FormattedValue(value=Name(id='y', ctx=Load()), conversion=114)]))]))], type_ignores=[])"I don't have a use case for this, but came across it while exploring f-string syntax.
cc@ericvsmith for f-strings and@pablogsal because this feels related to PEP 701
CPython versions tested on:
3.12, CPython main branch
Operating systems tested on:
macOS