TypeVarTuple with Callable and default arguments
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 1.8k
- Fork
- 302
- Merge medio
- 23h
- PR unite (30g)
- 8
Descrizione
Previous discussion: https://github.com/microsoft/pyright/issues/3775
I've been playing around with TypeVarTuples recently, in particular together with Callable and args.
https://peps.python.org/pep-0646/#type-variable-tuples-with-callable
One issue became obvious early on which isn't defined in the PEP itself.
How should default arguments be handled?
A common pattern, especially in async code, is to pass a callable and it's args to a function
from typing import Callable
from typing_extensions import TypeVarTuple
Ts = TypeVarTuple("Ts")
def call_later(cb: Callable[[*Ts], None], *args: *Ts) -> None: ...
That works well if all arguments are required
def func1(x: int, y: int, z: int) -> None: ...
call_later(func1, 0, 0, 0) # ok
However, what should happen if y and z have default arguments?
def func2(x: int, y: int = 0, z: int = 0) -> None: ...
call_later(func2, 0)
Instinctively, I would think that it should work, too. As @erictraut did point out though, there are at least a few cases where the behavior would need to be further specified / or explicitly forbidden.
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
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 leggendo la discussione precedente in issue 3775 e la sezione del PEP 646 su TypeVarTuples con Callable. Confronta gli esempi di argomenti obbligatori e argomenti predefiniti, insieme ai casi limite sollevati nella discussione, e stabilisci un comportamento specificato o esplicitamente vietato per gli argomenti predefiniti.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- tooling
- Tipo di issue
- Funzionalità
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 25/100