Move error messages for keyword arguments with ParamSpec
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
At the moment, you need --extra-checks to catch this pedantic thing:
from typing import Concatenate, ParamSpec
from collections.abc import Callable
P = ParamSpec("P")
def f(a: Callable[P, None]) -> Callable[Concatenate[int, P], None]:
def inner(x: int, *args: P.args, **kwargs: P.kwargs) -> None: # proposal: warn here
a(*args, **kwargs)
return inner # warns on this
Instead, @dhruvmanila came up with a different rule: warn on the definition of functions that have a keyword argument + ParamSpec *args/**kwargs. I think this is better, because we're trying to move away from flags which modify behavior strangely AFAIK. Then, regardless of error, we would treat x as positional-only.
Pitch
We would remove any custom subtyping (iirc, that's how --extra-checks works now), instead just replacing functions with a better version if it has *args: P.args, **kwargs: P.kwargs. Then we would have a disabled-by-default error code for this new check.
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
La issue non indica file né test. Inizia tracciando la gestione attuale di --extra-checks e il controllo di ParamSpec per gli argomenti con nome, quindi confronta l’avviso proposto al momento della definizione con il comportamento esistente. Il lavoro è completato quando viene rimosso il comportamento personalizzato di subtyping, viene aggiunto il controllo degli errori disabilitato per impostazione predefinita e l’argomento denominato viene trattato come positional-only.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- compilers
- 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