Type inference into function
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
I tried to search using some keywords and couldn't find anything obvious. But I was trying to do type validation of a class that I don't control (external sdk) and it has a class with optional fields. I'd like to write a function to validate that the instance I am passed as the correct field types, instead of doing it all in one.
Pitch
Ability to do type validation of objects you don't have control of in a subfunction, instead of in a main function.
import typing as t
class Test:
opt: t.Optional[str]
def validate_test(t: Test) -> None:
assert (t.opt)
def check_test_not_working() -> None:
t = Test()
validate_test(t)
# Expect str, get Union[str, None]
reveal_type(t.opt)
def check_test_working() -> None:
t = Test()
assert (t.opt)
# Expect str, get str
reveal_type(t.opt)
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 riproducendo il problema con gli esempi mostrati di Test, validate_test e reveal_type, quindi esamina come mypy propaga il narrowing attraverso le chiamate di funzione. Il lavoro è completato quando un approccio supportato consente all’asserzione della funzione helper di restringere t.opt nel chiamante, preservando il comportamento esistente di Optional.
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
- 25/100