sys.version_info reachability-check fails when patchlevel is specified in the version-condition
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- Ø Merge
- 1 T. 18 Std.
- Gemergte PRs (30 T.)
- 54
Beschreibung
Bug Report
Apparent regression: mypy reachability check involving sys.version_info seems to fail when patchlevel is specified in the version condition.
To Reproduce
Run mypy CLI over the following code:
import sys
if sys.version_info < (3, 8, 0):
import importlib_metadata as metadata
else:
from importlib import metadata
my_metadata = metadata.metadata("mypy") # just using mypy as an example here; could be any package's name
e.g.
mypy test.py
(tested under python 3.7)
Expected Behavior
Code should pass, with output like:
Success: no issues found in 1 source file
Actual Behavior
mypy reports issues, which appear to stem from a failure to flag some of the code as unreachable:
test.py:7: error: Module "importlib" has no attribute "metadata"
test.py:7: error: Name "metadata" already defined (by an import)
Found 2 errors in 1 file (checked 1 source file)
Your Environment
- Mypy version used: 0.930
- Python version used: 3.7.6
- Operating system and version: MacOS Catalina 10.15.7
NOTES:
- The example works fine under mypy 0.910; fails under 0.920 and 0.930.
- The example works fine if the condition is changed to omit the python patchlevel, i.e. replace
if sys.version_info < (3, 8, 0):
with
if sys.version_info < (3, 8):
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
Führen Sie das bereitgestellte Beispiel test.py über die mypy CLI aus und vergleichen Sie die Versionsbedingung mit drei Komponenten mit der Form mit zwei Komponenten sowie dem berichteten Verhalten in mypy 0.910, 0.920 und 0.930. Verfolgen Sie die Prüfung der Erreichbarkeit der Versionsbedingung und verifizieren Sie, dass der nicht erreichbare Import-Zweig keine Fehler mehr erzeugt, während die erwartete erfolgreiche Ausgabe erhalten bleibt.
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
- 40/100