Document how to declare dependant types in method signatures
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
I have several TypedDict:
TerminateHandlerContextType = TypedDict( "TerminateHandlerContextType",{...},)
CrashHandlerContextType = TypedDict( "CrashHandlerContextType", {... },)
QuitHandlerContextType = TypedDict("QuitHandlerContextType", {...})
And then related Callable:
TerminateHandlerType = Callable[[TerminateHandlerContextType], None]
QuitHandlerType = Callable[[QuitHandlerContextType], None]
CrashHandlerType = Callable[[CrashHandlerContextType], None]
If I then declare a method that depends of both:
def _call_handler(
self,
handler: Union[
TerminateHandlerType, QuitHandlerType, CrashHandlerType
],
context: Union[
TerminateHandlerContextType, QuitHandlerContextType, CrashHandlerContextType,
],
):
...
return handler(context) # <---- MYPY COMPLAINS HERE
Then mypy complains, because, while I always ensure logically that the proper handler is called with the proper context, it can't see that.
I couldn't find in the documentation a way to tell it that the context type depends on the handler type. I assume it's either a Generic, or a TypeVar, but didn't find the solution.
mypy 0.770
python 3.6
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
Nell’issue non sono indicati alcun file di documentazione, test o punto di ingresso. Determina innanzitutto quale sezione della documentazione di mypy tratta le relazioni dipendenti tra i tipi del handler e del contesto, quindi verifica l’approccio documentato con l’esempio di TypedDict e Callable. Il lavoro è completato quando la documentazione spiega come esprimere o gestire questa relazione e affronta il problema di controllo dei tipi segnalato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- devtools
- Tipo di issue
- Documentazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 35/100