Skip to content

Multiline expression brackets with format specifiers don't work in f-strings #110259

Description

@tusharsadhwani

Bug report

Bug description:

In accordance with PEP 701, the following code works:

>>> x =1
>>> f"___{
... x
... }___"
'___1___'
>>> f"___{(
... x
... )}___"
'___1___'

But the following fails:

f"__{x:d}__"

This gives:

 File "<stdin>", line 1
x:d
SyntaxError: unterminated f-string literal (detected at line 2)

Is this intended behaviour? This is not clarified in the PEP.


Similarly,

f"""__{x:d}__"""

Gives:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: Invalid format specifier 'd
' for object of type 'int'

CPython versions tested on:

3.12

Operating systems tested on:

macOS

Linked PRs

Metadata

Metadata

Labels

interpreter-core(Objects, Python, Grammar, and Parser dirs)topic-parsertype-bugAn unexpected behavior, bug, or error

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions