Skip to content

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

Closed
@tusharsadhwani

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