python / python/mypy

Support return/raise statements within a version/platform check.

Aperta
#10,957 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

feature
Lingua principale
Python
Stelle
20.6k
Fork
3.3k
Metriche di merge delle PR
Metriche PR in attesa

Descrizione

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)

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia eseguendo mypy sulle due funzioni di esempio nell’issue e confronta le diagnosi per i rami di controllo della versione. Non sono indicati né un file sorgente né un test; il lavoro è completato quando un return o raise dopo un controllo di versione/piattaforma supportata interrompe il controllo del resto del corpo della funzione senza richiedere un ramo else.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python
Ambito
compilers, devtools
Tipo di issue
Funzionalità
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.