sys.platform checks assigned to variables are not handled correctly
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
When doing a sys.platform check, mypy seems to only recognise this when the check is done directly in the if statement, but not when the check is assigned to a variable.
e.g. https://github.com/kuwv/invoke/blob/typing/invoke/terminals.py#L33
This produces:
invoke/terminals.py:33:5: error: Module "ctypes" has no attribute "windll" [attr-defined]
from ctypes import (
But, if you change if WINDOWS to if sys.platform == "win32", then the error disappears.
I'm pretty sure I've seen mypy work correctly when sys.version_info checks are assigned to a variable, so not sure why sys.platform checks would be any different.
Tested with 0.991.
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
Reproduziere den Bericht anhand des Beispiels in invoke/terminals.py um Zeile 33 und vergleiche die Prüfung der zugewiesenen Variable mit der direkten sys.platform-Prüfung. Verfolge, wie mypy Bedingungen mit sys.platform verarbeitet, und füge Abdeckung für die zugewiesene Form hinzu; erledigt ist die Aufgabe, wenn der ctypes.windll-Fehler für diesen Fall nicht mehr gemeldet wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- devtools
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100