Skip to content

Commit df724ab

Browse files
nickdrozdjacobtylerwalls
authored andcommitted
Check for empty format specs (#2574)
(cherry picked from commit a679550)
1 parent 1915cc3 commit df724ab

File tree

3 files changed

+16
-0
lines changed

3 files changed

+16
-0
lines changed

ChangeLog

+5
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ Release date: TBA
1717

1818
Refs https://github.com/pylint-dev/pylint/pull/9932#issuecomment-2364985551
1919

20+
* Fix a crash from inferring empty format specs.
21+
22+
Closes pylint-dev/pylint#9945
23+
24+
2025
What's New in astroid 3.3.3?
2126
============================
2227
Release date: 2024-09-20

astroid/nodes/node_classes.py

+3
Original file line numberDiff line numberDiff line change
@@ -4779,6 +4779,9 @@ def _infer(
47794779
def _infer_from_values(
47804780
cls, nodes: list[NodeNG], context: InferenceContext | None = None, **kwargs: Any
47814781
) -> Generator[InferenceResult, None, InferenceErrorInfo | None]:
4782+
if not nodes:
4783+
yield
4784+
return
47824785
if len(nodes) == 1:
47834786
yield from nodes[0]._infer(context, **kwargs)
47844787
return

tests/test_inference.py

+8
Original file line numberDiff line numberDiff line change
@@ -7380,3 +7380,11 @@ def test_sys_argv_uninferable() -> None:
73807380
sys_argv_value = list(a._infer())
73817381
assert len(sys_argv_value) == 1
73827382
assert sys_argv_value[0] is Uninferable
7383+
7384+
7385+
def test_empty_format_spec() -> None:
7386+
"""Regression test for https://github.com/pylint-dev/pylint/issues/9945."""
7387+
node = extract_node('f"{x:}"')
7388+
assert isinstance(node, nodes.JoinedStr)
7389+
7390+
assert list(node.infer()) == [util.Uninferable]

0 commit comments

Comments
 (0)