Support type-narrowing on non-zero length sequences
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 35/100
Rechercherichtung
Reproduziere das Problem mit dem bereitgestellten lustigen Beispiel und mypy und verfolge anschließend die für die Prüfung auf eine nicht leere Liste und die Schleife verwendete Typ-Eingrenzung und Kontrollflussanalyse. Es ist keine Repository-Datei und kein Test benannt; abgeschlossen ist es, wenn mypy die abschließende Rückgabe sicher akzeptiert und die Abdeckung diese Eingrenzung verifiziert, ohne verwandte Fälle zu beeinträchtigen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Feature
In the following example, mypy currently flags the final return statement because it thinks l could be empty, in which case the body of the for-loop would never execute, and therefore d could still be None. However, the preceding if-statement proves that the body of the for-loop will execute at least once, after which d must be int; it would be pretty cool if mypy could detect this and narrow d to int from that point forward.
def fun(d: int | None, l: list[int]) -> int:
if len(l) == 0:
return 0
for x in l:
d = (d or 0) + x
# error: Incompatible return value type (got "Optional[int]", expected "int")
# but actually we could safely narrow d to int
return d
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- Ø Merge
- 1 T. 18 Std.
- Gemergte PRs (30 T.)
- 54
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus python/mypy
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
-
documentation
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
-
bug topic-configuration topic-error-reporting
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
bancolombia/sentinel#23 ·
-
test md OffenCI
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
langchain-ai/deepagents#6450 ·
-
bug client
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100