Literal typeguard
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 20.6k
- Fork
- 3.3k
- Metriche di merge delle PR
- Metriche PR in attesa
Descrizione
Feature
Infer str is an instance of Literal based on code path:
from typing import Literal
def f(x: Literal["a", "b"]):
...
def g(x: str):
if x == "a":
...
elif x == "b":
...
else:
raise ValueError()
f(x) # ERROR: "f" has incompatible type "str"; expected "Union[Literal['a'], Literal['b']]"
Mypy reports error for the above code, but x is actually an instance of Literal["a", "b"], because all values other than "a" or "b" raises ValueError.
Pyright, one of type checkers, can infer this code has no problem.
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia con il riproduttore Python nell'issue e confronta il risultato di mypy con il comportamento di Pyright indicato. Non vengono nominati file sorgente o test, quindi individuare l'implementazione rilevante del restringimento dei tipi e le convenzioni esistenti per i test fa parte del lavoro. Il lavoro è completato quando la chiamata a f(x) viene accettata dopo i controlli esaustivi, mentre gli altri percorsi continuano a essere gestiti correttamente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- devtools
- Tipo di issue
- Funzionalità
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100