From e6495387cef8848daf93cb0be6c9f3d2210479da Mon Sep 17 00:00:00 2001 From: Morgan Bartholomew Date: Tue, 10 Mar 2026 23:38:28 +1000 Subject: [PATCH] misc python: support unions in `PyStringFormatInspection` (cherry picked from commit b57bf859f88dbe3508e87c5d88609e84f8ae0452) GitOrigin-RevId: 21e3b7972f3efe1c4e5f4d52d75f5c21d3bef901 --- .../inspections/PyStringFormatInspection.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/python/python-psi-impl/src/com/jetbrains/python/inspections/PyStringFormatInspection.java b/python/python-psi-impl/src/com/jetbrains/python/inspections/PyStringFormatInspection.java index 133224ac3297..89b4c3360343 100644 --- a/python/python-psi-impl/src/com/jetbrains/python/inspections/PyStringFormatInspection.java +++ b/python/python-psi-impl/src/com/jetbrains/python/inspections/PyStringFormatInspection.java @@ -46,6 +46,7 @@ import com.jetbrains.python.psi.types.PyTupleType; import com.jetbrains.python.psi.types.PyType; import com.jetbrains.python.psi.types.PyTypeChecker; import com.jetbrains.python.psi.types.PyTypeParser; +import com.jetbrains.python.psi.types.PyTypeUtil; import com.jetbrains.python.psi.types.PyUnionType; import com.jetbrains.python.psi.types.TypeEvalContext; import org.jetbrains.annotations.NotNull; @@ -166,12 +167,15 @@ public final class PyStringFormatInspection extends PyInspection { else if (PsiTreeUtil.instanceOf(rightExpression, SIMPLE_RHS_EXPRESSIONS)) { if (s != null) { final PyType rightType = myTypeEvalContext.getType(rightExpression); - if (rightType instanceof PyTupleType tupleType) { - matchEntireTupleTypes(problemTarget, tupleType); - return tupleType.getElementCount(); - } - else { - checkExpressionType(rightExpression, s, problemTarget); + + for (var member : PyTypeUtil.toStream(rightType)) { + if (member instanceof PyTupleType tupleType) { + matchEntireTupleTypes(problemTarget, tupleType); + return tupleType.getElementCount(); + } + else { + checkExpressionType(rightExpression, s, problemTarget); + } } } return 1;