Support return/raise statements within a version/platform check.
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Feature
If a function returns early due to a version check, do not check the remaining code in that function.
Pitch
When writing code for multiple versions of Python, but certain functions/features require specific versions, it can be useful to raise exceptions or return early. Currently, this will only work properly with using an if/else statement. This needlessly indents code and conflicts with PyLint R1705
Example code:
#!/usr/bin/env python3
import sys
# test.py:9: error: Variable annotation syntax is only supported in Python 3.6 and greater
def f() -> None:
if sys.version_info <= (3,6):
raise RuntimeError('python 3.6 or greater required')
x: int = 0
print(x)
# No mypy error
def g() -> None:
if sys.version_info <= (3,6):
raise RuntimeError('python 3.6 or greater required')
else:
x: int = 0
print(x)
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
Beginne damit, mypy für die beiden Beispielfunktionen im Issue auszuführen und die Diagnosen für die Versionsprüfungszweige zu vergleichen. Es ist keine Quelldatei und kein Test genannt; als erledigt gilt die Aufgabe, wenn ein return oder raise nach einer Prüfung auf unterstützte Version/Plattform die Prüfung des verbleibenden Funktionskörpers beendet, ohne dass ein else-Zweig erforderlich ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- compilers, devtools
- Issue-Typ
- Feature
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100