Please just change something. Weird combination of dead code and inferred None
Offen
Dieses Issue hat noch niemand übernommen.
feature
topic-configuration
topic-reachability
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- Ø Merge
- 1 T. 18 Std.
- Gemergte PRs (30 T.)
- 54
Beschreibung
Feature
foo = None
def bar() -> str:
global foo
if foo is not None:
print("Hello")
else:
foo = "bar"
return "lol"
This program type-checks, even though it's obviously wrong. It's not a bug, it's a feature:
- Inferred type of
fooisNone, even thoughOptional[str]was intended. - Because
foohas typeNone, theif foo is not None:part is eliminated as dead code, and therefore the missing return isn't detected. - After setting
foo = "bar",reveal_type(foo)showsstr. Perhaps the assignment should be an error?
Pitch
A friend submitted a PR like this and thought it was fine.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Die Payload nennt keine Dateien, Tests oder Einstiegspunkte. Führe zunächst das bereitgestellte Snippet mit mypy aus und prüfe, wie der Umgang mit inferiertem None, globaler Neuzuweisung, unerreichbaren Zweigen und fehlenden Rückgabewerten erfolgt. Bevor der Umfang der Implementierung festgelegt werden kann, ist eine Entscheidung der Maintainer zur beabsichtigten Semantik und zur Regressionstestabdeckung erforderlich.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- devtools
- Issue-Typ
- Feature
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Veraltet
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 25/100